]>
Commit | Line | Data |
---|---|---|
94b50f5f | 1 | // |
2 | // Class for handling of ESD v0 cuts. | |
3 | // | |
4 | // | |
5 | ||
6 | #ifndef ALIESDV0CUTS_H | |
7 | #define ALIESDV0CUTS_H | |
8 | ||
9 | #include <TF1.h> | |
10 | #include <TH2.h> | |
11 | #include "AliAnalysisCuts.h" | |
12 | ||
13 | class AliESD; | |
14 | class AliESDEvent; | |
15 | class AliESDVertex; | |
16 | class AliESDtrack; | |
17 | class AliESDv0; | |
18 | class AliLog; | |
19 | class TTree; | |
20 | ||
21 | class AliESDv0Cuts : public AliAnalysisCuts | |
22 | { | |
23 | public: | |
24 | AliESDv0Cuts(const Char_t* name = "AliESDv0Cuts", const Char_t* title = ""); | |
25 | virtual ~AliESDv0Cuts(); | |
26 | ||
9eeae5d5 | 27 | Bool_t IsSelected(TObject* /*obj*/) {return kTRUE;} |
94b50f5f | 28 | Bool_t IsSelected(TList* listObj); |
f690bf48 | 29 | Bool_t IsSelected(TObject* const obj1, TObject* const obj2, TObject* const obj3, TObject* const obj4) |
94b50f5f | 30 | {return AcceptV0((AliESDv0*) obj1, (AliESDtrack*) obj2, (AliESDtrack*) obj3, (const AliESDVertex*) obj4);} |
f690bf48 | 31 | Bool_t AcceptV0(AliESDv0* const esdV0, AliESDtrack* const trackPos, AliESDtrack* const trackNeg, const AliESDVertex* esdVertex); |
32 | TObjArray* GetAcceptedV0s(const AliESD* esd); | |
33 | Int_t CountAcceptedV0s(const AliESD* esd); | |
34 | TObjArray* GetAcceptedV0s(const AliESDEvent* esd); | |
35 | Int_t CountAcceptedV0s(const AliESDEvent* esd); | |
94b50f5f | 36 | |
37 | virtual Long64_t Merge(TCollection* list); | |
38 | virtual void Copy(TObject &c) const; | |
39 | AliESDv0Cuts(const AliESDv0Cuts& pd); // Copy Constructor | |
40 | AliESDv0Cuts &operator=(const AliESDv0Cuts &c); | |
41 | ||
42 | //###################################################### | |
43 | // v0 quality cut setters | |
44 | void SetMinDcaPosToVertex(Float_t min=-1) {fCutMinDcaPosToVertex=min;} | |
45 | void SetMinDcaNegToVertex(Float_t min=-1) {fCutMinDcaNegToVertex=min;} | |
46 | void SetMaxChi2(Float_t max=1e10) {fCutMaxChi2=max;} | |
47 | void SetMaxDcaV0Daughters(Float_t max=1e10) {fCutMaxDcaV0Daughters=max;} | |
48 | void SetMinRadius(Float_t min=-1) {fCutMinRadius=min;} | |
49 | void SetMaxRadius(Float_t max=1e10) {fCutMaxRadius=max;} | |
50 | void SetMinCosinePointingAngle(Float_t min=-1) {fCutMinCosinePointingAngle=min;} | |
51 | void SetRequireOnFlyStatus(Bool_t b=kFALSE) {fCutRequireOnFlyStatus=b;} | |
52 | void SetMaxDcaV0ToVertex(Float_t max=1e10) {fCutMaxDcaV0ToVertex=max;} | |
53 | ||
54 | // v0 kinematic cut setters | |
55 | void SetPRange(Float_t r1=0, Float_t r2=1e10) {fPMin=r1; fPMax=r2;} | |
56 | void SetPtRange(Float_t r1=0, Float_t r2=1e10) {fPtMin=r1; fPtMax=r2;} | |
57 | void SetPxRange(Float_t r1=-1e10, Float_t r2=1e10) {fPxMin=r1; fPxMax=r2;} | |
58 | void SetPyRange(Float_t r1=-1e10, Float_t r2=1e10) {fPyMin=r1; fPyMax=r2;} | |
59 | void SetPzRange(Float_t r1=-1e10, Float_t r2=1e10) {fPzMin=r1; fPzMax=r2;} | |
60 | ||
61 | //###################################################### | |
62 | void SetHistogramsOn(Bool_t b=kFALSE) {fHistogramsOn = b;} | |
63 | void DefineHistograms(Int_t color=1); | |
64 | virtual Bool_t LoadHistograms(const Char_t* dir = 0); | |
65 | void SaveHistograms(const Char_t* dir = 0); | |
66 | void DrawHistograms(); | |
67 | ||
68 | static void EnableNeededBranches(TTree* tree); | |
69 | ||
70 | // void SaveQualityCuts(Char_t* file) | |
71 | // void LoadQualityCuts(Char_t* file) | |
72 | ||
73 | protected: | |
74 | void Init(); // sets everything to 0 | |
75 | ||
76 | enum { kNCuts = 14 }; | |
77 | ||
78 | //###################################################### | |
79 | // esd v0 quality cuts | |
80 | static const Char_t* fgkCutNames[kNCuts]; //! names of cuts (for internal use) | |
81 | ||
82 | Float_t fCutMinDcaPosToVertex; // min dca of the positive daughter to the primary vertex | |
83 | Float_t fCutMinDcaNegToVertex; // min dca of the negative daughter to the primary vertex | |
84 | Float_t fCutMaxChi2; // max chi2 | |
85 | Float_t fCutMaxDcaV0Daughters; // max dca between the two v0 daughters | |
86 | Float_t fCutMinRadius; // min reconstruction radius (fiducial volume) | |
87 | Float_t fCutMaxRadius; // max reconstruction radius (fiducial volume) | |
88 | Float_t fCutMinCosinePointingAngle; // min cosine of pointing angle | |
89 | Bool_t fCutRequireOnFlyStatus; // require on fly status | |
90 | Float_t fCutMaxDcaV0ToVertex; // max dca of the v0 to the primary vertex | |
91 | ||
92 | // v0 kinematics cuts | |
93 | Float_t fPMin, fPMax; // definition of the range of the P | |
94 | Float_t fPtMin, fPtMax; // definition of the range of the Pt | |
95 | Float_t fPxMin, fPxMax; // definition of the range of the Px | |
96 | Float_t fPyMin, fPyMax; // definition of the range of the Py | |
97 | Float_t fPzMin, fPzMax; // definition of the range of the Pz | |
98 | ||
99 | //###################################################### | |
100 | // diagnostics histograms | |
101 | Bool_t fHistogramsOn; // histograms on/off | |
102 | ||
103 | TH1F* fhDcaPosToVertex[2]; //-> | |
104 | TH1F* fhDcaNegToVertex[2]; //-> | |
105 | TH1F* fhChi2[2]; //-> | |
106 | TH1F* fhDcaV0Daughters[2]; //-> | |
107 | TH1F* fhRadius[2]; //-> | |
108 | TH1F* fhCosinePointingAngle[2]; //-> | |
109 | TH1F* fhOnFlyStatus[2]; //-> | |
110 | TH1F* fhDcaV0ToVertex[2]; //-> | |
111 | ||
112 | TH1F* fhPt[2]; //-> pt of esd v0s | |
113 | ||
114 | TH1F* fhCutStatistics; //-> statistics of what cuts the v0s did not survive | |
115 | TH2F* fhCutCorrelation; //-> 2d statistics plot | |
116 | ||
117 | ClassDef(AliESDv0Cuts, 1) | |
118 | }; | |
119 | ||
120 | ||
121 | #endif |