changes in the PID of protons + new config for the proton femtoscopy train
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemtoUser / AliFemtoESDTrackCut.h
index c87f62219c02e05aefd2cd2b13d8b800826a3b6a..01da48863e8513bfe00a8f04d1bc80d7709d3b7c 100644 (file)
@@ -1,12 +1,13 @@
 ///////////////////////////////////////////////////////////////////////////
 //                                                                       //
 // AliFemtoESDTrackCut: A basic track cut that used information from     //
-// ALICE ESD to accept or reject the track.                              //  
+// 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               //
 //                                                                       //
 ///////////////////////////////////////////////////////////////////////////
+#include "AliESDtrackCuts.h"
 
 #ifndef ALIFEMTOESDTRACKCUT_H
 #define ALIFEMTOESDTRACKCUT_H
 //#include "StMaker.h"
 //#endif
 
+#include "AliESDtrackCuts.h" //for enum with ITS layers
 #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();
@@ -53,13 +56,19 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut
   void SetMaxTPCChiNdof(const float& maxchi);
   void SetMaxSigmaToVertex(const float& maxsig);
   void SetMaxImpactXY(const float& maximpxy);
+  void SetMinImpactXY(const float& minimpxy);
   void SetMaxImpactZ(const float& maximpz);
   void SetMaxImpactXYPtDep(const float& maxoff, const float& maxnrm, const float& maxpow);
   void SetMostProbablePion();
   void SetMostProbableKaon();
   void SetMostProbableProton();
-  void SetNoMostProbable(); 
+  void SetLeastProbableProton();
+  void SetNoMostProbable();
   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);
@@ -75,14 +84,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 
-  bool              fLabel;              // if true label<0 will not pass throught 
+  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
   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
@@ -93,6 +107,7 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut
   int               fMostProbable;       // this particle type is required to be most probable
 
   float             fMaxImpactXY;        // Max XY impact parameter
+  float             fMinImpactXY;        // Max XY impact parameter
   float             fMaxImpactZ;         // Max Z impact parameter
 
   float             fMaxImpactXYPtOff;   // Max XY DCA Pt dependent offset
@@ -125,7 +140,10 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut
   bool IsPionNSigma(float mom, float nsigmaTPC, float nsigmaTOF);
   bool IsProtonNSigma(float mom, float nsigmaTPC, float nsigmaTOF);
 
-#ifdef __ROOT__ 
+  Bool_t CheckITSClusterRequirement(AliESDtrackCuts::ITSClusterRequirement req, Bool_t clusterL1, Bool_t clusterL2); //the same as in AliESDtrackCuts
+
+
+#ifdef __ROOT__
   ClassDef(AliFemtoESDTrackCut, 1)
 #endif
     };
@@ -148,13 +166,15 @@ 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::SetMaxITSChiNdof(const float& maxchi) { fMaxITSchiNdof = maxchi; }
 inline void AliFemtoESDTrackCut::SetMaxTPCChiNdof(const float& maxchi) { fMaxTPCchiNdof = maxchi; }
 inline void AliFemtoESDTrackCut::SetMaxSigmaToVertex(const float& maxsig) { fMaxSigmaToVertex = maxsig; }
 inline void AliFemtoESDTrackCut::SetMaxImpactXY(const float& maximpxy) { fMaxImpactXY = maximpxy; }
+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; }
 
-#endif
 
+#endif