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