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)
127 tRapidity = 0.5*::log((tEnergy+track->P().z())/(tEnergy-track->P().z()));
128 float tPt = ::sqrt((track->P().x())*(track->P().x())+(track->P().y())*(track->P().y()));
129 float tEta = track->P().PseudoRapidity();
131 if ((tRapidity<fRapidity[0])||(tRapidity>fRapidity[1]))
136 if ((tEta<fEta[0])||(tEta>fEta[1]))
141 if ((tPt<fPt[0])||(tPt>fPt[1]))
152 //------------------------------
153 AliFemtoString AliFemtoMCTrackCut::Report()
155 // Prepare report from the execution
158 snprintf(tCtemp,100,"Particle mass:\t%E\n",this->Mass());
160 snprintf(tCtemp,100,"Particle charge:\t%d\n",fCharge);
162 snprintf(tCtemp,100,"Particle pT:\t%E - %E\n",fPt[0],fPt[1]);
164 snprintf(tCtemp,100,"Particle rapidity:\t%E - %E\n",fRapidity[0],fRapidity[1]);
166 snprintf(tCtemp,100,"Particle eta:\t%E - %E\n",fEta[0],fEta[1]);
168 snprintf(tCtemp,100,"Number of tracks which passed:\t%ld Number which failed:\t%ld\n",fNTracksPassed,fNTracksFailed);
170 AliFemtoString returnThis = tStemp;
173 TList *AliFemtoMCTrackCut::ListSettings()
175 // return a list of settings in a writable form
176 TList *tListSetttings = new TList();
178 snprintf(buf, 200, "AliFemtoMCTrackCut.mass=%f", this->Mass());
179 tListSetttings->AddLast(new TObjString(buf));
181 snprintf(buf, 200, "AliFemtoMCTrackCut.charge=%i", fCharge);
182 tListSetttings->AddLast(new TObjString(buf));
183 return tListSetttings;