]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/GammaConv/AliAnalysisTaskGammaConversion.h
Bugfix, fixed memory leaks.
[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();}
46 virtual void Exec(Option_t *option);
47 virtual void Terminate(Option_t *option);
48 virtual void ConnectInputData(Option_t *);
a0b94e5c 49
d7d7e825 50 void ProcessMCData();
51 void ProcessV0sNoCut();
52 void ProcessV0s();
53 void ProcessGammasForNeutralMesonAnalysis();
a0b94e5c 54
55 // for CF
4a6157dc 56 void SetCFManager(AliCFManager * const io) {fCFManager = io;};
a0b94e5c 57 AliCFManager *GetCFManager() const {return fCFManager;}
58
59
d7d7e825 60 // AOD
61 TString GetAODBranchName() const {return fAODBranchName;}
62 void SetAODBranchName(TString name) {fAODBranchName = name ;}
63 void FillAODWithConversionGammas();
64 // end AOD
a0b94e5c 65
66
67 // for GammaJetAnalysis
d7d7e825 68 void ProcessGammasForGammaJetAnalysis();
69 void CreateListOfChargedParticles();
6c84d371 70 Double_t GetMinimumDistanceToCharge(Int_t indexHighestPtGamma);
71 void CalculateJetCone(Int_t gammaIndex);
d7d7e825 72 Int_t GetIndexHighestPtGamma();
73 void SetESDtrackCuts();
74 // end of Gamma Jet
a0b94e5c 75
d7d7e825 76 void SetMinPtForGammaJet(Double_t minPtForGammaJet){fMinPtForGammaJet=minPtForGammaJet;}
77 void SetMinIsoConeSize(Double_t minIsoConeSize){fMinIsoConeSize=minIsoConeSize;}
78 void SetMinPtIsoCone(Double_t minPtIsoCone){fMinPtIsoCone=minPtIsoCone;}
79 void SetMinPtGamChargedCorr(Double_t minPtGamChargedCorr){fMinPtGamChargedCorr=minPtGamChargedCorr;}
80 void SetMinPtJetCone(Double_t minPtJetCone){fMinPtJetCone=minPtJetCone;}
9640a3d1 81
82 void SetLowPtMapping(Double_t lowPtMapping){fLowPtMapping=lowPtMapping;}
83 void SetHighPtMapping(Double_t highPtMapping){fHighPtMapping=highPtMapping;}
84
a0b94e5c 85
d7d7e825 86 void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}
87 void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}
88 void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;}
89 void SetDoJet(Bool_t flag){fDoJet=flag;}
90 void SetDoChic(Bool_t flag){fDoChic=flag;}
a0b94e5c 91
d7d7e825 92 void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}
93 void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}
94 void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}
95 void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;}
96 void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;}
97 void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}
98 void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}
99 void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}
100 void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader;}
101 void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}
102 void CalculateBackground();
103 void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}
104 void FillNtuple();
105 Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;
106 void CheckV0Efficiency();
a0b94e5c 107
108
d7d7e825 109 //////////////////Chi_c Analysis////////////////////////////
110 void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight);
111 double GetSigmaToVertex(AliESDtrack* t);
6c84d371 112 void ElectronBackground(TString hBg, TClonesArray e);
113 void FillAngle(TString histoName,TClonesArray const tlVeNeg, TClonesArray const tlVePos);
114 void FillElectronInvMass(TString histoName, TClonesArray const negativeElectron, TClonesArray const positiveElectron);
115 void FillGammaElectronInvMass(TString histoMass,TString histoDiff, TClonesArray const fKFGammas, TClonesArray const tlVeNeg,TClonesArray const tlVePos);
116 void CleanWithAngleCuts(TClonesArray const negativeElectrons, TClonesArray const positiveElectrons, TClonesArray const gammas);
117 TClonesArray GetTLorentzVector(TClonesArray* esdTrack);
d7d7e825 118 void ProcessGammaElectronsForChicAnalysis();
119 ///////////////////////////////////////////////////////////////
1e7846f4 120
121 void SetDoCF(Bool_t flag){fDoCF = flag;}
a0b94e5c 122
d7d7e825 123 private:
124 AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
125 AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented
a0b94e5c 126
4a6157dc 127 // for CF
128 enum{
129 kStepGenerated = 0,
130 kStepReconstructable = 1,
131 kStepLikeSign = 2,
132 kStepTPCRefit = 3,
133 kStepKinks = 4,
134 kStepGetOnFly = 5,
135 kStepNContributors = 6,
136 kStepTPCPID = 7,
137 kStepR = 8,
138 kStepLine = 9,
139 kStepZ = 10,
140 kStepNDF = 11,
141 kStepChi2 = 12,
142 kStepEta = 13,
143 kStepPt = 14
144 };
145
d7d7e825 146 AliV0Reader* fV0Reader; // The V0 reader object
a0b94e5c 147
d7d7e825 148 AliStack * fStack; // pointer to the MC particle stack
a0b94e5c 149 AliMCEventHandler *fMCTruth; // for CF pointer to MCTruth
4a6157dc 150 AliMCEvent *fGCMCEvent; // for CF pointer to the MC Event
d7d7e825 151 AliESDEvent* fESDEvent; //pointer to the ESDEvent
a0b94e5c 152 TList * fOutputContainer; // Histogram container
153 AliCFManager *fCFManager; // for CF
154 // AliCFContainer *container; // for CF
d7d7e825 155
a0b94e5c 156
157
d7d7e825 158 AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class
a0b94e5c 159
d7d7e825 160 Bool_t fDoMCTruth; // Flag to switch on/off MC truth
6c84d371 161 Bool_t fDoNeutralMeson; // flag
162 Bool_t fDoJet; // flag
163 Bool_t fDoChic; // flag
a0b94e5c 164
6c84d371 165 TClonesArray * fKFReconstructedGammasTClone; //! transient
166 TClonesArray * fCurrentEventPosElectronTClone; //! transient
167 TClonesArray * fCurrentEventNegElectronTClone; //! transient
168 TClonesArray * fKFReconstructedGammasCutTClone; //! transient
169 TClonesArray * fPreviousEventTLVNegElectronTClone; //! transient
170 TClonesArray * fPreviousEventTLVPosElectronTClone; //! transient
a0b94e5c 171
6c84d371 172 // vector<AliKFParticle> fKFReconstructedGammas; // vector containing all reconstructed gammas
d7d7e825 173 vector<Int_t> fElectronv1; // vector containing index of electron 1
174 vector<Int_t> fElectronv2; // vector containing index of electron 2
a0b94e5c 175
d7d7e825 176 ///////Chi_c Analysis///////////////////////////
6c84d371 177 // vector<AliESDtrack*> fCurrentEventPosElectron; // comment here
178 // vector<AliESDtrack*> fCurrentEventNegElectron; // comment here
179 // vector<AliKFParticle> fKFReconstructedGammasCut; // comment here
180 // vector<TLorentzVector> fPreviousEventTLVNegElectron; // comment here
181 // vector<TLorentzVector> fPreviousEventTLVPosElectron; // comment here
d7d7e825 182 //////////////////////////////////////////////////
a0b94e5c 183
d7d7e825 184 //mass defines
185 Double_t fElectronMass; //electron mass
186 Double_t fGammaMass; //gamma mass
187 Double_t fPi0Mass; //pi0mass
188 Double_t fEtaMass; //eta mass
a0b94e5c 189
d7d7e825 190 // width defines
191 Double_t fGammaWidth; //gamma width cut
192 Double_t fPi0Width; // pi0 width cut
193 Double_t fEtaWidth; // eta width cut
a0b94e5c 194
d7d7e825 195 Double_t fMinOpeningAngleGhostCut; // minimum angle cut
a0b94e5c 196
d7d7e825 197 AliESDtrackCuts* fEsdTrackCuts; // Object containing the parameters of the esd track cuts
a0b94e5c 198
d7d7e825 199 Bool_t fCalculateBackground; //flag to set backgrount calculation on/off
200 Bool_t fWriteNtuple; // flag to set if writing to ntuple on/off
201 TNtuple *fGammaNtuple; // Ntuple for gamma values
202 TNtuple *fNeutralMesonNtuple;// NTuple for mesons
a0b94e5c 203
d7d7e825 204 Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries
a0b94e5c 205
6c84d371 206 TClonesArray* fChargedParticles; //! transient
207 vector<Int_t> fChargedParticlesId; //! transient
a0b94e5c 208
6c84d371 209 Double_t fGammaPtHighest; //! transient
210 Double_t fMinPtForGammaJet; //! transient
211 Double_t fMinIsoConeSize; //! transient
212 Double_t fMinPtIsoCone; //! transient
213 Double_t fMinPtGamChargedCorr; //! transient
214 Double_t fMinPtJetCone; //! transient
215 Int_t fLeadingChargedIndex; //! transient
1e7846f4 216 Double_t fLowPtMapping; //! transient
217 Double_t fHighPtMapping; //! transient
218 Bool_t fDoCF; //! transient
a0b94e5c 219
d7d7e825 220 TClonesArray* fAODBranch ; //! selected particles branch
221 TString fAODBranchName; // New AOD branch name
a0b94e5c 222
6c84d371 223 // TClonesArray *fAODObjects;
a0b94e5c 224
1e7846f4 225 ClassDef(AliAnalysisTaskGammaConversion, 5); // Analysis task for gamma conversions
d7d7e825 226};
a0b94e5c 227
d7d7e825 228#endif //ALIANALYSISTASKGAMMA_H