#include "commonmacro/common.h" #include "common/Name.cc" #include "commonmacro/histutil.h" void fitPts(const char* inName= "links/P01hi.minbias.2000.hist/hianalysis_1000.hist.root", const char* psDir="ps", int cut = 1, const char* outDir="./", const char* more = "west", float extraValue = 0) { cout << "--------------------------" << endl; cout << "in name=" << inName << endl << "ps dir=" << psDir << endl << "cut=" << cut << endl; cout << "--------------------------" << endl; inRoot = new TFile(inName); gSystem->Load("StHiMicroEvent"); gSystem->Load("StHiMicroAnalysis"); Cut::SetCut(cut); Cut::ShowCuts(); if(!inRoot){ cout << "cannot find the infile" << endl; return; } TText* t = new TText; float ptAry[] = {2,3,4,5,6}; char* ptType[] = { "PtPr","PtGl"}; char* chargeType[]= { "Pos","Neg","PosPlusNeg"}; TH1 *ha, *hb; TCanvas c1("c1","c1",400,500); TH3* h3[2][3]; // ptType; plus,minus,plus+minus TH2* h2a, *h2b; TH1* h1a, *h1b; float ptmin=1.5,ptmax=4.0; char cname[100],ctitle[100]; int nc=2; int nptType=1; int fitPtsCut=Cut::mFitPts[0]; float fitptsary[] = { 3,fitPtsCut}; char* fitptstitle[] = { "Wide","Cut"}; gStyle->SetOptStat(0); //------------------------------------------------------------------- // // plus,minus,plus+minus for(int iptType=0;iptTypeClone(); sprintf(name,"PlusPlusMinus.h3PhiPrFitPts"); h3[iptType][2]->SetName(name); h3[iptType][2]->SetTitle(name); h3[iptType][2]->Add(h3[iptType][1]); } //--------------------------------------------------------------- for(int if=0;if<2; if++){ for(int iptType=0;iptTypeGetTitle(),0,0,0,"x"); SetRange(h1a->GetXaxis(),fitptsary[if],46); h1a->SetMarkerSize(0.6); if(ic<1){ SetMinMax(h1a,0,h1a->GetMaximum()*2.5); h1a->SetMarkerStyle(4); h1a->Draw("p"); PrintMeanRms(h1a,0.1,.8); } else if (ic==1){ h1a->SetMarkerStyle(8); h1a->Draw("psame"); PrintMeanRms(h1a,0.1,.7); } else if (ic==2){ h1a->SetMarkerStyle(12); h1a->Draw("psame"); PrintMeanRms(h1a,0.1,.6); } if(j==0) l.AddEntry(h1a,chargeType[ic],"p"); } if(j==0) l.Draw(); } // pt loop Print(&c1,psDir,cname); //*** fit pts distribution, phi slices // combine pt 1.5-4 // one plot for each charge type for(int ic=0;icGetNbinsY(); iPhi++){ c1.cd(iPhi); TAxis *axis = h2a->GetYaxis(); sprintf(title,"%dGetBinLowEdge(iPhi),axis->GetBinUpEdge(iPhi)); sprintf(name,"%s%s%s%s", chargeType[ic],ptType[iptType],fitptstitle[if],title); h1a = h2a->ProjectionX(name,iPhi,iPhi); h1a->SetMarkerStyle(8); h1a->SetMarkerSize(0.6); h1a->SetTitle(title); SetRange(h1a->GetXaxis(),fitptsary[if],45.5); h1a->Draw("p"); PrintMeanRms(h1a,0.1,0.6,0.08); } Print(&c1,psDir,cname); } // ic //** mean fit, profile vs phi for(int ic=0;icSetGridx(); gPad->SetGridy(); h2a=(TH2*)HistSlice(h3[iptType][ic],"","",0, ptmin,ptmax,"xy"); int low=h2a->GetXaxis()->FindBin(fitptsary[if]); sprintf(name,"meanVphi%s%s%s", chargeType[ic],ptType[iptType],fitptstitle[if]); TProfile *p=h2a->ProfileY(name,low,9999); p->SetTitle(""); SetMinMax(p,30,40); p->SetMarkerStyle(8); p->Draw(); Print(&c1,psDir,cname); } // ic } } }