]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/hfe/AliHFEextraCuts.h
Cristiane pA
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliHFEextraCuts.h
index 418d2cb752cbaabefd4fbecd18ebca7bd694f518..43919aeb7664286aca30d7ed94b0084bdf314b67 100644 (file)
@@ -1,3 +1,4 @@
+
 /**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 #include "AliCFCutBase.h"
 // #endif
 
+#ifndef ROOT_TArrayI
+#include <TArrayI.h>
+#endif
+
 class TList;
 
 class AliVEvent;
 class AliVParticle;
 class AliVTrack;
+class AliVVertex;
+class AliAODVertex;
+class AliAODEvent;
+class AliESDEvent;
 
 class AliHFEextraCuts: public AliCFCutBase{
   public:
@@ -46,13 +55,15 @@ class AliHFEextraCuts: public AliCFCutBase{
     typedef enum{
       kFound = 0,
       kFoundIter1 = 1,
-      kCrossedRows = 2
+      kCrossedRows = 2,
+      kFoundAll = 3
     } ETPCclusterDef_t;
     typedef enum{
       kFoundOverFindable = 0,
       kFoundOverFindableIter1 = 1,
       kFoundOverCR = 2,
-      kCROverFindable = 3
+      kCROverFindable = 3,
+      kFoundAllOverFindable = 4,
     } ETPCclrDef_t;
     AliHFEextraCuts(const Char_t *name, const Char_t *title);
     AliHFEextraCuts(const AliHFEextraCuts &c);
@@ -70,12 +81,14 @@ class AliHFEextraCuts: public AliCFCutBase{
     inline void SetMaxImpactParamR(Double_t impactParam);
     inline void SetMinImpactParamZ(Double_t impactParam);
     inline void SetMaxImpactParamZ(Double_t impactParam);
-    inline void SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t issigmacut, Bool_t isabs);
+    inline void SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t issigmacut, Bool_t isipcharge, Bool_t isopp);
     inline void SetMinTrackletsTRD(Int_t minTracklets, Bool_t exact = kFALSE);
+    inline void SetMaxChi2TRD(Float_t maxchi2);
     inline void SetMinNClustersTPC(Int_t minclusters, ETPCclusterDef_t def);
     void SetMinNClustersTPCPID(Int_t minclusters) { SETBIT(fRequirements, kMinNClustersTPCPID); fMinNClustersTPCPID = minclusters; }
     void SetTOFPID(Bool_t tofPid) { tofPid ? SETBIT(fRequirements, kTOFPID) : CLRBIT(fRequirements, kTOFPID); }
     void SetTOFMISMATCH(Bool_t tofMismatch) { tofMismatch ? SETBIT(fRequirements, kTOFmismatch) : CLRBIT(fRequirements, kTOFmismatch); }
+    void SetMatchTOFLabel(Bool_t match) {match ? SETBIT(fRequirements, kTOFlabel) : CLRBIT(fRequirements, kTOFlabel); }
     void SetTPCPIDCleanUp(Bool_t tpcPIDCleanUp) { tpcPIDCleanUp ? SETBIT(fRequirements, kTPCPIDCleanUp) : CLRBIT(fRequirements, kTPCPIDCleanUp); }
     void SetMaxImpactParameterRpar(Bool_t maxImpactParameterRpar) { maxImpactParameterRpar ? SETBIT(fRequirements, kMaxImpactParameterRpar) : CLRBIT(fRequirements, kMaxImpactParameterRpar); }
     void SetFractionOfTPCSharedClusters(Double_t fractionShared) { fFractionTPCShared= fractionShared; SETBIT(fRequirements, kTPCfractionShared); }
@@ -83,15 +96,24 @@ class AliHFEextraCuts: public AliCFCutBase{
     void SetTOFsignalDxz(Double_t tofsignalDx,Double_t tofsignalDz) { fTOFsignalDx=tofsignalDx; fTOFsignalDz=tofsignalDz; SETBIT(fRequirements, kTOFsignalDxy); }
     void SetRejectKinkDaughter() { SETBIT(fRequirements, kRejectKinkDaughter);}; 
     void SetRejectKinkMother() { SETBIT(fRequirements, kRejectKinkMother);}; 
+    void SetAODFilterBit(Int_t bit) {fAODFilterBit = bit; SETBIT(fRequirements, kAODFilterBit);};
     void SetCheckITSstatus(Bool_t check) { fCheck = check; };
+    void SetITSpatternCut() { SETBIT(fRequirements, kITSpattern); }
     void SetDebugLevel(Int_t level) { fDebugLevel = level; };
 
     Bool_t GetCheckITSstatus() const { return fCheck; };
     Int_t GetDebugLevel() const { return fDebugLevel; };
-    void GetHFEImpactParameters(AliVTrack *track, Double_t &dcaxy, Double_t &dcansigmaxy); // temporary moved from protected to publich for IP QA 
-    void GetHFEImpactParameters(AliVTrack *track, Double_t dcaD[2], Double_t covD[3]);
-    Int_t GetITSstatus(AliVTrack *track, Int_t layer);
+    void GetHFEImpactParameters(const AliVTrack * const track, Double_t &dcaxy, Double_t &dcansigmaxy); // temporary moved from protected to publich for IP QA 
+    void GetHFEImpactParameters(const AliVTrack * const track, Double_t dcaD[2], Double_t covD[3]);
+    void GetImpactParameters(AliVTrack *track, Float_t &radial, Float_t &z);
+    const AliVVertex* RemoveDaughtersFromPrimaryVtx(const AliESDEvent * const esdevent, const AliVTrack * const track);
+    AliAODVertex* RemoveDaughtersFromPrimaryVtx(const AliAODEvent * const aod, const AliVTrack * const track);
+    Int_t GetITSstatus(const AliVTrack * const track, Int_t layer) const;
     Bool_t CheckITSstatus(Int_t itsStatus) const;
+    Bool_t CheckITSpattern(const AliVTrack *const track) const;
+    Bool_t IsKinkDaughter(AliVTrack *track);
+    Bool_t IsKinkMother(AliVTrack *track);
+
 
     void UnSetRejectKinkDaughter() { CLRBIT(fRequirements, kRejectKinkDaughter);}; 
     void UnSetRejectKinkMother() { CLRBIT(fRequirements, kRejectKinkMother);}; 
@@ -109,16 +131,15 @@ class AliHFEextraCuts: public AliCFCutBase{
     // Getter Functions for ESD/AOD compatible mode
     UInt_t GetTPCncls(AliVTrack *track);
     Bool_t GetTPCCountSharedMapBitsAboveThreshold(AliVTrack *track);
-    Double_t GetTPCclusterRatio(AliVTrack *track);
-    void GetImpactParameters(AliVTrack *track, Float_t &radial, Float_t &z);
+    Double_t GetTPCclusterRatio(AliVTrack *track); 
     //void GetHFEImpactParameters(AliVTrack *track, Double_t &dcaxy, Double_t &dcansigmaxy);
-    void GetHFEImpactParameterCuts(AliVTrack *track, Double_t &hfeimpactRcut, Double_t &hfeimpactnsigmaRcut);
-    void GetMaxImpactParameterCutR(AliVTrack *track, Double_t &maximpactRcut);
-    void GetTOFsignalDxDz(AliVTrack *track, Double_t &tofsignalDx, Double_t &tofsignalDz);
+    void GetHFEImpactParameterCuts(const AliVTrack * const track, Double_t &hfeimpactRcut, Double_t &hfeimpactnsigmaRcut);
+    void GetMaxImpactParameterCutR(const AliVTrack * const track, Double_t &maximpactRcut);
+    void GetTOFsignalDxDz(const AliVTrack * const track, Double_t &tofsignalDx, Double_t &tofsignalDz);
     Float_t GetTPCsharedClustersRatio(AliVTrack *track);
+    Float_t GetTRDchi(AliVTrack *track);
     Int_t GetITSNbOfcls(AliVTrack *track);
-    Bool_t IsKinkDaughter(AliVTrack *track);
-    Bool_t IsKinkMother(AliVTrack *track);
+    Bool_t MatchTOFlabel(const AliVTrack * const track) const;
 
   private:
     typedef enum{
@@ -144,7 +165,12 @@ class AliHFEextraCuts: public AliCFCutBase{
       kRejectKinkMother = 19,
       kDriftITS = 20,
       kTOFsignalDxy = 21,
-      kNcuts = 22
+      kMaxTRDChi2 = 22,
+      kITSpattern = 23,
+      kMinHFEImpactParamRcharge = 24,
+      kAODFilterBit=25,
+      kTOFlabel=26,
+      kNcuts = 27
     } Cut_t;
     enum{
       //
@@ -163,6 +189,7 @@ class AliHFEextraCuts: public AliCFCutBase{
     UInt_t fMinNClustersTPCPID;       // Minimum TPC PID clusters cut
     Float_t fClusterRatioTPC;        // Ratio of findable vs. found clusters in TPC
     UChar_t fMinTrackletsTRD;        // Min. Number of Tracklets inside TRD
+    Float_t fMaxChi2TRD;             // Max chi2 TRD
     UChar_t fMinNbITScls;            // Min. Number of ITS clusters
     Bool_t  fTRDtrackletsExact;       // Require exact number of tracklets
     UChar_t fPixelITS;                // Cut on ITS Pixels
@@ -170,9 +197,13 @@ class AliHFEextraCuts: public AliCFCutBase{
     UChar_t fTPCclusterDef;           // TPC cluster definition Bitmap
     UChar_t fTPCclusterRatioDef;      // TPC cluster ratio definition Bitmap
     Double_t  fFractionTPCShared;     // Cut on fraction of shared clusters
-    Bool_t fAbsHFEImpactParamNsigmaR; // flag to use abs ip cut
+    Bool_t fOppSideIPcut;             // flag to use conversion peak side of ip*charge cut
     Double_t fTOFsignalDx;            // TOF signal dx
     Double_t fTOFsignalDz;            // TOF signal dz
+    Double_t fMagField;               // Magnetic field
+    Int_t    fAODFilterBit;           // Require AOD filter bit
+    TArrayI  fListKinkMothers;        // List of Kink Mothers (AOD analysis)
+    Int_t    fNumberKinkMothers;      // Number of Kink mothers
 
     Bool_t  fCheck;                     // check
     TList *fQAlist;                    //! Directory for QA histograms
@@ -225,14 +256,17 @@ void AliHFEextraCuts::SetMaxImpactParamZ(Double_t impactParam){
 }
 
 //__________________________________________________________
-void AliHFEextraCuts::SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t isSigmacut, Bool_t isabs){
-  if(isSigmacut) SETBIT(fRequirements, kMinHFEImpactParamNsigmaR);
-  else SETBIT(fRequirements, kMinHFEImpactParamR);
-  fIPcutParam[0]=ipcutParam[0];
-  fIPcutParam[1]=ipcutParam[1];
-  fIPcutParam[2]=ipcutParam[2];
-  fIPcutParam[3]=ipcutParam[3];
-  fAbsHFEImpactParamNsigmaR = isabs;
+void AliHFEextraCuts::SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t isSigmacut, Bool_t isIPcharge, Bool_t isopp){
+  if(isSigmacut){ SETBIT(fRequirements, kMinHFEImpactParamNsigmaR);}
+  else{ 
+    if(isIPcharge){ SETBIT(fRequirements, kMinHFEImpactParamRcharge);}
+    else {SETBIT(fRequirements, kMinHFEImpactParamR);}
+    fIPcutParam[0]=ipcutParam[0];
+    fIPcutParam[1]=ipcutParam[1];
+    fIPcutParam[2]=ipcutParam[2];
+    fIPcutParam[3]=ipcutParam[3];
+    fOppSideIPcut = isopp;
+  }
 }
 
 //__________________________________________________________
@@ -242,6 +276,13 @@ void AliHFEextraCuts::SetMinTrackletsTRD(Int_t minTracklets, Bool_t exact){
   fTRDtrackletsExact = exact;
 }
 
+//__________________________________________________________
+void AliHFEextraCuts::SetMaxChi2TRD(Float_t maxchi2){
+  SETBIT(fRequirements, kMaxTRDChi2);
+  fMaxChi2TRD = maxchi2;
+}
+
+
 //__________________________________________________________
 void AliHFEextraCuts::SetMinNClustersTPC(Int_t minClusters, ETPCclusterDef_t tpcdef){
   SETBIT(fRequirements, kMinNClustersTPC);