]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.h
6f5867ef1ed6a73003329072b558dfbe1acb270d
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnCutSetDaughterParticle.h
1 #ifndef ALIRSNCUTSETDAUGHTERPARTICLE_H
2 #define ALIRSNCUTSETDAUGHTERPARTICLE_H
3
4 //
5 // Cuts collection for selecting good daughter candidates for rsn analysis
6 //Requires:
7 // 1) choice of existing cuts among the enum list
8 // 2) PID ipothesis for the daughter particle
9 //
10 // Author: Francesca Bellini (fbellini@cern.ch)
11 //
12
13 #include "AliVTrack.h"
14 #include "AliRsnCut.h"
15 #include "AliRsnCutSet.h"
16 #include "AliRsnCutTrackQuality.h"
17 #include "AliRsnCutPIDNSigma.h"
18 #include "AliRsnCutTOFMatch.h"
19 #include "AliRsnCutPhi.h"
20
21 class AliRsnCutSetDaughterParticle : public AliRsnCutSet {
22
23 public:
24
25   enum ERsnDaughterCutSet {
26     kNoCuts,
27     kQualityStd2010,//quality only
28     kQualityStd2011,
29     kQualityStd2011HighPt,    
30     kTOFMatch,  
31     kFastTPCpidNsigma, //PbPb analysis
32     kFastTOFpidNsigma,
33     kTPCTOFpidKstarPP2010,
34     kTOFpidKstarPbPb2010,
35     kTOFTPCmismatchKstarPbPb2010,
36     kTOFMatchTRD2010,
37     kTOFMatchNoTRD2010,
38     kTOFpidKstarPbPbTRD2010,
39     kTOFpidKstarPbPbNoTRD2010,
40     kTOFMatchTPCpidNsigma,     
41     kQualityStd2010TRD,
42     kQualityStd2010NoTRD,    
43     kTOFMatchPPB2011, //pA analysis
44     kTPCpidKstarPPB2011,
45     kTOFpidKstarPPB2011,
46     kTPCTOFpidKstarPPB2011,
47     kTPCTOFtightPidKStarPPB2011, //TPC 2.0 (3.0) sigma pid & TOF at 3.0 (5.0) sigma 
48     kTPCpidMatchPPB2011, //Match with nsigma = fNsigmaTPC
49     kTPCpidTOFveto4s, //TPC n sigma + 4.0 sigma TOF veto
50     kTPCpidTOFveto3s, //TPC n sigma + 3.0 sigma TOF veto
51     kCombinedPidBestPtDep, 
52     kTPCPidPtDep,
53     kTOFPidPtDep,
54     kTPCRejPtDepTOFNsigma,
55     kTPCNsigmaTOFVetoPtDep,
56     kTPCTOFpidLstar,//cuts for L* in pA
57     kNDaughterCuts
58   };
59
60   enum ECustomQualityCuts { 
61     kDisableCustom = -1,
62     kFilterBitCustom,
63     kStdLooserDCAXY, 
64     kStdLooserDCAZ, 
65     kStdCrossedRows60, 
66     kStdCrossedRows80, 
67     kStdRowsToCls075, 
68     kStdRowsToCls085, 
69     kStdCls70, 
70     kStdChi2TPCCls35,
71     kStdUseTPCNcls,
72     kNcustomQualityCuts
73   };
74   
75    AliRsnCutSetDaughterParticle();
76    AliRsnCutSetDaughterParticle(const char *name,
77                                 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID,
78                                 AliPID::EParticleType pid,
79                                 Float_t nsigmaFast,
80                                 Int_t AODfilterBit,
81                                 Bool_t useTPCCrossedRows);
82    AliRsnCutSetDaughterParticle(const char *name, 
83                                 AliRsnCutTrackQuality *rsnTrackQualityCut, 
84                                 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, 
85                                 AliPID::EParticleType pid, 
86                                 Float_t nSigmaFast);
87    AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle &copy);
88    AliRsnCutSetDaughterParticle &operator=(const AliRsnCutSetDaughterParticle &copy);
89    virtual ~AliRsnCutSetDaughterParticle();
90
91    void           Init();
92    void           InitStdQualityCuts(Bool_t useTPCCrossedRows=kTRUE);
93    void           SetNsigmaForFastTPCpid(Float_t nsigma) {fNsigmaTPC=nsigma; return;};
94    void           SetNsigmaForFastTOFpid(Float_t nsigma) {fNsigmaTOF=nsigma; return;};
95    void           SetAODTrackCutFilterBit(Int_t ibit) {fAODTrkCutFilterBit=ibit; return;}
96    void           SetUseFilterBitOnly(Bool_t useFilterBitOnly=kTRUE) {fCheckOnlyFilterBit=useFilterBitOnly; return;}   
97    void           EnableCustomCuts(Bool_t useCustom=kFALSE) {fUseCustomQualityCuts=useCustom; return;}
98    void           SetPtRange(Double_t a, Double_t b)        {fPtRange[0] = TMath::Min(a, b); fPtRange[1] = TMath::Max(a, b); return;}
99    void           SetEtaRange(Double_t a, Double_t b)       {fEtaRange[0] = TMath::Min(a, b); fEtaRange[1] = TMath::Max(a, b); return;}
100    void           SetUse2011StdQualityCuts(Bool_t use2011=kFALSE) {fIsUse2011stdQualityCuts=use2011; return;}
101    void           SetUse2011StdQualityCutsHighPt(Bool_t use2011HighPt=kFALSE) {fIsUse2011stdQualityCutsHighPt=use2011HighPt; return;}
102    //getters
103    const char   *GetAppliedDaughterCutSetName() { return GetName();}
104    Int_t         GetAppliedDaughterCutSetId() { return fAppliedCutSetID;}
105    const AliRsnCutTrackQuality *GetQualityCut() {return fCutQuality;};
106    void          PrintTrackQualityCuts();
107
108  private:
109    
110    AliPID::EParticleType fPID;              // PID for track
111    AliRsnCutSetDaughterParticle::ERsnDaughterCutSet    fAppliedCutSetID;     // ID of applied cut
112    Float_t               fNsigmaTPC;         // number of TPC sigmas for fast pid cut only
113    Float_t               fNsigmaTOF;         // number of TOF sigmas for fast pid cut only
114    AliRsnCutTrackQuality *fCutQuality;       //pointer to quality cut object
115    Int_t                 fAODTrkCutFilterBit; //AOD filter bit for track cuts
116    Bool_t                fCheckOnlyFilterBit; //flag to use only filter bit cut
117    Bool_t                fUseCustomQualityCuts; //flag to enable the usage of custom quality cuts
118    Float_t               fPtRange[2]; //single track pt range (min, max)
119    Float_t               fEtaRange[2]; //single track eta range (min, max)
120    Bool_t                fIsUse2011stdQualityCuts;//flag to enalble std quality cuts 2011 
121    Bool_t                fIsUse2011stdQualityCutsHighPt;//flag to enalble std quality cuts 2011 
122
123    ClassDef(AliRsnCutSetDaughterParticle, 5) // cut definitions for K*
124
125 };
126
127 #endif
128