changes from gsi. Using mult if no centrality. testfilterbit 128
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliConversionTrackCuts.h
1 #ifndef ALICONVERSIONTRACKCUTS_H
2 #define ALICONVERSIONTRACKCUTS_H
3
4 // Class handling all kinds of selection cuts for Gamma Conversion analysis
5 // Authors: (this code is mostly copied from AliRsnTrackQuality) adapted by Svein Lindal        *
6
7 class TH2F;
8 class TList;
9 #include "AliAODTrack.h"
10 #include "AliESDtrack.h"
11 #include "AliAnalysisCuts.h"
12
13 using namespace std;
14
15 class AliConversionTrackCuts : public AliAnalysisCuts {
16         
17 public:
18   
19   enum CTCuts_t {
20         kPreCut = -1,
21         kCutNcls,
22         kCutNclsFrac,
23         kCutNDF,
24         kCutKinc,
25         kCutDCAZ,
26         kCutDCAXY,
27         kCutTPCRefit,
28         kNCuts
29   };
30
31   static const char * fgkCutNames[kNCuts];
32
33   Bool_t IsSelected(TObject * object ) { return AcceptTrack(static_cast<AliAODTrack*>(object)); }
34   Bool_t IsSelected(TList * /*list*/) { return kFALSE; }
35   Bool_t AcceptTrack(AliAODTrack * track);
36
37   AliConversionTrackCuts();
38   AliConversionTrackCuts(TString name, TString title);
39   ~AliConversionTrackCuts();
40
41   void      AddStatusFlag(ULong_t f, Bool_t on)       {if (on) fFlagsOn = fFlagsOn | f; else fFlagsOff = fFlagsOff | f;}
42   void      SetStatusFlags(ULong_t f, Bool_t on)      {if (on) fFlagsOn = f; else fFlagsOff = f;}
43   void      SetPtRange(Double_t a, Double_t b)        {fPt[0] = TMath::Min(a, b); fPt[1] = TMath::Max(a, b);}
44   void      SetEtaRange(Double_t a, Double_t b)       {fEta[0] = TMath::Min(a, b); fEta[1] = TMath::Max(a, b);}
45   
46   void      SetDCARPtFormula(const char *formula)     {fDCARptFormula = formula; fDCARfixed = kFALSE;}
47   void      SetDCARmax(Double_t value)                {fDCARmax = value; fDCARptFormula = ""; fDCARfixed = kTRUE;}
48   void      SetDCAZPtFormula(const char *formula)     {fDCAZptFormula = formula; fDCAZfixed = kFALSE;}
49   void      SetDCAZmax(Double_t value)                {fDCAZmax = value; fDCAZptFormula = ""; fDCAZfixed = kTRUE;}
50   void      SetDCAXYmax(Double_t value)                {fDCAXYmax = value*value;}
51   
52   void      SetSPDminNClusters(Int_t value)           {fSPDminNClusters = value;}
53   void      SetITSminNClusters(Int_t value)           {fITSminNClusters = value;}
54   void      SetITSmaxChi2(Double_t value)             {fITSmaxChi2 = value;}
55   
56   void      SetTPCminNClusters(Int_t value)           {fTPCminNClusters = value;}
57   void      SetTPCCFoundClusters(Double_t value)           {fTPCClusOverFindable = value;}
58   void      SetTPCmaxChi2(Double_t value)             {fTPCmaxChi2 = value;}
59   
60   void      SetRejectKinkDaughters(Bool_t yn = kTRUE) {fRejectKinkDaughters = yn;}  
61   void      SetAODTestFilterBit(Int_t value)          {fAODTestFilterBit = value;}
62
63   void      SetRequireTPCRefit(Bool_t require)        { fRequireTPCRefit = require; }
64   void      SetDefaults2010();
65   
66   TList * CreateHistograms();
67   void FillHistograms(Int_t cutIndex, AliVTrack * track, Bool_t passed);
68   virtual void   Print(const Option_t *option = "") const;
69
70 protected :
71
72    ULong_t    fFlagsOn;                // status flags which must be ON (used AliESDtrack ones, connected with '|')
73    ULong_t    fFlagsOff;               // status flags which must be OFF (used AliESDtrack ones, connected with '|')
74    Double_t   fPt[2];                  // pt range
75    Double_t   fEta[2];                 // eta range
76    Bool_t     fRejectKinkDaughters;    // switch to kTRUE if daughters of kinks must be rejected
77
78    Bool_t     fDCARfixed;              // flag to switch between fixed and pt-dependent DCA cut
79    TString    fDCARptFormula;          // expression to compute transverse DCA sigma w.r. to pt
80    Double_t   fDCARmax;                // maximum value for transverse DCA
81
82    Bool_t     fDCAZfixed;              // flag to switch between fixed and pt-dependent DCA cut
83    TString    fDCAZptFormula;          // expression to compute longitudinal DCA sigma w.r. to pt
84    Double_t   fDCAZmax;                // maximum value for longitudinal DCA
85
86   Double_t fDCAXYmax;                  // maximum xy value for dca
87
88    Int_t      fSPDminNClusters;        // minimum number of required clusters in SPD
89    Int_t      fITSminNClusters;        // minimum number of required clusters in ITS
90    Double_t   fITSmaxChi2;             // maximum chi2 / number of clusters in ITS
91
92    Int_t      fTPCminNClusters;        // minimum number of required clusters in TPC
93    Double_t   fTPCClusOverFindable;        // minimum number of required clusters in TPC
94    Double_t   fTPCmaxChi2;             // maximum chi2 / number of clusters in TPC
95    Int_t      fAODTestFilterBit;       // test filter bit for AOD tracks
96   Bool_t      fRequireTPCRefit;        // Require TPC refit
97
98   TH2F * fhPhi; //histo
99   TH2F * fhPt; //histo
100   TH2F * fhPhiPt;//histo
101   TH2F * fhdcaxyPt;//histo
102   TH2F * fhdcazPt;//histo
103   TH2F * fhnclpt;//histo
104   TH2F * fhnclsfpt;//histo
105   
106  // TAxis fCutAxis;
107  // TAxisArr fCutVarAxes[kNCuts];
108  // TAxisArr fVarAxes[kNVar];
109
110   TList * fHistograms;
111
112   AliConversionTrackCuts(const AliConversionTrackCuts&); // not implemented
113   AliConversionTrackCuts& operator=(const AliConversionTrackCuts&); // not implemented
114
115   ClassDef(AliConversionTrackCuts,1)
116
117
118 };
119
120
121 //__________________________________________________________________________________________________
122 inline void AliConversionTrackCuts::SetDefaults2010()
123 {
124 //
125 // Default settings for cuts used in 2010
126 //
127
128    SetDCAZmax(3.0);
129    SetDCAXYmax(2.5);
130    SetTPCminNClusters(70);
131    SetTPCmaxChi2(12.0);
132    SetRejectKinkDaughters();
133 }
134
135 #endif