]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/hfe/AliHFEcuts.h
shortened the output names to avoid get error messages
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliHFEcuts.h
index 9b449024dc999f4c70d7b17ef9862d702383c03a..c2e8e36b8326a77467e4280222cede1869289306 100644 (file)
@@ -30,7 +30,9 @@
 
 class AliCFManager;
 class AliESDtrack;
+class AliMCEvent;
 class AliMCParticle;
+class AliVEvent;
 
 class TObjArray;
 class TList;
@@ -85,6 +87,8 @@ class AliHFEcuts : public TNamed{
 
     Bool_t CheckParticleCuts(UInt_t step, TObject *o);
     Bool_t CheckEventCuts(const char*namestep, TObject *o);
+    void SetRecEvent(const AliVEvent *ev);
+    void SetMCEvent(const AliVEvent *ev);
   
     TList *GetQAhistograms() const { return fHistQA; }
     
@@ -120,6 +124,7 @@ class AliHFEcuts : public TNamed{
    
     // Getters
     Bool_t IsRequireITSpixel() const { return TESTBIT(fRequirements, kITSPixel); };
+    Bool_t IsRequireITSdrift() const { return TESTBIT(fRequirements, kITSDrift); };
     Bool_t IsRequireMaxImpactParam() const { return TESTBIT(fRequirements, kMaxImpactParam); };
     Bool_t IsRequirePrimary() const { return TESTBIT(fRequirements, kPrimary); };
     Bool_t IsRequireProdVertex() const { return TESTBIT(fRequirements, kProductionVertex); };
@@ -128,41 +133,57 @@ class AliHFEcuts : public TNamed{
     Bool_t IsRequireKineMCCuts() const {return TESTBIT(fRequirements, kKineMCCuts); };
     Double_t GetVertexRange() const {return fVertexRangeZ; };
     Int_t GetMinTrackletsTRD() const { return fMinTrackletsTRD; }
+    Bool_t GetUseMixedVertex() const { return fUseMixedVertex;};   
     
     // Setters
     inline void SetCutITSpixel(UChar_t cut);
+    inline void SetCutITSdrift(UChar_t cut);
     void SetCheckITSLayerStatus(Bool_t checkITSLayerStatus) { fCheckITSLayerStatus = checkITSLayerStatus; }
     void SetMinNClustersTPC(UChar_t minClustersTPC) { fMinClustersTPC = minClustersTPC; }
+    void SetMinNClustersTPCPID(UChar_t minClustersTPC) { fMinClustersTPCPID = minClustersTPC; }
     void SetMinNClustersITS(UChar_t minClustersITS) { fMinClustersITS = minClustersITS; }
-    void SetMinNTrackletsTRD(UChar_t minNtrackletsTRD) { fMinTrackletsTRD = minNtrackletsTRD; }
+    void SetMinNTrackletsTRD(UChar_t minNtrackletsTRD, Bool_t exact = kFALSE) { fMinTrackletsTRD = minNtrackletsTRD; fTRDtrackletsExact = exact; }
+    void SetMaxChi2perTrackletTRD(Float_t maxchi2trackletTRD) { fMaxChi2TRD = maxchi2trackletTRD; }
     void SetMaxChi2perClusterITS(Double_t chi2) { fMaxChi2clusterITS = chi2; };
     void SetMaxChi2perClusterTPC(Double_t chi2) { fMaxChi2clusterTPC = chi2; };
     inline void SetMaxImpactParam(Double_t radial, Double_t z);
-    inline void SetIPcutParam(Float_t p0, Float_t p1, Float_t p2, Float_t p3, Bool_t isipsigma);
+    inline void SetIPcutParam(Float_t p0, Float_t p1, Float_t p2, Float_t p3, Bool_t isIPcharge, Bool_t isipsigma, Bool_t isopp);
     void SetMinRatioTPCclusters(Double_t minRatioTPC) { fMinClusterRatioTPC = minRatioTPC; };
     void SetPtRange(Double_t ptmin, Double_t ptmax){fPtRange[0] = ptmin; fPtRange[1] = ptmax;};
+    void SetTOFsignaldxz(Double_t tofsignaldx, Double_t tofsignaldz){fTOFsignaldx = tofsignaldx; fTOFsignaldz = tofsignaldz;};
+    void SetAODFilterBit(Int_t bit) { fAODFilterBit = bit; };
     inline void SetProductionVertex(Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax);
     inline void SetSigmaToVertex(Double_t sig);
     inline void SetSigmaToVertexXY(Double_t sig);
     inline void SetSigmaToVertexZ(Double_t sig);
-    void SetTPCmodes(AliHFEextraCuts::ETPCclusterDef_t clusterDef, AliHFEextraCuts::ETPCclrDef_t ratioDef) {
+    void SetTPCmodes(UChar_t clusterDef, UChar_t ratioDef) {
       fTPCclusterDef= clusterDef;
       fTPCratioDef = ratioDef;
     }
+    void SetEtaRange(Double_t etaRange){fEtaRange[0] = -etaRange; fEtaRange[1] = etaRange;};
+    void SetEtaRange(Double_t etamin, Double_t etamax){fEtaRange[0] = etamin; fEtaRange[1] = etamax;};
     void SetVertexRange(Double_t zrange){fVertexRangeZ = zrange;};
     void SetTOFPIDStep(Bool_t tofPidStep) {fTOFPIDStep = tofPidStep;};
     void SetTOFMISMATCHStep(Bool_t tofMismatchStep) {fTOFMISMATCHStep = tofMismatchStep;};
     void SetTPCPIDCleanUpStep(Bool_t tpcPIDCleanUpStep) {fTPCPIDCLEANUPStep = tpcPIDCleanUpStep;};
-    void SetUseMixedVertex(Bool_t useMixedVertex) {fUseMixedVertex = useMixedVertex;};    
-    void SetFractionOfSharedTPCClusters( Bool_t fractionOfSharedTPCClusters) {fFractionOfSharedTPCClusters = fractionOfSharedTPCClusters;};
+    void SetITSpatternCut() { fITSpatternCut = kTRUE; }
+    inline void SetUseMixedVertex(Bool_t useMixedVertex);    
+    inline void SetUseSPDVertex(Bool_t useSPDVertex);
+    void SetUseCorrelationVertex() { fUseCorrelationVertex = kTRUE;};
+    void SetSPDVtxResolutionCut() {fSPDVtxResolution = kTRUE;}
+    void SetpApileupCut() { fPApileupCut = kTRUE; }
+    void SetFractionOfSharedTPCClusters(Double_t fractionOfSharedTPCClusters) {fFractionOfSharedTPCClusters = fractionOfSharedTPCClusters;};
     void SetMaxImpactParameterRpar(Bool_t maxImpactParameterRpar) { fMaxImpactParameterRpar = maxImpactParameterRpar; };
     
     inline void CreateStandardCuts();
     
     // Requirements
+    void SetAdditionalStatusRequirement(Long_t requirement) {fAdditionalStatusRequirement = requirement;}
     void SetRequireDCAToVertex() { SETBIT(fRequirements, kDCAToVertex); CLRBIT(fRequirements, kSigmaToVertex); };
     void SetRequireIsPrimary() { SETBIT(fRequirements, kPrimary); };
     void SetRequireITSPixel() { SETBIT(fRequirements, kITSPixel); }
+    void SetRequireITSDrift() { SETBIT(fRequirements, kITSDrift); }
+    void UnsetRequireITSPixel() { CLRBIT(fRequirements, kITSPixel); }
     void SetRequireProdVertex() { SETBIT(fRequirements, kProductionVertex); };
     void SetRequireSigmaToVertex() { SETBIT(fRequirements, kSigmaToVertex); CLRBIT(fRequirements, kDCAToVertex); };
     void UnsetVertexRequirement() { CLRBIT(fRequirements, kDCAToVertex); CLRBIT(fRequirements, kSigmaToVertex); }
@@ -183,7 +204,8 @@ class AliHFEcuts : public TNamed{
       kDCAToVertex = 3,
       kITSPixel = 4,
       kMaxImpactParam = 5,
-      kKineMCCuts = 6
+      kKineMCCuts = 6,
+      kITSDrift = 7
     } Require_t;
     void SetParticleGenCutList();
     void SetAcceptanceCutList();
@@ -204,38 +226,52 @@ class AliHFEcuts : public TNamed{
     static const Char_t* fgkUndefined;                        // Name for undefined (overflow)
   
     ULong64_t fRequirements;     // Bitmap for requirements
-    AliHFEextraCuts::ETPCclusterDef_t fTPCclusterDef;       // TPC cluster definition
-    AliHFEextraCuts::ETPCclrDef_t fTPCratioDef;             // TPC cluster ratio Definition
+    UChar_t   fTPCclusterDef;       // TPC cluster definition
+    UChar_t   fTPCratioDef;             // TPC cluster ratio Definition
+    Double_t fEtaRange[2];               // Eta range
     Double_t fDCAtoVtx[2];           // DCA to Vertex
     Double_t fProdVtx[4];              // Production Vertex
     Double_t fPtRange[2];              // pt range
     UChar_t fMinClustersTPC;       // Min.Number of TPC clusters
+    UChar_t fMinClustersTPCPID;          // Min.Number of TPC clusters
     UChar_t fMinClustersITS;       // Min.Number of TPC clusters
     UChar_t fMinTrackletsTRD;      // Min. Number of TRD tracklets
+    Float_t fMaxChi2TRD;                // Max. Chi2 per TRD tracklet
     UChar_t fCutITSPixel;              // Cut on ITS pixel
     Bool_t  fCheckITSLayerStatus;       // Check ITS layer status
+    UChar_t fCutITSDrift;              // Cut on ITS drift
     Double_t fMaxChi2clusterITS;       // Max Chi2 per ITS cluster
     Double_t fMaxChi2clusterTPC;       // Max Chi2 per TPC cluster
     Double_t fMinClusterRatioTPC;      // Min. Ratio findable / found TPC clusters
     Double_t fSigmaToVtx[3];       // Sigma To Vertex
     Double_t fVertexRangeZ;             // Vertex Range reconstructed
+    Bool_t   fTRDtrackletsExact;        // Require exact number of tracklets
     Bool_t   fTOFPIDStep;               // TOF matching step efficiency
     Bool_t   fTOFMISMATCHStep;        // TOF mismatch step
     Bool_t   fTPCPIDCLEANUPStep;      // TPC PIC cleanup step
-    Bool_t   fUseMixedVertex;         // Use primary vertex from track only as before
+    Bool_t   fITSpatternCut;          // Cut on ITS pattern
+    Bool_t   fUseMixedVertex;         // Use primary vertex from track if there otherwise SPD vertex
+    Bool_t   fUseSPDVertex;           // Use primary SPD vertex 
+    Bool_t   fUseCorrelationVertex;   // Use the correlation of the vertex in z
+    Bool_t   fSPDVtxResolution;       // Check resolution of the SPD vertex
+    Bool_t   fPApileupCut;            // Apply pA pileup cut
     Float_t  fIPCutParams[4];         // Parameters of impact parameter cut parametrization
-    Bool_t   fIsIPSigmacut;           // if abs IP cut or IP sigma cut 
+    Bool_t   fIsIPSigmacut;           // if IP cut or IP sigma cut 
+    Bool_t   fIsIPcharge;             // if cut on IP * charge (cut using only positive side of distribution, to eliminate conversions)
+    Bool_t   fIsIPOpp;                // if IP*charge cut on side of the photon peak
     Double_t fFractionOfSharedTPCClusters; // Fraction of shared TPC clusters
     Bool_t   fMaxImpactParameterRpar;      // Max impact parameter
-
-
+    Long_t   fAdditionalStatusRequirement; // Additional status bit requirement 
+    Double_t fTOFsignaldx;                 // TOF signal Dx
+    Double_t fTOFsignaldz;                 // TOF signal Dz
+    Int_t    fAODFilterBit;                // AOD Filter Bit Number
     
     TList *fHistQA;                        //! QA Histograms
     TObjArray *fCutList;               //! List of cut objects(Correction Framework Manager)
 
     Int_t fDebugLevel;            // Debug Level
     
-  ClassDef(AliHFEcuts, 2)         // Container for HFE cuts
+  ClassDef(AliHFEcuts, 5)         // Container for HFE cuts
 };
 
 //__________________________________________________________________
@@ -274,13 +310,15 @@ void AliHFEcuts::SetMaxImpactParam(Double_t radial, Double_t z){
 }
 
 //__________________________________________________________________
-void AliHFEcuts::SetIPcutParam(Float_t p0, Float_t p1, Float_t p2, Float_t p3, Bool_t isipsigma){
+void AliHFEcuts::SetIPcutParam(Float_t p0, Float_t p1, Float_t p2, Float_t p3, Bool_t isipsigma, Bool_t isIPcharge, Bool_t isopp){
   // Set parameters for impact parameter cut parametrization
   fIPCutParams[0] = p0;
   fIPCutParams[1] = p1;
   fIPCutParams[2] = p2;
   fIPCutParams[3] = p3;
   fIsIPSigmacut = isipsigma;
+  fIsIPcharge = isIPcharge;
+  fIsIPOpp = isopp;
 }
 
 //__________________________________________________________________
@@ -289,6 +327,28 @@ void AliHFEcuts::SetCutITSpixel(UChar_t cut){
   fCutITSPixel = cut;
 }
 
+//__________________________________________________________________
+void AliHFEcuts::SetCutITSdrift(UChar_t cut){
+  SetRequireITSDrift();
+  fCutITSDrift = cut;
+}
+//__________________________________________________________________
+void AliHFEcuts::SetUseMixedVertex(Bool_t useMixedVertex){
+  //
+  // Choice of a vertex
+  //
+  fUseMixedVertex = useMixedVertex;
+  if(useMixedVertex) fUseSPDVertex = kFALSE;
+}
+//__________________________________________________________________
+void AliHFEcuts::SetUseSPDVertex(Bool_t useSPDVertex){
+  //
+  // Choice of a vertex
+  //
+  fUseSPDVertex = useSPDVertex;
+  if(useSPDVertex) fUseMixedVertex = kFALSE;
+}
+
 //__________________________________________________________________
 void AliHFEcuts::CreateStandardCuts(){
   //
@@ -311,7 +371,7 @@ void AliHFEcuts::CreateStandardCuts(){
   fMaxChi2clusterTPC = 4.;
   fMinClusterRatioTPC = 0.6;
   fPtRange[0] = 0.1;
-  fPtRange[1] = 20.;
+  fPtRange[1] = 100.;
   SetRequireKineMCCuts();
 }
 #endif