641e1e0c |
1 | //Create by Christine Nattrass, Rebecca Scott, Irakli Martashvili |
2 | //University of Tennessee at Knoxville |
3 | #include "AliAnalysisHadEtMonteCarlo.h" |
4 | #include "AliAnalysisEtCuts.h" |
5 | |
6 | #include "AliStack.h" |
7 | #include "AliMCEvent.h" |
8 | #include "AliESDEvent.h" |
9 | #include "AliESDtrackCuts.h" |
10 | #include "AliESDpid.h" |
11 | |
12 | #include <iostream> |
13 | using namespace std; |
14 | |
15 | |
16 | Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2){ |
17 | FillHisto1D("NEvents",0.5,1); |
18 | |
19 | AnalyseEvent(ev); |
20 | AliMCEvent *mcEvent = dynamic_cast<AliMCEvent*>(ev); |
21 | AliESDEvent *realEvent = dynamic_cast<AliESDEvent*>(ev2); |
22 | AliStack *stack = mcEvent->Stack(); |
23 | |
24 | //for PID |
25 | AliESDpid *PID = new AliESDpid(); |
26 | PID->MakePID(realEvent); |
27 | |
28 | //This code taken from https://twiki.cern.ch/twiki/bin/view/ALICE/SelectionOfPrimaryTracksForPp2009DataAnalysis |
29 | //Gets good tracks |
30 | //============================================= |
31 | // Primary vertex |
32 | const AliESDVertex *vertex = realEvent->GetPrimaryVertexTracks(); |
33 | if(vertex->GetNContributors()<1) { |
34 | // SPD vertex |
35 | vertex = realEvent->GetPrimaryVertexSPD(); |
36 | if(vertex->GetNContributors()<1) { |
37 | // NO GOOD VERTEX, SKIP EVENT |
38 | } |
39 | } |
40 | // apply a cut |zVertex| < CUT, if needed |
41 | |
42 | |
43 | |
020abff0 |
44 | //ffesdtrackCutsITSTPC->SetEtaRange(-0.8,0.8); // normally, |eta|<0.8 |
641e1e0c |
45 | //============================================= |
46 | |
47 | //Roughly following $ALICE_ROOT/PWG0/dNdEta/AlidNdEtaCorrectionTask |
48 | |
49 | //=============================================TPC&&ITS============================================= |
50 | TString *TPC = new TString("TPC"); |
51 | TString *ITS = new TString("ITS"); |
52 | TString *TPCITS = new TString("TPCITS"); |
53 | for(Int_t cutset=0;cutset<3;cutset++){ |
54 | TString *CutName; |
55 | TObjArray* list; |
56 | switch(cutset){ |
57 | case 0: |
58 | CutName = TPC; |
020abff0 |
59 | list = fesdtrackCutsTPC->GetAcceptedTracks(realEvent); |
641e1e0c |
60 | break; |
61 | case 1: |
62 | CutName = ITS; |
020abff0 |
63 | list = fesdtrackCutsITS->GetAcceptedTracks(realEvent); |
641e1e0c |
64 | break; |
65 | case 2: |
66 | CutName = TPCITS; |
020abff0 |
67 | list = ffesdtrackCutsITSTPC->GetAcceptedTracks(realEvent); |
641e1e0c |
68 | break; |
69 | default: |
70 | cerr<<"Error: cannot fill histograms!"<<endl; |
71 | return -1; |
72 | } |
73 | Int_t nGoodTracks = list->GetEntries(); |
74 | for (Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++) |
75 | { |
76 | AliESDtrack *track = dynamic_cast<AliESDtrack*> (list->At(iTrack)); |
77 | if (!track) |
78 | { |
79 | Printf("ERROR: Could not get track %d", iTrack); |
80 | continue; |
81 | } |
82 | else{ |
83 | bool IsGood = true; |
84 | if(cutset==1){//if these are ITS stand alone tracks, apply some specific cuts |
85 | ULong_t trStatus=track->GetStatus(); |
86 | if(trStatus&AliESDtrack::kTPCin) IsGood=false; // reject tracks found in TPC |
87 | if(trStatus&AliESDtrack::kITSpureSA) IsGood=false; // reject "pure standalone" ITS tracks |
88 | if(!(trStatus&AliESDtrack::kITSrefit)) IsGood = false; // require proper refit in ITS |
89 | } |
90 | if(!IsGood) continue; |
91 | Float_t nSigmaPion,nSigmaProton,nSigmaKaon,nSigmaElectron; |
92 | if(cutset!=1){ |
93 | nSigmaPion = TMath::Abs(PID->NumberOfSigmasTPC(track,AliPID::kPion)); |
94 | nSigmaProton = TMath::Abs(PID->NumberOfSigmasTPC(track,AliPID::kProton)); |
95 | nSigmaKaon = TMath::Abs(PID->NumberOfSigmasTPC(track,AliPID::kKaon)); |
96 | nSigmaElectron = TMath::Abs(PID->NumberOfSigmasTPC(track,AliPID::kElectron)); |
97 | } |
98 | else{ |
99 | nSigmaPion = TMath::Abs(PID->NumberOfSigmasITS(track,AliPID::kPion)); |
100 | nSigmaProton = TMath::Abs(PID->NumberOfSigmasITS(track,AliPID::kProton)); |
101 | nSigmaKaon = TMath::Abs(PID->NumberOfSigmasITS(track,AliPID::kKaon)); |
102 | nSigmaElectron = TMath::Abs(PID->NumberOfSigmasITS(track,AliPID::kElectron)); |
103 | } |
104 | bool IsPion = (nSigmaPion<3.0 && nSigmaProton>2.0 && nSigmaKaon>2.0); |
105 | bool IsElectron = (nSigmaElectron<2.0 && nSigmaPion>4.0 && nSigmaProton>3.0 && nSigmaKaon>3.0); |
106 | bool IsKaon = (nSigmaPion>3.0 && nSigmaProton>2.0 && nSigmaKaon<2.0); |
107 | bool IsProton = (nSigmaPion>3.0 && nSigmaProton<2.0 && nSigmaKaon>2.0); |
108 | |
109 | //bool IsElectron = false; |
110 | bool Unidentified = (!IsProton && !IsKaon && !IsElectron); |
111 | Float_t dEdx = track->GetTPCsignal(); |
112 | if(cutset==1) dEdx = track->GetITSsignal(); |
113 | |
114 | FillHisto2D(Form("dEdxAll%s",CutName->Data()),track->P(),dEdx,1.0); |
115 | //if(cutset==1) cout<<"filling "<<track->P()<<" "<<dEdx<<endl; |
116 | |
117 | UInt_t label = (UInt_t)TMath::Abs(track->GetLabel()); |
118 | TParticle *simPart = stack->Particle(label); |
119 | if(!simPart) { |
120 | Printf("no MC particle\n"); |
121 | continue; |
122 | } |
123 | else{//analysis |
124 | if(stack->IsPhysicalPrimary(label)){ |
125 | if (TMath::Abs(simPart->Eta()) < fEtaCut) { |
126 | |
127 | Int_t pdgCode = simPart->GetPDG(0)->PdgCode(); |
128 | Int_t mypid = 0; |
020abff0 |
129 | if(pdgCode==fPiPlusCode) mypid = 1; |
130 | if(pdgCode==fProtonCode) mypid = 2; |
131 | if(pdgCode==fKPlusCode) mypid = 3; |
132 | if(pdgCode==fEPlusCode) mypid = 4; |
133 | if(pdgCode==fPiMinusCode) mypid = 1; |
134 | if(pdgCode==fAntiProtonCode) mypid = 2; |
135 | if(pdgCode==fKMinusCode) mypid = 3; |
136 | if(pdgCode==fEMinusCode) mypid = 4; |
641e1e0c |
137 | //cout<<pdgCode->PdgCode()<<" "; |
138 | //fPdgDB->GetSimParticle("pi+")->PdgCode(); |
139 | bool filled = false; |
140 | //============Charged hadrons=================================== |
141 | //identified... |
142 | if(IsPion){ |
020abff0 |
143 | if(pdgCode!=fPiPlusCode && pdgCode!=fPiMinusCode){ |
641e1e0c |
144 | FillHisto2D(Form("MisidentifiedPIDs%s",CutName->Data()),1,mypid,1); |
145 | //if(mypid==0)cerr<<"I was misidentified! I'm not a pion! I am a "<<simPart->GetName()<<endl; |
146 | } |
147 | float myEt = Et(simPart); |
148 | if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedPiPlus",CutName->Data()),track->Pt(),track->Eta(),myEt);} |
149 | else{ FillHisto2D(Form("EtReconstructed%sIdentifiedPiMinus",CutName->Data()),track->Pt(),track->Eta(),myEt);} |
150 | FillHisto2D(Form("dEdxPion%s",CutName->Data()),track->P(),dEdx,1.0); |
151 | } |
152 | if(IsProton){ |
020abff0 |
153 | if(pdgCode!=fProtonCode && pdgCode!=fAntiProtonCode){ |
641e1e0c |
154 | FillHisto2D(Form("MisidentifiedPIDs%s",CutName->Data()),2,mypid,1); |
155 | // if(mypid==0)cerr<<"I was misidentified! I'm not a proton! I am a "<<simPart->GetName()<<endl; |
156 | } |
157 | float myEt = Et(simPart); |
158 | if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedProton",CutName->Data()),track->Pt(),track->Eta(),myEt);} |
159 | else{ FillHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",CutName->Data()),track->Pt(),track->Eta(),myEt);} |
160 | FillHisto2D(Form("dEdxProton%s",CutName->Data()),track->P(),dEdx,1.0); |
161 | } |
162 | if(IsKaon){ |
020abff0 |
163 | if(pdgCode!=fKMinusCode && pdgCode!=fKPlusCode){ |
641e1e0c |
164 | FillHisto2D(Form("MisidentifiedPIDs%s",CutName->Data()),3,mypid,1); |
165 | //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; |
166 | } |
167 | float myEt = Et(simPart); |
168 | if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedKPlus",CutName->Data()),track->Pt(),track->Eta(),myEt);} |
169 | else{ FillHisto2D(Form("EtReconstructed%sIdentifiedKMinus",CutName->Data()),track->Pt(),track->Eta(),myEt);} |
170 | FillHisto2D(Form("dEdxKaon%s",CutName->Data()),track->P(),dEdx,1.0); |
171 | } |
172 | if(IsElectron){ |
020abff0 |
173 | if(pdgCode!=fEMinusCode && pdgCode!=fEPlusCode){ |
641e1e0c |
174 | FillHisto2D(Form("MisidentifiedPIDs%s",CutName->Data()),4,mypid,1); |
175 | //cerr<<"I was misidentified! I'm not an electron! I am a "<<simPart->GetName()<<endl; |
176 | } |
177 | float myEt = Et(simPart); |
178 | if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedEPlus",CutName->Data()),track->Pt(),track->Eta(),myEt);} |
179 | else{ FillHisto2D(Form("EtReconstructed%sIdentifiedEMinus",CutName->Data()),track->Pt(),track->Eta(),myEt);} |
180 | FillHisto2D(Form("dEdxElectron%s",CutName->Data()),track->P(),dEdx,1.0); |
181 | } |
182 | if(Unidentified){ |
020abff0 |
183 | if(pdgCode!=fEMinusCode && pdgCode!=fEPlusCode){ |
184 | float myEtPi = Et(simPart,fPionMass); |
641e1e0c |
185 | float myEt = Et(simPart); |
186 | FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",CutName->Data()),track->Pt(),track->Eta(),myEtPi); |
187 | FillHisto2D(Form("EtReconstructed%sUnidentified",CutName->Data()),track->Pt(),track->Eta(),myEt); |
188 | FillHisto2D(Form("EtNReconstructed%sUnidentified",CutName->Data()),track->Pt(),track->Eta(),1.0); |
189 | } |
190 | FillHisto2D(Form("dEdxUnidentified%s",CutName->Data()),track->P(),dEdx,1.0); |
191 | //cout<<"I was not identified. I am a "<<simPart->GetName()<<" PID "<<pdgCode<<endl; |
192 | //track what was not identified successfully |
193 | FillHisto1D(Form("UnidentifiedPIDs%s",CutName->Data()),mypid,1); |
194 | } |
195 | //...simulated |
020abff0 |
196 | if(pdgCode == fPiPlusCode){ |
641e1e0c |
197 | //cout<<"I'm a real primary "<<simPart->GetName()<<"! "<<"my label is "<<simPart->GetFirstMother()<<" track no "<<iTrack<<"/"<<realEvent->GetNumberOfTracks()<<endl;//<<" "<<label<<" "<<pdgCode<<endl; |
198 | |
199 | float myEt = Et(simPart); |
200 | FillHisto2D(Form("EtReconstructed%sPiPlus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
201 | FillHisto2D(Form("EtReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
202 | FillHisto2D(Form("EtNReconstructed%sPiPlus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
203 | FillHisto2D(Form("EtNReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
204 | FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
205 | filled = true; |
206 | } |
020abff0 |
207 | if(pdgCode == fPiMinusCode){ |
641e1e0c |
208 | float myEt = Et(simPart); |
209 | FillHisto2D(Form("EtReconstructed%sPiMinus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
210 | FillHisto2D(Form("EtReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
211 | FillHisto2D(Form("EtNReconstructed%sPiMinus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
212 | FillHisto2D(Form("EtNReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
213 | FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
214 | filled = true; |
215 | } |
020abff0 |
216 | if(pdgCode == fKPlusCode){ |
641e1e0c |
217 | float myEt = Et(simPart); |
020abff0 |
218 | float myEtPi = Et(simPart,fPionMass); |
641e1e0c |
219 | FillHisto2D(Form("EtReconstructed%sKPlus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
220 | FillHisto2D(Form("EtReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
221 | FillHisto2D(Form("EtNReconstructed%sKPlus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
222 | FillHisto2D(Form("EtNReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
223 | FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); |
224 | FillHisto2D(Form("EtReconstructed%sKPlusAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); |
225 | filled = true; |
226 | } |
020abff0 |
227 | if(pdgCode == fKMinusCode){ |
641e1e0c |
228 | float myEt = Et(simPart); |
020abff0 |
229 | float myEtPi = Et(simPart,fPionMass); |
641e1e0c |
230 | FillHisto2D(Form("EtReconstructed%sKMinus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
231 | FillHisto2D(Form("EtReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
232 | FillHisto2D(Form("EtNReconstructed%sKMinus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
233 | FillHisto2D(Form("EtNReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
234 | FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); |
235 | FillHisto2D(Form("EtReconstructed%sKMinusAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); |
236 | filled = true; |
237 | } |
020abff0 |
238 | if(pdgCode == fProtonCode){ |
641e1e0c |
239 | float myEt = Et(simPart); |
020abff0 |
240 | float myEtPi = Et(simPart,fPionMass); |
641e1e0c |
241 | FillHisto2D(Form("EtReconstructed%sProton",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
242 | FillHisto2D(Form("EtReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
243 | FillHisto2D(Form("EtNReconstructed%sProton",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
244 | FillHisto2D(Form("EtNReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
245 | FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); |
246 | FillHisto2D(Form("EtReconstructed%sProtonAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); |
247 | filled = true; |
248 | } |
020abff0 |
249 | if(pdgCode == fAntiProtonCode){ |
641e1e0c |
250 | float myEt = Et(simPart); |
020abff0 |
251 | float myEtPi = Et(simPart,fPionMass); |
641e1e0c |
252 | FillHisto2D(Form("EtReconstructed%sAntiProton",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
253 | FillHisto2D(Form("EtReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
254 | FillHisto2D(Form("EtNReconstructed%sAntiProton",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
255 | FillHisto2D(Form("EtNReconstructed%sChargedHadron",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
256 | FillHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); |
257 | FillHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",CutName->Data()),simPart->Pt(),simPart->Eta(),myEtPi); |
258 | filled = true; |
259 | } |
020abff0 |
260 | if(pdgCode == fEPlusCode){ |
641e1e0c |
261 | float myEt = Et(simPart); |
262 | FillHisto2D(Form("EtReconstructed%sEPlus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
263 | if(!IsElectron || Unidentified){ |
020abff0 |
264 | float myEtPi = Et(simPart,fPionMass); |
641e1e0c |
265 | FillHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",CutName->Data()),track->Pt(),track->Eta(),myEtPi); |
266 | } |
267 | filled = true; |
268 | } |
020abff0 |
269 | if(pdgCode == fEMinusCode){ |
641e1e0c |
270 | if(!IsElectron || Unidentified){ |
020abff0 |
271 | float myEtPi = Et(simPart,fPionMass); |
641e1e0c |
272 | FillHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",CutName->Data()),track->Pt(),track->Eta(),myEtPi); |
273 | } |
274 | float myEt = Et(simPart); |
275 | FillHisto2D(Form("EtReconstructed%sEMinus",CutName->Data()),simPart->Pt(),simPart->Eta(),myEt); |
276 | filled = true; |
277 | } |
278 | //if(!filled){ |
279 | //TParticlePDG *pc = simPart->GetPDG(0); |
280 | //if( strcmp(pc->ParticleClass(),"Baryon")==0 || strcmp(pc->ParticleClass(),"Meson")==0 ){ |
281 | //cout<<"Did not find a place for "<<simPart->GetName()<<" "<<pdgCode<<" which is a "<<pc->ParticleClass()<<endl; |
282 | //} |
283 | //} |
284 | } |
285 | |
286 | } |
287 | else{//not a primary - we're after V0 daughters! |
288 | //cout<<"I'm a secondary "<<simPart->GetName()<<"!";//<<endl; |
289 | TParticle *mom = stack->Particle(simPart->GetFirstMother()); |
290 | if(mom){ |
291 | TParticlePDG *pc = mom->GetPDG(0); |
292 | if(pc){ |
293 | Int_t pdgCode = mom->GetPDG(0)->PdgCode(); |
020abff0 |
294 | if(pdgCode == fLambdaCode){ |
641e1e0c |
295 | float myEt = Et(simPart); |
296 | FillHisto2D(Form("EtReconstructed%sLambdaDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
297 | } |
020abff0 |
298 | if(pdgCode == fAntiLambdaCode){ |
641e1e0c |
299 | float myEt = Et(simPart); |
300 | FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
301 | } |
020abff0 |
302 | if(pdgCode == fK0SCode){ |
641e1e0c |
303 | float myEt = Et(simPart); |
304 | FillHisto2D(Form("EtReconstructed%sK0SDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
305 | } |
020abff0 |
306 | if(pdgCode == fXiCode){ |
641e1e0c |
307 | float myEt = Et(simPart); |
308 | FillHisto2D(Form("EtReconstructed%sXiDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
309 | } |
020abff0 |
310 | if(pdgCode == fAntiXiCode){ |
641e1e0c |
311 | float myEt = Et(simPart); |
312 | FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
313 | } |
020abff0 |
314 | if(pdgCode == fOmegaCode){ |
641e1e0c |
315 | float myEt = Et(simPart); |
316 | FillHisto2D(Form("EtReconstructed%sOmegaDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
317 | } |
020abff0 |
318 | if(pdgCode == fXiCode){ |
641e1e0c |
319 | float myEt = Et(simPart); |
320 | FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
321 | } |
322 | |
323 | if(mom->GetFirstMother()>0){ |
324 | TParticle *grandma = stack->Particle(mom->GetFirstMother()); |
325 | if(grandma){ |
326 | Int_t pdgCodeMom = mom->GetPDG(0)->PdgCode(); |
020abff0 |
327 | if(pdgCodeMom==fPiPlusCode || pdgCodeMom==fPiMinusCode || pdgCodeMom==fProtonCode ||pdgCodeMom==fAntiProtonCode || pdgCodeMom==fKPlusCode || pdgCode==fKMinusCode){ |
641e1e0c |
328 | //cout<<" my grandmother is "<<grandma->GetName()<<" "<<endl; |
329 | Int_t pdgCodeGrandma = grandma->GetPDG(0)->PdgCode(); |
330 | |
020abff0 |
331 | if(pdgCodeGrandma == fXiCode){ |
641e1e0c |
332 | float myEt = Et(simPart); |
333 | FillHisto2D(Form("EtReconstructed%sXiDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
334 | } |
020abff0 |
335 | if(pdgCodeGrandma == fAntiXiCode){ |
641e1e0c |
336 | float myEt = Et(simPart); |
337 | FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
338 | } |
020abff0 |
339 | if(pdgCodeGrandma == fOmegaCode){ |
641e1e0c |
340 | float myEt = Et(simPart); |
341 | FillHisto2D(Form("EtReconstructed%sOmegaDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
342 | } |
020abff0 |
343 | if(pdgCodeGrandma == fXiCode){ |
641e1e0c |
344 | float myEt = Et(simPart); |
345 | FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",CutName->Data()),track->Pt(),track->Eta(),myEt); |
346 | } |
347 | |
348 | } |
349 | } |
350 | } |
351 | } |
352 | } |
353 | } |
354 | } |
355 | |
356 | } |
357 | } |
358 | delete list; |
359 | } |
360 | //delete AliESDpid; |
361 | return 1; |
362 | } |
363 | Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev) |
364 | { |
365 | ResetEventValues(); |
366 | |
367 | // Get us an mc event |
368 | AliMCEvent *mcEvent = dynamic_cast<AliMCEvent*>(ev); |
369 | |
370 | // Let's play with the stack! |
371 | AliStack *stack = mcEvent->Stack(); |
372 | |
373 | Int_t nPrim = stack->GetNtrack(); |
374 | |
375 | //=================Tracks which may or may not have been reconstructed================= |
376 | |
377 | for (Int_t iPart = 0; iPart < nPrim; iPart++) |
378 | { |
379 | |
380 | TParticle *part = stack->Particle(iPart); |
381 | |
382 | if (!part) |
383 | { |
384 | Printf("ERROR: Could not get particle %d", iPart); |
385 | continue; |
386 | } |
387 | |
388 | TParticlePDG *pc = part->GetPDG(0); |
389 | |
390 | // Check if it is a primary particle |
391 | if (!stack->IsPhysicalPrimary(iPart)){//secondaries... |
392 | } |
393 | else{//primaries |
394 | // Check for reasonable (for now neutral and singly charged) charge on the particle |
395 | //note that the charge is stored in units of e/3 |
396 | //if (TMath::Abs(pc->Charge()) != EtMonteCarloCuts::kSingleChargedParticle && pc->Charge() != EtMonteCarloCuts::kNeutralParticle) continue; |
397 | |
398 | |
399 | if (TMath::Abs(part->Eta()) < fEtaCut) { |
400 | |
401 | Int_t pdgCode = part->GetPDG(0)->PdgCode(); |
402 | //cout<<pdgCode->PdgCode()<<" "; |
403 | //fPdgDB->GetParticle("pi+")->PdgCode(); |
404 | bool filled = false; |
405 | //============Charged hadrons=================================== |
020abff0 |
406 | if(pdgCode == fPiPlusCode){ |
641e1e0c |
407 | //cout<<"I'm a simulated primary "<<part->GetName()<<"! "<<"my label is "<<part->GetFirstMother()<<" pt "<<part->Pt()<<endl; |
408 | float myEt = Et(part); |
409 | FillHisto2D("EtSimulatedPiPlus",part->Pt(),part->Eta(),myEt); |
410 | FillHisto2D("EtNSimulatedPiPlus",part->Pt(),part->Eta(),1.0); |
411 | FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt); |
412 | FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0); |
413 | FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEt); |
414 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
415 | filled = true; |
416 | } |
020abff0 |
417 | if(pdgCode == fPiMinusCode){ |
641e1e0c |
418 | float myEt = Et(part); |
419 | FillHisto2D("EtSimulatedPiMinus",part->Pt(),part->Eta(),myEt); |
420 | FillHisto2D("EtNSimulatedPiMinus",part->Pt(),part->Eta(),1.0); |
421 | FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt); |
422 | FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0); |
423 | FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEt); |
424 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
425 | filled = true; |
426 | } |
020abff0 |
427 | if(pdgCode == fKPlusCode){ |
641e1e0c |
428 | float myEt = Et(part); |
020abff0 |
429 | float myEtPi = Et(part,fPionMass); |
641e1e0c |
430 | FillHisto2D("EtSimulatedKPlus",part->Pt(),part->Eta(),myEt); |
431 | FillHisto2D("EtNSimulatedKPlus",part->Pt(),part->Eta(),1.0); |
432 | FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt); |
433 | FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0); |
434 | FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi); |
435 | FillHisto2D("EtSimulatedKPlusAssumingPion",part->Pt(),part->Eta(),myEtPi); |
436 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
437 | filled = true; |
438 | } |
020abff0 |
439 | if(pdgCode == fKMinusCode){ |
641e1e0c |
440 | float myEt = Et(part); |
020abff0 |
441 | float myEtPi = Et(part,fPionMass); |
641e1e0c |
442 | FillHisto2D("EtSimulatedKMinus",part->Pt(),part->Eta(),myEt); |
443 | FillHisto2D("EtNSimulatedKMinus",part->Pt(),part->Eta(),1.0); |
444 | FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt); |
445 | FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0); |
446 | FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi); |
447 | FillHisto2D("EtSimulatedKMinusAssumingPion",part->Pt(),part->Eta(),myEtPi); |
448 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
449 | filled = true; |
450 | } |
020abff0 |
451 | if(pdgCode == fProtonCode){ |
641e1e0c |
452 | float myEt = Et(part); |
020abff0 |
453 | float myEtPi = Et(part,fPionMass); |
641e1e0c |
454 | FillHisto2D("EtSimulatedProton",part->Pt(),part->Eta(),myEt); |
455 | FillHisto2D("EtNSimulatedProton",part->Pt(),part->Eta(),1.0); |
456 | FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt); |
457 | FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0); |
458 | FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi); |
459 | FillHisto2D("EtSimulatedProtonAssumingPion",part->Pt(),part->Eta(),myEtPi); |
460 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
461 | filled = true; |
462 | } |
020abff0 |
463 | if(pdgCode == fAntiProtonCode){ |
641e1e0c |
464 | float myEt = Et(part); |
020abff0 |
465 | float myEtPi = Et(part,fPionMass); |
641e1e0c |
466 | FillHisto2D("EtSimulatedAntiProton",part->Pt(),part->Eta(),myEt); |
467 | FillHisto2D("EtNSimulatedAntiProton",part->Pt(),part->Eta(),1.0); |
468 | FillHisto2D("EtSimulatedChargedHadron",part->Pt(),part->Eta(),myEt); |
469 | FillHisto2D("EtNSimulatedChargedHadron",part->Pt(),part->Eta(),1.0); |
470 | FillHisto2D("EtSimulatedChargedHadronAssumingPion",part->Pt(),part->Eta(),myEtPi); |
471 | FillHisto2D("EtSimulatedAntiProtonAssumingPion",part->Pt(),part->Eta(),myEtPi); |
472 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
473 | filled = true; |
474 | } |
475 | //============Other hadrons=================================== |
476 | |
020abff0 |
477 | if(pdgCode == fNeutronCode){ |
641e1e0c |
478 | float myEt = Et(part); |
479 | FillHisto2D("EtSimulatedNeutron",part->Pt(),part->Eta(),myEt); |
480 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
481 | filled = true; |
482 | } |
020abff0 |
483 | if(pdgCode == fAntiNeutronCode){ |
641e1e0c |
484 | float myEt = Et(part); |
485 | FillHisto2D("EtSimulatedAntiNeutron",part->Pt(),part->Eta(),myEt); |
486 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
487 | filled = true; |
488 | } |
020abff0 |
489 | if(pdgCode == fLambdaCode){ |
641e1e0c |
490 | float myEt = Et(part); |
491 | //cout<<"I am a simulated lambda! pt "<<part->Pt()<<" eta "<<part->Eta()<<endl; |
492 | FillHisto2D("EtSimulatedLambda",part->Pt(),part->Eta(),myEt); |
493 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
494 | Int_t ndaughters = part->GetNDaughters(); |
495 | for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){ |
496 | Int_t daughterindex = part->GetDaughter(idaughter); |
497 | if(daughterindex<0 || daughterindex>1e5) continue; |
498 | TParticle *daughter = stack->ParticleFromTreeK(daughterindex); |
499 | if(daughter){ |
500 | if(daughter->GetPDG(0)){ |
501 | Int_t daughtercode = daughter->GetPDG(0)->PdgCode(); |
020abff0 |
502 | if(daughtercode==fPiMinusCode || daughtercode==fProtonCode){ |
641e1e0c |
503 | myEt = Et(daughter); |
504 | FillHisto2D("EtSimulatedLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt); |
505 | //cout<<"Lambda daughter is a "<<daughter->GetName()<<endl; |
506 | } |
507 | } |
508 | else{ |
509 | //cout<<"Lambda daughter is a "<<daughter->GetName()<<endl; |
510 | } |
511 | } |
512 | } |
513 | filled = true; |
514 | } |
020abff0 |
515 | if(pdgCode == fAntiLambdaCode){ |
641e1e0c |
516 | float myEt = Et(part); |
517 | FillHisto2D("EtSimulatedAntiLambda",part->Pt(),part->Eta(),myEt); |
518 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
519 | Int_t ndaughters = part->GetNDaughters(); |
520 | for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){ |
521 | Int_t daughterindex = part->GetDaughter(idaughter); |
522 | if(daughterindex<0 || daughterindex>1e5) continue; |
523 | TParticle *daughter = stack->ParticleFromTreeK(daughterindex); |
524 | if(daughter){ |
525 | if(daughter->GetPDG(0)){ |
526 | Int_t daughtercode = daughter->GetPDG(0)->PdgCode(); |
020abff0 |
527 | if(daughtercode==fPiPlusCode || daughtercode==fAntiProtonCode){ |
641e1e0c |
528 | myEt = Et(daughter); |
529 | FillHisto2D("EtSimulatedAntiLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt); |
530 | //cout<<"AntiLambda daughter is a "<<daughter->GetName()<<endl; |
531 | } |
532 | } |
533 | else{ |
534 | //cout<<"AntiLambda daughter is a "<<daughter->GetName()<<endl; |
535 | } |
536 | } |
537 | } |
538 | filled = true; |
539 | } |
020abff0 |
540 | if(pdgCode == fK0SCode){ |
641e1e0c |
541 | float myEt = Et(part); |
542 | FillHisto2D("EtSimulatedK0S",part->Pt(),part->Eta(),myEt); |
543 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
544 | Int_t ndaughters = part->GetNDaughters(); |
545 | for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){ |
546 | Int_t daughterindex = part->GetDaughter(idaughter); |
547 | if(daughterindex<0 || daughterindex>1e5) continue; |
548 | TParticle *daughter = stack->ParticleFromTreeK(daughterindex); |
549 | if(daughter){ |
550 | if(daughter->GetPDG(0)){ |
551 | |
552 | Int_t daughtercode = daughter->GetPDG(0)->PdgCode(); |
020abff0 |
553 | if(daughtercode==fPiMinusCode || daughtercode==fPiPlusCode){ |
641e1e0c |
554 | myEt = Et(daughter); |
555 | FillHisto2D("EtSimulatedK0SDaughters",daughter->Pt(),daughter->Eta(),myEt); |
556 | //cout<<"K0S daughter is a "<<daughter->GetName()<<endl; |
557 | } |
558 | } |
559 | else{ |
560 | //cout<<"K0S daughter is a "<<daughter->GetName()<<endl; |
561 | } |
562 | } |
563 | } |
564 | filled = true; |
565 | } |
020abff0 |
566 | if(pdgCode == fK0LCode){ |
641e1e0c |
567 | float myEt = Et(part); |
568 | FillHisto2D("EtSimulatedK0L",part->Pt(),part->Eta(),myEt); |
569 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
570 | filled = true; |
571 | } |
020abff0 |
572 | if(pdgCode == fOmegaCode){ |
641e1e0c |
573 | float myEt = Et(part); |
574 | FillHisto2D("EtSimulatedOmega",part->Pt(),part->Eta(),myEt); |
575 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
576 | Int_t ndaughters = part->GetNDaughters(); |
577 | for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){ |
578 | Int_t daughterindex = part->GetDaughter(idaughter); |
579 | if(daughterindex<0 || daughterindex>1e5) continue; |
580 | TParticle *daughter = stack->Particle(daughterindex); |
581 | if(daughter){ |
582 | if(daughter->GetPDG(0)){ |
583 | |
584 | Int_t daughtercode = daughter->GetPDG(0)->PdgCode(); |
020abff0 |
585 | if(daughtercode==fPiPlusCode || daughtercode==fProtonCode || daughtercode==fKMinusCode){ |
641e1e0c |
586 | myEt = Et(daughter); |
587 | FillHisto2D("EtSimulatedOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt); |
588 | //cout<<"Omega daughter is a "<<daughter->GetName()<<endl; |
589 | } |
590 | } |
591 | else{ |
592 | //cout<<"Omega daughter is a "<<daughter->GetName()<<endl; |
593 | } |
594 | } |
595 | } |
596 | filled = true; |
597 | } |
020abff0 |
598 | if(pdgCode == fAntiOmegaCode){ |
641e1e0c |
599 | float myEt = Et(part); |
600 | FillHisto2D("EtSimulatedOmega",part->Pt(),part->Eta(),myEt); |
601 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
602 | Int_t ndaughters = part->GetNDaughters(); |
603 | for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){ |
604 | Int_t daughterindex = part->GetDaughter(idaughter); |
605 | if(daughterindex<0 || daughterindex>1e5) continue; |
606 | TParticle *daughter = stack->ParticleFromTreeK(daughterindex); |
607 | if(daughter){ |
608 | if(daughter->GetPDG(0)){ |
609 | Int_t daughtercode = daughter->GetPDG(0)->PdgCode(); |
020abff0 |
610 | if(daughtercode==fPiMinusCode || daughtercode==fAntiProtonCode || daughtercode==fKPlusCode){ |
641e1e0c |
611 | myEt = Et(daughter); |
612 | FillHisto2D("EtSimulatedAntiOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt); |
613 | //cout<<"AntiOmega daughter is a "<<daughter->GetName()<<endl; |
614 | } |
615 | } |
616 | else{ |
617 | //cout<<"AntiOmega daughter is a "<<daughter->GetName()<<endl; |
618 | } |
619 | } |
620 | } |
621 | filled = true; |
622 | } |
623 | //There are two codes for Sigmas |
020abff0 |
624 | if(pdgCode == fSigmaCode || pdgCode == -3222){ |
641e1e0c |
625 | float myEt = Et(part); |
626 | FillHisto2D("EtSimulatedSigma",part->Pt(),part->Eta(),myEt); |
627 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
628 | filled = true; |
629 | } |
020abff0 |
630 | if(pdgCode == fAntiSigmaCode || pdgCode == 3222){ |
641e1e0c |
631 | float myEt = Et(part); |
632 | FillHisto2D("EtSimulatedAntiSigma",part->Pt(),part->Eta(),myEt); |
633 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
634 | filled = true; |
635 | } |
020abff0 |
636 | if(pdgCode == fXiCode){ |
641e1e0c |
637 | float myEt = Et(part); |
638 | FillHisto2D("EtSimulatedXi",part->Pt(),part->Eta(),myEt); |
639 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
640 | Int_t ndaughters = part->GetNDaughters(); |
641 | for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){ |
642 | Int_t daughterindex = part->GetDaughter(idaughter); |
643 | if(daughterindex<0 || daughterindex>1e5 || daughterindex>1e5) continue; |
644 | //cerr<<"Daughter index "<<daughterindex<<" npart "<<nPrim<<endl; |
645 | TParticle *daughter = stack->ParticleFromTreeK(daughterindex); |
646 | if(daughter){ |
647 | if(daughter->GetPDG(0)){ |
648 | |
649 | Int_t daughtercode = daughter->GetPDG(0)->PdgCode(); |
020abff0 |
650 | if(daughtercode==fPiPlusCode || daughtercode==fProtonCode || daughtercode==fPiMinusCode){ |
641e1e0c |
651 | myEt = Et(daughter); |
652 | FillHisto2D("EtSimulatedXiDaughters",daughter->Pt(),daughter->Eta(),myEt); |
653 | //cout<<"Xi daughter is a "<<daughter->GetName()<<endl; |
654 | } |
655 | } |
656 | else{ |
657 | //cout<<"Xi daughter is a "<<daughter->GetName()<<endl; |
658 | } |
659 | } |
660 | } |
661 | filled = true; |
662 | } |
020abff0 |
663 | if(pdgCode == fAntiXiCode){ |
641e1e0c |
664 | float myEt = Et(part); |
665 | FillHisto2D("EtSimulatedAntiXi",part->Pt(),part->Eta(),myEt); |
666 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
667 | Int_t ndaughters = part->GetNDaughters(); |
668 | for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){ |
669 | Int_t daughterindex = part->GetDaughter(idaughter); |
670 | if(daughterindex<0 || daughterindex>1e5) continue; |
671 | TParticle *daughter = stack->ParticleFromTreeK(daughterindex); |
672 | if(daughter){ |
673 | if(daughter->GetPDG(0)){ |
674 | Int_t daughtercode = daughter->GetPDG(0)->PdgCode(); |
020abff0 |
675 | if(daughtercode==fPiPlusCode || daughtercode==fAntiProtonCode || daughtercode==fPiMinusCode){ |
641e1e0c |
676 | myEt = Et(daughter); |
677 | FillHisto2D("EtSimulatedAntiXiDaughters",daughter->Pt(),daughter->Eta(),myEt); |
678 | //cout<<"AntiXi daughter is a "<<daughter->GetName()<<endl; |
679 | } |
680 | } |
681 | else{ |
682 | //cout<<"AntiXi daughter is a "<<daughter->GetName()<<endl; |
683 | } |
684 | } |
685 | } |
686 | filled = true; |
687 | } |
020abff0 |
688 | if(pdgCode == fXi0Code){ |
641e1e0c |
689 | float myEt = Et(part); |
690 | FillHisto2D("EtSimulatedXi0",part->Pt(),part->Eta(),myEt); |
691 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
692 | filled = true; |
693 | } |
020abff0 |
694 | if(pdgCode == fAntiXi0Code){ |
641e1e0c |
695 | float myEt = Et(part); |
696 | FillHisto2D("EtSimulatedAntiXi0",part->Pt(),part->Eta(),myEt); |
697 | FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt); |
698 | filled = true; |
699 | } |
700 | //============electrons=================================== |
701 | |
020abff0 |
702 | if(pdgCode == fEPlusCode){ |
641e1e0c |
703 | float myEt = Et(part); |
704 | FillHisto2D("EtSimulatedEPlus",part->Pt(),part->Eta(),myEt); |
705 | filled = true; |
706 | } |
020abff0 |
707 | if(pdgCode == fEMinusCode){ |
641e1e0c |
708 | float myEt = Et(part); |
709 | FillHisto2D("EtSimulatedEMinus",part->Pt(),part->Eta(),myEt); |
710 | filled = true; |
711 | } |
712 | if(!filled){ |
713 | if( strcmp(pc->ParticleClass(),"Baryon")==0 || strcmp(pc->ParticleClass(),"Meson")==0 ){ |
714 | //cout<<"Did not find a place for "<<part->GetName()<<" "<<pdgCode<<" which is a "<<pc->ParticleClass()<<endl; |
715 | } |
716 | } |
717 | } |
718 | } |
719 | } |
720 | |
721 | |
722 | |
723 | |
724 | // fTotNeutralEtAcc = fTotNeutralEt; |
725 | // fTotEt = fTotChargedEt + fTotNeutralEt; |
726 | // fTotEtAcc = fTotChargedEtAcc + fTotNeutralEtAcc; |
727 | |
728 | // FillHistograms(); |
729 | |
730 | return 1; |
731 | |
732 | } |
733 | |
734 | void AliAnalysisHadEtMonteCarlo::Init() |
735 | { |
736 | |
737 | AliAnalysisHadEt::Init(); |
738 | |
739 | fVertexXCut = EtReconstructedCuts::kVertexXCut; |
740 | fVertexYCut = EtReconstructedCuts::kVertexYCut; |
741 | fVertexZCut = EtReconstructedCuts::kVertexZCut; |
742 | fIPxyCut = EtReconstructedCuts::kIPxyCut; |
743 | fIPzCut = EtReconstructedCuts::kIPzCut; |
744 | // Track cuts |
745 | //Bool_t selectPrimaries=kTRUE; |
020abff0 |
746 | //ffesdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(selectPrimaries); |
747 | //ffesdtrackCutsITSTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); |
641e1e0c |
748 | |
749 | } |
750 | void AliAnalysisHadEtMonteCarlo::CreateHistograms(){ |
751 | //for simulated Et only (no reconstruction) |
752 | CreateEtaPtHisto2D(TString("EtSimulatedPiPlus"),TString("Simulated E_{T} from #pi^{+}")); |
753 | CreateEtaPtHisto2D("EtSimulatedPiMinus","Simulated E_{T} from #pi^{-}"); |
754 | CreateEtaPtHisto2D("EtSimulatedKPlus","Simulated E_{T} from K^{+}"); |
755 | CreateEtaPtHisto2D("EtSimulatedKMinus","Simulated E_{T} from K^{-}"); |
756 | CreateEtaPtHisto2D("EtSimulatedProton","Simulated E_{T} from p"); |
757 | CreateEtaPtHisto2D("EtSimulatedAntiProton","Simulated E_{T} from #bar{p}"); |
758 | CreateEtaPtHisto2D("EtSimulatedChargedHadron","Simulated E_{T} from charged hadrons"); |
759 | CreateEtaPtHisto2D(TString("EtNSimulatedPiPlus"),TString("Number of Simulated #pi^{+}")); |
760 | CreateEtaPtHisto2D("EtNSimulatedPiMinus","Number of simulated #pi^{-}"); |
761 | CreateEtaPtHisto2D("EtNSimulatedKPlus","Number of simulated K^{+}"); |
762 | CreateEtaPtHisto2D("EtNSimulatedKMinus","Number of simulated K^{-}"); |
763 | CreateEtaPtHisto2D("EtNSimulatedProton","Number of simulated p"); |
764 | CreateEtaPtHisto2D("EtNSimulatedAntiProton","Number of simulated #bar{p}"); |
765 | CreateEtaPtHisto2D("EtNSimulatedChargedHadron","Number of simulated charged hadrons"); |
766 | |
767 | CreateEtaPtHisto2D("EtSimulatedChargedHadronAssumingPion","Simulated E_{T} from charged hadrons assuming they are all pions"); |
768 | CreateEtaPtHisto2D("EtSimulatedKPlusAssumingPion","Simulated E_{T} from K^{+} assuming #pi mass"); |
769 | CreateEtaPtHisto2D("EtSimulatedKMinusAssumingPion","Simulated E_{T} from K^{-} assuming #pi mass"); |
770 | CreateEtaPtHisto2D("EtSimulatedProtonAssumingPion","Simulated E_{T} from p assuming #pi mass"); |
771 | CreateEtaPtHisto2D("EtSimulatedAntiProtonAssumingPion","Simulated E_{T} from #bar{p} assuming #pi mass"); |
772 | |
773 | CreateEtaPtHisto2D("EtSimulatedLambda","Simulated E_{T} from #Lambda"); |
774 | CreateEtaPtHisto2D("EtSimulatedAntiLambda","Simulated E_{T} from #bar{#Lambda}"); |
775 | CreateEtaPtHisto2D("EtSimulatedK0S","Simulated E_{T} from K^{0}_{S}"); |
776 | CreateEtaPtHisto2D("EtSimulatedK0L","Simulated E_{T} from K^{0}_{L}"); |
777 | CreateEtaPtHisto2D("EtSimulatedNeutron","Simulated E_{T} from neutrons"); |
778 | CreateEtaPtHisto2D("EtSimulatedAntiNeutron","Simulated E_{T} from #bar{n}"); |
779 | CreateEtaPtHisto2D("EtSimulatedEPlus","Simulated E_{T} from e^{+}"); |
780 | CreateEtaPtHisto2D("EtSimulatedEMinus","Simulated E_{T} from e^{-}"); |
781 | CreateEtaPtHisto2D("EtSimulatedOmega","Simulated E_{T} from #Omega^{-}"); |
782 | CreateEtaPtHisto2D("EtSimulatedAntiOmega","Simulated E_{T} from #Omega^{+}"); |
783 | CreateEtaPtHisto2D("EtSimulatedXi","Simulated E_{T} from #Xi^{-}"); |
784 | CreateEtaPtHisto2D("EtSimulatedAntiXi","Simulated E_{T} from #Xi^{+}"); |
785 | CreateEtaPtHisto2D("EtSimulatedSigma","Simulated E_{T} from #Xi^{-}"); |
786 | CreateEtaPtHisto2D("EtSimulatedAntiSigma","Simulated E_{T} from #Xi^{+}"); |
787 | CreateEtaPtHisto2D("EtSimulatedXi0","Simulated E_{T} from #Xi^{0}"); |
788 | CreateEtaPtHisto2D("EtSimulatedAntiXi0","Simulated E_{T} from #Xi^{0}"); |
789 | CreateEtaPtHisto2D("EtSimulatedAllHadron","Simulated E_{T} from all hadrons"); |
790 | |
791 | |
792 | CreateEtaPtHisto2D("EtSimulatedLambdaDaughters","Simulated E_{T} from #Lambda Daughters"); |
793 | CreateEtaPtHisto2D("EtSimulatedAntiLambdaDaughters","Simulated E_{T} from #bar{#Lambda} Daughters"); |
794 | CreateEtaPtHisto2D("EtSimulatedK0SDaughters","Simulated E_{T} from K^{0}_{S} Daughters"); |
795 | CreateEtaPtHisto2D("EtSimulatedOmegaDaughters","Simulated E_{T} from #Omega^{-} Daughters"); |
796 | CreateEtaPtHisto2D("EtSimulatedAntiOmegaDaughters","Simulated E_{T} from #Omega^{+} Daughters"); |
797 | CreateEtaPtHisto2D("EtSimulatedXiDaughters","Simulated E_{T} from #Xi^{-} Daughters"); |
798 | CreateEtaPtHisto2D("EtSimulatedAntiXiDaughters","Simulated E_{T} from #Xi^{+} Daughters"); |
799 | |
800 | TString *TPC = new TString("TPC"); |
801 | TString *ITS = new TString("ITS"); |
802 | TString *TPCITS = new TString("TPCITS"); |
803 | for(Int_t i=0;i<3;i++){ |
804 | TString *CutName; |
805 | Float_t maxPtdEdx = 10; |
806 | Float_t mindEdx = 35; |
807 | Float_t maxdEdx = 150.0; |
808 | switch(i){ |
809 | case 0: |
810 | CutName = TPC; |
811 | break; |
812 | case 1: |
813 | CutName = ITS; |
814 | maxPtdEdx = 5; |
815 | maxdEdx = 500.0; |
816 | break; |
817 | case 2: |
818 | CutName = TPCITS; |
819 | break; |
820 | default: |
821 | cerr<<"Error: cannot make histograms!"<<endl; |
822 | return; |
823 | } |
824 | |
825 | CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedPiPlus",CutName->Data()),"Reconstructed E_{T} from identified #pi^{+}"); |
826 | CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedPiMinus",CutName->Data()),"Reconstructed E_{T} from identified #pi^{-}"); |
827 | CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedKPlus",CutName->Data()),"Reconstructed E_{T} from identified K^{+}"); |
828 | CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedEMinus",CutName->Data()),"Reconstructed E_{T} from identified e^{-}"); |
829 | CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedEPlus",CutName->Data()),"Reconstructed E_{T} from identified e^{+}"); |
830 | CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedKMinus",CutName->Data()),"Reconstructed E_{T} from identified K^{-}"); |
831 | CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedProton",CutName->Data()),"Reconstructed E_{T} from identified p"); |
832 | CreateEtaPtHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",CutName->Data()),"Reconstructed E_{T} from identified #bar{p}"); |
833 | CreateEtaPtHisto2D(Form("EtNReconstructed%sUnidentified",CutName->Data()),"Number of Reconstructed unidentified particles"); |
834 | CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",CutName->Data()),"Reconstructed E_{T} from unidentified particles assuming pion mass"); |
835 | CreateEtaPtHisto2D(Form("EtReconstructed%sUnidentified",CutName->Data()),"Reconstructed E_{T} from unidentified particles using real mass"); |
836 | CreateEtaPtHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",CutName->Data()),"Reconstructed E_{T} from misidentified electrons"); |
837 | |
838 | |
839 | CreateEtaPtHisto2D(Form("EtReconstructed%sPiPlus",CutName->Data()),"Reconstructed E_{T} from #pi^{+}"); |
840 | CreateEtaPtHisto2D(Form("EtReconstructed%sPiMinus",CutName->Data()),"Reconstructed E_{T} from #pi^{-}"); |
841 | CreateEtaPtHisto2D(Form("EtReconstructed%sKPlus",CutName->Data()),"Reconstructed E_{T} from K^{+}"); |
842 | CreateEtaPtHisto2D(Form("EtReconstructed%sKMinus",CutName->Data()),"Reconstructed E_{T} from K^{-}"); |
843 | CreateEtaPtHisto2D(Form("EtReconstructed%sProton",CutName->Data()),"Reconstructed E_{T} from p"); |
844 | CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProton",CutName->Data()),"Reconstructed E_{T} from #bar{p}"); |
845 | CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadron",CutName->Data()),"Reconstructed E_{T} from charged hadrons"); |
846 | CreateEtaPtHisto2D(Form("EtNReconstructed%sPiPlus",CutName->Data()),"Reconstructed E_{T} from #pi^{+}"); |
847 | CreateEtaPtHisto2D(Form("EtNReconstructed%sPiMinus",CutName->Data()),"Reconstructed E_{T} from #pi^{-}"); |
848 | CreateEtaPtHisto2D(Form("EtNReconstructed%sKPlus",CutName->Data()),"Reconstructed E_{T} from K^{+}"); |
849 | CreateEtaPtHisto2D(Form("EtNReconstructed%sKMinus",CutName->Data()),"Reconstructed E_{T} from K^{-}"); |
850 | CreateEtaPtHisto2D(Form("EtNReconstructed%sProton",CutName->Data()),"Reconstructed E_{T} from p"); |
851 | CreateEtaPtHisto2D(Form("EtNReconstructed%sAntiProton",CutName->Data()),"Reconstructed E_{T} from #bar{p}"); |
852 | CreateEtaPtHisto2D(Form("EtNReconstructed%sChargedHadron",CutName->Data()),"Reconstructed E_{T} from charged hadrons"); |
853 | |
854 | CreateEtaPtHisto2D(Form("EtReconstructed%sChargedHadronAssumingPion",CutName->Data()),"Reconstructed E_{T} from charged hadrons assuming they are all pions"); |
855 | CreateEtaPtHisto2D(Form("EtReconstructed%sKPlusAssumingPion",CutName->Data()),"Reconstructed E_{T} from K^{+} assuming #pi mass"); |
856 | CreateEtaPtHisto2D(Form("EtReconstructed%sKMinusAssumingPion",CutName->Data()),"Reconstructed E_{T} from K^{-} assuming #pi mass"); |
857 | CreateEtaPtHisto2D(Form("EtReconstructed%sProtonAssumingPion",CutName->Data()),"Reconstructed E_{T} from p assuming #pi mass"); |
858 | CreateEtaPtHisto2D(Form("EtReconstructed%sAntiProtonAssumingPion",CutName->Data()),"Reconstructed E_{T} from #bar{p} assuming #pi mass"); |
859 | |
860 | CreateEtaPtHisto2D(Form("EtReconstructed%sEPlus",CutName->Data()),"Reconstructed E_{T} from e^{+}"); |
861 | CreateEtaPtHisto2D(Form("EtReconstructed%sEMinus",CutName->Data()),"Reconstructed E_{T} from e^{-}"); |
862 | |
863 | |
864 | |
865 | CreateEtaPtHisto2D(Form("EtReconstructed%sLambdaDaughters",CutName->Data()),"Reconstructed E_{T} from #Lambda Daughters"); |
866 | CreateEtaPtHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",CutName->Data()),"Reconstructed E_{T} from #bar{#Lambda} Daughters"); |
867 | CreateEtaPtHisto2D(Form("EtReconstructed%sK0SDaughters",CutName->Data()),"Reconstructed E_{T} from K^{0}_{S} Daughters"); |
868 | CreateEtaPtHisto2D(Form("EtReconstructed%sOmegaDaughters",CutName->Data()),"Reconstructed E_{T} from #Omega^{-} Daughters"); |
869 | CreateEtaPtHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",CutName->Data()),"Reconstructed E_{T} from #Omega^{+} Daughters"); |
870 | CreateEtaPtHisto2D(Form("EtReconstructed%sXiDaughters",CutName->Data()),"Reconstructed E_{T} from #Xi^{-} Daughters"); |
871 | CreateEtaPtHisto2D(Form("EtReconstructed%sAntiXiDaughters",CutName->Data()),"Reconstructed E_{T} from #Xi^{+} Daughters"); |
872 | |
873 | CreateIntHisto1D(Form("UnidentifiedPIDs%s",CutName->Data()),"PIDs of unidentified particles", "PID", "Number of particles",9, -4,4); |
874 | CreateHisto2D(Form("MisidentifiedPIDs%s",CutName->Data()),"PIDs of misidentified particles", "PID real","PID identified",5, -.5,4.5,5, -.5,4.5); |
875 | CreateHisto2D(Form("dEdxAll%s",CutName->Data()),"dE/dx for all particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx); |
876 | CreateHisto2D(Form("dEdxPion%s",CutName->Data()),"dE/dx for #pi^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx); |
877 | CreateHisto2D(Form("dEdxKaon%s",CutName->Data()),"dE/dx for K^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx); |
878 | CreateHisto2D(Form("dEdxProton%s",CutName->Data()),"dE/dx for p(#bar{p})","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx); |
879 | CreateHisto2D(Form("dEdxElectron%s",CutName->Data()),"dE/dx for e^{#pm}","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx); |
880 | CreateHisto2D(Form("dEdxUnidentified%s",CutName->Data()),"dE/dx for unidentified particles","momentum (GeV/c)","dE/dx",400,0.0,maxPtdEdx,200,mindEdx,maxdEdx); |
881 | } |
882 | |
883 | CreateIntHisto1D("NEvents","Number of events","number of events","Number of events",1,0,1); |
884 | |
885 | //CreateHisto1D("MisidentifiedPIDs","PIDs for particles misidentified that are not a #pi,K,p","PID","number of entries",3000,0.5,3000.5); |
886 | |
887 | |
888 | |
889 | // list->Add(fHistEt); |
890 | // TString histname = "fHistEt" + fHistogramNameSuffix; |
891 | |
892 | // fHistEt = new TH1F(histname.Data(), "Total E_{T} Distribution", 1000, 0.00, 99); |
893 | // fHistEt->GetXaxis()->SetTitle("E_{T} (GeV/c^{2})"); |
894 | // fHistEt->GetYaxis()->SetTitle("dN/dE_{T} (c^{2}/GeV)"); |
895 | } |
896 | |