]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemtoUser / AliFemtoESDTrackCut.h
index 7189a857454729a45bb560968be1aee146b09614..7e65849093aa919370cabf0877939cdcf2025dfd 100644 (file)
@@ -1,12 +1,7 @@
 ///////////////////////////////////////////////////////////////////////////
 //                                                                       //
 // AliFemtoESDTrackCut: A basic track cut that used information from     //
-// ALICE ESD to accept or reject the track.                              //  
-// Enables the selection on charge, transverse momentum, rapidity,       //
-// pid probabilities, number of ITS and TPC clusters                     //
-// Author: Marek Chojnacki (WUT), mchojnacki@knf.pw.edu.pl               //
-//                                                                       //
-///////////////////////////////////////////////////////////////////////////
+// ALICE ESD to accept or reject the track.                             ////////////////////////////////////////////////
 #include "AliESDtrackCuts.h"
 
 #ifndef ALIFEMTOESDTRACKCUT_H
 #include "AliFemtoTrackCut.h"
 
 
-class AliFemtoESDTrackCut : public AliFemtoTrackCut 
+class AliFemtoESDTrackCut : public AliFemtoTrackCut
 {
   public:
 
   enum PIDMethodType {knSigma=0, kContour=1};
-  typedef enum PIDMethodType ReadPIDMethodType; 
+  typedef enum PIDMethodType ReadPIDMethodType;
 
   AliFemtoESDTrackCut();
   virtual ~AliFemtoESDTrackCut();
@@ -62,13 +57,19 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut
   void SetMostProbablePion();
   void SetMostProbableKaon();
   void SetMostProbableProton();
-  void SetNoMostProbable(); 
+  void SetLeastProbableProton();
+  void SetNoMostProbable();
+  void SetMostProbable(const int& num);
   void SetPIDMethod(ReadPIDMethodType newMethod);
+  void SetNsigmaTPCTOF(Bool_t);
+  void SetNsigmaTPConly(Bool_t);
+  void SetNsigma(Double_t);
   void SetClusterRequirementITS(AliESDtrackCuts::Detector det, AliESDtrackCuts::ITSClusterRequirement req = AliESDtrackCuts::kOff);
 
   void SetMomRangeTOFpidIs(const float& minp, const float& maxp);
   void SetMomRangeTPCpidIs(const float& minp, const float& maxp);
   void SetMomRangeITSpidIs(const float& minp, const float& maxp);
+  void SetElectronRejection(Bool_t);
 
  private:   // here are the quantities I want to cut on...
 
@@ -80,16 +81,19 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut
   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 
+  float             fPidProbMuon[2];     // bounds for muon probability
 
   AliESDtrackCuts::ITSClusterRequirement fCutClusterRequirementITS[3];  // detailed ITS cluster requirements for (SPD, SDD, SSD) - from AliESDtrackcuts!
-  bool              fLabel;              // if true label<0 will not pass throught 
+  bool              fLabel;              // if true label<0 will not pass throught
   long              fStatus;             // staus flag
-  ReadPIDMethodType fPIDMethod;          // which PID mehod to use. 0 - nsgima, 1 - contour 
+  ReadPIDMethodType fPIDMethod;          // which PID mehod to use. 0 - nsgima, 1 - contour
+  Bool_t            fNsigmaTPCTOF;       // true if squared nsigma from TPC and TOF, false if separately from TPC and TOF
+  Bool_t            fNsigmaTPConly;       // true if nsigma from TPC only
+  Double_t            fNsigma;       // number of sigmas - 3 by default
 
   short             fminTPCclsF;         // min number of findable clusters in the TPC
   short             fminTPCncls;         // min number of clusters in the TPC
-  int               fminITScls;          // min number of clusters assigned in the ITS 
+  int               fminITScls;          // min number of clusters assigned in the ITS
   float             fMaxITSchiNdof;      // maximum allowed chi2/ndof for ITS clusters
   float             fMaxTPCchiNdof;      // maximum allowed chi2/ndof for TPC clusters
   float             fMaxSigmaToVertex;   // maximum allowed sigma to primary vertex
@@ -113,6 +117,7 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut
   float             fMaxPforTPCpid;  // momentum till which TPC PID is requested
   float             fMinPforITSpid;  // momentum from which ITS PID is requested
   float             fMaxPforITSpid;  // momentum till which ITS PID is requested
+  bool fElectronRejection;
 
   float PidFractionElectron(float mom) const;
   float PidFractionPion(float mom) const;
@@ -132,11 +137,12 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut
   bool IsKaonNSigma(float mom, float nsigmaTPC, float nsigmaTOF);
   bool IsPionNSigma(float mom, float nsigmaTPC, float nsigmaTOF);
   bool IsProtonNSigma(float mom, float nsigmaTPC, float nsigmaTOF);
+  bool IsElectron(float nsigmaTPCE, float nsigmaTPCPi,float nsigmaTPCK, float nsigmaTPCP);
 
   Bool_t CheckITSClusterRequirement(AliESDtrackCuts::ITSClusterRequirement req, Bool_t clusterL1, Bool_t clusterL2); //the same as in AliESDtrackCuts
 
 
-#ifdef __ROOT__ 
+#ifdef __ROOT__
   ClassDef(AliFemtoESDTrackCut, 1)
 #endif
     };
@@ -149,7 +155,8 @@ inline void AliFemtoESDTrackCut::SetCharge(const int& ch){fCharge = ch;}
 inline void AliFemtoESDTrackCut::SetPidProbElectron(const float& lo,const float& hi){fPidProbElectron[0]=lo; fPidProbElectron[1]=hi;}
 inline void AliFemtoESDTrackCut::SetPidProbPion(const float& lo,const float& hi){fPidProbPion[0]=lo; fPidProbPion[1]=hi;}
 inline void AliFemtoESDTrackCut::SetPidProbKaon(const float& lo,const float& hi){fPidProbKaon[0]=lo; fPidProbKaon[1]=hi;}
-inline void AliFemtoESDTrackCut::SetPidProbProton(const float& lo,const float& hi){fPidProbProton[0]=lo; fPidProbProton[1]=hi;}
+inline void AliFemtoESDTrackCut::SetPidProbProton
+(const float& lo,const float& hi){fPidProbProton[0]=lo; fPidProbProton[1]=hi;}
 inline void AliFemtoESDTrackCut::SetPidProbMuon(const float& lo,const float& hi){fPidProbMuon[0]=lo; fPidProbMuon[1]=hi;}
 inline void AliFemtoESDTrackCut::SetLabel(const bool& flag){fLabel=flag;}
 inline void AliFemtoESDTrackCut::SetStatus(const long& status){fStatus=status;}
@@ -159,7 +166,9 @@ inline void AliFemtoESDTrackCut::SetminITScls(const int& minITScls){fminITScls=m
 inline void AliFemtoESDTrackCut::SetMostProbablePion() { fMostProbable = 2; }
 inline void AliFemtoESDTrackCut::SetMostProbableKaon() { fMostProbable = 3; }
 inline void AliFemtoESDTrackCut::SetMostProbableProton() { fMostProbable = 4; }
+inline void AliFemtoESDTrackCut::SetLeastProbableProton() { fMostProbable = 5; }
 inline void AliFemtoESDTrackCut::SetNoMostProbable() { fMostProbable = 0; }
+inline void AliFemtoESDTrackCut::SetMostProbable(const int& num) {  fMostProbable =  num; }
 inline void AliFemtoESDTrackCut::SetMaxITSChiNdof(const float& maxchi) { fMaxITSchiNdof = maxchi; }
 inline void AliFemtoESDTrackCut::SetMaxTPCChiNdof(const float& maxchi) { fMaxTPCchiNdof = maxchi; }
 inline void AliFemtoESDTrackCut::SetMaxSigmaToVertex(const float& maxsig) { fMaxSigmaToVertex = maxsig; }
@@ -167,7 +176,6 @@ inline void AliFemtoESDTrackCut::SetMaxImpactXY(const float& maximpxy) { fMaxImp
 inline void AliFemtoESDTrackCut::SetMinImpactXY(const float& minimpxy) { fMinImpactXY = minimpxy; }
 inline void AliFemtoESDTrackCut::SetMaxImpactXYPtDep(const float& maxoff, const float& maxnrm, const float& maxpow) { fMaxImpactXYPtOff = maxoff; fMaxImpactXYPtNrm = maxnrm; fMaxImpactXYPtPow = maxpow; }
 inline void AliFemtoESDTrackCut::SetMaxImpactZ(const float& maximpz) { fMaxImpactZ = maximpz; }
-
+inline void AliFemtoESDTrackCut::SetElectronRejection(Bool_t setE) { fElectronRejection = setE; }
 
 #endif
-