]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGDQ/dielectron/AliDielectronTrackCuts.h
including switch to set on/off iso-track core removal, cleaning and bug fix
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronTrackCuts.h
index 42cf9fa8274a5528dc34d3f44b8c4f73ea6e3ff0..aa8a0b6676bd866d3fec7b58091c506ee77ef666 100644 (file)
@@ -26,15 +26,12 @@ class AliDielectronTrackCuts : public AliAnalysisCuts {
 public:
   enum ITSClusterRequirement { kOff = 0, kNone, kAny, kFirst, kOnlyFirst, kSecond, kOnlySecond, kBoth };
   enum Detector { kSPD = 0, kSDD, kSSD };
+  enum ITScluster { kSPD0=0x0001, kSPD1=0x0002,
+                    kSDD0=0x0004, kSDD1=0x0008,
+                    kSSD0=0x0010, kSSD1=0x0020};
+  enum ITSclusterCutType { kOneOf=0, kAtLeast, kExact };
+  enum EFilterBit  { kSwitchOff=0, kTPCqual=1, kITSonly=2, kTPCqualSPDany=4, kTPCqualSPDanyPIDele=8, kTPConly=128 };
 
-  enum {
-    kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
-      kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
-      kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
-      kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
-      kHMPIDout=0x10000,kHMPIDpid=0x20000
-  };
-  
   AliDielectronTrackCuts();
   AliDielectronTrackCuts(const char*name, const char* title);
 
@@ -47,10 +44,17 @@ public:
   void SetRequireTPCRefit(Bool_t req) { fRequireTPCRefit=req; }
 
   void SetTPCNclFRobust(Int_t cut) { fTPCNclRobustCut=cut; }
+  void SetMinNCrossedRowsOverFindable(Double_t CrossedOverFindable) { fTPCcrossedOverFindable = CrossedOverFindable; }
   
   Int_t GetV0DaughterCut() const { return fV0DaughterCut; }
   ITSClusterRequirement GetClusterRequirementITS(Detector det) const { return fCutClusterRequirementITS[det]; }
-  
+
+  void SetITSclusterCut(ITSclusterCutType type, UChar_t map) { fITSclusterBitMap=map; fITSclusterCutType=type; }
+
+
+  void SetAODFilterBit(EFilterBit type) { fAODFilterBit = type; }
+  void SetMaxWaivedITSNcls(Int_t max) { fWaiveITSNcls = max; }
+
   //
   //Analysis cuts interface
   //
@@ -67,14 +71,22 @@ private:
   Bool_t fNegateV0DauterCut;                           // If to negate the V0 daughter cut
   ITSClusterRequirement fCutClusterRequirementITS[3];  // detailed ITS cluster requirements for (SPD, SDD, SSD)
 
+  UChar_t fITSclusterBitMap;                           // map of requested ITS clusters
+  ITSclusterCutType fITSclusterCutType;                // logic of requested ITS clusters
+  
   Bool_t fRequireITSRefit;                             // require ITS refit
   Bool_t fRequireTPCRefit;                             // require TPC refit
 
-  Int_t fTPCNclRobustCut;                            // TPC Ncl cut, Robust
-  
+  Int_t fTPCNclRobustCut;                              // TPC Ncl cut, Robust, corresponds to 'crossed Rows' in ESDTrackCuts
+  Double_t fTPCcrossedOverFindable;                               // TPC Crossed Rows / Findable Clusters Cut, analogous to ESDTrackCuts
+
+  Int_t fAODFilterBit;                                 // Filter bit for AOD analysis
+  Int_t fWaiveITSNcls;                                 // max number of waived ITS clusters after first hit 
+
   Bool_t CheckITSClusterRequirement(ITSClusterRequirement req, Bool_t clusterL1, Bool_t clusterL2) const;
-  
-  ClassDef(AliDielectronTrackCuts,1)         // Dielectron TrackCuts
+  Bool_t CheckITSClusterCut(UChar_t itsBits) const;
+
+  ClassDef(AliDielectronTrackCuts,3)         // Dielectron TrackCuts
 };