1 #ifndef ALIANALYSISTASKGAMMACONVERSION_H
2 #define ALIANALYSISTASKGAMMACONVERSION_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 ////////////////////////////////////////////////
8 //---------------------------------------------
9 // Class used to do analysis on conversion pairs
10 //---------------------------------------------
11 ////////////////////////////////////////////////
13 #include "AliAnalysisTaskSE.h"
15 #include "AliV0Reader.h"
16 #include "AliGammaConversionAODObject.h"
19 class AliGammaConversionHistograms;
22 class AliESDInputHandler;
28 class AliESDtrackCuts;
29 class AliCFManager; // for CF
30 class AliCFContainer; // for CF
32 class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
38 kStepReconstructable = 1,
43 kStepNContributors = 6,
58 AliAnalysisTaskGammaConversion();
59 AliAnalysisTaskGammaConversion(const char* name);
60 virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor
62 // Implementation of interface methods
63 virtual void UserCreateOutputObjects();
65 virtual void LocalInit() {Init();}
66 virtual void Exec(Option_t *option);
67 virtual void Terminate(Option_t *option);
68 virtual void ConnectInputData(Option_t *);
71 void ProcessV0sNoCut();
73 void ProcessGammasForNeutralMesonAnalysis();
76 void SetCFManager(AliCFManager *io) {fCFManager = io;};
77 AliCFManager *GetCFManager() const {return fCFManager;}
81 TString GetAODBranchName() const {return fAODBranchName;}
82 void SetAODBranchName(TString name) {fAODBranchName = name ;}
83 void FillAODWithConversionGammas();
87 // for GammaJetAnalysis
88 void ProcessGammasForGammaJetAnalysis();
89 void CreateListOfChargedParticles();
90 Double_t GetMinimumDistanceToCharge(Int_t indexHighestPtGamma);
91 void CalculateJetCone(Int_t gammaIndex);
92 Int_t GetIndexHighestPtGamma();
93 void SetESDtrackCuts();
96 void SetMinPtForGammaJet(Double_t minPtForGammaJet){fMinPtForGammaJet=minPtForGammaJet;}
97 void SetMinIsoConeSize(Double_t minIsoConeSize){fMinIsoConeSize=minIsoConeSize;}
98 void SetMinPtIsoCone(Double_t minPtIsoCone){fMinPtIsoCone=minPtIsoCone;}
99 void SetMinPtGamChargedCorr(Double_t minPtGamChargedCorr){fMinPtGamChargedCorr=minPtGamChargedCorr;}
100 void SetMinPtJetCone(Double_t minPtJetCone){fMinPtJetCone=minPtJetCone;}
102 void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}
103 void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}
104 void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;}
105 void SetDoJet(Bool_t flag){fDoJet=flag;}
106 void SetDoChic(Bool_t flag){fDoChic=flag;}
108 void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}
109 void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}
110 void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}
111 void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;}
112 void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;}
113 void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}
114 void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}
115 void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}
116 void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader;}
117 void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}
118 void CalculateBackground();
119 void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}
121 Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;
122 void CheckV0Efficiency();
125 //////////////////Chi_c Analysis////////////////////////////
126 void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight);
127 double GetSigmaToVertex(AliESDtrack* t);
128 void ElectronBackground(TString hBg, TClonesArray e);
129 void FillAngle(TString histoName,TClonesArray const tlVeNeg, TClonesArray const tlVePos);
130 void FillElectronInvMass(TString histoName, TClonesArray const negativeElectron, TClonesArray const positiveElectron);
131 void FillGammaElectronInvMass(TString histoMass,TString histoDiff, TClonesArray const fKFGammas, TClonesArray const tlVeNeg,TClonesArray const tlVePos);
132 void CleanWithAngleCuts(TClonesArray const negativeElectrons, TClonesArray const positiveElectrons, TClonesArray const gammas);
133 TClonesArray GetTLorentzVector(TClonesArray* esdTrack);
134 void ProcessGammaElectronsForChicAnalysis();
135 ///////////////////////////////////////////////////////////////
139 AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
140 AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented
142 AliV0Reader* fV0Reader; // The V0 reader object
144 AliStack * fStack; // pointer to the MC particle stack
145 AliMCEventHandler *fMCTruth; // for CF pointer to MCTruth
146 AliMCEvent *fMCEvent; // for CF pointer to the MC Event
147 AliESDEvent* fESDEvent; //pointer to the ESDEvent
148 TList * fOutputContainer; // Histogram container
149 AliCFManager *fCFManager; // for CF
150 // AliCFContainer *container; // for CF
154 AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class
156 Bool_t fDoMCTruth; // Flag to switch on/off MC truth
157 Bool_t fDoNeutralMeson; // flag
158 Bool_t fDoJet; // flag
159 Bool_t fDoChic; // flag
161 TClonesArray * fKFReconstructedGammasTClone; //! transient
162 TClonesArray * fCurrentEventPosElectronTClone; //! transient
163 TClonesArray * fCurrentEventNegElectronTClone; //! transient
164 TClonesArray * fKFReconstructedGammasCutTClone; //! transient
165 TClonesArray * fPreviousEventTLVNegElectronTClone; //! transient
166 TClonesArray * fPreviousEventTLVPosElectronTClone; //! transient
168 // vector<AliKFParticle> fKFReconstructedGammas; // vector containing all reconstructed gammas
169 vector<Int_t> fElectronv1; // vector containing index of electron 1
170 vector<Int_t> fElectronv2; // vector containing index of electron 2
172 ///////Chi_c Analysis///////////////////////////
173 // vector<AliESDtrack*> fCurrentEventPosElectron; // comment here
174 // vector<AliESDtrack*> fCurrentEventNegElectron; // comment here
175 // vector<AliKFParticle> fKFReconstructedGammasCut; // comment here
176 // vector<TLorentzVector> fPreviousEventTLVNegElectron; // comment here
177 // vector<TLorentzVector> fPreviousEventTLVPosElectron; // comment here
178 //////////////////////////////////////////////////
181 Double_t fElectronMass; //electron mass
182 Double_t fGammaMass; //gamma mass
183 Double_t fPi0Mass; //pi0mass
184 Double_t fEtaMass; //eta mass
187 Double_t fGammaWidth; //gamma width cut
188 Double_t fPi0Width; // pi0 width cut
189 Double_t fEtaWidth; // eta width cut
191 Double_t fMinOpeningAngleGhostCut; // minimum angle cut
193 AliESDtrackCuts* fEsdTrackCuts; // Object containing the parameters of the esd track cuts
195 Bool_t fCalculateBackground; //flag to set backgrount calculation on/off
196 Bool_t fWriteNtuple; // flag to set if writing to ntuple on/off
197 TNtuple *fGammaNtuple; // Ntuple for gamma values
198 TNtuple *fNeutralMesonNtuple;// NTuple for mesons
200 Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries
202 TClonesArray* fChargedParticles; //! transient
203 vector<Int_t> fChargedParticlesId; //! transient
205 Double_t fGammaPtHighest; //! transient
206 Double_t fMinPtForGammaJet; //! transient
207 Double_t fMinIsoConeSize; //! transient
208 Double_t fMinPtIsoCone; //! transient
209 Double_t fMinPtGamChargedCorr; //! transient
210 Double_t fMinPtJetCone; //! transient
211 Int_t fLeadingChargedIndex; //! transient
213 TClonesArray* fAODBranch ; //! selected particles branch
214 TString fAODBranchName; // New AOD branch name
216 // TClonesArray *fAODObjects;
218 ClassDef(AliAnalysisTaskGammaConversion, 4); // Analysis task for gamma conversions
221 #endif //ALIANALYSISTASKGAMMA_H