Rulechecker-complying update from P.Ganoti (pganoti@phys.uoa.gr)
[u/mrichter/AliRoot.git] / PWG2 / KINK / 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 #include "TVector3.h"
13 class TF1;
14 class TH1D;
15 class TH2D;
16 class AliESDEvent;
17 class AliESDtrack;
18 class AliESDVertex;
19 class AliMCEvent;
20 class TList;
21 class TString;
22
23 class AliResonanceKink : public TObject {
24  public:
25  
26   enum ResonanceType {kPhi=333, kKstar0=313, kLambda1520=3124};
27   enum DaughterType {kdaughterPion=211, kdaughterKaon=321, kdaughterProton=2212};
28   
29   AliResonanceKink();
30   AliResonanceKink(Int_t nbins, Float_t nlowx, Float_t nhighx, Int_t daughter1, Int_t daughter2, Int_t resonancePDG);
31   virtual ~AliResonanceKink();
32   
33   TList* GetHistogramList();
34   void Analyse(AliESDEvent* esd, AliMCEvent* mcEvent);  
35   Float_t GetSigmaToVertex(AliESDtrack* esdTrack) const ; 
36   const AliESDVertex *GetEventVertex(const AliESDEvent* esd) const;
37   void SetDebugLevel(Int_t level) {fDebug = level;}
38   void SetAnalysisType(TString type) {fAnalysisType=type;}
39   void SetPDGCodes(Int_t d1, Int_t d2, Int_t res) {fdaughter1pdg=d1; fdaughter2pdg=d2; fresonancePDGcode=res;}
40   void InitOutputHistograms(Int_t nbins, Float_t nlowx, Float_t nhighx);
41   Bool_t IsAcceptedForKink(AliESDEvent *localesd, const AliESDVertex *localvertex, AliESDtrack *localtrack);
42   Bool_t IsAcceptedForTrack(AliESDEvent *localesd, const AliESDVertex *localvertex, AliESDtrack *localtrack);
43   Bool_t IsKink(AliESDEvent *localesd, Int_t kinkIndex, TVector3 trackMom); 
44   
45   void SetMaxNsigmaToVertex(Float_t maxNSigmaToVertex) {
46    fMaxNSigmaToVertex=maxNSigmaToVertex;
47   }
48   Float_t GetMaxNsigmaToVertex() const {return fMaxNSigmaToVertex;} 
49   
50   void SetPtTrackCut(Double_t minPtTrackCut) {
51    fMinPtTrackCut=minPtTrackCut;
52   }
53   Double_t GetPtTrackCut() const {return fMinPtTrackCut;} 
54   
55   void SetMaxDCAxy(Double_t maxDCAxy) {
56    fMaxDCAxy=maxDCAxy;
57   }
58   Double_t GetMaxDCAxy() const {return fMaxDCAxy;}
59   
60   void SetMaxDCAzaxis(Double_t maxDCAzaxis) {
61    fMaxDCAzaxis=maxDCAzaxis;
62   }
63   Double_t GetMaxDCAzaxis() const {return fMaxDCAzaxis;}   
64   
65   void SetMinTPCclusters(Int_t minTPCclusters) {
66    fMinTPCclusters=minTPCclusters;
67   }
68   Int_t GetMinTPCclusters() const {return fMinTPCclusters;}    
69   
70   void SetMaxChi2PerTPCcluster(Double_t maxChi2PerTPCcluster) {
71    fMaxChi2PerTPCcluster=maxChi2PerTPCcluster;
72   }
73   Double_t GetMaxChi2PerTPCcluster() const {return fMaxChi2PerTPCcluster;} 
74   
75   void SetMaxCov0(Double_t maxCov0) {
76    fMaxCov0=maxCov0;
77   }
78   Double_t GetMaxCov0() const {return fMaxCov0;}     
79   
80   void SetMaxCov2(Double_t maxCov2) {
81    fMaxCov2=maxCov2;
82   }
83   Double_t GetMaxCov2() const {return fMaxCov2;}   
84   
85   void SetMaxCov5(Double_t maxCov5) {
86    fMaxCov5=maxCov5;
87   }
88   Double_t GetMaxCov5() const {return fMaxCov5;}   
89   
90   void SetMaxCov9(Double_t maxCov9) {
91    fMaxCov9=maxCov9;
92   }
93   Double_t GetMaxCov9() const {return fMaxCov9;}   
94   
95   void SetMaxCov14(Double_t maxCov14) {
96    fMaxCov14=maxCov14;
97   }
98   Double_t GetMaxCov14() const {return fMaxCov14;}     
99   
100   //void SetTPCrefit() {Int_t fTPCrefitFlag=kTRUE;}
101      
102  private:
103  
104   Int_t       fDebug;        //  Debug flag
105   TList       *fListOfHistos; // List 
106   TH1D        *fOpeningAngle; // Opening  
107   TH1D        *fInvariantMass; // invMass spectrum   
108   TH1D        *fInvMassTrue; // invMassTrue spectrum  
109   TH1D        *fPhiBothKinks; // bothKaonsKinks   
110   TH1D        *fRecPt; // pT spectrum  
111   TH1D        *fRecEta; // Eta spectrum
112   TH2D        *fRecEtaPt; // Eta pT spectrum  
113   TH1D        *fSimPt; // pT Sim spectrum  
114   TH1D        *fSimEta; // Eta Sim spectrum
115   TH2D        *fSimEtaPt; // Eta pT Sim spectrum 
116   TH1D        *fSimPtKink; // pT Sim one kaon kink spectrum  
117   TH1D        *fSimEtaKink; // Eta Sim one kaon kink spectrum spectrum
118   TH2D        *fSimEtaPtKink; // Eta pT Sim one kaon kink spectrum   
119   TH1D        *fhdr ; // radial impact  
120   TH1D        *fhdz ; // z impact
121   TF1         *f1; //upper limit curve for the decay K->mu
122   TF1         *f2;  //upper limit curve for the decay pi->mu
123   TString     fAnalysisType;//"ESD" or "MC"
124   TH1D        *fvtxz ; // vtx z component
125   Int_t       fNbins; // bins
126   Float_t     fLowX;// lowx
127   Float_t     fHighX; // high x
128   Int_t       fdaughter1pdg; // pdg code of the resonance's first daughter
129   Int_t       fdaughter2pdg;  // pdg code of the resonance's second daughter
130   Int_t       fresonancePDGcode; // pdg code of the resonance
131   Float_t     fMaxNSigmaToVertex; // standard cut to select primary tracks
132   Double_t    fMinPtTrackCut; // lower pt cut for the tracks
133   Double_t    fMaxDCAxy; // impact parameter in the xy plane
134   Double_t    fMaxDCAzaxis; // impact parameter in the z axis
135   Int_t       fMinTPCclusters; // standard cut for the TPC clusters
136   Double_t    fMaxChi2PerTPCcluster; // standard cut for the chi2 of the TPC clusters
137   Double_t    fMaxCov0;  // standard cut
138   Double_t    fMaxCov2; // standard cut
139   Double_t    fMaxCov5; // standard cut
140   Double_t    fMaxCov9; // standard cut
141   Double_t    fMaxCov14; // standard cut
142   TH2D        *fInvmassPt;  // 2D histo for invariant mass calculation in pt bins (all pairs, ESD) 
143   TH2D        *fInvmassPtTrue;  // 2D histo for invariant mass calculation in pt bins (true pairs, ESD) 
144   TH2D        *fMCInvmassPt; // 2D histo for invariant mass calculation in pt bins (all pairs, MC)
145   TH2D        *fMCInvmassPtTrue;  // 2D histo for invariant mass calculation in pt bins (true pairs, MC)       
146 //  Bool_t      fTPCrefitFlag;
147   
148   AliResonanceKink(const AliResonanceKink&); // not implemented
149   AliResonanceKink& operator=(const AliResonanceKink&); // not implemented
150
151   ClassDef(AliResonanceKink, 1); // example of analysis
152 };
153
154 #endif