]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/GammaConv/AliAnalysisTaskGammaConversion.h
Added additional histogram for the good esd tracks when vertex is reconstructed
[u/mrichter/AliRoot.git] / PWG4 / GammaConv / AliAnalysisTaskGammaConversion.h
CommitLineData
d7d7e825 1#ifndef ALIANALYSISTASKGAMMACONVERSION_H
2#define ALIANALYSISTASKGAMMACONVERSION_H
a0b94e5c 3
d7d7e825 4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7////////////////////////////////////////////////
8//---------------------------------------------
9// Class used to do analysis on conversion pairs
10//---------------------------------------------
11////////////////////////////////////////////////
a0b94e5c 12
d7d7e825 13#include "AliAnalysisTaskSE.h"
14#include <vector>
15#include "AliV0Reader.h"
4a6157dc 16//#include "AliCFManager.h" // for CF
17//#include "AliCFContainer.h" // for CF
d7d7e825 18
4a6157dc 19class AliGammaConversionAODObject;
d7d7e825 20class TNtuple;
21class AliGammaConversionHistograms;
22class AliESDv0;
23class AliKFParticle;
24class AliESDInputHandler;
25class AliESDEvent;
26class AliAODEvent;
a0b94e5c 27class AliMCEvent;
d7d7e825 28class TList;
29class AliStack;
30class AliESDtrackCuts;
a0b94e5c 31class AliCFManager; // for CF
32class AliCFContainer; // for CF
d7d7e825 33
34class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
35{
a0b94e5c 36
d7d7e825 37 public:
38 AliAnalysisTaskGammaConversion();
39 AliAnalysisTaskGammaConversion(const char* name);
40 virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor
a0b94e5c 41
d7d7e825 42 // Implementation of interface methods
43 virtual void UserCreateOutputObjects();
44 virtual void Init();
45 virtual void LocalInit() {Init();}
c00009fb 46 virtual void UserExec(Option_t *option);
d7d7e825 47 virtual void Terminate(Option_t *option);
48682642 48 //virtual void ConnectInputData(Option_t * option);
a0b94e5c 49
d7d7e825 50 void ProcessMCData();
51 void ProcessV0sNoCut();
52 void ProcessV0s();
53 void ProcessGammasForNeutralMesonAnalysis();
6272370b 54 void ProcessGammasForOmegaMesonAnalysis();
55 void ProcessConvPHOSGammasForNeutralMesonAnalysis();
a0b94e5c 56
57 // for CF
4a6157dc 58 void SetCFManager(AliCFManager * const io) {fCFManager = io;};
a0b94e5c 59 AliCFManager *GetCFManager() const {return fCFManager;}
60
61
d7d7e825 62 // AOD
63 TString GetAODBranchName() const {return fAODBranchName;}
64 void SetAODBranchName(TString name) {fAODBranchName = name ;}
65 void FillAODWithConversionGammas();
66 // end AOD
a0b94e5c 67
6272370b 68 static Bool_t IsGoodImpPar(AliESDtrack *const track);
69
a0b94e5c 70 // for GammaJetAnalysis
d7d7e825 71 void ProcessGammasForGammaJetAnalysis();
72 void CreateListOfChargedParticles();
6c84d371 73 Double_t GetMinimumDistanceToCharge(Int_t indexHighestPtGamma);
74 void CalculateJetCone(Int_t gammaIndex);
d7d7e825 75 Int_t GetIndexHighestPtGamma();
76 void SetESDtrackCuts();
77 // end of Gamma Jet
a0b94e5c 78
d7d7e825 79 void SetMinPtForGammaJet(Double_t minPtForGammaJet){fMinPtForGammaJet=minPtForGammaJet;}
80 void SetMinIsoConeSize(Double_t minIsoConeSize){fMinIsoConeSize=minIsoConeSize;}
81 void SetMinPtIsoCone(Double_t minPtIsoCone){fMinPtIsoCone=minPtIsoCone;}
82 void SetMinPtGamChargedCorr(Double_t minPtGamChargedCorr){fMinPtGamChargedCorr=minPtGamChargedCorr;}
83 void SetMinPtJetCone(Double_t minPtJetCone){fMinPtJetCone=minPtJetCone;}
9640a3d1 84
85 void SetLowPtMapping(Double_t lowPtMapping){fLowPtMapping=lowPtMapping;}
86 void SetHighPtMapping(Double_t highPtMapping){fHighPtMapping=highPtMapping;}
87
a0b94e5c 88
d7d7e825 89 void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}
b5832f95 90 void SetTriggerCINT1B(Bool_t flag){fTriggerCINT1B=flag;}
d7d7e825 91 void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}
92 void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;}
6272370b 93 void SetDoOmegaMeson(Bool_t flag){fDoOmegaMeson=flag;}
037dc2db 94 void SetDoNeutralMesonV0MCCheck(Bool_t flag){fDoNeutralMesonV0MCCheck=flag;}
d7d7e825 95 void SetDoJet(Bool_t flag){fDoJet=flag;}
96 void SetDoChic(Bool_t flag){fDoChic=flag;}
a0b94e5c 97
d7d7e825 98 void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}
99 void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}
100 void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}
101 void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;}
102 void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;}
103 void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}
104 void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}
105 void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}
037dc2db 106 void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader; fV0Reader->SetESDtrackCuts(fEsdTrackCuts);}
d7d7e825 107 void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}
108 void CalculateBackground();
109 void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}
110 void FillNtuple();
111 Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;
112 void CheckV0Efficiency();
037dc2db 113
a0b94e5c 114
d7d7e825 115 //////////////////Chi_c Analysis////////////////////////////
116 void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight);
117 double GetSigmaToVertex(AliESDtrack* t);
6c84d371 118 void ElectronBackground(TString hBg, TClonesArray e);
119 void FillAngle(TString histoName,TClonesArray const tlVeNeg, TClonesArray const tlVePos);
120 void FillElectronInvMass(TString histoName, TClonesArray const negativeElectron, TClonesArray const positiveElectron);
121 void FillGammaElectronInvMass(TString histoMass,TString histoDiff, TClonesArray const fKFGammas, TClonesArray const tlVeNeg,TClonesArray const tlVePos);
122 void CleanWithAngleCuts(TClonesArray const negativeElectrons, TClonesArray const positiveElectrons, TClonesArray const gammas);
123 TClonesArray GetTLorentzVector(TClonesArray* esdTrack);
d7d7e825 124 void ProcessGammaElectronsForChicAnalysis();
125 ///////////////////////////////////////////////////////////////
1e7846f4 126
127 void SetDoCF(Bool_t flag){fDoCF = flag;}
a0b94e5c 128
d7d7e825 129 private:
130 AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
131 AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented
a0b94e5c 132
4a6157dc 133 // for CF
134 enum{
135 kStepGenerated = 0,
136 kStepReconstructable = 1,
ebcfaa7e 137 kStepGetOnFly = 2,
138 kStepLikeSign = 3,
139 kStepTPCRefit = 4,
140 kStepKinks = 5,
141 kStepdEdx_electronselection = 6,
142 kStepdEdx_pionrejection = 7,
143 kStepNContributors = 8,
144 kStepTPCPID = 9,
145 kStepR = 10,
146 kStepLine = 11,
147 kStepZ = 12,
48682642 148 kStepMinClsTPC = 13,
149 kStepSinglePt = 14,
150 kStepNDF = 15,
151 kStepChi2 = 16,
152 kStepEta = 17,
153 kStepPt = 18,
154 kStepTrueGamma = 19
4a6157dc 155 };
26923b22 156
d7d7e825 157 AliV0Reader* fV0Reader; // The V0 reader object
a0b94e5c 158
d7d7e825 159 AliStack * fStack; // pointer to the MC particle stack
a0b94e5c 160 AliMCEventHandler *fMCTruth; // for CF pointer to MCTruth
4a6157dc 161 AliMCEvent *fGCMCEvent; // for CF pointer to the MC Event
d7d7e825 162 AliESDEvent* fESDEvent; //pointer to the ESDEvent
a0b94e5c 163 TList * fOutputContainer; // Histogram container
164 AliCFManager *fCFManager; // for CF
165 // AliCFContainer *container; // for CF
d7d7e825 166
a0b94e5c 167
168
d7d7e825 169 AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class
b5832f95 170 Bool_t fTriggerCINT1B; //Flag to select trigger CINT1B
d7d7e825 171 Bool_t fDoMCTruth; // Flag to switch on/off MC truth
6c84d371 172 Bool_t fDoNeutralMeson; // flag
6272370b 173 Bool_t fDoOmegaMeson; // flag
6c84d371 174 Bool_t fDoJet; // flag
175 Bool_t fDoChic; // flag
a0b94e5c 176
6c84d371 177 TClonesArray * fKFReconstructedGammasTClone; //! transient
6272370b 178 TClonesArray * fKFReconstructedPi0sTClone; //! transient
6c84d371 179 TClonesArray * fCurrentEventPosElectronTClone; //! transient
180 TClonesArray * fCurrentEventNegElectronTClone; //! transient
181 TClonesArray * fKFReconstructedGammasCutTClone; //! transient
182 TClonesArray * fPreviousEventTLVNegElectronTClone; //! transient
183 TClonesArray * fPreviousEventTLVPosElectronTClone; //! transient
a0b94e5c 184
6c84d371 185 // vector<AliKFParticle> fKFReconstructedGammas; // vector containing all reconstructed gammas
d7d7e825 186 vector<Int_t> fElectronv1; // vector containing index of electron 1
187 vector<Int_t> fElectronv2; // vector containing index of electron 2
a0b94e5c 188
6272370b 189 vector<Int_t> fGammav1; // vector containing index of gamma 1
190 vector<Int_t> fGammav2; // vector containing index of gamma 2
191
192
193
d7d7e825 194 ///////Chi_c Analysis///////////////////////////
6c84d371 195 // vector<AliESDtrack*> fCurrentEventPosElectron; // comment here
196 // vector<AliESDtrack*> fCurrentEventNegElectron; // comment here
197 // vector<AliKFParticle> fKFReconstructedGammasCut; // comment here
198 // vector<TLorentzVector> fPreviousEventTLVNegElectron; // comment here
199 // vector<TLorentzVector> fPreviousEventTLVPosElectron; // comment here
d7d7e825 200 //////////////////////////////////////////////////
a0b94e5c 201
d7d7e825 202 //mass defines
203 Double_t fElectronMass; //electron mass
204 Double_t fGammaMass; //gamma mass
205 Double_t fPi0Mass; //pi0mass
206 Double_t fEtaMass; //eta mass
a0b94e5c 207
d7d7e825 208 // width defines
209 Double_t fGammaWidth; //gamma width cut
210 Double_t fPi0Width; // pi0 width cut
211 Double_t fEtaWidth; // eta width cut
a0b94e5c 212
d7d7e825 213 Double_t fMinOpeningAngleGhostCut; // minimum angle cut
a0b94e5c 214
d7d7e825 215 AliESDtrackCuts* fEsdTrackCuts; // Object containing the parameters of the esd track cuts
a0b94e5c 216
d7d7e825 217 Bool_t fCalculateBackground; //flag to set backgrount calculation on/off
218 Bool_t fWriteNtuple; // flag to set if writing to ntuple on/off
219 TNtuple *fGammaNtuple; // Ntuple for gamma values
220 TNtuple *fNeutralMesonNtuple;// NTuple for mesons
a0b94e5c 221
d7d7e825 222 Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries
a0b94e5c 223
6c84d371 224 TClonesArray* fChargedParticles; //! transient
225 vector<Int_t> fChargedParticlesId; //! transient
a0b94e5c 226
6c84d371 227 Double_t fGammaPtHighest; //! transient
228 Double_t fMinPtForGammaJet; //! transient
229 Double_t fMinIsoConeSize; //! transient
230 Double_t fMinPtIsoCone; //! transient
231 Double_t fMinPtGamChargedCorr; //! transient
232 Double_t fMinPtJetCone; //! transient
233 Int_t fLeadingChargedIndex; //! transient
1e7846f4 234 Double_t fLowPtMapping; //! transient
235 Double_t fHighPtMapping; //! transient
236 Bool_t fDoCF; //! transient
a0b94e5c 237
d7d7e825 238 TClonesArray* fAODBranch ; //! selected particles branch
239 TString fAODBranchName; // New AOD branch name
037dc2db 240
241 Bool_t fDoNeutralMesonV0MCCheck; //flag
242
243 vector<Int_t>fKFReconstructedGammasV0Index; // index of the reconstructed v0s
244
6272370b 245 ClassDef(AliAnalysisTaskGammaConversion, 8); // Analysis task for gamma conversions
d7d7e825 246};
a0b94e5c 247
d7d7e825 248#endif //ALIANALYSISTASKGAMMA_H