1 //_________________________________________________________________________
2 // Utility Class for transverse energy studies, charged hadrons
3 // Base class for MC analysis
7 //Created by Christine Nattrass, Rebecca Scott, Irakli Martashvili
8 //University of Tennessee at Knoxville
9 //_________________________________________________________________________
10 #include "AliAnalysisHadEtMonteCarlo.h"
11 #include "AliAnalysisEtCuts.h"
14 #include "AliMCEvent.h"
15 #include "AliESDEvent.h"
16 #include "AliESDtrackCuts.h"
17 #include "AliESDpid.h"
22 ClassImp(AliAnalysisHadEtMonteCarlo);
25 Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
26 { // analyse MC and real event info
27 FillHisto1D("NEvents",0.5,1);
30 AliMCEvent *mcEvent = dynamic_cast<AliMCEvent*>(ev);
31 AliESDEvent *realEvent = dynamic_cast<AliESDEvent*>(ev2);
32 AliStack *stack = mcEvent->Stack();
35 AliESDpid *pID = new AliESDpid();
36 pID->MakePID(realEvent);
38 //This code taken from https://twiki.cern.ch/twiki/bin/view/ALICE/SelectionOfPrimaryTracksForPp2009DataAnalysis
40 //=============================================
42 const AliESDVertex *vertex = realEvent->GetPrimaryVertexTracks();
43 if(vertex->GetNContributors()<1) {
45 vertex = realEvent->GetPrimaryVertexSPD();
46 if(vertex->GetNContributors()<1) {
47 // NO GOOD VERTEX, SKIP EVENT
50 // apply a cut |zVertex| < CUT, if needed
54 //fEsdtrackCutsITSTPC->SetEtaRange(-0.8,0.8); // normally, |eta|<0.8
55 //=============================================
57 //Roughly following $ALICE_ROOT/PWG0/dNdEta/AlidNdEtaCorrectionTask
59 //=============================================TPC&&ITS=============================================
60 TString *strTPC = new TString("TPC");
61 TString *strITS = new TString("ITS");
62 TString *strTPCITS = new TString("TPCITS");
63 for(Int_t cutset=0;cutset<3;cutset++){
69 list = fEsdtrackCutsTPC->GetAcceptedTracks(realEvent);
73 list = fEsdtrackCutsITS->GetAcceptedTracks(realEvent);
77 list = fEsdtrackCutsITSTPC->GetAcceptedTracks(realEvent);
80 cerr<<"Error: cannot fill histograms!"<<endl;
83 Int_t nGoodTracks = list->GetEntries();
84 for (Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++)
86 AliESDtrack *track = dynamic_cast<AliESDtrack*> (list->At(iTrack));
89 Printf("ERROR: Could not get track %d", iTrack);
93 Float_t nSigmaPion,nSigmaProton,nSigmaKaon,nSigmaElectron;
95 nSigmaPion = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kPion));
96 nSigmaProton = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kProton));
97 nSigmaKaon = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kKaon));
98 nSigmaElectron = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kElectron));
101 nSigmaPion = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kPion));
102 nSigmaProton = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kProton));
103 nSigmaKaon = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kKaon));
104 nSigmaElectron = TMath::Abs(pID->NumberOfSigmasITS(track,AliPID::kElectron));
106 bool isPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0);
107 bool isElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0);
108 bool isKaon = (nSigmaPion>3.0 && nSigmaProton>2.0 && nSigmaKaon<2.0);
109 bool isProton = (nSigmaPion>3.0 && nSigmaProton<2.0 && nSigmaKaon>2.0);
111 //bool IsElectron = false;
112 bool unidentified = (!isProton && !isKaon && !isElectron);
113 Float_t dEdx = track->GetTPCsignal();
114 if(cutset==1) dEdx = track->GetITSsignal();
116 FillHisto2D(Form("dEdxAll%s",cutName->Data()),track->P(),dEdx,1.0);
117 //if(cutset==1) cout<<"filling "<<track->P()<<" "<<dEdx<<endl;
119 UInt_t label = (UInt_t)TMath::Abs(track->GetLabel());
120 TParticle *simPart = stack->Particle(label);
122 Printf("no MC particle\n");
126 if(stack->IsPhysicalPrimary(label)){
127 if (TMath::Abs(simPart->Eta()) < fCuts->GetCommonEtaCut()) {
129 Int_t pdgCode = simPart->GetPDG(0)->PdgCode();
131 if(pdgCode==fPiPlusCode) mypid = 1;
132 if(pdgCode==fProtonCode) mypid = 2;
133 if(pdgCode==fKPlusCode) mypid = 3;
134 if(pdgCode==fEPlusCode) mypid = 4;
135 if(pdgCode==fPiMinusCode) mypid = 1;
136 if(pdgCode==fAntiProtonCode) mypid = 2;
137 if(pdgCode==fKMinusCode) mypid = 3;
138 if(pdgCode==fEMinusCode) mypid = 4;
139 //cout<<pdgCode->PdgCode()<<" ";
140 //fPdgDB->GetSimParticle("pi+")->PdgCode();
142 //============Charged hadrons===================================
145 if(pdgCode!=fPiPlusCode && pdgCode!=fPiMinusCode){
146 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),1,mypid,1);
147 //if(mypid==0)cerr<<"I was misidentified! I'm not a pion! I am a "<<simPart->GetName()<<endl;
149 float myEt = Et(simPart);
150 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedPiPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
151 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedPiMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
152 FillHisto2D(Form("dEdxPion%s",cutName->Data()),track->P(),dEdx,1.0);
155 if(pdgCode!=fProtonCode && pdgCode!=fAntiProtonCode){
156 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),2,mypid,1);
157 // if(mypid==0)cerr<<"I was misidentified! I'm not a proton! I am a "<<simPart->GetName()<<endl;
159 float myEt = Et(simPart);
160 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedProton",cutName->Data()),track->Pt(),track->Eta(),myEt);}
161 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",cutName->Data()),track->Pt(),track->Eta(),myEt);}
162 FillHisto2D(Form("dEdxProton%s",cutName->Data()),track->P(),dEdx,1.0);
165 if(pdgCode!=fKMinusCode && pdgCode!=fKPlusCode){
166 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),3,mypid,1);
167 //if(mypid==0)cerr<<"I was misidentified! I'm not a kaon! I am a "<<simPart->GetName()<<" p "<<track->P()<<" nSigmaProton "<<nSigmaProton<<" nSigmaPion "<<nSigmaPion<<" nSigmaKaon "<<nSigmaKaon<<endl;
169 float myEt = Et(simPart);
170 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedKPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
171 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedKMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
172 FillHisto2D(Form("dEdxKaon%s",cutName->Data()),track->P(),dEdx,1.0);
175 if(pdgCode!=fEMinusCode && pdgCode!=fEPlusCode){
176 FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),4,mypid,1);
177 //cerr<<"I was misidentified! I'm not an electron! I am a "<<simPart->GetName()<<endl;
179 float myEt = Et(simPart);
180 if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedEPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
181 else{ FillHisto2D(Form("EtReconstructed%sIdentifiedEMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
182 FillHisto2D(Form("dEdxElectron%s",cutName->Data()),track->P(),dEdx,1.0);
185 if(pdgCode!=fEMinusCode && pdgCode!=fEPlusCode){
186 float myEtPi = Et(simPart,fPionMass);
187 float myEt = Et(simPart);
188 FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
189 FillHisto2D(Form("EtReconstructed%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),myEt);
190 FillHisto2D(Form("EtNReconstructed%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),1.0);
192 FillHisto2D(Form("dEdxUnidentified%s",cutName->Data()),track->P(),dEdx,1.0);
193 //cout<<"I was not identified. I am a "<<simPart->GetName()<<" PID "<<pdgCode<<endl;
194 //track what was not identified successfully
195 FillHisto1D(Form("UnidentifiedPIDs%s",cutName->Data()),mypid,1);
198 if(pdgCode == fPiPlusCode){
199 //cout<<"I'm a real primary "<<simPart->GetName()<<"! "<<"my label is "<<simPart->GetFirstMother()<<" track no "<<iTrack<<"/"<<realEvent->GetNumberOfTracks()<<endl;//<<" "<<label<<" "<<pdgCode<<endl;
201 float myEt = Et(simPart);
202 FillHisto2D(Form("EtReconstructed%sPiPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
203 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
204 FillHisto2D(Form("EtNReconstructed%sPiPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
205 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
206 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
209 if(pdgCode == fPiMinusCode){
210 float myEt = Et(simPart);
211 FillHisto2D(Form("EtReconstructed%sPiMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
212 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
213 FillHisto2D(Form("EtNReconstructed%sPiMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
214 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
215 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
218 if(pdgCode == fKPlusCode){
219 float myEt = Et(simPart);
220 float myEtPi = Et(simPart,fPionMass);
221 FillHisto2D(Form("EtReconstructed%sKPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
222 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
223 FillHisto2D(Form("EtNReconstructed%sKPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
224 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
225 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
226 FillHisto2D(Form("EtReconstructed%sKPlusAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
229 if(pdgCode == fKMinusCode){
230 float myEt = Et(simPart);
231 float myEtPi = Et(simPart,fPionMass);
232 FillHisto2D(Form("EtReconstructed%sKMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
233 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
234 FillHisto2D(Form("EtNReconstructed%sKMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
235 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
236 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
237 FillHisto2D(Form("EtReconstructed%sKMinusAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
240 if(pdgCode == fProtonCode){
241 float myEt = Et(simPart);
242 float myEtPi = Et(simPart,fPionMass);
243 FillHisto2D(Form("EtReconstructed%sProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
244 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
245 FillHisto2D(Form("EtNReconstructed%sProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
246 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
247 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
248 FillHisto2D(Form("EtReconstructed%sProtonAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
251 if(pdgCode == fAntiProtonCode){
252 float myEt = Et(simPart);
253 float myEtPi = Et(simPart,fPionMass);
254 FillHisto2D(Form("EtReconstructed%sAntiProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
255 FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
256 FillHisto2D(Form("EtNReconstructed%sAntiProton",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
257 FillHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
258 FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
259 FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",cutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi);
262 if(pdgCode == fEPlusCode){
263 float myEt = Et(simPart);
264 FillHisto2D(Form("EtReconstructed%sEPlus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
265 if(!isElectron || unidentified){
266 float myEtPi = Et(simPart,fPionMass);
267 FillHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
271 if(pdgCode == fEMinusCode){
272 if(!isElectron || unidentified){
273 float myEtPi = Et(simPart,fPionMass);
274 FillHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
276 float myEt = Et(simPart);
277 FillHisto2D(Form("EtReconstructed%sEMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
281 //TParticlePDG *pc = simPart->GetPDG(0);
282 //if( strcmp(pc->ParticleClass(),"Baryon")==0 || strcmp(pc->ParticleClass(),"Meson")==0 ){
283 //cout<<"Did not find a place for "<<simPart->GetName()<<" "<<pdgCode<<" which is a "<<pc->ParticleClass()<<endl;
289 else{//not a primary - we're after V0 daughters!
290 //cout<<"I'm a secondary "<<simPart->GetName()<<"!";//<<endl;
291 TParticle *mom = stack->Particle(simPart->GetFirstMother());
293 TParticlePDG *pc = mom->GetPDG(0);
295 Int_t pdgCode = mom->GetPDG(0)->PdgCode();
296 if(pdgCode == fLambdaCode){
297 float myEt = Et(simPart);
298 FillHisto2D(Form("EtReconstructed%sLambdaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
300 if(pdgCode == fAntiLambdaCode){
301 float myEt = Et(simPart);
302 FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
304 if(pdgCode == fK0SCode){
305 float myEt = Et(simPart);
306 FillHisto2D(Form("EtReconstructed%sK0SDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
308 if(pdgCode == fXiCode){
309 float myEt = Et(simPart);
310 FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
312 if(pdgCode == fAntiXiCode){
313 float myEt = Et(simPart);
314 FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
316 if(pdgCode == fOmegaCode){
317 float myEt = Et(simPart);
318 FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
320 if(pdgCode == fXiCode){
321 float myEt = Et(simPart);
322 FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
325 if(mom->GetFirstMother()>0){
326 TParticle *grandma = stack->Particle(mom->GetFirstMother());
328 Int_t pdgCodeMom = mom->GetPDG(0)->PdgCode();
329 if(pdgCodeMom==fPiPlusCode || pdgCodeMom==fPiMinusCode || pdgCodeMom==fProtonCode ||pdgCodeMom==fAntiProtonCode || pdgCodeMom==fKPlusCode || pdgCode==fKMinusCode){
330 //cout<<" my grandmother is "<<grandma->GetName()<<" "<<endl;
331 Int_t pdgCodeGrandma = grandma->GetPDG(0)->PdgCode();
333 if(pdgCodeGrandma == fXiCode){
334 float myEt = Et(simPart);
335 FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
337 if(pdgCodeGrandma == fAntiXiCode){
338 float myEt = Et(simPart);
339 FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
341 if(pdgCodeGrandma == fOmegaCode){
342 float myEt = Et(simPart);
343 FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
345 if(pdgCodeGrandma == fXiCode){
346 float myEt = Et(simPart);
347 FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),track->Pt(),track->Eta(),myEt);
365 Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
366 { // analyse MC event
369 // Get us an mc event
370 AliMCEvent *mcEvent = dynamic_cast<AliMCEvent*>(ev);
372 // Let's play with the stack!
373 AliStack *stack = mcEvent->Stack();
375 Int_t nPrim = stack->GetNtrack();
377 //=================Tracks which may or may not have been reconstructed=================
379 for (Int_t iPart = 0; iPart < nPrim; iPart++)
382 TParticle *part = stack->Particle(iPart);
386 Printf("ERROR: Could not get particle %d", iPart);
390 TParticlePDG *pc = part->GetPDG(0);
392 // Check if it is a primary particle
393 if (stack->IsPhysicalPrimary(iPart)){//primaries
395 if (TMath::Abs(part->Eta()) < fCuts->GetCommonEtaCut()) {
397 Int_t pdgCode = part->GetPDG(0)->PdgCode();
398 //cout<<pdgCode->PdgCode()<<" ";
399 //fPdgDB->GetParticle("pi+")->PdgCode();
401 //============Charged hadrons===================================
402 if(pdgCode == fPiPlusCode){
403 //cout<<"I'm a simulated primary "<<part->GetName()<<"! "<<"my label is "<<part->GetFirstMother()<<" pt "<<part->Pt()<<endl;
404 float myEt = Et(part);
405 FillHisto2D("EtSimulatedPiPlus",part->Pt(),part->Eta(),myEt);
406 FillHisto2D("EtNSimulatedPiPlus",part->Pt(),part->Eta(),1.0);
407 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
408 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
409 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEt);
410 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
413 if(pdgCode == fPiMinusCode){
414 float myEt = Et(part);
415 FillHisto2D("EtSimulatedPiMinus",part->Pt(),part->Eta(),myEt);
416 FillHisto2D("EtNSimulatedPiMinus",part->Pt(),part->Eta(),1.0);
417 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
418 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
419 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEt);
420 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
423 if(pdgCode == fKPlusCode){
424 float myEt = Et(part);
425 float myEtPi = Et(part,fPionMass);
426 FillHisto2D("EtSimulatedKPlus",part->Pt(),part->Eta(),myEt);
427 FillHisto2D("EtNSimulatedKPlus",part->Pt(),part->Eta(),1.0);
428 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
429 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
430 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
431 FillHisto2D("EtSimulatedKPlusAssumingPion",part->Pt(),part->Eta(),myEtPi);
432 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
435 if(pdgCode == fKMinusCode){
436 float myEt = Et(part);
437 float myEtPi = Et(part,fPionMass);
438 FillHisto2D("EtSimulatedKMinus",part->Pt(),part->Eta(),myEt);
439 FillHisto2D("EtNSimulatedKMinus",part->Pt(),part->Eta(),1.0);
440 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
441 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
442 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
443 FillHisto2D("EtSimulatedKMinusAssumingPion",part->Pt(),part->Eta(),myEtPi);
444 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
447 if(pdgCode == fProtonCode){
448 float myEt = Et(part);
449 float myEtPi = Et(part,fPionMass);
450 FillHisto2D("EtSimulatedProton",part->Pt(),part->Eta(),myEt);
451 FillHisto2D("EtNSimulatedProton",part->Pt(),part->Eta(),1.0);
452 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
453 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
454 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
455 FillHisto2D("EtSimulatedProtonAssumingPion",part->Pt(),part->Eta(),myEtPi);
456 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
459 if(pdgCode == fAntiProtonCode){
460 float myEt = Et(part);
461 float myEtPi = Et(part,fPionMass);
462 FillHisto2D("EtSimulatedAntiProton",part->Pt(),part->Eta(),myEt);
463 FillHisto2D("EtNSimulatedAntiProton",part->Pt(),part->Eta(),1.0);
464 FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt);
465 FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0);
466 FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi);
467 FillHisto2D("EtSimulatedAntiProtonAssumingPion",part->Pt(),part->Eta(),myEtPi);
468 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
471 //============Other hadrons===================================
473 if(pdgCode == fNeutronCode){
474 float myEt = Et(part);
475 FillHisto2D("EtSimulatedNeutron",part->Pt(),part->Eta(),myEt);
476 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
479 if(pdgCode == fAntiNeutronCode){
480 float myEt = Et(part);
481 FillHisto2D("EtSimulatedAntiNeutron",part->Pt(),part->Eta(),myEt);
482 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
485 if(pdgCode == fLambdaCode){
486 float myEt = Et(part);
487 //cout<<"I am a simulated lambda! pt "<<part->Pt()<<" eta "<<part->Eta()<<endl;
488 FillHisto2D("EtSimulatedLambda",part->Pt(),part->Eta(),myEt);
489 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
490 Int_t ndaughters = part->GetNDaughters();
491 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
492 Int_t daughterindex = part->GetDaughter(idaughter);
493 if(daughterindex<0 || daughterindex>1e5) continue;
494 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
496 if(daughter->GetPDG(0)){
497 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
498 if(daughtercode==fPiMinusCode || daughtercode==fProtonCode){
500 FillHisto2D("EtSimulatedLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt);
501 //cout<<"Lambda daughter is a "<<daughter->GetName()<<endl;
505 //cout<<"Lambda daughter is a "<<daughter->GetName()<<endl;
511 if(pdgCode == fAntiLambdaCode){
512 float myEt = Et(part);
513 FillHisto2D("EtSimulatedAntiLambda",part->Pt(),part->Eta(),myEt);
514 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
515 Int_t ndaughters = part->GetNDaughters();
516 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
517 Int_t daughterindex = part->GetDaughter(idaughter);
518 if(daughterindex<0 || daughterindex>1e5) continue;
519 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
521 if(daughter->GetPDG(0)){
522 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
523 if(daughtercode==fPiPlusCode || daughtercode==fAntiProtonCode){
525 FillHisto2D("EtSimulatedAntiLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt);
526 //cout<<"AntiLambda daughter is a "<<daughter->GetName()<<endl;
530 //cout<<"AntiLambda daughter is a "<<daughter->GetName()<<endl;
536 if(pdgCode == fK0SCode){
537 float myEt = Et(part);
538 FillHisto2D("EtSimulatedK0S",part->Pt(),part->Eta(),myEt);
539 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
540 Int_t ndaughters = part->GetNDaughters();
541 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
542 Int_t daughterindex = part->GetDaughter(idaughter);
543 if(daughterindex<0 || daughterindex>1e5) continue;
544 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
546 if(daughter->GetPDG(0)){
548 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
549 if(daughtercode==fPiMinusCode || daughtercode==fPiPlusCode){
551 FillHisto2D("EtSimulatedK0SDaughters",daughter->Pt(),daughter->Eta(),myEt);
552 //cout<<"K0S daughter is a "<<daughter->GetName()<<endl;
556 //cout<<"K0S daughter is a "<<daughter->GetName()<<endl;
562 if(pdgCode == fK0LCode){
563 float myEt = Et(part);
564 FillHisto2D("EtSimulatedK0L",part->Pt(),part->Eta(),myEt);
565 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
568 if(pdgCode == fOmegaCode){
569 float myEt = Et(part);
570 FillHisto2D("EtSimulatedOmega",part->Pt(),part->Eta(),myEt);
571 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
572 Int_t ndaughters = part->GetNDaughters();
573 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
574 Int_t daughterindex = part->GetDaughter(idaughter);
575 if(daughterindex<0 || daughterindex>1e5) continue;
576 TParticle *daughter = stack->Particle(daughterindex);
578 if(daughter->GetPDG(0)){
580 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
581 if(daughtercode==fPiPlusCode || daughtercode==fProtonCode || daughtercode==fKMinusCode){
583 FillHisto2D("EtSimulatedOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt);
584 //cout<<"Omega daughter is a "<<daughter->GetName()<<endl;
588 //cout<<"Omega daughter is a "<<daughter->GetName()<<endl;
594 if(pdgCode == fAntiOmegaCode){
595 float myEt = Et(part);
596 FillHisto2D("EtSimulatedOmega",part->Pt(),part->Eta(),myEt);
597 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
598 Int_t ndaughters = part->GetNDaughters();
599 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
600 Int_t daughterindex = part->GetDaughter(idaughter);
601 if(daughterindex<0 || daughterindex>1e5) continue;
602 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
604 if(daughter->GetPDG(0)){
605 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
606 if(daughtercode==fPiMinusCode || daughtercode==fAntiProtonCode || daughtercode==fKPlusCode){
608 FillHisto2D("EtSimulatedAntiOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt);
609 //cout<<"AntiOmega daughter is a "<<daughter->GetName()<<endl;
613 //cout<<"AntiOmega daughter is a "<<daughter->GetName()<<endl;
619 //There are two codes for Sigmas
620 if(pdgCode == fSigmaCode || pdgCode == -3222){
621 float myEt = Et(part);
622 FillHisto2D("EtSimulatedSigma",part->Pt(),part->Eta(),myEt);
623 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
626 if(pdgCode == fAntiSigmaCode || pdgCode == 3222){
627 float myEt = Et(part);
628 FillHisto2D("EtSimulatedAntiSigma",part->Pt(),part->Eta(),myEt);
629 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
632 if(pdgCode == fXiCode){
633 float myEt = Et(part);
634 FillHisto2D("EtSimulatedXi",part->Pt(),part->Eta(),myEt);
635 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
636 Int_t ndaughters = part->GetNDaughters();
637 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
638 Int_t daughterindex = part->GetDaughter(idaughter);
639 if(daughterindex<0 || daughterindex>1e5 || daughterindex>1e5) continue;
640 //cerr<<"Daughter index "<<daughterindex<<" npart "<<nPrim<<endl;
641 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
643 if(daughter->GetPDG(0)){
645 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
646 if(daughtercode==fPiPlusCode || daughtercode==fProtonCode || daughtercode==fPiMinusCode){
648 FillHisto2D("EtSimulatedXiDaughters",daughter->Pt(),daughter->Eta(),myEt);
649 //cout<<"Xi daughter is a "<<daughter->GetName()<<endl;
653 //cout<<"Xi daughter is a "<<daughter->GetName()<<endl;
659 if(pdgCode == fAntiXiCode){
660 float myEt = Et(part);
661 FillHisto2D("EtSimulatedAntiXi",part->Pt(),part->Eta(),myEt);
662 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
663 Int_t ndaughters = part->GetNDaughters();
664 for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
665 Int_t daughterindex = part->GetDaughter(idaughter);
666 if(daughterindex<0 || daughterindex>1e5) continue;
667 TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
669 if(daughter->GetPDG(0)){
670 Int_t daughtercode = daughter->GetPDG(0)->PdgCode();
671 if(daughtercode==fPiPlusCode || daughtercode==fAntiProtonCode || daughtercode==fPiMinusCode){
673 FillHisto2D("EtSimulatedAntiXiDaughters",daughter->Pt(),daughter->Eta(),myEt);
674 //cout<<"AntiXi daughter is a "<<daughter->GetName()<<endl;
678 //cout<<"AntiXi daughter is a "<<daughter->GetName()<<endl;
684 if(pdgCode == fXi0Code){
685 float myEt = Et(part);
686 FillHisto2D("EtSimulatedXi0",part->Pt(),part->Eta(),myEt);
687 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
690 if(pdgCode == fAntiXi0Code){
691 float myEt = Et(part);
692 FillHisto2D("EtSimulatedAntiXi0",part->Pt(),part->Eta(),myEt);
693 FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
696 //============electrons===================================
698 if(pdgCode == fEPlusCode){
699 float myEt = Et(part);
700 FillHisto2D("EtSimulatedEPlus",part->Pt(),part->Eta(),myEt);
703 if(pdgCode == fEMinusCode){
704 float myEt = Et(part);
705 FillHisto2D("EtSimulatedEMinus",part->Pt(),part->Eta(),myEt);
708 //============neutrals===================================
709 if(pdgCode == fGammaCode){
710 TParticle *mom = stack->Particle(part->GetFirstMother());
711 Int_t pdgCodeMom = mom->GetPDG(0)->PdgCode();
712 //cout<<"I am a gamma and my mom is "<<mom->GetName()<<endl;
713 if(pdgCodeMom == fEtaCode){
714 float myEt = Et(mom);
715 FillHisto2D("EtSimulatedEta",mom->Pt(),mom->Eta(),myEt);
718 if(pdgCodeMom == fPi0Code){
719 float myEt = Et(mom);
720 FillHisto2D("EtSimulatedPi0",mom->Pt(),mom->Eta(),myEt);
723 if(pdgCodeMom == fOmega0Code){
724 float myEt = Et(mom);
725 FillHisto2D("EtSimulatedOmega0",mom->Pt(),mom->Eta(),myEt);
729 float myEt = Et(part);
730 FillHisto2D("EtSimulatedGamma",part->Pt(),part->Eta(),myEt);
734 if(pdgCode == fEtaCode){
735 float myEt = Et(part);
736 FillHisto2D("EtSimulatedEta",part->Pt(),part->Eta(),myEt);
739 if(pdgCode == fPi0Code){
740 float myEt = Et(part);
741 FillHisto2D("EtSimulatedPi0",part->Pt(),part->Eta(),myEt);
744 if(pdgCode == fOmega0Code){
745 float myEt = Et(part);
746 FillHisto2D("EtSimulatedOmega0",part->Pt(),part->Eta(),myEt);
750 //if( strcmp(pc->ParticleClass(),"Baryon")==0 || strcmp(pc->ParticleClass(),"Meson")==0 ){
751 cout<<"Did not find a place for "<<part->GetName()<<" "<<pdgCode<<" which is a "<<pc->ParticleClass()<<endl;
761 // fTotNeutralEtAcc = fTotNeutralEt;
762 // fTotEt = fTotChargedEt + fTotNeutralEt;
763 // fTotEtAcc = fTotChargedEtAcc + fTotNeutralEtAcc;
771 void AliAnalysisHadEtMonteCarlo::Init()
773 AliAnalysisHadEt::Init();
776 void AliAnalysisHadEtMonteCarlo::CreateHistograms(){
777 //for simulated Et only (no reconstruction)
778 CreateEtaPtHisto2D(TString("EtSimulatedPiPlus"),TString("Simulated E_{T} from #pi^{+}"));
779 CreateEtaPtHisto2D("EtSimulatedPiMinus","Simulated E_{T} from #pi^{-}");
780 CreateEtaPtHisto2D("EtSimulatedKPlus","Simulated E_{T} from K^{+}");
781 CreateEtaPtHisto2D("EtSimulatedKMinus","Simulated E_{T} from K^{-}");
782 CreateEtaPtHisto2D("EtSimulatedProton","Simulated E_{T} from p");
783 CreateEtaPtHisto2D("EtSimulatedAntiProton","Simulated E_{T} from #bar{p}");
784 CreateEtaPtHisto2D("EtSimulatedChargedHadron","Simulated E_{T} from charged hadrons");
785 CreateEtaPtHisto2D(TString("EtNSimulatedPiPlus"),TString("Number of Simulated #pi^{+}"));
786 CreateEtaPtHisto2D("EtNSimulatedPiMinus","Number of simulated #pi^{-}");
787 CreateEtaPtHisto2D("EtNSimulatedKPlus","Number of simulated K^{+}");
788 CreateEtaPtHisto2D("EtNSimulatedKMinus","Number of simulated K^{-}");
789 CreateEtaPtHisto2D("EtNSimulatedProton","Number of simulated p");
790 CreateEtaPtHisto2D("EtNSimulatedAntiProton","Number of simulated #bar{p}");
791 CreateEtaPtHisto2D("EtNSimulatedChargedHadron","Number of simulated charged hadrons");
793 CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingPion","Simulated E_{T} from charged hadrons assuming they are all pions");
794 CreateEtaPtHisto2D("EtSimulatedKPlusAssumingPion","Simulated E_{T} from K^{+} assuming #pi mass");
795 CreateEtaPtHisto2D("EtSimulatedKMinusAssumingPion","Simulated E_{T} from K^{-} assuming #pi mass");
796 CreateEtaPtHisto2D("EtSimulatedProtonAssumingPion","Simulated E_{T} from p assuming #pi mass");
797 CreateEtaPtHisto2D("EtSimulatedAntiProtonAssumingPion","Simulated E_{T} from #bar{p} assuming #pi mass");
799 CreateEtaPtHisto2D("EtSimulatedLambda","Simulated E_{T} from #Lambda");
800 CreateEtaPtHisto2D("EtSimulatedAntiLambda","Simulated E_{T} from #bar{#Lambda}");
801 CreateEtaPtHisto2D("EtSimulatedK0S","Simulated E_{T} from K^{0}_{S}");
802 CreateEtaPtHisto2D("EtSimulatedK0L","Simulated E_{T} from K^{0}_{L}");
803 CreateEtaPtHisto2D("EtSimulatedNeutron","Simulated E_{T} from neutrons");
804 CreateEtaPtHisto2D("EtSimulatedAntiNeutron","Simulated E_{T} from #bar{n}");
805 CreateEtaPtHisto2D("EtSimulatedEPlus","Simulated E_{T} from e^{+}");
806 CreateEtaPtHisto2D("EtSimulatedEMinus","Simulated E_{T} from e^{-}");
807 CreateEtaPtHisto2D("EtSimulatedOmega","Simulated E_{T} from #Omega^{-}");
808 CreateEtaPtHisto2D("EtSimulatedAntiOmega","Simulated E_{T} from #Omega^{+}");
809 CreateEtaPtHisto2D("EtSimulatedXi","Simulated E_{T} from #Xi^{-}");
810 CreateEtaPtHisto2D("EtSimulatedAntiXi","Simulated E_{T} from #Xi^{+}");
811 CreateEtaPtHisto2D("EtSimulatedSigma","Simulated E_{T} from #Xi^{-}");
812 CreateEtaPtHisto2D("EtSimulatedAntiSigma","Simulated E_{T} from #Xi^{+}");
813 CreateEtaPtHisto2D("EtSimulatedXi0","Simulated E_{T} from #Xi^{0}");
814 CreateEtaPtHisto2D("EtSimulatedAntiXi0","Simulated E_{T} from #Xi^{0}");
815 CreateEtaPtHisto2D("EtSimulatedAllHadron","Simulated E_{T} from all hadrons");
818 CreateEtaPtHisto2D("EtSimulatedLambdaDaughters","Simulated E_{T} from #Lambda Daughters");
819 CreateEtaPtHisto2D("EtSimulatedAntiLambdaDaughters","Simulated E_{T} from #bar{#Lambda} Daughters");
820 CreateEtaPtHisto2D("EtSimulatedK0SDaughters","Simulated E_{T} from K^{0}_{S} Daughters");
821 CreateEtaPtHisto2D("EtSimulatedOmegaDaughters","Simulated E_{T} from #Omega^{-} Daughters");
822 CreateEtaPtHisto2D("EtSimulatedAntiOmegaDaughters","Simulated E_{T} from #Omega^{+} Daughters");
823 CreateEtaPtHisto2D("EtSimulatedXiDaughters","Simulated E_{T} from #Xi^{-} Daughters");
824 CreateEtaPtHisto2D("EtSimulatedAntiXiDaughters","Simulated E_{T} from #Xi^{+} Daughters");
827 CreateEtaPtHisto2D("EtSimulatedGamma","Simulated E_{T} from #gamma");
828 CreateEtaPtHisto2D("EtSimulatedEta","Simulated E_{T} from #eta");
829 CreateEtaPtHisto2D("EtSimulatedPi0","Simulated E_{T} from #pi^{0}");
830 CreateEtaPtHisto2D("EtSimulatedOmega0","Simulated E_{T} from #omega");
832 TString *strTPC = new TString("TPC");
833 TString *strITS = new TString("ITS");
834 TString *strTPCITS = new TString("TPCITS");
835 for(Int_t i=0;i<3;i++){
837 Float_t maxPtdEdx = 10;
838 Float_t mindEdx = 35;
839 Float_t maxdEdx = 150.0;
853 cerr<<"Error: cannot make histograms!"<<endl;
857 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedPiPlus",cutName->Data()),"Reconstructed E_{T} from identified #pi^{+}");
858 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedPiMinus",cutName->Data()),"Reconstructed E_{T} from identified #pi^{-}");
859 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedKPlus",cutName->Data()),"Reconstructed E_{T} from identified K^{+}");
860 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedEMinus",cutName->Data()),"Reconstructed E_{T} from identified e^{-}");
861 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedEPlus",cutName->Data()),"Reconstructed E_{T} from identified e^{+}");
862 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedKMinus",cutName->Data()),"Reconstructed E_{T} from identified K^{-}");
863 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedProton",cutName->Data()),"Reconstructed E_{T} from identified p");
864 CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",cutName->Data()),"Reconstructed E_{T} from identified #bar{p}");
865 CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentified",cutName->Data()),"Number of Reconstructed unidentified particles");
866 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",cutName->Data()),"Reconstructed E_{T} from unidentified particles assuming pion mass");
867 CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentified",cutName->Data()),"Reconstructed E_{T} from unidentified particles using real mass");
868 CreateEtaPtHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),"Reconstructed E_{T} from misidentified electrons");
871 CreateEtaPtHisto2D(Form("EtReconstructed%sPiPlus",cutName->Data()),"Reconstructed E_{T} from #pi^{+}");
872 CreateEtaPtHisto2D(Form("EtReconstructed%sPiMinus",cutName->Data()),"Reconstructed E_{T} from #pi^{-}");
873 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlus",cutName->Data()),"Reconstructed E_{T} from K^{+}");
874 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinus",cutName->Data()),"Reconstructed E_{T} from K^{-}");
875 CreateEtaPtHisto2D(Form("EtReconstructed%sProton",cutName->Data()),"Reconstructed E_{T} from p");
876 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProton",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
877 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),"Reconstructed E_{T} from charged hadrons");
878 CreateEtaPtHisto2D(Form("EtNReconstructed%sPiPlus",cutName->Data()),"Reconstructed E_{T} from #pi^{+}");
879 CreateEtaPtHisto2D(Form("EtNReconstructed%sPiMinus",cutName->Data()),"Reconstructed E_{T} from #pi^{-}");
880 CreateEtaPtHisto2D(Form("EtNReconstructed%sKPlus",cutName->Data()),"Reconstructed E_{T} from K^{+}");
881 CreateEtaPtHisto2D(Form("EtNReconstructed%sKMinus",cutName->Data()),"Reconstructed E_{T} from K^{-}");
882 CreateEtaPtHisto2D(Form("EtNReconstructed%sProton",cutName->Data()),"Reconstructed E_{T} from p");
883 CreateEtaPtHisto2D(Form("EtNReconstructed%sAntiProton",cutName->Data()),"Reconstructed E_{T} from #bar{p}");
884 CreateEtaPtHisto2D(Form("EtNReconstructed%sChargedHadron",cutName->Data()),"Reconstructed E_{T} from charged hadrons");
886 CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",cutName->Data()),"Reconstructed E_{T} from charged hadrons assuming they are all pions");
887 CreateEtaPtHisto2D(Form("EtReconstructed%sKPlusAssumingPion",cutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass");
888 CreateEtaPtHisto2D(Form("EtReconstructed%sKMinusAssumingPion",cutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass");
889 CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from p assuming #pi mass");
890 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",cutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass");
892 CreateEtaPtHisto2D(Form("EtReconstructed%sEPlus",cutName->Data()),"Reconstructed E_{T} from e^{+}");
893 CreateEtaPtHisto2D(Form("EtReconstructed%sEMinus",cutName->Data()),"Reconstructed E_{T} from e^{-}");
897 CreateEtaPtHisto2D(Form("EtReconstructed%sLambdaDaughters",cutName->Data()),"Reconstructed E_{T} from #Lambda Daughters");
898 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",cutName->Data()),"Reconstructed E_{T} from #bar{#Lambda} Daughters");
899 CreateEtaPtHisto2D(Form("EtReconstructed%sK0SDaughters",cutName->Data()),"Reconstructed E_{T} from K^{0}_{S} Daughters");
900 CreateEtaPtHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),"Reconstructed E_{T} from #Omega^{-} Daughters");
901 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),"Reconstructed E_{T} from #Omega^{+} Daughters");
902 CreateEtaPtHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),"Reconstructed E_{T} from #Xi^{-} Daughters");
903 CreateEtaPtHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),"Reconstructed E_{T} from #Xi^{+} Daughters");
905 CreateIntHisto1D(Form("UnidentifiedPIDs%s",cutName->Data()),"PIDs of unidentified particles", "PID", "Number of particles",9, -4,4);
906 CreateHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),"PIDs of misidentified particles", "PID real","PID identified",5, -.5,4.5,5, -.5,4.5);
907 CreateHisto2D(Form("dEdxAll%s",cutName->Data()),"dE/dx for all particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
908 CreateHisto2D(Form("dEdxPion%s",cutName->Data()),"dE/dx for #pi^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
909 CreateHisto2D(Form("dEdxKaon%s",cutName->Data()),"dE/dx for K^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
910 CreateHisto2D(Form("dEdxProton%s",cutName->Data()),"dE/dx for p(#bar{p})","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
911 CreateHisto2D(Form("dEdxElectron%s",cutName->Data()),"dE/dx for e^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
912 CreateHisto2D(Form("dEdxUnidentified%s",cutName->Data()),"dE/dx for unidentified particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx);
915 CreateIntHisto1D("NEvents","Number of events","number of events","Number of events",1,0,1);
917 //CreateHisto1D("MisidentifiedPIDs","PIDs for particles misidentified that are not a #pi,K,p","PID","number of entries",3000,0.5,3000.5);