Line data Source code
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 :
27 0 : Bool_t IsSelected(TObject* /*obj*/) {return kTRUE;}
28 : Bool_t IsSelected(TList* listObj);
29 : Bool_t IsSelected(TObject* const obj1, TObject* const obj2, TObject* const obj3, TObject* const obj4)
30 0 : {return AcceptV0((AliESDv0*) obj1, (AliESDtrack*) obj2, (AliESDtrack*) obj3, (const AliESDVertex*) obj4);}
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);
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 8 : void SetMinDcaPosToVertex(Float_t min=-1) {fCutMinDcaPosToVertex=min;}
45 8 : void SetMinDcaNegToVertex(Float_t min=-1) {fCutMinDcaNegToVertex=min;}
46 4 : void SetMaxChi2(Float_t max=1e10) {fCutMaxChi2=max;}
47 8 : void SetMaxDcaV0Daughters(Float_t max=1e10) {fCutMaxDcaV0Daughters=max;}
48 8 : void SetMinRadius(Float_t min=-1) {fCutMinRadius=min;}
49 8 : void SetMaxRadius(Float_t max=1e10) {fCutMaxRadius=max;}
50 8 : void SetMinCosinePointingAngle(Float_t min=-1) {fCutMinCosinePointingAngle=min;}
51 2 : void SetRequireOnFlyStatus(Bool_t b=kFALSE) {fCutRequireOnFlyStatus=b;}
52 4 : void SetMaxDcaV0ToVertex(Float_t max=1e10) {fCutMaxDcaV0ToVertex=max;}
53 :
54 : // v0 kinematic cut setters
55 4 : void SetPRange(Float_t r1=0, Float_t r2=1e10) {fPMin=r1; fPMax=r2;}
56 4 : void SetPtRange(Float_t r1=0, Float_t r2=1e10) {fPtMin=r1; fPtMax=r2;}
57 4 : void SetPxRange(Float_t r1=-1e10, Float_t r2=1e10) {fPxMin=r1; fPxMax=r2;}
58 4 : void SetPyRange(Float_t r1=-1e10, Float_t r2=1e10) {fPyMin=r1; fPyMax=r2;}
59 4 : void SetPzRange(Float_t r1=-1e10, Float_t r2=1e10) {fPzMin=r1; fPzMax=r2;}
60 :
61 : //######################################################
62 2 : 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 170 : ClassDef(AliESDv0Cuts, 1)
118 : };
119 :
120 :
121 : #endif
|