+++ /dev/null
-
-//Christine Nattrass, University of Tennessee at Knoxville
-//This macro is for calculating the correction for the neutral energy considered part of HadEt not recorded by the tracking detectors, that from lambdas, antilambdas, K0S, K0L, neutrons, and antineutrons.
-//Since PYTHIA does not get the spectra of lambdas, antilambdas, and K0S correct, this is not a very good way of determining the correction used for data and as such should be used with great caution.
-//Uses the output of AliAnalysisTaskHadEt
-//This is not actually what gets used in the correction class AliAnalysisHadEtCorrections - that is done in the macro GetCorrections.C - but this is useful for making plots and playing around with different options
-
-
-
-TH1D *GetHisto(float cut = 0.12, char *name, int mycase, bool eta, int color, int marker, bool hadronic, bool reweight,float kaonFactor=1.0, float lambdaFactor = 1.0, float baryonEnhancement = 1.0){
- //TFile *file = new TFile("Et.ESD.new.sim.merged.root");
- TFile *file = new TFile("Et.ESD.new.sim.LHC10d4.pp.merged.root");
- TList *list = file->FindObject("out2");
- char *reweightname = "";
- if(reweight) reweightname = "Reweighted";
- TH2F *numeratorParent;
- switch(mycase){
- case 0:
- numeratorParent= (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedLambda",reweightname)))->Clone("v0");
- numeratorParent->Scale(lambdaFactor*baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda",reweightname)),lambdaFactor*baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname)),kaonFactor);
- break;
- case 1:
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname)))->Clone("Knnbar");
- numeratorParent->Scale(kaonFactor);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedNeutron"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron"),baryonEnhancement);
- break;
- case 2:
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject("EtSimulatedOmega"))->Clone("ch2ndary");
- numeratorParent->Scale(baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiOmega"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedXi"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi"),baryonEnhancement);
- //numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedSigma"));
- //numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiSigma"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedXi0"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi0"),baryonEnhancement);
- break;
- case 3:
- numeratorParent= (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedLambda%s",reweightname)))->Clone("allneutral");
- numeratorParent->Scale(lambdaFactor*baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda%s",reweightname)),lambdaFactor*baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname)),kaonFactor);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname)),kaonFactor);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedNeutron"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron"),baryonEnhancement);
- break;
- case 4:
- numeratorParent= (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedLambda%s",reweightname)))->Clone("allneutral");
- numeratorParent->Scale(lambdaFactor*baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda%s",reweightname)),lambdaFactor*baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname)),kaonFactor);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname)),kaonFactor);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedNeutron"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedOmega"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiOmega"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedXi"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi"),baryonEnhancement);
- //numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedSigma"));
- //numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiSigma"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedXi0"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi0"),baryonEnhancement);
- break;
- case 5:
- numeratorParent= (TH2F*)((TH2F*) out2->FindObject("EtSimulatedXi"))->Clone("allxi");
- numeratorParent->Scale(baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedXi0"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi0"),baryonEnhancement);
- break;
- case 6:
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject("EtSimulatedOmega"))->Clone("allomega");
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiOmega"),baryonEnhancement);
- break;
- case 7:
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject("EtSimulatedSigma"))->Clone("allsigma");
- numeratorParent->Scale(baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiSigma"),baryonEnhancement);
- break;
- case 8:
- numeratorParent= (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedLambda%s",reweightname)))->Clone("allneutral");
- numeratorParent->Scale(baryonEnhancement);
- numeratorParent->Scale(lambdaFactor*baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda%s",reweightname)),lambdaFactor*baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname)),kaonFactor);
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname)),kaonFactor);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedNeutron"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedOmega"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiOmega"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedXi"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedXi0"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi0"),baryonEnhancement);
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedGamma"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedEta"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedPi0"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedOmega0"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedEPlus"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedEMinus"));
- break;
- case 9:
- numeratorParent= (TH2F*)((TH2F*) out2->FindObject("EtSimulatedGamma"))->Clone("allem");
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedEta"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedPi0"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedOmega0"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedEPlus"));
- numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedEMinus"));
- break;
- }
-
- TH2F *allhad;
- //allhad=(TH2F*) ((TH2F*) out2->FindObject("EtSimulatedAllHadron"))->Clone("id");
- allhad=(TH2F*) ((TH2F*) out2->FindObject("EtSimulatedPiPlus"))->Clone("id");
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedPiMinus"));
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedKMinus"),kaonFactor);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedKPlus"),kaonFactor);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedProton"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiProton"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject(Form("EtSimulatedLambda%s",reweightname)),lambdaFactor*baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda%s",reweightname)),lambdaFactor*baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname)),kaonFactor);
- allhad->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname)),kaonFactor);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedNeutron"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedEPlus"));
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedEMinus"));
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedOmega"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiOmega"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedXi"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedSigma"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiSigma"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedXi0"),baryonEnhancement);
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi0"),baryonEnhancement);
-
- if(hadronic){//if we are getting the correction for the hadronic only case...
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedGamma"));
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedEta"));
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedPi0"));
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedOmega0"));
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedEPlus"));
- allhad->Add((TH2F*) out2->FindObject("EtSimulatedEMinus"));
- }
-
- numeratorParent->Sumw2();
- allhad->Sumw2();
- TH1D *denominator;
- TH1D *numerator;
- if(eta){
- int lowbin = numeratorParent->GetYaxis()->FindBin(-cut+.001);//make sure we don't accv0entally get the wrong bin
- int highbin = numeratorParent->GetYaxis()->FindBin(cut-.001);
- cout<<"Projecting from "<<numeratorParent->GetYaxis()->GetBinLowEdge(lowbin)<<" to "<<numeratorParent->GetYaxis()->GetBinLowEdge(highbin+1)<<endl;
- denominator = allhad->ProjectionX("name",lowbin,highbin);
- numerator = numeratorParent->ProjectionX("numerator",lowbin,highbin);
- }
- else{
- int lowbin = allhad->GetXaxis()->FindBin(cut);//make sure we don't accidentally get the wrong bin
- int highbin = allhad->GetXaxis()->GetNbins();
- cout<<"Projecting from "<<allhad->GetXaxis()->GetBinLowEdge(lowbin)<<" to "<<allhad->GetXaxis()->GetBinLowEdge(highbin+1)<<endl;
- numerator = numeratorParent->ProjectionY("name",lowbin,highbin);
- denominator = allhad->ProjectionY("denominator",lowbin,highbin);
- }
- numerator->Divide(denominator);
- if(hadronic){
- numerator->SetYTitle("E_{T}^{sample}/E_{T}^{total}");
- }
- else{
- numerator->SetYTitle("E_{T}^{had,sample}/E_{T}^{had,total}");
- }
- numerator->GetYaxis()->SetTitleOffset(1.2);
- numerator->SetMarkerColor(color);
- numerator->SetLineColor(color);
- numerator->SetMarkerStyle(marker);
- //numerator->Draw("e");
- return numerator;
-
-}
-
-void CorrNeutral(char *prodname = "LHC10d4 PYTHIA D6T 7 TeV p+p", char *shortprodname = "LHC10d4", bool hadronic = false, bool reweighted = false, float kaonFactor=1.0, float lambdaFactor = 1.0, float baryonEnhancement = 1.0){
- gStyle->SetOptTitle(0);
- gStyle->SetOptStat(0);
- gStyle->SetOptFit(0);
-// TCanvas *c = new TCanvas("c","c",800,400);
-// c->SetTopMargin(0.0);
-// c->SetRightMargin(0.0);
-// c->SetBorderSize(0);
-// c->SetFillColor(0);
-// c->SetFillColor(0);
-// c->SetBorderMode(0);
-// c->SetFrameFillColor(0);
-// c->SetFrameBorderMode(0);
-// c->Divide(2);
-// TPad *ptpad = c->cd(1);
- TCanvas *ptpad = new TCanvas("ptpad","ptpad",400,400);
- ptpad->SetTopMargin(0.04);
- ptpad->SetRightMargin(0.04);
- ptpad->SetLeftMargin(0.149288);
- ptpad->SetBorderSize(0);
- ptpad->SetFillColor(0);
- ptpad->SetFillColor(0);
- ptpad->SetBorderMode(0);
- ptpad->SetFrameFillColor(0);
- ptpad->SetFrameBorderMode(0);
-
- int phosmarker = 20;
- int emcalmarker = 24;
- float ptcut1 = 0.05;
- float ptcut2 = 0.1;
-
- int colortotal = 1;
- int casetotal = 4;
- if(hadronic) casetotal = 8;
- TH1D *PHOStotal = GetHisto(0.12,"PHOStotal",casetotal,true,colortotal,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *EMCALtotal = GetHisto(0.7,"EMCALtotal",casetotal,true,colortotal,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt1total = GetHisto(ptcut2,"pt1total",casetotal,false,colortotal,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt2total = GetHisto(ptcut1,"pt2total",casetotal,false,colortotal,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
-
- int colorallneutral = 2;
- TH1D *PHOSallneutral = GetHisto(0.12,"PHOSallneutral",3,true,colorallneutral,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *EMCALallneutral = GetHisto(0.7,"EMCALallneutral",3,true,colorallneutral,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt1allneutral = GetHisto(ptcut2,"pt1allneutral",3,false,colorallneutral,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt2allneutral = GetHisto(ptcut1,"pt2allneutral",3,false,colorallneutral,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
-
- int colorchargedsecondary = TColor::kViolet-3;
- TH1D *PHOSchargedsecondary = GetHisto(0.12,"PHOSchargedsecondary",2,true,colorchargedsecondary,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *EMCALchargedsecondary = GetHisto(0.7,"EMCALchargedsecondary",2,true,colorchargedsecondary,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt1chargedsecondary = GetHisto(ptcut2,"pt1chargedsecondary",2,false,colorchargedsecondary,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt2chargedsecondary = GetHisto(ptcut1,"pt2chargedsecondary",2,false,colorchargedsecondary,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
-
- int colorneutralUndet = 4;
- TH1D *PHOSneutralUndet = GetHisto(0.12,"PHOSneutralUndet",1,true,colorneutralUndet,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *EMCALneutralUndet = GetHisto(0.7,"EMCALneutralUndet",1,true,colorneutralUndet,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt1neutralUndet = GetHisto(ptcut2,"pt1neutralUndet",1,false,colorneutralUndet,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt2neutralUndet = GetHisto(ptcut1,"pt2neutralUndet",1,false,colorneutralUndet,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
-
- int colorv0 = TColor::kGreen+2;
- TH1D *PHOSv0 = GetHisto(0.12,"PHOSv0",0,true,colorv0,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *EMCALv0 = GetHisto(0.7,"EMCALv0",0,true,colorv0,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt1v0 = GetHisto(ptcut2,"pt1v0",0,false,colorv0,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt2v0 = GetHisto(ptcut1,"pt2v0",0,false,colorv0,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
-
- int colorem = TColor::kCyan;
- TH1D *PHOSem = GetHisto(0.12,"PHOSem",9,true,colorem,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *EMCALem = GetHisto(0.7,"EMCALem",9,true,colorem,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt1em = GetHisto(ptcut2,"pt1em",9,false,colorem,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- TH1D *pt2em = GetHisto(ptcut1,"pt2em",9,false,colorem,emcalmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
-
- PHOStotal->SetMaximum(0.5);
- PHOStotal->SetMinimum(0.0);
- if(hadronic){
- PHOStotal->SetMaximum(0.75);
- }
- PHOStotal->SetAxisRange(0.0,4);
- PHOStotal->GetXaxis()->SetLabelSize(0.05);
- PHOStotal->GetYaxis()->SetLabelSize(0.045);
- PHOStotal->GetXaxis()->SetTitleSize(0.05);
- PHOStotal->GetYaxis()->SetTitleSize(0.06);
- PHOStotal->Draw();
- EMCALtotal->Draw("same");
- PHOSallneutral->Draw("same");
- EMCALallneutral->Draw("same");
- PHOSchargedsecondary->Draw("same");
- EMCALchargedsecondary->Draw("same");
- PHOSneutralUndet->Draw("same");
- EMCALneutralUndet->Draw("same");
- PHOSv0->Draw("same");
- EMCALv0->Draw("same");
- if(hadronic){
- PHOSem->Draw("same");
- EMCALem->Draw("same");
- }
- TLatex *tex = new TLatex(0.161478,1.0835,prodname);
- tex->SetTextSize(0.0537634);
- tex->Draw();
- TLegend *leg = new TLegend(0.193781,0.796248,0.450272,0.944371);
- leg->AddEntry(PHOStotal,"|#eta|<0.12");
- leg->AddEntry(EMCALtotal,"|#eta|<0.70");
- leg->SetFillStyle(0);
- leg->SetFillColor(0);
- leg->SetBorderSize(0);
- leg->Draw();
- TLegend *leg2 = new TLegend(0.518321,0.612903,0.774812,0.955343);
- leg2->AddEntry(PHOStotal,"Total");
- leg2->AddEntry(PHOSallneutral,"#Lambda,#bar{#Lambda},K^{0}_{S},K^{0}_{L},n,#bar{n}");
- leg2->AddEntry(PHOSneutralUndet,"K^{0}_{L},n,#bar{n}");
- leg2->AddEntry(PHOSv0,"#Lambda,#bar{#Lambda},K^{0}_{S}");
- leg2->AddEntry(PHOSchargedsecondary,"#Xi,#Omega");
- leg2->SetFillStyle(0);
- leg2->SetFillColor(0);
- leg2->SetBorderSize(0);
- leg2->SetTextSize(0.0548607);
- leg2->Draw();
-
-
- TCanvas *etapad = new TCanvas("etapad","etapad",400,400);// TPad *etapad = c->cd(2);
- etapad->SetTopMargin(0.04);
- etapad->SetRightMargin(0.04);
- etapad->SetBorderSize(0);
- etapad->SetFillColor(0);
- etapad->SetFillColor(0);
- etapad->SetBorderMode(0);
- etapad->SetFrameFillColor(0);
- etapad->SetFrameBorderMode(0);
- etapad->SetLeftMargin(0.149288);
-
-
-
- pt1total->GetXaxis()->SetLabelSize(0.05);
- pt1total->GetYaxis()->SetLabelSize(0.045);
- pt1total->GetXaxis()->SetTitleSize(0.05);
- pt1total->GetYaxis()->SetTitleSize(0.06);
- pt1total->SetMinimum(0.0);
- pt1total->SetMaximum(0.5);
- if(hadronic){
- pt1total->SetMaximum(0.7);
- }
-
- TF1 *func = new TF1("func","[0]",-.7,.7);
- func->SetParameter(0,0.2);
- pt1total->Fit(func);
- pt1total->Draw();
- pt2total->Draw("same");
- pt1allneutral->Draw("same");
- pt2allneutral->Draw("same");
- pt1chargedsecondary->Draw("same");
- pt2chargedsecondary->Draw("same");
- pt1neutralUndet->Draw("same");
- pt2neutralUndet->Draw("same");
- pt1v0->Draw("same");
- pt2v0->Draw("same");
- if(hadronic){
- pt1em->Draw("same");
- pt2em->Draw("same");
- }
- TLatex *tex = new TLatex(-.65,.23,Form("%2.5f#pm%2.5f",func->GetParameter(0),func->GetParError(0)));
- tex->Draw();
-
- TLegend *leg3 = new TLegend(0.539259,0.801734,0.79575,0.949857);
- leg3->AddEntry(pt1total,"p_{T} cut = 0.1");
- leg3->AddEntry(pt2total,"p_{T} cut = 0.05");
- leg3->SetFillStyle(0);
- leg3->SetFillColor(0);
- leg3->SetBorderSize(0);
- leg3->SetTextSize(0.0548607);
- leg3->Draw();
- TLegend *leg4 = new TLegend(0.199016,0.785275,0.455507,0.955343);
- leg4->AddEntry(PHOSv0,"#Lambda,#bar{#Lambda},K^{0}_{S}");
- //leg4->AddEntry(PHOSchargedsecondary,"#Sigma,#bar{#Sigma},#Xi,#bar{#Xi},#Xi^{0},#bar{#Xi^0},#Omega,#bar{#Omega}");
- leg4->AddEntry(PHOSchargedsecondary,"#Xi,#Omega");
- if(hadronic) leg4->AddEntry(PHOSem,"e^{#pm},#gamma,#eta,#pi^{0},#omega");
- leg4->SetFillStyle(0);
- leg4->SetFillColor(0);
- leg4->SetBorderSize(0);
- leg4->SetTextSize(0.0548607);
- //leg4->Draw();
-
- float y = 0.0237534;
- if(hadronic) y = 0.158129;
- TLatex *tex = new TLatex(-0.719565,y,prodname);
- tex->SetTextSize(0.0537634);
- tex->Draw();
-
- char ptnameeps[200];
- char ptnamepng[200];
- char ptnamepdf[200];
- char etanameeps[200];
- char etanamepng[200];
- char etanamepdf[200];
- TString *Total = new TString("total");
- TString *Neutral = new TString("neutral");
- TString *Cut = Neutral;
- if(hadronic) Cut = Total;
- TString *None = new TString("");
- TString *Factors = None;
- if(kaonFactor!=1.0||lambdaFactor!=1.0||baryonEnhancement!=1.0){
- Factors = new TString(Form("Lambda%2.2fKaon%2.2fBaryon%2.2f",lambdaFactor,kaonFactor,baryonEnhancement));
- }
- sprintf(ptnameeps,"pics/f%spt%s.eps",Cut->Data(),Factors->Data());
- sprintf(ptnamepng,"pics/f%spt%s.png",Cut->Data(),Factors->Data());
- sprintf(ptnamepdf,"pics/f%spt%s.pdf",Cut->Data(),Factors->Data());
- sprintf(etanameeps,"pics/f%seta%s.eps",Cut->Data(),Factors->Data());
- sprintf(etanamepng,"pics/f%seta%s.png",Cut->Data(),Factors->Data());
- sprintf(etanamepdf,"pics/f%seta%s.pdf",Cut->Data(),Factors->Data());
- ptpad->SaveAs(ptnameeps);
- ptpad->SaveAs(ptnamepng);
- ptpad->SaveAs(ptnamepdf);
- etapad->SaveAs(etanameeps);
- etapad->SaveAs(etanamepng);
- etapad->SaveAs(etanamepdf);
-
- TCanvas *c2 = new TCanvas("c2","c2",500,400);
- c2->SetTopMargin(0.03);
- c2->SetRightMargin(0.03);
- c2->SetBorderSize(0);
- c2->SetFillColor(0);
- c2->SetFillColor(0);
- c2->SetBorderMode(0);
- c2->SetFrameFillColor(0);
- c2->SetFrameBorderMode(0);
-
-
- int colorchargedall = 1;
- TH1D *chargedall = GetHisto(ptcut2,"chargedall",2,false,colorchargedall,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- int colorxi =TColor::kGreen+2;
- TH1D *xi = GetHisto(ptcut2,"xi",5,false,colorxi,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- int coloromega = 4;
- TH1D *omega = GetHisto(ptcut2,"omega",6,false,coloromega,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- int colorsigma = 2;
- TH1D *sigma = GetHisto(ptcut2,"sigma",7,false,colorsigma,phosmarker,hadronic,reweighted,kaonFactor,lambdaFactor,baryonEnhancement);
- chargedall->SetMinimum(0.0);
- chargedall->SetMaximum(0.02);
- chargedall->Draw();
- xi->Draw("same");
- omega->Draw("same");
- //sigma->Draw("same");
- TLegend *leg5 = new TLegend(0.199016,0.785275,0.455507,0.955343);
- leg5->AddEntry(chargedall,"#Sigma,#Xi,#Xi^{0},#Omega");
- //leg5->AddEntry(sigma,"#Sigma");
- leg5->AddEntry(xi,"#Xi,#Xi^{0}");
- leg5->AddEntry(omega,"#Omega");
- leg5->SetFillStyle(0);
- leg5->SetFillColor(0);
- leg5->SetBorderSize(0);
- leg5->SetTextSize(0.0548607);
- leg5->Draw();
-}
//This is a somewhat messy function that gets the efficiency for different particles
-TH1D *GetHisto(float cut = 0.12, char *name, int mycase, bool eta, int color, int marker,bool TPC, bool ITS){
+TH1D *GetHisto(float cut = 0.12, char *name, int mycase, bool eta, int color, int marker,bool TPC, bool ITS, bool PbPb, int cb, int cblast){
//TFile *file = new TFile("Et.ESD.new.sim.merged.root");
- TFile *file = new TFile("Et.ESD.new.sim.LHC10d4.pp.merged.root");
+ TFile *file = new TFile("rootFiles/LHC11a4_bis/Et.ESD.new.sim.LHC11a4_bis.root");
+ //TFile *file = new TFile("rootFiles/LHC10d7/Et.ESD.new.sim.LHC10d7.root");
TList *list = file->FindObject("out2");
char *myname = "ITS";
if(TPC&&!ITS) myname = "TPC";
TH2F *numeratorParent;
switch(mycase){
case 0:
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiPlus")))->Clone("RecoHadron");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiMinus")));
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KMinus")));
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KPlus")));
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"Proton")));
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"AntiProton")));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(i==cb) numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiPlus",i)))->Clone("RecoHadron");
+ else{numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiPlus",i)));}
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiMinus",i)));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KMinus",i)));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KPlus",i)));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"Proton",i)));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"AntiProton",i)));
+ }
+ }
+ else{
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiPlus")))->Clone("RecoHadron");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiMinus")));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KMinus")));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KPlus")));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"Proton")));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"AntiProton")));
+ }
break;
case 1://pion
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiPlus")))->Clone("RecoPion");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiMinus")));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(i==cb) numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiPlus",i)))->Clone("RecoPion");
+ else{numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiPlus",i)));}
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiMinus",i)));
+ }
+ }
+ else{
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiPlus")))->Clone("RecoPion");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiMinus")));
+ }
break;
case 2://kaon
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KPlus")))->Clone("RecoKaon");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KMinus")));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(i==cb) numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KPlus",i)))->Clone("RecoKaon");
+ else{numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KPlus",i)));}
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KMinus",i)));
+ }
+ }
+ else{
+ cout<<"I am kaoning here !"<<endl;
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KPlus")))->Clone("RecoKaon");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KMinus")));
+ cout<<"Numerator "<<numeratorParent->GetEntries()<<endl;
+ }
break;
case 3://proton
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"Proton")))->Clone("RecoProton");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"AntiProton")));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(i==cb) numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"Proton",i)))->Clone("RecoProton");
+ else{numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"Proton",i)));}
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"AntiProton",i)));
+ }
+ }
+ else{
+ cout<<"I am protoning here !"<<endl;
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"Proton")))->Clone("RecoProton");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"AntiProton")));
+ cout<<"Numerator "<<numeratorParent->GetEntries()<<endl;
+ }
break;
case 4://electron
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"EPlus")))->Clone("RecoElectron");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"EMinus")));
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s%s",myname,"EPlus",cbname)))->Clone("RecoElectron");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s%s",myname,"EMinus",cbname)));
break;
}
TH2F *denominatorParent;
switch(mycase){
case 0:
- denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedChargedHadron"))->Clone("RecoHadron");
-// denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedPiPlus"))->Clone("RecoHadron");
-// denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedPiMinus"));
-// denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedKMinus"));
-// denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedKPlus"));
-// denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedProton"));
-// denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedAntiProton"));
+ if(cblast != -1){//add more centrality bins
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNSimulatedChargedHadronCB%i",cb)))->Clone("RecoHadron");
+ for(int i=cb+1;i<=cblast;i++){
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedChargedHadronCB%i",i)));
+ }
+ }
+ else{
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedChargedHadron"))->Clone("RecoHadron");
+ }
break;
case 1://pion
- denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedPiPlus"))->Clone("RecoPion");
- denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedPiMinus"));
+ if(cblast != -1){//add more centrality bins
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNSimulatedPiPlusCB%i",cb)))->Clone("RecoPion");
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedPiMinusCB%i",cb)));
+ for(int i=cb+1;i<=cblast;i++){
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedPiPlusCB%i",i)));
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedPiMinusCB%i",i)));
+ }
+ }
+ else{
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedPiPlus"))->Clone("RecoPion");
+ denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedPiMinus"));
+ }
break;
case 2://kaon
- denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedKPlus"))->Clone("RecoKaon");
- denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedKMinus"));
+ if(cblast != -1){//add more centrality bins
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNSimulatedKPlusCB%i",cb)))->Clone("RecoKaon");
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedKMinusCB%i",cb)));
+ for(int i=cb+1;i<=cblast;i++){
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedKPlusCB%i",i)));
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedKMinusCB%i",i)));
+ }
+ }
+ else{
+ cout<<"I am here kaoning"<<endl;
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedKPlus"))->Clone("RecoKaon");
+ denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedKMinus"));
+ cout<<"Denominator "<<denominatorParent->GetEntries()<<endl;
+ }
break;
case 3://proton
- denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedProton"))->Clone("RecoProton");
- denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedAntiProton"));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(cb==i)denominatorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNSimulatedProtonCB%i",i)))->Clone("RecoProton");
+ else{denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedProtonCB%i",i)));}
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedAntiProtonCB%i",i)));
+ }
+ }
+ else{
+ cout<<"I am here protoning"<<endl;
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedProton"))->Clone("RecoProton");
+ denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedAntiProton"));
+ cout<<"Denominator "<<denominatorParent->GetEntries()<<endl;
+ }
break;
case 4://electron
denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedEPlus"))->Clone("RecoElectron");
denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedEMinus"));
break;
}
+ cout<<"Numerator "<<numeratorParent->GetEntries()<<endl;
+ cout<<"Denominator "<<denominatorParent->GetEntries()<<endl;
numeratorParent->Sumw2();
denominatorParent->Sumw2();
TH1D *denominator;
//this is a method that makes pretty plots
-void CorrEfficiency(char *prodname= "LHC10d4", char *shortprodname = "LHC10d4 PYTHIA D6T 7 TeV p+p", bool TPC = true,bool ITS = true, bool eta = false){
+void CorrEfficiency(char *shortprodname= "LHC11a4_bis", char *prodname = "LHC11a4_bis HIJING 2.76 TeV Pb+Pb", bool TPC = true,bool ITS = true, bool eta = true, bool PbPb = true, int cb = 0, int cblast = -1){
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
phoscut = 0.1;
emcalcut = 0.15;
}
- TH1D *PHOStotal = GetHisto(phoscut,"PHOStotal",0,eta,colortotal,phosmarker,TPC,ITS);
- TH1D *PHOSpi = GetHisto(phoscut,"PHOSpi",1,eta,colorpi,phosmarker,TPC,ITS);
- TH1D *PHOSp = GetHisto(phoscut,"PHOSp",2,eta,colork,phosmarker,TPC,ITS);
- TH1D *PHOSk = GetHisto(phoscut,"PHOSk",3,eta,colorp,phosmarker,TPC,ITS);
+ TH1D *PHOStotal = GetHisto(phoscut,"PHOStotal",0,eta,colortotal,phosmarker,TPC,ITS,PbPb,cb,cblast);
+ TH1D *PHOSpi = GetHisto(phoscut,"PHOSpi",1,eta,colorpi,phosmarker,TPC,ITS,PbPb,cb,cblast);
+ TH1D *PHOSp = GetHisto(phoscut,"PHOSp",3,eta,colork,phosmarker,TPC,ITS,PbPb,cb,cblast);
+ TH1D *PHOSk = GetHisto(phoscut,"PHOSk",2,eta,colorp,phosmarker,TPC,ITS,PbPb,cb,cblast);
if(eta) PHOStotal->GetXaxis()->SetRange(PHOStotal->GetXaxis()->FindBin(0.05),PHOStotal->GetXaxis()->FindBin(1.0));
//if(ITS&&!TPC){PHOStotal->GetXaxis()->SetRange(PHOStotal->GetXaxis()->FindBin(0.05),PHOStotal->GetXaxis()->FindBin(1.0));}
//else{PHOStotal->GetXaxis()->SetRange(PHOStotal->GetXaxis()->FindBin(0.0),PHOStotal->GetXaxis()->FindBin(3.0));}
PHOSpi->Draw("same");
PHOSp->Draw("same");
PHOSk->Draw("same");
- TH1D *EMCALtotal = GetHisto(emcalcut,"EMCALtotal",0,eta,colortotal,emcalmarker,TPC,ITS);
- TH1D *EMCALpi = GetHisto(emcalcut,"EMCALpi",1,eta,colorpi,emcalmarker,TPC,ITS);
- TH1D *EMCALp = GetHisto(emcalcut,"EMCALp",2,eta,colork,emcalmarker,TPC,ITS);
- TH1D *EMCALk = GetHisto(emcalcut,"EMCALk",3,eta,colorp,emcalmarker,TPC,ITS);
+ cout<<"Hadrons"<<endl;
+ TH1D *EMCALtotal = GetHisto(emcalcut,"EMCALtotal",0,eta,colortotal,emcalmarker,TPC,ITS,PbPb,cb,cblast);
+ cout<<endl<<endl<<"=================================PIONS================================="<<endl;
+ TH1D *EMCALpi = GetHisto(emcalcut,"EMCALpi",1,eta,colorpi,emcalmarker,TPC,ITS,PbPb,cb,cblast);
+ cout<<endl<<endl<<"=================================PROTONS================================="<<endl;
+ TH1D *EMCALp = GetHisto(emcalcut,"EMCALp",3,eta,colork,emcalmarker,TPC,ITS,PbPb,cb,cblast);
+ cout<<endl<<endl<<"=================================KAONS================================="<<endl;
+ TH1D *EMCALk = GetHisto(emcalcut,"EMCALk",2,eta,colorp,emcalmarker,TPC,ITS,PbPb,cb,cblast);
EMCALtotal->Draw("same");
EMCALpi->Draw("same");
EMCALp->Draw("same");
line->SetLineWidth(3.0);
//line->SetLineColor(TColor::kYellow);
line->SetLineStyle(2);
- TLatex *tex = new TLatex(0.497269,0.0513196,prodname);
+ TLatex *tex = new TLatex(0.398954,0.0513196,prodname);
tex->SetTextSize(0.0537634);
tex->Draw();
TLatex *tex3 = new TLatex(1.16186,0.28348,"Closed symbols |#eta|<0.12 (PHOS)");
c->SaveAs("pics/CorrEfficiencyTPCITS.eps");
c->SaveAs("pics/CorrEfficiencyTPCITS.png");
}
+
+ if(PbPb){//make one more plot
+ //pions - no real centrality dependence
+ //three centrality bins for efficiency 0-25%, 25-50%, 50-90%
+ //use same for unidentified hadrons
+ //kaons & protons - centrality dependence is more significant but I don't think I can do better on the binning
+ int pid = 0;//h=0,pi=1,p=3,k=2
+ TCanvas *c2 = new TCanvas("c2","c2",600,400);
+ c2->SetTopMargin(0.02);
+ c2->SetRightMargin(0.02);
+ c2->SetBorderSize(0);
+ c2->SetFillColor(0);
+ c2->SetFillColor(0);
+ c2->SetBorderMode(0);
+ c2->SetFrameFillColor(0);
+ c2->SetFrameBorderMode(0);
+ cout<<endl<<endl;
+
+ TH1D *cb0 = GetHisto(phoscut,"cb0",pid,eta,1,20,TPC,ITS,PbPb,0,4);
+ TH1D *cb4 = GetHisto(phoscut,"cb5",pid,eta,4,20,TPC,ITS,PbPb,5,9);
+ //TH1D *cb9 = GetHisto(phoscut,"cb9",pid,eta,TColor::kGreen+4,20,TPC,ITS,PbPb,10,14);
+ TH1D *cb14 = GetHisto(phoscut,"cb14",pid,eta,2,20,TPC,ITS,PbPb,10,18);
+ cb0->GetXaxis()->SetRange(cb0->GetXaxis()->FindBin(0.05),cb0->GetXaxis()->FindBin(1.0));
+ cb0->SetMaximum(1.0);
+ cb0->Draw();
+ cb4->Draw("same");
+ // cb9->Draw("same");
+ cb14->Draw("same");
+ TLegend *leg = new TLegend(0.124161,0.747312,0.318792,0.959677);//(left,bottom,right,top)
+ leg->SetTextSize(0.0537634);
+ leg->SetBorderSize(0);
+ leg->SetLineColor(0);
+ leg->SetLineStyle(0);
+ leg->SetLineWidth(0);
+ leg->SetFillColor(0);
+ leg->SetFillStyle(0);
+ leg->AddEntry(cb0,"0-25%");
+ leg->AddEntry(cb4,"25-50%");
+ //leg->AddEntry(cb9,"45-50%");
+ leg->AddEntry(cb14,"50-90%");
+ leg->Draw();
+ c2->SaveAs(Form("pics/CorrEfficiency%i.png",pid));
+ }
}
// #include <TSystem.h>
// #include "TStopwatch.h"
-Float_t CorrNeutral(float ptcut, char *prodname, char *shortprodname, bool ispp = true, bool forSim = true, bool TPC, char *infilename, bool hadronic = false, float etacut = 0.7);
-TH1D *GetHistoCorrNeutral(float cut, char *name, bool ispp, bool forSim, int mycase, bool eta, int color, int marker, char *infilename, bool hadronic = false);
+Float_t CorrNeutral(float ptcut, char *prodname, char *shortprodname, bool ispp = true, bool forSim = true, bool TPC, bool hadronic = false, float etacut = 0.7);
+TH1D *GetHistoCorrNeutral(float cut, char *name, bool ispp, bool forSim, int mycase, bool eta, int color, int marker, bool hadronic = false);
-Float_t CorrPtCut(float ptcut, char *prodname = "Enter Production Name", char *shortprodname = "EnterProductionName", char *filename="Et.ESD.new.sim.merged.root", bool ispp = true, bool forSim = true);
-TH1D *GetHistoCorrPtCut(float ptcut = 0.15, char *name, char *filename, bool ispp = true, bool forSim = true);
+Float_t CorrPtCut(float ptcut, char *prodname = "Enter Production Name", char *shortprodname = "EnterProductionName", bool ispp = true, bool forSim = true, int mycase = 0);
+TH1D *GetHistoCorrPtCut(float ptcut = 0.15, char *name, bool ispp = true, bool forSim = true, int mycase);
-TH1D *GetHistoCorrNotID(float etacut,char *name, bool TPC, char *infilename, bool eta, bool ispp = true, bool forSim = true);
-TH1D *CorrNotID(float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename, bool ispp = true, bool forSim = true);
-Float_t CorrNotIDConst(float ptcut, float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename, bool ispp, bool forSim);
+TH1D *GetHistoCorrNotID(float etacut,char *name, bool TPC, bool eta, bool ispp = true, bool forSim = true);
+TH1D *CorrNotID(float etacut,char *name, char *prodname, char *shortprodname, bool TPC, bool ispp = true, bool forSim = true);
+Float_t CorrNotIDConst(float ptcut, float etacut,char *name, char *prodname, char *shortprodname, bool TPC, bool ispp, bool forSim);
-TH1D *GetHistoNoID(float etacut, char *name, char *infilename, bool eta, bool TPC, bool ispp, bool forSim);
-TH1D *CorrNoID(float etacut,char *name, char *prodname, char *shortprodname, char *infilename, bool ispp, bool forSim);
-Float_t CorrNoIDConst(float etacut, float ptcut,char *name, char *prodname, char *shortprodname, char *infilename, bool ispp, bool forSim);
+TH1D *GetHistoNoID(float etacut, char *name, bool eta, bool TPC, bool ispp, bool forSim);
+TH1D *CorrNoID(float etacut,char *name, char *prodname, char *shortprodname, bool ispp, bool forSim);
+Float_t CorrNoIDConst(float etacut, float ptcut,char *name, char *prodname, char *shortprodname, bool ispp, bool forSim);
TH1D* bayneseffdiv(TH1D* numerator, TH1D* denominator,Char_t* name);
-TH1D *GetHistoEfficiency(float cut, char *name, int mycase, int color, int marker,bool TPC, bool ITS, char *infilename);
-void CorrEfficiencyPlots(bool TPC, char *prodname, char *shortprodname, char *infilename);
-
-TH1D *GetHistoCorrBkgd(float etacut,char *name, bool TPC, char *infilename,bool ispp,bool forSim);
-void CorrBkgdPlots(char *prodname, char *shortprodname, bool TPC, char *infilename,bool ispp,bool forSim);
+TH1D *GetHistoEfficiency(float cut, char *name, int mycase, int color, int marker,bool TPC, bool ITS, int cb = -1, int cblast = -1);
+void CorrEfficiencyPlots(bool TPC, char *prodname, char *shortprodname);
+
+TH1D *GetHistoCorrBkgd(float etacut,char *name, bool TPC,bool ispp,bool forSim);
+void CorrBkgdPlots(char *prodname, char *shortprodname, bool TPC,bool ispp,bool forSim);
+
+//Some variables that we'll use multiple times. We'll declare them here since they don't seem to delete right in the functions
+char prefix[100];
+char histoname[100];
+char epsname[100];
+char pngname[100];
+TFile *file = NULL;//initiated in main function
+const char *mynameTPC = "TPC";
+const char *mynameITS = "ITS";
+const char *mynameTPCITS = "TPCITS";
+const char *detectorEMCAL = "EMCAL";
+const char *detectorPHOS = "PHOS";
+const char *reweightedNo = "";
+const char *reweightedYes = "Reweighted";
//===========================================================================================
-void GetCorrections(char *prodname = "Enter Production Name", char *shortprodname = "EnterProductionName", bool ispp = true, bool forSim = true, bool TPC = true, char *infilename="Et.ESD.new.sim.merged.root"){
+void GetCorrections(char *prodname = "Enter Production Name", char *shortprodname = "EnterProductionName", bool ispp = true, bool forSim = true, bool TPC = true, char *infilename="Et.ESD.new.sim.merged.root", int dataset = 2009){
TStopwatch timer;
timer.Start();
gSystem->Load("libTree.so");
gSystem->AddIncludePath("-I$ALICE_ROOT/include");
gROOT->ProcessLine(".L AliAnalysisEtCuts.cxx+g");
gROOT->ProcessLine(".L AliAnalysisHadEtCorrections.cxx+g");
+ file = new TFile(infilename);
char outfilename[200];
char *sim = "ForData";
hadCorrectionEMCAL->SetName("hadCorrectionEMCAL");
float etacut = 0.7;
hadCorrectionEMCAL->SetEtaCut(etacut);
+ hadCorrectionEMCAL->IsData(!forSim);
+ hadCorrectionEMCAL->IsEMCal(kTRUE);
+ hadCorrectionEMCAL->SetProduction(shortprodname);
+ hadCorrectionEMCAL->SetProductionDescription(prodname);
+ hadCorrectionEMCAL->SetDataSet(dataset);
//float etacut = hadCorrectionEMCAL->GetEtaCut();
//cout<<"eta cut is "<<etacut<<endl;
- cout<<"My name is "<<hadCorrectionEMCAL->GetName()<<endl;
hadCorrectionEMCAL->SetAcceptanceCorrectionFull(1.0);
- cout<<"Warning: Acceptance corrections will have to be updated to include real acceptance maps of the EMCAL and the PHOS"<<endl;
+ cout<<"Warning: Acceptance corrections will have to be updated to include real acceptance maps of the EMCAL"<<endl;
hadCorrectionEMCAL->SetAcceptanceCorrectionPHOS(360.0/60.0);
hadCorrectionEMCAL->SetAcceptanceCorrectionEMCAL(360.0/60.0);
float ptcut = 0.1;
- float neutralCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,infilename,false,etacut);
+ float neutralCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,false,etacut);
hadCorrectionEMCAL->SetNeutralCorrection(neutralCorr);
- cout<<"Warning: Setting neutral correction error bars to STAR value of +/-2%. Use for development purposes only!"<<endl;
- hadCorrectionEMCAL->SetNeutralCorrectionLowBound(neutralCorr*0.98);
- hadCorrectionEMCAL->SetNeutralCorrectionHighBound(neutralCorr*1.02);
-
-
- float hadronicCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,infilename,true,etacut);
+ //Using error from data, see analysis note for details
+ if(ispp){
+ hadCorrectionEMCAL->SetNeutralCorrectionLowBound(neutralCorr*(1.0-0.013));
+ hadCorrectionEMCAL->SetNeutralCorrectionHighBound(neutralCorr*(1.0+0.013));
+ }
+ else{
+ hadCorrectionEMCAL->SetNeutralCorrectionLowBound(neutralCorr*(1.0-0.049));
+ hadCorrectionEMCAL->SetNeutralCorrectionHighBound(neutralCorr*(1.0+0.049));
+ }
+
+ float hadronicCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,true,etacut);
hadCorrectionEMCAL->SetNotHadronicCorrection(hadronicCorr);
- cout<<"Warning: Setting hadronic correction error bars to value of +/-2%. Use for development purposes only!"<<endl;
- hadCorrectionEMCAL->SetNotHadronicCorrectionLowBound(neutralCorr*0.98);
- hadCorrectionEMCAL->SetNotHadronicCorrectionHighBound(neutralCorr*1.02);
-
- float ptcutITS = CorrPtCut(0.1,prodname,shortprodname,infilename,ispp,forSim);
+ if(ispp){
+ hadCorrectionEMCAL->SetNotHadronicCorrectionLowBound(hadronicCorr*(1.0-0.008));
+ hadCorrectionEMCAL->SetNotHadronicCorrectionHighBound(hadronicCorr*(1.0+0.008));
+ }
+ else{
+ hadCorrectionEMCAL->SetNotHadronicCorrectionLowBound(hadronicCorr*(1.0-0.023));
+ hadCorrectionEMCAL->SetNotHadronicCorrectionHighBound(hadronicCorr*(1.0+0.023));
+ }
+
+ float ptcutITS = CorrPtCut(0.1,prodname,shortprodname,ispp,forSim);
hadCorrectionEMCAL->SetpTCutCorrectionITS(ptcutITS);
- float ptcutTPC = CorrPtCut(0.15,prodname,shortprodname,infilename,ispp,forSim);
+ float ptcutTPC = CorrPtCut(0.15,prodname,shortprodname,ispp,forSim);
hadCorrectionEMCAL->SetpTCutCorrectionTPC(ptcutTPC);
- cout<<"Setting ITS pt cut corr to "<<ptcutITS<<endl;
- cout<<"Setting TPC pt cut corr to "<<ptcutTPC<<endl;
- cout<<"Warning: Setting pt cut correction error bars to STAR value of +/-3%. Use for development purposes only!"<<endl;
- hadCorrectionEMCAL->SetpTCutCorrectionITSLowBound(ptcutITS*0.97);
- hadCorrectionEMCAL->SetpTCutCorrectionTPCLowBound(ptcutTPC*0.97);
- hadCorrectionEMCAL->SetpTCutCorrectionITSHighBound(ptcutITS*1.03);
- hadCorrectionEMCAL->SetpTCutCorrectionTPCHighBound(ptcutTPC*1.03);
-
- TH1D *NotIDTPC = CorrNotID(etacut,"CorrNotIDEMCALTPC",prodname,shortprodname,true,infilename,ispp,forSim);
- TH1D *NotIDITS = CorrNotID(etacut,"CorrNotIDEMCALITS",prodname,shortprodname,false,infilename,ispp,forSim);
+ float ptcutITSLow = CorrPtCut(0.1,prodname,shortprodname,ispp,forSim,-1);
+ float ptcutTPCLow = CorrPtCut(0.15,prodname,shortprodname,ispp,forSim,-1);
+ hadCorrectionEMCAL->SetpTCutCorrectionITSLowBound(ptcutITSLow);
+ hadCorrectionEMCAL->SetpTCutCorrectionTPCLowBound(ptcutTPCLow);
+ float ptcutITSHigh = CorrPtCut(0.1,prodname,shortprodname,ispp,forSim,1);
+ float ptcutTPCHigh = CorrPtCut(0.15,prodname,shortprodname,ispp,forSim,1);
+ hadCorrectionEMCAL->SetpTCutCorrectionITSHighBound(ptcutITSHigh);
+ hadCorrectionEMCAL->SetpTCutCorrectionTPCHighBound(ptcutTPCHigh);
+
+ TH1D *NotIDTPC = CorrNotID(etacut,"CorrNotIDEMCALTPC",prodname,shortprodname,true,ispp,forSim);
+ TH1D *NotIDITS = CorrNotID(etacut,"CorrNotIDEMCALITS",prodname,shortprodname,false,ispp,forSim);
hadCorrectionEMCAL->SetNotIDCorrectionTPC(NotIDTPC);
hadCorrectionEMCAL->SetNotIDCorrectionITS(NotIDITS);
- Float_t NotIDConstTPC = CorrNotIDConst(0.15,etacut,"CorrNotIDEMCALTPC2",prodname,shortprodname,true,infilename,ispp,forSim);
- Float_t NotIDConstITS = CorrNotIDConst(0.10,etacut,"CorrNotIDEMCALTPC2",prodname,shortprodname,true,infilename,ispp,forSim);
+ Float_t NotIDConstTPC = CorrNotIDConst(0.15,etacut,"CorrNotIDEMCALTPC2",prodname,shortprodname,true,ispp,forSim);
+ Float_t NotIDConstITS = CorrNotIDConst(0.10,etacut,"CorrNotIDEMCALTPC2",prodname,shortprodname,true,ispp,forSim);
hadCorrectionEMCAL->SetNotIDConstCorrectionTPC(1.0/NotIDConstTPC);
hadCorrectionEMCAL->SetNotIDConstCorrectionITS(1.0/NotIDConstITS);
- cout<<"Setting constant PID corrections to "<<NotIDConstTPC<<" and "<<NotIDConstITS<<endl;
- cout<<"Warning: Setting systematic errors on constant correction from unidentified particles at 1%! For testing and development purposes only!"<<endl;
- hadCorrectionEMCAL->SetNotIDConstCorrectionTPCLowBound(1./NotIDConstTPC*.99);
- hadCorrectionEMCAL->SetNotIDConstCorrectionITSLowBound(1./NotIDConstITS*.99);
- hadCorrectionEMCAL->SetNotIDConstCorrectionTPCHighBound(1./NotIDConstTPC*1.01);
- hadCorrectionEMCAL->SetNotIDConstCorrectionITSHighBound(1./NotIDConstITS*1.01);
-
-
- TH1D *NoID = CorrNoID(etacut,"CorrNoIDEMCAL",prodname,shortprodname,infilename,ispp,forSim);
+ if(ispp){
+ hadCorrectionEMCAL->SetNotIDConstCorrectionTPCLowBound(1./NotIDConstTPC*(1.0-0.010)/0.996);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionITSLowBound(1./NotIDConstITS*(1.0-0.010)/0.996);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionTPCHighBound(1./NotIDConstTPC*(1.0+0.010)/0.996);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionITSHighBound(1./NotIDConstITS*(1.0+0.010)/0.996);
+ }
+ else{
+ hadCorrectionEMCAL->SetNotIDConstCorrectionTPCLowBound(1./NotIDConstTPC*(1.0-0.022)/0.976);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionITSLowBound(1./NotIDConstITS*(1.0-0.022)/0.976);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionTPCHighBound(1./NotIDConstTPC*(1.0+0.022)/0.976);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionITSHighBound(1./NotIDConstITS*(1.0+0.022)/0.976);
+ }
+
+ TH1D *NoID = CorrNoID(etacut,"CorrNoIDEMCAL",prodname,shortprodname,ispp,forSim);
hadCorrectionEMCAL->SetNotIDCorrectionNoPID(NoID);
- Float_t NoIDTPC = CorrNoIDConst(etacut,0.15,"CorrNoIDEMCAL2",prodname,shortprodname,infilename,ispp,forSim);
- Float_t NoIDITS = CorrNoIDConst(etacut,0.1,"CorrNoIDEMCAL2",prodname,shortprodname,infilename,ispp,forSim);
- cout<<"Setting constant PID corrections with no PID to "<<NoIDTPC<<" and "<<NoIDITS<<endl;
+ Float_t NoIDTPC = CorrNoIDConst(etacut,0.15,"CorrNoIDEMCAL2",prodname,shortprodname,ispp,forSim);
+ Float_t NoIDITS = CorrNoIDConst(etacut,0.1,"CorrNoIDEMCAL2",prodname,shortprodname,ispp,forSim);
hadCorrectionEMCAL->SetNotIDConstCorrectionTPCNoID(1./NoIDTPC);
hadCorrectionEMCAL->SetNotIDConstCorrectionITSNoID(1./NoIDITS);
- cout<<"Warning: Setting systematic errors on constant correction from unidentified particles at 2%! For testing and development purposes only!"<<endl;
- hadCorrectionEMCAL->SetNotIDConstCorrectionTPCNoIDLowBound(1./NoIDTPC*.99);
- hadCorrectionEMCAL->SetNotIDConstCorrectionITSNoIDLowBound(1./NoIDITS*.99);
- hadCorrectionEMCAL->SetNotIDConstCorrectionTPCNoIDHighBound(1./NoIDTPC*1.01);
- hadCorrectionEMCAL->SetNotIDConstCorrectionITSNoIDHighBound(1./NoIDITS*1.01);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionTPCNoIDLowBound(1./NoIDTPC*.98);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionITSNoIDLowBound(1./NoIDITS*.98);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionTPCNoIDHighBound(1./NoIDTPC*1.02);
+ hadCorrectionEMCAL->SetNotIDConstCorrectionITSNoIDHighBound(1./NoIDITS*1.02);
- TH1D *efficiencyPionTPC = GetHistoEfficiency(etacut,"hEfficiencyPionTPC",1,1,20,true,true,infilename);
+ TH1D *efficiencyPionTPC = GetHistoEfficiency(etacut,"hEfficiencyPionTPC",1,1,20,true,true);
hadCorrectionEMCAL->SetEfficiencyPionTPC(efficiencyPionTPC);
- if(!efficiencyPionTPC){cerr<<"NOOOOOOOOOOOOOOOOOO!! We have failed you, Christine!"<<endl;}
-// else{
-// hadCorrectionEMCAL->GetEfficiencyPionTPC()->Draw();
-// cout<< "My name "<<hadCorrectionEMCAL->GetEfficiencyPionTPC()->GetName() <<endl;
-// return;
-// }
-
- TH1D *efficiencyKaonTPC = GetHistoEfficiency(etacut,"hEfficiencyKaonTPC",2,1,20,true,true,infilename);
- if(!efficiencyKaonTPC){cerr<<"NOOOOOOOOOOOOOOOOOO!! We have failed you, Christine!"<<endl;}
+ TH1D *efficiencyKaonTPC = GetHistoEfficiency(etacut,"hEfficiencyKaonTPC",2,1,20,true,true);
hadCorrectionEMCAL->SetEfficiencyKaonTPC(efficiencyKaonTPC);
- TH1D *efficiencyProtonTPC = GetHistoEfficiency(etacut,"hEfficiencyProtonTPC",3,1,20,true,true,infilename);
+ TH1D *efficiencyProtonTPC = GetHistoEfficiency(etacut,"hEfficiencyProtonTPC",3,1,20,true,true);
hadCorrectionEMCAL->SetEfficiencyProtonTPC(efficiencyProtonTPC);
- TH1D *efficiencyHadronTPC = GetHistoEfficiency(etacut,"hEfficiencyHadronTPC",0,1,20,true,true,infilename);
+ TH1D *efficiencyHadronTPC = GetHistoEfficiency(etacut,"hEfficiencyHadronTPC",0,1,20,true,true);
hadCorrectionEMCAL->SetEfficiencyHadronTPC(efficiencyHadronTPC);
- TH1D *efficiencyPionITS = GetHistoEfficiency(etacut,"hEfficiencyPionITS",1,1,20,false,true,infilename);
+ TH1D *efficiencyPionITS = GetHistoEfficiency(etacut,"hEfficiencyPionITS",1,1,20,false,true);
hadCorrectionEMCAL->SetEfficiencyPionITS(efficiencyPionITS);
- TH1D *efficiencyKaonITS = GetHistoEfficiency(etacut,"hEfficiencyKaonITS",2,1,20,false,true,infilename);
+ TH1D *efficiencyKaonITS = GetHistoEfficiency(etacut,"hEfficiencyKaonITS",2,1,20,false,true);
hadCorrectionEMCAL->SetEfficiencyKaonITS(efficiencyKaonITS);
- TH1D *efficiencyProtonITS = GetHistoEfficiency(etacut,"hEfficiencyProtonITS",3,1,20,false,true,infilename);
+ TH1D *efficiencyProtonITS = GetHistoEfficiency(etacut,"hEfficiencyProtonITS",3,1,20,false,true);
hadCorrectionEMCAL->SetEfficiencyProtonITS(efficiencyProtonITS);
- TH1D *efficiencyHadronITS = GetHistoEfficiency(etacut,"hEfficiencyHadronITS",0,1,20,false,true,infilename);
+ TH1D *efficiencyHadronITS = GetHistoEfficiency(etacut,"hEfficiencyHadronITS",0,1,20,false,true);
hadCorrectionEMCAL->SetEfficiencyHadronITS(efficiencyHadronITS);
- //CorrEfficiencyPlots(true,prodname,shortprodname,infilename);
+ if(!ispp){
+ TH1D *efficiencyPionTPCCB0 = GetHistoEfficiency(etacut,"hEfficiencyPionTPCCB0",1,1,20,true,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionEMCAL->SetEfficiencyPionTPC((TH1D*)efficiencyPionTPCCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyPionTPCCB5 = GetHistoEfficiency(etacut,"hEfficiencyPionTPCCB5",1,1,20,true,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionEMCAL->SetEfficiencyPionTPC((TH1D*)efficiencyPionTPCCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyPionTPCCB10 = GetHistoEfficiency(etacut,"hEfficiencyPionTPCCB10",1,1,20,true,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionEMCAL->SetEfficiencyPionTPC((TH1D*)efficiencyPionTPCCB10->Clone(Form("Test%i",i)),i);
+
+ TH1D *efficiencyKaonTPCCB0 = GetHistoEfficiency(etacut,"hEfficiencyKaonTPCCB0",2,1,20,true,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionEMCAL->SetEfficiencyKaonTPC((TH1D*)efficiencyKaonTPCCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyKaonTPCCB5 = GetHistoEfficiency(etacut,"hEfficiencyKaonTPCCB5",2,1,20,true,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionEMCAL->SetEfficiencyKaonTPC((TH1D*)efficiencyKaonTPCCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyKaonTPCCB10 = GetHistoEfficiency(etacut,"hEfficiencyKaonTPCCB10",2,1,20,true,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionEMCAL->SetEfficiencyKaonTPC((TH1D*)efficiencyKaonTPCCB10->Clone(Form("Test%i",i)),i);//Kaon
+
+ TH1D *efficiencyProtonTPCCB0 = GetHistoEfficiency(etacut,"hEfficiencyProtonTPCCB0",3,1,20,true,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionEMCAL->SetEfficiencyProtonTPC((TH1D*)efficiencyProtonTPCCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyProtonTPCCB5 = GetHistoEfficiency(etacut,"hEfficiencyProtonTPCCB5",3,1,20,true,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionEMCAL->SetEfficiencyProtonTPC((TH1D*)efficiencyProtonTPCCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyProtonTPCCB10 = GetHistoEfficiency(etacut,"hEfficiencyProtonTPCCB10",3,1,20,true,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionEMCAL->SetEfficiencyProtonTPC((TH1D*)efficiencyProtonTPCCB10->Clone(Form("Test%i",i)),i);//Proton
+
+ TH1D *efficiencyHadronTPCCB0 = GetHistoEfficiency(etacut,"hEfficiencyHadronTPCCB0",0,1,20,true,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionEMCAL->SetEfficiencyHadronTPC((TH1D*)efficiencyHadronTPCCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyHadronTPCCB5 = GetHistoEfficiency(etacut,"hEfficiencyHadronTPCCB5",0,1,20,true,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionEMCAL->SetEfficiencyHadronTPC((TH1D*)efficiencyHadronTPCCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyHadronTPCCB10 = GetHistoEfficiency(etacut,"hEfficiencyHadronTPCCB10",0,1,20,true,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionEMCAL->SetEfficiencyHadronTPC((TH1D*)efficiencyHadronTPCCB10->Clone(Form("Test%i",i)),i);//Hadron
+
+
+ TH1D *efficiencyPionITSCB0 = GetHistoEfficiency(etacut,"hEfficiencyPionITSCB0",1,1,20,false,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionEMCAL->SetEfficiencyPionITS((TH1D*)efficiencyPionITSCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyPionITSCB5 = GetHistoEfficiency(etacut,"hEfficiencyPionITSCB5",1,1,20,false,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionEMCAL->SetEfficiencyPionITS((TH1D*)efficiencyPionITSCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyPionITSCB10 = GetHistoEfficiency(etacut,"hEfficiencyPionITSCB10",1,1,20,false,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionEMCAL->SetEfficiencyPionITS((TH1D*)efficiencyPionITSCB10->Clone(Form("Test%i",i)),i);//Pion
+
+ TH1D *efficiencyKaonITSCB0 = GetHistoEfficiency(etacut,"hEfficiencyKaonITSCB0",2,1,20,false,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionEMCAL->SetEfficiencyKaonITS((TH1D*)efficiencyKaonITSCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyKaonITSCB5 = GetHistoEfficiency(etacut,"hEfficiencyKaonITSCB5",2,1,20,false,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionEMCAL->SetEfficiencyKaonITS((TH1D*)efficiencyKaonITSCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyKaonITSCB10 = GetHistoEfficiency(etacut,"hEfficiencyKaonITSCB10",2,1,20,false,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionEMCAL->SetEfficiencyKaonITS((TH1D*)efficiencyKaonITSCB10->Clone(Form("Test%i",i)),i);//Kaon
+
+ TH1D *efficiencyProtonITSCB0 = GetHistoEfficiency(etacut,"hEfficiencyProtonITSCB0",3,1,20,false,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionEMCAL->SetEfficiencyProtonITS((TH1D*)efficiencyProtonITSCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyProtonITSCB5 = GetHistoEfficiency(etacut,"hEfficiencyProtonITSCB5",3,1,20,false,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionEMCAL->SetEfficiencyProtonITS((TH1D*)efficiencyProtonITSCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyProtonITSCB10 = GetHistoEfficiency(etacut,"hEfficiencyProtonITSCB10",3,1,20,false,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionEMCAL->SetEfficiencyProtonITS((TH1D*)efficiencyProtonITSCB10->Clone(Form("Test%i",i)),i);//Proton
+
+ TH1D *efficiencyHadronITSCB0 = GetHistoEfficiency(etacut,"hEfficiencyHadronITSCB0",0,1,20,false,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionEMCAL->SetEfficiencyHadronITS((TH1D*)efficiencyHadronITSCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyHadronITSCB5 = GetHistoEfficiency(etacut,"hEfficiencyHadronITSCB5",0,1,20,false,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionEMCAL->SetEfficiencyHadronITS((TH1D*)efficiencyHadronITSCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyHadronITSCB10 = GetHistoEfficiency(etacut,"hEfficiencyHadronITSCB10",0,1,20,false,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionEMCAL->SetEfficiencyHadronITS((TH1D*)efficiencyHadronITSCB10->Clone(Form("Test%i",i)),i);//Hadron
+ }//EMCAL
+
+ //CorrEfficiencyPlots(true,prodname,shortprodname);
//CorrEfficiencyPlots(false,prodname,shortprodname,infilename);
- hadCorrectionEMCAL->GetEfficiencyHadronTPC()->Draw();
- TH1D *backgroundTPC = GetHistoCorrBkgd(etacut,"hBackgroundTPC",true,infilename,ispp,forSim);
- TH1D *backgroundITS = GetHistoCorrBkgd(etacut,"hBackgroundITS",false,infilename,ispp,forSim);
+
+ //hadCorrectionEMCAL->GetEfficiencyHadronTPC()->Draw();
+ TH1D *backgroundTPC = GetHistoCorrBkgd(etacut,"hBackgroundTPC",true,ispp,forSim);
+ TH1D *backgroundITS = GetHistoCorrBkgd(etacut,"hBackgroundITS",false,ispp,forSim);
hadCorrectionEMCAL->SetBackgroundCorrectionTPC(backgroundTPC);
hadCorrectionEMCAL->SetBackgroundCorrectionITS(backgroundITS);
- CorrBkgdPlots(prodname,shortprodname,true,infilename,ispp,forSim);
- CorrBkgdPlots(prodname,shortprodname,false,infilename,ispp,forSim);
+ //CorrBkgdPlots(prodname,shortprodname,true,ispp,forSim);
+ //CorrBkgdPlots(prodname,shortprodname,false,ispp,forSim);
+
+ hadCorrectionEMCAL->Report();
outfile->cd();
hadCorrectionEMCAL->Write();
hadCorrectionPHOS->SetName("hadCorrectionPHOS");
float etacut = 0.12;
hadCorrectionPHOS->SetEtaCut(etacut);
+ hadCorrectionPHOS->IsData(!forSim);
+ hadCorrectionPHOS->IsEMCal(kTRUE);
+ hadCorrectionPHOS->SetProduction(shortprodname);
+ hadCorrectionPHOS->SetProductionDescription(prodname);
+ hadCorrectionPHOS->SetDataSet(dataset);
//float etacut = hadCorrectionPHOS->GetEtaCut();
//cout<<"eta cut is "<<etacut<<endl;
- cout<<"My name is "<<hadCorrectionPHOS->GetName()<<endl;
hadCorrectionPHOS->SetAcceptanceCorrectionFull(1.0);
- cout<<"Warning: Acceptance corrections will have to be updated to include real acceptance maps of the PHOS and the PHOS"<<endl;
+ cout<<"Warning: Acceptance corrections will have to be updated to include real acceptance maps of the PHOS"<<endl;
hadCorrectionPHOS->SetAcceptanceCorrectionPHOS(360.0/60.0);
hadCorrectionPHOS->SetAcceptanceCorrectionEMCAL(360.0/60.0);
float ptcut = 0.1;
- float neutralCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,infilename,false,etacut);
+ float neutralCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,false,etacut);
hadCorrectionPHOS->SetNeutralCorrection(neutralCorr);
- cout<<"Warning: Setting neutral correction error bars to STAR value of +/-2%. Use for development purposes only!"<<endl;
- hadCorrectionPHOS->SetNeutralCorrectionLowBound(neutralCorr*0.98);
- hadCorrectionPHOS->SetNeutralCorrectionHighBound(neutralCorr*1.02);
-
-
- float hadronicCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,infilename,true,etacut);
+ //Using error from data, see analysis note for details
+ if(ispp){
+ hadCorrectionPHOS->SetNeutralCorrectionLowBound(neutralCorr*(1.0-.013)/0.736);
+ hadCorrectionPHOS->SetNeutralCorrectionHighBound(neutralCorr*(1.0+.013)/0.736);
+ }
+ else{
+ hadCorrectionPHOS->SetNeutralCorrectionLowBound(neutralCorr*(1.0-0.049)/0.689);
+ hadCorrectionPHOS->SetNeutralCorrectionHighBound(neutralCorr*(1.0+0.049)/0.689);
+ }
+
+ float hadronicCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,true,etacut);
hadCorrectionPHOS->SetNotHadronicCorrection(hadronicCorr);
- cout<<"Warning: Setting hadronic correction error bars to value of +/-2%. Use for development purposes only!"<<endl;
- hadCorrectionPHOS->SetNotHadronicCorrectionLowBound(neutralCorr*0.98);
- hadCorrectionPHOS->SetNotHadronicCorrectionHighBound(neutralCorr*1.02);
-
-
- float ptcutITS = CorrPtCut(0.1,prodname,shortprodname,infilename,ispp,forSim);
+ if(ispp){
+ hadCorrectionPHOS->SetNotHadronicCorrectionLowBound(neutralCorr*(1.0-0.008)/0.571);
+ hadCorrectionPHOS->SetNotHadronicCorrectionHighBound(neutralCorr*(1.0+0.008)/0.571);
+ }
+ else{
+ hadCorrectionPHOS->SetNotHadronicCorrectionLowBound(neutralCorr*(1.0-0.023)/0.549);
+ hadCorrectionPHOS->SetNotHadronicCorrectionHighBound(neutralCorr*(1.0+0.023)/0.549);
+ }
+
+ float ptcutITS = CorrPtCut(0.1,prodname,shortprodname,ispp,forSim);
hadCorrectionPHOS->SetpTCutCorrectionITS(ptcutITS);
- float ptcutTPC = CorrPtCut(0.15,prodname,shortprodname,infilename,ispp,forSim);
+ float ptcutTPC = CorrPtCut(0.15,prodname,shortprodname,ispp,forSim);
hadCorrectionPHOS->SetpTCutCorrectionTPC(ptcutTPC);
- cout<<"Warning: Setting pt cut correction error bars to STAR value of +/-3%. Use for development purposes only!"<<endl;
- hadCorrectionPHOS->SetpTCutCorrectionITSLowBound(ptcutITS*0.97);
- hadCorrectionPHOS->SetpTCutCorrectionTPCLowBound(ptcutTPC*0.97);
- hadCorrectionPHOS->SetpTCutCorrectionITSHighBound(ptcutITS*1.03);
- hadCorrectionPHOS->SetpTCutCorrectionTPCHighBound(ptcutTPC*1.03);
-
- TH1D *NotIDTPC = CorrNotID(etacut,"CorrNotIDPHOSTPC",prodname,shortprodname,true,infilename,ispp,forSim);
- TH1D *NotIDITS = CorrNotID(etacut,"CorrNotIDPHOSITS",prodname,shortprodname,false,infilename,ispp,forSim);
+
+ float ptcutITSLow = CorrPtCut(0.1,prodname,shortprodname,ispp,forSim,-1);
+ float ptcutTPCLow = CorrPtCut(0.15,prodname,shortprodname,ispp,forSim,-1);
+ hadCorrectionPHOS->SetpTCutCorrectionITSLowBound(ptcutITSLow);
+ hadCorrectionPHOS->SetpTCutCorrectionTPCLowBound(ptcutTPCLow);
+ float ptcutITSHigh = CorrPtCut(0.1,prodname,shortprodname,ispp,forSim,1);
+ float ptcutTPCHigh = CorrPtCut(0.15,prodname,shortprodname,ispp,forSim,1);
+ hadCorrectionPHOS->SetpTCutCorrectionITSHighBound(ptcutITSHigh);
+ hadCorrectionPHOS->SetpTCutCorrectionTPCHighBound(ptcutTPCHigh);
+
+ TH1D *NotIDTPC = CorrNotID(etacut,"CorrNotIDPHOSTPC",prodname,shortprodname,true,ispp,forSim);
+ TH1D *NotIDITS = CorrNotID(etacut,"CorrNotIDPHOSITS",prodname,shortprodname,false,ispp,forSim);
hadCorrectionPHOS->SetNotIDCorrectionTPC(NotIDTPC);
hadCorrectionPHOS->SetNotIDCorrectionITS(NotIDITS);
- Float_t NotIDConstTPC = CorrNotIDConst(0.15,etacut,"CorrNotIDPHOSTPC2",prodname,shortprodname,true,infilename,ispp,forSim);
- Float_t NotIDConstITS = CorrNotIDConst(0.10,etacut,"CorrNotIDPHOSTPC2",prodname,shortprodname,true,infilename,ispp,forSim);
+ Float_t NotIDConstTPC = CorrNotIDConst(0.15,etacut,"CorrNotIDPHOSTPC2",prodname,shortprodname,true,ispp,forSim);
+ Float_t NotIDConstITS = CorrNotIDConst(0.10,etacut,"CorrNotIDPHOSTPC2",prodname,shortprodname,true,ispp,forSim);
hadCorrectionPHOS->SetNotIDConstCorrectionTPC(1./NotIDConstTPC);
hadCorrectionPHOS->SetNotIDConstCorrectionITS(1./NotIDConstITS);
- cout<<"Warning: Setting systematic errors on constant correction from unidentified particles at 1%! For testing and development purposes only!"<<endl;
- hadCorrectionPHOS->SetNotIDConstCorrectionTPCLowBound(1./NotIDConstTPC*.99);
- hadCorrectionPHOS->SetNotIDConstCorrectionITSLowBound(1./NotIDConstITS*.99);
- hadCorrectionPHOS->SetNotIDConstCorrectionTPCHighBound(1./NotIDConstTPC*1.01);
- hadCorrectionPHOS->SetNotIDConstCorrectionITSHighBound(1./NotIDConstITS*1.01);
-
-
- TH1D *NoID = CorrNoID(etacut,"CorrNoIDPHOS",prodname,shortprodname,infilename,ispp,forSim);
+ if(ispp){
+ hadCorrectionPHOS->SetNotIDConstCorrectionTPCLowBound(1./NotIDConstTPC*(1.0-0.010)/0.996);
+ hadCorrectionPHOS->SetNotIDConstCorrectionITSLowBound(1./NotIDConstITS*(1.0-0.010)/0.996);
+ hadCorrectionPHOS->SetNotIDConstCorrectionTPCHighBound(1./NotIDConstTPC*(1.0+0.010)/0.996);
+ hadCorrectionPHOS->SetNotIDConstCorrectionITSHighBound(1./NotIDConstITS*(1.0+0.010)/0.996);
+ }
+ else{
+ hadCorrectionPHOS->SetNotIDConstCorrectionTPCLowBound(1./NotIDConstTPC*(1.0-0.022)/0.976);
+ hadCorrectionPHOS->SetNotIDConstCorrectionITSLowBound(1./NotIDConstITS*(1.0-0.022)/0.976);
+ hadCorrectionPHOS->SetNotIDConstCorrectionTPCHighBound(1./NotIDConstTPC*(1.0+0.022)/0.976);
+ hadCorrectionPHOS->SetNotIDConstCorrectionITSHighBound(1./NotIDConstITS*(1.0+0.022)/0.976);
+ }
+
+
+ TH1D *NoID = CorrNoID(etacut,"CorrNoIDPHOS",prodname,shortprodname,ispp,forSim);
hadCorrectionPHOS->SetNotIDCorrectionNoPID(NoID);
- Float_t NoIDTPC = CorrNoIDConst(etacut,0.15,"CorrNoIDPHOS2",prodname,shortprodname,infilename,ispp,forSim);
- Float_t NoIDITS = CorrNoIDConst(etacut,0.1,"CorrNoIDPHOS2",prodname,shortprodname,infilename,ispp,forSim);
- cout<<"Setting constant PID corrections with no PID to "<<NoIDTPC<<" and "<<NoIDITS<<endl;
+ Float_t NoIDTPC = CorrNoIDConst(etacut,0.15,"CorrNoIDPHOS2",prodname,shortprodname,ispp,forSim);
+ Float_t NoIDITS = CorrNoIDConst(etacut,0.1,"CorrNoIDPHOS2",prodname,shortprodname,ispp,forSim);
hadCorrectionPHOS->SetNotIDConstCorrectionTPCNoID(1./NoIDTPC);
hadCorrectionPHOS->SetNotIDConstCorrectionITSNoID(1./NoIDITS);
- cout<<"Warning: Setting systematic errors on constant correction from unidentified particles at 2%! For testing and development purposes only!"<<endl;
- hadCorrectionPHOS->SetNotIDConstCorrectionTPCNoIDLowBound(1./NoIDTPC*.99);
- hadCorrectionPHOS->SetNotIDConstCorrectionITSNoIDLowBound(1./NoIDITS*.99);
- hadCorrectionPHOS->SetNotIDConstCorrectionTPCNoIDHighBound(1./NoIDTPC*1.01);
- hadCorrectionPHOS->SetNotIDConstCorrectionITSNoIDHighBound(1./NoIDITS*1.01);
-
- TH1D *efficiencyPionTPC = GetHistoEfficiency(etacut,"hEfficiencyPionTPC",1,1,20,true,true,infilename);
- TH1D *efficiencyKaonTPC = GetHistoEfficiency(etacut,"hEfficiencyKaonTPC",2,1,20,true,true,infilename);
- TH1D *efficiencyProtonTPC = GetHistoEfficiency(etacut,"hEfficiencyProtonTPC",3,1,20,true,true,infilename);
- TH1D *efficiencyHadronTPC = GetHistoEfficiency(etacut,"hEfficiencyHadronTPC",0,1,20,true,true,infilename);
- TH1D *efficiencyPionITS = GetHistoEfficiency(etacut,"hEfficiencyPionITS",1,1,20,false,true,infilename);
- TH1D *efficiencyKaonITS = GetHistoEfficiency(etacut,"hEfficiencyKaonITS",2,1,20,false,true,infilename);
- TH1D *efficiencyProtonITS = GetHistoEfficiency(etacut,"hEfficiencyProtonITS",3,1,20,false,true,infilename);
- TH1D *efficiencyHadronITS = GetHistoEfficiency(etacut,"hEfficiencyHadronITS",0,1,20,false,true,infilename);
- //CorrEfficiencyPlots(true,prodname,shortprodname,infilename);
- //CorrEfficiencyPlots(false,prodname,shortprodname,infilename);
+ hadCorrectionPHOS->SetNotIDConstCorrectionTPCNoIDLowBound(1./NoIDTPC*.98);
+ hadCorrectionPHOS->SetNotIDConstCorrectionITSNoIDLowBound(1./NoIDITS*.98);
+ hadCorrectionPHOS->SetNotIDConstCorrectionTPCNoIDHighBound(1./NoIDTPC*1.02);
+ hadCorrectionPHOS->SetNotIDConstCorrectionITSNoIDHighBound(1./NoIDITS*1.02);
+
+ TH1D *efficiencyPionTPC = GetHistoEfficiency(etacut,"hEfficiencyPionTPC",1,1,20,true,true);
+ TH1D *efficiencyKaonTPC = GetHistoEfficiency(etacut,"hEfficiencyKaonTPC",2,1,20,true,true);
+ TH1D *efficiencyProtonTPC = GetHistoEfficiency(etacut,"hEfficiencyProtonTPC",3,1,20,true,true);
+ TH1D *efficiencyHadronTPC = GetHistoEfficiency(etacut,"hEfficiencyHadronTPC",0,1,20,true,true);
+ TH1D *efficiencyPionITS = GetHistoEfficiency(etacut,"hEfficiencyPionITS",1,1,20,false,true);
+ TH1D *efficiencyKaonITS = GetHistoEfficiency(etacut,"hEfficiencyKaonITS",2,1,20,false,true);
+ TH1D *efficiencyProtonITS = GetHistoEfficiency(etacut,"hEfficiencyProtonITS",3,1,20,false,true);
+ TH1D *efficiencyHadronITS = GetHistoEfficiency(etacut,"hEfficiencyHadronITS",0,1,20,false,true);
+ //CorrEfficiencyPlots(true,prodname,shortprodname);
+ //CorrEfficiencyPlots(false,prodname,shortprodname);
hadCorrectionPHOS->SetEfficiencyPionTPC(efficiencyPionTPC);
hadCorrectionPHOS->SetEfficiencyKaonTPC(efficiencyKaonTPC);
hadCorrectionPHOS->SetEfficiencyProtonTPC(efficiencyProtonTPC);
hadCorrectionPHOS->SetEfficiencyProtonITS(efficiencyProtonITS);
hadCorrectionPHOS->SetEfficiencyHadronITS(efficiencyHadronITS);
- TH1D *backgroundTPC = GetHistoCorrBkgd(etacut,"hBackgroundTPC",true,infilename,ispp,forSim);
- TH1D *backgroundITS = GetHistoCorrBkgd(etacut,"hBackgroundITS",false,infilename,ispp,forSim);
+
+ if(!ispp){
+ TH1D *efficiencyPionTPCCB0 = GetHistoEfficiency(etacut,"hEfficiencyPionTPCCB0",1,1,20,true,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionPHOS->SetEfficiencyPionTPC((TH1D*)efficiencyPionTPCCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyPionTPCCB5 = GetHistoEfficiency(etacut,"hEfficiencyPionTPCCB5",1,1,20,true,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionPHOS->SetEfficiencyPionTPC((TH1D*)efficiencyPionTPCCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyPionTPCCB10 = GetHistoEfficiency(etacut,"hEfficiencyPionTPCCB10",1,1,20,true,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionPHOS->SetEfficiencyPionTPC((TH1D*)efficiencyPionTPCCB10->Clone(Form("Test%i",i)),i);
+
+ TH1D *efficiencyKaonTPCCB0 = GetHistoEfficiency(etacut,"hEfficiencyKaonTPCCB0",2,1,20,true,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionPHOS->SetEfficiencyKaonTPC((TH1D*)efficiencyKaonTPCCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyKaonTPCCB5 = GetHistoEfficiency(etacut,"hEfficiencyKaonTPCCB5",2,1,20,true,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionPHOS->SetEfficiencyKaonTPC((TH1D*)efficiencyKaonTPCCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyKaonTPCCB10 = GetHistoEfficiency(etacut,"hEfficiencyKaonTPCCB10",2,1,20,true,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionPHOS->SetEfficiencyKaonTPC((TH1D*)efficiencyKaonTPCCB10->Clone(Form("Test%i",i)),i);//Kaon
+
+ TH1D *efficiencyProtonTPCCB0 = GetHistoEfficiency(etacut,"hEfficiencyProtonTPCCB0",3,1,20,true,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionPHOS->SetEfficiencyProtonTPC((TH1D*)efficiencyProtonTPCCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyProtonTPCCB5 = GetHistoEfficiency(etacut,"hEfficiencyProtonTPCCB5",3,1,20,true,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionPHOS->SetEfficiencyProtonTPC((TH1D*)efficiencyProtonTPCCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyProtonTPCCB10 = GetHistoEfficiency(etacut,"hEfficiencyProtonTPCCB10",3,1,20,true,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionPHOS->SetEfficiencyProtonTPC((TH1D*)efficiencyProtonTPCCB10->Clone(Form("Test%i",i)),i);//Proton
+
+ TH1D *efficiencyHadronTPCCB0 = GetHistoEfficiency(etacut,"hEfficiencyHadronTPCCB0",0,1,20,true,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionPHOS->SetEfficiencyHadronTPC((TH1D*)efficiencyHadronTPCCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyHadronTPCCB5 = GetHistoEfficiency(etacut,"hEfficiencyHadronTPCCB5",0,1,20,true,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionPHOS->SetEfficiencyHadronTPC((TH1D*)efficiencyHadronTPCCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyHadronTPCCB10 = GetHistoEfficiency(etacut,"hEfficiencyHadronTPCCB10",0,1,20,true,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionPHOS->SetEfficiencyHadronTPC((TH1D*)efficiencyHadronTPCCB10->Clone(Form("Test%i",i)),i);//Hadron
+
+
+ TH1D *efficiencyPionITSCB0 = GetHistoEfficiency(etacut,"hEfficiencyPionITSCB0",1,1,20,false,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionPHOS->SetEfficiencyPionITS((TH1D*)efficiencyPionITSCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyPionITSCB5 = GetHistoEfficiency(etacut,"hEfficiencyPionITSCB5",1,1,20,false,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionPHOS->SetEfficiencyPionITS((TH1D*)efficiencyPionITSCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyPionITSCB10 = GetHistoEfficiency(etacut,"hEfficiencyPionITSCB10",1,1,20,false,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionPHOS->SetEfficiencyPionITS((TH1D*)efficiencyPionITSCB10->Clone(Form("Test%i",i)),i);//Pion
+
+ TH1D *efficiencyKaonITSCB0 = GetHistoEfficiency(etacut,"hEfficiencyKaonITSCB0",2,1,20,false,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionPHOS->SetEfficiencyKaonITS((TH1D*)efficiencyKaonITSCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyKaonITSCB5 = GetHistoEfficiency(etacut,"hEfficiencyKaonITSCB5",2,1,20,false,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionPHOS->SetEfficiencyKaonITS((TH1D*)efficiencyKaonITSCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyKaonITSCB10 = GetHistoEfficiency(etacut,"hEfficiencyKaonITSCB10",2,1,20,false,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionPHOS->SetEfficiencyKaonITS((TH1D*)efficiencyKaonITSCB10->Clone(Form("Test%i",i)),i);//Kaon
+
+ TH1D *efficiencyProtonITSCB0 = GetHistoEfficiency(etacut,"hEfficiencyProtonITSCB0",3,1,20,false,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionPHOS->SetEfficiencyProtonITS((TH1D*)efficiencyProtonITSCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyProtonITSCB5 = GetHistoEfficiency(etacut,"hEfficiencyProtonITSCB5",3,1,20,false,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionPHOS->SetEfficiencyProtonITS((TH1D*)efficiencyProtonITSCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyProtonITSCB10 = GetHistoEfficiency(etacut,"hEfficiencyProtonITSCB10",3,1,20,false,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionPHOS->SetEfficiencyProtonITS((TH1D*)efficiencyProtonITSCB10->Clone(Form("Test%i",i)),i);//Proton
+
+ TH1D *efficiencyHadronITSCB0 = GetHistoEfficiency(etacut,"hEfficiencyHadronITSCB0",0,1,20,false,true,0,4);
+ for(int i=0;i<=4;i++) hadCorrectionPHOS->SetEfficiencyHadronITS((TH1D*)efficiencyHadronITSCB0->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyHadronITSCB5 = GetHistoEfficiency(etacut,"hEfficiencyHadronITSCB5",0,1,20,false,true,5,9);
+ for(int i=5;i<=9;i++) hadCorrectionPHOS->SetEfficiencyHadronITS((TH1D*)efficiencyHadronITSCB5->Clone(Form("Test%i",i)),i);
+ TH1D *efficiencyHadronITSCB10 = GetHistoEfficiency(etacut,"hEfficiencyHadronITSCB10",0,1,20,false,true,10,15);
+ for(int i=10;i<=19;i++) hadCorrectionPHOS->SetEfficiencyHadronITS((TH1D*)efficiencyHadronITSCB10->Clone(Form("Test%i",i)),i);//Hadron
+ }//EMCAL
+
+ TH1D *backgroundTPC = GetHistoCorrBkgd(etacut,"hBackgroundTPC",true,ispp,forSim);
+ TH1D *backgroundITS = GetHistoCorrBkgd(etacut,"hBackgroundITS",false,ispp,forSim);
hadCorrectionPHOS->SetBackgroundCorrectionTPC(backgroundTPC);
hadCorrectionPHOS->SetBackgroundCorrectionITS(backgroundITS);
- CorrBkgdPlots(prodname,shortprodname,true,infilename,ispp,forSim);
- CorrBkgdPlots(prodname,shortprodname,false,infilename,ispp,forSim);
+ CorrBkgdPlots(prodname,shortprodname,true,ispp,forSim);
+ CorrBkgdPlots(prodname,shortprodname,false,ispp,forSim);
+ hadCorrectionPHOS->Report();
//Write the output
outfile->cd();
hadCorrectionPHOS->Write();
outfile->Write();
outfile->Close();
- TFile *junk = new TFile("junk.root","RECREATE");
- efficiencyPionTPC->Write();
- junk->Write();
- junk->Close();
timer.Stop();
timer.Print();
}
//==================================CorrNeutral==============================================
-Float_t CorrNeutral(float ptcut, char *prodname, char *shortprodname, bool ispp, bool forSim, bool TPC, char *infilename, bool hadronic, float etacut){
+Float_t CorrNeutral(float ptcut, char *prodname, char *shortprodname, bool ispp, bool forSim, bool TPC, bool hadronic, float etacut){
+ if(!forSim){//for data we have evaluated the neutral correction from ALICE data
+ if(hadronic){//for tot et from had et
+ if(ispp){
+ return 1.0/0.571;
+ }
+ else{
+ return 1.0/0.549;
+ }
+ }
+ else{//for had et only
+ if(ispp){
+ return 1.0/0.736;
+ }
+ else{
+ return 1.0/0.689;
+ }
+ }
+ }
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
gStyle->SetOptFit(0);
int phosmarker = 20;
- char prefix[100];
sprintf(prefix,"%s%2.1f",shortprodname,ptcut);
- char histoname[100];
sprintf(histoname,"%stotal",histoname);
int colortotal = 1;
int casetotal = 4;
if(hadronic) casetotal = 8;
- TH1D *total = GetHistoCorrNeutral(ptcut,histoname,ispp,forSim,casetotal,false,colortotal,phosmarker,infilename,hadronic);
+ TH1D *total = GetHistoCorrNeutral(ptcut,histoname,ispp,forSim,casetotal,false,colortotal,phosmarker,hadronic);
int colorallneutral = 2;
- TH1D *allneutral = GetHistoCorrNeutral(ptcut,"allneutral",ispp,forSim,3,false,colorallneutral,phosmarker,infilename,hadronic);
+ TH1D *allneutral = GetHistoCorrNeutral(ptcut,"allneutral",ispp,forSim,3,false,colorallneutral,phosmarker,hadronic);
int colorchargedsecondary = TColor::kViolet-3;
- TH1D *chargedsecondary = GetHistoCorrNeutral(ptcut,"chargedsecondary",ispp,forSim,2,false,colorchargedsecondary,phosmarker,infilename,hadronic);
+ TH1D *chargedsecondary = GetHistoCorrNeutral(ptcut,"chargedsecondary",ispp,forSim,2,false,colorchargedsecondary,phosmarker,hadronic);
int colorneutralUndet = 4;
- TH1D *neutralUndet = GetHistoCorrNeutral(ptcut,"neutralUndet",ispp,forSim,1,false,colorneutralUndet,phosmarker,infilename,hadronic);
+ TH1D *neutralUndet = GetHistoCorrNeutral(ptcut,"neutralUndet",ispp,forSim,1,false,colorneutralUndet,phosmarker,hadronic);
int colorv0 = TColor::kGreen+2;
- TH1D *v0 = GetHistoCorrNeutral(ptcut,"v0",ispp,forSim,0,false,colorv0,phosmarker,infilename,hadronic);
+ TH1D *v0 = GetHistoCorrNeutral(ptcut,"v0",ispp,forSim,0,false,colorv0,phosmarker,hadronic);
int colorem = TColor::kCyan;
- TH1D *em = GetHistoCorrNeutral(ptcut,"em",ispp,forSim,9,false,colorem,phosmarker,infilename,hadronic);
+ TH1D *em = GetHistoCorrNeutral(ptcut,"em",ispp,forSim,9,false,colorem,phosmarker,hadronic);
TF1 *func = new TF1("func","[0]",-.7,.7);
func->SetParameter(0,0.2);
leg2->SetBorderSize(0);
leg2->SetTextSize(0.0548607);
leg2->Draw();
- char epsname[100];
- char pngname[100];
if(hadronic){
sprintf(epsname,"pics/%s/fhadronic.eps",shortprodname);
sprintf(pngname,"pics/%s/fhadronic.png",shortprodname);
c->SaveAs(epsname);
c->SaveAs(pngname);
-
delete total;
delete allneutral;
delete chargedsecondary;
delete v0;
delete em;
delete c;
-
float corr = func->GetParameter(0);
- //cout<<"Neutral correction: "<<1.0/(1.0-corr)<<endl;
delete func;
+ delete tex;
+ delete leg2;
return 1.0/(1.0-corr);
}
-TH1D *GetHistoCorrNeutral(float cut, char *name, bool ispp, bool forSim, int mycase, bool eta, int color, int marker, char *infilename, bool hadronic){
- TFile *file = new TFile(infilename);
- TList *list = file->FindObject("out2");
+TH1D *GetHistoCorrNeutral(float cut, char *name, bool ispp, bool forSim, int mycase, bool eta, int color, int marker, bool hadronic){
+ file->cd();
char *reweightname = "";
if(!forSim) reweightname = "Reweighted";
TH2F *numeratorParent;
delete numeratorParent;
delete allhad;
//file->Close();
+ numerator->SetName(name);
return numerator;
}
//===============================CorrPtCut=========================================
-TH1D *GetHistoCorrPtCut(float ptcut, char *name, char *filename, bool ispp, bool forSim){
- TFile *file = new TFile(filename);
- TList *list = file->FindObject("out2");
+TH1D *GetHistoCorrPtCut(float ptcut, char *name, bool ispp, bool forSim, int mycase){
+ file->cd();
TH2F *allhad = ((TH2F*) out2->FindObject("EtSimulatedAllHadron"))->Clone("allhad");
+ TH2F *ptlow = ((TH2F*) out2->FindObject("EtSimulatedChargedHadronAssumingNoPt"))->Clone("ptlow");
+ TH2F *pthigh;
+ if(ptcut>0.14){//TPC cut off
+ (TH2F*)pthigh =(TH2F*) ((TH2F*) out2->FindObject("EtSimulatedChargedHadronAssumingPtTPCCut"))->Clone("pthigh");
+ }
+ else{
+ (TH2F*)pthigh =(TH2F*) ((TH2F*) out2->FindObject("EtSimulatedChargedHadronAssumingPtITSCut"))->Clone("pthigh");
+ }
int lowbin = allhad->GetXaxis()->FindBin(0.0);//make sure we don't accidentally get the wrong bin
int highbin = allhad->GetXaxis()->FindBin(ptcut);
//cout<<"Projecting from "<<allhad->GetXaxis()->GetBinLowEdge(lowbin)<<" to "<<allhad->GetXaxis()->GetBinLowEdge(nbins)<<endl;
//allhad->Sumw2();
-
- TH1D *numerator = allhad->ProjectionY("name",lowbin,highbin);
- TH1D *denominator = allhad->ProjectionY("denominator",lowbin,nbins);
+ TH1D *numerator;
+ TH1D *denominator;
+ switch(mycase){
+ case -1:
+ numerator = ptlow->ProjectionY("nameLow",lowbin,highbin);
+ denominator = allhad->ProjectionY("denominatorLow",highbin,nbins);
+ denominator->Add(ptlow);
+ break;
+ case 1:
+ numerator = pthigh->ProjectionY("nameHigh",lowbin,highbin);
+ denominator = allhad->ProjectionY("denominatorHigh",highbin,nbins);
+ denominator->Add(pthigh);
+ break;
+ default:
+ numerator = allhad->ProjectionY("name",lowbin,highbin);
+ denominator = allhad->ProjectionY("denominator",lowbin,nbins);
+ }
numerator->Divide(denominator);
numerator->SetYTitle("E_{T}^{had, p_{T}<cut-off}/E_{T}^{had, all p_{T}}");
numerator->GetYaxis()->SetTitleOffset(1.);
//numerator->Draw("e");
delete allhad;
delete denominator;
-
+ delete ptlow;
+ delete pthigh;
+ numerator->SetName(name);
return numerator;
}
-Float_t CorrPtCut(float ptcut, char *prodname, char *shortprodname, char *filename, bool ispp, bool forSim){
+Float_t CorrPtCut(float ptcut, char *prodname, char *shortprodname, bool ispp, bool forSim, int mycase){
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
- TH1D *High = GetHistoCorrPtCut(0.15-.001,"High",filename);
- TH1D *Low = GetHistoCorrPtCut(0.1-.001,"Low",filename);
- TH1D *Lowest = GetHistoCorrPtCut(0.05-.001,"Lowest",filename);
+ TH1D *High = GetHistoCorrPtCut(0.15-.001,"High",ispp,forSim,mycase);
+ TH1D *Low = GetHistoCorrPtCut(0.1-.001,"Low",ispp,forSim,mycase);
+ TH1D *Lowest = GetHistoCorrPtCut(0.05-.001,"Lowest",ispp,forSim,mycase);
TF1 *func = new TF1("func","[0]",-.7,.7);
func->SetParameter(0,0.2);
delete Lowest;
delete func;
delete c;
+ delete tex;
+ delete leg;
return 1.0/(1.0-corr);
}
//==================================CorrNotID=================================================
-TH1D *GetHistoCorrNotID(float etacut,char *name, bool TPC, char *infilename, bool eta, bool ispp, bool forSim){
- TFile *file = new TFile(infilename);
- TList *list = file->FindObject("out2");
- char *myname = "ITS";
- if(TPC) myname = "TPC";
+TH1D *GetHistoCorrNotID(float etacut,char *name, bool TPC, bool eta, bool ispp, bool forSim){
+ file->cd();
+ char *myname = mynameITS;
+ if(TPC) myname = mynameTPC;
TH2F *notid = ((TH2F*) out2->FindObject(Form("EtReconstructed%sUnidentifiedAssumingPion",myname)))->Clone("notid");
TH2F *nNotid = ((TH2F*) out2->FindObject(Form("EtNReconstructed%sUnidentified",myname)))->Clone("nNotid");
if(!eta){
- cout<<"Correction determined for all charged hadrons"<<endl;
+ //cout<<"Correction determined for all charged hadrons"<<endl;
notid->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sIdentifiedPiPlus",myname)));
notid->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sIdentifiedPiMinus",myname)));
notid->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sIdentifiedKPlus",myname)));
if(eta){
int lowbin = notid->GetYaxis()->FindBin(-etacut+.001);//make sure we don't accv0entally get the wrong bin
int highbin = notid->GetYaxis()->FindBin(etacut-.001);
- cout<<"Projecting from "<<notid->GetYaxis()->GetBinLowEdge(lowbin)<<" to "<<notid->GetYaxis()->GetBinLowEdge(highbin+1)<<endl;
+ //cout<<"Projecting from "<<notid->GetYaxis()->GetBinLowEdge(lowbin)<<" to "<<notid->GetYaxis()->GetBinLowEdge(highbin+1)<<endl;
denominator = id->ProjectionX("name",lowbin,highbin);
numerator = notid->ProjectionX("numerator",lowbin,highbin);
nNotidProj = nNotid->ProjectionX("nNotidProj",lowbin,highbin);
}
else{
- cout<<"Getting eta dependence"<<endl;
+ //cout<<"Getting eta dependence"<<endl;
int lowbin = id->GetXaxis()->FindBin(etacut);//make sure we don't accidentally get the wrong bin
int highbin;
if(etacut<0.15){//then we actually have ITS standalone tracks and we only want this to run from 0.1 to 0.15 because this will be used only for ITS standalone tracks
else{
highbin = id->GetXaxis()->GetNbins();
}
- cout<<"Projecting from "<<id->GetXaxis()->GetBinLowEdge(lowbin)<<" to "<<id->GetXaxis()->GetBinLowEdge(highbin+1)<<endl;
+ //cout<<"Projecting from "<<id->GetXaxis()->GetBinLowEdge(lowbin)<<" to "<<id->GetXaxis()->GetBinLowEdge(highbin+1)<<endl;
numerator = notid->ProjectionY("name",lowbin,highbin);
denominator = id->ProjectionY("denominator",lowbin,highbin);
nNotidProj = nNotid->ProjectionY("nNotidProj",lowbin,highbin);
result->GetYaxis()->SetTitleOffset(1.2);
delete denominator;
delete nNotidProj;
+ delete notid;
+ delete nNotid;
+ delete id;
+ result->SetName(name);
return result;
}
-TH1D *CorrNotID(float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename, bool ispp, bool forSim){
+TH1D *CorrNotID(float etacut,char *name, char *prodname, char *shortprodname, bool TPC, bool ispp, bool forSim){
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
gStyle->SetOptFit(0);
c->SetFrameFillColor(0);
c->SetFrameBorderMode(0);
- TH1D *PHOS = GetHistoCorrNotID(etacut,name,TPC,infilename,true,ispp,forSim);
+ TH1D *PHOS = GetHistoCorrNotID(etacut,name,TPC,true,ispp,forSim);
PHOS->SetMarkerColor(2);
PHOS->SetLineColor(2);
PHOS->SetAxisRange(0.0,4);
TLatex *tex = new TLatex(0.161478,1.0835,prodname);
tex->SetTextSize(0.0537634);
tex->Draw();
- char epsname[100];
- char pngname[100];
- char *detector = "EMCAL";
- if(etacut<0.2) detector = "PHOS";
+ char *detector = detectorEMCAL;
+ if(etacut<0.2) detector = detectorPHOS;
if(TPC){
sprintf(epsname,"pics/%s/fnotidTPC%s.eps",shortprodname,detector);
sprintf(pngname,"pics/%s/fnotidTPC%s.png",shortprodname,detector);
c->SaveAs(epsname);
c->SaveAs(pngname);
delete c;
+ delete tex;
+ PHOS->SetName(name);
return PHOS;
}
-Float_t CorrNotIDConst(float ptcut, float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename, bool ispp, bool forSim){
+Float_t CorrNotIDConst(float ptcut, float etacut,char *name, char *prodname, char *shortprodname, bool TPC, bool ispp, bool forSim){
+ if(!forSim){
+ if(ispp){
+ return 0.996;
+ }
+ else{
+ return 0.976;
+ }
+ }
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
gStyle->SetOptFit(0);
c->SetFrameFillColor(0);
c->SetFrameBorderMode(0);
- TH1D *PHOS = GetHistoCorrNotID(ptcut,name,TPC,infilename,false,ispp,forSim);
+ TH1D *PHOS = GetHistoCorrNotID(ptcut,name,TPC,false,ispp,forSim);
PHOS->SetMarkerColor(2);
PHOS->SetLineColor(2);
PHOS->SetMaximum(1.01);
TLatex *tex = new TLatex(0.161478,1.0835,prodname);
tex->SetTextSize(0.0537634);
tex->Draw();
- char epsname[100];
- char pngname[100];
- char *detector = "EMCAL";
- if(etacut<0.2) detector = "PHOS";
+ char *detector = detectorEMCAL;
+ if(etacut<0.2) detector = detectorPHOS;
if(TPC){
sprintf(epsname,"pics/%s/fnotidConstTPC%s.eps",shortprodname,detector);
sprintf(pngname,"pics/%s/fnotidConstTPC%s.png",shortprodname,detector);
c->SaveAs(epsname);
c->SaveAs(pngname);
delete c;
- return func->GetParameter(0);
+ delete PHOS;
+ float value = func->GetParameter(0);
+ delete func;
+ delete tex;
+ return value;
}
//==================================CorrNoID=================================================
-TH1D *GetHistoNoID(float etacut, char *name, char *infilename, bool eta, bool TPC, bool ispp, bool forSim){
- TFile *file = new TFile(infilename);
- char *myname = "ITS";
- if(TPC) myname = "TPC";
- TList *list = file->FindObject("out2");
+TH1D *GetHistoNoID(float etacut, char *name, bool eta, bool TPC, bool ispp, bool forSim){
+ file->cd();
+ char *myname = mynameITS;
+ if(TPC) myname = mynameTPC;
TH2F *notid = ((TH2F*) out2->FindObject(Form("EtReconstructed%sChargedHadronAssumingPion",myname)))->Clone("notid");
TH2F *nNotid = ((TH2F*) out2->FindObject(Form("EtNReconstructed%sChargedHadron",myname)))->Clone("nNotid");
if(eta){
int lowbin = notid->GetYaxis()->FindBin(-etacut+.001);//make sure we don't accv0entally get the wrong bin
int highbin = notid->GetYaxis()->FindBin(etacut-.001);
- cout<<"Projecting from "<<notid->GetYaxis()->GetBinLowEdge(lowbin)<<" to "<<notid->GetYaxis()->GetBinLowEdge(highbin+1)<<endl;
+ //cout<<"Projecting from "<<notid->GetYaxis()->GetBinLowEdge(lowbin)<<" to "<<notid->GetYaxis()->GetBinLowEdge(highbin+1)<<endl;
denominator = id->ProjectionX("name",lowbin,highbin);
numerator = notid->ProjectionX("numerator",lowbin,highbin);
nNotidProj = nNotid->ProjectionX("nNotidProj",lowbin,highbin);
}
else{
- cout<<"Getting eta dependence"<<endl;
+ //cout<<"Getting eta dependence"<<endl;
int lowbin = id->GetXaxis()->FindBin(etacut);//make sure we don't accidentally get the wrong bin
int highbin;
if(etacut<0.15){//then we actually have ITS standalone tracks and we only want this to run from 0.1 to 0.15 because this will be used only for ITS standalone tracks
else{
highbin = id->GetXaxis()->GetNbins();
}
- cout<<"Projecting from "<<id->GetXaxis()->GetBinLowEdge(lowbin)<<" to "<<id->GetXaxis()->GetBinLowEdge(highbin+1)<<endl;
+ //cout<<"Projecting from "<<id->GetXaxis()->GetBinLowEdge(lowbin)<<" to "<<id->GetXaxis()->GetBinLowEdge(highbin+1)<<endl;
numerator = notid->ProjectionY("name",lowbin,highbin);
denominator = id->ProjectionY("denominator",lowbin,highbin);
nNotidProj = nNotid->ProjectionY("nNotidProj",lowbin,highbin);
numerator->GetYaxis()->SetTitleOffset(1.2);
delete denominator;
delete nNotidProj;
+ delete notid;
+ delete nNotid;
+ delete id;
+ numerator->SetName(name);
return numerator;
}
-TH1D *CorrNoID(float etacut,char *name, char *prodname, char *shortprodname, char *infilename, bool ispp, bool forSim){
+TH1D *CorrNoID(float etacut,char *name, char *prodname, char *shortprodname, bool ispp, bool forSim){
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
gStyle->SetOptFit(0);
c->SetFrameFillColor(0);
c->SetFrameBorderMode(0);
- TH1D *PHOS = GetHistoNoID(etacut,name,infilename,true,true,ispp,forSim);
+ TH1D *PHOS = GetHistoNoID(etacut,name,true,true,ispp,forSim);
PHOS->SetMarkerColor(2);
PHOS->SetLineColor(2);
PHOS->SetAxisRange(0.0,4);
tex->Draw();
- char epsname[100];
- char pngname[100];
- char *detector = "EMCAL";
- if(etacut<0.2) detector = "PHOS";
+ char *detector = detectorEMCAL;
+ if(etacut<0.2) detector = detectorPHOS;
sprintf(epsname,"pics/%s/fnoid%s.eps",shortprodname,detector);
sprintf(pngname,"pics/%s/fnoid%s.png",shortprodname,detector);
c->SaveAs(epsname);
c->SaveAs(pngname);
delete c;
+ delete tex;
+ PHOS->SetName(name);
return PHOS;
}
-Float_t CorrNoIDConst(float etacut, float ptcut,char *name, char *prodname, char *shortprodname, char *infilename, bool ispp, bool forSim){
+Float_t CorrNoIDConst(float etacut, float ptcut,char *name, char *prodname, char *shortprodname, bool ispp, bool forSim){
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
gStyle->SetOptFit(0);
bool TPC = true;
if(ptcut<.15) TPC = false;
- TH1D *PHOS = GetHistoNoID(ptcut,name,infilename,false,TPC,ispp,forSim);
+ TH1D *PHOS = GetHistoNoID(ptcut,name,false,TPC,ispp,forSim);
TF1 *func = new TF1("func","[0]",-etacut,etacut);
PHOS->Fit(func,"","",-etacut,etacut);
PHOS->SetMarkerColor(2);
tex->Draw();
- char epsname[100];
- char pngname[100];
- char *detector = "EMCAL";
- if(etacut<0.2) detector = "PHOS";
+ char *detector = detectorEMCAL;
+ if(etacut<0.2) detector = detectorPHOS;
if(TPC){
sprintf(epsname,"pics/%s/fnoid%sTPC.eps",shortprodname,detector);
sprintf(pngname,"pics/%s/fnoid%sTPC.png",shortprodname,detector);
c->SaveAs(epsname);
c->SaveAs(pngname);
delete c;
- return func->GetParameter(0);
+ delete PHOS;
+ float value = func->GetParameter(0);
+ delete func;
+ delete tex;
+ return value;
}
//==================================Efficiency=================================================
-TH1D *GetHistoEfficiency(float cut, char *name, int mycase, int color, int marker,bool TPC,bool ITS, char *infilename){
+TH1D *GetHistoEfficiency(float cut, char *name, int mycase, int color, int marker,bool TPC,bool ITS, int cb, int cblast){
bool eta = true;
- TFile *file = new TFile(infilename);
- TList *list = file->FindObject("out2");
- char *myname = "ITS";
- if(TPC&&!ITS) myname = "TPC";
- if(TPC&&ITS) myname = "TPCITS";
- cout<<"Using tracks from "<<myname<<" for efficiency"<<endl;
+ file->cd();
+ char *myname = mynameITS;
+ if(TPC&&!ITS) myname = mynameTPC;
+ if(TPC&&ITS) myname = mynameTPCITS;
TH2F *numeratorParent;
switch(mycase){
case 0:
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiPlus")))->Clone("RecoHadron");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiMinus")));
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KMinus")));
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KPlus")));
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"Proton")));
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"AntiProton")));
- //numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"Unidentified")));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(i==cb) numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiPlus",i)))->Clone("RecoHadron");
+ else{numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiPlus",i)));}
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiMinus",i)));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KMinus",i)));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KPlus",i)));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"Proton",i)));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"AntiProton",i)));
+ }
+ }
+ else{
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiPlus")))->Clone("RecoHadron");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiMinus")));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KMinus")));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KPlus")));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"Proton")));
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"AntiProton")));
+ }
break;
case 1://pion
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiPlus")))->Clone("RecoPion");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiMinus")));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(i==cb) numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiPlus",i)))->Clone("RecoPion");
+ else{numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiPlus",i)));}
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"PiMinus",i)));
+ }
+ }
+ else{
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiPlus")))->Clone("RecoPion");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"PiMinus")));
+ }
break;
case 2://kaon
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KPlus")))->Clone("RecoKaon");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KMinus")));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(i==cb) numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KPlus",i)))->Clone("RecoKaon");
+ else{numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KPlus",i)));}
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"KMinus",i)));
+ }
+ }
+ else{
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KPlus")))->Clone("RecoKaon");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"KMinus")));
+ }
break;
case 3://proton
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"Proton")))->Clone("RecoProton");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"AntiProton")));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(i==cb) numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"Proton",i)))->Clone("RecoProton");
+ else{numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"Proton",i)));}
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%sCB%i",myname,"AntiProton",i)));
+ }
+ }
+ else{
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"Proton")))->Clone("RecoProton");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"AntiProton")));
+ }
break;
case 4://electron
- numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"EPlus")))->Clone("RecoElectron");
- numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s",myname,"EMinus")));
+ numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s%s",myname,"EPlus",cbname)))->Clone("RecoElectron");
+ numeratorParent->Add((TH2F*) out2->FindObject(Form("EtNReconstructed%s%s%s",myname,"EMinus",cbname)));
break;
}
TH2F *denominatorParent;
switch(mycase){
case 0:
- denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedChargedHadron"))->Clone("RecoHadron");
+ if(cblast != -1){//add more centrality bins
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNSimulatedChargedHadronCB%i",cb)))->Clone("RecoHadron");
+ for(int i=cb+1;i<=cblast;i++){
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedChargedHadronCB%i",i)));
+ }
+ }
+ else{
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedChargedHadron"))->Clone("RecoHadron");
+ }
break;
case 1://pion
- denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedPiPlus"))->Clone("RecoPion");
- denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedPiMinus"));
+ if(cblast != -1){//add more centrality bins
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNSimulatedPiPlusCB%i",cb)))->Clone("RecoPion");
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedPiMinusCB%i",cb)));
+ for(int i=cb+1;i<=cblast;i++){
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedPiPlusCB%i",i)));
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedPiMinusCB%i",i)));
+ }
+ }
+ else{
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedPiPlus"))->Clone("RecoPion");
+ denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedPiMinus"));
+ }
break;
case 2://kaon
- denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedKPlus"))->Clone("RecoKaon");
- denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedKMinus"));
+ if(cblast != -1){//add more centrality bins
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNSimulatedKPlusCB%i",cb)))->Clone("RecoKaon");
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedKMinusCB%i",cb)));
+ for(int i=cb+1;i<=cblast;i++){
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedKPlusCB%i",i)));
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedKMinusCB%i",i)));
+ }
+ }
+ else{
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedKPlus"))->Clone("RecoKaon");
+ denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedKMinus"));
+ }
break;
case 3://proton
- denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedProton"))->Clone("RecoProton");
- denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedAntiProton"));
+ if(cblast != -1){//add more centrality bins
+ for(int i=cb;i<=cblast;i++){
+ if(cb==i)denominatorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtNSimulatedProtonCB%i",i)))->Clone("RecoProton");
+ else{denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedProtonCB%i",i)));}
+ denominatorParent->Add((TH2F*) out2->FindObject(Form("EtNSimulatedAntiProtonCB%i",i)));
+ }
+ }
+ else{
+ denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedProton"))->Clone("RecoProton");
+ denominatorParent->Add((TH2F*) out2->FindObject("EtNSimulatedAntiProton"));
+ }
break;
case 4://electron
denominatorParent = (TH2F*)((TH2F*) out2->FindObject("EtNSimulatedEPlus"))->Clone("RecoElectron");
//result->Draw("e");
delete denominator;
delete numerator;
+ delete numeratorParent;
+ delete denominatorParent;
+ result->SetName(name);
return result;
}
-void CorrEfficiencyPlots(bool TPC, char *prodname, char *shortprodname, char *infilename){
+void CorrEfficiencyPlots(bool TPC, char *prodname, char *shortprodname){
bool ITS = true;
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
int emcalmarker = 24;
float ptcut1 = 0.05;
float ptcut2 = 0.1;
- TH1D *PHOStotal = GetHistoEfficiency(0.12,"PHOStotal",0,colortotal,phosmarker,TPC,ITS,infilename);
- TH1D *PHOSpi = GetHistoEfficiency(0.12,"PHOSpi",1,colorpi,phosmarker,TPC,ITS,infilename);
- TH1D *PHOSp = GetHistoEfficiency(0.12,"PHOSp",2,colork,phosmarker,TPC,ITS,infilename);
- TH1D *PHOSk = GetHistoEfficiency(0.12,"PHOSk",3,colorp,phosmarker,TPC,ITS,infilename);
+ TH1D *PHOStotal = GetHistoEfficiency(0.12,"PHOStotal",0,colortotal,phosmarker,TPC,ITS);
+ TH1D *PHOSpi = GetHistoEfficiency(0.12,"PHOSpi",1,colorpi,phosmarker,TPC,ITS);
+ TH1D *PHOSp = GetHistoEfficiency(0.12,"PHOSp",2,colork,phosmarker,TPC,ITS);
+ TH1D *PHOSk = GetHistoEfficiency(0.12,"PHOSk",3,colorp,phosmarker,TPC,ITS);
if(!TPC){PHOStotal->GetXaxis()->SetRange(PHOStotal->GetXaxis()->FindBin(0.05),PHOStotal->GetXaxis()->FindBin(1.0));}
else{PHOStotal->GetXaxis()->SetRange(PHOStotal->GetXaxis()->FindBin(0.15),PHOStotal->GetXaxis()->FindBin(3.0));}
PHOStotal->SetMinimum(0.0);
PHOSpi->Draw("same");
PHOSp->Draw("same");
PHOSk->Draw("same");
- TH1D *EMCALtotal = GetHistoEfficiency(0.7,"EMCALtotal",0,colortotal,emcalmarker,TPC,ITS,infilename);
- TH1D *EMCALpi = GetHistoEfficiency(0.7,"EMCALpi",1,colorpi,emcalmarker,TPC,ITS,infilename);
- TH1D *EMCALp = GetHistoEfficiency(0.7,"EMCALp",2,colork,emcalmarker,TPC,ITS,infilename);
- TH1D *EMCALk = GetHistoEfficiency(0.7,"EMCALk",3,colorp,emcalmarker,TPC,ITS,infilename);
+ TH1D *EMCALtotal = GetHistoEfficiency(0.7,"EMCALtotal",0,colortotal,emcalmarker,TPC,ITS);
+ TH1D *EMCALpi = GetHistoEfficiency(0.7,"EMCALpi",1,colorpi,emcalmarker,TPC,ITS);
+ TH1D *EMCALp = GetHistoEfficiency(0.7,"EMCALp",2,colork,emcalmarker,TPC,ITS);
+ TH1D *EMCALk = GetHistoEfficiency(0.7,"EMCALk",3,colorp,emcalmarker,TPC,ITS);
EMCALtotal->Draw("same");
EMCALpi->Draw("same");
EMCALp->Draw("same");
TLatex *tex2 = new TLatex(0.241937,0.448436,"Likely TPC cut-off 200 MeV/c");
tex2->SetTextSize(0.0537634);
tex2->Draw();
- char epsname[100];
- char pngname[100];
if(TPC){
if(ITS){
sprintf(epsname,"pics/%s/CorrEfficiencyITSTPC.eps",shortprodname);
c->SaveAs(epsname);
c->SaveAs(pngname);
delete c;
+ delete line;
+ delete tex;
+ delete tex3;
}
//==================================CorrBkgd=================================================
-TH1D *GetHistoCorrBkgd(float etacut,char *name, bool TPC, char *infilename,bool ispp,bool forSim){
- TFile *file = new TFile(infilename);
- TList *list = file->FindObject("out2");
- char *reweightname = "";
- if(!forSim) reweightname = "Reweighted";
- char *myname = "ITS";
- if(TPC) myname = "TPC";
+TH1D *GetHistoCorrBkgd(float etacut,char *name, bool TPC,bool ispp,bool forSim){
+ file->cd();
+ char *reweightname = reweightedNo;
+ if(!forSim) reweightname = reweightedYes;
+ char *myname = mynameITS;
+ if(TPC) myname = mynameTPC;
TH2F *signal = ((TH2F*) out2->FindObject(Form("EtReconstructed%sIdentifiedPiPlus",myname)))->Clone("signal");
signal->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sIdentifiedPiMinus",myname)));
signal->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sIdentifiedKMinus",myname)));
delete signal;
delete bkgd;
delete denominator;
+ numerator->SetName(name);
return numerator;
}
-void CorrBkgdPlots(char *prodname, char *shortprodname, bool TPC, char *infilename,bool ispp,bool forSim){
+void CorrBkgdPlots(char *prodname, char *shortprodname, bool TPC,bool ispp,bool forSim){
gStyle->SetOptTitle(0);
gStyle->SetOptStat(0);
gStyle->SetOptFit(0);
c->SetFrameFillColor(0);
c->SetFrameBorderMode(0);
- TH1D *PHOS = GetHistoCorrBkgd(0.12,"PHOS2",TPC,infilename,ispp,forSim);
- TH1D *EMCAL = GetHistoCorrBkgd(0.7,"EMCAL2",TPC,infilename,ispp,forSim);
+ TH1D *PHOS = GetHistoCorrBkgd(0.12,"PHOS2",TPC,ispp,forSim);
+ TH1D *EMCAL = GetHistoCorrBkgd(0.7,"EMCAL2",TPC,ispp,forSim);
PHOS->SetMarkerColor(2);
EMCAL->SetMarkerColor(4);
PHOS->SetLineColor(2);
delete c;
delete PHOS;
delete EMCAL;
+ delete tex;
+ delete leg;
}