1 #ifndef ALIANALYSISTASKNEUTRALMESONTOPIPLPIMIPIZERO_H
2 #define ALIANALYSISTASKNEUTRALMESONTOPIPLPIMIPIZERO_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
8 #include "AliAnalysisTaskSE.h"
9 #include "AliV0ReaderV1.h"
10 #include "AliKFConversionPhoton.h"
11 #include "AliPrimaryPionSelector.h"
12 #include "AliConversionMesonCuts.h"
13 #include "AliConvEventCuts.h"
14 #include "AliGammaConversionAODBGHandler.h"
15 #include "TProfile2D.h"
17 class AliESDInputHandler;
18 class AliMCEventHandler;
21 class AliESDtrackCuts;
24 class AliTriggerAnalysis;
26 class AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero: public AliAnalysisTaskSE
30 AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero();
31 AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero( const char* name );
32 virtual ~AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero();
34 virtual void UserExec(Option_t *);
35 virtual void UserCreateOutputObjects();
36 virtual Bool_t Notify();
37 virtual void Terminate(const Option_t *);
40 void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
42 void SetIsHeavyIon(Int_t flag){
43 if (flag == 1 || flag ==2 ){
50 void SetIsMC(Bool_t isMC){fIsMC=isMC;}
51 void SetConversionCutList(Int_t nCuts, TList *CutArray){
53 fGammaCutArray = CutArray;
55 void SetEventCutList(Int_t nCuts, TList *CutArray){
57 fEventCutArray = CutArray;
60 void SetPionCutList(TList *CutArray){
61 fPionCutArray = CutArray;
63 void SetNeutralPionCutList(TList *CutArray){
64 fNeutralPionMesonCutArray = CutArray;
66 void SetMesonCutList(TList *CutArray){
67 fMesonCutArray = CutArray;
69 void SetDoMesonQA(Bool_t flag){ fDoMesonQA = flag; }
75 void ProcessPhotonCandidates();
76 void ProcessTruePhotonCandidates(AliAODConversionPhoton*);
77 void ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionMother *TrueNeutralPionCandidate, AliAODConversionPhoton *TrueVirtualGammaCandidate);
78 void MoveParticleAccordingToVertex(AliAODConversionMother* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex);
79 void ProcessNeutralPionCandidatesPureConversions();
80 void ProcessTrueNeutralPionCandidatesPureConversions(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1);
81 void ProcessTrueNeutralPionCandidatesPureConversionsAOD(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1);
82 void ProcessPionCandidates();
83 void ProcessMCParticles();
84 void CalculateMesonCandidates();
85 void CalculateBackground();
86 void UpdateEventByEventData();
88 Bool_t IsPiPlPiMiPiZeroDecay(TParticle *fMCMother) const;
89 Bool_t IsEtaPiPlPiMiPiZeroDaughter( Int_t label ) const;
90 Bool_t IsOmegaPiPlPiMiPiZeroDaughter( Int_t label ) const;
91 Bool_t GammaIsNeutralMesonPiPlPiMiPiZeroDaughter( Int_t label ) const;
93 AliV0ReaderV1 *fV0Reader; //
94 AliPrimaryPionSelector *fPionSelector; //
95 AliGammaConversionAODBGHandler **fBGHandler; //
96 AliESDEvent *fESDEvent; //
97 AliMCEvent *fMCEvent; //
98 AliStack *fMCStack; //
99 TList **fCutFolder; //
101 TList **fBackList; //
102 TList **fMotherList; //
103 TList **fTrueList; //
105 TList *fOutputContainer; //
106 TClonesArray *fReaderGammas; //
107 vector<Int_t> fSelectorNegPionIndex; //
108 vector<Int_t> fSelectorPosPionIndex; //
109 TList *fGoodGammas; //
110 TList *fNeutralPionCandidates; //
111 TList *fGoodVirtualParticles; //
112 TList *fEventCutArray; //
113 TList *fGammaCutArray; //
114 TList *fPionCutArray; //
115 TList *fNeutralPionMesonCutArray; //
116 TList *fMesonCutArray; //
117 AliConvEventCuts *fEventCuts; //
118 AliConversionPhotonCuts *fConversionCuts; //
120 // reconstructed particles
121 TH1F **fHistoConvGammaPt; //
122 TH1F **fHistoConvGammaEta; //
123 TH1F **fHistoNegPionPt; //
124 TH1F **fHistoPosPionPt; //
125 TH1F **fHistoNegPionPhi; //
126 TH1F **fHistoPosPionPhi; //
127 TH1F **fHistoNegPionEta; //
128 TH1F **fHistoPosPionEta; //
129 TH2F **fHistoNegPionClsTPC; //
130 TH2F **fHistoPosPionClsTPC; //
131 TH2F **fHistoPionDCAxy; //
132 TH2F **fHistoPionDCAz; //
133 TH2F **fHistoPionTPCdEdxNSigma; //
134 TH2F **fHistoPionTPCdEdx; //
135 TH2F **fHistoPionPionInvMassPt; //
136 TH2F **fHistoGammaGammaInvMassPt; //
137 TH2F **fHistoMotherInvMassPt; //
138 THnSparseF **fTHnSparseMotherInvMassPtZM; //
139 TH2F **fHistoMotherBackInvMassPt; //
140 THnSparseF **fTHnSparseMotherBackInvMassPtZM; //
142 // pure MC properties
143 TH1F **fHistoMCAllGammaPt; //
144 TH1F **fHistoMCConvGammaPt; //
145 TH1F **fHistoMCAllPosPionsPt; //
146 TH1F **fHistoMCAllNegPionsPt; //
147 TH1F **fHistoMCGammaFromNeutralMesonPt; //
148 TH1F **fHistoMCPosPionsFromNeutralMesonPt; //
149 TH1F **fHistoMCNegPionsFromNeutralMesonPt; //
150 TH1F **fHistoMCEtaPiPlPiMiPiZeroPt; //
151 TH1F **fHistoMCEtaPiPlPiMiPiZeroInAccPt; //
152 TH1F **fHistoMCOmegaPiPlPiMiPiZeroPt; //
153 TH1F **fHistoMCOmegaPiPlPiMiPiZeroInAccPt; //
155 // reconstructed particles MC validated
156 TH2F **fHistoTrueMotherPiPlPiMiPiZeroInvMassPt; // histos with reconstructed validated eta or omega, inv mass, pT
157 TH2F **fHistoTrueMotherGammaGammaInvMassPt; // histos with reconstructed validated pi0, inv mass, pT
158 TH1F **fHistoTrueConvGammaPt; // histos with reconstructed validated gamma, pT
159 TH1F **fHistoTrueConvGammaFromNeutralMesonPt; // histos with reconstructed validated gamma from eta or omega via pi0, pT
160 TH1F **fHistoTruePosPionPt; // histos with reconstructed validated positive pion, pT
161 TH1F **fHistoTruePosPionFromNeutralMesonPt; // histos with reconstructed validated positive pion from eta or omega, pT
162 TH1F **fHistoTrueNegPionPt; // histos with reconstructed validated negative pion, pT
163 TH1F **fHistoTrueNegPionFromNeutralMesonPt; // histos with reconstructed validated negative pion from eta or omega, pT
164 TH2F **fHistoTruePionPionInvMassPt; // histos with reconstructed validated two pion, invariant mass, pT
165 TH2F **fHistoTruePionPionFromSameMotherInvMassPt;// histos with reconstructed validated two pion from same mother, invariant mass, pT
166 TH2F **fHistoTruePionPionFromNeutralMesonInvMassPt;// histos with reconstructed validated two pion from eta or omega, invariant mass, pT
168 TH1I **fHistoNEvents; // histo for event counting
169 TH1I **fHistoNGoodESDTracks; // histo number of reconstructed primary tracks
170 TProfile **fProfileEtaShift; // profile for eta shift bookkeeping
172 TRandom3 fRandom; // random number
173 Int_t fnCuts; // number of cuts to be run in parallel
174 Int_t fiCut; // current cut
175 Int_t fNumberOfESDTracks; // integer with number of primary tracks in this event
176 Bool_t fMoveParticleAccordingToVertex; // Flag to move parice to the vertex
177 Int_t fIsHeavyIon; // Flag for collision system 0: pp, 1: PbPb, 2: pPb
178 Bool_t fDoMesonAnalysis; // Flag for switching on meson analysis
179 Bool_t fDoMesonQA; // Flag for switching on small meson QA
180 Bool_t fIsFromMBHeader; // Flag for particle whether it belongs to accepted header
181 Bool_t fIsMC; // Flag for MC
184 AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero( const AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero& ); // Not implemented
185 AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero& operator=( const AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero& ); // Not implemented
187 ClassDef( AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero, 1 );
190 #endif // ALIANALYSISTASKNEUTRALMESONTOPIPLPIMIPIZERO_H