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