From f43fc416d40e00681aff395a9a23627875665108 Mon Sep 17 00:00:00 2001 From: cnattras Date: Mon, 29 Nov 2010 22:25:19 +0000 Subject: [PATCH 1/1] Added mock up of baryon enhancement, added code 20100 as lead collisions from 2010, implement hadronic corrections in config file now, updating macro for generating the file with all of the hadronic corrections, switching everything to requiring ITS hits on tracks, fixed bug in AliAnalysisHadEtReconstructed where it was using the wrong tracks, added switch to extend region of histograms for lead collisions --- PWG4/totEt/AliAnalysisEtCommon.cxx | 30 +- PWG4/totEt/AliAnalysisEtCommon.h | 9 +- PWG4/totEt/AliAnalysisHadEtMonteCarlo.cxx | 110 +++++++- PWG4/totEt/AliAnalysisHadEtMonteCarlo.h | 4 +- PWG4/totEt/AliAnalysisHadEtReconstructed.cxx | 18 +- PWG4/totEt/AliAnalysisTaskHadEt.cxx | 2 +- PWG4/totEt/macros/ConfigHadEtMonteCarlo.C | 13 +- PWG4/totEt/macros/ConfigHadEtReconstructed.C | 9 + PWG4/totEt/macros/GetCorrections.C | 282 +++++++++++-------- 9 files changed, 339 insertions(+), 138 deletions(-) diff --git a/PWG4/totEt/AliAnalysisEtCommon.cxx b/PWG4/totEt/AliAnalysisEtCommon.cxx index 78786bee1ad..1d3c1b87a21 100644 --- a/PWG4/totEt/AliAnalysisEtCommon.cxx +++ b/PWG4/totEt/AliAnalysisEtCommon.cxx @@ -83,6 +83,8 @@ AliAnalysisEtCommon::AliAnalysisEtCommon() : ,fK0Data(0) ,fLambdaData(0) ,fAntiLambdaData(0) + ,fLambdaEnhancement(0) + ,fProtonEnhancement(0) {//default constructor } @@ -99,6 +101,8 @@ AliAnalysisEtCommon::~AliAnalysisEtCommon() delete fK0Data; delete fLambdaData; delete fAntiLambdaData; + delete fLambdaEnhancement; + delete fProtonEnhancement; } Int_t AliAnalysisEtCommon::AnalyseEvent(AliVEvent *event) @@ -144,7 +148,7 @@ void AliAnalysisEtCommon::Init() fAntiLambdaData->SetParameter(1,0.210); fAntiLambdaData->SetParameter(2,9.2); } - if(fDataSet==2010){ + if(fDataSet==2010 ||fDataSet==20100 ){ //These data are from the CMS analysis note on 7 TeV spectra //http://cdsweb.cern.ch/record/1279344/files/QCD-10-007-pas.pdf //Note the CMS parameterization of the Levy function differs from the ALICE parameterization by a constant. @@ -168,6 +172,22 @@ void AliAnalysisEtCommon::Init() fAntiLambdaData->SetParameter(1,0.290); fAntiLambdaData->SetParameter(2,9.28); } + fLambdaEnhancement = new TF1("fLambdaEnhancement","([0]*pow(x,[1])*exp(-pow(x/[2],[3])))/([4]*exp(-pow([5]/x,[6]))+[7]*x)",0,50); + fLambdaEnhancement->SetParameter(0,0.5630487); + fLambdaEnhancement->SetParameter(1,1.388818); + fLambdaEnhancement->SetParameter(2,3.954147); + fLambdaEnhancement->SetParameter(3,3.443772); + fLambdaEnhancement->SetParameter(4,2.844288); + fLambdaEnhancement->SetParameter(5,2); + fLambdaEnhancement->SetParameter(6,0.4747893); + fLambdaEnhancement->SetParameter(7,-0.2250856); + fProtonEnhancement = new TF1("fProtonEnhancement","[0]*pow(x,[1])*exp(-pow(x/[2],[3]))/([4]+[5]*x)",0,50); + fProtonEnhancement->SetParameter(0,0.5630487*1.6); + fProtonEnhancement->SetParameter(1,1.388818); + fProtonEnhancement->SetParameter(2,3.954147/1.5); + fProtonEnhancement->SetParameter(3,3.443772/2.5); + fProtonEnhancement->SetParameter(4,0.5); + fProtonEnhancement->SetParameter(5,-.03); } void AliAnalysisEtCommon::ResetEventValues() @@ -242,3 +262,11 @@ Float_t AliAnalysisEtCommon::AntiLambdaWeight(Float_t pt){ return data/mc; } +Float_t AliAnalysisEtCommon::LambdaBaryonEnhancement(Float_t pt){ + if(pt<0.8) return 1.0; + return fLambdaEnhancement->Eval(pt); +};//Function which gives the factor to reweigh a lambda or antilambda so it roughly matches baryon enhancement seen at RHIC +Float_t AliAnalysisEtCommon::ProtonBaryonEnhancement(Float_t pt){ + if(pt<0.8) return 1.0; + return fProtonEnhancement->Eval(pt); +}//Function which gives the factor to reweigh a lambda or antilambda so it roughly matches baryon enhancement seen at RHIC diff --git a/PWG4/totEt/AliAnalysisEtCommon.h b/PWG4/totEt/AliAnalysisEtCommon.h index 3fccb822e8d..da4beee7028 100644 --- a/PWG4/totEt/AliAnalysisEtCommon.h +++ b/PWG4/totEt/AliAnalysisEtCommon.h @@ -26,7 +26,7 @@ class AliAnalysisEtCuts; #define ALIANALYSISLEVYPT_H class AliAnalysisLevyPt{ public: - virtual ~AliAnalysisLevyPt(){}; + virtual ~AliAnalysisLevyPt(){;}; Double_t Evaluate(const Double_t *pt, const Double_t *par) const { Double_t lMass = 0.497; @@ -84,6 +84,7 @@ protected: Int_t fDataSet;//Integer corresponding to data set. Used as a switch to set appropriate track cuts. By default set to 2010 p+p //2009 = 900 GeV p+p data from 2009 //2010 = 7 TeV p+p data from 2010 + //20100 = 2.76 TeV Pb+Pb data from 2010 /** PDG Database */ //TDatabasePDG *fPdgDB;//data base used for looking up pdg codes @@ -143,6 +144,12 @@ protected: TF1 *fLambdaData;//function with Levy fit parameters for Lambda in data TF1 *fAntiLambdaData;//function with Levy fit parameters for AntiLambda in data + TF1 *fLambdaEnhancement; + TF1 *fProtonEnhancement; + Float_t LambdaBaryonEnhancement(Float_t pt);//Function which gives the factor to reweigh a lambda or antilambda so it roughly matches baryon enhancement seen at RHIC + Float_t ProtonBaryonEnhancement(Float_t pt);//Function which gives the factor to reweigh a lambda or antilambda so it roughly matches baryon enhancement seen at RHIC + + private: //Declare it private to avoid compilation warning AliAnalysisEtCommon & operator = (const AliAnalysisEtCommon & g) ;//cpy assignment diff --git a/PWG4/totEt/AliAnalysisHadEtMonteCarlo.cxx b/PWG4/totEt/AliAnalysisHadEtMonteCarlo.cxx index be1e24e0f29..0038f658899 100644 --- a/PWG4/totEt/AliAnalysisHadEtMonteCarlo.cxx +++ b/PWG4/totEt/AliAnalysisHadEtMonteCarlo.cxx @@ -44,6 +44,7 @@ AliAnalysisHadEtMonteCarlo::AliAnalysisHadEtMonteCarlo():AliAnalysisHadEt() ,fInvestigatePHOS(0) ,fInvestigatePiKP(0) ,fRequireITSHits(0) + ,fBaryonEnhancement(0) ,fPtSmearer(0) { } @@ -174,6 +175,11 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2) float myEt = Et(simPart); if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedProton",cutName->Data()),track->Pt(),track->Eta(),myEt);} else{ FillHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",cutName->Data()),track->Pt(),track->Eta(),myEt);} + if(fBaryonEnhancement){ + myEt = myEt*ProtonBaryonEnhancement(track->Pt()); + if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEt);} + else{ FillHisto2D(Form("EtReconstructed%sIdentifiedAntiProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEt);} + } FillHisto2D(Form("dEdxProton%s",cutName->Data()),track->P(),dEdx,1.0); } if(isKaon){ @@ -201,6 +207,23 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2) FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi); FillHisto2D(Form("EtReconstructed%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),myEt); FillHisto2D(Form("EtNReconstructed%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),1.0); + if(pdgCode == fgPiPlusCode||pdgCode == fgPiMinusCode){ + FillHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi); + FillHisto2D(Form("EtNReconstructed%sUnidentifiedPion",cutName->Data()),track->Pt(),track->Eta(),1.0); + } + if(pdgCode == fgKPlusCode||pdgCode == fgKMinusCode){ + FillHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi); + FillHisto2D(Form("EtNReconstructed%sUnidentifiedKaon",cutName->Data()),track->Pt(),track->Eta(),1.0); + } + if(pdgCode == fgProtonCode||pdgCode == fgAntiProtonCode){ + FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi); + FillHisto2D(Form("EtNReconstructed%sUnidentifiedProton",cutName->Data()),track->Pt(),track->Eta(),1.0); + if(fBaryonEnhancement){ + myEt = myEt*ProtonBaryonEnhancement(track->Pt()); + FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPionEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEtPi); + FillHisto2D(Form("EtNReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),1.0); + } + } } FillHisto2D(Form("dEdxUnidentified%s",cutName->Data()),track->P(),dEdx,1.0); FillHisto1D(Form("UnidentifiedPIDs%s",cutName->Data()),mypid,1); @@ -256,6 +279,14 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2) FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); FillHisto2D(Form("EtReconstructed%sProtonAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); filled = true; + + if(fBaryonEnhancement){ + float enhancement = ProtonBaryonEnhancement(track->Pt()); + FillHisto2D(Form("EtReconstructed%sProtonEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt*enhancement); + FillHisto2D(Form("EtNReconstructed%sProtonEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt*enhancement); + FillHisto2D(Form("EtReconstructed%sProtonAssumingPionEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi*enhancement); + } + } if(pdgCode == fgAntiProtonCode){ float myEt = Et(simPart); @@ -267,6 +298,12 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2) FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); filled = true; + if(fBaryonEnhancement){ + float enhancement = ProtonBaryonEnhancement(track->Pt()); + FillHisto2D(Form("EtReconstructed%sAntiProtonEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt*enhancement); + FillHisto2D(Form("EtNReconstructed%sAntiProtonEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt*enhancement); + FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingPionEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi*enhancement); + } } if(pdgCode == fgEPlusCode){ float myEt = Et(simPart); @@ -300,12 +337,20 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2) float myEt = Et(simPart); FillHisto2D(Form("EtReconstructed%sLambdaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt); Float_t weight = LambdaWeight(mom->Pt()); + if(fBaryonEnhancement){ + float enhancement = ProtonBaryonEnhancement(track->Pt()); + weight = weight*enhancement; + } FillHisto2D(Form("EtReconstructed%sLambdaDaughtersReweighted",cutName->Data()),track->Pt(),track->Eta(),myEt*weight); } if(pdgCode == fgAntiLambdaCode){ float myEt = Et(simPart); FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt); Float_t weight = AntiLambdaWeight(mom->Pt()); + if(fBaryonEnhancement){ + float enhancement = ProtonBaryonEnhancement(track->Pt()); + weight = weight*enhancement; + } FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughtersReweighted",cutName->Data()),track->Pt(),track->Eta(),myEt*weight); } if(pdgCode == fgK0SCode){ @@ -550,6 +595,12 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev) FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC); FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS); filled = true; + if(fBaryonEnhancement){ + float enhancement = ProtonBaryonEnhancement(part->Pt()); + FillHisto2D("EtSimulatedProtonEnhanced",part->Pt(),part->Eta(),myEt*enhancement); + FillHisto2D("EtNSimulatedProtonEnhanced",part->Pt(),part->Eta(),1.0*enhancement); + FillHisto2D("EtSimulatedProtonAssumingPionEnhanced",part->Pt(),part->Eta(),myEtPi*enhancement); + } } if(pdgCode == fgAntiProtonCode){ float myEt = Et(part); @@ -571,6 +622,12 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev) FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC); FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS); filled = true; + if(fBaryonEnhancement){ + float enhancement = ProtonBaryonEnhancement(part->Pt()); + FillHisto2D("EtSimulatedAntiProtonEnhanced",part->Pt(),part->Eta(),myEt*enhancement); + FillHisto2D("EtNSimulatedAntiProtonEnhanced",part->Pt(),part->Eta(),1.0*enhancement); + FillHisto2D("EtSimulatedAntiProtonAssumingPionEnhanced",part->Pt(),part->Eta(),myEtPi*enhancement); + } } //============Other hadrons=================================== @@ -598,6 +655,10 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev) FillHisto2D("EtSimulatedLambda",part->Pt(),part->Eta(),myEt); FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); Float_t weight = LambdaWeight(part->Pt()); + if(fBaryonEnhancement){ + float enhancement = ProtonBaryonEnhancement(part->Pt()); + weight = weight*enhancement; + } FillHisto2D("EtSimulatedLambdaReweighted",part->Pt(),part->Eta(),myEt*weight); Int_t ndaughters = part->GetNDaughters(); for(Int_t idaughter = 0;idaughterPt(),part->Eta(),myEt); FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); Float_t weight = AntiLambdaWeight(part->Pt()); + if(fBaryonEnhancement){ + float enhancement = ProtonBaryonEnhancement(part->Pt()); + weight = weight*enhancement; + } FillHisto2D("EtSimulatedAntiLambdaReweighted",part->Pt(),part->Eta(),myEt*weight); Int_t ndaughters = part->GetNDaughters(); for(Int_t idaughter = 0;idaughterData()),"Reconstructed E_{T} from identified K^{-}"); CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedProton",cutName->Data()),"Reconstructed E_{T} from identified p"); CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",cutName->Data()),"Reconstructed E_{T} from identified #bar{p}"); + if(fBaryonEnhancement){ + CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from identified p"); + CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedAntiProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from identified #bar{p}"); + } CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentified",cutName->Data()),"Number of Reconstructed unidentified particles"); CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified particles assuming pion mass"); + + CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedKaon",cutName->Data()),"Number of Reconstructed unidentified kaons particles"); + CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass"); + CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedProton",cutName->Data()),"Number of Reconstructed unidentified proton particles"); + CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass"); + if(fBaryonEnhancement){ + CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),"Number of Reconstructed unidentified proton particles"); + CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPionEnhanced",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass"); + } + CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedPion",cutName->Data()),"Number of Reconstructed unidentified pions particles"); + CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified pions particles assuming pion mass"); + CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentified",cutName->Data()),"Reconstructed E_{T} from unidentified particles using real mass"); CreateEtaPtHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),"Reconstructed E_{T} from misidentified electrons"); @@ -1049,6 +1142,10 @@ void AliAnalysisHadEtMonteCarlo::CreateHistograms(){ CreateEtaPtHisto2D(Form("EtReconstructed%sKMinus",cutName->Data()),"Reconstructed E_{T} from K^{-}"); CreateEtaPtHisto2D(Form("EtReconstructed%sProton",cutName->Data()),"Reconstructed E_{T} from p"); CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProton",cutName->Data()),"Reconstructed E_{T} from #bar{p}"); + if(fBaryonEnhancement){ + CreateEtaPtHisto2D(Form("EtReconstructed%sProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from p"); + CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from #bar{p}"); + } CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),"Reconstructed E_{T} from charged hadrons"); CreateEtaPtHisto2D(Form("EtNReconstructed%sPiPlus",cutName->Data()),"Reconstructed E_{T} from #pi^{+}"); CreateEtaPtHisto2D(Form("EtNReconstructed%sPiMinus",cutName->Data()),"Reconstructed E_{T} from #pi^{-}"); @@ -1056,6 +1153,10 @@ void AliAnalysisHadEtMonteCarlo::CreateHistograms(){ CreateEtaPtHisto2D(Form("EtNReconstructed%sKMinus",cutName->Data()),"Reconstructed E_{T} from K^{-}"); CreateEtaPtHisto2D(Form("EtNReconstructed%sProton",cutName->Data()),"Reconstructed E_{T} from p"); CreateEtaPtHisto2D(Form("EtNReconstructed%sAntiProton",cutName->Data()),"Reconstructed E_{T} from #bar{p}"); + if(fBaryonEnhancement){ + CreateEtaPtHisto2D(Form("EtNReconstructed%sProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from p"); + CreateEtaPtHisto2D(Form("EtNReconstructed%sAntiProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from #bar{p}"); + } CreateEtaPtHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),"Reconstructed E_{T} from charged hadrons"); CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),"Reconstructed E_{T} from charged hadrons assuming they are all pions"); @@ -1063,6 +1164,10 @@ void AliAnalysisHadEtMonteCarlo::CreateHistograms(){ CreateEtaPtHisto2D(Form("EtReconstructed%sKMinusAssumingPion",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass"); CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass"); CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass"); + if(fBaryonEnhancement){ + CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingPionEnhanced",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass"); + CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingPionEnhanced",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass"); + } CreateEtaPtHisto2D(Form("EtReconstructed%sEPlus",cutName->Data()),"Reconstructed E_{T} from e^{+}"); CreateEtaPtHisto2D(Form("EtReconstructed%sEMinus",cutName->Data()),"Reconstructed E_{T} from e^{-}"); @@ -1095,6 +1200,7 @@ void AliAnalysisHadEtMonteCarlo::CreateHistograms(){ Float_t minEt = 0.0; Float_t maxEt = 100.0; + if(fDataSet==20100) maxEt=5000.0; Int_t nbinsEt = 100; char histoname[200]; char histotitle[200]; diff --git a/PWG4/totEt/AliAnalysisHadEtMonteCarlo.h b/PWG4/totEt/AliAnalysisHadEtMonteCarlo.h index dd8333cbf40..334991553fc 100644 --- a/PWG4/totEt/AliAnalysisHadEtMonteCarlo.h +++ b/PWG4/totEt/AliAnalysisHadEtMonteCarlo.h @@ -106,10 +106,12 @@ public: void InvestigatePHOS(Bool_t val){fInvestigatePHOS=val;} void InvestigatePiKP(Bool_t val){fInvestigatePiKP=val;} void RequireITSHits(Bool_t val){fRequireITSHits=val;} + void EnhanceBaryons(Bool_t val){fBaryonEnhancement=val;} Bool_t Full() const {return fInvestigateFull;} Bool_t EMCAL() const {return fInvestigateEMCal;} Bool_t PHOS()const {return fInvestigatePHOS;} Bool_t PiKP() const {return fInvestigatePiKP;} + Bool_t BaryonEnhancement() const {return fBaryonEnhancement;} private: //Declare it private to avoid compilation warning @@ -126,7 +128,7 @@ public: Bool_t fInvestigatePHOS;//Turns on and off functions and histos for investigating event-by-event et for the full acceptance Bool_t fInvestigatePiKP;//Turns on and off functions and histos for looking pi/k/p Et event-by-event Bool_t fRequireITSHits;//Also investigates Et for track cuts with ITS+TPC hits - + Bool_t fBaryonEnhancement;//Turns on and off baryon enhancement void ResetEventValues(); diff --git a/PWG4/totEt/AliAnalysisHadEtReconstructed.cxx b/PWG4/totEt/AliAnalysisHadEtReconstructed.cxx index 6c35b632c49..492c6f7919e 100644 --- a/PWG4/totEt/AliAnalysisHadEtReconstructed.cxx +++ b/PWG4/totEt/AliAnalysisHadEtReconstructed.cxx @@ -97,18 +97,18 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev) TObjArray* list; switch(cutset){ case 0: - cutName = strTPC; - list = fEsdtrackCutsTPC->GetAcceptedTracks(realEvent); - isTPC = true; - break; - case 1: cutName = strTPCITS; list = fEsdtrackCutsITSTPC->GetAcceptedTracks(realEvent); + isTPC = true; break; - case 2: + case 1: cutName = strITS; list = fEsdtrackCutsITS->GetAcceptedTracks(realEvent); break; + case 2: + cutName = strTPC; + list = fEsdtrackCutsTPC->GetAcceptedTracks(realEvent); + break; default: cerr<<"Error: cannot fill histograms!"<SetName("fEsdTrackCutsITS"); } - if(fRecAnalysis->DataSet()==2010){ + if(fRecAnalysis->DataSet()==2010 || fRecAnalysis->DataSet()==20100){ //cout<<"Setting track cuts for the 2010 p+p collisions at 7 GeV"<InvestigateSmearing(kFALSE); //Whether or not to look at Et(sim)-Et(reco) for full acceptance - hadEtMC->InvestigateFull(kFALSE); + hadEtMC->InvestigateFull(kTRUE); //Whether or not to look at Et(sim)-Et(reco) for EMCAL acceptance - hadEtMC->InvestigateEMCAL(kTRUE); + hadEtMC->InvestigateEMCAL(kFALSE); //Whether or not to look at Et(sim)-Et(reco) for PHOS acceptance - hadEtMC->InvestigatePHOS(kTRUE); + hadEtMC->InvestigatePHOS(kFALSE); //Whether or not to look at Et(sim)-Et(reco) for Pi/K/p in full acceptance (full acceptance must be turned on) hadEtMC->InvestigatePiKP(kFALSE); @@ -20,6 +21,12 @@ AliAnalysisHadEtMonteCarlo * ConfigHadEtMonteCarlo(){ //Look at ITS+TPC tracks hadEtMC->RequireITSHits(kTRUE); + //Look at the 2010 p+p data... + hadEtMC->SetDataSet(20100); + + //Turn baryon enhancement on and off + hadEtMC->EnhanceBaryons(kTRUE); + hadEtMC->Init(); return hadEtMC; } diff --git a/PWG4/totEt/macros/ConfigHadEtReconstructed.C b/PWG4/totEt/macros/ConfigHadEtReconstructed.C index f0b242ceaae..330718ccbc0 100644 --- a/PWG4/totEt/macros/ConfigHadEtReconstructed.C +++ b/PWG4/totEt/macros/ConfigHadEtReconstructed.C @@ -2,6 +2,15 @@ AliAnalysisHadEtReconstructed * ConfigHadEtReconstructed(){ //cout<<"Hello I am configuring you"<SetDataSet(20100); + //Set corrections... + + TFile *infile = new TFile("corrections.root"); + corrections = (AliAnalysisHadEtCorrections *)infile->Get("hadCorrectionEMCAL"); + cout<<"Setting the AliAnalysisHadEtCorrections to "<GetName()<GetEtaCut()<SetCorrections(corrections); + hadEtReco->Init(); return hadEtReco; } diff --git a/PWG4/totEt/macros/GetCorrections.C b/PWG4/totEt/macros/GetCorrections.C index ddb399f14ed..6f9114f7660 100644 --- a/PWG4/totEt/macros/GetCorrections.C +++ b/PWG4/totEt/macros/GetCorrections.C @@ -10,30 +10,30 @@ // #include // #include "TStopwatch.h" -Float_t CorrNeutral(float ptcut, char *prodname, char *shortprodname, bool TPC, char *infilename, bool hadronic = false, float etacut = 0.7); -TH1D *GetHistoCorrNeutral(float cut, char *name, 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, 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 CorrPtCut(float ptcut, char *prodname = "Enter Production Name", char *shortprodname = "EnterProductionName", char *filename="Et.ESD.new.sim.merged.root"); -TH1D *GetHistoCorrPtCut(float ptcut = 0.15, char *name, char *filename); +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); -TH1D *GetHistoCorrNotID(float etacut,char *name, bool TPC, char *infilename, bool eta); -TH1D *CorrNotID(float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename); -Float_t CorrNotIDConst(float ptcut, float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename); +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 *GetHistoNoID(float etacut, char *name, char *infilename, bool eta, bool TPC); -TH1D *CorrNoID(float etacut,char *name, char *prodname, char *shortprodname, char *infilename); -Float_t CorrNoIDConst(float etacut, float ptcut,char *name, char *prodname, char *shortprodname, char *infilename); +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* bayneseffdiv(TH1D* numerator, TH1D* denominator,Char_t* name); -TH1D *GetHistoEfficiency(float cut, char *name, int mycase, int color, int marker,bool TPC, char *infilename); +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); -void CorrBkgdPlots(char *prodname, char *shortprodname, bool TPC, 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); //=========================================================================================== -void GetCorrections(char *prodname = "Enter Production Name", char *shortprodname = "EnterProductionName", 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"){ TStopwatch timer; timer.Start(); gSystem->Load("libTree.so"); @@ -53,7 +53,11 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam gROOT->ProcessLine(".L AliAnalysisHadEtCorrections.cxx+g"); char outfilename[200]; - sprintf(outfilename,"corrections.%s.root",shortprodname); + char *sim = "ForData"; + if(forSim) sim = "ForSimulations"; + char *system = "PbPb"; + if(ispp) system = "pp"; + sprintf(outfilename,"corrections.%s.%s.%s.root",shortprodname,system,sim); TFile *outfile = new TFile(outfilename,"RECREATE"); AliAnalysisHadEtCorrections *hadCorrectionEMCAL = new AliAnalysisHadEtCorrections(); hadCorrectionEMCAL->SetName("hadCorrectionEMCAL"); @@ -68,22 +72,22 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam hadCorrectionEMCAL->SetAcceptanceCorrectionEMCAL(360.0/60.0); float ptcut = 0.1; - float neutralCorr = CorrNeutral(ptcut,prodname,shortprodname,TPC,infilename,false,etacut); + float neutralCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,infilename,false,etacut); hadCorrectionEMCAL->SetNeutralCorrection(neutralCorr); cout<<"Warning: Setting neutral correction error bars to STAR value of +/-2%. Use for development purposes only!"<SetNeutralCorrectionLowBound(neutralCorr*0.98); hadCorrectionEMCAL->SetNeutralCorrectionHighBound(neutralCorr*1.02); - float hadronicCorr = CorrNeutral(ptcut,prodname,shortprodname,TPC,infilename,true,etacut); + float hadronicCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,infilename,true,etacut); hadCorrectionEMCAL->SetNotHadronicCorrection(hadronicCorr); cout<<"Warning: Setting hadronic correction error bars to value of +/-2%. Use for development purposes only!"<SetNotHadronicCorrectionLowBound(neutralCorr*0.98); hadCorrectionEMCAL->SetNotHadronicCorrectionHighBound(neutralCorr*1.02); - float ptcutITS = CorrPtCut(0.1,prodname,shortprodname,infilename); + float ptcutITS = CorrPtCut(0.1,prodname,shortprodname,infilename,ispp,forSim); hadCorrectionEMCAL->SetpTCutCorrectionITS(ptcutITS); - float ptcutTPC = CorrPtCut(0.15,prodname,shortprodname,infilename); + float ptcutTPC = CorrPtCut(0.15,prodname,shortprodname,infilename,ispp,forSim); hadCorrectionEMCAL->SetpTCutCorrectionTPC(ptcutTPC); cout<<"Setting ITS pt cut corr to "<SetpTCutCorrectionITSHighBound(ptcutITS*1.03); hadCorrectionEMCAL->SetpTCutCorrectionTPCHighBound(ptcutTPC*1.03); - TH1D *NotIDTPC = CorrNotID(etacut,"CorrNotIDEMCALTPC",prodname,shortprodname,true,infilename); - TH1D *NotIDITS = CorrNotID(etacut,"CorrNotIDEMCALITS",prodname,shortprodname,false,infilename); + TH1D *NotIDTPC = CorrNotID(etacut,"CorrNotIDEMCALTPC",prodname,shortprodname,true,infilename,ispp,forSim); + TH1D *NotIDITS = CorrNotID(etacut,"CorrNotIDEMCALITS",prodname,shortprodname,false,infilename,ispp,forSim); hadCorrectionEMCAL->SetNotIDCorrectionTPC(NotIDTPC); hadCorrectionEMCAL->SetNotIDCorrectionITS(NotIDITS); - Float_t NotIDConstTPC = CorrNotIDConst(0.15,etacut,"CorrNotIDEMCALTPC2",prodname,shortprodname,true,infilename); - Float_t NotIDConstITS = CorrNotIDConst(0.10,etacut,"CorrNotIDEMCALTPC2",prodname,shortprodname,true,infilename); + 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); hadCorrectionEMCAL->SetNotIDConstCorrectionTPC(1.0/NotIDConstTPC); hadCorrectionEMCAL->SetNotIDConstCorrectionITS(1.0/NotIDConstITS); cout<<"Setting constant PID corrections to "<SetNotIDConstCorrectionITSHighBound(1./NotIDConstITS*1.01); - TH1D *NoID = CorrNoID(etacut,"CorrNoIDEMCAL",prodname,shortprodname,infilename); + TH1D *NoID = CorrNoID(etacut,"CorrNoIDEMCAL",prodname,shortprodname,infilename,ispp,forSim); hadCorrectionEMCAL->SetNotIDCorrectionNoPID(NoID); - Float_t NoIDTPC = CorrNoIDConst(etacut,0.15,"CorrNoIDEMCAL2",prodname,shortprodname,infilename); - Float_t NoIDITS = CorrNoIDConst(etacut,0.1,"CorrNoIDEMCAL2",prodname,shortprodname,infilename); + 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 "<SetNotIDConstCorrectionTPCNoID(1./NoIDTPC); hadCorrectionEMCAL->SetNotIDConstCorrectionITSNoID(1./NoIDITS); @@ -124,7 +128,7 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam hadCorrectionEMCAL->SetNotIDConstCorrectionTPCNoIDHighBound(1./NoIDTPC*1.01); hadCorrectionEMCAL->SetNotIDConstCorrectionITSNoIDHighBound(1./NoIDITS*1.01); - TH1D *efficiencyPionTPC = GetHistoEfficiency(etacut,"hEfficiencyPionTPC",1,1,20,true,infilename); + TH1D *efficiencyPionTPC = GetHistoEfficiency(etacut,"hEfficiencyPionTPC",1,1,20,true,true,infilename); hadCorrectionEMCAL->SetEfficiencyPionTPC(efficiencyPionTPC); if(!efficiencyPionTPC){cerr<<"NOOOOOOOOOOOOOOOOOO!! We have failed you, Christine!"<SetEfficiencyKaonTPC(efficiencyKaonTPC); - TH1D *efficiencyProtonTPC = GetHistoEfficiency(etacut,"hEfficiencyProtonTPC",3,1,20,true,infilename); + TH1D *efficiencyProtonTPC = GetHistoEfficiency(etacut,"hEfficiencyProtonTPC",3,1,20,true,true,infilename); hadCorrectionEMCAL->SetEfficiencyProtonTPC(efficiencyProtonTPC); - TH1D *efficiencyHadronTPC = GetHistoEfficiency(etacut,"hEfficiencyHadronTPC",0,1,20,true,infilename); + TH1D *efficiencyHadronTPC = GetHistoEfficiency(etacut,"hEfficiencyHadronTPC",0,1,20,true,true,infilename); hadCorrectionEMCAL->SetEfficiencyHadronTPC(efficiencyHadronTPC); - TH1D *efficiencyPionITS = GetHistoEfficiency(etacut,"hEfficiencyPionITS",1,1,20,false,infilename); + TH1D *efficiencyPionITS = GetHistoEfficiency(etacut,"hEfficiencyPionITS",1,1,20,false,true,infilename); hadCorrectionEMCAL->SetEfficiencyPionITS(efficiencyPionITS); - TH1D *efficiencyKaonITS = GetHistoEfficiency(etacut,"hEfficiencyKaonITS",2,1,20,false,infilename); + TH1D *efficiencyKaonITS = GetHistoEfficiency(etacut,"hEfficiencyKaonITS",2,1,20,false,true,infilename); hadCorrectionEMCAL->SetEfficiencyKaonITS(efficiencyKaonITS); - TH1D *efficiencyProtonITS = GetHistoEfficiency(etacut,"hEfficiencyProtonITS",3,1,20,false,infilename); + TH1D *efficiencyProtonITS = GetHistoEfficiency(etacut,"hEfficiencyProtonITS",3,1,20,false,true,infilename); hadCorrectionEMCAL->SetEfficiencyProtonITS(efficiencyProtonITS); - TH1D *efficiencyHadronITS = GetHistoEfficiency(etacut,"hEfficiencyHadronITS",0,1,20,false,infilename); + TH1D *efficiencyHadronITS = GetHistoEfficiency(etacut,"hEfficiencyHadronITS",0,1,20,false,true,infilename); hadCorrectionEMCAL->SetEfficiencyHadronITS(efficiencyHadronITS); //CorrEfficiencyPlots(true,prodname,shortprodname,infilename); //CorrEfficiencyPlots(false,prodname,shortprodname,infilename); hadCorrectionEMCAL->GetEfficiencyHadronTPC()->Draw(); - TH1D *backgroundTPC = GetHistoCorrBkgd(etacut,"hBackgroundTPC",true,infilename); - TH1D *backgroundITS = GetHistoCorrBkgd(etacut,"hBackgroundITS",false,infilename); + TH1D *backgroundTPC = GetHistoCorrBkgd(etacut,"hBackgroundTPC",true,infilename,ispp,forSim); + TH1D *backgroundITS = GetHistoCorrBkgd(etacut,"hBackgroundITS",false,infilename,ispp,forSim); hadCorrectionEMCAL->SetBackgroundCorrectionTPC(backgroundTPC); hadCorrectionEMCAL->SetBackgroundCorrectionITS(backgroundITS); - CorrBkgdPlots(prodname,shortprodname,true,infilename); - CorrBkgdPlots(prodname,shortprodname,false,infilename); + CorrBkgdPlots(prodname,shortprodname,true,infilename,ispp,forSim); + CorrBkgdPlots(prodname,shortprodname,false,infilename,ispp,forSim); outfile->cd(); hadCorrectionEMCAL->Write(); @@ -178,23 +182,23 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam hadCorrectionPHOS->SetAcceptanceCorrectionEMCAL(360.0/60.0); float ptcut = 0.1; - float neutralCorr = CorrNeutral(ptcut,prodname,shortprodname,TPC,infilename,false,etacut); + float neutralCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,infilename,false,etacut); hadCorrectionPHOS->SetNeutralCorrection(neutralCorr); cout<<"Warning: Setting neutral correction error bars to STAR value of +/-2%. Use for development purposes only!"<SetNeutralCorrectionLowBound(neutralCorr*0.98); hadCorrectionPHOS->SetNeutralCorrectionHighBound(neutralCorr*1.02); - float hadronicCorr = CorrNeutral(ptcut,prodname,shortprodname,TPC,infilename,true,etacut); + float hadronicCorr = CorrNeutral(ptcut,prodname,shortprodname,ispp,forSim,TPC,infilename,true,etacut); hadCorrectionPHOS->SetNotHadronicCorrection(hadronicCorr); cout<<"Warning: Setting hadronic correction error bars to value of +/-2%. Use for development purposes only!"<SetNotHadronicCorrectionLowBound(neutralCorr*0.98); hadCorrectionPHOS->SetNotHadronicCorrectionHighBound(neutralCorr*1.02); - float ptcutITS = CorrPtCut(0.1,prodname,shortprodname,infilename); + float ptcutITS = CorrPtCut(0.1,prodname,shortprodname,infilename,ispp,forSim); hadCorrectionPHOS->SetpTCutCorrectionITS(ptcutITS); - float ptcutTPC = CorrPtCut(0.15,prodname,shortprodname,infilename); + float ptcutTPC = CorrPtCut(0.15,prodname,shortprodname,infilename,ispp,forSim); hadCorrectionPHOS->SetpTCutCorrectionTPC(ptcutTPC); cout<<"Warning: Setting pt cut correction error bars to STAR value of +/-3%. Use for development purposes only!"<SetpTCutCorrectionITSLowBound(ptcutITS*0.97); @@ -202,13 +206,13 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam hadCorrectionPHOS->SetpTCutCorrectionITSHighBound(ptcutITS*1.03); hadCorrectionPHOS->SetpTCutCorrectionTPCHighBound(ptcutTPC*1.03); - TH1D *NotIDTPC = CorrNotID(etacut,"CorrNotIDPHOSTPC",prodname,shortprodname,true,infilename); - TH1D *NotIDITS = CorrNotID(etacut,"CorrNotIDPHOSITS",prodname,shortprodname,false,infilename); + TH1D *NotIDTPC = CorrNotID(etacut,"CorrNotIDPHOSTPC",prodname,shortprodname,true,infilename,ispp,forSim); + TH1D *NotIDITS = CorrNotID(etacut,"CorrNotIDPHOSITS",prodname,shortprodname,false,infilename,ispp,forSim); hadCorrectionPHOS->SetNotIDCorrectionTPC(NotIDTPC); hadCorrectionPHOS->SetNotIDCorrectionITS(NotIDITS); - Float_t NotIDConstTPC = CorrNotIDConst(0.15,etacut,"CorrNotIDPHOSTPC2",prodname,shortprodname,true,infilename); - Float_t NotIDConstITS = CorrNotIDConst(0.10,etacut,"CorrNotIDPHOSTPC2",prodname,shortprodname,true,infilename); + 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); 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!"<SetNotIDConstCorrectionITSHighBound(1./NotIDConstITS*1.01); - TH1D *NoID = CorrNoID(etacut,"CorrNoIDPHOS",prodname,shortprodname,infilename); + TH1D *NoID = CorrNoID(etacut,"CorrNoIDPHOS",prodname,shortprodname,infilename,ispp,forSim); hadCorrectionPHOS->SetNotIDCorrectionNoPID(NoID); - Float_t NoIDTPC = CorrNoIDConst(etacut,0.15,"CorrNoIDPHOS2",prodname,shortprodname,infilename); - Float_t NoIDITS = CorrNoIDConst(etacut,0.1,"CorrNoIDPHOS2",prodname,shortprodname,infilename); + 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 "<SetNotIDConstCorrectionTPCNoID(1./NoIDTPC); hadCorrectionPHOS->SetNotIDConstCorrectionITSNoID(1./NoIDITS); @@ -233,14 +237,14 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam hadCorrectionPHOS->SetNotIDConstCorrectionTPCNoIDHighBound(1./NoIDTPC*1.01); hadCorrectionPHOS->SetNotIDConstCorrectionITSNoIDHighBound(1./NoIDITS*1.01); - TH1D *efficiencyPionTPC = GetHistoEfficiency(etacut,"hEfficiencyPionTPC",1,1,20,true,infilename); - TH1D *efficiencyKaonTPC = GetHistoEfficiency(etacut,"hEfficiencyKaonTPC",2,1,20,true,infilename); - TH1D *efficiencyProtonTPC = GetHistoEfficiency(etacut,"hEfficiencyProtonTPC",3,1,20,true,infilename); - TH1D *efficiencyHadronTPC = GetHistoEfficiency(etacut,"hEfficiencyHadronTPC",0,1,20,true,infilename); - TH1D *efficiencyPionITS = GetHistoEfficiency(etacut,"hEfficiencyPionITS",1,1,20,false,infilename); - TH1D *efficiencyKaonITS = GetHistoEfficiency(etacut,"hEfficiencyKaonITS",2,1,20,false,infilename); - TH1D *efficiencyProtonITS = GetHistoEfficiency(etacut,"hEfficiencyProtonITS",3,1,20,false,infilename); - TH1D *efficiencyHadronITS = GetHistoEfficiency(etacut,"hEfficiencyHadronITS",0,1,20,false,infilename); + 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->SetEfficiencyPionTPC(efficiencyPionTPC); @@ -252,12 +256,12 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam hadCorrectionPHOS->SetEfficiencyProtonITS(efficiencyProtonITS); hadCorrectionPHOS->SetEfficiencyHadronITS(efficiencyHadronITS); - TH1D *backgroundTPC = GetHistoCorrBkgd(etacut,"hBackgroundTPC",true,infilename); - TH1D *backgroundITS = GetHistoCorrBkgd(etacut,"hBackgroundITS",false,infilename); + TH1D *backgroundTPC = GetHistoCorrBkgd(etacut,"hBackgroundTPC",true,infilename,ispp,forSim); + TH1D *backgroundITS = GetHistoCorrBkgd(etacut,"hBackgroundITS",false,infilename,ispp,forSim); hadCorrectionPHOS->SetBackgroundCorrectionTPC(backgroundTPC); hadCorrectionPHOS->SetBackgroundCorrectionITS(backgroundITS); - CorrBkgdPlots(prodname,shortprodname,true,infilename); - CorrBkgdPlots(prodname,shortprodname,false,infilename); + CorrBkgdPlots(prodname,shortprodname,true,infilename,ispp,forSim); + CorrBkgdPlots(prodname,shortprodname,false,infilename,ispp,forSim); //Write the output outfile->cd(); @@ -265,12 +269,17 @@ void GetCorrections(char *prodname = "Enter Production Name", char *shortprodnam 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 TPC, char *infilename, bool hadronic, float etacut){ +Float_t CorrNeutral(float ptcut, char *prodname, char *shortprodname, bool ispp, bool forSim, bool TPC, char *infilename, bool hadronic, float etacut){ gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetOptFit(0); @@ -305,22 +314,22 @@ Float_t CorrNeutral(float ptcut, char *prodname, char *shortprodname, bool TPC, int colortotal = 1; int casetotal = 4; if(hadronic) casetotal = 8; - TH1D *total = GetHistoCorrNeutral(ptcut,histoname,casetotal,false,colortotal,phosmarker,infilename,hadronic); + TH1D *total = GetHistoCorrNeutral(ptcut,histoname,ispp,forSim,casetotal,false,colortotal,phosmarker,infilename,hadronic); int colorallneutral = 2; - TH1D *allneutral = GetHistoCorrNeutral(ptcut,"allneutral",3,false,colorallneutral,phosmarker,infilename,hadronic); + TH1D *allneutral = GetHistoCorrNeutral(ptcut,"allneutral",ispp,forSim,3,false,colorallneutral,phosmarker,infilename,hadronic); int colorchargedsecondary = TColor::kViolet-3; - TH1D *chargedsecondary = GetHistoCorrNeutral(ptcut,"chargedsecondary",2,false,colorchargedsecondary,phosmarker,infilename,hadronic); + TH1D *chargedsecondary = GetHistoCorrNeutral(ptcut,"chargedsecondary",ispp,forSim,2,false,colorchargedsecondary,phosmarker,infilename,hadronic); int colorneutralUndet = 4; - TH1D *neutralUndet = GetHistoCorrNeutral(ptcut,"neutralUndet",1,false,colorneutralUndet,phosmarker,infilename,hadronic); + TH1D *neutralUndet = GetHistoCorrNeutral(ptcut,"neutralUndet",ispp,forSim,1,false,colorneutralUndet,phosmarker,infilename,hadronic); int colorv0 = TColor::kGreen+2; - TH1D *v0 = GetHistoCorrNeutral(ptcut,"v0",0,false,colorv0,phosmarker,infilename,hadronic); + TH1D *v0 = GetHistoCorrNeutral(ptcut,"v0",ispp,forSim,0,false,colorv0,phosmarker,infilename,hadronic); int colorem = TColor::kCyan; - TH1D *em = GetHistoCorrNeutral(ptcut,"em",9,false,colorem,phosmarker,infilename,hadronic); + TH1D *em = GetHistoCorrNeutral(ptcut,"em",ispp,forSim,9,false,colorem,phosmarker,infilename,hadronic); TF1 *func = new TF1("func","[0]",-.7,.7); func->SetParameter(0,0.2); @@ -387,18 +396,20 @@ Float_t CorrNeutral(float ptcut, char *prodname, char *shortprodname, bool TPC, return 1.0/(1.0-corr); } -TH1D *GetHistoCorrNeutral(float cut, char *name, int mycase, bool eta, int color, int marker, char *infilename, bool hadronic){ +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"); + char *reweightname = ""; + if(!forSim) reweightname = "Reweighted"; TH2F *numeratorParent; switch(mycase){ case 0: - numeratorParent= (TH2F*)((TH2F*) out2->FindObject("EtSimulatedLambda"))->Clone("v0"); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiLambda")); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedK0S")); + numeratorParent= (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedLambda%s",reweightname)))->Clone("v0"); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda%s",reweightname))); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname))); break; case 1: - numeratorParent = (TH2F*)((TH2F*) out2->FindObject("EtSimulatedK0L"))->Clone("Knnbar"); + numeratorParent = (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname)))->Clone("Knnbar"); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedNeutron")); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron")); break; @@ -411,18 +422,18 @@ TH1D *GetHistoCorrNeutral(float cut, char *name, int mycase, bool eta, int color numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi0")); break; case 3: - numeratorParent= (TH2F*)((TH2F*) out2->FindObject("EtSimulatedLambda"))->Clone("allneutral"); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiLambda")); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedK0S")); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedK0L")); + numeratorParent= (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedLambda%s",reweightname)))->Clone("allneutral"); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda%s",reweightname))); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname))); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname))); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedNeutron")); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron")); break; case 4: - numeratorParent= (TH2F*)((TH2F*) out2->FindObject("EtSimulatedLambda"))->Clone("allneutral"); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiLambda")); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedK0S")); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedK0L")); + numeratorParent= (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedLambda%s",reweightname)))->Clone("allneutral"); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda%s",reweightname))); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname))); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname))); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedNeutron")); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron")); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedOmega")); @@ -447,10 +458,10 @@ TH1D *GetHistoCorrNeutral(float cut, char *name, int mycase, bool eta, int color numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiSigma")); break; case 8: - numeratorParent= (TH2F*)((TH2F*) out2->FindObject("EtSimulatedLambda"))->Clone("allneutral"); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiLambda")); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedK0S")); - numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedK0L")); + numeratorParent= (TH2F*)((TH2F*) out2->FindObject(Form("EtSimulatedLambda%s",reweightname)))->Clone("allneutral"); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda%s",reweightname))); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname))); + numeratorParent->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname))); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedNeutron")); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron")); numeratorParent->Add((TH2F*) out2->FindObject("EtSimulatedOmega")); @@ -477,7 +488,30 @@ TH1D *GetHistoCorrNeutral(float cut, char *name, int mycase, bool eta, int color } TH2F *allhad; - allhad=(TH2F*) ((TH2F*) out2->FindObject("EtSimulatedAllHadron"))->Clone("id"); + //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")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedKPlus")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedProton")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiProton")); + allhad->Add((TH2F*) out2->FindObject(Form("EtSimulatedLambda%s",reweightname))); + allhad->Add((TH2F*) out2->FindObject(Form("EtSimulatedAntiLambda%s",reweightname))); + allhad->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0S%s",reweightname))); + allhad->Add((TH2F*) out2->FindObject(Form("EtSimulatedK0L%s",reweightname))); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedNeutron")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiNeutron")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedEPlus")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedEMinus")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedOmega")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiOmega")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedXi")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedSigma")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiSigma")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedXi0")); + allhad->Add((TH2F*) out2->FindObject("EtSimulatedAntiXi0")); + 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")); @@ -487,8 +521,6 @@ TH1D *GetHistoCorrNeutral(float cut, char *name, int mycase, bool eta, int color allhad->Add((TH2F*) out2->FindObject("EtSimulatedEMinus")); } - //numeratorParent->Sumw2(); - //allhad->Sumw2(); TH1D *denominator; TH1D *numerator; if(eta){ @@ -522,7 +554,7 @@ TH1D *GetHistoCorrNeutral(float cut, char *name, int mycase, bool eta, int color } //===============================CorrPtCut========================================= -TH1D *GetHistoCorrPtCut(float ptcut, char *name, char *filename){ +TH1D *GetHistoCorrPtCut(float ptcut, char *name, char *filename, bool ispp, bool forSim){ TFile *file = new TFile(filename); TList *list = file->FindObject("out2"); TH2F *allhad = ((TH2F*) out2->FindObject("EtSimulatedAllHadron"))->Clone("allhad"); @@ -555,7 +587,7 @@ TH1D *GetHistoCorrPtCut(float ptcut, char *name, char *filename){ } -Float_t CorrPtCut(float ptcut, char *prodname, char *shortprodname, char *filename){ +Float_t CorrPtCut(float ptcut, char *prodname, char *shortprodname, char *filename, bool ispp, bool forSim){ gStyle->SetOptTitle(0); gStyle->SetOptStat(0); @@ -638,7 +670,7 @@ Float_t CorrPtCut(float ptcut, char *prodname, char *shortprodname, char *filena //==================================CorrNotID================================================= -TH1D *GetHistoCorrNotID(float etacut,char *name, bool TPC, char *infilename, bool eta){ +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"; @@ -730,7 +762,7 @@ TH1D *GetHistoCorrNotID(float etacut,char *name, bool TPC, char *infilename, boo } -TH1D *CorrNotID(float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename){ +TH1D *CorrNotID(float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename, bool ispp, bool forSim){ gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetOptFit(0); @@ -744,7 +776,7 @@ TH1D *CorrNotID(float etacut,char *name, char *prodname, char *shortprodname, bo c->SetFrameFillColor(0); c->SetFrameBorderMode(0); - TH1D *PHOS = GetHistoCorrNotID(etacut,name,TPC,infilename,true); + TH1D *PHOS = GetHistoCorrNotID(etacut,name,TPC,infilename,true,ispp,forSim); PHOS->SetMarkerColor(2); PHOS->SetLineColor(2); PHOS->SetAxisRange(0.0,4); @@ -779,7 +811,7 @@ TH1D *CorrNotID(float etacut,char *name, char *prodname, char *shortprodname, bo return PHOS; } -Float_t CorrNotIDConst(float ptcut, float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename){ +Float_t CorrNotIDConst(float ptcut, float etacut,char *name, char *prodname, char *shortprodname, bool TPC, char *infilename, bool ispp, bool forSim){ gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetOptFit(0); @@ -793,7 +825,7 @@ Float_t CorrNotIDConst(float ptcut, float etacut,char *name, char *prodname, cha c->SetFrameFillColor(0); c->SetFrameBorderMode(0); - TH1D *PHOS = GetHistoCorrNotID(ptcut,name,TPC,infilename,false); + TH1D *PHOS = GetHistoCorrNotID(ptcut,name,TPC,infilename,false,ispp,forSim); PHOS->SetMarkerColor(2); PHOS->SetLineColor(2); PHOS->SetMaximum(1.01); @@ -825,7 +857,7 @@ Float_t CorrNotIDConst(float ptcut, float etacut,char *name, char *prodname, cha } //==================================CorrNoID================================================= -TH1D *GetHistoNoID(float etacut, char *name, char *infilename, bool eta, bool TPC){ +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"; @@ -888,7 +920,7 @@ TH1D *GetHistoNoID(float etacut, char *name, char *infilename, bool eta, bool TP } -TH1D *CorrNoID(float etacut,char *name, char *prodname, char *shortprodname, char *infilename){ +TH1D *CorrNoID(float etacut,char *name, char *prodname, char *shortprodname, char *infilename, bool ispp, bool forSim){ gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetOptFit(0); @@ -902,7 +934,7 @@ TH1D *CorrNoID(float etacut,char *name, char *prodname, char *shortprodname, cha c->SetFrameFillColor(0); c->SetFrameBorderMode(0); - TH1D *PHOS = GetHistoNoID(etacut,name,infilename,true,true); + TH1D *PHOS = GetHistoNoID(etacut,name,infilename,true,true,ispp,forSim); PHOS->SetMarkerColor(2); PHOS->SetLineColor(2); PHOS->SetAxisRange(0.0,4); @@ -929,7 +961,7 @@ TH1D *CorrNoID(float etacut,char *name, char *prodname, char *shortprodname, cha } -Float_t CorrNoIDConst(float etacut, float ptcut,char *name, char *prodname, char *shortprodname, char *infilename){ +Float_t CorrNoIDConst(float etacut, float ptcut,char *name, char *prodname, char *shortprodname, char *infilename, bool ispp, bool forSim){ gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetOptFit(0); @@ -945,7 +977,7 @@ Float_t CorrNoIDConst(float etacut, float ptcut,char *name, char *prodname, char bool TPC = true; if(ptcut<.15) TPC = false; - TH1D *PHOS = GetHistoNoID(ptcut,name,infilename,false,TPC); + TH1D *PHOS = GetHistoNoID(ptcut,name,infilename,false,TPC,ispp,forSim); TF1 *func = new TF1("func","[0]",-etacut,etacut); PHOS->Fit(func,"","",-etacut,etacut); PHOS->SetMarkerColor(2); @@ -1027,12 +1059,14 @@ TH1D* bayneseffdiv(TH1D* numerator, TH1D* denominator,Char_t* name) -TH1D *GetHistoEfficiency(float cut, char *name, int mycase, int color, int marker,bool TPC, char *infilename){ +TH1D *GetHistoEfficiency(float cut, char *name, int mycase, int color, int marker,bool TPC,bool ITS, char *infilename){ bool eta = true; TFile *file = new TFile(infilename); TList *list = file->FindObject("out2"); char *myname = "ITS"; - if(TPC) myname = "TPC"; + if(TPC&&!ITS) myname = "TPC"; + if(TPC&&ITS) myname = "TPCITS"; + cout<<"Using tracks from "<SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetOptFit(0); @@ -1147,10 +1181,10 @@ void CorrEfficiencyPlots(bool TPC, char *prodname, char *shortprodname, char *in int emcalmarker = 24; float ptcut1 = 0.05; float ptcut2 = 0.1; - TH1D *PHOStotal = GetHistoEfficiency(0.12,"PHOStotal",0,colortotal,phosmarker,TPC,infilename); - TH1D *PHOSpi = GetHistoEfficiency(0.12,"PHOSpi",1,colorpi,phosmarker,TPC,infilename); - TH1D *PHOSp = GetHistoEfficiency(0.12,"PHOSp",2,colork,phosmarker,TPC,infilename); - TH1D *PHOSk = GetHistoEfficiency(0.12,"PHOSk",3,colorp,phosmarker,TPC,infilename); + 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); 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); @@ -1159,10 +1193,10 @@ void CorrEfficiencyPlots(bool TPC, char *prodname, char *shortprodname, char *in PHOSpi->Draw("same"); PHOSp->Draw("same"); PHOSk->Draw("same"); - TH1D *EMCALtotal = GetHistoEfficiency(0.7,"EMCALtotal",0,colortotal,emcalmarker,TPC,infilename); - TH1D *EMCALpi = GetHistoEfficiency(0.7,"EMCALpi",1,colorpi,emcalmarker,TPC,infilename); - TH1D *EMCALp = GetHistoEfficiency(0.7,"EMCALp",2,colork,emcalmarker,TPC,infilename); - TH1D *EMCALk = GetHistoEfficiency(0.7,"EMCALk",3,colorp,emcalmarker,TPC,infilename); + 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); EMCALtotal->Draw("same"); EMCALpi->Draw("same"); EMCALp->Draw("same"); @@ -1200,8 +1234,14 @@ void CorrEfficiencyPlots(bool TPC, char *prodname, char *shortprodname, char *in char epsname[100]; char pngname[100]; if(TPC){ - sprintf(epsname,"pics/%s/CorrEfficiencyTPC.eps",shortprodname); - sprintf(pngname,"pics/%s/CorrEfficiencyTPC.png",shortprodname); + if(ITS){ + sprintf(epsname,"pics/%s/CorrEfficiencyITSTPC.eps",shortprodname); + sprintf(pngname,"pics/%s/CorrEfficiencyITSTPC.png",shortprodname); + } + else{ + sprintf(epsname,"pics/%s/CorrEfficiencyTPC.eps",shortprodname); + sprintf(pngname,"pics/%s/CorrEfficiencyTPC.png",shortprodname); + } } else{ sprintf(epsname,"pics/%s/CorrEfficiencyITS.eps",shortprodname); @@ -1222,9 +1262,11 @@ void CorrEfficiencyPlots(bool TPC, char *prodname, char *shortprodname, char *in } //==================================CorrBkgd================================================= -TH1D *GetHistoCorrBkgd(float etacut,char *name, bool TPC, char *infilename){ +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"; TH2F *signal = ((TH2F*) out2->FindObject(Form("EtReconstructed%sIdentifiedPiPlus",myname)))->Clone("signal"); @@ -1237,9 +1279,9 @@ TH1D *GetHistoCorrBkgd(float etacut,char *name, bool TPC, char *infilename){ //Et of all unidentified hadrons (plus hadrons identified as pions) calculated assuming their true mass TH2F *bkgd = ((TH2F*) out2->FindObject(Form("EtReconstructed%sMisidentifiedElectrons",myname)))->Clone("bkgd"); - bkgd->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sLambdaDaughters",myname))); - bkgd->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sAntiLambdaDaughters",myname))); - bkgd->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sK0SDaughters",myname))); + bkgd->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sLambdaDaughters%s",myname,reweightname))); + bkgd->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sAntiLambdaDaughters%s",myname,reweightname))); + bkgd->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sK0SDaughters%s",myname,reweightname))); bkgd->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sXiDaughters",myname))); bkgd->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sAntiXiDaughters",myname))); bkgd->Add((TH2F*) out2->FindObject(Form("EtReconstructed%sOmegaDaughters",myname))); @@ -1261,7 +1303,7 @@ TH1D *GetHistoCorrBkgd(float etacut,char *name, bool TPC, char *infilename){ } -void CorrBkgdPlots(char *prodname, char *shortprodname, bool TPC, char *infilename){ +void CorrBkgdPlots(char *prodname, char *shortprodname, bool TPC, char *infilename,bool ispp,bool forSim){ gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetOptFit(0); @@ -1275,8 +1317,8 @@ void CorrBkgdPlots(char *prodname, char *shortprodname, bool TPC, char *infilena c->SetFrameFillColor(0); c->SetFrameBorderMode(0); - TH1D *PHOS = GetHistoCorrBkgd(0.12,"PHOS2",TPC,infilename); - TH1D *EMCAL = GetHistoCorrBkgd(0.7,"EMCAL2",TPC,infilename); + TH1D *PHOS = GetHistoCorrBkgd(0.12,"PHOS2",TPC,infilename,ispp,forSim); + TH1D *EMCAL = GetHistoCorrBkgd(0.7,"EMCAL2",TPC,infilename,ispp,forSim); PHOS->SetMarkerColor(2); EMCAL->SetMarkerColor(4); PHOS->SetLineColor(2); -- 2.43.5