]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/Kinks/AliResonanceKinkLikeSign.h
Merge branch 'master' of http://git.cern.ch/pub/AliRoot
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / Kinks / AliResonanceKinkLikeSign.h
1 #ifndef ALIRESONANCEKINKLIKESIGN_H
2 #define ALIRESONANCEKINKLIKESIGN_H
3
4 /*  See cxx source for full Copyright notice */
5
6 //--------------------------------------------------------------------------------
7 //                   class AliResonanceKinkLikeSign
8 //         This task is an example of an analysis task
9 //        for producing a like-sign background for resonances having at least one 
10 //        kaon-kink in their decay products. 
11 //        Author: Paraskevi Ganoti, University of Athens (pganoti@phys.uoa.gr)
12 //---------------------------------------------------------------------------------
13
14 #include "AliAnalysisTaskSE.h"
15 #include "TVector3.h"
16
17 class TF1;
18 class TH1D;
19 class TH2D;
20 class AliESDtrack;
21 class AliESDVertex;
22 class AliESDEvent;
23
24 class AliResonanceKinkLikeSign : public AliAnalysisTaskSE {
25  public:
26   AliResonanceKinkLikeSign(const char *name = "AliResonanceKinkLikeSign");
27   virtual ~AliResonanceKinkLikeSign() {}
28   
29   virtual void   UserCreateOutputObjects();
30   virtual void   UserExec(Option_t *option);
31   virtual void   Terminate(Option_t *);
32   
33   void SetPDGCodes(Int_t d1, Int_t d2) {fdaughter1pdg=d1; fdaughter2pdg=d2;}
34   void SetHistoSettings(Int_t nbins, Float_t nlowx, Float_t nhighx, Int_t nptbins, Float_t nlowpt, Float_t nupperpt) {fnbins=nbins; fnlowx=nlowx; fnhighx=nhighx; fptbins=nptbins; flowpt=nlowpt; fupperpt=nupperpt;}
35   void SetEtaLimits(Float_t nloweta, Float_t nuppereta) {floweta=nloweta; fuppereta=nuppereta;} 
36   Float_t GetSigmaToVertex(AliESDtrack* esdTrack) const ; 
37   const AliESDVertex *GetEventVertex(const AliESDEvent* esd) const;
38   void SetDebugLevel(Int_t level) {fDebug = level;}
39   Bool_t IsAcceptedForKink(AliESDEvent *localesd, const AliESDVertex *localvertex, AliESDtrack *localtrack);
40   Bool_t IsAcceptedForTrack(AliESDEvent *localesd, const AliESDVertex *localvertex, AliESDtrack *localtrack);
41   Bool_t IsKink(AliESDEvent *localesd, Int_t kinkIndex, TVector3 trackMom); 
42   
43   void SetMaxNsigmaToVertex(Float_t maxNSigmaToVertex) {
44    fMaxNSigmaToVertex=maxNSigmaToVertex;
45   }
46   Float_t GetMaxNsigmaToVertex() const {return fMaxNSigmaToVertex;} 
47   
48   void SetPtTrackCut(Double_t minPtTrackCut) {
49    fMinPtTrackCut=minPtTrackCut;
50   }
51   Double_t GetPtTrackCut() const {return fMinPtTrackCut;} 
52   
53   void SetMaxDCAxy(Double_t maxDCAxy) {
54    fMaxDCAxy=maxDCAxy;
55   }
56   Double_t GetMaxDCAxy() const {return fMaxDCAxy;}
57   
58   void SetMaxDCAzaxis(Double_t maxDCAzaxis) {
59    fMaxDCAzaxis=maxDCAzaxis;
60   }
61   Double_t GetMaxDCAzaxis() const {return fMaxDCAzaxis;}   
62   
63   void SetMinTPCclusters(Int_t minTPCclusters) {
64    fMinTPCclusters=minTPCclusters;
65   }
66   Int_t GetMinTPCclusters() const {return fMinTPCclusters;}    
67   
68   void SetMaxChi2PerTPCcluster(Double_t maxChi2PerTPCcluster) {
69    fMaxChi2PerTPCcluster=maxChi2PerTPCcluster;
70   }
71   Double_t GetMaxChi2PerTPCcluster() const {return fMaxChi2PerTPCcluster;} 
72   
73   void SetMaxCov0(Double_t maxCov0) {
74    fMaxCov0=maxCov0;
75   }
76   Double_t GetMaxCov0() const {return fMaxCov0;}     
77   
78   void SetMaxCov2(Double_t maxCov2) {
79    fMaxCov2=maxCov2;
80   }
81   Double_t GetMaxCov2() const {return fMaxCov2;}   
82   
83   void SetMaxCov5(Double_t maxCov5) {
84    fMaxCov5=maxCov5;
85   }
86   Double_t GetMaxCov5() const {return fMaxCov5;}   
87   
88   void SetMaxCov9(Double_t maxCov9) {
89    fMaxCov9=maxCov9;
90   }
91   Double_t GetMaxCov9() const {return fMaxCov9;}   
92   
93   void SetMaxCov14(Double_t maxCov14) {
94    fMaxCov14=maxCov14;
95   }
96   Double_t GetMaxCov14() const {return fMaxCov14;}
97    
98   void SetMinKinkRadius(Float_t minKinkRadius) {
99    fminKinkRadius=minKinkRadius;
100   }
101   Float_t GetMinKinkRadius() const {return fminKinkRadius;}
102
103   void SetMaxKinkRadius(Float_t maxKinkRadius) {
104    fmaxKinkRadius=maxKinkRadius;
105   }
106   Float_t GetMaxKinkRadius() const {return fmaxKinkRadius;} 
107   
108   void SetQtLimits(Float_t minQt, Float_t maxQt) {fminQt=minQt; fmaxQt=maxQt;}     
109   
110   void SetUpperAbsEtaCut(Double_t maxAbsEtaCut) {
111     fmaxAbsEtaCut=maxAbsEtaCut;
112   }
113   Double_t GetUpperAbsEtaCut() const {return fmaxAbsEtaCut;}   
114   
115  private:
116   Int_t       fDebug;        //  Debug flag
117   TList       *fListOfHistos; // List 
118   TF1         *f1; //upper limit curve for the decay K->mu
119   TF1         *f2;  //upper limit curve for the decay pi->mu
120   TH1D        *fPosKaonLikeSign; // negative spectrum
121   TH2D        *fLikeSignInvmassPt; // negative spectrum
122   Float_t     fMaxNSigmaToVertex; // standard cut to select primary tracks
123   Double_t    fMinPtTrackCut; // lower pt cut for the tracks
124   Double_t    fMaxDCAxy; // impact parameter in the xy plane
125   Double_t    fMaxDCAzaxis; // impact parameter in the z axis
126   Int_t       fMinTPCclusters; // standard cut for the TPC clusters
127   Double_t    fMaxChi2PerTPCcluster; // standard cut for the chi2 of the TPC clusters
128   Double_t    fMaxCov0;  // standard cut
129   Double_t    fMaxCov2; // standard cut
130   Double_t    fMaxCov5; // standard cut
131   Double_t    fMaxCov9; // standard cut
132   Double_t    fMaxCov14; // standard cut
133   Int_t       fdaughter1pdg; // pdg code of the resonance's first daughter
134   Int_t       fdaughter2pdg;  // pdg code of the resonance's second daughter  
135   Int_t       fnbins; // Inv mass histo number of bins
136   Float_t     fnlowx; // Inv mass histo lower limit
137   Float_t     fnhighx; // Inv mass histo upper limit
138   Float_t     floweta; // lower eta limit
139   Float_t     fuppereta; // upper eta limit
140   Float_t     fminKinkRadius; // min accepted radius for the kink vertex
141   Float_t     fmaxKinkRadius; // max accepted radius for the kink vertex
142   Float_t     fminQt; //min Qt cut
143   Float_t     fmaxQt; //max Qt cut  
144   Int_t       fptbins; // number of bins in pt
145   Float_t     flowpt; // pt lower limit
146   Float_t     fupperpt; // pt upper limit 
147   Double_t    fmaxAbsEtaCut; // max abolute eta cut for analysis
148       
149   AliResonanceKinkLikeSign(const AliResonanceKinkLikeSign&); // not implemented
150   AliResonanceKinkLikeSign& operator=(const AliResonanceKinkLikeSign&); // not implemented
151
152   ClassDef(AliResonanceKinkLikeSign, 1); // example of analysis
153 };
154
155 #endif