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