]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/correlationHF/AliHFAssociatedTrackCuts.h
Updates: store track filter bit and charge, event pool for K0 and K, new featured...
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / AliHFAssociatedTrackCuts.h
1 #ifndef AliHFAssociatedTrackCuts_H
2 #define AliHFAssociatedTrackCuts_H
3 /**************************************************************************
4  * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
5  *                                                                        *
6  * Author: The ALICE Off-line Project.                                    *
7  * Contributors are mentioned in the code where appropriate.              *
8  *                                                                        *
9  * Permission to use, copy, modify and distribute this software and its   *
10  * documentation strictly for non-commercial purposes is hereby granted   *
11  * without fee, provided that the above copyright notice appears in all   *
12  * copies and that both the copyright notice and this permission notice   *
13  * appear in the supporting documentation. The authors make no claims     *
14  * about the suitability of this software for any purpose. It is          *
15  * provided "as is" without express or implied warranty.                  *
16  **************************************************************************/
17
18 /* $Id$ */
19
20 ////////////////////////////////////////////////////////////////////////
21 //
22 // Base class for cuts on Associated tracks for HF Correlation analysis
23 //
24 // Author: S.Bjelogrlic (Utrecht) sandro.bjelogrlic@cern.ch
25 ////////////////////////////////////////////////////////////////////////
26
27 #include <TString.h>
28 #include "AliAnalysisCuts.h"
29 #include "AliESDtrackCuts.h"
30 #include "AliAODPidHF.h"
31 #include "AliAODEvent.h"
32 #include "AliAODRecoDecayHF2Prong.h"
33 #include <TClonesArray.h>
34
35 class AliAODTrack;
36 class AliAODEvent;
37
38
39 //
40 class AliHFAssociatedTrackCuts : public AliAnalysisCuts
41 {
42         public: 
43         AliHFAssociatedTrackCuts();
44         AliHFAssociatedTrackCuts(const char* name, const char* title);
45         
46         
47         AliHFAssociatedTrackCuts(const AliHFAssociatedTrackCuts& source);
48         AliHFAssociatedTrackCuts& operator=(const AliHFAssociatedTrackCuts& source);
49         
50         virtual ~AliHFAssociatedTrackCuts(); // destructor
51         Bool_t IsSelected(TList*  list) {if(list) return kTRUE; return kFALSE;};
52         Bool_t IsSelected(TObject*  obj) {if(obj) return kTRUE; return kFALSE;};
53         Bool_t IsInAcceptance();
54         Bool_t IsHadronSelected(AliAODTrack * track);
55         Bool_t CheckHadronKinematic(Double_t pt, Double_t d0); 
56         Bool_t Charge(Short_t charge, AliAODTrack* track);
57         Bool_t CheckKaonCompatibility(AliAODTrack * track, Bool_t useMc, TClonesArray* mcArray, Int_t method=1);
58         Bool_t IsKZeroSelected(AliAODv0 *vzero, AliAODVertex *vtx1);
59         Int_t IsMCpartFromHF(Int_t label, TClonesArray*mcArray);
60         Bool_t InvMassDstarRejection(AliAODRecoDecayHF2Prong* d, AliAODTrack *track, Int_t hypD0) const;        
61         
62         //getters
63         Int_t GetMaxNEventsInPool() {return fPoolMaxNEvents;}
64         Int_t GetMinNTracksInPool() {return fPoolMinNTracks;}
65         Int_t GetMinEventsToMix(){return fMinEventsToMix;}
66         Int_t GetNZvtxPoolBins() {return fNzVtxBins;}
67         Double_t *GetZvtxPoolBins(){return fZvtxBins;}
68         Int_t GetNCentPoolBins() {return fNCentBins;}
69         Double_t *GetCentPoolBins(){return fCentBins;}
70         
71         
72         
73         void AddTrackCuts(const AliESDtrackCuts *cuts) {
74                 delete fESDTrackCuts; 
75                 fESDTrackCuts=new AliESDtrackCuts(*cuts); 
76                 return;
77         }
78         //setters
79         //event pool settings
80         void SetMaxNEventsInPool(Int_t events){fPoolMaxNEvents=events;}
81         void SetMinNTracksInPool(Int_t tracks){fPoolMinNTracks=tracks;}
82         void SetMinEventsToMix(Int_t events){fMinEventsToMix=events;}
83         
84         void SetNofPoolBins(Int_t Nzvtxbins, Int_t Ncentbins){
85                 fNzVtxBins=Nzvtxbins;
86                 fNzVtxBinsDim=Nzvtxbins+1;
87                 
88             fNCentBins=Ncentbins;
89                 fNCentBinsDim=Ncentbins+1;
90         }
91         
92         void SetPoolBins(Double_t *ZvtxBins, Double_t* CentBins){
93                 fZvtxBins=ZvtxBins; 
94                 fCentBins=CentBins;
95         }
96         //cut settings
97         void SetAODTrackCuts(Float_t *cutsarray);
98         void SetTrackCutsNames(/*TString *namearray*/);
99         void SetAODvZeroCuts(Float_t *cutsarray);
100         void SetvZeroCutsNames(/*TString *namearray*/);
101         void SetPidHF(AliAODPidHF* pid) {fPidObj = pid; return;}
102         void SetCharge(Short_t charge) {fCharge = charge;}
103         void SetFilterBit(Int_t bit) {fBit = bit;}
104         virtual void PrintAll();
105         virtual void PrintPoolParameters();
106         Int_t GetNVarsTrack(){return fNTrackCuts;}
107         
108         
109         
110         void SetNVarsTrack(Int_t nVars){fNTrackCuts=nVars;}
111         void SetNVarsVzero(Int_t nVars){fNvZeroCuts=nVars;}
112         
113 private:
114         //AliESDtrackCuts *fTrackCuts;
115         AliESDtrackCuts *fESDTrackCuts; // track cut object
116         AliAODPidHF * fPidObj;     /// PID object
117         
118         Int_t fPoolMaxNEvents; // set maximum number of events in the pool
119         Int_t fPoolMinNTracks; // se minimum number of tracks in the pool
120         Int_t fMinEventsToMix; // set the minimum number of events you wanna mix
121         
122         Int_t fNzVtxBins; // number of z vrtx bins
123         Int_t fNzVtxBinsDim; // number of z vrtx bins +1 : necessary to initialize correctly the array
124         Double_t* fZvtxBins; // [fNzVtxBinsDim]
125         
126         
127         Int_t fNCentBins; //number of centrality bins
128         Int_t fNCentBinsDim; //number of centrality bins bins +1 : necessary to initialize correctly the array
129         Double_t* fCentBins; // [fNCentBinsDim]
130         
131         Int_t fNTrackCuts;     // array dimension
132         Float_t* fAODTrackCuts;//[fNTrackCuts]
133         TString * fTrackCutsNames;//[fNTrackCuts]
134         Int_t fNvZeroCuts;// array dimension
135         Float_t *fAODvZeroCuts;//[fNvZeroCuts]
136         TString * fvZeroCutsNames;//[fNvZeroCuts]
137         Int_t fBit; // filterBit
138         Short_t fCharge; // charge (+1 or -1)
139         
140         
141         ClassDef(AliHFAssociatedTrackCuts,3);
142 };
143
144
145 #endif