1 #if !defined(__CINT__) || defined(__MAKECINT__)
6 #include <TPaveStats.h>
8 #include <TGraphErrors.h>
13 #include <TLegendEntry.h>
21 //-------------------------------------------------------
23 // Macro do plot the output histograms of the QA task for ITS standalone tracks
24 // dE/dx for ITS pure standalone tracks with parameterization
25 // dE/dx resolution for ITS pure standalone tracks with parameterization
26 // d0 resolution and bias with gaussian fit
27 // d0 resolution and bias with gaussian+tail fit
28 // Comparison of the two methods for d0 resolution
29 // Pt resolution (matching ITSèureSA with TPC+ITS tracks)
30 // General Plots: ratios between ITSsa, ITSpureSA and TPC+ITS tracks
31 // eta phi distributions of tracks
32 // number of clusters per track
34 // Authors: Leonardo Milano, Francesco Prino
36 //-------------------------------------------------------
38 Int_t color[3]={1,2,4};
39 TString particle[3]={"Pion","Kaon","Proton"};
43 void PlotOutputQATaskITSsa(TString filename="LHC11b7Highpt_010Cent_6cls_chi2cut.root",TString foutName="OutputQA_LHC11b7Highpt_010Cent_6cls_chi2cut.root",Bool_t fMC=1){
45 gROOT->SetStyle("Plain");
46 gStyle->SetPalette(1);
48 if(filename.Contains("alien")) TGrid::Connect("alien:");
49 TFile* f=TFile::Open(filename.Data());
50 TDirectory *dirFile=(TDirectory*)f->Get("ITSsaTracks");
51 TString lname="clistITSsaTracks";
52 TList *li = (TList*)dirFile->Get(lname.Data());
54 TFile *fout=new TFile(foutName.Data(),"recreate");
58 Bool_t useHybridITSsaParameterization=1; //BetheITSsaHybrid committed in Rev. 59830
59 Bool_t PlotPIDBands=0; //Bands used for PID in the spectra analysis
60 dedxPlot(li,fMC,foutName,useHybridITSsaParameterization,PlotPIDBands);
62 ImpParRes(li,foutName);
63 ImpParResGausTail(li,foutName);
64 CompareImpParRes(foutName);
66 PlotPtResol(li,foutName,optFromMC);
67 PlotITSsa(li,foutName);
72 //----------------------------------------------------------------------------
74 void dedxPlot(TList *li,Bool_t fMC,TString foutName,Bool_t useHybridITSsaParameterization,Bool_t PlotPIDBands)
76 // Plot the dedx vs momentum from the ITSsaTracks QA output
77 // Bethe Bloch parameterization is taken from AliITSPIDResponse
78 // If useHybridITSsaParameterization the Hybrid ITS parameterization (Phobos + polinomial at low beta*gamma) is used. This requires AliRoot > Rev. 59830
80 TH2F *fHistDEDX=(TH2F*)li->FindObject("hdedxvsP2clsITSpureSA");
81 fHistDEDX->Add((TH2F*)li->FindObject("hdedxvsP3clsITSpureSA"));
82 fHistDEDX->Add((TH2F*)li->FindObject("hdedxvsP4clsITSpureSA"));
84 TCanvas *c=new TCanvas("dEdx_vs_p","dEdx_vs_p",1);
87 fHistDEDX->SetXTitle("#it{p} (GeV/#it{c})");
88 fHistDEDX->SetYTitle("d#it{E}/dx (KeV/300#mum)");
89 fHistDEDX->GetXaxis()->SetRangeUser(0.08,3);
90 fHistDEDX->GetYaxis()->SetRangeUser(0.,700);
91 fHistDEDX->GetYaxis()->SetTitleSize(0.05);
92 fHistDEDX->GetXaxis()->SetTitleSize(0.05);
93 //fHistDEDX->SetMinimum(2000);
94 //fHistDEDX->SetMaximum(18000);
95 fHistDEDX->DrawClone("col");
97 Float_t pdgmass[5]={0.13957,0.493677,0.938272,1.875612762,0.00996}; //mass for pi, K, P, d (Gev/c^2)
98 Double_t dedxvalue[5];
99 Double_t funcvalue[7];
101 AliITSPIDResponse *pidresp=new AliITSPIDResponse(fMC);
103 for(Int_t i7=0;i7<7;i7++){
104 fdedx[i7]=new TGraph();
105 fdedx[i7]->SetName(Form("%d",i7));
106 fdedx[i7]->SetTitle(Form("%d",i7));
107 fdedx[i7]->SetLineWidth(2);
108 fdedx[i7]->SetLineColor(1);
111 Float_t mom=0.07.;//low pt range
112 Float_t step=(3-mom)/100;
113 Double_t lr[7]={0.09,0.09,0.09,0.1,0.2,.25,.3};
115 for(Int_t i=0;i<100;i++){
116 if(useHybridITSsaParameterization)for(Int_t i2=0;i2<5;i2++)dedxvalue[i2]=pidresp->BetheITSsaHybrid(mom,pdgmass[i2]);
117 else for(Int_t i2=0;i2<5;i2++)dedxvalue[i2]=pidresp->Bethe(mom,pdgmass[i2],1);
118 funcvalue[0]=dedxvalue[0]-0.2*dedxvalue[0];
119 funcvalue[1]=dedxvalue[0];
120 funcvalue[2]=0.5*(dedxvalue[0]+dedxvalue[1]);
121 funcvalue[3]=dedxvalue[1];
122 funcvalue[4]=0.5*(dedxvalue[2]+dedxvalue[1]);
123 funcvalue[5]=dedxvalue[2];
124 funcvalue[6]=0.5*(dedxvalue[2]+dedxvalue[3]);
126 for(Int_t i2=0;i2<7;i2++){
127 fdedx[i2]->SetPoint(i,mom,funcvalue[i2]);
131 fdedx[0]->SetLineStyle(2);
132 fdedx[2]->SetLineStyle(2);
133 fdedx[4]->SetLineStyle(2);
134 fdedx[6]->SetLineStyle(2);
135 for(Int_t i2=0;i2<7;i2++){
136 fdedx[i2]->RemovePoint(0);
137 fdedx[i2]->GetXaxis()->SetRangeUser(lr[i2],3);
138 if(!PlotPIDBands)if(i2==0 || i2==2 || i2==4 || i2==6)continue;
139 fdedx[i2]->DrawClone("Lsame");
141 TLatex *tex=new TLatex(0.55,630,"ITS standalone tracking");
142 tex->SetTextSize(0.04);
145 TLatex *pi=new TLatex(0.1223724,176.0205,"#pi");
146 TLatex *k=new TLatex(0.263512,291.1394,"K");
147 TLatex *p=new TLatex(0.517675,296.7096,"p");
148 TLatex *e=new TLatex(0.09856606,101.7502,"e");
155 Float_t mom=0.09.;//low pt range
156 Float_t step=(0.16-mom)/10;
157 TGraph* fElectr=new TGraph();
158 fElectr->SetName("fElectr");
159 fElectr->SetTitle("fElectr");
160 AliITSPIDResponse *pidresp=new AliITSPIDResponse(0);
161 for(Int_t i=0;i<10;i++){
162 if(useHybridITSsaParameterization)fElectr->SetPoint(i,mom,pidresp->BetheITSsaHybrid(mom,0.00051));
163 else fElectr->SetPoint(i,mom,pidresp->Bethe(mom,0.00051,1));
166 fElectr->SetLineWidth(2);
167 fElectr->SetLineColor(1);
168 fElectr->DrawClone("Lsame");
170 TFile *fout=new TFile(foutName.Data(),"update");
176 //----------------------------------------------------------------------------
178 void dedxRes(TList *li,TString foutName)
180 // plot the dedx resolution as a function of momuntum from the ITSsaTracks QA
181 // Resolution is calculated from Gaussian fit to the pion peak for tracks with 2, 3 and 4 clusters in the ITS
183 TCanvas *cdedxRes=new TCanvas("dedxRes_vs_p","dedxRes_vs_p",1000,800);
184 cdedxRes->SetGridx();
187 for(Int_t ncls=2;ncls<5;ncls++){
188 TH2F *hdedxvsPITSpureSA=(TH2F*)li->FindObject(Form("hdedxvsP%iclsITSpureSA",ncls));
190 const Int_t nbins = 29;
191 Double_t xbins[nbins+1]={0.06,0.08,0.10,0.12,0.14,0.16,0.18,0.20,0.25,0.30,
192 0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,0.75,0.80,
193 0.85,0.90,0.95,1.00,1.20,1.40,1.60,1.80,1.90,2.00};
194 TH1F *fHistdedxRes = new TH1F(Form("fHistdedxRes%icls",ncls),Form("fHistdedxRes%icls",ncls),nbins,xbins);
195 fHistdedxRes->GetXaxis()->SetTitle("#font[52]{p} (GeV/#font[52]{c})");
196 fHistdedxRes->GetYaxis()->SetTitle("de/dx relative resolution");
197 fHistdedxRes->GetYaxis()->SetTitleOffset(1.5);
198 TH1F *fHistDCA[nbins];
199 TF1 *fPar = new TF1("fPar","gaus",0,1000);
200 for(Int_t m=0;m<nbins;m++){
201 fHistDCA[m]= (TH1F*)hdedxvsPITSpureSA->ProjectionY(Form("%i",m),hdedxvsPITSpureSA->GetXaxis()->FindBin(xbins[m]+0.0000001),hdedxvsPITSpureSA->GetXaxis()->FindBin(xbins[m+1]-0.0000001));
203 TCanvas *cgaus=new TCanvas(Form("cgausFitdEdxRes_%icls",ncls),Form("cgausFitdEdxRes_%icls",ncls),1000,800);
204 cgaus->Divide(8,4,0.001,0.001);
205 for(Int_t i=0; i<nbins; i++){
207 fHistDCA[i]->SetFillColor(16);
208 Float_t MaxPosition=fHistDCA[i]->GetBinCenter(fHistDCA[i]->GetMaximumBin());
209 Float_t minFit=MaxPosition-0.1*MaxPosition;
210 Float_t maxFit=MaxPosition+0.1*MaxPosition;
211 fPar->SetParameter(1,MaxPosition);
212 fHistDCA[i]->Fit(fPar,"NM","",minFit,maxFit);
213 fHistDCA[i]->GetXaxis()->SetRangeUser(minFit-50,maxFit+50);
214 fPar->SetLineColor(1);
215 fHistDCA[i]->DrawClone();
216 fPar->DrawClone("same");
217 fHistdedxRes->Fill((xbins[i]+xbins[i+1])/2,fPar->GetParameter(2)/fPar->GetParameter(1));
218 fHistdedxRes->SetBinError(fHistdedxRes->FindBin((xbins[i]+xbins[i+1])/2),fPar->GetParError(2)/fPar->GetParameter(1));
221 setDrawAtt(20,ncls,1,ncls,1,fHistdedxRes);
222 fHistdedxRes->SetMinimum(0.0);
223 fHistdedxRes->SetMaximum(0.2);
224 fHistdedxRes->GetXaxis()->SetRangeUser(0.2,2);
225 if(ncls==2)fHistdedxRes->DrawCopy("p");
226 else fHistdedxRes->DrawCopy("psame");
228 TF1 *fFit = new TF1(Form("fFitdEdxRes_%d",ncls),"pol0",0.6,2);
229 fFit->SetLineColor(ncls);
230 fHistdedxRes->Fit(fFit,"NM","",0.6,2);
231 fFit->DrawCopy("same");
232 TPaveText *tpave1=new TPaveText(0.3,0.2-0.15*ncls,0.7,0.89,"brNDC");
233 tpave1->SetBorderSize(0);
234 tpave1->SetFillStyle(0);
235 tpave1->SetFillColor(0);
236 tpave1->SetTextColor(ncls);
237 TText *txt2=tpave1->AddText(Form("pol 0: %.3f",fFit->GetParameter(0)));
238 txt2->SetTextFont(62);
241 TFile *fout=new TFile(foutName.Data(),"update");
242 fHistdedxRes->Write();
248 cdedxRes->BuildLegend()->SetFillColor(0);
249 TPaveText *tpave=new TPaveText(0.5,0.9,0.8,0.99,"brNDC");
250 tpave->SetBorderSize(0);
251 tpave->SetFillStyle(0);
252 tpave->SetFillColor(0);
253 tpave->SetTextColor(2);
254 TText *txt1=tpave->AddText("ITS standalone");
255 txt1->SetTextFont(62);
258 TFile *fout=new TFile(foutName.Data(),"update");
264 //----------------------------------------------------------------------------
266 void ImpParRes(TList *li,TString foutName)
268 //Plot the resolution on the tranverse component of impact parmeter from the ITSsaTracks QA output as a function of pt
269 // Gaussian fit is used
271 TH2F *hd0rphiITSpureSA[3];
273 const Int_t nbins = 35;
274 Double_t xbins[nbins+1]={0.06,0.08,0.10,0.12,0.14,0.16,0.18,0.20,0.25,0.30,
275 0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,0.75,0.80,
276 0.85,0.90,0.95,1.00,1.20,1.40,1.60,1.80,1.90,2.00,
280 Int_t MinBin[3]={2,7,9};
282 TH1F *fHistDCA[nbins];
283 TString particle[3]={"Pion","Kaon","Proton"};
285 TCanvas *cImpPar=new TCanvas("ImpParRes_vs_pt_Gaus","ImpParRes_vs_pt_Gaus",1000,800);
288 TCanvas *cImpParMean=new TCanvas("ImpParMean_vs_pt_Gaus","ImpParMean_vs_pt_Gaus",1000,800);
289 cImpParMean->SetGridx();
290 cImpParMean->SetLogx();
291 for(Int_t iparticle=0;iparticle<3;iparticle++)hd0rphiITSpureSA[iparticle]=(TH2F*)li->FindObject(Form("hd0rphiITSpureSA%s",particle[iparticle].Data()));
292 for(Int_t iparticle=0;iparticle<3;iparticle++){
293 TH1F *fHistImpParRes = new TH1F(Form("fHistImpParResGaus%s",particle[iparticle].Data()),Form("%s",particle[iparticle].Data()),nbins,xbins);
294 fHistImpParRes->GetXaxis()->SetTitle("#font[52]{p}_{T} (GeV/#font[52]{c})");
295 fHistImpParRes->GetYaxis()->SetTitle("d0 r#phi resolution [#mum]");
296 fHistImpParRes->GetYaxis()->SetTitleOffset(1.5);
297 TH1F *fHistImpParMean = new TH1F(Form("fHistImpParMeanGaus%s",particle[iparticle].Data()),Form("%s",particle[iparticle].Data()),nbins,xbins);
298 fHistImpParMean->GetXaxis()->SetTitle("#font[52]{p}_{T} (GeV/#font[52]{c})");
299 fHistImpParMean->GetYaxis()->SetTitle("d0 r#phi mean [#mum]");
300 fHistImpParMean->GetYaxis()->SetTitleOffset(1.5);
302 TF1 *fPar = new TF1("fPar","gaus",-1,1);
304 for(Int_t m=0;m<nbins;m++){
305 fHistDCA[m]= (TH1F*)hd0rphiITSpureSA[iparticle]->ProjectionY(Form("%s%i",particle[iparticle].Data(),m),hd0rphiITSpureSA[iparticle]->GetXaxis()->FindBin(xbins[m]+0.000001),hd0rphiITSpureSA[iparticle]->GetXaxis()->FindBin(xbins[m+1]-0.000001));
306 //for pt>2 sum kaons and prtons to pions
307 if(iparticle==0 && m>maxbin){
308 fHistDCA[m]->Add((TH1F*)hd0rphiITSpureSA[iparticle+1]->ProjectionY(Form("%s%i",particle[iparticle+1].Data(),m),hd0rphiITSpureSA[iparticle+1]->GetXaxis()->FindBin(xbins[m]+0.000001),hd0rphiITSpureSA[iparticle+1]->GetXaxis()->FindBin(xbins[m+1]-0.000001)));
309 fHistDCA[m]->Add((TH1F*)hd0rphiITSpureSA[iparticle+2]->ProjectionY(Form("%s%i",particle[iparticle+2].Data(),m),hd0rphiITSpureSA[iparticle+2]->GetXaxis()->FindBin(xbins[m]+0.000001),hd0rphiITSpureSA[iparticle+2]->GetXaxis()->FindBin(xbins[m+1]-0.000001)));
313 TCanvas *cgaus=new TCanvas(Form("cgausFit_ImpParRes_vs_pt_%s",particle[iparticle].Data()),Form("cgausFit_ImpParRes_vs_pt_%s",particle[iparticle].Data()),1000,800);
314 if(iparticle==0)cgaus->Divide(8,5,0.001,0.001);
315 else cgaus->Divide(8,4,0.001,0.001);
318 for(Int_t i=0; i<nbins; i++){
319 if(i<MinBin[iparticle])continue;
320 if(iparticle!=0 && i>maxbin)continue; //skip kaons and protons for pt aove 2 GeV (added to pions spectrum)
324 fHistDCA[i]->SetLineColor(color[iparticle]);
325 fHistDCA[i]->SetMarkerColor(color[iparticle]);
326 fPar->SetLineColor(color[iparticle]);
327 fHistDCA[i]->SetFillColor(16);
328 Printf("first fit step [-1,1]");
329 fHistDCA[i]->Fit(fPar,"NM","",-1,1);
330 Printf("second fit step [-2sigma,2sigma]");
332 sigma=fPar->GetParameter(2);
333 fHistDCA[i]->Fit(fPar,"NM","",fPar->GetParameter(1)-nsigmas*sigma,fPar->GetParameter(1)+nsigmas*sigma);
334 Printf("Third fit step [-1 sigma,1 sigma]");
335 nsigmas=1.; // narrow range, just want to fit the primaries
336 fHistDCA[i]->Fit(fPar,"NM","",fPar->GetParameter(1)-nsigmas*sigma,fPar->GetParameter(1)+nsigmas*sigma);
337 //set range to 3 sigmas (for the plot)
338 sigma=fPar->GetParameter(2);
339 fHistDCA[i]->GetXaxis()->SetRangeUser(fPar->GetParameter(1)-3*sigma,fPar->GetParameter(1)+3*sigma);
340 fHistDCA[i]->DrawClone();
341 fPar->DrawClone("same");
342 fHistImpParRes->Fill((xbins[i]+xbins[i+1])/2,10000*fPar->GetParameter(2));
343 fHistImpParRes->SetBinError(fHistImpParRes->FindBin((xbins[i]+xbins[i+1])/2),10000*fPar->GetParError(2));
344 fHistImpParMean->Fill((xbins[i]+xbins[i+1])/2,10000*fPar->GetParameter(1));
345 fHistImpParMean->SetBinError(fHistImpParMean->FindBin((xbins[i]+xbins[i+1])/2),10000*fPar->GetParError(1));
348 fHistImpParRes->SetMaximum(1000);
349 fHistImpParRes->SetMinimum(0);
350 fHistImpParMean->SetMaximum(80);
351 fHistImpParMean->SetMinimum(-80);
353 setDrawAtt(iparticle+20,color[iparticle],1,color[iparticle],1,fHistImpParRes);
354 fHistImpParRes->SetTitle(Form("%s - Gaus Fit",particle[iparticle].Data()));
355 setDrawAtt(iparticle+20,color[iparticle],1,color[iparticle],1,fHistImpParMean);
356 fHistImpParMean->SetTitle(Form("%s - Gaus Fit",particle[iparticle].Data()));
359 if(iparticle==0)fHistImpParRes->DrawCopy("p");
360 else fHistImpParRes->DrawCopy("psame");
363 if(iparticle==0)fHistImpParMean->DrawCopy("p");
364 else fHistImpParMean->DrawCopy("psame");
366 TFile *fout=new TFile(foutName.Data(),"update");
368 fHistImpParRes->Write();
369 fHistImpParMean->Write();
374 cImpPar->BuildLegend()->SetFillColor(0);
375 cImpParMean->BuildLegend()->SetFillColor(0);
376 TFile *fout=new TFile(foutName.Data(),"update");
378 cImpParMean->Write();
384 //----------------------------------------------------------------------------
386 void ImpParResGausTail(TList *li,TString foutName)
388 //Plot the resolution on the tranverse component of impact parmeter from the ITSsaTracks QA output as a function of pt
389 // Gaussian + tail fit is used
391 TH2F *hd0rphiITSpureSA[3];
393 const Int_t nbins = 29;
394 const Int_t nbins = 35;
395 Double_t xbins[nbins+1]={0.06,0.08,0.10,0.12,0.14,0.16,0.18,0.20,0.25,0.30,
396 0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,0.75,0.80,
397 0.85,0.90,0.95,1.00,1.20,1.40,1.60,1.80,1.90,2.00,
400 Int_t MinBin[3]={2,7,9};
402 TH1F *d0AllpointrphiSkip1_[nbins];
404 TCanvas *cImpPar=new TCanvas("ImpParResGausTail_vs_pt","ImpParResGausTail_vs_pt",1000,800);
407 TCanvas *cImpParMean=new TCanvas("ImpParMeanGausTail_vs_pt","ImpParMeanGausTail_vs_pt",1000,800);
408 cImpParMean->SetGridx();
409 cImpParMean->SetLogx();
412 //define the histgram
413 TH1F **d0AllpointrphiSkipTail1_=new TH1F*[nbins];
414 TH1F **d0AllpointrphiSkipGaus1_=new TH1F*[nbins];
415 TH1F **d0Pt_=new TH1F*[nbins];
419 for(Int_t iparticle=0;iparticle<3;iparticle++)hd0rphiITSpureSA[iparticle]=(TH2F*)li->FindObject(Form("hd0rphiITSpureSA%s",particle[iparticle].Data()));
420 for(Int_t iparticle=0;iparticle<3;iparticle++){
421 TH1F *fHistImpParRes = new TH1F(Form("fHistImpParResGausTail%s",particle[iparticle].Data()),Form("%s",particle[iparticle].Data()),nbins,xbins);
422 fHistImpParRes->GetXaxis()->SetTitle("#font[52]{p}_{T} (GeV/#font[52]{c})");
423 fHistImpParRes->GetYaxis()->SetTitle("d0 r#phi resolution [#mum]");
424 fHistImpParRes->GetYaxis()->SetTitleOffset(1.5);
425 TH1F *fHistImpParMean = new TH1F(Form("fHistImpParMeanGausTail%s",particle[iparticle].Data()),Form("%s",particle[iparticle].Data()),nbins,xbins);
426 fHistImpParMean->GetXaxis()->SetTitle("#font[52]{p}_{T} (GeV/#font[52]{c})");
427 fHistImpParMean->GetYaxis()->SetTitle("d0 r#phi mean [#mum]");
428 fHistImpParMean->GetYaxis()->SetTitleOffset(1.5);
430 for(Int_t m=0;m<nbins;m++){
431 d0AllpointrphiSkip1_[m]= (TH1F*)hd0rphiITSpureSA[iparticle]->ProjectionY(Form("%s%i",particle[iparticle].Data(),m),hd0rphiITSpureSA[iparticle]->GetXaxis()->FindBin(xbins[m]+0.000001),hd0rphiITSpureSA[iparticle]->GetXaxis()->FindBin(xbins[m+1]-0.000001));
432 //for pt>2 sum kaons and prtons to pions
433 if(iparticle==0 && m>maxbin){
434 d0AllpointrphiSkip1_[m]->Add((TH1F*)hd0rphiITSpureSA[iparticle+1]->ProjectionY(Form("%s%i",particle[iparticle+1].Data(),m),hd0rphiITSpureSA[iparticle+1]->GetXaxis()->FindBin(xbins[m]+0.000001),hd0rphiITSpureSA[iparticle+1]->GetXaxis()->FindBin(xbins[m+1]-0.000001)));
435 d0AllpointrphiSkip1_[m]->Add((TH1F*)hd0rphiITSpureSA[iparticle+2]->ProjectionY(Form("%s%i",particle[iparticle+2].Data(),m),hd0rphiITSpureSA[iparticle+2]->GetXaxis()->FindBin(xbins[m]+0.000001),hd0rphiITSpureSA[iparticle+2]->GetXaxis()->FindBin(xbins[m+1]-0.000001)));
440 TCanvas *cgaus=new TCanvas(Form("cgausTailFit_ImpParRes_vs_pt_%s",particle[iparticle].Data()),Form("cgausTailFit_ImpParRes_vs_pt_%s",particle[iparticle].Data()),1000,800);
441 if(iparticle==0)cgaus->Divide(8,5,0.001,0.001);
442 else cgaus->Divide(8,4,0.001,0.001);
444 for(Int_t i=0; i<nbins; i++){
445 if(i<MinBin[iparticle])continue;
446 if(iparticle!=0 && i>maxbin)continue; //skip kaons and protons for pt aove 2 GeV (added to pions spectrum)
450 d0AllpointrphiSkip1_[i]->SetLineColor(1);
451 d0AllpointrphiSkip1_[i]->SetMarkerColor(1);
452 TF1 *h = new TF1("h","gaus",-1,1);
453 d0AllpointrphiSkip1_[i]->Fit(h,"NM","",-1,1);
454 Double_t d0rphirange_allpointSkip1 = h->GetParameter(2);
455 Double_t d0rphiMean_allpointSkip1 = h->GetParameter(1);
456 Double_t cutleft1= -j*(d0rphirange_allpointSkip1);
457 Double_t cutright1 =j*d0rphirange_allpointSkip1;
460 d0AllpointrphiSkipTail1_[i] = new TH1F(*d0AllpointrphiSkip1_[i]);
461 d0AllpointrphiSkipGaus1_[i] = new TH1F(*d0AllpointrphiSkip1_[i]);
462 d0AllpointrphiSkipTail1_[i]->Reset(0);
463 d0AllpointrphiSkipGaus1_[i]->Reset(0);
465 //Filling only with tail and Gaus
466 for (Int_t bin=1;bin<d0AllpointrphiSkip1_[i]->GetNbinsX();bin++){
467 Float_t bincenter = d0AllpointrphiSkip1_[i]->GetBinCenter(bin);
468 if(bincenter<cutleft1 || bincenter>cutright1) {
469 d0AllpointrphiSkipTail1_[i]->SetBinContent(bin,d0AllpointrphiSkip1_[i]->GetBinContent(bin));
470 d0AllpointrphiSkipTail1_[i]->SetBinError(bin,d0AllpointrphiSkip1_[i]->GetBinError(bin));
471 d0AllpointrphiSkipGaus1_[i]->SetBinContent(bin,0.);
472 //This sentence is very important,otherwise we will get the information the data is empty when we fit it .
474 else if(bincenter>=cutleft1 && bincenter<=cutright1){
475 d0AllpointrphiSkipTail1_[i]->SetBinContent(bin,0);
476 d0AllpointrphiSkipGaus1_[i]->SetBinContent(bin,d0AllpointrphiSkip1_[i]->GetBinContent(bin));
477 d0AllpointrphiSkipGaus1_[i]->SetBinError(bin,d0AllpointrphiSkip1_[i]->GetBinError(bin));
480 d0AllpointrphiSkipGaus1_[i]->SetLineColor(2);
481 d0AllpointrphiSkipGaus1_[i]->SetMarkerColor(2);
482 d0AllpointrphiSkipTail1_[i]->SetLineColor(4);
483 d0AllpointrphiSkipTail1_[i]->SetMarkerColor(4);
486 hh =CreateFuncTail(d0AllpointrphiSkipTail1_[i],"hh");
487 hh->SetLineColor(d0AllpointrphiSkipTail1_[i]->GetLineColor());
488 d0AllpointrphiSkipTail1_[i]->Fit(hh,"NM","",-1,1);
489 Double_t Sigmatail_allpointSkip1 = hh->GetParameter(2);
490 d0AllpointrphiSkipGaus1_[i]->Fit(h,"NM","",d0rphiMean_allpointSkip1-d0rphirange_allpointSkip1,d0rphiMean_allpointSkip1+d0rphirange_allpointSkip1);//narrow around the peak (1 sigma)
491 //d0AllpointrphiSkipGaus1_[i]->Fit(h,"NM","",-1,1);
492 h->SetLineColor(d0AllpointrphiSkipGaus1_[i]->GetLineColor());
493 Double_t Sigmagaus_allpointSkip1 = h->GetParameter(2);
494 Double_t Meangaus_allpointSkip1 = h->GetParameter(1);
495 Double_t Constgaus_allpointSkip1 = h->GetParameter(0);
496 d0AllpointrphiSkipGaus1_[i]->DrawClone("");
497 d0AllpointrphiSkipTail1_[i]->DrawClone("same");
498 hh->DrawClone("same");
499 h->DrawClone("same");
501 TF1 * fPar=CreateFuncGaussTail(d0AllpointrphiSkip1_[i],"allpointSkip1",Constgaus_allpointSkip1,Meangaus_allpointSkip1,Sigmagaus_allpointSkip1,Sigmatail_allpointSkip1);
502 d0AllpointrphiSkip1_[i]->Fit(fPar,"NM","",-1,1);
503 fPar->SetLineColor(d0AllpointrphiSkip1_[i]->GetLineColor());
504 fPar->DrawClone("same");
506 sigma=fPar->GetParameter(2);
507 fHistImpParRes->Fill((xbins[i]+xbins[i+1])/2,10000*fPar->GetParameter(2));
508 fHistImpParRes->SetBinError(fHistImpParRes->FindBin((xbins[i]+xbins[i+1])/2),10000*fPar->GetParError(2));
509 fHistImpParMean->Fill((xbins[i]+xbins[i+1])/2,10000*fPar->GetParameter(1));
510 fHistImpParMean->SetBinError(fHistImpParMean->FindBin((xbins[i]+xbins[i+1])/2),10000*fPar->GetParError(1));
513 fHistImpParRes->SetMaximum(1000);
514 fHistImpParRes->SetMinimum(0);
515 fHistImpParMean->SetMaximum(80);
516 fHistImpParMean->SetMinimum(-80);
518 setDrawAtt(iparticle+20,color[iparticle],1,color[iparticle],1,fHistImpParRes);
519 fHistImpParRes->SetTitle(Form("%s - GausTail Fit",particle[iparticle].Data()));
520 setDrawAtt(iparticle+20,color[iparticle],1,color[iparticle],1,fHistImpParMean);
521 fHistImpParMean->SetTitle(Form("%s - GausTail Fit",particle[iparticle].Data()));
524 if(iparticle==0)fHistImpParRes->DrawCopy("p");
525 else fHistImpParRes->DrawCopy("psame");
528 if(iparticle==0)fHistImpParMean->DrawCopy("p");
529 else fHistImpParMean->DrawCopy("psame");
532 TFile *fout=new TFile(foutName.Data(),"update");
534 fHistImpParRes->Write();
535 fHistImpParMean->Write();
540 cImpPar->BuildLegend()->SetFillColor(0);
541 cImpParMean->BuildLegend()->SetFillColor(0);
542 TFile *fout=new TFile(foutName.Data(),"update");
544 cImpParMean->Write();
549 //----------------------------------------------------------------------------
551 TF1 *CreateFuncTail(TH1F *hh,TString funcname,Double_t wholeRangeInt=-1.)
553 TF1 *tail=new TF1(funcname.Data(),"[0]*(1./(2.*[2])*TMath::Exp(-TMath::Abs(x-[1])/[2]))",-1,1);
554 Double_t binwidth=hh->GetBinWidth(10);
555 Double_t integral=hh->Integral();
556 if(wholeRangeInt!=-1.)tail->SetParLimits(0,(0.2)*wholeRangeInt*binwidth,(0.5)*wholeRangeInt*binwidth);
557 Double_t RMS1=TMath::Abs(hh->GetRMS());
558 Double_t firstvalue1=binwidth*integral;
559 tail->SetParameters(1.,0,100.);//Set the initial value of parameter
563 //----------------------------------------------------------------------------
564 TF1 *CreateFuncGaussTail(TH1F *h,TString funcname,Double_t Norm,Double_t parzero,Double_t parone,Double_t partwo)
566 TF1 *gaustail=new TF1(funcname.Data(),"[0]*([4]/(TMath::Sqrt(2.*TMath::Pi())*[2])*TMath::Exp(-1.*(x-[1])*(x-[1])/(2.*[2]*[2]))+(1.-[4])/(2.*[3])*TMath::Exp(-TMath::Abs(x-[1])/[3]))",-1,1);
567 gaustail->SetParameters(Norm,parzero,parone,partwo,0.82);//Set the initial value of parameter
572 //----------------------------------------------------------------------------
574 void CompareImpParRes(TString foutName){
575 //Copare the resolution obtained from Gaus and GausTail fit!
576 // BE CAREFUL!! look at the fits "by eye", GausTail sometimes fail, especially pions at low pt
578 TFile *fout=new TFile(foutName.Data(),"read");
580 TCanvas *c=new TCanvas("CompareImpParRes","CompareImpParRes",1);
583 for(Int_t iparticle=0;iparticle<3;iparticle++){
584 TH1F *fHistImpParResGaus = (TH1F*)fout->Get(Form("fHistImpParResGaus%s",particle[iparticle].Data()));
585 TH1F *fHistImpParResGausTail = (TH1F*)fout->Get(Form("fHistImpParResGausTail%s",particle[iparticle].Data()));
586 setDrawAtt(iparticle+24,color[iparticle],1,color[iparticle],1,fHistImpParResGaus);
587 if(iparticle==0)fHistImpParResGaus->DrawClone();
588 else fHistImpParResGaus->DrawClone("same");
589 fHistImpParResGausTail->DrawClone("same");
591 gPad->BuildLegend()->SetFillColor(0);
593 TFile *fout=new TFile(foutName.Data(),"update");
601 //-----------------------------------------------------
603 void PlotPtResol(TList* l,TString foutName, Bool_t optFromMC){
604 TString hNameR,hNameA;
605 TString partName[3]={"Pion","Kaon","Proton"};
607 if(optFromMC) prefix="hMC";
617 TH1F* h1ptrelres[3][40];
618 TH1F* hptreco[3][40];
620 TGraphErrors* gbias[3];
621 TGraphErrors* grelresol[3];
623 gStyle->SetPalette(1);
625 for(Int_t iSpec=0; iSpec<3; iSpec++){
626 hNameA=Form("%sPtResid%s",prefix.Data(),partName[iSpec].Data());
627 hNameR=Form("%sInvPtRelResid%s",prefix.Data(),partName[iSpec].Data());
628 printf("%s %s\n",hNameA.Data(),hNameR.Data());
629 h2DA[iSpec]=(TH2F*)l->FindObject(hNameA.Data());
630 h2DR[iSpec]=(TH2F*)l->FindObject(hNameR.Data());
631 c2d[iSpec]=new TCanvas(Form("c2d%s",partName[iSpec].Data()),Form("c2d%s",partName[iSpec].Data()));
632 c2d[iSpec]->Divide(2,1);
634 h2DA[iSpec]->Draw("colz");
636 h2DR[iSpec]->Draw("colz");
638 Int_t nptbins=h2DR[iSpec]->GetNbinsX();
640 Int_t nybinsA=h2DA[iSpec]->GetNbinsY();
641 Float_t minyA=h2DA[iSpec]->GetYaxis()->GetBinLowEdge(1);
642 Float_t maxyA=h2DA[iSpec]->GetYaxis()->GetBinUpEdge(nybinsA);
644 Int_t nybinsR=h2DR[iSpec]->GetNbinsY();
645 Float_t minyR=h2DR[iSpec]->GetYaxis()->GetBinLowEdge(1);
646 Float_t maxyR=h2DR[iSpec]->GetYaxis()->GetBinUpEdge(nybinsR);
647 printf("%d %d %f %f %d %f %f\n",nptbins,nybinsA,minyA,maxyA,nybinsR,minyR,maxyR);
649 c1dA[iSpec]=new TCanvas(Form("c1dA%s",partName[iSpec].Data()),Form("c1dA%s",partName[iSpec].Data()));
650 c1dA[iSpec]->Divide(6,5);
651 c1dR[iSpec]=new TCanvas(Form("c1dR%s",partName[iSpec].Data()),Form("c1dR%s",partName[iSpec].Data()));
652 c1dR[iSpec]->Divide(6,5);
655 gbias[iSpec]=new TGraphErrors(0);
656 grelresol[iSpec]=new TGraphErrors(0);
657 gbias[iSpec]->SetTitle("");
658 grelresol[iSpec]->SetTitle("");
660 for(Int_t iptbin=0; iptbin<nptbins;iptbin++){
661 Float_t avept=h2DA[iSpec]->GetXaxis()->GetBinCenter(iptbin+1);
662 Float_t widpt=0.5*h2DA[iSpec]->GetXaxis()->GetBinWidth(iptbin+1);
663 Int_t minptbinmev=(Int_t)(h2DA[iSpec]->GetXaxis()->GetBinLowEdge(iptbin+1)*1000.+0.5);
665 hptres[iSpec][iptbin]=new TH1F(Form("hptres%s_%d",partName[iSpec].Data(),minptbinmev),
666 Form("hptres%s_%d",partName[iSpec].Data(),minptbinmev),
667 nybinsA,minyA,maxyA);
668 h1ptrelres[iSpec][iptbin]=new TH1F(Form("h1ptrelres%s_%d",partName[iSpec].Data(),minptbinmev),
669 Form("h1ptrelres%s_%d",partName[iSpec].Data(),minptbinmev),
670 nybinsR,minyR,maxyR);
671 hptreco[iSpec][iptbin]=new TH1F(Form("hptreco%s_%d",partName[iSpec].Data(),minptbinmev),
672 Form("hptreco%s_%d",partName[iSpec].Data(),minptbinmev),
674 for(Int_t iBin=1; iBin<=nybinsA; iBin++){
675 hptres[iSpec][iptbin]->SetBinContent(iBin,h2DA[iSpec]->GetBinContent(iptbin+1,iBin));
676 hptres[iSpec][iptbin]->SetBinError(iBin,h2DA[iSpec]->GetBinError(iptbin+1,iBin));
678 for(Int_t iBin=1; iBin<=nybinsR; iBin++){
679 h1ptrelres[iSpec][iptbin]->SetBinContent(iBin,h2DR[iSpec]->GetBinContent(iptbin+1,iBin));
680 h1ptrelres[iSpec][iptbin]->SetBinError(iBin,h2DR[iSpec]->GetBinError(iptbin+1,iBin));
683 c1dA[iSpec]->cd(iptbin+1);
684 hptres[iSpec][iptbin]->Draw();
685 if(hptres[iSpec][iptbin]->Integral()>50){
686 hptres[iSpec][iptbin]->Fit("gaus");
687 hptres[iSpec][iptbin]->GetXaxis()->SetTitle("Pt residuals (GeV/c)");
688 hptres[iSpec][iptbin]->GetXaxis()->CenterTitle();
689 TF1* fgaus= (TF1*)hptres[iSpec][iptbin]->GetListOfFunctions()->FindObject("gaus");
690 Int_t nPoint=gbias[iSpec]->GetN();
691 gbias[iSpec]->SetPoint(nPoint, avept, fgaus->GetParameter(1));//hptres[iSpec][iptbin]->GetMean());
692 gbias[iSpec]->SetPointError(nPoint, widpt, fgaus->GetParError(1)); //hptres[iSpec][iptbin]->GetMeanError());
694 c1dR[iSpec]->cd(iptbin+1);
695 h1ptrelres[iSpec][iptbin]->Draw();
696 if(h1ptrelres[iSpec][iptbin]->Integral()>50){
697 h1ptrelres[iSpec][iptbin]->Fit("gaus","","",-0.1,0.1);//,"L");
698 h1ptrelres[iSpec][iptbin]->GetXaxis()->SetTitle("1/Pt relative residuals");
699 h1ptrelres[iSpec][iptbin]->GetXaxis()->CenterTitle();
700 TF1* fgaus= (TF1*)h1ptrelres[iSpec][iptbin]->GetListOfFunctions()->FindObject("gaus");
701 Int_t nPoint=grelresol[iSpec]->GetN();
702 grelresol[iSpec]->SetPoint(nPoint, avept, fgaus->GetParameter(2));
703 grelresol[iSpec]->SetPointError(nPoint, widpt, fgaus->GetParError(2));
710 TCanvas* cb=new TCanvas("cb","Bias");
711 gbias[2]->SetMarkerStyle(22);
712 gbias[2]->SetMarkerColor(4);
713 gbias[2]->SetLineColor(4);
714 gbias[2]->Draw("PA");
715 gbias[0]->SetMarkerStyle(20);
716 gbias[0]->SetMarkerColor(1);
717 gbias[0]->SetLineColor(1);
718 gbias[0]->Draw("PSAME");
719 gbias[1]->SetMarkerStyle(25);
720 gbias[1]->SetMarkerColor(2);
721 gbias[1]->SetLineColor(2);
722 gbias[1]->Draw("PSAME");
723 gbias[2]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
724 if(optFromMC) gbias[2]->GetYaxis()->SetTitle("<p_{T}(ITSsa)-p_{T}(MC)> (GeV/c)");
725 else gbias[2]->GetYaxis()->SetTitle("<p_{T}(ITSsa)-p_{T}(TPCITS)> (GeV/c)");
726 gbias[2]->GetYaxis()->SetTitleOffset(1.2);
729 TCanvas* cr=new TCanvas("cr","Resol");
730 grelresol[2]->SetMinimum(0.);
731 grelresol[2]->SetMaximum(0.2);
732 grelresol[2]->SetMarkerStyle(22);
733 grelresol[2]->SetMarkerColor(4);
734 grelresol[2]->SetLineColor(4);
735 grelresol[2]->Draw("PA");
736 grelresol[0]->SetMarkerStyle(20);
737 grelresol[0]->SetMarkerColor(1);
738 grelresol[0]->SetLineColor(1);
739 grelresol[0]->Draw("PSAME");
740 grelresol[1]->SetMarkerStyle(25);
741 grelresol[1]->SetMarkerColor(2);
742 grelresol[1]->SetLineColor(2);
743 grelresol[1]->Draw("PSAME");
744 grelresol[2]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
745 grelresol[2]->GetYaxis()->SetTitle("1/Pt relative resolution (%)");
746 grelresol[2]->GetYaxis()->SetTitleOffset(1.2);
749 TFile *fout=new TFile(foutName.Data(),"update");
750 for(Int_t iSpec=0; iSpec<3; iSpec++){
752 c1dA[iSpec]->Write();
753 c1dR[iSpec]->Write();
760 //----------------------------------------------------------------------------
762 void PlotITSsa(TList* li,TString foutName){
764 TH1F* hPtTPCITS=(TH1F*)li->FindObject("hPtTPCITS");
765 TH1F* hPtITSsa=(TH1F*)li->FindObject("hPtITSsa");
766 TH1F* hPtITSpureSA=(TH1F*)li->FindObject("hPtITSpureSA");
768 TH2F* hEtaPhiTPCITS=(TH2F*)li->FindObject("hEtaPhiTPCITS");
769 TH2F* hEtaPhiITSsa=(TH2F*)li->FindObject("hEtaPhiITSsa");
770 TH2F* hEtaPhiITSpureSA=(TH2F*)li->FindObject("hEtaPhiITSpureSA");
772 TH1F* hChi2TPCITS=(TH1F*)li->FindObject("hChi2TPCITS");
773 TH1F* hChi2ITSsa=(TH1F*)li->FindObject("hChi2ITSsa");
774 TH1F* hChi2ITSpureSA=(TH1F*)li->FindObject("hChi2ITSpureSA");
776 TH1F* hNcluTPCITS=(TH1F*)li->FindObject("hNcluTPCITS");
777 TH1F* hNcluITSsa=(TH1F*)li->FindObject("hNcluITSsa");
778 TH1F* hNcluITSpureSA=(TH1F*)li->FindObject("hNcluITSpureSA");
781 TH1F* hRatio=(TH1F*)hPtTPCITS->Clone("hRatio");
782 hRatio->Add(hPtITSsa);
783 hRatio->Divide(hPtITSpureSA);
786 TCanvas* c1=new TCanvas("c1","Pt",800,1000);
789 hPtITSpureSA->Draw();
790 hPtITSpureSA->GetXaxis()->SetTitle("Pt (GeV/c)");
792 TPaveStats *st1=(TPaveStats*)hPtITSpureSA->GetListOfFunctions()->FindObject("stats");
795 hPtTPCITS->SetLineColor(2);
796 hPtTPCITS->Draw("sames");
798 TPaveStats *st2=(TPaveStats*)hPtTPCITS->GetListOfFunctions()->FindObject("stats");
801 st2->SetTextColor(2);
803 hPtITSsa->SetLineColor(4);
804 hPtITSsa->Draw("sames");
806 TPaveStats *st3=(TPaveStats*)hPtITSsa->GetListOfFunctions()->FindObject("stats");
809 st3->SetTextColor(4);
810 TLegend* leg=new TLegend(0.5,0.5,0.69,0.69);
811 leg->SetFillColor(0);
812 TLegendEntry* ent=leg->AddEntry(hPtITSpureSA,"ITS pureSA","L");
813 ent->SetTextColor(hPtITSpureSA->GetLineColor());
814 ent=leg->AddEntry(hPtTPCITS,"TPC+ITS","L");
815 ent->SetTextColor(hPtTPCITS->GetLineColor());
816 ent=leg->AddEntry(hPtITSsa,"ITSsa","L");
817 ent->SetTextColor(hPtITSsa->GetLineColor());
823 hRatio->GetXaxis()->SetTitle("Pt (GeV/c)");
824 hRatio->GetYaxis()->SetTitle("(TPCITS+ITSsa)/ITSpureSA");
826 hChi2ITSpureSA->Scale(1./hChi2ITSpureSA->GetEntries());
827 hChi2ITSsa->Scale(1./hChi2ITSsa->GetEntries());
828 hChi2TPCITS->Scale(1./hChi2TPCITS->GetEntries());
830 TCanvas* c2=new TCanvas("c2","Chi2");
831 hChi2ITSpureSA->Draw();
832 hChi2ITSpureSA->GetXaxis()->SetTitle("Chi2");
834 TPaveStats *stc1=(TPaveStats*)hChi2ITSpureSA->GetListOfFunctions()->FindObject("stats");
835 stc1->SetY1NDC(0.71);
837 hChi2TPCITS->SetLineColor(2);
838 hChi2TPCITS->Draw("sames");
840 TPaveStats *stc2=(TPaveStats*)hChi2TPCITS->GetListOfFunctions()->FindObject("stats");
841 stc2->SetY1NDC(0.51);
843 stc2->SetTextColor(2);
845 hChi2ITSsa->SetLineColor(4);
846 hChi2ITSsa->Draw("sames");
848 TPaveStats *stc3=(TPaveStats*)hChi2ITSsa->GetListOfFunctions()->FindObject("stats");
849 stc3->SetY1NDC(0.31);
851 stc3->SetTextColor(4);
854 hNcluITSpureSA->Scale(1./hNcluITSpureSA->GetEntries());
855 hNcluITSsa->Scale(1./hNcluITSsa->GetEntries());
856 hNcluTPCITS->Scale(1./hNcluTPCITS->GetEntries());
858 TCanvas* c3=new TCanvas("c3","Nclu");
859 c3->SetRightMargin(0.22);
860 hNcluITSpureSA->Draw();
861 hNcluITSpureSA->GetXaxis()->SetTitle("n. ITS clusters");
863 TPaveStats *stn1=(TPaveStats*)hNcluITSpureSA->GetListOfFunctions()->FindObject("stats");
864 stn1->SetY1NDC(0.71);
866 hNcluTPCITS->SetLineColor(2);
867 hNcluTPCITS->Draw("sames");
869 TPaveStats *stn2=(TPaveStats*)hNcluTPCITS->GetListOfFunctions()->FindObject("stats");
870 stn2->SetY1NDC(0.51);
872 stn2->SetTextColor(2);
874 hNcluITSsa->SetLineColor(4);
875 hNcluITSsa->Draw("sames");
877 TPaveStats *stn3=(TPaveStats*)hNcluITSsa->GetListOfFunctions()->FindObject("stats");
878 stn3->SetY1NDC(0.31);
880 stn3->SetTextColor(4);
883 gStyle->SetPalette(1);
884 hEtaPhiITSpureSA->SetStats(0);
885 hEtaPhiITSpureSA->SetTitle("ITS pureSA");
886 hEtaPhiITSsa->SetStats(0);
887 hEtaPhiITSsa->SetTitle("ITSsa");
888 hEtaPhiTPCITS->SetStats(0);
889 hEtaPhiTPCITS->SetTitle("TPC+ITS");
890 TCanvas* c4=new TCanvas("c4","EtaPhi",1000,700);
893 hEtaPhiITSpureSA->Draw("colz");
894 hEtaPhiITSpureSA->GetXaxis()->SetTitle("Eta");
895 hEtaPhiITSpureSA->GetYaxis()->SetTitle("Phi");
897 hEtaPhiITSsa->Draw("colz");
898 hEtaPhiITSsa->GetXaxis()->SetTitle("Eta");
899 hEtaPhiITSsa->GetYaxis()->SetTitle("Phi");
901 hEtaPhiTPCITS->Draw("colz");
902 hEtaPhiTPCITS->GetXaxis()->SetTitle("Eta");
903 hEtaPhiTPCITS->GetYaxis()->SetTitle("Phi");
905 TFile *fout=new TFile(foutName.Data(),"update");
916 //----------------------------------------------------------------------------
918 void setDrawAtt(Int_t markerstyle,Int_t markercolor,Int_t markersize,Int_t linecolor,Int_t linewidth,TH1 *h1)
920 h1->SetMarkerStyle(markerstyle);
921 h1->SetMarkerColor(markercolor);
922 h1->SetMarkerSize(markersize);
923 h1->SetLineColor(linecolor);
924 h1->SetLineWidth(linewidth);