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 "AliCFManager.h" // for CF
17 //#include "AliCFContainer.h" // for CF
19 class AliGammaConversionAODObject;
21 class AliGammaConversionHistograms;
26 class AliESDInputHandler;
32 class AliESDtrackCuts;
33 class AliCFManager; // for CF
34 class AliCFContainer; // for CF
37 class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
41 AliAnalysisTaskGammaConversion();
42 AliAnalysisTaskGammaConversion(const char* name);
43 virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor
45 // Implementation of interface methods
46 virtual void UserCreateOutputObjects();
48 virtual void LocalInit() {Init();}
49 virtual void UserExec(Option_t *option);
50 virtual void Terminate(Option_t *option);
51 //virtual void ConnectInputData(Option_t * option);
54 void ProcessV0sNoCut();
56 void ProcessGammasForNeutralMesonAnalysis();
57 void ProcessGammasForOmegaMesonAnalysis();
58 void ProcessConvPHOSGammasForNeutralMesonAnalysis();
59 void RecalculateV0ForGamma();
61 void SetCFManager(AliCFManager * const io) {fCFManager = io;};
62 AliCFManager *GetCFManager() const {return fCFManager;}
66 TString GetAODBranchName() const {return fAODBranchName;}
67 void SetAODBranchName(TString name) {fAODBranchName = name ;}
68 void SetForceAOD(Bool_t forceAOD ) { fKFForceAOD = forceAOD; }
69 void FillAODWithConversionGammas();
72 static Bool_t IsGoodImpPar(AliESDtrack *const track);
74 // for GammaJetAnalysis
75 void ProcessGammasForGammaJetAnalysis();
76 void CreateListOfChargedParticles();
77 Double_t GetMinimumDistanceToCharge(Int_t indexHighestPtGamma);
78 void CalculateJetCone(Int_t gammaIndex);
79 Int_t GetIndexHighestPtGamma();
80 void SetESDtrackCuts();
83 void SetMinPtForGammaJet(Double_t minPtForGammaJet){fMinPtForGammaJet=minPtForGammaJet;}
84 void SetMinIsoConeSize(Double_t minIsoConeSize){fMinIsoConeSize=minIsoConeSize;}
85 void SetMinPtIsoCone(Double_t minPtIsoCone){fMinPtIsoCone=minPtIsoCone;}
86 void SetMinPtGamChargedCorr(Double_t minPtGamChargedCorr){fMinPtGamChargedCorr=minPtGamChargedCorr;}
87 void SetMinPtJetCone(Double_t minPtJetCone){fMinPtJetCone=minPtJetCone;}
89 void SetLowPtMapping(Double_t lowPtMapping){fLowPtMapping=lowPtMapping;}
90 void SetHighPtMapping(Double_t highPtMapping){fHighPtMapping=highPtMapping;}
93 void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}
94 void SetTriggerCINT1B(Bool_t flag){fTriggerCINT1B=flag;}
95 void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}
96 void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;}
97 void SetDoOmegaMeson(Bool_t flag){fDoOmegaMeson=flag;}
98 void SetDoNeutralMesonV0MCCheck(Bool_t flag){fDoNeutralMesonV0MCCheck=flag;}
99 void SetDoJet(Bool_t flag){fDoJet=flag;}
100 void SetDoChic(Bool_t flag){fDoChic=flag;}
101 void SetRecalculateV0ForGamma(Bool_t flag){fRecalculateV0ForGamma=flag;}
103 void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}
104 void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}
105 void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}
106 void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;}
107 void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;}
108 void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}
109 void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}
110 void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}
111 void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader; fV0Reader->SetESDtrackCuts(fEsdTrackCuts);}
112 void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}
113 void CalculateBackground();
114 void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}
116 Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;
117 void CheckV0Efficiency();
118 void SetDeltaAODFileName(TString fn) { fKFDeltaAODFileName = fn; };
120 //////////////////Chi_c Analysis////////////////////////////
121 void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight);
122 double GetSigmaToVertex(AliESDtrack* t);
123 void ElectronBackground(TString hBg, TClonesArray e);
124 void FillAngle(TString histoName,TClonesArray const tlVeNeg, TClonesArray const tlVePos);
125 void FillElectronInvMass(TString histoName, TClonesArray const negativeElectron, TClonesArray const positiveElectron);
126 void FillGammaElectronInvMass(TString histoMass,TString histoDiff, TClonesArray const fKFGammas, TClonesArray const tlVeNeg,TClonesArray const tlVePos);
127 void CleanWithAngleCuts(TClonesArray const negativeElectrons, TClonesArray const positiveElectrons, TClonesArray const gammas);
128 TClonesArray GetTLorentzVector(TClonesArray* esdTrack);
129 void ProcessGammaElectronsForChicAnalysis();
130 ///////////////////////////////////////////////////////////////
132 void SetDoCF(Bool_t flag){fDoCF = flag;}
135 AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
136 AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented
138 /// Add reconstructed pions to aod
139 void AddPionToAOD(AliKFParticle * pionkf, Double_t mass, Int_t daughter1, Int_t daughter2);
140 void AddOmegaToAOD(AliKFParticle * pionkf, Double_t mass, Int_t daughter1, Int_t daughter2);
145 kStepReconstructable = 1,
150 kStepdEdx_electronselection = 6,
151 kStepdEdx_pionrejection = 7,
152 kStepNContributors = 8,
166 AliV0Reader* fV0Reader; // The V0 reader object
168 AliStack * fStack; // pointer to the MC particle stack
169 AliMCEventHandler *fMCTruth; // for CF pointer to MCTruth
170 AliMCEvent *fGCMCEvent; // for CF pointer to the MC Event
171 AliESDEvent* fESDEvent; //pointer to the ESDEvent
172 TList * fOutputContainer; // Histogram container
173 AliCFManager *fCFManager; // for CF
174 // AliCFContainer *container; // for CF
178 AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class
179 Bool_t fTriggerCINT1B; //Flag to select trigger CINT1B
180 Bool_t fDoMCTruth; // Flag to switch on/off MC truth
181 Bool_t fDoNeutralMeson; // flag
182 Bool_t fDoOmegaMeson; // flag
183 Bool_t fDoJet; // flag
184 Bool_t fDoChic; // flag
185 Bool_t fRecalculateV0ForGamma;//flag
187 TClonesArray * fKFReconstructedGammasTClone; //! transient
188 TClonesArray * fKFReconstructedPi0sTClone; //! transient
189 TClonesArray * fKFRecalculatedGammasTClone; //! transient
190 TClonesArray * fCurrentEventPosElectronTClone; //! transient
191 TClonesArray * fCurrentEventNegElectronTClone; //! transient
192 TClonesArray * fKFReconstructedGammasCutTClone; //! transient
193 TClonesArray * fPreviousEventTLVNegElectronTClone; //! transient
194 TClonesArray * fPreviousEventTLVPosElectronTClone; //! transient
196 // vector<AliKFParticle> fKFReconstructedGammas; // vector containing all reconstructed gammas
197 vector<Int_t> fElectronv1; // vector containing index of electron 1
198 vector<Int_t> fElectronv2; // vector containing index of electron 2
200 vector<Int_t> fGammav1; // vector containing index of gamma 1
201 vector<Int_t> fGammav2; // vector containing index of gamma 2
203 vector<Int_t> fElectronRecalculatedv1; // vector containing index of electron 1
204 vector<Int_t> fElectronRecalculatedv2; // vector containing index of electron 2
206 // AliESDpid * fESDpid; // esd pid
209 ///////Chi_c Analysis///////////////////////////
210 // vector<AliESDtrack*> fCurrentEventPosElectron; // comment here
211 // vector<AliESDtrack*> fCurrentEventNegElectron; // comment here
212 // vector<AliKFParticle> fKFReconstructedGammasCut; // comment here
213 // vector<TLorentzVector> fPreviousEventTLVNegElectron; // comment here
214 // vector<TLorentzVector> fPreviousEventTLVPosElectron; // comment here
215 //////////////////////////////////////////////////
218 Double_t fElectronMass; //electron mass
219 Double_t fGammaMass; //gamma mass
220 Double_t fPi0Mass; //pi0mass
221 Double_t fEtaMass; //eta mass
224 Double_t fGammaWidth; //gamma width cut
225 Double_t fPi0Width; // pi0 width cut
226 Double_t fEtaWidth; // eta width cut
228 Double_t fMinOpeningAngleGhostCut; // minimum angle cut
230 AliESDtrackCuts* fEsdTrackCuts; // Object containing the parameters of the esd track cuts
232 Bool_t fCalculateBackground; //flag to set backgrount calculation on/off
233 Bool_t fWriteNtuple; // flag to set if writing to ntuple on/off
234 TNtuple *fGammaNtuple; // Ntuple for gamma values
235 TNtuple *fNeutralMesonNtuple;// NTuple for mesons
237 Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries
239 TClonesArray* fChargedParticles; //! transient
240 vector<Int_t> fChargedParticlesId; //! transient
242 Double_t fGammaPtHighest; //! transient
243 Double_t fMinPtForGammaJet; //! transient
244 Double_t fMinIsoConeSize; //! transient
245 Double_t fMinPtIsoCone; //! transient
246 Double_t fMinPtGamChargedCorr; //! transient
247 Double_t fMinPtJetCone; //! transient
248 Int_t fLeadingChargedIndex; //! transient
249 Double_t fLowPtMapping; //! transient
250 Double_t fHighPtMapping; //! transient
251 Bool_t fDoCF; //! transient
253 TClonesArray * fAODGamma; //TClonesArray for gammas to put in AOD
254 TClonesArray * fAODPi0; //TTClonesArray for Pi0s to put in AOD
255 TClonesArray * fAODOmega; //TTClonesArray for omegas to put in AOD
256 TString fAODBranchName; // New AOD branch name
257 Bool_t fKFForceAOD; //Set the Analysis Manager FillAOD variable to true every event
258 TString fKFDeltaAODFileName; //! File name for delta AOD (if any)
259 Bool_t fDoNeutralMesonV0MCCheck; //flag
261 vector<Int_t>fKFReconstructedGammasV0Index; // index of the reconstructed v0s
263 ClassDef(AliAnalysisTaskGammaConversion, 9); // Analysis task for gamma conversions
266 #endif //ALIANALYSISTASKGAMMA_H