]>
Commit | Line | Data |
---|---|---|
2dd6ec26 | 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 | ||
5c76942e | 7 | class TH2F; |
8 | class TList; | |
2dd6ec26 | 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: | |
4267afec | 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(dynamic_cast<AliAODTrack*>(object)); } | |
34 | Bool_t IsSelected(TList * /*list*/) { return kFALSE; } | |
35 | Bool_t AcceptTrack(AliAODTrack * track); | |
2dd6ec26 | 36 | |
37 | AliConversionTrackCuts(); | |
38 | AliConversionTrackCuts(TString name, TString title); | |
5c76942e | 39 | ~AliConversionTrackCuts(); |
2dd6ec26 | 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;} | |
27573262 | 50 | void SetDCAXYmax(Double_t value) {fDCAXYmax = value*value;} |
2dd6ec26 | 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;} | |
4267afec | 57 | void SetTPCCFoundClusters(Double_t value) {fTPCClusOverFindable = value;} |
2dd6ec26 | 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;} | |
4267afec | 62 | |
63 | void SetRequireTPCRefit(Bool_t require) { fRequireTPCRefit = require; } | |
2dd6ec26 | 64 | void SetDefaults2010(); |
65 | ||
5c76942e | 66 | TList * CreateHistograms(); |
4267afec | 67 | void FillHistograms(Int_t cutIndex, AliVTrack * track, Bool_t passed); |
2dd6ec26 | 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 | ||
4267afec | 86 | Double_t fDCAXYmax; // maximum xy value for dca |
27573262 | 87 | |
2dd6ec26 | 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 | |
4267afec | 93 | Double_t fTPCClusOverFindable; // minimum number of required clusters in TPC |
2dd6ec26 | 94 | Double_t fTPCmaxChi2; // maximum chi2 / number of clusters in TPC |
95 | Int_t fAODTestFilterBit; // test filter bit for AOD tracks | |
4267afec | 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]; | |
2dd6ec26 | 109 | |
5c76942e | 110 | TList * fHistograms; |
2dd6ec26 | 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 | ||
27573262 | 128 | SetDCAZmax(3.0); |
129 | SetDCAXYmax(2.5); | |
2dd6ec26 | 130 | SetTPCminNClusters(70); |
4267afec | 131 | SetTPCmaxChi2(12.0); |
2dd6ec26 | 132 | SetRejectKinkDaughters(); |
2dd6ec26 | 133 | } |
134 | ||
135 | #endif |