]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/GammaConv/AliDalitzElectronCuts.h
o fix sign
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliDalitzElectronCuts.h
CommitLineData
2bb2434e 1#ifndef ALIDALITZELECTRONCUTS_H
2#define ALIDALITZELECTRONCUTS_H
3
4// Class handling all kinds of selection cuts for electrons
5
6// Authors: Svein Lindal, Daniel Lohner *
7
8
9#include "AliAODpidUtil.h"
10//#include "AliConversionPhotonBase.h"
11//#include "AliAODConversionMother.h"
12#include "AliAODTrack.h"
13#include "AliESDtrack.h"
14#include "AliVTrack.h"
15#include "AliAODTrack.h"
16#include "AliStack.h"
17#include "AliAnalysisCuts.h"
18#include "AliESDtrackCuts.h"
19#include "TH1F.h"
20
21class AliESDEvent;
22class AliAODEvent;
23class AliConversionPhotonBase;
24class AliKFVertex;
25class AliKFParticle;
26class TH1F;
27class TH2F;
28class AliPIDResponse;
29class AliAnalysisCuts;
30class iostream;
31class TList;
32class AliAnalysisManager;
33
34
35using namespace std;
36
37class AliDalitzElectronCuts : public AliAnalysisCuts {
38
39 public:
40
41
42 enum cutIds {
43 kgoodId=0,
44 kededxSigmaITSCut,
45 kededxSigmaTPCCut,
46 kpidedxSigmaTPCCut,
47 kpiMinMomdedxSigmaTPCCut,
48 kpiMaxMomdedxSigmaTPCCut,
49 kLowPRejectionSigmaCut,
50 kTOFelectronPID,
0a2b2b4b 51 kclsITSCut,
2bb2434e 52 kclsTPCCut,
53 ketaCut,
54 kPsiPair,
55 kRejectSharedElecGamma,
56 kBackgroundScheme,
a280ac15 57 kNumberOfRotations,
ae947965 58 kptCut,
59 kDCACut,
60 kmassCut,
2bb2434e 61 kNCuts
62 };
63
64
65 enum electronCuts {
66 kElectronIn=0,
67 kNoTracks,
68 kTrackCuts,
69 kdEdxCuts,
70 kElectronOut
71 };
72
73
74 Bool_t SetCutIds(TString cutString);
75 Int_t fCuts[kNCuts];
76 Bool_t SetCut(cutIds cutID, Int_t cut);
77 Bool_t UpdateCutString(cutIds cutID, Int_t value);
78 static const char * fgkCutNames[kNCuts];
79
80
81 Bool_t InitializeCutsFromCutString(const TString analysisCutSelection);
82
83
84 AliDalitzElectronCuts(const char *name="ElectronCuts", const char * title="Electron Cuts");
85 virtual ~AliDalitzElectronCuts(); //virtual destructor
86
87 virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;}
88 virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
89
90 TString GetCutNumber();
91
92 // Cut Selection
ccfa8c0d 93 Bool_t ElectronIsSelectedMC(Int_t labelParticle,AliStack *fMCStack);
2bb2434e 94 Bool_t TrackIsSelected(AliESDtrack* lTrack);
95 Bool_t ElectronIsSelected(AliESDtrack* lTrack);
96 void InitAODpidUtil(Int_t type);
97 static AliDalitzElectronCuts * GetStandardCuts2010PbPb();
98 static AliDalitzElectronCuts * GetStandardCuts2010pp();
99 Bool_t InitPIDResponse();
100
101 void SetPIDResponse(AliPIDResponse * pidResponse) {fPIDResponse = pidResponse;}
102 AliPIDResponse * GetPIDResponse() { return fPIDResponse;}
103
104 void PrintCuts();
105
a280ac15 106 void InitCutHistograms(TString name="",Bool_t preCut = kTRUE,TString cutName="");
107 void SetFillCutHistograms(TString name="",Bool_t preCut = kTRUE,TString cutName=""){if(!fHistograms){InitCutHistograms(name,preCut,cutName);};}
2bb2434e 108 TList *GetCutHistograms(){return fHistograms;}
109
110 static AliVTrack * GetTrack(AliVEvent * event, Int_t label);
111
112
113
114 ///Cut functions
115 Bool_t dEdxCuts(AliVTrack * track);
116 Bool_t PIDProbabilityCut(AliConversionPhotonBase *photon, AliVEvent * event);
117 Bool_t RejectSharedElecGamma(TList *photons, Int_t indexEle);
a280ac15 118 Bool_t IsFromGammaConversion( Double_t psiPair, Double_t deltaPhi );
4803eb1f 119 Bool_t MassCut(Double_t pi0CandidatePt,Double_t vphotonCandidateMass);
2bb2434e 120
121 // Event Cuts
122
a280ac15 123 //Double_t GetPsiPair( const AliESDtrack *trackPos, const AliESDtrack *trackNeg );
2bb2434e 124
125 Bool_t SetTPCdEdxCutPionLine(Int_t pidedxSigmaCut);
126 Bool_t SetTPCdEdxCutElectronLine(Int_t ededxSigmaCut);
127 Bool_t SetITSdEdxCutElectronLine(Int_t ededxSigmaCut);
128 Bool_t SetMinMomPiondEdxTPCCut(Int_t piMomdedxSigmaCut);
129 Bool_t SetMaxMomPiondEdxTPCCut(Int_t piMomdedxSigmaCut);
0a2b2b4b 130 Bool_t SetITSClusterCut(Int_t clsITSCut);
2bb2434e 131 Bool_t SetTPCClusterCut(Int_t clsTPCCut);
132 Bool_t SetEtaCut(Int_t etaCut);
ae947965 133 Bool_t SetPtCut(Int_t ptCut);
134 Bool_t SetDCACut(Int_t dcaCut);
135 void SetEtaShift(Double_t etaShift){fEtaShift = etaShift;}
2bb2434e 136 Bool_t SetMinMomPiondEdxCut(Int_t piMinMomdedxSigmaCut);
137 Bool_t SetMaxMomPiondEdxCut(Int_t piMaxMomdedxSigmaCut);
138 Bool_t SetLowPRejectionCuts(Int_t LowPRejectionSigmaCut);
139 Bool_t SetTOFElectronPIDCut(Int_t TOFelectronPID);
140 Bool_t SetPsiPairCut(Int_t psiCut);
141 Bool_t SetRejectSharedElecGamma(Int_t RCut);
142 Bool_t SetBackgroundScheme(Int_t BackgroundScheme);
a280ac15 143 Bool_t SetNumberOfRotations(Int_t NumberOfRotations);
ae947965 144 Bool_t SetMassCut(Int_t massCut);
2bb2434e 145
146 // Request Flags
147
148 Double_t GetEtaCut(){ return fEtaCut;}
149 Double_t GetPsiPairCut(){ return fPsiPairCut; }
150 Double_t DoRejectSharedElecGamma(){ return fDoRejectSharedElecGamma;}
151 Double_t DoPsiPairCut(){return fDoPsiPairCut;}
4803eb1f 152 Double_t GetNFindableClustersTPC(AliESDtrack* lTrack);
2bb2434e 153 Bool_t UseTrackMultiplicity(){ return fUseTrackMultiplicityForBG;}
154 Int_t GetBKGMethod(){ return fBKGMethod; }
a280ac15 155 Int_t NumberOfRotationEvents(){return fnumberOfRotationEventsForBG;}
ae947965 156 Bool_t DoMassCut(){return fDoMassCut;}
4803eb1f 157 Double_t GetMassCutLowPt(){return fMassCutLowPt;}
158 Double_t GetMassCutHighPt(){return fMassCutHighPt;}
159 Double_t GetPtMinMassCut(){return fMassCutPtMin;}
2bb2434e 160
161
162
163 protected:
164
165 TList *fHistograms;
166 AliPIDResponse *fPIDResponse;
167 AliESDtrackCuts *fesdTrackCuts;
168
169 Double_t fEtaCut; //eta cutç
ae947965 170 Double_t fEtaShift;
171 Bool_t fDoEtaCut;
172 Double_t fPtCut;
2bb2434e 173 Double_t fRadiusCut; // radius cut
174 Double_t fPsiPairCut;
175 Double_t fDeltaPhiCutMin;
176 Double_t fDeltaPhiCutMax;
177 Double_t fMinClsTPC; // minimum clusters in the TPC
178 Double_t fMinClsTPCToF; // minimum clusters to findable clusters
179 Bool_t fDodEdxSigmaITSCut; // flag to use the dEdxCut ITS based on sigmas
180 Bool_t fDodEdxSigmaTPCCut; // flag to use the dEdxCut TPC based on sigmas
181 Bool_t fDoTOFsigmaCut; // flag to use TOF pid cut RRnewTOF
182 Bool_t fDoRejectSharedElecGamma; //Reject electrons from the gammas with Radius < RadiusCut
183 Bool_t fDoPsiPairCut; // PsiPair Cut
184 Double_t fPIDnSigmaAboveElectronLineITS; // sigma cut
185 Double_t fPIDnSigmaBelowElectronLineITS; // sigma cut
186 Double_t fPIDnSigmaAboveElectronLineTPC; // sigma cut
187 Double_t fPIDnSigmaBelowElectronLineTPC; // sigma cut
188 Double_t fPIDnSigmaAbovePionLineTPC;
189 Double_t fPIDnSigmaAbovePionLineTPCHighPt;
190 Double_t fTofPIDnSigmaAboveElectronLine; // sigma cut RRnewTOF
191 Double_t fTofPIDnSigmaBelowElectronLine; // sigma cut RRnewTOF
192 Double_t fPIDMinPnSigmaAbovePionLineTPC; // sigma cut
193 Double_t fPIDMaxPnSigmaAbovePionLineTPC; // sigma cut
194 Double_t fDoKaonRejectionLowP; // Kaon rejection at low p
195 Double_t fDoProtonRejectionLowP; // Proton rejection at low p
196 Double_t fDoPionRejectionLowP; // Pion rejection at low p
197 Double_t fPIDnSigmaAtLowPAroundKaonLine; // sigma cut
198 Double_t fPIDnSigmaAtLowPAroundProtonLine; // sigma cut
199 Double_t fPIDnSigmaAtLowPAroundPionLine; // sigma cut
200 Double_t fPIDMinPKaonRejectionLowP; // Momentum limit to apply kaon rejection
201 Double_t fPIDMinPProtonRejectionLowP; // Momentum limit to apply proton rejection
202 Double_t fPIDMinPPionRejectionLowP; // Momentum limit to apply proton rejection
203
204 Bool_t fUseCorrectedTPCClsInfo; // flag to use corrected tpc cl info
205 Bool_t fUseTOFpid; // flag to use tof pid
0a2b2b4b 206 Bool_t fRequireTOF; //flg to analyze only tracks with TOF signal
2bb2434e 207 Bool_t fUseTrackMultiplicityForBG; // use multiplicity
208 Int_t fBKGMethod;
a280ac15 209 Int_t fnumberOfRotationEventsForBG;
ae947965 210 Bool_t fDoMassCut;
4803eb1f 211 Double_t fMassCutLowPt;
212 Double_t fMassCutHighPt;
213 Double_t fMassCutPtMin;
2bb2434e 214
215
216 // Histograms
217 TObjString *fCutString; // cut number used for analysis
218 TH1F *hCutIndex; // bookkeeping for cuts
219 TH1F *hdEdxCuts; // bookkeeping for dEdx cuts
220 TH2F *hITSdEdxbefore; // ITS dEdx before cuts
221 TH2F *hITSdEdxafter;
222 TH2F *hTPCdEdxbefore; // TPC dEdx before cuts
223 TH2F *hTPCdEdxafter; // TPC dEdx after cuts
ccfa8c0d 224 TH2F *hTPCdEdxSignalbefore; //TPC dEdx signal before
225 TH2F *hTPCdEdxSignalafter; //TPC dEdx signal after
2bb2434e 226 TH2F *hTOFbefore; // TOF after cuts
227 TH2F *hTOFafter; // TOF after cuts
4803eb1f 228 TH2F *hTrackDCAxyPtbefore;
229 TH2F *hTrackDCAxyPtafter;
230 TH2F *hTrackDCAzPtbefore;
231 TH2F *hTrackDCAzPtafter;
232 TH2F *hTrackNFindClsPtTPCbefore;
233 TH2F *hTrackNFindClsPtTPCafter;
ae947965 234
2bb2434e 235
236
237private:
238
239 AliDalitzElectronCuts(const AliDalitzElectronCuts&); // not implemented
240 AliDalitzElectronCuts& operator=(const AliDalitzElectronCuts&); // not implemented
241
242
a280ac15 243 ClassDef(AliDalitzElectronCuts,2)
2bb2434e 244};
245
246
247inline void AliDalitzElectronCuts::InitAODpidUtil(Int_t type) {
248 if (!fPIDResponse) fPIDResponse = new AliAODpidUtil();
249 Double_t alephParameters[5];
250 // simulation
251 alephParameters[0] = 2.15898e+00/50.;
252 alephParameters[1] = 1.75295e+01;
253 alephParameters[2] = 3.40030e-09;
254 alephParameters[3] = 1.96178e+00;
255 alephParameters[4] = 3.91720e+00;
256 fPIDResponse->GetTOFResponse().SetTimeResolution(80.);
257
258 // data
259 if (type==1){
260 alephParameters[0] = 0.0283086/0.97;
261 alephParameters[1] = 2.63394e+01;
262 alephParameters[2] = 5.04114e-11;
263 alephParameters[3] = 2.12543e+00;
264 alephParameters[4] = 4.88663e+00;
265 fPIDResponse->GetTOFResponse().SetTimeResolution(130.);
266 fPIDResponse->GetTPCResponse().SetMip(50.);
267 }
268
269 fPIDResponse->GetTPCResponse().SetBetheBlochParameters(
270 alephParameters[0],alephParameters[1],alephParameters[2],
271 alephParameters[3],alephParameters[4]);
272
273 fPIDResponse->GetTPCResponse().SetSigma(3.79301e-03, 2.21280e+04);
274}
275
276
277#endif