TH1* bayneseffdiv(TH1* numerator, TH1* denominator,Char_t* name) ;
void SetStyles(TH1 *histo,int marker, int color,char *xtitle, char *ytitle, Bool_t scale = kFALSE);
void PlotTrackMatchingEfficiency(TString filename="rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run137366.root",TString run = "000000",TString prod = "LHC11a10a_bis"){
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
gStyle->SetOptFit(0);
TFile *f = TFile::Open(filename, "READ");
TList *l = (TList*)f->Get("out1");
TH1F *fHistHadronDepositsAll = l->FindObject("fHistHadronDepositsAll");
TH1F *fHistHadronDepositsReco = l->FindObject("fHistHadronDepositsReco");
TH1F *eff = bayneseffdiv(fHistHadronDepositsReco,fHistHadronDepositsAll,"eff");
TCanvas *c1 = new TCanvas("c1","c1",600,400);
c1->SetTopMargin(0.02);
c1->SetRightMargin(0.02);
c1->SetBorderSize(0);
c1->SetFillColor(0);
c1->SetFillColor(0);
c1->SetBorderMode(0);
c1->SetFrameFillColor(0);
c1->SetFrameBorderMode(0);
eff->SetMinimum(0.0);
eff->SetMaximum(1.0);
eff->GetXaxis()->SetRange(1,eff->GetXaxis()->FindBin(3.0));
eff->GetXaxis()->SetTitle("p_{T}");
eff->GetYaxis()->SetTitle("track matching efficiency");
eff->Draw();
TString name = "/tmp/TrackMatchingEfficiency"+prod+run+".png";
c1->SaveAs(name.Data());
}
void SetStyles(TH1 *histo,int marker, int color,char *xtitle, char *ytitle, Bool_t scale){
histo->Sumw2();
histo->SetMarkerStyle(marker);
histo->SetMarkerColor(color);
histo->SetLineColor(color);
histo->GetXaxis()->SetTitle(xtitle);
histo->GetYaxis()->SetTitle(ytitle);
}
TH1* bayneseffdiv(TH1* numerator, TH1* denominator,Char_t* name)
{
if(!numerator){
cerr<<"Error: numerator does not exist!"<<endl;
return NULL;
}
if(!denominator){
cerr<<"Error: denominator does not exist!"<<endl;
return NULL;
}
TH1* result = (TH1*)numerator->Clone(name);
Int_t nbins = numerator->GetNbinsX();
for (Int_t ibin=0; ibin<= nbins+1; ++ibin) {
Double_t numeratorVal = numerator->GetBinContent(ibin);
Double_t denominatorVal = denominator->GetBinContent(ibin);
// Check if the errors are right or the thing is scaled
Double_t numeratorValErr = numerator->GetBinError(ibin);
if (!(numeratorValErr==0. || numeratorVal ==0.) ) {
Double_t rescale = numeratorValErr*numeratorValErr/numeratorVal;
numeratorVal /= rescale;
}
Double_t denominatorValErr = denominator->GetBinError(ibin);
if (!(denominatorValErr==0. || denominatorVal==0. )) {
Double_t rescale = denominatorValErr*denominatorValErr/denominatorVal;
denominatorVal /= rescale;
}
Double_t quotient = 0.;
if (denominatorVal!=0.) {
quotient = numeratorVal/denominatorVal;
}
Double_t quotientErr=0;
quotientErr = TMath::Sqrt(
(numeratorVal+1.0)/(denominatorVal+2.0)*
((numeratorVal+2.0)/(denominatorVal+3.0)-(numeratorVal+1.0)/(denominatorVal+2.0)));
result->SetBinContent(ibin,quotient);
result->SetBinError(ibin,quotientErr);
//cout<<"Setting bin "<<ibin<<" to "<<quotient<<" "<<numeratorVal<<"/"<<denominatorVal<<endl;
}
return result;
}
PlotTrackMatchingEfficiency.C:1 PlotTrackMatchingEfficiency.C:2 PlotTrackMatchingEfficiency.C:3 PlotTrackMatchingEfficiency.C:4 PlotTrackMatchingEfficiency.C:5 PlotTrackMatchingEfficiency.C:6 PlotTrackMatchingEfficiency.C:7 PlotTrackMatchingEfficiency.C:8 PlotTrackMatchingEfficiency.C:9 PlotTrackMatchingEfficiency.C:10 PlotTrackMatchingEfficiency.C:11 PlotTrackMatchingEfficiency.C:12 PlotTrackMatchingEfficiency.C:13 PlotTrackMatchingEfficiency.C:14 PlotTrackMatchingEfficiency.C:15 PlotTrackMatchingEfficiency.C:16 PlotTrackMatchingEfficiency.C:17 PlotTrackMatchingEfficiency.C:18 PlotTrackMatchingEfficiency.C:19 PlotTrackMatchingEfficiency.C:20 PlotTrackMatchingEfficiency.C:21 PlotTrackMatchingEfficiency.C:22 PlotTrackMatchingEfficiency.C:23 PlotTrackMatchingEfficiency.C:24 PlotTrackMatchingEfficiency.C:25 PlotTrackMatchingEfficiency.C:26 PlotTrackMatchingEfficiency.C:27 PlotTrackMatchingEfficiency.C:28 PlotTrackMatchingEfficiency.C:29 PlotTrackMatchingEfficiency.C:30 PlotTrackMatchingEfficiency.C:31 PlotTrackMatchingEfficiency.C:32 PlotTrackMatchingEfficiency.C:33 PlotTrackMatchingEfficiency.C:34 PlotTrackMatchingEfficiency.C:35 PlotTrackMatchingEfficiency.C:36 PlotTrackMatchingEfficiency.C:37 PlotTrackMatchingEfficiency.C:38 PlotTrackMatchingEfficiency.C:39 PlotTrackMatchingEfficiency.C:40 PlotTrackMatchingEfficiency.C:41 PlotTrackMatchingEfficiency.C:42 PlotTrackMatchingEfficiency.C:43 PlotTrackMatchingEfficiency.C:44 PlotTrackMatchingEfficiency.C:45 PlotTrackMatchingEfficiency.C:46 PlotTrackMatchingEfficiency.C:47 PlotTrackMatchingEfficiency.C:48 PlotTrackMatchingEfficiency.C:49 PlotTrackMatchingEfficiency.C:50 PlotTrackMatchingEfficiency.C:51 PlotTrackMatchingEfficiency.C:52 PlotTrackMatchingEfficiency.C:53 PlotTrackMatchingEfficiency.C:54 PlotTrackMatchingEfficiency.C:55 PlotTrackMatchingEfficiency.C:56 PlotTrackMatchingEfficiency.C:57 PlotTrackMatchingEfficiency.C:58 PlotTrackMatchingEfficiency.C:59 PlotTrackMatchingEfficiency.C:60 PlotTrackMatchingEfficiency.C:61 PlotTrackMatchingEfficiency.C:62 PlotTrackMatchingEfficiency.C:63 PlotTrackMatchingEfficiency.C:64 PlotTrackMatchingEfficiency.C:65 PlotTrackMatchingEfficiency.C:66 PlotTrackMatchingEfficiency.C:67 PlotTrackMatchingEfficiency.C:68 PlotTrackMatchingEfficiency.C:69 PlotTrackMatchingEfficiency.C:70 PlotTrackMatchingEfficiency.C:71 PlotTrackMatchingEfficiency.C:72 PlotTrackMatchingEfficiency.C:73 PlotTrackMatchingEfficiency.C:74 PlotTrackMatchingEfficiency.C:75 PlotTrackMatchingEfficiency.C:76 PlotTrackMatchingEfficiency.C:77 PlotTrackMatchingEfficiency.C:78 PlotTrackMatchingEfficiency.C:79 PlotTrackMatchingEfficiency.C:80 PlotTrackMatchingEfficiency.C:81