coverity fix
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / Kinks / AliResonanceKink.h
1 #ifndef ALIRESONANCEKINK_H
2 #define ALIRESONANCEKINK_H
3
4 /*  See cxx source for full Copyright notice */
5
6 //------------------------------------------------------------------------------
7 //                   class AliResonanceKink
8 //         This task is an example of an analysis task
9 //        for analysing resonances having one kaon kink
10 //Author: Paraskevi Ganoti, University of Athens (pganoti@phys.uoa.gr)
11 //------------------------------------------------------------------------------
12
13 #include "TVector3.h"
14
15 class TF1;
16 class TH1D;
17 class TH2D;
18 class AliESDEvent;
19 class AliESDtrack;
20 class AliESDVertex;
21 class AliMCEvent;
22 class TList;
23 class TString;
24
25 class AliResonanceKink : public TObject {
26  public:
27  
28   enum ResonanceType {kPhi=333, kKstar0=313, kLambda1520=3124};
29   
30   AliResonanceKink();
31   AliResonanceKink(Int_t nbins, Float_t nlowx, Float_t nhighx, Int_t netabins, Float_t nloweta, Float_t nupeta, Int_t nptbins, Float_t nlowpt, Float_t nupperpt, Int_t daughter1, Int_t daughter2, Int_t resonancePDG);
32   virtual ~AliResonanceKink();
33   
34   TList* GetHistogramList();
35   void Analyse(AliESDEvent* esd, AliMCEvent* mcEvent);
36   void Analyse(AliESDEvent* esd);   
37   Float_t GetSigmaToVertex(AliESDtrack* esdTrack) const ; 
38   const AliESDVertex *GetEventVertex(const AliESDEvent* esd) const;
39   void SetDebugLevel(Int_t level) {fDebug = level;}
40   void SetAnalysisType(TString type) {fAnalysisType=type;}
41   TString GetAnalysisType() {return fAnalysisType;} 
42   void SetPDGCodes(Int_t d1, Int_t d2, Int_t res) {fdaughter1pdg=d1; fdaughter2pdg=d2; fresonancePDGcode=res;}
43   void InitOutputHistograms(Int_t nbins, Float_t nlowx, Float_t nhighx, Int_t netabins, Float_t nloweta, Float_t nupeta, Int_t nptbins, Float_t nlowpt, Float_t nupperpt); 
44   Bool_t IsAcceptedForKink(AliESDEvent *localesd, const AliESDVertex *localvertex, AliESDtrack *localtrack);
45   Bool_t IsAcceptedForTrack(AliESDEvent *localesd, const AliESDVertex *localvertex, AliESDtrack *localtrack);
46   Bool_t IsKink(AliESDEvent *localesd, Int_t kinkIndex, TVector3 trackMom); 
47   
48   void SetMaxNsigmaToVertex(Float_t maxNSigmaToVertex) {
49    fMaxNSigmaToVertex=maxNSigmaToVertex;
50   }
51   Float_t GetMaxNsigmaToVertex() const {return fMaxNSigmaToVertex;} 
52   
53   void SetPtTrackCut(Double_t minPtTrackCut) {
54    fMinPtTrackCut=minPtTrackCut;
55   }
56   Double_t GetPtTrackCut() const {return fMinPtTrackCut;} 
57   
58   void SetMaxDCAxy(Double_t maxDCAxy) {
59    fMaxDCAxy=maxDCAxy;
60   }
61   Double_t GetMaxDCAxy() const {return fMaxDCAxy;}
62   
63   void SetMaxDCAzaxis(Double_t maxDCAzaxis) {
64    fMaxDCAzaxis=maxDCAzaxis;
65   }
66   Double_t GetMaxDCAzaxis() const {return fMaxDCAzaxis;}   
67   
68   void SetMinTPCclusters(Int_t minTPCclusters) {
69    fMinTPCclusters=minTPCclusters;
70   }
71   Int_t GetMinTPCclusters() const {return fMinTPCclusters;}    
72   
73   void SetMaxChi2PerTPCcluster(Double_t maxChi2PerTPCcluster) {
74    fMaxChi2PerTPCcluster=maxChi2PerTPCcluster;
75   }
76   Double_t GetMaxChi2PerTPCcluster() const {return fMaxChi2PerTPCcluster;} 
77   
78   void SetMaxCov0(Double_t maxCov0) {
79    fMaxCov0=maxCov0;
80   }
81   Double_t GetMaxCov0() const {return fMaxCov0;}     
82   
83   void SetMaxCov2(Double_t maxCov2) {
84    fMaxCov2=maxCov2;
85   }
86   Double_t GetMaxCov2() const {return fMaxCov2;}   
87   
88   void SetMaxCov5(Double_t maxCov5) {
89    fMaxCov5=maxCov5;
90   }
91   Double_t GetMaxCov5() const {return fMaxCov5;}   
92   
93   void SetMaxCov9(Double_t maxCov9) {
94    fMaxCov9=maxCov9;
95   }
96   Double_t GetMaxCov9() const {return fMaxCov9;}   
97   
98   void SetMaxCov14(Double_t maxCov14) {
99    fMaxCov14=maxCov14;
100   }
101   Double_t GetMaxCov14() const {return fMaxCov14;} 
102   
103   void SetMinKinkRadius(Float_t minKinkRadius) {
104    fminKinkRadius=minKinkRadius;
105   }
106   Float_t GetMinKinkRadius() const {return fminKinkRadius;}  
107   
108   void SetMaxKinkRadius(Float_t maxKinkRadius) {
109    fmaxKinkRadius=maxKinkRadius;
110   }
111   Float_t GetMaxKinkRadius() const {return fmaxKinkRadius;}    
112   
113   void SetQtLimits(Float_t minQt, Float_t maxQt) {fminQt=minQt; fmaxQt=maxQt;}    
114   
115   void SetUpperAbsEtaCut(Double_t maxAbsEtaCut) {
116     fmaxAbsEtaCut=maxAbsEtaCut;
117   }
118   Double_t GetUpperAbsEtaCut() const {return fmaxAbsEtaCut;} 
119
120   //void SetTPCrefit() {Int_t fTPCrefitFlag=kTRUE;}
121      
122  private:
123  
124   Int_t       fDebug;        //  Debug flag
125   TList       *fListOfHistos; // List 
126   TH1D        *fOpeningAngle; // Opening  
127   TH1D        *fInvariantMass; // invMass spectrum   
128   TH1D        *fInvMassTrue; // invMassTrue spectrum  
129   TH1D        *fPhiBothKinks; // bothKaonsKinks   
130   Int_t       fetabins; // number of eta bins
131   Float_t     floweta; // lower limit for eta
132   Float_t     fupeta; // upper limit for eta  
133   TH1D        *fRecPt; // pT spectrum  
134   TH1D        *fRecEta; // Eta spectrum
135   TH2D        *fRecEtaPt; // Eta pT spectrum  
136   TH1D        *fSimPt; // pT Sim spectrum  
137   TH1D        *fSimEta; // Eta Sim spectrum
138   TH2D        *fSimEtaPt; // Eta pT Sim spectrum 
139   TH1D        *fSimPtKink; // pT Sim one kaon kink spectrum  
140   TH1D        *fSimEtaKink; // Eta Sim one kaon kink spectrum spectrum
141   TH2D        *fSimEtaPtKink; // Eta pT Sim one kaon kink spectrum   
142   TF1         *f1; //upper limit curve for the decay K->mu
143   TF1         *f2;  //upper limit curve for the decay pi->mu
144   TString     fAnalysisType;//"ESD" or "MC"
145   TH1D        *fvtxz ; // vtx z component
146   Int_t       fNbins; // bins
147   Float_t     fLowX;// lowx
148   Float_t     fHighX; // high x
149   Int_t       fdaughter1pdg; // pdg code of the resonance's first daughter
150   Int_t       fdaughter2pdg;  // pdg code of the resonance's second daughter
151   Int_t       fresonancePDGcode; // pdg code of the resonance
152   Float_t     fMaxNSigmaToVertex; // standard cut to select primary tracks
153   Double_t    fMinPtTrackCut; // lower pt cut for the tracks
154   Double_t    fMaxDCAxy; // impact parameter in the xy plane
155   Double_t    fMaxDCAzaxis; // impact parameter in the z axis
156   Int_t       fMinTPCclusters; // standard cut for the TPC clusters
157   Double_t    fMaxChi2PerTPCcluster; // standard cut for the chi2 of the TPC clusters
158   Double_t    fMaxCov0;  // standard cut
159   Double_t    fMaxCov2; // standard cut
160   Double_t    fMaxCov5; // standard cut
161   Double_t    fMaxCov9; // standard cut
162   Double_t    fMaxCov14; // standard cut
163   TH2D        *fInvmassPt;  // 2D histo for invariant mass calculation in pt bins (all pairs, ESD) 
164   TH2D        *fInvmassPtTrue;  // 2D histo for invariant mass calculation in pt bins (true pairs, ESD) 
165   TH2D        *fMCInvmassPt; // 2D histo for invariant mass calculation in pt bins (all pairs, MC)
166   TH2D        *fMCInvmassPtTrue;  // 2D histo for invariant mass calculation in pt bins (true pairs, MC) 
167   Float_t     fminKinkRadius; // min accepted radius for the kink vertex
168   Float_t     fmaxKinkRadius; // max accepted radius for the kink vertex
169   Float_t     fminQt; //min Qt cut
170   Float_t     fmaxQt; //max Qt cut   
171   Int_t       fptbins; // number of bins in pt
172   Float_t     flowpt; // pt lower limit
173   Float_t     fupperpt; // pt upper limit
174   Double_t    fmaxAbsEtaCut; // max abolute eta cut for analysis
175 //  Bool_t      fTPCrefitFlag;
176   
177   AliResonanceKink(const AliResonanceKink&); // not implemented
178   AliResonanceKink& operator=(const AliResonanceKink&); // not implemented
179
180   ClassDef(AliResonanceKink, 1); // example of analysis
181 };
182
183 #endif