ROOT logo
/***************************************************************************
 *
 * $Id: AliFemtoQATrackCut.cxx 24360 2008-03-10 09:48:27Z akisiel $ 
 *
 * 
 ***************************************************************************
 *
 * 
 *              
 *
 ***************************************************************************
 *
 * $Log$
 * Revision 1.3  2007/05/22 09:01:42  akisiel
 * Add the possibiloity to save cut settings in the ROOT file
 *
 * Revision 1.2  2007/05/21 10:38:25  akisiel
 * More coding rule conformance
 *
 * Revision 1.1  2007/05/16 10:25:06  akisiel
 * Making the directory structure of AliFemtoUser flat. All files go into one common directory
 *
 * Revision 1.4  2007/05/03 09:46:10  akisiel
 * Fixing Effective C++ warnings
 *
 * Revision 1.3  2007/04/27 07:25:59  akisiel
 * Make revisions needed for compilation from the main AliRoot tree
 *
 * Revision 1.1.1.1  2007/04/25 15:38:41  panos
 * Importing the HBT code dir
 *
 * Revision 1.4  2007-04-03 16:00:08  mchojnacki
 * Changes to iprove memory managing
 *
 * Revision 1.3  2007/03/13 15:30:03  mchojnacki
 * adding reader for simulated data
 *
 * Revision 1.2  2007/03/08 14:58:03  mchojnacki
 * adding some alice stuff
 *
 * Revision 1.1.1.1  2007/03/07 10:14:49  mchojnacki
 * First version on CVS
 *
 **************************************************************************/

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

#ifdef __ROOT__ 
ClassImp(AliFemtoQATrackCut)
#endif


// electron
// 0.13 - 1.8
// 0       7.594129e-02    8.256141e-03
// 1       -5.535827e-01   8.170825e-02
// 2       1.728591e+00    3.104210e-01
// 3       -2.827893e+00   5.827802e-01
// 4       2.503553e+00    5.736207e-01
// 5       -1.125965e+00   2.821170e-01
// 6       2.009036e-01    5.438876e-02

// pion
// 0.13 - 2.0
// 0       1.063457e+00    8.872043e-03
// 1       -4.222208e-01   2.534402e-02
// 2       1.042004e-01    1.503945e-02

// kaon
// 0.18 - 2.0
// 0       -7.289406e-02   1.686074e-03
// 1       4.415666e-01    1.143939e-02
// 2       -2.996790e-01   1.840964e-02
// 3       6.704652e-02    7.783990e-03

// proton
// 0.26 - 2.0
// 0       -3.730200e-02   2.347311e-03
// 1       1.163684e-01    1.319316e-02
// 2       8.354116e-02    1.997948e-02
// 3       -4.608098e-02   8.336400e-03


AliFemtoQATrackCut::AliFemtoQATrackCut() :
    fCharge(0),
    fLabel(0),
    fStatus(0),
    fminTPCclsF(0),
    fminTPCncls(0),
    fminITScls(0),
    fminTPCchiNdof(0),
    fMaxTPCncls(1000),
    fMaxITSchiNdof(1000.0),
    fMaxTPCchiNdof(1000.0),
    fMaxSigmaToVertex(1000.0),
    fNTracksPassed(0),
    fNTracksFailed(0),
    fRemoveKinks(kFALSE),
    fMostProbable(0),
    fTPCnclsExclusionSwitch(kFALSE),
    fTPCchiNdofExclusionSwitch(kFALSE)
{
  // Default constructor
  fNTracksPassed = fNTracksFailed = 0;
  fCharge = 0;  // takes both charges 0
  fPt[0]=0.0;              fPt[1] = 100.0;//100
  fRapidity[0]=-2;       fRapidity[1]=2;//-2 2
  fPidProbElectron[0]=-1;fPidProbElectron[1]=2;
  fPidProbPion[0]=-1;    fPidProbPion[1]=2;
  fPidProbKaon[0]=-1;fPidProbKaon[1]=2;
  fPidProbProton[0]=-1;fPidProbProton[1]=2;
  fPidProbMuon[0]=-1;fPidProbMuon[1]=2;
  fLabel=false;
  fStatus=0;
  fminTPCclsF=0;
  fminITScls=0;
  fTPCnclsExclusionSwitch = false;
  fTPCnclsExclusion[0] = 0;
  fTPCnclsExclusion[1] = 1000;
  fTPCchiNdofExclusionSwitch = false;
  fTPCchiNdofExclusion[0] = 0.0;
  fTPCchiNdofExclusion[1] = 1000.0;
}
//------------------------------
AliFemtoQATrackCut::~AliFemtoQATrackCut(){
  /* noop */
}
//------------------------------
bool AliFemtoQATrackCut::Pass(const AliFemtoTrack* track)
{
  // test the particle and return 
  // true if it meets all the criteria
  // false if it doesn't meet at least one of the criteria
  float tMost[5];
  
  //cout<<"AliFemtoESD  cut"<<endl;
  //cout<<fPidProbPion[0]<<" < pi ="<<track->PidProbPion()<<" <"<<fPidProbPion[1]<<endl;
  if (fStatus!=0)
    {
      //cout<<" status "<<track->Label()<<" "<<track->Flags()<<" "<<track->TPCnclsF()<<" "<<track->ITSncls()<<endl;
      if ((track->Flags()&fStatus)!=fStatus)
	{
	  //	  cout<<track->Flags()<<" "<<fStatus<<" no go through status"<<endl;
	  return false;
	}
	
    }
  if (fRemoveKinks) {
    if ((track->KinkIndex(0)) || (track->KinkIndex(1)) || (track->KinkIndex(2)))
      return false;
  }
  if (fminTPCclsF>track->TPCnclsF())
    {
      //cout<<" No go because TPC Number of ClsF"<<fminTPCclsF<< " "<<track->TPCnclsF()<<endl;
      return false;
    }

  // TPC number of clusters:
  if (fTPCnclsExclusionSwitch) {
    bool outTPCnclsExclusionZone[2];
      outTPCnclsExclusionZone[0] = false;
      outTPCnclsExclusionZone[1] = false;
    if ( (fminTPCncls > track->TPCncls()) || (fTPCnclsExclusion[0] < track->TPCncls()) ) {
      //cout<<" No go because TPC Number of ClsF"<<fminTPCclsF<< " "<<track->TPCnclsF()<<endl;
      outTPCnclsExclusionZone[0] = true;
    }
    if ( (fMaxTPCncls < track->TPCncls()) || (fTPCnclsExclusion[1] > track->TPCncls()) ) {
      //cout<<" No go because TPC Number of Cls"<<fMaxTPCclsF<< " "<<track->TPCnclsF()<<endl;
      outTPCnclsExclusionZone[1] = true;
    } 
    if ( outTPCnclsExclusionZone[0] * outTPCnclsExclusionZone[1] ) { return false; }
  } 
  else {
    if (fminTPCncls > track->TPCncls()) {
      //cout<<" No go because TPC Number of ClsF"<<fminTPCclsF<< " "<<track->TPCnclsF()<<endl;
      return false;
    }
    if (fMaxTPCncls < track->TPCncls()) {
      //cout<<" No go because TPC Number of Cls"<<fMaxTPCclsF<< " "<<track->TPCnclsF()<<endl;
      return false;
    }
  }

  if (fminITScls>track->ITSncls())
    {
      //cout<<" No go because ITS Number of Cls"<<fminITScls<< " "<<track->ITSncls()<<endl;
      return false;
    }
	
  if (fMaxSigmaToVertex < track->SigmaToVertex()) {
    return false;
  }
  
  if (track->ITSncls() > 0) 
    if ((track->ITSchi2()/track->ITSncls()) > fMaxITSchiNdof) {
      return false;
    }

  // TPC chiNdof of tracks:
  if (fTPCchiNdofExclusionSwitch && (track->TPCncls() > 0)) {
    bool outTPCchiNdofExclusionZone[2];
      outTPCchiNdofExclusionZone[0] = false;
      outTPCchiNdofExclusionZone[1] = false;
    if ( (fminTPCchiNdof > (track->TPCchi2()/track->TPCncls())) || (fTPCchiNdofExclusion[0] < (track->TPCchi2()/track->TPCncls())) ) {
      //cout<<" No go because TPC Number of ClsF"<<fminTPCclsF<< " "<<track->TPCnclsF()<<endl;
      outTPCchiNdofExclusionZone[0] = true;
    }
    if ( (fMaxTPCchiNdof < (track->TPCchi2()/track->TPCncls())) || (fTPCchiNdofExclusion[1] > (track->TPCchi2()/track->TPCncls())) ) {
      //cout<<" No go because TPC Number of Cls"<<fMaxTPCclsF<< " "<<track->TPCnclsF()<<endl;
      outTPCchiNdofExclusionZone[1] = true;
    } 
    if ( outTPCchiNdofExclusionZone[0] * outTPCchiNdofExclusionZone[1] ) { return false; }
  } 
  else {
    if (fminTPCchiNdof > (track->TPCchi2()/track->TPCncls())) {
      //cout<<" No go because TPC Number of ClsF"<<fminTPCclsF<< " "<<track->TPCnclsF()<<endl;
      return false;
    }
    if (fMaxTPCchiNdof < (track->TPCchi2()/track->TPCncls())) {
      //cout<<" No go because TPC Number of Cls"<<fMaxTPCclsF<< " "<<track->TPCnclsF()<<endl;
      return false;
    }
  }

  if (fLabel)
    {
      //cout<<"labels"<<endl;
      if(track->Label()<0)
	{
	  fNTracksFailed++;
	  //   cout<<"No Go Through the cut"<<endl;
	  //  cout<<fLabel<<" Label="<<track->Label()<<endl;
	  return false;
	}    
    }
  if (fCharge!=0)
    {              
      //cout<<"AliFemtoESD  cut ch "<<endl;
      //cout<<fCharge<<" Charge="<<track->Charge()<<endl;
      if (track->Charge()!= fCharge)	
	{
	  fNTracksFailed++;
	  //  cout<<"No Go Through the cut"<<endl;
	  // cout<<fCharge<<" Charge="<<track->Charge()<<endl;
	  return false;
	}
    }
  float tEnergy = ::sqrt(track->P().Mag2()+fMass*fMass);
  float tRapidity = 0.5*::log((tEnergy+track->P().z())/(tEnergy-track->P().z()));
  float tPt = ::sqrt((track->P().x())*(track->P().x())+(track->P().y())*(track->P().y()));
  if ((tRapidity<fRapidity[0])||(tRapidity>fRapidity[1]))
    {
      fNTracksFailed++;
      //cout<<"No Go Through the cut"<<endl;   
      //cout<<fRapidity[0]<<" < Rapidity ="<<tRapidity<<" <"<<fRapidity[1]<<endl;
      return false;
    }
  if ((tPt<fPt[0])||(tPt>fPt[1]))
    {
      fNTracksFailed++;
      //cout<<"No Go Through the cut"<<endl;
      //cout<<fPt[0]<<" < Pt ="<<Pt<<" <"<<fPt[1]<<endl;
      return false;
    }
//   cout << "Track has pids: " 
//        << track->PidProbElectron() << " " 
//        << track->PidProbMuon() << " " 
//        << track->PidProbPion() << " " 
//        << track->PidProbKaon() << " " 
//        << track->PidProbProton() << " " 
//        << track->PidProbElectron()+track->PidProbMuon()+track->PidProbPion()+track->PidProbKaon()+track->PidProbProton() << endl;

    
  if ((track->PidProbElectron()<fPidProbElectron[0])||(track->PidProbElectron()>fPidProbElectron[1]))
    {
      fNTracksFailed++;
      //cout<<"No Go Through the cut"<<endl;
      //cout<<fPidProbElectron[0]<<" < e ="<<track->PidProbElectron()<<" <"<<fPidProbElectron[1]<<endl;
      return false;
    }
  if ((track->PidProbPion()<fPidProbPion[0])||(track->PidProbPion()>fPidProbPion[1]))
    {
      fNTracksFailed++;
      //cout<<"No Go Through the cut"<<endl;
      //cout<<fPidProbPion[0]<<" < pi ="<<track->PidProbPion()<<" <"<<fPidProbPion[1]<<endl;
      return false;
    }
  if ((track->PidProbKaon()<fPidProbKaon[0])||(track->PidProbKaon()>fPidProbKaon[1]))
    {
      fNTracksFailed++;
      //cout<<"No Go Through the cut"<<endl;
      //cout<<fPidProbKaon[0]<<" < k ="<<track->PidProbKaon()<<" <"<<fPidProbKaon[1]<<endl;
      return false;
    }
  if ((track->PidProbProton()<fPidProbProton[0])||(track->PidProbProton()>fPidProbProton[1]))
    {
      fNTracksFailed++;
      //cout<<"No Go Through the cut"<<endl;
      //cout<<fPidProbProton[0]<<" < p  ="<<track->PidProbProton()<<" <"<<fPidProbProton[1]<<endl;
      return false;
    }
  if ((track->PidProbMuon()<fPidProbMuon[0])||(track->PidProbMuon()>fPidProbMuon[1]))
    {
      fNTracksFailed++;
      //cout<<"No Go Through the cut"<<endl;
      //cout<<fPidProbMuon[0]<<" <  mi="<<track->PidProbMuon()<<" <"<<fPidProbMuon[1]<<endl;
      return false;
    }

  if (fMostProbable) {
    tMost[0] = track->PidProbElectron()*PidFractionElectron(track->P().Mag());
    tMost[1] = 0.0;
    tMost[2] = track->PidProbPion()*PidFractionPion(track->P().Mag());
    tMost[3] = track->PidProbKaon()*PidFractionKaon(track->P().Mag());
    tMost[4] = track->PidProbProton()*PidFractionProton(track->P().Mag());
    int imost=0;
    float ipidmax = 0.0;
    for (int ip=0; ip<5; ip++)
      if (tMost[ip] > ipidmax) { ipidmax = tMost[ip]; imost = ip; };
    if (imost != fMostProbable) return false;
  }
  
  // cout<<"Go Through the cut"<<endl;
  // cout<<fLabel<<" Label="<<track->Label()<<endl;
  // cout<<fCharge<<" Charge="<<track->Charge()<<endl;
  // cout<<fPt[0]<<" < Pt ="<<Pt<<" <"<<fPt[1]<<endl;
  //cout<<fRapidity[0]<<" < Rapidity ="<<tRapidity<<" <"<<fRapidity[1]<<endl;
  //cout<<fPidProbElectron[0]<<" <  e="<<track->PidProbElectron()<<" <"<<fPidProbElectron[1]<<endl;
  //cout<<fPidProbPion[0]<<" <  pi="<<track->PidProbPion()<<" <"<<fPidProbPion[1]<<endl;
  //cout<<fPidProbKaon[0]<<" <  k="<<track->PidProbKaon()<<" <"<<fPidProbKaon[1]<<endl;
  //cout<<fPidProbProton[0]<<" <  p="<<track->PidProbProton()<<" <"<<fPidProbProton[1]<<endl;
  //cout<<fPidProbMuon[0]<<" <  mi="<<track->PidProbMuon()<<" <"<<fPidProbMuon[1]<<endl;
  fNTracksPassed++ ;
  return true;
    
    
}
//------------------------------
AliFemtoString AliFemtoQATrackCut::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, "Number of tracks which passed:\t%ld  Number which failed:\t%ld\n",fNTracksPassed,fNTracksFailed);
  tStemp += tCtemp;
  AliFemtoString returnThis = tStemp;
  return returnThis;
}
TList *AliFemtoQATrackCut::ListSettings()
{
  // return a list of settings in a writable form
  TList *tListSetttings = new TList();
  char buf[200];
  snprintf(buf, 200, "AliFemtoQATrackCut.mass=%f", this->Mass());
  tListSetttings->AddLast(new TObjString(buf));

  snprintf(buf, 200, "AliFemtoQATrackCut.charge=%i", fCharge);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobpion.minimum=%f", fPidProbPion[0]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobpion.maximum=%f", fPidProbPion[1]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobkaon.minimum=%f", fPidProbKaon[0]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobkaon.maximum=%f", fPidProbKaon[1]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobproton.minimum=%f", fPidProbProton[0]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobproton.maximum=%f", fPidProbProton[1]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobelectron.minimum=%f", fPidProbElectron[0]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobelectron.maximum=%f", fPidProbElectron[1]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobMuon.minimum=%f", fPidProbMuon[0]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pidprobMuon.maximum=%f", fPidProbMuon[1]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.minimumtpcclusters=%i", fminTPCclsF);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.minimumitsclusters=%i", fminTPCclsF);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pt.minimum=%f", fPt[0]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.pt.maximum=%f", fPt[1]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.rapidity.minimum=%f", fRapidity[0]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.rapidity.maximum=%f", fRapidity[1]);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.removekinks=%i", fRemoveKinks);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.maxitschindof=%f", fMaxITSchiNdof);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.maxtpcchindof=%f", fMaxTPCchiNdof);
  tListSetttings->AddLast(new TObjString(buf));
  snprintf(buf, 200, "AliFemtoQATrackCut.maxsigmatovertex=%f", fMaxSigmaToVertex);
  tListSetttings->AddLast(new TObjString(buf));
  if (fMostProbable) {
    if (fMostProbable == 2)
      snprintf(buf, 200, "AliFemtoQATrackCut.mostprobable=%s", "Pion");
    if (fMostProbable == 3)
      snprintf(buf, 200, "AliFemtoQATrackCut.mostprobable=%s", "Kaon");
    if (fMostProbable == 4)
      snprintf(buf, 200, "AliFemtoQATrackCut.mostprobable=%s", "Proton");
    tListSetttings->AddLast(new TObjString(buf));
  }
  return tListSetttings;
}
void AliFemtoQATrackCut::SetRemoveKinks(const bool& flag)
{
  fRemoveKinks = flag;
}
			    
			    // electron
// 0.13 - 1.8
// 0       7.594129e-02    8.256141e-03
// 1       -5.535827e-01   8.170825e-02
// 2       1.728591e+00    3.104210e-01
// 3       -2.827893e+00   5.827802e-01
// 4       2.503553e+00    5.736207e-01
// 5       -1.125965e+00   2.821170e-01
// 6       2.009036e-01    5.438876e-02
float AliFemtoQATrackCut::PidFractionElectron(float mom) const
{
  // Provide a parameterized fraction of electrons dependent on momentum
  if (mom<0.13) return 0.0;
  if (mom>1.8) return 0.0;
  return (7.594129e-02 
	  -5.535827e-01*mom	   
	  +1.728591e+00*mom*mom    
	  -2.827893e+00*mom*mom*mom 
	  +2.503553e+00*mom*mom*mom*mom	   
	  -1.125965e+00*mom*mom*mom*mom*mom      
	  +2.009036e-01*mom*mom*mom*mom*mom*mom);   
}

// pion
// 0.13 - 2.0
// 0       1.063457e+00    8.872043e-03
// 1       -4.222208e-01   2.534402e-02
// 2       1.042004e-01    1.503945e-02
float AliFemtoQATrackCut::PidFractionPion(float mom) const
{
  // Provide a parameterized fraction of pions dependent on momentum
  if (mom<0.13) return 0.0;
  if (mom>2.0) return 0.0;
  return ( 1.063457e+00
	   -4.222208e-01*mom
	   +1.042004e-01*mom*mom);
}

// kaon
// 0.18 - 2.0
// 0       -7.289406e-02   1.686074e-03
// 1       4.415666e-01    1.143939e-02
// 2       -2.996790e-01   1.840964e-02
// 3       6.704652e-02    7.783990e-03
float AliFemtoQATrackCut::PidFractionKaon(float mom) const
{
  // Provide a parameterized fraction of kaons dependent on momentum
  if (mom<0.18) return 0.0;
  if (mom>2.0) return 0.0;
  return (-7.289406e-02
	  +4.415666e-01*mom	   
	  -2.996790e-01*mom*mom    
	  +6.704652e-02*mom*mom*mom);
}

// proton
// 0.26 - 2.0
// 0       -3.730200e-02   2.347311e-03
// 1       1.163684e-01    1.319316e-02
// 2       8.354116e-02    1.997948e-02
// 3       -4.608098e-02   8.336400e-03
float AliFemtoQATrackCut::PidFractionProton(float mom) const
{
  // Provide a parameterized fraction of protons dependent on momentum
  if (mom<0.26) return  0.0;
  if (mom>2.0) return 0.0;
  return (-3.730200e-02  
	  +1.163684e-01*mom	      
	  +8.354116e-02*mom*mom       
	  -4.608098e-02*mom*mom*mom);  
}
 AliFemtoQATrackCut.cxx:1
 AliFemtoQATrackCut.cxx:2
 AliFemtoQATrackCut.cxx:3
 AliFemtoQATrackCut.cxx:4
 AliFemtoQATrackCut.cxx:5
 AliFemtoQATrackCut.cxx:6
 AliFemtoQATrackCut.cxx:7
 AliFemtoQATrackCut.cxx:8
 AliFemtoQATrackCut.cxx:9
 AliFemtoQATrackCut.cxx:10
 AliFemtoQATrackCut.cxx:11
 AliFemtoQATrackCut.cxx:12
 AliFemtoQATrackCut.cxx:13
 AliFemtoQATrackCut.cxx:14
 AliFemtoQATrackCut.cxx:15
 AliFemtoQATrackCut.cxx:16
 AliFemtoQATrackCut.cxx:17
 AliFemtoQATrackCut.cxx:18
 AliFemtoQATrackCut.cxx:19
 AliFemtoQATrackCut.cxx:20
 AliFemtoQATrackCut.cxx:21
 AliFemtoQATrackCut.cxx:22
 AliFemtoQATrackCut.cxx:23
 AliFemtoQATrackCut.cxx:24
 AliFemtoQATrackCut.cxx:25
 AliFemtoQATrackCut.cxx:26
 AliFemtoQATrackCut.cxx:27
 AliFemtoQATrackCut.cxx:28
 AliFemtoQATrackCut.cxx:29
 AliFemtoQATrackCut.cxx:30
 AliFemtoQATrackCut.cxx:31
 AliFemtoQATrackCut.cxx:32
 AliFemtoQATrackCut.cxx:33
 AliFemtoQATrackCut.cxx:34
 AliFemtoQATrackCut.cxx:35
 AliFemtoQATrackCut.cxx:36
 AliFemtoQATrackCut.cxx:37
 AliFemtoQATrackCut.cxx:38
 AliFemtoQATrackCut.cxx:39
 AliFemtoQATrackCut.cxx:40
 AliFemtoQATrackCut.cxx:41
 AliFemtoQATrackCut.cxx:42
 AliFemtoQATrackCut.cxx:43
 AliFemtoQATrackCut.cxx:44
 AliFemtoQATrackCut.cxx:45
 AliFemtoQATrackCut.cxx:46
 AliFemtoQATrackCut.cxx:47
 AliFemtoQATrackCut.cxx:48
 AliFemtoQATrackCut.cxx:49
 AliFemtoQATrackCut.cxx:50
 AliFemtoQATrackCut.cxx:51
 AliFemtoQATrackCut.cxx:52
 AliFemtoQATrackCut.cxx:53
 AliFemtoQATrackCut.cxx:54
 AliFemtoQATrackCut.cxx:55
 AliFemtoQATrackCut.cxx:56
 AliFemtoQATrackCut.cxx:57
 AliFemtoQATrackCut.cxx:58
 AliFemtoQATrackCut.cxx:59
 AliFemtoQATrackCut.cxx:60
 AliFemtoQATrackCut.cxx:61
 AliFemtoQATrackCut.cxx:62
 AliFemtoQATrackCut.cxx:63
 AliFemtoQATrackCut.cxx:64
 AliFemtoQATrackCut.cxx:65
 AliFemtoQATrackCut.cxx:66
 AliFemtoQATrackCut.cxx:67
 AliFemtoQATrackCut.cxx:68
 AliFemtoQATrackCut.cxx:69
 AliFemtoQATrackCut.cxx:70
 AliFemtoQATrackCut.cxx:71
 AliFemtoQATrackCut.cxx:72
 AliFemtoQATrackCut.cxx:73
 AliFemtoQATrackCut.cxx:74
 AliFemtoQATrackCut.cxx:75
 AliFemtoQATrackCut.cxx:76
 AliFemtoQATrackCut.cxx:77
 AliFemtoQATrackCut.cxx:78
 AliFemtoQATrackCut.cxx:79
 AliFemtoQATrackCut.cxx:80
 AliFemtoQATrackCut.cxx:81
 AliFemtoQATrackCut.cxx:82
 AliFemtoQATrackCut.cxx:83
 AliFemtoQATrackCut.cxx:84
 AliFemtoQATrackCut.cxx:85
 AliFemtoQATrackCut.cxx:86
 AliFemtoQATrackCut.cxx:87
 AliFemtoQATrackCut.cxx:88
 AliFemtoQATrackCut.cxx:89
 AliFemtoQATrackCut.cxx:90
 AliFemtoQATrackCut.cxx:91
 AliFemtoQATrackCut.cxx:92
 AliFemtoQATrackCut.cxx:93
 AliFemtoQATrackCut.cxx:94
 AliFemtoQATrackCut.cxx:95
 AliFemtoQATrackCut.cxx:96
 AliFemtoQATrackCut.cxx:97
 AliFemtoQATrackCut.cxx:98
 AliFemtoQATrackCut.cxx:99
 AliFemtoQATrackCut.cxx:100
 AliFemtoQATrackCut.cxx:101
 AliFemtoQATrackCut.cxx:102
 AliFemtoQATrackCut.cxx:103
 AliFemtoQATrackCut.cxx:104
 AliFemtoQATrackCut.cxx:105
 AliFemtoQATrackCut.cxx:106
 AliFemtoQATrackCut.cxx:107
 AliFemtoQATrackCut.cxx:108
 AliFemtoQATrackCut.cxx:109
 AliFemtoQATrackCut.cxx:110
 AliFemtoQATrackCut.cxx:111
 AliFemtoQATrackCut.cxx:112
 AliFemtoQATrackCut.cxx:113
 AliFemtoQATrackCut.cxx:114
 AliFemtoQATrackCut.cxx:115
 AliFemtoQATrackCut.cxx:116
 AliFemtoQATrackCut.cxx:117
 AliFemtoQATrackCut.cxx:118
 AliFemtoQATrackCut.cxx:119
 AliFemtoQATrackCut.cxx:120
 AliFemtoQATrackCut.cxx:121
 AliFemtoQATrackCut.cxx:122
 AliFemtoQATrackCut.cxx:123
 AliFemtoQATrackCut.cxx:124
 AliFemtoQATrackCut.cxx:125
 AliFemtoQATrackCut.cxx:126
 AliFemtoQATrackCut.cxx:127
 AliFemtoQATrackCut.cxx:128
 AliFemtoQATrackCut.cxx:129
 AliFemtoQATrackCut.cxx:130
 AliFemtoQATrackCut.cxx:131
 AliFemtoQATrackCut.cxx:132
 AliFemtoQATrackCut.cxx:133
 AliFemtoQATrackCut.cxx:134
 AliFemtoQATrackCut.cxx:135
 AliFemtoQATrackCut.cxx:136
 AliFemtoQATrackCut.cxx:137
 AliFemtoQATrackCut.cxx:138
 AliFemtoQATrackCut.cxx:139
 AliFemtoQATrackCut.cxx:140
 AliFemtoQATrackCut.cxx:141
 AliFemtoQATrackCut.cxx:142
 AliFemtoQATrackCut.cxx:143
 AliFemtoQATrackCut.cxx:144
 AliFemtoQATrackCut.cxx:145
 AliFemtoQATrackCut.cxx:146
 AliFemtoQATrackCut.cxx:147
 AliFemtoQATrackCut.cxx:148
 AliFemtoQATrackCut.cxx:149
 AliFemtoQATrackCut.cxx:150
 AliFemtoQATrackCut.cxx:151
 AliFemtoQATrackCut.cxx:152
 AliFemtoQATrackCut.cxx:153
 AliFemtoQATrackCut.cxx:154
 AliFemtoQATrackCut.cxx:155
 AliFemtoQATrackCut.cxx:156
 AliFemtoQATrackCut.cxx:157
 AliFemtoQATrackCut.cxx:158
 AliFemtoQATrackCut.cxx:159
 AliFemtoQATrackCut.cxx:160
 AliFemtoQATrackCut.cxx:161
 AliFemtoQATrackCut.cxx:162
 AliFemtoQATrackCut.cxx:163
 AliFemtoQATrackCut.cxx:164
 AliFemtoQATrackCut.cxx:165
 AliFemtoQATrackCut.cxx:166
 AliFemtoQATrackCut.cxx:167
 AliFemtoQATrackCut.cxx:168
 AliFemtoQATrackCut.cxx:169
 AliFemtoQATrackCut.cxx:170
 AliFemtoQATrackCut.cxx:171
 AliFemtoQATrackCut.cxx:172
 AliFemtoQATrackCut.cxx:173
 AliFemtoQATrackCut.cxx:174
 AliFemtoQATrackCut.cxx:175
 AliFemtoQATrackCut.cxx:176
 AliFemtoQATrackCut.cxx:177
 AliFemtoQATrackCut.cxx:178
 AliFemtoQATrackCut.cxx:179
 AliFemtoQATrackCut.cxx:180
 AliFemtoQATrackCut.cxx:181
 AliFemtoQATrackCut.cxx:182
 AliFemtoQATrackCut.cxx:183
 AliFemtoQATrackCut.cxx:184
 AliFemtoQATrackCut.cxx:185
 AliFemtoQATrackCut.cxx:186
 AliFemtoQATrackCut.cxx:187
 AliFemtoQATrackCut.cxx:188
 AliFemtoQATrackCut.cxx:189
 AliFemtoQATrackCut.cxx:190
 AliFemtoQATrackCut.cxx:191
 AliFemtoQATrackCut.cxx:192
 AliFemtoQATrackCut.cxx:193
 AliFemtoQATrackCut.cxx:194
 AliFemtoQATrackCut.cxx:195
 AliFemtoQATrackCut.cxx:196
 AliFemtoQATrackCut.cxx:197
 AliFemtoQATrackCut.cxx:198
 AliFemtoQATrackCut.cxx:199
 AliFemtoQATrackCut.cxx:200
 AliFemtoQATrackCut.cxx:201
 AliFemtoQATrackCut.cxx:202
 AliFemtoQATrackCut.cxx:203
 AliFemtoQATrackCut.cxx:204
 AliFemtoQATrackCut.cxx:205
 AliFemtoQATrackCut.cxx:206
 AliFemtoQATrackCut.cxx:207
 AliFemtoQATrackCut.cxx:208
 AliFemtoQATrackCut.cxx:209
 AliFemtoQATrackCut.cxx:210
 AliFemtoQATrackCut.cxx:211
 AliFemtoQATrackCut.cxx:212
 AliFemtoQATrackCut.cxx:213
 AliFemtoQATrackCut.cxx:214
 AliFemtoQATrackCut.cxx:215
 AliFemtoQATrackCut.cxx:216
 AliFemtoQATrackCut.cxx:217
 AliFemtoQATrackCut.cxx:218
 AliFemtoQATrackCut.cxx:219
 AliFemtoQATrackCut.cxx:220
 AliFemtoQATrackCut.cxx:221
 AliFemtoQATrackCut.cxx:222
 AliFemtoQATrackCut.cxx:223
 AliFemtoQATrackCut.cxx:224
 AliFemtoQATrackCut.cxx:225
 AliFemtoQATrackCut.cxx:226
 AliFemtoQATrackCut.cxx:227
 AliFemtoQATrackCut.cxx:228
 AliFemtoQATrackCut.cxx:229
 AliFemtoQATrackCut.cxx:230
 AliFemtoQATrackCut.cxx:231
 AliFemtoQATrackCut.cxx:232
 AliFemtoQATrackCut.cxx:233
 AliFemtoQATrackCut.cxx:234
 AliFemtoQATrackCut.cxx:235
 AliFemtoQATrackCut.cxx:236
 AliFemtoQATrackCut.cxx:237
 AliFemtoQATrackCut.cxx:238
 AliFemtoQATrackCut.cxx:239
 AliFemtoQATrackCut.cxx:240
 AliFemtoQATrackCut.cxx:241
 AliFemtoQATrackCut.cxx:242
 AliFemtoQATrackCut.cxx:243
 AliFemtoQATrackCut.cxx:244
 AliFemtoQATrackCut.cxx:245
 AliFemtoQATrackCut.cxx:246
 AliFemtoQATrackCut.cxx:247
 AliFemtoQATrackCut.cxx:248
 AliFemtoQATrackCut.cxx:249
 AliFemtoQATrackCut.cxx:250
 AliFemtoQATrackCut.cxx:251
 AliFemtoQATrackCut.cxx:252
 AliFemtoQATrackCut.cxx:253
 AliFemtoQATrackCut.cxx:254
 AliFemtoQATrackCut.cxx:255
 AliFemtoQATrackCut.cxx:256
 AliFemtoQATrackCut.cxx:257
 AliFemtoQATrackCut.cxx:258
 AliFemtoQATrackCut.cxx:259
 AliFemtoQATrackCut.cxx:260
 AliFemtoQATrackCut.cxx:261
 AliFemtoQATrackCut.cxx:262
 AliFemtoQATrackCut.cxx:263
 AliFemtoQATrackCut.cxx:264
 AliFemtoQATrackCut.cxx:265
 AliFemtoQATrackCut.cxx:266
 AliFemtoQATrackCut.cxx:267
 AliFemtoQATrackCut.cxx:268
 AliFemtoQATrackCut.cxx:269
 AliFemtoQATrackCut.cxx:270
 AliFemtoQATrackCut.cxx:271
 AliFemtoQATrackCut.cxx:272
 AliFemtoQATrackCut.cxx:273
 AliFemtoQATrackCut.cxx:274
 AliFemtoQATrackCut.cxx:275
 AliFemtoQATrackCut.cxx:276
 AliFemtoQATrackCut.cxx:277
 AliFemtoQATrackCut.cxx:278
 AliFemtoQATrackCut.cxx:279
 AliFemtoQATrackCut.cxx:280
 AliFemtoQATrackCut.cxx:281
 AliFemtoQATrackCut.cxx:282
 AliFemtoQATrackCut.cxx:283
 AliFemtoQATrackCut.cxx:284
 AliFemtoQATrackCut.cxx:285
 AliFemtoQATrackCut.cxx:286
 AliFemtoQATrackCut.cxx:287
 AliFemtoQATrackCut.cxx:288
 AliFemtoQATrackCut.cxx:289
 AliFemtoQATrackCut.cxx:290
 AliFemtoQATrackCut.cxx:291
 AliFemtoQATrackCut.cxx:292
 AliFemtoQATrackCut.cxx:293
 AliFemtoQATrackCut.cxx:294
 AliFemtoQATrackCut.cxx:295
 AliFemtoQATrackCut.cxx:296
 AliFemtoQATrackCut.cxx:297
 AliFemtoQATrackCut.cxx:298
 AliFemtoQATrackCut.cxx:299
 AliFemtoQATrackCut.cxx:300
 AliFemtoQATrackCut.cxx:301
 AliFemtoQATrackCut.cxx:302
 AliFemtoQATrackCut.cxx:303
 AliFemtoQATrackCut.cxx:304
 AliFemtoQATrackCut.cxx:305
 AliFemtoQATrackCut.cxx:306
 AliFemtoQATrackCut.cxx:307
 AliFemtoQATrackCut.cxx:308
 AliFemtoQATrackCut.cxx:309
 AliFemtoQATrackCut.cxx:310
 AliFemtoQATrackCut.cxx:311
 AliFemtoQATrackCut.cxx:312
 AliFemtoQATrackCut.cxx:313
 AliFemtoQATrackCut.cxx:314
 AliFemtoQATrackCut.cxx:315
 AliFemtoQATrackCut.cxx:316
 AliFemtoQATrackCut.cxx:317
 AliFemtoQATrackCut.cxx:318
 AliFemtoQATrackCut.cxx:319
 AliFemtoQATrackCut.cxx:320
 AliFemtoQATrackCut.cxx:321
 AliFemtoQATrackCut.cxx:322
 AliFemtoQATrackCut.cxx:323
 AliFemtoQATrackCut.cxx:324
 AliFemtoQATrackCut.cxx:325
 AliFemtoQATrackCut.cxx:326
 AliFemtoQATrackCut.cxx:327
 AliFemtoQATrackCut.cxx:328
 AliFemtoQATrackCut.cxx:329
 AliFemtoQATrackCut.cxx:330
 AliFemtoQATrackCut.cxx:331
 AliFemtoQATrackCut.cxx:332
 AliFemtoQATrackCut.cxx:333
 AliFemtoQATrackCut.cxx:334
 AliFemtoQATrackCut.cxx:335
 AliFemtoQATrackCut.cxx:336
 AliFemtoQATrackCut.cxx:337
 AliFemtoQATrackCut.cxx:338
 AliFemtoQATrackCut.cxx:339
 AliFemtoQATrackCut.cxx:340
 AliFemtoQATrackCut.cxx:341
 AliFemtoQATrackCut.cxx:342
 AliFemtoQATrackCut.cxx:343
 AliFemtoQATrackCut.cxx:344
 AliFemtoQATrackCut.cxx:345
 AliFemtoQATrackCut.cxx:346
 AliFemtoQATrackCut.cxx:347
 AliFemtoQATrackCut.cxx:348
 AliFemtoQATrackCut.cxx:349
 AliFemtoQATrackCut.cxx:350
 AliFemtoQATrackCut.cxx:351
 AliFemtoQATrackCut.cxx:352
 AliFemtoQATrackCut.cxx:353
 AliFemtoQATrackCut.cxx:354
 AliFemtoQATrackCut.cxx:355
 AliFemtoQATrackCut.cxx:356
 AliFemtoQATrackCut.cxx:357
 AliFemtoQATrackCut.cxx:358
 AliFemtoQATrackCut.cxx:359
 AliFemtoQATrackCut.cxx:360
 AliFemtoQATrackCut.cxx:361
 AliFemtoQATrackCut.cxx:362
 AliFemtoQATrackCut.cxx:363
 AliFemtoQATrackCut.cxx:364
 AliFemtoQATrackCut.cxx:365
 AliFemtoQATrackCut.cxx:366
 AliFemtoQATrackCut.cxx:367
 AliFemtoQATrackCut.cxx:368
 AliFemtoQATrackCut.cxx:369
 AliFemtoQATrackCut.cxx:370
 AliFemtoQATrackCut.cxx:371
 AliFemtoQATrackCut.cxx:372
 AliFemtoQATrackCut.cxx:373
 AliFemtoQATrackCut.cxx:374
 AliFemtoQATrackCut.cxx:375
 AliFemtoQATrackCut.cxx:376
 AliFemtoQATrackCut.cxx:377
 AliFemtoQATrackCut.cxx:378
 AliFemtoQATrackCut.cxx:379
 AliFemtoQATrackCut.cxx:380
 AliFemtoQATrackCut.cxx:381
 AliFemtoQATrackCut.cxx:382
 AliFemtoQATrackCut.cxx:383
 AliFemtoQATrackCut.cxx:384
 AliFemtoQATrackCut.cxx:385
 AliFemtoQATrackCut.cxx:386
 AliFemtoQATrackCut.cxx:387
 AliFemtoQATrackCut.cxx:388
 AliFemtoQATrackCut.cxx:389
 AliFemtoQATrackCut.cxx:390
 AliFemtoQATrackCut.cxx:391
 AliFemtoQATrackCut.cxx:392
 AliFemtoQATrackCut.cxx:393
 AliFemtoQATrackCut.cxx:394
 AliFemtoQATrackCut.cxx:395
 AliFemtoQATrackCut.cxx:396
 AliFemtoQATrackCut.cxx:397
 AliFemtoQATrackCut.cxx:398
 AliFemtoQATrackCut.cxx:399
 AliFemtoQATrackCut.cxx:400
 AliFemtoQATrackCut.cxx:401
 AliFemtoQATrackCut.cxx:402
 AliFemtoQATrackCut.cxx:403
 AliFemtoQATrackCut.cxx:404
 AliFemtoQATrackCut.cxx:405
 AliFemtoQATrackCut.cxx:406
 AliFemtoQATrackCut.cxx:407
 AliFemtoQATrackCut.cxx:408
 AliFemtoQATrackCut.cxx:409
 AliFemtoQATrackCut.cxx:410
 AliFemtoQATrackCut.cxx:411
 AliFemtoQATrackCut.cxx:412
 AliFemtoQATrackCut.cxx:413
 AliFemtoQATrackCut.cxx:414
 AliFemtoQATrackCut.cxx:415
 AliFemtoQATrackCut.cxx:416
 AliFemtoQATrackCut.cxx:417
 AliFemtoQATrackCut.cxx:418
 AliFemtoQATrackCut.cxx:419
 AliFemtoQATrackCut.cxx:420
 AliFemtoQATrackCut.cxx:421
 AliFemtoQATrackCut.cxx:422
 AliFemtoQATrackCut.cxx:423
 AliFemtoQATrackCut.cxx:424
 AliFemtoQATrackCut.cxx:425
 AliFemtoQATrackCut.cxx:426
 AliFemtoQATrackCut.cxx:427
 AliFemtoQATrackCut.cxx:428
 AliFemtoQATrackCut.cxx:429
 AliFemtoQATrackCut.cxx:430
 AliFemtoQATrackCut.cxx:431
 AliFemtoQATrackCut.cxx:432
 AliFemtoQATrackCut.cxx:433
 AliFemtoQATrackCut.cxx:434
 AliFemtoQATrackCut.cxx:435
 AliFemtoQATrackCut.cxx:436
 AliFemtoQATrackCut.cxx:437
 AliFemtoQATrackCut.cxx:438
 AliFemtoQATrackCut.cxx:439
 AliFemtoQATrackCut.cxx:440
 AliFemtoQATrackCut.cxx:441
 AliFemtoQATrackCut.cxx:442
 AliFemtoQATrackCut.cxx:443
 AliFemtoQATrackCut.cxx:444
 AliFemtoQATrackCut.cxx:445
 AliFemtoQATrackCut.cxx:446
 AliFemtoQATrackCut.cxx:447
 AliFemtoQATrackCut.cxx:448
 AliFemtoQATrackCut.cxx:449
 AliFemtoQATrackCut.cxx:450
 AliFemtoQATrackCut.cxx:451
 AliFemtoQATrackCut.cxx:452
 AliFemtoQATrackCut.cxx:453
 AliFemtoQATrackCut.cxx:454
 AliFemtoQATrackCut.cxx:455
 AliFemtoQATrackCut.cxx:456
 AliFemtoQATrackCut.cxx:457
 AliFemtoQATrackCut.cxx:458
 AliFemtoQATrackCut.cxx:459
 AliFemtoQATrackCut.cxx:460
 AliFemtoQATrackCut.cxx:461
 AliFemtoQATrackCut.cxx:462
 AliFemtoQATrackCut.cxx:463
 AliFemtoQATrackCut.cxx:464
 AliFemtoQATrackCut.cxx:465
 AliFemtoQATrackCut.cxx:466
 AliFemtoQATrackCut.cxx:467
 AliFemtoQATrackCut.cxx:468
 AliFemtoQATrackCut.cxx:469
 AliFemtoQATrackCut.cxx:470
 AliFemtoQATrackCut.cxx:471
 AliFemtoQATrackCut.cxx:472
 AliFemtoQATrackCut.cxx:473
 AliFemtoQATrackCut.cxx:474
 AliFemtoQATrackCut.cxx:475
 AliFemtoQATrackCut.cxx:476
 AliFemtoQATrackCut.cxx:477
 AliFemtoQATrackCut.cxx:478
 AliFemtoQATrackCut.cxx:479
 AliFemtoQATrackCut.cxx:480
 AliFemtoQATrackCut.cxx:481
 AliFemtoQATrackCut.cxx:482
 AliFemtoQATrackCut.cxx:483
 AliFemtoQATrackCut.cxx:484
 AliFemtoQATrackCut.cxx:485
 AliFemtoQATrackCut.cxx:486
 AliFemtoQATrackCut.cxx:487
 AliFemtoQATrackCut.cxx:488
 AliFemtoQATrackCut.cxx:489
 AliFemtoQATrackCut.cxx:490
 AliFemtoQATrackCut.cxx:491
 AliFemtoQATrackCut.cxx:492
 AliFemtoQATrackCut.cxx:493
 AliFemtoQATrackCut.cxx:494