]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/totEt/AliAnalysisHadEtMonteCarlo.cxx
Adding some macros to check corrections, implementing PID cross check proposed by...
[u/mrichter/AliRoot.git] / PWG4 / totEt / AliAnalysisHadEtMonteCarlo.cxx
CommitLineData
cf6522d1 1//_________________________________________________________________________
2// Utility Class for transverse energy studies, charged hadrons
3// Base class for MC analysis
4// - MC output
5// implementation file
6//
7//Created by Christine Nattrass, Rebecca Scott, Irakli Martashvili
641e1e0c 8//University of Tennessee at Knoxville
cf6522d1 9//_________________________________________________________________________
641e1e0c 10#include "AliAnalysisHadEtMonteCarlo.h"
11#include "AliAnalysisEtCuts.h"
12
13#include "AliStack.h"
14#include "AliMCEvent.h"
15#include "AliESDEvent.h"
16#include "AliESDtrackCuts.h"
17#include "AliESDpid.h"
4b40b2b1 18#include "AliPID.h"
19#include "AliESDtrack.h"
20#include "AliVParticle.h"
21#include "AliAnalysisTask.h"
22#include "AliAnalysisManager.h"
23#include "AliAnalysisHadEtReconstructed.h"
24#include "AliAnalysisEtCuts.h"
641e1e0c 25#include <iostream>
4b40b2b1 26#include "TRandom.h"
7d2d1773 27#include "AliAnalysisEtCommon.h"
16abb579 28
641e1e0c 29using namespace std;
30
16abb579 31ClassImp(AliAnalysisHadEtMonteCarlo);
32
4b40b2b1 33
0e866ddc 34Int_t AliAnalysisHadEtMonteCarlo::fgNumSmearWidths = 4;
35Float_t AliAnalysisHadEtMonteCarlo::fgSmearWidths[4] = {0.005,0.006,0.007,0.008};
4b40b2b1 36
d6214a64 37AliAnalysisHadEtMonteCarlo::AliAnalysisHadEtMonteCarlo():AliAnalysisHadEt()
0e866ddc 38 ,fSimPiKPEt(0)
4b40b2b1 39 ,fSimHadEt(0)
40 ,fSimTotEt(0)
7d2d1773 41 ,fInvestigateSmearing(0)
42 ,fInvestigateFull(0)
43 ,fInvestigateEMCal(0)
44 ,fInvestigatePHOS(0)
45 ,fInvestigatePiKP(0)
46 ,fRequireITSHits(0)
f43fc416 47 ,fBaryonEnhancement(0)
0e866ddc 48 ,fPtSmearer(0)
d6214a64 49{
4b40b2b1 50}
51AliAnalysisHadEtMonteCarlo::~AliAnalysisHadEtMonteCarlo(){//destructor
0e866ddc 52 if(fPtSmearer) delete fPtSmearer;
d6214a64 53}
4b40b2b1 54
55void AliAnalysisHadEtMonteCarlo::ResetEventValues(){//resetting event variables
d6214a64 56 AliAnalysisHadEt::ResetEventValues();
57 fSimHadEt=0.0;
58 fSimTotEt=0.0;
0e866ddc 59 fSimPiKPEt=0.0;
d6214a64 60}
cf6522d1 61Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
62{ // analyse MC and real event info
641e1e0c 63 FillHisto1D("NEvents",0.5,1);
64
65 AnalyseEvent(ev);
66 AliMCEvent *mcEvent = dynamic_cast<AliMCEvent*>(ev);
67 AliESDEvent *realEvent = dynamic_cast<AliESDEvent*>(ev2);
68 AliStack *stack = mcEvent->Stack();
69
70 //for PID
ea331c5d 71 AliESDpid *pID = new AliESDpid();//This is identified as a memory leak in valgrind but I delete this object so I think it may be a problem with AliESDpid.
641e1e0c 72
641e1e0c 73 //=============================================
74
75 //Roughly following $ALICE_ROOT/PWG0/dNdEta/AlidNdEtaCorrectionTask
76
77 //=============================================TPC&&ITS=============================================
cf6522d1 78 TString *strTPC = new TString("TPC");
79 TString *strITS = new TString("ITS");
80 TString *strTPCITS = new TString("TPCITS");
7d2d1773 81 Int_t lastcutset = 1;
82 if(fRequireITSHits) lastcutset = 2;
83 for(Int_t cutset=0;cutset<=lastcutset;cutset++){
ea331c5d 84 TString *cutName = NULL;
85 TObjArray* list = NULL;
641e1e0c 86 switch(cutset){
87 case 0:
cf6522d1 88 cutName = strTPC;
89 list = fEsdtrackCutsTPC->GetAcceptedTracks(realEvent);
641e1e0c 90 break;
91 case 1:
cf6522d1 92 cutName = strITS;
93 list = fEsdtrackCutsITS->GetAcceptedTracks(realEvent);
641e1e0c 94 break;
95 case 2:
cf6522d1 96 cutName = strTPCITS;
97 list = fEsdtrackCutsITSTPC->GetAcceptedTracks(realEvent);
641e1e0c 98 break;
99 default:
100 cerr<<"Error: cannot fill histograms!"<<endl;
101 return -1;
102 }
103 Int_t nGoodTracks = list->GetEntries();
104 for (Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++)
105 {
106 AliESDtrack *track = dynamic_cast<AliESDtrack*> (list->At(iTrack));
107 if (!track)
108 {
109 Printf("ERROR: Could not get track %d", iTrack);
110 continue;
111 }
112 else{
641e1e0c 113 Float_t nSigmaPion,nSigmaProton,nSigmaKaon,nSigmaElectron;
7d2d1773 114 pID->MakeTPCPID(track);
115 pID->MakeITSPID(track);
641e1e0c 116 if(cutset!=1){
cf6522d1 117 nSigmaPion = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kPion));
118 nSigmaProton = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kProton));
119 nSigmaKaon = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kKaon));
120 nSigmaElectron = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kElectron));
641e1e0c 121 }
122 else{
cf6522d1 123 nSigmaPion = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kPion));
124 nSigmaProton = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kProton));
125 nSigmaKaon = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kKaon));
126 nSigmaElectron = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kElectron));
641e1e0c 127 }
cf6522d1 128 bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
129 bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
130 bool isKaon = (nSigmaPion>3.0 && nSigmaProton>2.0 && nSigmaKaon<2.0);
131 bool isProton = (nSigmaPion>3.0 && nSigmaProton<2.0 && nSigmaKaon>2.0);
641e1e0c 132
cf6522d1 133 bool unidentified = (!isProton && !isKaon && !isElectron);
641e1e0c 134 Float_t dEdx = track->GetTPCsignal();
135 if(cutset==1) dEdx = track->GetITSsignal();
136
cf6522d1 137 FillHisto2D(Form("dEdxAll%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 138
139 UInt_t label = (UInt_t)TMath::Abs(track->GetLabel());
140 TParticle *simPart = stack->Particle(label);
141 if(!simPart) {
142 Printf("no MC particle\n");
143 continue;
144 }
145 else{//analysis
146 if(stack->IsPhysicalPrimary(label)){
0e866ddc 147 if (TMath::Abs(simPart->Eta()) < fCuts->GetCommonEtaCut()){
641e1e0c 148 Int_t pdgCode = simPart->GetPDG(0)->PdgCode();
149 Int_t mypid = 0;
7d2d1773 150 if(pdgCode==AliAnalysisHadEt::fgPiPlusCode) mypid = 1;
4b40b2b1 151 if(pdgCode==fgProtonCode) mypid = 2;
152 if(pdgCode==fgKPlusCode) mypid = 3;
153 if(pdgCode==fgEPlusCode) mypid = 4;
154 if(pdgCode==fgPiMinusCode) mypid = 1;
155 if(pdgCode==fgAntiProtonCode) mypid = 2;
156 if(pdgCode==fgKMinusCode) mypid = 3;
157 if(pdgCode==fgEMinusCode) mypid = 4;
641e1e0c 158 bool filled = false;
159 //============Charged hadrons===================================
160 //identified...
cf6522d1 161 if(isPion){
4b40b2b1 162 if(pdgCode!=fgPiPlusCode && pdgCode!=fgPiMinusCode){
cf6522d1 163 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),1,mypid,1);
641e1e0c 164 //if(mypid==0)cerr<<"I was misidentified! I'm not a pion! I am a "<<simPart->GetName()<<endl;
165 }
166 float myEt = Et(simPart);
cf6522d1 167 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedPiPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
168 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedPiMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
169 FillHisto2D(Form("dEdxPion%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 170 }
cf6522d1 171 if(isProton){
4b40b2b1 172 if(pdgCode!=fgProtonCode && pdgCode!=fgAntiProtonCode){
cf6522d1 173 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),2,mypid,1);
641e1e0c 174 }
175 float myEt = Et(simPart);
cf6522d1 176 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedProton",cutName->Data()),track->Pt(),track->Eta(),myEt);}
177 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",cutName->Data()),track->Pt(),track->Eta(),myEt);}
f43fc416 178 if(fBaryonEnhancement){
179 myEt = myEt*ProtonBaryonEnhancement(track->Pt());
180 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEt);}
181 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedAntiProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEt);}
182 }
cf6522d1 183 FillHisto2D(Form("dEdxProton%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 184 }
cf6522d1 185 if(isKaon){
4b40b2b1 186 if(pdgCode!=fgKMinusCode && pdgCode!=fgKPlusCode){
cf6522d1 187 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),3,mypid,1);
641e1e0c 188 }
189 float myEt = Et(simPart);
cf6522d1 190 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedKPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
191 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedKMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
192 FillHisto2D(Form("dEdxKaon%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 193 }
cf6522d1 194 if(isElectron){
4b40b2b1 195 if(pdgCode!=fgEMinusCode && pdgCode!=fgEPlusCode){
cf6522d1 196 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),4,mypid,1);
641e1e0c 197 }
198 float myEt = Et(simPart);
cf6522d1 199 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedEPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
200 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedEMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
201 FillHisto2D(Form("dEdxElectron%s",cutName->Data()),track->P(),dEdx,1.0);
641e1e0c 202 }
cf6522d1 203 if(unidentified){
4b40b2b1 204 if(pdgCode!=fgEMinusCode && pdgCode!=fgEPlusCode){
205 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 206 float myEtP = Et(simPart,fgProtonMass);
207 float myEtK = Et(simPart,fgKaonMass);
641e1e0c 208 float myEt = Et(simPart);
cf6522d1 209 FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
86d9d0dc 210 FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingProton",cutName->Data()),track->Pt(),track->Eta(),myEtP);
211 FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingKaon",cutName->Data()),track->Pt(),track->Eta(),myEtK);
cf6522d1 212 FillHisto2D(Form("EtReconstructed%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),myEt);
213 FillHisto2D(Form("EtNReconstructed%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),1.0);
f43fc416 214 if(pdgCode == fgPiPlusCode||pdgCode == fgPiMinusCode){
215 FillHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
86d9d0dc 216 FillHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingProton",cutName->Data()),track->Pt(),track->Eta(),myEtP);
217 FillHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingKaon",cutName->Data()),track->Pt(),track->Eta(),myEtK);
904048b2 218 FillHisto2D(Form("EtReconstructed%sUnidentifiedPion",cutName->Data()),track->Pt(),track->Eta(),myEt);
f43fc416 219 FillHisto2D(Form("EtNReconstructed%sUnidentifiedPion",cutName->Data()),track->Pt(),track->Eta(),1.0);
220 }
221 if(pdgCode == fgKPlusCode||pdgCode == fgKMinusCode){
222 FillHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
86d9d0dc 223 FillHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingProton",cutName->Data()),track->Pt(),track->Eta(),myEtP);
224 FillHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingKaon",cutName->Data()),track->Pt(),track->Eta(),myEtK);
904048b2 225 FillHisto2D(Form("EtReconstructed%sUnidentifiedKaon",cutName->Data()),track->Pt(),track->Eta(),myEt);
f43fc416 226 FillHisto2D(Form("EtNReconstructed%sUnidentifiedKaon",cutName->Data()),track->Pt(),track->Eta(),1.0);
227 }
228 if(pdgCode == fgProtonCode||pdgCode == fgAntiProtonCode){
229 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
86d9d0dc 230 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingProton",cutName->Data()),track->Pt(),track->Eta(),myEtP);
231 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingKaon",cutName->Data()),track->Pt(),track->Eta(),myEtK);
904048b2 232 FillHisto2D(Form("EtReconstructed%sUnidentifiedProton",cutName->Data()),track->Pt(),track->Eta(),myEt);
f43fc416 233 FillHisto2D(Form("EtNReconstructed%sUnidentifiedProton",cutName->Data()),track->Pt(),track->Eta(),1.0);
234 if(fBaryonEnhancement){
235 myEt = myEt*ProtonBaryonEnhancement(track->Pt());
236 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPionEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
904048b2 237 FillHisto2D(Form("EtReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),myEt);
f43fc416 238 FillHisto2D(Form("EtNReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),track->Pt(),track->Eta(),1.0);
239 }
240 }
641e1e0c 241 }
cf6522d1 242 FillHisto2D(Form("dEdxUnidentified%s",cutName->Data()),track->P(),dEdx,1.0);
cf6522d1 243 FillHisto1D(Form("UnidentifiedPIDs%s",cutName->Data()),mypid,1);
641e1e0c 244 }
245 //...simulated
7d2d1773 246 if(pdgCode == fgPiPlusCode){
641e1e0c 247 float myEt = Et(simPart);
86d9d0dc 248 float myEtP = Et(simPart,fgProtonMass);
249 float myEtK = Et(simPart,fgKaonMass);
cf6522d1 250 FillHisto2D(Form("EtReconstructed%sPiPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
251 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
252 FillHisto2D(Form("EtNReconstructed%sPiPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
253 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
254 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
86d9d0dc 255 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtP);
256 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtK);
257 FillHisto2D(Form("EtReconstructed%sPiPlusAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtK);
258 FillHisto2D(Form("EtReconstructed%sPiPlusAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtP);
641e1e0c 259 filled = true;
260 }
4b40b2b1 261 if(pdgCode == fgPiMinusCode){
641e1e0c 262 float myEt = Et(simPart);
86d9d0dc 263 float myEtP = Et(simPart,fgProtonMass);
264 float myEtK = Et(simPart,fgKaonMass);
cf6522d1 265 FillHisto2D(Form("EtReconstructed%sPiMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
266 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
267 FillHisto2D(Form("EtNReconstructed%sPiMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
268 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
269 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
86d9d0dc 270 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtP);
271 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtK);
272 FillHisto2D(Form("EtReconstructed%sPiMinusAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtK);
273 FillHisto2D(Form("EtReconstructed%sPiMinusAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtP);
641e1e0c 274 filled = true;
275 }
4b40b2b1 276 if(pdgCode == fgKPlusCode){
641e1e0c 277 float myEt = Et(simPart);
4b40b2b1 278 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 279 float myEtP = Et(simPart,fgProtonMass);
cf6522d1 280 FillHisto2D(Form("EtReconstructed%sKPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
281 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
282 FillHisto2D(Form("EtNReconstructed%sKPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
283 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
284 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
285 FillHisto2D(Form("EtReconstructed%sKPlusAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
86d9d0dc 286 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
287 FillHisto2D(Form("EtReconstructed%sKPlusAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
288 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtP);
289 FillHisto2D(Form("EtReconstructed%sKPlusAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtP);
641e1e0c 290 filled = true;
291 }
4b40b2b1 292 if(pdgCode == fgKMinusCode){
641e1e0c 293 float myEt = Et(simPart);
4b40b2b1 294 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 295 float myEtP = Et(simPart,fgProtonMass);
cf6522d1 296 FillHisto2D(Form("EtReconstructed%sKMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
297 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
298 FillHisto2D(Form("EtNReconstructed%sKMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
299 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
300 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
301 FillHisto2D(Form("EtReconstructed%sKMinusAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
86d9d0dc 302 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
303 FillHisto2D(Form("EtReconstructed%sKMinusAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
304 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtP);
305 FillHisto2D(Form("EtReconstructed%sKMinusAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtP);
641e1e0c 306 filled = true;
307 }
4b40b2b1 308 if(pdgCode == fgProtonCode){
641e1e0c 309 float myEt = Et(simPart);
4b40b2b1 310 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 311 float myEtK = Et(simPart,fgKaonMass);
cf6522d1 312 FillHisto2D(Form("EtReconstructed%sProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
313 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
314 FillHisto2D(Form("EtNReconstructed%sProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
315 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
316 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
317 FillHisto2D(Form("EtReconstructed%sProtonAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
86d9d0dc 318 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtK);
319 FillHisto2D(Form("EtReconstructed%sProtonAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtK);
320 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
321 FillHisto2D(Form("EtReconstructed%sProtonAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
641e1e0c 322 filled = true;
f43fc416 323
324 if(fBaryonEnhancement){
325 float enhancement = ProtonBaryonEnhancement(track->Pt());
326 FillHisto2D(Form("EtReconstructed%sProtonEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt*enhancement);
327 FillHisto2D(Form("EtNReconstructed%sProtonEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt*enhancement);
328 FillHisto2D(Form("EtReconstructed%sProtonAssumingPionEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi*enhancement);
329 }
330
641e1e0c 331 }
4b40b2b1 332 if(pdgCode == fgAntiProtonCode){
641e1e0c 333 float myEt = Et(simPart);
4b40b2b1 334 float myEtPi = Et(simPart,fgPionMass);
86d9d0dc 335 float myEtK = Et(simPart,fgKaonMass);
cf6522d1 336 FillHisto2D(Form("EtReconstructed%sAntiProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
337 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
338 FillHisto2D(Form("EtNReconstructed%sAntiProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
339 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
340 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
341 FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
86d9d0dc 342 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtK);
343 FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingKaon",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtK);
344 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
345 FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
641e1e0c 346 filled = true;
f43fc416 347 if(fBaryonEnhancement){
348 float enhancement = ProtonBaryonEnhancement(track->Pt());
349 FillHisto2D(Form("EtReconstructed%sAntiProtonEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt*enhancement);
350 FillHisto2D(Form("EtNReconstructed%sAntiProtonEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt*enhancement);
351 FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingPionEnhanced",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi*enhancement);
352 }
641e1e0c 353 }
4b40b2b1 354 if(pdgCode == fgEPlusCode){
641e1e0c 355 float myEt = Et(simPart);
cf6522d1 356 FillHisto2D(Form("EtReconstructed%sEPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
357 if(!isElectron || unidentified){
4b40b2b1 358 float myEtPi = Et(simPart,fgPionMass);
cf6522d1 359 FillHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
641e1e0c 360 }
361 filled = true;
362 }
4b40b2b1 363 if(pdgCode == fgEMinusCode){
cf6522d1 364 if(!isElectron || unidentified){
4b40b2b1 365 float myEtPi = Et(simPart,fgPionMass);
cf6522d1 366 FillHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
641e1e0c 367 }
368 float myEt = Et(simPart);
cf6522d1 369 FillHisto2D(Form("EtReconstructed%sEMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
641e1e0c 370 filled = true;
371 }
641e1e0c 372 }
373
374 }
375 else{//not a primary - we're after V0 daughters!
0e866ddc 376 if (TMath::Abs(simPart->Eta()) < fCuts->GetCommonEtaCut()){
377 TParticle *mom = stack->Particle(simPart->GetFirstMother());
378 if(mom){
379 TParticlePDG *pc = mom->GetPDG(0);
380 if(pc){
381 Int_t pdgCode = mom->GetPDG(0)->PdgCode();
382 if(pdgCode == fgLambdaCode){
383 float myEt = Et(simPart);
384 FillHisto2D(Form("EtReconstructed%sLambdaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
0f97be4c 385 Float_t weight = LambdaWeight(mom->Pt());
f43fc416 386 if(fBaryonEnhancement){
387 float enhancement = ProtonBaryonEnhancement(track->Pt());
388 weight = weight*enhancement;
389 }
0f97be4c 390 FillHisto2D(Form("EtReconstructed%sLambdaDaughtersReweighted",cutName->Data()),track->Pt(),track->Eta(),myEt*weight);
0e866ddc 391 }
392 if(pdgCode == fgAntiLambdaCode){
393 float myEt = Et(simPart);
394 FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
0f97be4c 395 Float_t weight = AntiLambdaWeight(mom->Pt());
f43fc416 396 if(fBaryonEnhancement){
397 float enhancement = ProtonBaryonEnhancement(track->Pt());
398 weight = weight*enhancement;
399 }
0f97be4c 400 FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughtersReweighted",cutName->Data()),track->Pt(),track->Eta(),myEt*weight);
0e866ddc 401 }
402 if(pdgCode == fgK0SCode){
403 float myEt = Et(simPart);
404 FillHisto2D(Form("EtReconstructed%sK0SDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
0f97be4c 405 Float_t weight = K0Weight(mom->Pt());
406 FillHisto2D(Form("EtReconstructed%sK0SDaughtersReweighted",cutName->Data()),track->Pt(),track->Eta(),myEt*weight);
0e866ddc 407 }
408 if(pdgCode == fgXiCode){
409 float myEt = Et(simPart);
410 FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
411 }
412 if(pdgCode == fgAntiXiCode){
413 float myEt = Et(simPart);
414 FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
415 }
416 if(pdgCode == fgOmegaCode){
417 float myEt = Et(simPart);
418 FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
419 }
420 if(pdgCode == fgXiCode){
421 float myEt = Et(simPart);
422 FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
423 }
641e1e0c 424
0e866ddc 425 if(mom->GetFirstMother()>0){
426 TParticle *grandma = stack->Particle(mom->GetFirstMother());
427 if(grandma){
428 Int_t pdgCodeMom = mom->GetPDG(0)->PdgCode();
429 if(pdgCodeMom==fgPiPlusCode || pdgCodeMom==fgPiMinusCode || pdgCodeMom==fgProtonCode ||pdgCodeMom==fgAntiProtonCode || pdgCodeMom==fgKPlusCode || pdgCode==fgKMinusCode){
0e866ddc 430 Int_t pdgCodeGrandma = grandma->GetPDG(0)->PdgCode();
641e1e0c 431
0e866ddc 432 if(pdgCodeGrandma == fgXiCode){
433 float myEt = Et(simPart);
434 FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
435 }
436 if(pdgCodeGrandma == fgAntiXiCode){
437 float myEt = Et(simPart);
438 FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
439 }
440 if(pdgCodeGrandma == fgOmegaCode){
441 float myEt = Et(simPart);
442 FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
443 }
444 if(pdgCodeGrandma == fgXiCode){
445 float myEt = Et(simPart);
446 FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
447 }
641e1e0c 448
0e866ddc 449 }
641e1e0c 450 }
451 }
452 }
453 }
454 }
455 }
456 }
457
458 }
459 }
460 delete list;
461 }
464aa50c 462 delete pID;
463 delete strTPC;
464 delete strITS;
465 delete strTPCITS;
641e1e0c 466 //delete AliESDpid;
467 return 1;
468}
469Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
cf6522d1 470{ // analyse MC event
641e1e0c 471 ResetEventValues();
472
473 // Get us an mc event
474 AliMCEvent *mcEvent = dynamic_cast<AliMCEvent*>(ev);
475
476 // Let's play with the stack!
477 AliStack *stack = mcEvent->Stack();
478
479 Int_t nPrim = stack->GetNtrack();
480
0e866ddc 481 Float_t fSimPiKPEtPtSmeared = 0;
482 Float_t fSimPiKPEtEfficiencySmeared = 0;
483 Float_t fSimPiKPEtPtCutSmearedTPC = 0;
484 Float_t fSimPiKPEtPtCutSmearedITS = 0;
485 Float_t fSimPiKPEtPIDSmeared = 0;
486 Float_t fSimPiKPEtPIDSmearedNoID = 0;
641e1e0c 487 //=================Tracks which may or may not have been reconstructed=================
488
489 for (Int_t iPart = 0; iPart < nPrim; iPart++)
490 {
491
ea331c5d 492 TParticle *part = stack->Particle(iPart);//This line is identified as a loss of memory by valgrind, however, the pointer still belongs to the stack, so it's the stack's problem
641e1e0c 493
494 if (!part)
495 {
496 Printf("ERROR: Could not get particle %d", iPart);
497 continue;
498 }
499
964c8159 500 //TParticlePDG *pc = part->GetPDG(0);
641e1e0c 501
502 // Check if it is a primary particle
f427cbed 503 if (stack->IsPhysicalPrimary(iPart)){//primaries
641e1e0c 504
4998becf 505 if (TMath::Abs(part->Eta()) < fCuts->GetCommonEtaCut()) {
641e1e0c 506
507 Int_t pdgCode = part->GetPDG(0)->PdgCode();
641e1e0c 508 bool filled = false;
0e866ddc 509 //Investigating smearing...
510 //Numbers are realistic correction factors from previous studies
7d2d1773 511 if(fInvestigateSmearing){
512 if(pdgCode==fgPiPlusCode ||pdgCode==fgPiMinusCode ||pdgCode==fgKPlusCode ||pdgCode==fgKMinusCode ||pdgCode==fgProtonCode ||pdgCode==fgAntiProtonCode){
513 //To investigate Smearing...
514 Float_t myet = Et(part);
515 fSimPiKPEt += myet;
516 Float_t theta = part->Theta();
517 Short_t charge = 1;
518 Float_t momentum = part->P();
519 //pt smearing
520 Float_t pSmeared = momentum * fPtSmearer->Gaus(1,0.005);//Gaussian centered around 1
521 fSimPiKPEtPtSmeared += Et(pSmeared,theta,pdgCode,charge);
522 //Efficiency smearing
523 float efficiency = 2.26545*TMath::Exp(-TMath::Power(9.99977e-01/part->Pt(),7.85488e-02));//simple rough efficiency from fitting curve
524 if(fPtSmearer->Binomial(1,efficiency) ==1){
525 fSimPiKPEtEfficiencySmeared += (1.0/efficiency)*myet;
526 }
527 //pT cut smeared
528 if(part->Pt()>0.10){fSimPiKPEtPtCutSmearedITS +=1.00645645*myet;}
529 if(part->Pt()>0.15){fSimPiKPEtPtCutSmearedTPC +=1.02000723*myet;}
530 //PID smearing
531 fSimPiKPEtPIDSmearedNoID += 1.02679314*Et(momentum,theta,fgPiPlusCode,charge);
532 if(part->P()<1.0){//then the particle would have been ID'd
533 fSimPiKPEtPIDSmeared += 1.0085942*myet;
534 }
535 else{//Then it would have been assumed to be a pion
536 fSimPiKPEtPIDSmeared += 1.0085942*Et(momentum,theta,fgPiPlusCode,charge);
537 }
0e866ddc 538 }
539 }
540
641e1e0c 541 //============Charged hadrons===================================
4b40b2b1 542 if(pdgCode == fgPiPlusCode){
641e1e0c 543 float myEt = Et(part);
86d9d0dc 544 float myEtP = Et(part,fgProtonMass);
545 float myEtK = Et(part,fgKaonMass);
0e866ddc 546
d6214a64 547 fSimHadEt += myEt;
548 fSimTotEt += myEt;
0e866ddc 549
641e1e0c 550 FillHisto2D("EtSimulatedPiPlus",part->Pt(),part->Eta(),myEt);
551 FillHisto2D("EtNSimulatedPiPlus",part->Pt(),part->Eta(),1.0);
552 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
553 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
554 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEt);
86d9d0dc 555 FillHisto2D("EtSimulatedChargedHadronAssumingProton",part->Pt(),part->Eta(),myEtP);
556 FillHisto2D("EtSimulatedPiPlusAssumingProton",part->Pt(),part->Eta(),myEtP);
557 FillHisto2D("EtSimulatedChargedHadronAssumingKaon",part->Pt(),part->Eta(),myEtK);
558 FillHisto2D("EtSimulatedPiPlusAssumingKaon",part->Pt(),part->Eta(),myEtK);
641e1e0c 559 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 560 Short_t charge = 1;
561 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
562 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
563 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
564 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
565 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
566 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 567 filled = true;
568 }
4b40b2b1 569 if(pdgCode == fgPiMinusCode){
641e1e0c 570 float myEt = Et(part);
86d9d0dc 571 float myEtP = Et(part,fgProtonMass);
572 float myEtK = Et(part,fgKaonMass);
d6214a64 573 fSimHadEt += myEt;
574 fSimTotEt += myEt;
641e1e0c 575 FillHisto2D("EtSimulatedPiMinus",part->Pt(),part->Eta(),myEt);
576 FillHisto2D("EtNSimulatedPiMinus",part->Pt(),part->Eta(),1.0);
577 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
578 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
579 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEt);
86d9d0dc 580 FillHisto2D("EtSimulatedChargedHadronAssumingProton",part->Pt(),part->Eta(),myEtP);
581 FillHisto2D("EtSimulatedPiMinusAssumingProton",part->Pt(),part->Eta(),myEtP);
582 FillHisto2D("EtSimulatedChargedHadronAssumingKaon",part->Pt(),part->Eta(),myEtK);
583 FillHisto2D("EtSimulatedPiMinusAssumingKaon",part->Pt(),part->Eta(),myEtK);
641e1e0c 584 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 585 Short_t charge = -1;
586 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
587 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
588 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
589 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
590 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
591 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 592 filled = true;
593 }
4b40b2b1 594 if(pdgCode == fgKPlusCode){
641e1e0c 595 float myEt = Et(part);
4b40b2b1 596 float myEtPi = Et(part,fgPionMass);
86d9d0dc 597 float myEtP = Et(part,fgProtonMass);
d6214a64 598 fSimHadEt += myEt;
599 fSimTotEt += myEt;
641e1e0c 600 FillHisto2D("EtSimulatedKPlus",part->Pt(),part->Eta(),myEt);
601 FillHisto2D("EtNSimulatedKPlus",part->Pt(),part->Eta(),1.0);
602 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
603 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
604 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
605 FillHisto2D("EtSimulatedKPlusAssumingPion",part->Pt(),part->Eta(),myEtPi);
86d9d0dc 606 FillHisto2D("EtSimulatedChargedHadronAssumingProton",part->Pt(),part->Eta(),myEtP);
607 FillHisto2D("EtSimulatedKPlusAssumingProton",part->Pt(),part->Eta(),myEtP);
641e1e0c 608 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 609 Short_t charge = 1;
610 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
611 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
612 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
613 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
614 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
615 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 616 filled = true;
617 }
4b40b2b1 618 if(pdgCode == fgKMinusCode){
641e1e0c 619 float myEt = Et(part);
4b40b2b1 620 float myEtPi = Et(part,fgPionMass);
86d9d0dc 621 float myEtP = Et(part,fgProtonMass);
d6214a64 622 fSimHadEt += myEt;
623 fSimTotEt += myEt;
641e1e0c 624 FillHisto2D("EtSimulatedKMinus",part->Pt(),part->Eta(),myEt);
625 FillHisto2D("EtNSimulatedKMinus",part->Pt(),part->Eta(),1.0);
626 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
627 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
628 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
629 FillHisto2D("EtSimulatedKMinusAssumingPion",part->Pt(),part->Eta(),myEtPi);
86d9d0dc 630 FillHisto2D("EtSimulatedChargedHadronAssumingProton",part->Pt(),part->Eta(),myEtP);
631 FillHisto2D("EtSimulatedKMinusAssumingProton",part->Pt(),part->Eta(),myEtP);
641e1e0c 632 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 633 Short_t charge = -1;
634 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
635 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
636 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
637 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
638 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
639 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 640 filled = true;
641 }
4b40b2b1 642 if(pdgCode == fgProtonCode){
641e1e0c 643 float myEt = Et(part);
4b40b2b1 644 float myEtPi = Et(part,fgPionMass);
86d9d0dc 645 float myEtK = Et(part,fgKaonMass);
d6214a64 646 fSimHadEt += myEt;
647 fSimTotEt += myEt;
641e1e0c 648 FillHisto2D("EtSimulatedProton",part->Pt(),part->Eta(),myEt);
649 FillHisto2D("EtNSimulatedProton",part->Pt(),part->Eta(),1.0);
650 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
651 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
652 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
653 FillHisto2D("EtSimulatedProtonAssumingPion",part->Pt(),part->Eta(),myEtPi);
86d9d0dc 654 FillHisto2D("EtSimulatedChargedHadronAssumingKaon",part->Pt(),part->Eta(),myEtK);
655 FillHisto2D("EtSimulatedProtonAssumingKaon",part->Pt(),part->Eta(),myEtK);
641e1e0c 656 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 657 Short_t charge = 1;
658 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
659 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
660 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
661 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
662 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
663 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 664 filled = true;
f43fc416 665 if(fBaryonEnhancement){
666 float enhancement = ProtonBaryonEnhancement(part->Pt());
667 FillHisto2D("EtSimulatedProtonEnhanced",part->Pt(),part->Eta(),myEt*enhancement);
668 FillHisto2D("EtNSimulatedProtonEnhanced",part->Pt(),part->Eta(),1.0*enhancement);
669 FillHisto2D("EtSimulatedProtonAssumingPionEnhanced",part->Pt(),part->Eta(),myEtPi*enhancement);
670 }
641e1e0c 671 }
4b40b2b1 672 if(pdgCode == fgAntiProtonCode){
641e1e0c 673 float myEt = Et(part);
4b40b2b1 674 float myEtPi = Et(part,fgPionMass);
86d9d0dc 675 float myEtK = Et(part,fgKaonMass);
d6214a64 676 fSimHadEt += myEt;
677 fSimTotEt += myEt;
641e1e0c 678 FillHisto2D("EtSimulatedAntiProton",part->Pt(),part->Eta(),myEt);
679 FillHisto2D("EtNSimulatedAntiProton",part->Pt(),part->Eta(),1.0);
680 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
681 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
682 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
683 FillHisto2D("EtSimulatedAntiProtonAssumingPion",part->Pt(),part->Eta(),myEtPi);
86d9d0dc 684 FillHisto2D("EtSimulatedChargedHadronAssumingKaon",part->Pt(),part->Eta(),myEtK);
685 FillHisto2D("EtSimulatedAntiProtonAssumingKaon",part->Pt(),part->Eta(),myEtK);
641e1e0c 686 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
0e866ddc 687 Short_t charge = -1;
688 Float_t myEtLow = Et(0.0,part->Theta(),pdgCode,charge);
689 Float_t myEtITS = Et(0.10/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
690 Float_t myEtTPC = Et(0.15/TMath::Sin(part->Theta()),part->Theta(),pdgCode,charge);
691 FillHisto2D("EtSimulatedChargedHadronAssumingNoPt",part->Pt(),part->Eta(),myEtLow);
692 FillHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut",part->Pt(),part->Eta(),myEtTPC);
693 FillHisto2D("EtSimulatedChargedHadronAssumingPtITSCut",part->Pt(),part->Eta(),myEtITS);
641e1e0c 694 filled = true;
f43fc416 695 if(fBaryonEnhancement){
696 float enhancement = ProtonBaryonEnhancement(part->Pt());
697 FillHisto2D("EtSimulatedAntiProtonEnhanced",part->Pt(),part->Eta(),myEt*enhancement);
698 FillHisto2D("EtNSimulatedAntiProtonEnhanced",part->Pt(),part->Eta(),1.0*enhancement);
699 FillHisto2D("EtSimulatedAntiProtonAssumingPionEnhanced",part->Pt(),part->Eta(),myEtPi*enhancement);
700 }
641e1e0c 701 }
702 //============Other hadrons===================================
703
4b40b2b1 704 if(pdgCode == fgNeutronCode){
641e1e0c 705 float myEt = Et(part);
d6214a64 706 fSimHadEt += myEt;
707 fSimTotEt += myEt;
641e1e0c 708 FillHisto2D("EtSimulatedNeutron",part->Pt(),part->Eta(),myEt);
709 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
710 filled = true;
711 }
4b40b2b1 712 if(pdgCode == fgAntiNeutronCode){
641e1e0c 713 float myEt = Et(part);
d6214a64 714 fSimHadEt += myEt;
715 fSimTotEt += myEt;
641e1e0c 716 FillHisto2D("EtSimulatedAntiNeutron",part->Pt(),part->Eta(),myEt);
717 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
718 filled = true;
719 }
4b40b2b1 720 if(pdgCode == fgLambdaCode){
641e1e0c 721 float myEt = Et(part);
d6214a64 722 fSimHadEt += myEt;
723 fSimTotEt += myEt;
641e1e0c 724 //cout<<"I am a simulated lambda! pt "<<part->Pt()<<" eta "<<part->Eta()<<endl;
725 FillHisto2D("EtSimulatedLambda",part->Pt(),part->Eta(),myEt);
726 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
964c8159 727 Float_t weight = LambdaWeight(part->Pt());
f43fc416 728 if(fBaryonEnhancement){
729 float enhancement = ProtonBaryonEnhancement(part->Pt());
730 weight = weight*enhancement;
731 }
964c8159 732 FillHisto2D("EtSimulatedLambdaReweighted",part->Pt(),part->Eta(),myEt*weight);
641e1e0c 733 Int_t ndaughters = part->GetNDaughters();
734 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
735 Int_t daughterindex = part->GetDaughter(idaughter);
736 if(daughterindex<0 || daughterindex>1e5) continue;
737 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
738 if(daughter){
739 if(daughter->GetPDG(0)){
740 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 741 if(daughtercode==fgPiMinusCode || daughtercode==fgProtonCode){
641e1e0c 742 myEt = Et(daughter);
743 FillHisto2D("EtSimulatedLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt);
964c8159 744 FillHisto2D("EtSimulatedLambdaDaughtersReweighted",daughter->Pt(),daughter->Eta(),myEt*weight);
641e1e0c 745 //cout<<"Lambda daughter is a "<<daughter->GetName()<<endl;
746 }
747 }
748 else{
749 //cout<<"Lambda daughter is a "<<daughter->GetName()<<endl;
750 }
751 }
752 }
753 filled = true;
754 }
4b40b2b1 755 if(pdgCode == fgAntiLambdaCode){
641e1e0c 756 float myEt = Et(part);
d6214a64 757 fSimHadEt += myEt;
758 fSimTotEt += myEt;
641e1e0c 759 FillHisto2D("EtSimulatedAntiLambda",part->Pt(),part->Eta(),myEt);
760 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
964c8159 761 Float_t weight = AntiLambdaWeight(part->Pt());
f43fc416 762 if(fBaryonEnhancement){
763 float enhancement = ProtonBaryonEnhancement(part->Pt());
764 weight = weight*enhancement;
765 }
964c8159 766 FillHisto2D("EtSimulatedAntiLambdaReweighted",part->Pt(),part->Eta(),myEt*weight);
641e1e0c 767 Int_t ndaughters = part->GetNDaughters();
768 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
769 Int_t daughterindex = part->GetDaughter(idaughter);
770 if(daughterindex<0 || daughterindex>1e5) continue;
771 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
772 if(daughter){
773 if(daughter->GetPDG(0)){
774 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 775 if(daughtercode==fgPiPlusCode || daughtercode==fgAntiProtonCode){
641e1e0c 776 myEt = Et(daughter);
777 FillHisto2D("EtSimulatedAntiLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt);
964c8159 778 FillHisto2D("EtSimulatedAntiLambdaDaughtersReweighted",daughter->Pt(),daughter->Eta(),myEt*weight);
641e1e0c 779 //cout<<"AntiLambda daughter is a "<<daughter->GetName()<<endl;
780 }
781 }
782 else{
783 //cout<<"AntiLambda daughter is a "<<daughter->GetName()<<endl;
784 }
785 }
786 }
787 filled = true;
788 }
4b40b2b1 789 if(pdgCode == fgK0SCode){
641e1e0c 790 float myEt = Et(part);
d6214a64 791 fSimHadEt += myEt;
792 fSimTotEt += myEt;
641e1e0c 793 FillHisto2D("EtSimulatedK0S",part->Pt(),part->Eta(),myEt);
794 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
964c8159 795 Float_t weight = K0Weight(part->Pt());
796 FillHisto2D("EtSimulatedK0SReweighted",part->Pt(),part->Eta(),myEt*weight);
641e1e0c 797 Int_t ndaughters = part->GetNDaughters();
798 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
799 Int_t daughterindex = part->GetDaughter(idaughter);
800 if(daughterindex<0 || daughterindex>1e5) continue;
801 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
802 if(daughter){
803 if(daughter->GetPDG(0)){
804
805 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 806 if(daughtercode==fgPiMinusCode || daughtercode==fgPiPlusCode){
641e1e0c 807 myEt = Et(daughter);
808 FillHisto2D("EtSimulatedK0SDaughters",daughter->Pt(),daughter->Eta(),myEt);
964c8159 809 FillHisto2D("EtSimulatedK0SDaughtersReweighted",daughter->Pt(),daughter->Eta(),myEt*weight);
641e1e0c 810 //cout<<"K0S daughter is a "<<daughter->GetName()<<endl;
811 }
812 }
813 else{
814 //cout<<"K0S daughter is a "<<daughter->GetName()<<endl;
815 }
816 }
817 }
818 filled = true;
819 }
4b40b2b1 820 if(pdgCode == fgK0LCode){
641e1e0c 821 float myEt = Et(part);
d6214a64 822 fSimHadEt += myEt;
823 fSimTotEt += myEt;
641e1e0c 824 FillHisto2D("EtSimulatedK0L",part->Pt(),part->Eta(),myEt);
825 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
964c8159 826 Float_t weight = K0Weight(part->Pt());
827 FillHisto2D("EtSimulatedK0LReweighted",part->Pt(),part->Eta(),myEt*weight);
641e1e0c 828 filled = true;
829 }
4b40b2b1 830 if(pdgCode == fgOmegaCode){
641e1e0c 831 float myEt = Et(part);
d6214a64 832 fSimHadEt += myEt;
833 fSimTotEt += myEt;
641e1e0c 834 FillHisto2D("EtSimulatedOmega",part->Pt(),part->Eta(),myEt);
835 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
836 Int_t ndaughters = part->GetNDaughters();
837 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
838 Int_t daughterindex = part->GetDaughter(idaughter);
839 if(daughterindex<0 || daughterindex>1e5) continue;
840 TParticle *daughter = stack->Particle(daughterindex);
841 if(daughter){
842 if(daughter->GetPDG(0)){
843
844 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 845 if(daughtercode==fgPiPlusCode || daughtercode==fgProtonCode || daughtercode==fgKMinusCode){
641e1e0c 846 myEt = Et(daughter);
847 FillHisto2D("EtSimulatedOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt);
848 //cout<<"Omega daughter is a "<<daughter->GetName()<<endl;
849 }
850 }
851 else{
852 //cout<<"Omega daughter is a "<<daughter->GetName()<<endl;
853 }
854 }
855 }
856 filled = true;
857 }
4b40b2b1 858 if(pdgCode == fgAntiOmegaCode){
641e1e0c 859 float myEt = Et(part);
d6214a64 860 fSimHadEt += myEt;
861 fSimTotEt += myEt;
641e1e0c 862 FillHisto2D("EtSimulatedOmega",part->Pt(),part->Eta(),myEt);
863 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
864 Int_t ndaughters = part->GetNDaughters();
865 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
866 Int_t daughterindex = part->GetDaughter(idaughter);
867 if(daughterindex<0 || daughterindex>1e5) continue;
868 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
869 if(daughter){
870 if(daughter->GetPDG(0)){
871 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 872 if(daughtercode==fgPiMinusCode || daughtercode==fgAntiProtonCode || daughtercode==fgKPlusCode){
641e1e0c 873 myEt = Et(daughter);
874 FillHisto2D("EtSimulatedAntiOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt);
875 //cout<<"AntiOmega daughter is a "<<daughter->GetName()<<endl;
876 }
877 }
878 else{
879 //cout<<"AntiOmega daughter is a "<<daughter->GetName()<<endl;
880 }
881 }
882 }
883 filled = true;
884 }
885 //There are two codes for Sigmas
4b40b2b1 886 if(pdgCode == fgSigmaCode || pdgCode == -3222){
641e1e0c 887 float myEt = Et(part);
d6214a64 888 fSimHadEt += myEt;
889 fSimTotEt += myEt;
641e1e0c 890 FillHisto2D("EtSimulatedSigma",part->Pt(),part->Eta(),myEt);
891 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
892 filled = true;
893 }
4b40b2b1 894 if(pdgCode == fgAntiSigmaCode || pdgCode == 3222){
641e1e0c 895 float myEt = Et(part);
d6214a64 896 fSimHadEt += myEt;
897 fSimTotEt += myEt;
641e1e0c 898 FillHisto2D("EtSimulatedAntiSigma",part->Pt(),part->Eta(),myEt);
899 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
900 filled = true;
901 }
4b40b2b1 902 if(pdgCode == fgXiCode){
641e1e0c 903 float myEt = Et(part);
d6214a64 904 fSimHadEt += myEt;
905 fSimTotEt += myEt;
641e1e0c 906 FillHisto2D("EtSimulatedXi",part->Pt(),part->Eta(),myEt);
907 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
908 Int_t ndaughters = part->GetNDaughters();
909 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
910 Int_t daughterindex = part->GetDaughter(idaughter);
911 if(daughterindex<0 || daughterindex>1e5 || daughterindex>1e5) continue;
912 //cerr<<"Daughter index "<<daughterindex<<" npart "<<nPrim<<endl;
913 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
914 if(daughter){
915 if(daughter->GetPDG(0)){
916
917 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 918 if(daughtercode==fgPiPlusCode || daughtercode==fgProtonCode || daughtercode==fgPiMinusCode){
641e1e0c 919 myEt = Et(daughter);
920 FillHisto2D("EtSimulatedXiDaughters",daughter->Pt(),daughter->Eta(),myEt);
921 //cout<<"Xi daughter is a "<<daughter->GetName()<<endl;
922 }
923 }
924 else{
925 //cout<<"Xi daughter is a "<<daughter->GetName()<<endl;
926 }
927 }
928 }
929 filled = true;
930 }
4b40b2b1 931 if(pdgCode == fgAntiXiCode){
641e1e0c 932 float myEt = Et(part);
d6214a64 933 fSimHadEt += myEt;
934 fSimTotEt += myEt;
641e1e0c 935 FillHisto2D("EtSimulatedAntiXi",part->Pt(),part->Eta(),myEt);
936 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
937 Int_t ndaughters = part->GetNDaughters();
938 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
939 Int_t daughterindex = part->GetDaughter(idaughter);
940 if(daughterindex<0 || daughterindex>1e5) continue;
941 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
942 if(daughter){
943 if(daughter->GetPDG(0)){
944 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
4b40b2b1 945 if(daughtercode==fgPiPlusCode || daughtercode==fgAntiProtonCode || daughtercode==fgPiMinusCode){
641e1e0c 946 myEt = Et(daughter);
947 FillHisto2D("EtSimulatedAntiXiDaughters",daughter->Pt(),daughter->Eta(),myEt);
948 //cout<<"AntiXi daughter is a "<<daughter->GetName()<<endl;
949 }
950 }
951 else{
952 //cout<<"AntiXi daughter is a "<<daughter->GetName()<<endl;
953 }
954 }
955 }
956 filled = true;
957 }
4b40b2b1 958 if(pdgCode == fgXi0Code){
641e1e0c 959 float myEt = Et(part);
d6214a64 960 fSimHadEt += myEt;
961 fSimTotEt += myEt;
641e1e0c 962 FillHisto2D("EtSimulatedXi0",part->Pt(),part->Eta(),myEt);
963 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
964 filled = true;
965 }
4b40b2b1 966 if(pdgCode == fgAntiXi0Code){
641e1e0c 967 float myEt = Et(part);
d6214a64 968 fSimHadEt += myEt;
969 fSimTotEt += myEt;
641e1e0c 970 FillHisto2D("EtSimulatedAntiXi0",part->Pt(),part->Eta(),myEt);
971 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
972 filled = true;
973 }
974 //============electrons===================================
975
4b40b2b1 976 if(pdgCode == fgEPlusCode){
641e1e0c 977 float myEt = Et(part);
d6214a64 978 fSimTotEt += myEt;
641e1e0c 979 FillHisto2D("EtSimulatedEPlus",part->Pt(),part->Eta(),myEt);
980 filled = true;
981 }
4b40b2b1 982 if(pdgCode == fgEMinusCode){
641e1e0c 983 float myEt = Et(part);
d6214a64 984 fSimTotEt += myEt;
641e1e0c 985 FillHisto2D("EtSimulatedEMinus",part->Pt(),part->Eta(),myEt);
986 filled = true;
987 }
f427cbed 988 //============neutrals===================================
4b40b2b1 989 if(pdgCode == fgGammaCode){
b64de20c 990 TParticle *mom = stack->Particle(part->GetFirstMother());
991 Int_t pdgCodeMom = mom->GetPDG(0)->PdgCode();
992 //cout<<"I am a gamma and my mom is "<<mom->GetName()<<endl;
4e0c0fe1 993 //We want to separate the gammas by pi0, eta, omega0 but we don't want to double count energy so we get the et from the gamma daughter
4b40b2b1 994 if(pdgCodeMom == fgEtaCode){
4e0c0fe1 995 float myEt = Et(part);
996 fSimTotEt += myEt;
b64de20c 997 FillHisto2D("EtSimulatedEta",mom->Pt(),mom->Eta(),myEt);
998 filled = true;
999 }
4b40b2b1 1000 if(pdgCodeMom == fgPi0Code){
4e0c0fe1 1001 float myEt = Et(part);
1002 fSimTotEt += myEt;
b64de20c 1003 FillHisto2D("EtSimulatedPi0",mom->Pt(),mom->Eta(),myEt);
1004 filled = true;
1005 }
4b40b2b1 1006 if(pdgCodeMom == fgOmega0Code){
4e0c0fe1 1007 float myEt = Et(part);
1008 fSimTotEt += myEt;
b64de20c 1009 FillHisto2D("EtSimulatedOmega0",mom->Pt(),mom->Eta(),myEt);
1010 filled = true;
1011 }
1012 if(!filled){
1013 float myEt = Et(part);
4e0c0fe1 1014 fSimTotEt += myEt;
b64de20c 1015 FillHisto2D("EtSimulatedGamma",part->Pt(),part->Eta(),myEt);
1016 filled = true;
1017 }
f427cbed 1018 }
4b40b2b1 1019 if(pdgCode == fgEtaCode){
f427cbed 1020 float myEt = Et(part);
d6214a64 1021 fSimTotEt += myEt;
f427cbed 1022 FillHisto2D("EtSimulatedEta",part->Pt(),part->Eta(),myEt);
1023 filled = true;
1024 }
4b40b2b1 1025 if(pdgCode == fgPi0Code){
f427cbed 1026 float myEt = Et(part);
d6214a64 1027 fSimTotEt += myEt;
f427cbed 1028 FillHisto2D("EtSimulatedPi0",part->Pt(),part->Eta(),myEt);
1029 filled = true;
1030 }
4b40b2b1 1031 if(pdgCode == fgOmega0Code){
b64de20c 1032 float myEt = Et(part);
d6214a64 1033 fSimTotEt += myEt;
b64de20c 1034 FillHisto2D("EtSimulatedOmega0",part->Pt(),part->Eta(),myEt);
1035 filled = true;
1036 }
641e1e0c 1037 if(!filled){
f427cbed 1038 //if( strcmp(pc->ParticleClass(),"Baryon")==0 || strcmp(pc->ParticleClass(),"Meson")==0 ){
964c8159 1039 //cout<<"Did not find a place for "<<part->GetName()<<" "<<pdgCode<<" which is a "<<pc->ParticleClass()<<endl;
f427cbed 1040 //}
641e1e0c 1041 }
1042 }
1043 }
1044 }
1045
0e866ddc 1046 if(fSimTotEt>0.0)FillHisto1D("SimTotEt",fSimTotEt,1.0);
1047 if(fSimHadEt>0.0)FillHisto1D("SimHadEt",fSimHadEt,1.0);
1048 if(fSimPiKPEt>0.0)FillHisto1D("SimPiKPEt",fSimPiKPEt,1.0);
1049
7d2d1773 1050 if(fInvestigateSmearing){
1051 //Smearing histograms
1052 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPtSmeared",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPtSmeared)/fSimPiKPEt,1.0);
1053 FillHisto1D("SimPiKPEtPtSmeared",fSimPiKPEtPtSmeared,1.0);
1054 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimEfficiencySmeared",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtEfficiencySmeared)/fSimPiKPEt,1.0);
1055 FillHisto1D("SimPiKPEtEfficiencySmeared",fSimPiKPEtEfficiencySmeared,1.0);
1056 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPtCutSmearedTPC",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPtCutSmearedTPC)/fSimPiKPEt,1.0);
1057 FillHisto1D("SimPiKPEtPtCutSmearedTPC",fSimPiKPEtPtCutSmearedTPC,1.0);
1058 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPtCutSmearedITS",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPtCutSmearedITS)/fSimPiKPEt,1.0);
1059 FillHisto1D("SimPiKPEtPtCutSmearedITS",fSimPiKPEtPtCutSmearedTPC,1.0);
1060 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPIDSmeared",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPIDSmeared)/fSimPiKPEt,1.0);
1061 FillHisto1D("SimPiKPEtPIDSmeared",fSimPiKPEtPIDSmeared,1.0);
1062 if(fSimPiKPEt>0.0) FillHisto2D("SimPiKPEtMinusSimPIDSmearedNoID",fSimPiKPEt,(fSimPiKPEt-fSimPiKPEtPIDSmearedNoID)/fSimPiKPEt,1.0);
1063 FillHisto1D("SimPiKPEtPIDSmearedNoID",fSimPiKPEtPIDSmearedNoID,1.0);
1064 }
641e1e0c 1065 return 1;
1066
1067}
1068
1069void AliAnalysisHadEtMonteCarlo::Init()
cf6522d1 1070{ // Init
641e1e0c 1071 AliAnalysisHadEt::Init();
0e866ddc 1072 if(!fPtSmearer) fPtSmearer = new TRandom();
641e1e0c 1073}
1074void AliAnalysisHadEtMonteCarlo::CreateHistograms(){
1075 //for simulated Et only (no reconstruction)
1076 CreateEtaPtHisto2D(TString("EtSimulatedPiPlus"),TString("Simulated E_{T} from #pi^{+}"));
1077 CreateEtaPtHisto2D("EtSimulatedPiMinus","Simulated E_{T} from #pi^{-}");
1078 CreateEtaPtHisto2D("EtSimulatedKPlus","Simulated E_{T} from K^{+}");
1079 CreateEtaPtHisto2D("EtSimulatedKMinus","Simulated E_{T} from K^{-}");
1080 CreateEtaPtHisto2D("EtSimulatedProton","Simulated E_{T} from p");
f43fc416 1081 CreateEtaPtHisto2D("EtSimulatedAntiProton","Simulated E_{T} from #bar{p}");//Both baryon enhancement and strangeness rescaling
1082 if(fBaryonEnhancement){
1083 CreateEtaPtHisto2D("EtSimulatedProtonEnhanced","Simulated E_{T} from p");
1084 CreateEtaPtHisto2D("EtSimulatedAntiProtonEnhanced","Simulated E_{T} from #bar{p}");
1085 }
641e1e0c 1086 CreateEtaPtHisto2D("EtSimulatedChargedHadron","Simulated E_{T} from charged hadrons");
1087 CreateEtaPtHisto2D(TString("EtNSimulatedPiPlus"),TString("Number of Simulated #pi^{+}"));
1088 CreateEtaPtHisto2D("EtNSimulatedPiMinus","Number of simulated #pi^{-}");
1089 CreateEtaPtHisto2D("EtNSimulatedKPlus","Number of simulated K^{+}");
1090 CreateEtaPtHisto2D("EtNSimulatedKMinus","Number of simulated K^{-}");
1091 CreateEtaPtHisto2D("EtNSimulatedProton","Number of simulated p");
1092 CreateEtaPtHisto2D("EtNSimulatedAntiProton","Number of simulated #bar{p}");
f43fc416 1093 if(fBaryonEnhancement){
1094 CreateEtaPtHisto2D("EtNSimulatedProtonEnhanced","Number of simulated p");
1095 CreateEtaPtHisto2D("EtNSimulatedAntiProtonEnhanced","Number of simulated #bar{p}");
1096 }
641e1e0c 1097 CreateEtaPtHisto2D("EtNSimulatedChargedHadron","Number of simulated charged hadrons");
0e866ddc 1098 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingNoPt","Simulated E_{T} from charged hadrons assuming p_{T}=0");
1099 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingPtTPCCut","Simulated E_{T} from charged hadrons assuming p_{T}=0.15");
1100 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingPtITSCut","Simulated E_{T} from charged hadrons assuming p_{T}=0.10");
641e1e0c 1101
1102 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingPion","Simulated E_{T} from charged hadrons assuming they are all pions");
86d9d0dc 1103 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingProton","Simulated E_{T} from charged hadrons assuming they are all pions");
1104 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingKaon","Simulated E_{T} from charged hadrons assuming they are all pions");
641e1e0c 1105 CreateEtaPtHisto2D("EtSimulatedKPlusAssumingPion","Simulated E_{T} from K^{+} assuming #pi mass");
1106 CreateEtaPtHisto2D("EtSimulatedKMinusAssumingPion","Simulated E_{T} from K^{-} assuming #pi mass");
1107 CreateEtaPtHisto2D("EtSimulatedProtonAssumingPion","Simulated E_{T} from p assuming #pi mass");
1108 CreateEtaPtHisto2D("EtSimulatedAntiProtonAssumingPion","Simulated E_{T} from #bar{p} assuming #pi mass");
86d9d0dc 1109 CreateEtaPtHisto2D("EtSimulatedKPlusAssumingProton","Simulated E_{T} from K^{+} assuming #pi mass");
1110 CreateEtaPtHisto2D("EtSimulatedKMinusAssumingProton","Simulated E_{T} from K^{-} assuming #pi mass");
1111 CreateEtaPtHisto2D("EtSimulatedPiPlusAssumingProton","Simulated E_{T} from p assuming #pi mass");
1112 CreateEtaPtHisto2D("EtSimulatedPiMinusAssumingProton","Simulated E_{T} from #bar{p} assuming #pi mass");
1113 CreateEtaPtHisto2D("EtSimulatedPiPlusAssumingKaon","Simulated E_{T} from K^{+} assuming #pi mass");
1114 CreateEtaPtHisto2D("EtSimulatedPiMinusAssumingKaon","Simulated E_{T} from K^{-} assuming #pi mass");
1115 CreateEtaPtHisto2D("EtSimulatedProtonAssumingKaon","Simulated E_{T} from p assuming #pi mass");
1116 CreateEtaPtHisto2D("EtSimulatedAntiProtonAssumingKaon","Simulated E_{T} from #bar{p} assuming #pi mass");
f43fc416 1117 if(fBaryonEnhancement){
1118 CreateEtaPtHisto2D("EtSimulatedProtonAssumingPionEnhanced","Simulated E_{T} from p assuming #pi mass");
1119 CreateEtaPtHisto2D("EtSimulatedAntiProtonAssumingPionEnhanced","Simulated E_{T} from #bar{p} assuming #pi mass");
1120 }
641e1e0c 1121
1122 CreateEtaPtHisto2D("EtSimulatedLambda","Simulated E_{T} from #Lambda");
1123 CreateEtaPtHisto2D("EtSimulatedAntiLambda","Simulated E_{T} from #bar{#Lambda}");
1124 CreateEtaPtHisto2D("EtSimulatedK0S","Simulated E_{T} from K^{0}_{S}");
1125 CreateEtaPtHisto2D("EtSimulatedK0L","Simulated E_{T} from K^{0}_{L}");
f43fc416 1126 CreateEtaPtHisto2D("EtSimulatedLambdaReweighted","Simulated E_{T} from #Lambda");//These will also be used for baryon enhancement
964c8159 1127 CreateEtaPtHisto2D("EtSimulatedAntiLambdaReweighted","Simulated E_{T} from #bar{#Lambda}");
1128 CreateEtaPtHisto2D("EtSimulatedK0SReweighted","Simulated E_{T} from K^{0}_{S}");
1129 CreateEtaPtHisto2D("EtSimulatedK0LReweighted","Simulated E_{T} from K^{0}_{L}");
641e1e0c 1130 CreateEtaPtHisto2D("EtSimulatedNeutron","Simulated E_{T} from neutrons");
1131 CreateEtaPtHisto2D("EtSimulatedAntiNeutron","Simulated E_{T} from #bar{n}");
1132 CreateEtaPtHisto2D("EtSimulatedEPlus","Simulated E_{T} from e^{+}");
1133 CreateEtaPtHisto2D("EtSimulatedEMinus","Simulated E_{T} from e^{-}");
1134 CreateEtaPtHisto2D("EtSimulatedOmega","Simulated E_{T} from #Omega^{-}");
1135 CreateEtaPtHisto2D("EtSimulatedAntiOmega","Simulated E_{T} from #Omega^{+}");
1136 CreateEtaPtHisto2D("EtSimulatedXi","Simulated E_{T} from #Xi^{-}");
1137 CreateEtaPtHisto2D("EtSimulatedAntiXi","Simulated E_{T} from #Xi^{+}");
1138 CreateEtaPtHisto2D("EtSimulatedSigma","Simulated E_{T} from #Xi^{-}");
1139 CreateEtaPtHisto2D("EtSimulatedAntiSigma","Simulated E_{T} from #Xi^{+}");
1140 CreateEtaPtHisto2D("EtSimulatedXi0","Simulated E_{T} from #Xi^{0}");
1141 CreateEtaPtHisto2D("EtSimulatedAntiXi0","Simulated E_{T} from #Xi^{0}");
1142 CreateEtaPtHisto2D("EtSimulatedAllHadron","Simulated E_{T} from all hadrons");
1143
1144
1145 CreateEtaPtHisto2D("EtSimulatedLambdaDaughters","Simulated E_{T} from #Lambda Daughters");
1146 CreateEtaPtHisto2D("EtSimulatedAntiLambdaDaughters","Simulated E_{T} from #bar{#Lambda} Daughters");
1147 CreateEtaPtHisto2D("EtSimulatedK0SDaughters","Simulated E_{T} from K^{0}_{S} Daughters");
964c8159 1148 CreateEtaPtHisto2D("EtSimulatedLambdaDaughtersReweighted","Simulated E_{T} from #Lambda Daughters");
1149 CreateEtaPtHisto2D("EtSimulatedAntiLambdaDaughtersReweighted","Simulated E_{T} from #bar{#Lambda} Daughters");
1150 CreateEtaPtHisto2D("EtSimulatedK0SDaughtersReweighted","Simulated E_{T} from K^{0}_{S} Daughters");
641e1e0c 1151 CreateEtaPtHisto2D("EtSimulatedOmegaDaughters","Simulated E_{T} from #Omega^{-} Daughters");
1152 CreateEtaPtHisto2D("EtSimulatedAntiOmegaDaughters","Simulated E_{T} from #Omega^{+} Daughters");
1153 CreateEtaPtHisto2D("EtSimulatedXiDaughters","Simulated E_{T} from #Xi^{-} Daughters");
1154 CreateEtaPtHisto2D("EtSimulatedAntiXiDaughters","Simulated E_{T} from #Xi^{+} Daughters");
1155
f427cbed 1156
1157 CreateEtaPtHisto2D("EtSimulatedGamma","Simulated E_{T} from #gamma");
1158 CreateEtaPtHisto2D("EtSimulatedEta","Simulated E_{T} from #eta");
1159 CreateEtaPtHisto2D("EtSimulatedPi0","Simulated E_{T} from #pi^{0}");
b64de20c 1160 CreateEtaPtHisto2D("EtSimulatedOmega0","Simulated E_{T} from #omega");
f427cbed 1161
cf6522d1 1162 TString *strTPC = new TString("TPC");
1163 TString *strITS = new TString("ITS");
1164 TString *strTPCITS = new TString("TPCITS");
7d2d1773 1165 Int_t lastcutset = 1;
1166 if(fRequireITSHits) lastcutset = 2;
1167 for(Int_t i=0;i<=lastcutset;i++){
ea331c5d 1168 TString *cutName = NULL;
641e1e0c 1169 Float_t maxPtdEdx = 10;
1170 Float_t mindEdx = 35;
1171 Float_t maxdEdx = 150.0;
1172 switch(i){
1173 case 0:
cf6522d1 1174 cutName = strTPC;
641e1e0c 1175 break;
1176 case 1:
cf6522d1 1177 cutName = strITS;
641e1e0c 1178 maxPtdEdx = 5;
1179 maxdEdx = 500.0;
1180 break;
1181 case 2:
cf6522d1 1182 cutName = strTPCITS;
641e1e0c 1183 break;
1184 default:
1185 cerr<<"Error: cannot make histograms!"<<endl;
1186 return;
1187 }
1188
cf6522d1 1189 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedPiPlus",cutName->Data()),"Reconstructed E_{T} from identified #pi^{+}");
1190 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedPiMinus",cutName->Data()),"Reconstructed E_{T} from identified #pi^{-}");
1191 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedKPlus",cutName->Data()),"Reconstructed E_{T} from identified K^{+}");
1192 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedEMinus",cutName->Data()),"Reconstructed E_{T} from identified e^{-}");
1193 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedEPlus",cutName->Data()),"Reconstructed E_{T} from identified e^{+}");
1194 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedKMinus",cutName->Data()),"Reconstructed E_{T} from identified K^{-}");
1195 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedProton",cutName->Data()),"Reconstructed E_{T} from identified p");
1196 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",cutName->Data()),"Reconstructed E_{T} from identified #bar{p}");
f43fc416 1197 if(fBaryonEnhancement){
1198 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from identified p");
1199 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedAntiProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from identified #bar{p}");
1200 }
cf6522d1 1201 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentified",cutName->Data()),"Number of Reconstructed unidentified particles");
1202 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified particles assuming pion mass");
86d9d0dc 1203 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified particles assuming pion mass");
1204 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified particles assuming pion mass");
f43fc416 1205
1206 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedKaon",cutName->Data()),"Number of Reconstructed unidentified kaons particles");
1207 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
86d9d0dc 1208 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
1209 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedKaonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
904048b2 1210 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedKaon",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming kaon mass");
f43fc416 1211 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedProton",cutName->Data()),"Number of Reconstructed unidentified proton particles");
1212 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
86d9d0dc 1213 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
1214 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
1215 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
1216 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified kaons particles assuming pion mass");
1217 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
904048b2 1218 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProton",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming proton mass");
f43fc416 1219 if(fBaryonEnhancement){
1220 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),"Number of Reconstructed unidentified proton particles");
1221 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonAssumingPionEnhanced",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming pion mass");
904048b2 1222 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from unidentified proton particles assuming proton mass");
f43fc416 1223 }
1224 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentifiedPion",cutName->Data()),"Number of Reconstructed unidentified pions particles");
1225 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified pions particles assuming pion mass");
86d9d0dc 1226 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingKaon",cutName->Data()),"Reconstructed E_{T} from unidentified pions particles assuming pion mass");
1227 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPionAssumingProton",cutName->Data()),"Reconstructed E_{T} from unidentified pions particles assuming pion mass");
904048b2 1228 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedPion",cutName->Data()),"Reconstructed E_{T} from unidentified pions particles assuming pion mass");
f43fc416 1229
cf6522d1 1230 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentified",cutName->Data()),"Reconstructed E_{T} from unidentified particles using real mass");
1231 CreateEtaPtHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),"Reconstructed E_{T} from misidentified electrons");
1232
1233
1234 CreateEtaPtHisto2D(Form("EtReconstructed%sPiPlus",cutName->Data()),"Reconstructed E_{T} from #pi^{+}");
1235 CreateEtaPtHisto2D(Form("EtReconstructed%sPiMinus",cutName->Data()),"Reconstructed E_{T} from #pi^{-}");
1236 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlus",cutName->Data()),"Reconstructed E_{T} from K^{+}");
1237 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinus",cutName->Data()),"Reconstructed E_{T} from K^{-}");
1238 CreateEtaPtHisto2D(Form("EtReconstructed%sProton",cutName->Data()),"Reconstructed E_{T} from p");
1239 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProton",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
f43fc416 1240 if(fBaryonEnhancement){
1241 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from p");
1242 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
1243 }
cf6522d1 1244 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),"Reconstructed E_{T} from charged hadrons");
1245 CreateEtaPtHisto2D(Form("EtNReconstructed%sPiPlus",cutName->Data()),"Reconstructed E_{T} from #pi^{+}");
1246 CreateEtaPtHisto2D(Form("EtNReconstructed%sPiMinus",cutName->Data()),"Reconstructed E_{T} from #pi^{-}");
1247 CreateEtaPtHisto2D(Form("EtNReconstructed%sKPlus",cutName->Data()),"Reconstructed E_{T} from K^{+}");
1248 CreateEtaPtHisto2D(Form("EtNReconstructed%sKMinus",cutName->Data()),"Reconstructed E_{T} from K^{-}");
1249 CreateEtaPtHisto2D(Form("EtNReconstructed%sProton",cutName->Data()),"Reconstructed E_{T} from p");
1250 CreateEtaPtHisto2D(Form("EtNReconstructed%sAntiProton",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
f43fc416 1251 if(fBaryonEnhancement){
1252 CreateEtaPtHisto2D(Form("EtNReconstructed%sProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from p");
1253 CreateEtaPtHisto2D(Form("EtNReconstructed%sAntiProtonEnhanced",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
1254 }
cf6522d1 1255 CreateEtaPtHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),"Reconstructed E_{T} from charged hadrons");
1256
1257 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),"Reconstructed E_{T} from charged hadrons assuming they are all pions");
86d9d0dc 1258 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadronAssumingProton",cutName->Data()),"Reconstructed E_{T} from charged hadrons assuming they are all pions");
1259 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadronAssumingKaon",cutName->Data()),"Reconstructed E_{T} from charged hadrons assuming they are all pions");
cf6522d1 1260 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlusAssumingPion",cutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass");
1261 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinusAssumingPion",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass");
1262 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1263 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
86d9d0dc 1264 CreateEtaPtHisto2D(Form("EtReconstructed%sPiPlusAssumingKaon",cutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass");
1265 CreateEtaPtHisto2D(Form("EtReconstructed%sPiMinusAssumingKaon",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass");
1266 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlusAssumingKaon",cutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass");
1267 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinusAssumingKaon",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass");
1268 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1269 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingKaon",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
1270
1271 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlusAssumingProton",cutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass");
1272 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinusAssumingProton",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass");
1273 CreateEtaPtHisto2D(Form("EtReconstructed%sPiMinusAssumingProton",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1274 CreateEtaPtHisto2D(Form("EtReconstructed%sPiPlusAssumingProton",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
1275 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingProton",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1276 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingProton",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
1277
f43fc416 1278 if(fBaryonEnhancement){
1279 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingPionEnhanced",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
1280 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingPionEnhanced",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
1281 }
cf6522d1 1282
1283 CreateEtaPtHisto2D(Form("EtReconstructed%sEPlus",cutName->Data()),"Reconstructed E_{T} from e^{+}");
1284 CreateEtaPtHisto2D(Form("EtReconstructed%sEMinus",cutName->Data()),"Reconstructed E_{T} from e^{-}");
1285
1286
1287
1288 CreateEtaPtHisto2D(Form("EtReconstructed%sLambdaDaughters",cutName->Data()),"Reconstructed E_{T} from #Lambda Daughters");
1289 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",cutName->Data()),"Reconstructed E_{T} from #bar{#Lambda} Daughters");
1290 CreateEtaPtHisto2D(Form("EtReconstructed%sK0SDaughters",cutName->Data()),"Reconstructed E_{T} from K^{0}_{S} Daughters");
0f97be4c 1291 CreateEtaPtHisto2D(Form("EtReconstructed%sLambdaDaughtersReweighted",cutName->Data()),"Reconstructed E_{T} from #Lambda Daughters");
1292 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiLambdaDaughtersReweighted",cutName->Data()),"Reconstructed E_{T} from #bar{#Lambda} Daughters");
1293 CreateEtaPtHisto2D(Form("EtReconstructed%sK0SDaughtersReweighted",cutName->Data()),"Reconstructed E_{T} from K^{0}_{S} Daughters");
cf6522d1 1294 CreateEtaPtHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),"Reconstructed E_{T} from #Omega^{-} Daughters");
1295 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),"Reconstructed E_{T} from #Omega^{+} Daughters");
1296 CreateEtaPtHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),"Reconstructed E_{T} from #Xi^{-} Daughters");
1297 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),"Reconstructed E_{T} from #Xi^{+} Daughters");
1298
1299 CreateIntHisto1D(Form("UnidentifiedPIDs%s",cutName->Data()),"PIDs of unidentified particles", "PID", "Number of particles",9, -4,4);
1300 CreateHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),"PIDs of misidentified particles", "PID real","PID identified",5, -.5,4.5,5, -.5,4.5);
1301 CreateHisto2D(Form("dEdxAll%s",cutName->Data()),"dE/dx for all particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1302 CreateHisto2D(Form("dEdxPion%s",cutName->Data()),"dE/dx for #pi^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1303 CreateHisto2D(Form("dEdxKaon%s",cutName->Data()),"dE/dx for K^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1304 CreateHisto2D(Form("dEdxProton%s",cutName->Data()),"dE/dx for p(#bar{p})","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1305 CreateHisto2D(Form("dEdxElectron%s",cutName->Data()),"dE/dx for e^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
1306 CreateHisto2D(Form("dEdxUnidentified%s",cutName->Data()),"dE/dx for unidentified particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
641e1e0c 1307 }
464aa50c 1308 delete strTPC;
1309 delete strITS;
1310 delete strTPCITS;
4e0c0fe1 1311
1312 Float_t minEt = 0.0;
1313 Float_t maxEt = 100.0;
f43fc416 1314 if(fDataSet==20100) maxEt=5000.0;
4b40b2b1 1315 Int_t nbinsEt = 100;
4e0c0fe1 1316 char histoname[200];
1317 char histotitle[200];
1318 char xtitle[50];
1319 char ytitle[50];
464aa50c 1320 TString *sTPC = new TString("TPC");
1321 TString *sITS = new TString("ITS");
1322 TString *sTPCpt = new TString("0.15");
1323 TString *sITSpt = new TString("0.10");
1324 TString *sPID = new TString("");
1325 TString *sNoPID = new TString("NoPID");
1326 TString *sNoPIDString = new TString(", No PID");
1327 TString *sHadEt = new TString("HadEt");
1328 TString *sTotEt = new TString("TotEt");
1329 TString *sTotEtString = new TString("total E_{T}");
1330 TString *sHadEtString = new TString("hadronic E_{T}");
1331 TString *sFull = new TString("Full");
1332 TString *sEMCAL = new TString("EMCAL");
1333 TString *sPHOS = new TString("PHOS");
4b40b2b1 1334 float etDiff = 1.5;
7d2d1773 1335
1336 for(int tpc = 0;tpc<lastcutset;tpc++){
ea331c5d 1337 TString *detector = NULL;
1338 TString *ptstring = NULL;
4b40b2b1 1339 if(tpc==1) {detector = sTPC; ptstring = sTPCpt;}
1340 else{detector = sITS; ptstring = sITSpt;}
4e0c0fe1 1341 for(int hadet = 0;hadet<2;hadet++){
ea331c5d 1342 TString *et = NULL;
1343 TString *etstring = NULL;
4b40b2b1 1344 if(hadet==1) {et = sHadEt; etstring = sHadEtString;}
1345 else{et = sTotEt; etstring = sTotEtString;}
7d2d1773 1346 for(int type = 0;type<3;type++){
1347 if(type==0 && !fInvestigateFull) continue;
1348 if(type==1 && !fInvestigateEMCal) continue;
1349 if(type==2 && !fInvestigatePHOS) continue;
ea331c5d 1350 TString *acceptance = NULL;
4b40b2b1 1351 switch(type){
1352 case 0:
1353 acceptance = sFull;
7d2d1773 1354 etDiff = 1.5;
4b40b2b1 1355 break;
1356 case 1:
1357 acceptance = sEMCAL;
7d2d1773 1358 etDiff = 5;
4b40b2b1 1359 break;
1360 case 2:
1361 acceptance = sPHOS;
7d2d1773 1362 etDiff = 5;
4b40b2b1 1363 break;
1364 default:
1365 acceptance = sFull;
1366 }
4e0c0fe1 1367 for(int pid = 0;pid<2;pid++){
ea331c5d 1368 TString *partid = NULL;
1369 TString *partidstring = NULL;
464aa50c 1370 if(pid==1){partid = sPID; partidstring = sPID;}
1371 else{partid = sNoPID; partidstring = sNoPIDString;}
4e0c0fe1 1372 sprintf(histoname,"Sim%sMinusReco%s%sAcceptance%s%s",et->Data(),et->Data(),acceptance->Data(),detector->Data(),partid->Data());
1373 sprintf(histotitle,"(Simulated %s - reconstructed %s)/(Simulated %s) with %s acceptance for p_{T}>%s GeV/c%s",etstring->Data(),etstring->Data(),etstring->Data(),acceptance->Data(),ptstring->Data(),partidstring->Data());
1374 sprintf(ytitle,"(Simulated %s - reconstructed %s)/(Simulated %s)",etstring->Data(),etstring->Data(),etstring->Data());
1375 sprintf(xtitle,"Simulated %s",etstring->Data());
4b40b2b1 1376 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
7d2d1773 1377 if(hadet==0 && type==0 && fInvestigatePiKP){//we only want to do this once... not the most elegant way of coding but hey...
0e866ddc 1378 sprintf(histoname,"SimPiKPMinusRecoPiKP%sAcceptance%s%s",acceptance->Data(),detector->Data(),partid->Data());
1379 sprintf(histotitle,"(Sim PiKP - reco PiKP)/(Sim PiKP) with %s acceptance for p_{T}>%s GeV/c%s",acceptance->Data(),ptstring->Data(),partidstring->Data());
1380 sprintf(ytitle,"(Sim PiKP - reco PiKP)/(Sim PiKP)");
1381 sprintf(xtitle,"Simulated E_{T}^{#pi,K,p}");
1382 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
0e866ddc 1383 }
4e0c0fe1 1384 }
1385 }
1386 }
1387 }
7d2d1773 1388 CreateHisto1D("SimPiKPEt","Simulated #pi,K,p E_{T}","Simulated #pi,K,p E_{T}","Number of events",nbinsEt,minEt,maxEt);
0e866ddc 1389 CreateHisto1D("SimTotEt","Simulated Total E_{T}","Simulated Total E_{T}","Number of events",nbinsEt*4,minEt,maxEt);
1390 CreateHisto1D("SimHadEt","Simulated Hadronic E_{T}","Simulated Hadronic E_{T}","Number of events",nbinsEt*4,minEt,maxEt);
1391
1392 etDiff = 0.15;
1393
7d2d1773 1394 if(fInvestigateSmearing){
1395
1396 //======================================================================
1397
1398 sprintf(histoname,"SimPiKPEtMinusSimPtSmeared");
1399 sprintf(histotitle,"Simulated (true-smeared)/true for 0.5 percent momentum smearing");
1400 sprintf(ytitle,"(true-smeared)/true");
1401 sprintf(xtitle,"true p, K, p E_{T}");
1402 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff/10.0,etDiff/10.0);
1403 sprintf(histoname,"SimPiKPEtPtSmeared");
1404 sprintf(histotitle,"Simulated E_{T} for 0.5 percent momentum smearing");
1405 sprintf(ytitle,"Number of events");
1406 sprintf(xtitle,"p, K, p E_{T}");
1407 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
1408
1409 //======================================================================
1410
1411 sprintf(histoname,"SimPiKPEtMinusSimEfficiencySmeared");
1412 sprintf(histotitle,"Simulated (true-smeared)/true for efficiency smearing");
1413 sprintf(ytitle,"(true-smeared)/true");
1414 sprintf(xtitle,"true p, K, p E_{T}");
1415 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
1416 sprintf(histoname,"SimPiKPEtEfficiencySmeared");
1417 sprintf(histotitle,"Simulated E_{T} for efficiency smearing");
1418 sprintf(ytitle,"Number of events");
1419 sprintf(xtitle,"p, K, p E_{T}");
1420 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
1421
1422 //======================================================================
1423
1424 sprintf(histoname,"SimPiKPEtMinusSimPtCutSmearedTPC");
1425 sprintf(histotitle,"Simulated (true-smeared)/true for p_{T}>0.15 GeV/c smearing");
1426 sprintf(ytitle,"(true-smeared)/true");
1427 sprintf(xtitle,"true p, K, p E_{T}");
1428 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
1429 sprintf(histoname,"SimPiKPEtPtCutSmearedTPC");
1430 sprintf(histotitle,"Simulated E_{T} for p_{T}>0.15 GeV/c smearing");
1431 sprintf(ytitle,"Number of events");
1432 sprintf(xtitle,"p, K, p E_{T}");
1433 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
1434
1435
1436 //======================================================================
1437
1438 sprintf(histoname,"SimPiKPEtMinusSimPtCutSmearedITS");
1439 sprintf(histotitle,"Simulated (true-smeared)/true for p_{T}>0.10 GeV/c smearing");
1440 sprintf(ytitle,"(true-smeared)/true");
1441 sprintf(xtitle,"true p, K, p E_{T}");
1442 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
1443 sprintf(histoname,"SimPiKPEtPtCutSmearedITS");
1444 sprintf(histotitle,"Simulated E_{T} for p_{T}>0.10 GeV/c smearing");
1445 sprintf(ytitle,"Number of events");
1446 sprintf(xtitle,"p, K, p E_{T}");
1447 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
1448
1449 //======================================================================
1450
1451 sprintf(histoname,"SimPiKPEtMinusSimPIDSmeared");
1452 sprintf(histotitle,"Simulated (true-smeared)/true for PID smearing");
1453 sprintf(ytitle,"(true-smeared)/true");
1454 sprintf(xtitle,"true p, K, p E_{T}");
1455 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
1456 sprintf(histoname,"SimPiKPEtPIDSmeared");
1457 sprintf(histotitle,"Simulated E_{T} for PID smearing");
1458 sprintf(ytitle,"Number of events");
1459 sprintf(xtitle,"p, K, p E_{T}");
1460 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
1461
1462 //======================================================================
1463
1464 sprintf(histoname,"SimPiKPEtMinusSimPIDSmearedNoID");
1465 sprintf(histotitle,"Simulated (true-smeared)/true for PID smearing No ID");
1466 sprintf(ytitle,"(true-smeared)/true");
1467 sprintf(xtitle,"true p, K, p E_{T}");
1468 CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
1469 sprintf(histoname,"SimPiKPEtPIDSmearedNoID");
1470 sprintf(histotitle,"Simulated E_{T} for PID smearing No ID");
1471 sprintf(ytitle,"Number of events");
1472 sprintf(xtitle,"p, K, p E_{T}");
1473 CreateHisto1D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt);
1474 }
464aa50c 1475 delete sTPC;
1476 delete sITS;
1477 delete sTPCpt;
1478 delete sITSpt;
1479 delete sPID;
1480 delete sNoPID;
1481 delete sNoPIDString;
1482 delete sHadEt;
1483 delete sTotEt;
1484 delete sTotEtString;
1485 delete sHadEtString;
1486 delete sFull;
1487 delete sEMCAL;
1488 delete sPHOS;
641e1e0c 1489 CreateIntHisto1D("NEvents","Number of events","number of events","Number of events",1,0,1);
1490
641e1e0c 1491}
1492