]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/GammaConv/AliAnalysisTaskGammaConversion.h
Add histo for Event Quality and pi0 spectra for different types of process, event...
[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"
5ce758b0 16#include "AliGammaConversionBGHandler.h"
111d75df 17#include "TRandom.h"
4a6157dc 18//#include "AliCFManager.h" // for CF
19//#include "AliCFContainer.h" // for CF
d7d7e825 20
4a6157dc 21class AliGammaConversionAODObject;
d7d7e825 22class TNtuple;
23class AliGammaConversionHistograms;
24class AliESDv0;
9c1cb6f7 25class AliV0;
d7d7e825 26class AliKFParticle;
9c1cb6f7 27class AliKFVertex;
d7d7e825 28class AliESDInputHandler;
29class AliESDEvent;
30class AliAODEvent;
a0b94e5c 31class AliMCEvent;
d7d7e825 32class TList;
33class AliStack;
34class AliESDtrackCuts;
a0b94e5c 35class AliCFManager; // for CF
36class AliCFContainer; // for CF
d7d7e825 37
38class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
39{
a0b94e5c 40
d7d7e825 41 public:
42 AliAnalysisTaskGammaConversion();
43 AliAnalysisTaskGammaConversion(const char* name);
44 virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor
a0b94e5c 45
d7d7e825 46 // Implementation of interface methods
47 virtual void UserCreateOutputObjects();
48 virtual void Init();
49 virtual void LocalInit() {Init();}
c00009fb 50 virtual void UserExec(Option_t *option);
d7d7e825 51 virtual void Terminate(Option_t *option);
48682642 52 //virtual void ConnectInputData(Option_t * option);
a0b94e5c 53
d7d7e825 54 void ProcessMCData();
55 void ProcessV0sNoCut();
56 void ProcessV0s();
57 void ProcessGammasForNeutralMesonAnalysis();
6272370b 58 void ProcessGammasForOmegaMesonAnalysis();
59 void ProcessConvPHOSGammasForNeutralMesonAnalysis();
9c1cb6f7 60 void RecalculateV0ForGamma();
a0b94e5c 61 // for CF
4a6157dc 62 void SetCFManager(AliCFManager * const io) {fCFManager = io;};
a0b94e5c 63 AliCFManager *GetCFManager() const {return fCFManager;}
64
65
d7d7e825 66 // AOD
67 TString GetAODBranchName() const {return fAODBranchName;}
68 void SetAODBranchName(TString name) {fAODBranchName = name ;}
d765d400 69 void SetForceAOD(Bool_t forceAOD ) { fKFForceAOD = forceAOD; }
d7d7e825 70 void FillAODWithConversionGammas();
71 // end AOD
a0b94e5c 72
6272370b 73 static Bool_t IsGoodImpPar(AliESDtrack *const track);
74
a0b94e5c 75 // for GammaJetAnalysis
d7d7e825 76 void ProcessGammasForGammaJetAnalysis();
77 void CreateListOfChargedParticles();
6c84d371 78 Double_t GetMinimumDistanceToCharge(Int_t indexHighestPtGamma);
79 void CalculateJetCone(Int_t gammaIndex);
d7d7e825 80 Int_t GetIndexHighestPtGamma();
81 void SetESDtrackCuts();
82 // end of Gamma Jet
a0b94e5c 83
d7d7e825 84 void SetMinPtForGammaJet(Double_t minPtForGammaJet){fMinPtForGammaJet=minPtForGammaJet;}
85 void SetMinIsoConeSize(Double_t minIsoConeSize){fMinIsoConeSize=minIsoConeSize;}
86 void SetMinPtIsoCone(Double_t minPtIsoCone){fMinPtIsoCone=minPtIsoCone;}
87 void SetMinPtGamChargedCorr(Double_t minPtGamChargedCorr){fMinPtGamChargedCorr=minPtGamChargedCorr;}
88 void SetMinPtJetCone(Double_t minPtJetCone){fMinPtJetCone=minPtJetCone;}
9640a3d1 89
90 void SetLowPtMapping(Double_t lowPtMapping){fLowPtMapping=lowPtMapping;}
91 void SetHighPtMapping(Double_t highPtMapping){fHighPtMapping=highPtMapping;}
92
a0b94e5c 93
d7d7e825 94 void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}
b5832f95 95 void SetTriggerCINT1B(Bool_t flag){fTriggerCINT1B=flag;}
d7d7e825 96 void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}
97 void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;}
6272370b 98 void SetDoOmegaMeson(Bool_t flag){fDoOmegaMeson=flag;}
037dc2db 99 void SetDoNeutralMesonV0MCCheck(Bool_t flag){fDoNeutralMesonV0MCCheck=flag;}
d7d7e825 100 void SetDoJet(Bool_t flag){fDoJet=flag;}
101 void SetDoChic(Bool_t flag){fDoChic=flag;}
9c1cb6f7 102 void SetRecalculateV0ForGamma(Bool_t flag){fRecalculateV0ForGamma=flag;}
103
d7d7e825 104 void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}
105 void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}
106 void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}
107 void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;}
108 void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;}
109 void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}
110 void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}
111 void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}
037dc2db 112 void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader; fV0Reader->SetESDtrackCuts(fEsdTrackCuts);}
d7d7e825 113 void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}
114 void CalculateBackground();
115 void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}
116 void FillNtuple();
117 Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;
118 void CheckV0Efficiency();
332f1f44 119 void SetDeltaAODFileName(TString fn) { fKFDeltaAODFileName = fn; };
a0b94e5c 120
d7d7e825 121 //////////////////Chi_c Analysis////////////////////////////
122 void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight);
123 double GetSigmaToVertex(AliESDtrack* t);
6c84d371 124 void ElectronBackground(TString hBg, TClonesArray e);
125 void FillAngle(TString histoName,TClonesArray const tlVeNeg, TClonesArray const tlVePos);
126 void FillElectronInvMass(TString histoName, TClonesArray const negativeElectron, TClonesArray const positiveElectron);
127 void FillGammaElectronInvMass(TString histoMass,TString histoDiff, TClonesArray const fKFGammas, TClonesArray const tlVeNeg,TClonesArray const tlVePos);
128 void CleanWithAngleCuts(TClonesArray const negativeElectrons, TClonesArray const positiveElectrons, TClonesArray const gammas);
129 TClonesArray GetTLorentzVector(TClonesArray* esdTrack);
d7d7e825 130 void ProcessGammaElectronsForChicAnalysis();
131 ///////////////////////////////////////////////////////////////
1e7846f4 132
133 void SetDoCF(Bool_t flag){fDoCF = flag;}
5ce758b0 134
135 void SetUseChargedTracksMultiplicityForBG(Bool_t flag){fUseTrackMultiplicityForBG = flag;}
136
137 void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
138
139 void MoveParticleAccordingToVertex(AliKFParticle *particle,AliGammaConversionBGHandler::GammaConversionVertex *vertex);
140
2e2da371 141 void SetApplyChi2Cut(Bool_t flag){fApplyChi2Cut = flag;}
142
111d75df 143 void SetDoRotation(Bool_t flag){fDoRotation = flag;}
144
145 void SetPMDegreesBG(Int_t deg){nDegreesPMBackground=deg;}
146
147 void SetNumberOfRotationsBG(Int_t nRot){nRandomEventsForBG=nRot;}
148
149 void RotateKFParticle(AliKFParticle * kfParticle,Double_t angle);
150
151 void SetCheckBGProbability(Bool_t flag){fCheckBGProbability = flag;}
152
d7d7e825 153 private:
154 AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
155 AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented
04bf4381 156
157 /// Add reconstructed pions to aod
158 void AddPionToAOD(AliKFParticle * pionkf, Double_t mass, Int_t daughter1, Int_t daughter2);
159 void AddOmegaToAOD(AliKFParticle * pionkf, Double_t mass, Int_t daughter1, Int_t daughter2);
a0b94e5c 160
4a6157dc 161 // for CF
162 enum{
163 kStepGenerated = 0,
164 kStepReconstructable = 1,
ebcfaa7e 165 kStepGetOnFly = 2,
166 kStepLikeSign = 3,
167 kStepTPCRefit = 4,
168 kStepKinks = 5,
169 kStepdEdx_electronselection = 6,
170 kStepdEdx_pionrejection = 7,
171 kStepNContributors = 8,
172 kStepTPCPID = 9,
173 kStepR = 10,
174 kStepLine = 11,
175 kStepZ = 12,
48682642 176 kStepMinClsTPC = 13,
177 kStepSinglePt = 14,
178 kStepNDF = 15,
179 kStepChi2 = 16,
180 kStepEta = 17,
181 kStepPt = 18,
182 kStepTrueGamma = 19
4a6157dc 183 };
26923b22 184
d7d7e825 185 AliV0Reader* fV0Reader; // The V0 reader object
a0b94e5c 186
d7d7e825 187 AliStack * fStack; // pointer to the MC particle stack
a0b94e5c 188 AliMCEventHandler *fMCTruth; // for CF pointer to MCTruth
4a6157dc 189 AliMCEvent *fGCMCEvent; // for CF pointer to the MC Event
d7d7e825 190 AliESDEvent* fESDEvent; //pointer to the ESDEvent
a0b94e5c 191 TList * fOutputContainer; // Histogram container
192 AliCFManager *fCFManager; // for CF
193 // AliCFContainer *container; // for CF
d7d7e825 194
a0b94e5c 195
196
d7d7e825 197 AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class
b5832f95 198 Bool_t fTriggerCINT1B; //Flag to select trigger CINT1B
d7d7e825 199 Bool_t fDoMCTruth; // Flag to switch on/off MC truth
6c84d371 200 Bool_t fDoNeutralMeson; // flag
6272370b 201 Bool_t fDoOmegaMeson; // flag
6c84d371 202 Bool_t fDoJet; // flag
203 Bool_t fDoChic; // flag
9c1cb6f7 204 Bool_t fRecalculateV0ForGamma;//flag
a0b94e5c 205
6c84d371 206 TClonesArray * fKFReconstructedGammasTClone; //! transient
6272370b 207 TClonesArray * fKFReconstructedPi0sTClone; //! transient
9c1cb6f7 208 TClonesArray * fKFRecalculatedGammasTClone; //! transient
6c84d371 209 TClonesArray * fCurrentEventPosElectronTClone; //! transient
210 TClonesArray * fCurrentEventNegElectronTClone; //! transient
211 TClonesArray * fKFReconstructedGammasCutTClone; //! transient
212 TClonesArray * fPreviousEventTLVNegElectronTClone; //! transient
213 TClonesArray * fPreviousEventTLVPosElectronTClone; //! transient
a0b94e5c 214
6c84d371 215 // vector<AliKFParticle> fKFReconstructedGammas; // vector containing all reconstructed gammas
d7d7e825 216 vector<Int_t> fElectronv1; // vector containing index of electron 1
217 vector<Int_t> fElectronv2; // vector containing index of electron 2
a0b94e5c 218
6272370b 219 vector<Int_t> fGammav1; // vector containing index of gamma 1
220 vector<Int_t> fGammav2; // vector containing index of gamma 2
9c1cb6f7 221
222 vector<Int_t> fElectronRecalculatedv1; // vector containing index of electron 1
223 vector<Int_t> fElectronRecalculatedv2; // vector containing index of electron 2
6272370b 224
9c1cb6f7 225 // AliESDpid * fESDpid; // esd pid
6272370b 226
227
d7d7e825 228 ///////Chi_c Analysis///////////////////////////
6c84d371 229 // vector<AliESDtrack*> fCurrentEventPosElectron; // comment here
230 // vector<AliESDtrack*> fCurrentEventNegElectron; // comment here
231 // vector<AliKFParticle> fKFReconstructedGammasCut; // comment here
232 // vector<TLorentzVector> fPreviousEventTLVNegElectron; // comment here
233 // vector<TLorentzVector> fPreviousEventTLVPosElectron; // comment here
d7d7e825 234 //////////////////////////////////////////////////
a0b94e5c 235
d7d7e825 236 //mass defines
237 Double_t fElectronMass; //electron mass
238 Double_t fGammaMass; //gamma mass
239 Double_t fPi0Mass; //pi0mass
240 Double_t fEtaMass; //eta mass
a0b94e5c 241
d7d7e825 242 // width defines
243 Double_t fGammaWidth; //gamma width cut
244 Double_t fPi0Width; // pi0 width cut
245 Double_t fEtaWidth; // eta width cut
a0b94e5c 246
d7d7e825 247 Double_t fMinOpeningAngleGhostCut; // minimum angle cut
a0b94e5c 248
d7d7e825 249 AliESDtrackCuts* fEsdTrackCuts; // Object containing the parameters of the esd track cuts
a0b94e5c 250
d7d7e825 251 Bool_t fCalculateBackground; //flag to set backgrount calculation on/off
252 Bool_t fWriteNtuple; // flag to set if writing to ntuple on/off
253 TNtuple *fGammaNtuple; // Ntuple for gamma values
254 TNtuple *fNeutralMesonNtuple;// NTuple for mesons
a0b94e5c 255
d7d7e825 256 Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries
a0b94e5c 257
6c84d371 258 TClonesArray* fChargedParticles; //! transient
259 vector<Int_t> fChargedParticlesId; //! transient
a0b94e5c 260
6c84d371 261 Double_t fGammaPtHighest; //! transient
262 Double_t fMinPtForGammaJet; //! transient
263 Double_t fMinIsoConeSize; //! transient
264 Double_t fMinPtIsoCone; //! transient
265 Double_t fMinPtGamChargedCorr; //! transient
266 Double_t fMinPtJetCone; //! transient
267 Int_t fLeadingChargedIndex; //! transient
1e7846f4 268 Double_t fLowPtMapping; //! transient
269 Double_t fHighPtMapping; //! transient
270 Bool_t fDoCF; //! transient
a0b94e5c 271
04bf4381 272 TClonesArray * fAODGamma; //TClonesArray for gammas to put in AOD
273 TClonesArray * fAODPi0; //TTClonesArray for Pi0s to put in AOD
274 TClonesArray * fAODOmega; //TTClonesArray for omegas to put in AOD
d7d7e825 275 TString fAODBranchName; // New AOD branch name
d765d400 276 Bool_t fKFForceAOD; //Set the Analysis Manager FillAOD variable to true every event
332f1f44 277 TString fKFDeltaAODFileName; //! File name for delta AOD (if any)
037dc2db 278 Bool_t fDoNeutralMesonV0MCCheck; //flag
5ce758b0 279 Bool_t fUseTrackMultiplicityForBG;
280 Bool_t fMoveParticleAccordingToVertex;
2e2da371 281 Bool_t fApplyChi2Cut;
111d75df 282 Int_t nRandomEventsForBG;
283 Int_t nDegreesPMBackground;
284 Bool_t fDoRotation;
285 Bool_t fCheckBGProbability;
037dc2db 286 vector<Int_t>fKFReconstructedGammasV0Index; // index of the reconstructed v0s
287
111d75df 288 ClassDef(AliAnalysisTaskGammaConversion, 12); // Analysis task for gamma conversions
d7d7e825 289};
a0b94e5c 290
d7d7e825 291#endif //ALIANALYSISTASKGAMMA_H