ROOT logo
///////////////////////////////////////////////////////////////////////////
//                                                                       //
// AliFemtoAODTrackCut: A basic track cut that used information from     //
// ALICE AOD to accept or reject the track.                              //  
// Enables the selection on charge, transverse momentum, rapidity,       //
// pid probabilities, number of ITS and TPC clusters                     //
// Author: Adam Kisiel (WUT, OSU), Adam.Kisiel@cern.ch                   //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#ifndef ALIFEMTOAODTRACKCUT_H
#define ALIFEMTOAODTRACKCUT_H

//#ifndef StMaker_H
//#include "StMaker.h"
//#endif

#include "AliFemtoTrackCut.h"

class AliFemtoAODTrackCut : public AliFemtoTrackCut 
{

 public:
  AliFemtoAODTrackCut();
  virtual ~AliFemtoAODTrackCut();

  virtual bool Pass(const AliFemtoTrack* aTrack);

  virtual AliFemtoString Report();
  virtual TList *ListSettings();
  virtual AliFemtoParticleType Type(){return hbtTrack;}

  void SetPt(const float& lo, const float& hi);
  void SetRapidity(const float& lo, const float& hi);
  void SetCharge(const int& ch);
  void SetPidProbElectron(const float& lo, const float& hi);
  void SetPidProbPion(const float& lo, const float& hi);
  void SetPidProbKaon(const float& lo, const float& hi);
  void SetPidProbProton(const float& lo, const float& hi);
  void SetPidProbMuon(const float& lo, const float& hi);
  void SetLabel(const bool& flag);
  void SetMaxChiNdof(const float& maxchi);
  void SetMaxSigmaToVertex(const float& maxsig);
  void SetMostProbablePion();
  void SetMostProbableKaon();
  void SetMostProbableProton();
  void SetNoMostProbable(); 

 private:   // here are the quantities I want to cut on...

  int               fCharge;             // particle charge
  float             fPt[2];              // bounds for transverse momentum
  float             fRapidity[2];        // bounds for rapidity
  float             fPidProbElectron[2]; // bounds for electron probability
  float             fPidProbPion[2];     // bounds for pion probability
  float             fPidProbKaon[2];     // bounds for kaon probability
  float             fPidProbProton[2];   // bounds for proton probability
  float             fPidProbMuon[2];     // bounds for muon probability 
  bool              fLabel;              // if true label<0 will not pass throught 
  float             fMaxchiNdof;         // maximum allowed chi2/ndof for TPC clusters
  float             fMaxSigmaToVertex;   // maximum allowed sigma to primary vertex
  long              fNTracksPassed;      // passed tracks count
  long              fNTracksFailed;      // failed tracks count
  int               fMostProbable;       // this particle type is required to be most probable

  float PidFractionElectron(float mom) const;
  float PidFractionPion(float mom) const;
  float PidFractionKaon(float mom) const;
  float PidFractionProton(float mom) const;

#ifdef __ROOT__ 
  ClassDef(AliFemtoAODTrackCut, 1)
#endif
    };


inline void AliFemtoAODTrackCut::SetPt(const float& lo, const float& hi){fPt[0]=lo; fPt[1]=hi;}
inline void AliFemtoAODTrackCut::SetRapidity(const float& lo,const float& hi){fRapidity[0]=lo; fRapidity[1]=hi;}
inline void AliFemtoAODTrackCut::SetCharge(const int& ch){fCharge = ch;}
inline void AliFemtoAODTrackCut::SetPidProbElectron(const float& lo,const float& hi){fPidProbElectron[0]=lo; fPidProbElectron[1]=hi;}
inline void AliFemtoAODTrackCut::SetPidProbPion(const float& lo,const float& hi){fPidProbPion[0]=lo; fPidProbPion[1]=hi;}
inline void AliFemtoAODTrackCut::SetPidProbKaon(const float& lo,const float& hi){fPidProbKaon[0]=lo; fPidProbKaon[1]=hi;}
inline void AliFemtoAODTrackCut::SetPidProbProton(const float& lo,const float& hi){fPidProbProton[0]=lo; fPidProbProton[1]=hi;}
inline void AliFemtoAODTrackCut::SetPidProbMuon(const float& lo,const float& hi){fPidProbMuon[0]=lo; fPidProbMuon[1]=hi;}
inline void AliFemtoAODTrackCut::SetLabel(const bool& flag){fLabel=flag;}
inline void AliFemtoAODTrackCut::SetMostProbablePion() { fMostProbable = 2; }
inline void AliFemtoAODTrackCut::SetMostProbableKaon() { fMostProbable = 3; }
inline void AliFemtoAODTrackCut::SetMostProbableProton() { fMostProbable = 4; }
inline void AliFemtoAODTrackCut::SetNoMostProbable() { fMostProbable = 0; }
inline void AliFemtoAODTrackCut::SetMaxChiNdof(const float& maxchi) { fMaxchiNdof = maxchi; }
inline void AliFemtoAODTrackCut::SetMaxSigmaToVertex(const float& maxsig) { fMaxSigmaToVertex = maxsig; }

#endif

 AliFemtoAODTrackCut.h:1
 AliFemtoAODTrackCut.h:2
 AliFemtoAODTrackCut.h:3
 AliFemtoAODTrackCut.h:4
 AliFemtoAODTrackCut.h:5
 AliFemtoAODTrackCut.h:6
 AliFemtoAODTrackCut.h:7
 AliFemtoAODTrackCut.h:8
 AliFemtoAODTrackCut.h:9
 AliFemtoAODTrackCut.h:10
 AliFemtoAODTrackCut.h:11
 AliFemtoAODTrackCut.h:12
 AliFemtoAODTrackCut.h:13
 AliFemtoAODTrackCut.h:14
 AliFemtoAODTrackCut.h:15
 AliFemtoAODTrackCut.h:16
 AliFemtoAODTrackCut.h:17
 AliFemtoAODTrackCut.h:18
 AliFemtoAODTrackCut.h:19
 AliFemtoAODTrackCut.h:20
 AliFemtoAODTrackCut.h:21
 AliFemtoAODTrackCut.h:22
 AliFemtoAODTrackCut.h:23
 AliFemtoAODTrackCut.h:24
 AliFemtoAODTrackCut.h:25
 AliFemtoAODTrackCut.h:26
 AliFemtoAODTrackCut.h:27
 AliFemtoAODTrackCut.h:28
 AliFemtoAODTrackCut.h:29
 AliFemtoAODTrackCut.h:30
 AliFemtoAODTrackCut.h:31
 AliFemtoAODTrackCut.h:32
 AliFemtoAODTrackCut.h:33
 AliFemtoAODTrackCut.h:34
 AliFemtoAODTrackCut.h:35
 AliFemtoAODTrackCut.h:36
 AliFemtoAODTrackCut.h:37
 AliFemtoAODTrackCut.h:38
 AliFemtoAODTrackCut.h:39
 AliFemtoAODTrackCut.h:40
 AliFemtoAODTrackCut.h:41
 AliFemtoAODTrackCut.h:42
 AliFemtoAODTrackCut.h:43
 AliFemtoAODTrackCut.h:44
 AliFemtoAODTrackCut.h:45
 AliFemtoAODTrackCut.h:46
 AliFemtoAODTrackCut.h:47
 AliFemtoAODTrackCut.h:48
 AliFemtoAODTrackCut.h:49
 AliFemtoAODTrackCut.h:50
 AliFemtoAODTrackCut.h:51
 AliFemtoAODTrackCut.h:52
 AliFemtoAODTrackCut.h:53
 AliFemtoAODTrackCut.h:54
 AliFemtoAODTrackCut.h:55
 AliFemtoAODTrackCut.h:56
 AliFemtoAODTrackCut.h:57
 AliFemtoAODTrackCut.h:58
 AliFemtoAODTrackCut.h:59
 AliFemtoAODTrackCut.h:60
 AliFemtoAODTrackCut.h:61
 AliFemtoAODTrackCut.h:62
 AliFemtoAODTrackCut.h:63
 AliFemtoAODTrackCut.h:64
 AliFemtoAODTrackCut.h:65
 AliFemtoAODTrackCut.h:66
 AliFemtoAODTrackCut.h:67
 AliFemtoAODTrackCut.h:68
 AliFemtoAODTrackCut.h:69
 AliFemtoAODTrackCut.h:70
 AliFemtoAODTrackCut.h:71
 AliFemtoAODTrackCut.h:72
 AliFemtoAODTrackCut.h:73
 AliFemtoAODTrackCut.h:74
 AliFemtoAODTrackCut.h:75
 AliFemtoAODTrackCut.h:76
 AliFemtoAODTrackCut.h:77
 AliFemtoAODTrackCut.h:78
 AliFemtoAODTrackCut.h:79
 AliFemtoAODTrackCut.h:80
 AliFemtoAODTrackCut.h:81
 AliFemtoAODTrackCut.h:82
 AliFemtoAODTrackCut.h:83
 AliFemtoAODTrackCut.h:84
 AliFemtoAODTrackCut.h:85
 AliFemtoAODTrackCut.h:86
 AliFemtoAODTrackCut.h:87
 AliFemtoAODTrackCut.h:88
 AliFemtoAODTrackCut.h:89
 AliFemtoAODTrackCut.h:90
 AliFemtoAODTrackCut.h:91
 AliFemtoAODTrackCut.h:92
 AliFemtoAODTrackCut.h:93
 AliFemtoAODTrackCut.h:94