1 /////////////////////////////////////////////////////////////////////////////////////
3 // AliFemtoMCTrackCut: A basic track cut that used information from //
4 // ALICE MC to accept or reject the track. //
5 // Enables the selection on charge, transverse momentum, rapidity, //
6 // and PDG of the particle //
7 // Authors: Malgorzata Janik, Warsaw University of Technology, majanik@cern.ch //
8 // Lukasz Graczykowski, Warsaw University of Technology, lgraczyk@cern.ch //
10 /////////////////////////////////////////////////////////////////////////////////////
14 #include "AliFemtoMCTrackCut.h"
18 ClassImp(AliFemtoMCTrackCut)
22 AliFemtoMCTrackCut::AliFemtoMCTrackCut() :
29 // Default constructor
30 fNTracksPassed = fNTracksFailed = 0;
31 fCharge = 0; // takes both charges 0
32 fPt[0]=0.0; fPt[1] = 100.0;//100
34 fRapidity[0]=-2; fRapidity[1]=2;//-2 2
35 fEta[0]=-2; fEta[1]=2;//-2 2
38 //------------------------------
39 AliFemtoMCTrackCut::~AliFemtoMCTrackCut(){
42 //------------------------------
43 bool AliFemtoMCTrackCut::Pass(const AliFemtoTrack* track)
59 if(track->Charge()==0){
64 else if (track->Charge()!= fCharge)
74 if(fPDGcode==11 || fPDGcode==-11 )
75 { if(!fMass) fMass=0.000511;
76 if (track->PidProbElectron()!=1000)
82 if(fPDGcode==13 || fPDGcode==-13)
84 if (track->PidProbMuon()!=1000)
85 {if(!fMass) fMass=0.105658;
90 if(fPDGcode==211 || fPDGcode==-211 )
92 if (track->PidProbPion()!=1000)
93 {if(!fMass) fMass= 0.1395699;
98 if(fPDGcode==2212 || fPDGcode==-2212 )
99 { if(!fMass) fMass=0.938272013;
100 if (track->PidProbProton()!=1000)
106 if(fPDGcode==321 || fPDGcode==-321 )
107 { if(!fMass) fMass=0.493677;
108 if (track->PidProbKaon()!=1000)
116 float tEnergy = ::sqrt(track->P().Mag2()+fMass*fMass);
117 //cout<<"MCTrackCut: tEnergy: "<<tEnergy<<endl;
118 //cout<<"MCTrackCut: track->P().z(): "<<track->P().z()<<endl;
119 //cout<<"MCTrackCut: tEnergy-track->P().z(): "<<tEnergy-track->P().z()<<endl;
121 if(tEnergy-track->P().z() == 0 || (tEnergy+track->P().z())/(tEnergy-track->P().z()) == 0)
128 if((tEnergy+track->P().z())/(tEnergy-track->P().z())>0)
129 tRapidity = 0.5*TMath::Log((tEnergy+track->P().z())/(tEnergy-track->P().z()));
133 float tPt = ::sqrt((track->P().x())*(track->P().x())+(track->P().y())*(track->P().y()));
134 float tEta = track->P().PseudoRapidity();
136 if ((tRapidity<fRapidity[0])||(tRapidity>fRapidity[1]))
141 if ((tEta<fEta[0])||(tEta>fEta[1]))
146 if ((tPt<fPt[0])||(tPt>fPt[1]))
157 //------------------------------
158 AliFemtoString AliFemtoMCTrackCut::Report()
160 // Prepare report from the execution
163 snprintf(tCtemp,100,"Particle mass:\t%E\n",this->Mass());
165 snprintf(tCtemp,100,"Particle charge:\t%d\n",fCharge);
167 snprintf(tCtemp,100,"Particle pT:\t%E - %E\n",fPt[0],fPt[1]);
169 snprintf(tCtemp,100,"Particle rapidity:\t%E - %E\n",fRapidity[0],fRapidity[1]);
171 snprintf(tCtemp,100,"Particle eta:\t%E - %E\n",fEta[0],fEta[1]);
173 snprintf(tCtemp,100,"Number of tracks which passed:\t%ld Number which failed:\t%ld\n",fNTracksPassed,fNTracksFailed);
175 AliFemtoString returnThis = tStemp;
178 TList *AliFemtoMCTrackCut::ListSettings()
180 // return a list of settings in a writable form
181 TList *tListSetttings = new TList();
183 snprintf(buf, 200, "AliFemtoMCTrackCut.mass=%f", this->Mass());
184 tListSetttings->AddLast(new TObjString(buf));
186 snprintf(buf, 200, "AliFemtoMCTrackCut.charge=%i", fCharge);
187 tListSetttings->AddLast(new TObjString(buf));
188 return tListSetttings;