coverity
[u/mrichter/AliRoot.git] / ANALYSIS / AliESDv0Cuts.h
CommitLineData
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
13class AliESD;
14class AliESDEvent;
15class AliESDVertex;
16class AliESDtrack;
17class AliESDv0;
18class AliLog;
19class TTree;
20
21class AliESDv0Cuts : public AliAnalysisCuts
22{
23public:
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
73protected:
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