ROOT logo
/////////////////////////////////////////////////////////////////////////////////////
//                                                                                 //
// AliFemtoMCTrackCut: A basic track cut that used information from                //
// ALICE MC to accept or reject the track.                                         //  
// Enables the selection on charge, transverse momentum, rapidity,                 //
// and PDG of the particle							   //
// Authors: Malgorzata Janik, Warsaw University of Technology, majanik@cern.ch     //
//          Lukasz Graczykowski, Warsaw University of Technology, lgraczyk@cern.ch //
//  	       				                                           //
/////////////////////////////////////////////////////////////////////////////////////



#include "AliFemtoMCTrackCut.h"
#include <cstdio>

#ifdef __ROOT__ 
ClassImp(AliFemtoMCTrackCut)
#endif


AliFemtoMCTrackCut::AliFemtoMCTrackCut() :
    fCharge(0),
    fLabel(0),
    fPDGcode(211),
    fNTracksPassed(0),
    fNTracksFailed(0)
{
  // Default constructor
  fNTracksPassed = fNTracksFailed = 0;
  fCharge = 0;  // takes both charges 0
  fPt[0]=0.0;              fPt[1] = 100.0;//100
  fPDGcode = 0;
  fRapidity[0]=-2;       fRapidity[1]=2;//-2 2
  fEta[0]=-2;       fEta[1]=2;//-2 2
  fLabel=false;
}
//------------------------------
AliFemtoMCTrackCut::~AliFemtoMCTrackCut(){
  /* noop */
}
//------------------------------
bool AliFemtoMCTrackCut::Pass(const AliFemtoTrack* track)
{

  if (fLabel)
    {
      if(track->Label()<0)
	{
	  fNTracksFailed++;
	  return false;
	}    
    }

   if (fCharge!=0)
    {               
    if (fCharge==10)	
	{
	if(track->Charge()==0){
	  fNTracksFailed++;
	  return false;
	  }
	} 
      else if (track->Charge()!= fCharge)	
	{
	  fNTracksFailed++;
	  return false;
	}
    }

   if (fPDGcode!=0)
     {
     
     if(fPDGcode==11 || fPDGcode==-11 )
     { if(!fMass) fMass=0.000511;
	 if (track->PidProbElectron()!=1000)
	   {
	     fNTracksFailed++;
	     return false;
	   }
	   }
       if(fPDGcode==13 || fPDGcode==-13)
       {
	 if (track->PidProbMuon()!=1000)
	   {if(!fMass) fMass=0.105658;
	     fNTracksFailed++;
	     return false;
	   }
	   }
       if(fPDGcode==211 || fPDGcode==-211 )
       {
	 if (track->PidProbPion()!=1000)
	   {if(!fMass) fMass= 0.1395699;
	     fNTracksFailed++;
	     return false;
	   }
	   }
       if(fPDGcode==2212 || fPDGcode==-2212 )
       { if(!fMass) fMass=0.938272013;
	 if (track->PidProbProton()!=1000)
	   {
	     fNTracksFailed++;
	     return false;
	   }
	   }
      if(fPDGcode==321 || fPDGcode==-321 )
      { if(!fMass) fMass=0.493677;
	 if (track->PidProbKaon()!=1000)
	   {
	     fNTracksFailed++;
	     return false;
	   }
	   }
     }

  float tEnergy = ::sqrt(track->P().Mag2()+fMass*fMass);
  //cout<<"MCTrackCut: tEnergy: "<<tEnergy<<endl;
  //cout<<"MCTrackCut: track->P().z(): "<<track->P().z()<<endl;
  //cout<<"MCTrackCut: tEnergy-track->P().z(): "<<tEnergy-track->P().z()<<endl;
  float tRapidity;
  if(tEnergy-track->P().z() == 0 || (tEnergy+track->P().z())/(tEnergy-track->P().z()) == 0)
    {
    fNTracksFailed++;
    return false;
    }
  else
    {
      if((tEnergy+track->P().z())/(tEnergy-track->P().z())>0)
	tRapidity = 0.5*TMath::Log((tEnergy+track->P().z())/(tEnergy-track->P().z()));
      else
	tRapidity = 0;
    }
  float tPt = ::sqrt((track->P().x())*(track->P().x())+(track->P().y())*(track->P().y()));
  float tEta = track->P().PseudoRapidity();

  if ((tRapidity<fRapidity[0])||(tRapidity>fRapidity[1]))
    {
      fNTracksFailed++;
      return false;
    }
  if ((tEta<fEta[0])||(tEta>fEta[1]))
    {
      fNTracksFailed++;
      return false;
    }
  if ((tPt<fPt[0])||(tPt>fPt[1]))
    {
      fNTracksFailed++;
      return false;
    }

  fNTracksPassed++ ;
  return true;
    
    
}
//------------------------------
AliFemtoString AliFemtoMCTrackCut::Report()
{
  // Prepare report from the execution
  string tStemp;
  char tCtemp[100];
  snprintf(tCtemp,100,"Particle mass:\t%E\n",this->Mass());
  tStemp=tCtemp;
  snprintf(tCtemp,100,"Particle charge:\t%d\n",fCharge);
  tStemp+=tCtemp;
  snprintf(tCtemp,100,"Particle pT:\t%E - %E\n",fPt[0],fPt[1]);
  tStemp+=tCtemp;
  snprintf(tCtemp,100,"Particle rapidity:\t%E - %E\n",fRapidity[0],fRapidity[1]);
  tStemp+=tCtemp; 
  snprintf(tCtemp,100,"Particle eta:\t%E - %E\n",fEta[0],fEta[1]);
  tStemp+=tCtemp;
  snprintf(tCtemp,100,"Number of tracks which passed:\t%ld  Number which failed:\t%ld\n",fNTracksPassed,fNTracksFailed);
  tStemp += tCtemp;
  AliFemtoString returnThis = tStemp;
  return returnThis;
}
TList *AliFemtoMCTrackCut::ListSettings()
{
  // return a list of settings in a writable form
  TList *tListSetttings = new TList();
  char buf[200];
  snprintf(buf, 200, "AliFemtoMCTrackCut.mass=%f", this->Mass());
  tListSetttings->AddLast(new TObjString(buf));

  snprintf(buf, 200, "AliFemtoMCTrackCut.charge=%i", fCharge);
  tListSetttings->AddLast(new TObjString(buf));
  return tListSetttings;
}

			    
 AliFemtoMCTrackCut.cxx:1
 AliFemtoMCTrackCut.cxx:2
 AliFemtoMCTrackCut.cxx:3
 AliFemtoMCTrackCut.cxx:4
 AliFemtoMCTrackCut.cxx:5
 AliFemtoMCTrackCut.cxx:6
 AliFemtoMCTrackCut.cxx:7
 AliFemtoMCTrackCut.cxx:8
 AliFemtoMCTrackCut.cxx:9
 AliFemtoMCTrackCut.cxx:10
 AliFemtoMCTrackCut.cxx:11
 AliFemtoMCTrackCut.cxx:12
 AliFemtoMCTrackCut.cxx:13
 AliFemtoMCTrackCut.cxx:14
 AliFemtoMCTrackCut.cxx:15
 AliFemtoMCTrackCut.cxx:16
 AliFemtoMCTrackCut.cxx:17
 AliFemtoMCTrackCut.cxx:18
 AliFemtoMCTrackCut.cxx:19
 AliFemtoMCTrackCut.cxx:20
 AliFemtoMCTrackCut.cxx:21
 AliFemtoMCTrackCut.cxx:22
 AliFemtoMCTrackCut.cxx:23
 AliFemtoMCTrackCut.cxx:24
 AliFemtoMCTrackCut.cxx:25
 AliFemtoMCTrackCut.cxx:26
 AliFemtoMCTrackCut.cxx:27
 AliFemtoMCTrackCut.cxx:28
 AliFemtoMCTrackCut.cxx:29
 AliFemtoMCTrackCut.cxx:30
 AliFemtoMCTrackCut.cxx:31
 AliFemtoMCTrackCut.cxx:32
 AliFemtoMCTrackCut.cxx:33
 AliFemtoMCTrackCut.cxx:34
 AliFemtoMCTrackCut.cxx:35
 AliFemtoMCTrackCut.cxx:36
 AliFemtoMCTrackCut.cxx:37
 AliFemtoMCTrackCut.cxx:38
 AliFemtoMCTrackCut.cxx:39
 AliFemtoMCTrackCut.cxx:40
 AliFemtoMCTrackCut.cxx:41
 AliFemtoMCTrackCut.cxx:42
 AliFemtoMCTrackCut.cxx:43
 AliFemtoMCTrackCut.cxx:44
 AliFemtoMCTrackCut.cxx:45
 AliFemtoMCTrackCut.cxx:46
 AliFemtoMCTrackCut.cxx:47
 AliFemtoMCTrackCut.cxx:48
 AliFemtoMCTrackCut.cxx:49
 AliFemtoMCTrackCut.cxx:50
 AliFemtoMCTrackCut.cxx:51
 AliFemtoMCTrackCut.cxx:52
 AliFemtoMCTrackCut.cxx:53
 AliFemtoMCTrackCut.cxx:54
 AliFemtoMCTrackCut.cxx:55
 AliFemtoMCTrackCut.cxx:56
 AliFemtoMCTrackCut.cxx:57
 AliFemtoMCTrackCut.cxx:58
 AliFemtoMCTrackCut.cxx:59
 AliFemtoMCTrackCut.cxx:60
 AliFemtoMCTrackCut.cxx:61
 AliFemtoMCTrackCut.cxx:62
 AliFemtoMCTrackCut.cxx:63
 AliFemtoMCTrackCut.cxx:64
 AliFemtoMCTrackCut.cxx:65
 AliFemtoMCTrackCut.cxx:66
 AliFemtoMCTrackCut.cxx:67
 AliFemtoMCTrackCut.cxx:68
 AliFemtoMCTrackCut.cxx:69
 AliFemtoMCTrackCut.cxx:70
 AliFemtoMCTrackCut.cxx:71
 AliFemtoMCTrackCut.cxx:72
 AliFemtoMCTrackCut.cxx:73
 AliFemtoMCTrackCut.cxx:74
 AliFemtoMCTrackCut.cxx:75
 AliFemtoMCTrackCut.cxx:76
 AliFemtoMCTrackCut.cxx:77
 AliFemtoMCTrackCut.cxx:78
 AliFemtoMCTrackCut.cxx:79
 AliFemtoMCTrackCut.cxx:80
 AliFemtoMCTrackCut.cxx:81
 AliFemtoMCTrackCut.cxx:82
 AliFemtoMCTrackCut.cxx:83
 AliFemtoMCTrackCut.cxx:84
 AliFemtoMCTrackCut.cxx:85
 AliFemtoMCTrackCut.cxx:86
 AliFemtoMCTrackCut.cxx:87
 AliFemtoMCTrackCut.cxx:88
 AliFemtoMCTrackCut.cxx:89
 AliFemtoMCTrackCut.cxx:90
 AliFemtoMCTrackCut.cxx:91
 AliFemtoMCTrackCut.cxx:92
 AliFemtoMCTrackCut.cxx:93
 AliFemtoMCTrackCut.cxx:94
 AliFemtoMCTrackCut.cxx:95
 AliFemtoMCTrackCut.cxx:96
 AliFemtoMCTrackCut.cxx:97
 AliFemtoMCTrackCut.cxx:98
 AliFemtoMCTrackCut.cxx:99
 AliFemtoMCTrackCut.cxx:100
 AliFemtoMCTrackCut.cxx:101
 AliFemtoMCTrackCut.cxx:102
 AliFemtoMCTrackCut.cxx:103
 AliFemtoMCTrackCut.cxx:104
 AliFemtoMCTrackCut.cxx:105
 AliFemtoMCTrackCut.cxx:106
 AliFemtoMCTrackCut.cxx:107
 AliFemtoMCTrackCut.cxx:108
 AliFemtoMCTrackCut.cxx:109
 AliFemtoMCTrackCut.cxx:110
 AliFemtoMCTrackCut.cxx:111
 AliFemtoMCTrackCut.cxx:112
 AliFemtoMCTrackCut.cxx:113
 AliFemtoMCTrackCut.cxx:114
 AliFemtoMCTrackCut.cxx:115
 AliFemtoMCTrackCut.cxx:116
 AliFemtoMCTrackCut.cxx:117
 AliFemtoMCTrackCut.cxx:118
 AliFemtoMCTrackCut.cxx:119
 AliFemtoMCTrackCut.cxx:120
 AliFemtoMCTrackCut.cxx:121
 AliFemtoMCTrackCut.cxx:122
 AliFemtoMCTrackCut.cxx:123
 AliFemtoMCTrackCut.cxx:124
 AliFemtoMCTrackCut.cxx:125
 AliFemtoMCTrackCut.cxx:126
 AliFemtoMCTrackCut.cxx:127
 AliFemtoMCTrackCut.cxx:128
 AliFemtoMCTrackCut.cxx:129
 AliFemtoMCTrackCut.cxx:130
 AliFemtoMCTrackCut.cxx:131
 AliFemtoMCTrackCut.cxx:132
 AliFemtoMCTrackCut.cxx:133
 AliFemtoMCTrackCut.cxx:134
 AliFemtoMCTrackCut.cxx:135
 AliFemtoMCTrackCut.cxx:136
 AliFemtoMCTrackCut.cxx:137
 AliFemtoMCTrackCut.cxx:138
 AliFemtoMCTrackCut.cxx:139
 AliFemtoMCTrackCut.cxx:140
 AliFemtoMCTrackCut.cxx:141
 AliFemtoMCTrackCut.cxx:142
 AliFemtoMCTrackCut.cxx:143
 AliFemtoMCTrackCut.cxx:144
 AliFemtoMCTrackCut.cxx:145
 AliFemtoMCTrackCut.cxx:146
 AliFemtoMCTrackCut.cxx:147
 AliFemtoMCTrackCut.cxx:148
 AliFemtoMCTrackCut.cxx:149
 AliFemtoMCTrackCut.cxx:150
 AliFemtoMCTrackCut.cxx:151
 AliFemtoMCTrackCut.cxx:152
 AliFemtoMCTrackCut.cxx:153
 AliFemtoMCTrackCut.cxx:154
 AliFemtoMCTrackCut.cxx:155
 AliFemtoMCTrackCut.cxx:156
 AliFemtoMCTrackCut.cxx:157
 AliFemtoMCTrackCut.cxx:158
 AliFemtoMCTrackCut.cxx:159
 AliFemtoMCTrackCut.cxx:160
 AliFemtoMCTrackCut.cxx:161
 AliFemtoMCTrackCut.cxx:162
 AliFemtoMCTrackCut.cxx:163
 AliFemtoMCTrackCut.cxx:164
 AliFemtoMCTrackCut.cxx:165
 AliFemtoMCTrackCut.cxx:166
 AliFemtoMCTrackCut.cxx:167
 AliFemtoMCTrackCut.cxx:168
 AliFemtoMCTrackCut.cxx:169
 AliFemtoMCTrackCut.cxx:170
 AliFemtoMCTrackCut.cxx:171
 AliFemtoMCTrackCut.cxx:172
 AliFemtoMCTrackCut.cxx:173
 AliFemtoMCTrackCut.cxx:174
 AliFemtoMCTrackCut.cxx:175
 AliFemtoMCTrackCut.cxx:176
 AliFemtoMCTrackCut.cxx:177
 AliFemtoMCTrackCut.cxx:178
 AliFemtoMCTrackCut.cxx:179
 AliFemtoMCTrackCut.cxx:180
 AliFemtoMCTrackCut.cxx:181
 AliFemtoMCTrackCut.cxx:182
 AliFemtoMCTrackCut.cxx:183
 AliFemtoMCTrackCut.cxx:184
 AliFemtoMCTrackCut.cxx:185
 AliFemtoMCTrackCut.cxx:186
 AliFemtoMCTrackCut.cxx:187
 AliFemtoMCTrackCut.cxx:188
 AliFemtoMCTrackCut.cxx:189
 AliFemtoMCTrackCut.cxx:190
 AliFemtoMCTrackCut.cxx:191