AliPhysics  421aab4 (421aab4)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero.h
Go to the documentation of this file.
1 
2 #ifndef ALIANALYSISTASKNEUTRALMESONTOPIPLPIMIPIZERO_H
3 #define ALIANALYSISTASKNEUTRALMESONTOPIPLPIMIPIZERO_H
4 
5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6  * See cxx source for full Copyright notice */
7 
8 
9 #include "AliAnalysisTaskSE.h"
10 #include "AliV0ReaderV1.h"
11 #include "AliKFConversionPhoton.h"
12 #include "AliPrimaryPionSelector.h"
13 #include "AliConversionMesonCuts.h"
14 #include "AliConvEventCuts.h"
15 #include "AliCaloPhotonCuts.h"
17 #include "TProfile2D.h"
18 #include <vector>
19 
20 class AliESDInputHandler;
21 class AliMCEventHandler;
22 class AliESDEvent;
23 class AliESDtrack;
24 class AliESDtrackCuts;
25 class AliESDpidCuts;
26 class AliTriggerAnalysis;
27 
29 {
30  public:
31 
35 
36  virtual void UserExec(Option_t *);
37  virtual void UserCreateOutputObjects();
38  virtual Bool_t Notify();
39  virtual void Terminate(const Option_t *);
40 
41  void SetV0ReaderName(TString name){fV0ReaderName=name; return;}
42 
44  void SetIsHeavyIon(Int_t flag){
45  if (flag == 1 || flag ==2 ){
46  fIsHeavyIon = 1;
47  } else {
48  fIsHeavyIon = 0;
49  }
50  }
51 
53  void SetEventCutList(Int_t nCuts, TList *CutArray){
54  fnCuts= nCuts;
55  fEventCutArray = CutArray;
56  }
57  void SetConversionCutList(TList *CutArray){ fGammaCutArray = CutArray;}
58  void SetClusterCutList(TList *CutArray){ fClusterCutArray = CutArray;}
59  void SetPionCutList(TList *CutArray){ fPionCutArray = CutArray;}
60  void SetNeutralPionCutList(TList *CutArray){ fNeutralPionMesonCutArray = CutArray; }
61  void SetMesonCutList(TList *CutArray){ fMesonCutArray = CutArray; }
62  void SetDoMesonQA(Bool_t flag){ fDoMesonQA = flag; }
65 
66  private:
67 
68  void InitBack();
69 
70  // routines for photon selection from conversions
73 
74  // routines for photon selection from clusters
77 
78  void ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionMother *TrueNeutralPionCandidate, AliAODConversionPhoton *TrueVirtualGammaCandidate);
80 
82 
83  // routines for neutral pion candidates from pure conversion
87 
88  // routines for neutral pion candidates from pure calo
90  void ProcessTrueNeutralPionCandidatesPureCalo(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1);
91 
92  // routines for neutral pion candidates from mixed conv + calo
94  void ProcessTrueNeutralPionCandidatesMixedConvCalo( AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1);
95 
96  void ProcessPionCandidates();
97  void ProcessMCParticles();
99  void CalculateBackground();
100  void UpdateEventByEventData();
101 
102  Bool_t IsPiPlPiMiPiZeroDecay(TParticle *fMCMother) const;
106 
107  Bool_t CheckVectorForDoubleCount(vector<Int_t> &vec, Int_t tobechecked);
108 
110 
111 
112  AliV0ReaderV1 *fV0Reader; // V0Reader for basic conversion photon selection
114  AliPrimaryPionSelector *fPionSelector; // primary charged pion selector, basic selection of pi+,pi-
117  AliESDEvent *fESDEvent; // current event
118  AliMCEvent *fMCEvent; // current MC event
119  TList **fCutFolder; // list of output folders with main cut name
120  TList **fESDList; // list with main output histograms for data
121 // TList **fBackList; // list with THnSparseF for BG
122 // TList **fMotherList; // list with THnSparseF for FG
123  TList **fTrueList; // list with validated reconstructed MC histograms
124  TList **fMCList; // list with pure MC histograms
125  TList *fOutputContainer; // output container
126  TClonesArray *fReaderGammas; // array with photon from fV0Reader
127  vector<Int_t> fSelectorNegPionIndex; // array with pion indices for negative pions from fPionSelector
128  vector<Int_t> fSelectorPosPionIndex; // array with pion indices for positive pions from fPionSelector
129  TList *fGoodConvGammas; // good conv gammas after selection
131  TList *fNeutralPionCandidates; // good neutral pion candidates
132  TList *fPosPionCandidates; // good positive pion candidates
133  TList *fNegPionCandidates; // good negative pion candidates
134  TList *fGoodVirtualParticles; // combination of pi+pi- candidates
135  TList *fEventCutArray; // array with event cuts
136  TList *fGammaCutArray; // array with Conversion Cuts
137  TList *fClusterCutArray; // array with Cluster Cuts
138  TList *fPionCutArray; // array with charged pion cuts
139  TList *fNeutralPionMesonCutArray; // array with neutral pion cuts
140  TList *fMesonCutArray; // array with neutral meson cuts
141  AliConvEventCuts *fEventCuts; // current event cuts
142  AliConversionPhotonCuts *fConversionCuts; // current conversion cuts
143  AliCaloPhotonCuts *fClusterCuts; // current cluster cuts
144 
145  // reconstructed particles
146  TH1F **fHistoConvGammaPt; // array of histos of conversion photon, pt
147  TH1F **fHistoConvGammaEta; // array of histos of conversion photon, eta
148  TH1F **fHistoClusterGammaPt; // array of histos of Cluster photon, pt
149  TH1F **fHistoClusterGammaEta; // array of histos of Cluster photon, eta
150  TH1F **fHistoNegPionPt; // array of histos of negative pion, pt
151  TH1F **fHistoPosPionPt; // array of histos of positive pion, pt
152  TH1F **fHistoNegPionPhi; // array of histos of negative pion, phi
153  TH1F **fHistoPosPionPhi; // array of histos of positive pion, phi
154  TH1F **fHistoNegPionEta; // array of histos of negative pion, eta
155  TH1F **fHistoPosPionEta; // array of histos of positive pion, eta
156  TH2F **fHistoNegPionClsTPC; // array of histos of negative pion, findable tpc cluster, pT
157  TH2F **fHistoPosPionClsTPC; // array of histos of positive pion, findable tpc cluster, pT
158  TH2F **fHistoPionDCAxy; // array of histos of pion, dca_xy, pT
159  TH2F **fHistoPionDCAz; // array of histos of pion, dca_z, pT
160  TH2F **fHistoPionTPCdEdxNSigma; // array of histos of pion, p, TPC nSigma dEdx pion
161  TH2F **fHistoPionTPCdEdx; // array of histos of pion, p, TPC dEdx
162  TH2F **fHistoPionPionInvMassPt; // array of histos of pion pion, invMass, pT_{pi+pi-}
163  TH2F **fHistoGammaGammaInvMassPt; // array of histos of gamma-gamma, invMass, pT_{gamma gamma}
164  TH2F **fHistoMotherInvMassPt; // array of histos of pi+pi-pi0 same event, invMass, pT_{pi+pi-pi0}
165  TH2F **fHistoMotherInvMassPtRejectedKinematic; // array of histos of rejected pi+pi-pi0 same event, invMass, pT_{pi+pi-pi0}
166 // THnSparseF **fTHnSparseMotherInvMassPtZM; // array of THnSparseF of pi+pi-pi0 same event, invMass, pT_{pi+pi-pi0}, Z, M
167  TH2F **fHistoMotherSameDiff1Diff2BackInvMassPt; // array of histos of pi+pi-pi0 mixed event, invMass, pT_{pi+pi-pi0}
168  TH2F **fHistoMotherSameDiff1Diff1BackInvMassPt; // array of histos of pi+pi-pi0 mixed event, invMass, pT_{pi+pi-pi0}
169  TH2F **fHistoMotherSameSameDiff2BackInvMassPt; // array of histos of pi+pi-pi0 mixed event, invMass, pT_{pi+pi-pi0}
170  TH2F **fHistoMotherSameDiff1SameBackInvMassPt; // array of histos of pi+pi-pi0 mixed event, invMass, pT_{pi+pi-pi0}
171 // THnSparseF **fTHnSparseMotherBackInvMassPtZM; // array of THnSparseF of pi+pi-pi0 mixed event, invMass, pT_{pi+pi-pi0}, Z, M
172 
173  TH2F **fHistoMotherInvMassSubPi0; // invariant mass of (pi+,pi-,pi0) - invariant mass of pi0
174  TH2F **fHistoMotherSameDiff1Diff2BackInvMassSubPi0Pt; // array of histos of pi+pi-pi0 mixed event, invMass-invMass(pi0), pT_{pi+pi-pi0}
175  TH2F **fHistoMotherSameDiff1Diff1BackInvMassSubPi0Pt; // array of histos of pi+pi-pi0 mixed event, invMass-invMass(pi0), pT_{pi+pi-pi0}
176  TH2F **fHistoMotherSameSameDiff2BackInvMassSubPi0Pt; // array of histos of pi+pi-pi0 mixed event, invMass-invMass(pi0), pT_{pi+pi-pi0}
177  TH2F **fHistoMotherSameDiff1SameBackInvMassSubPi0Pt; // array of histos of pi+pi-pi0 mixed event, invMass-invMass(pi0), pT_{pi+pi-pi0}
178 
179  TH2F **fHistoMotherInvMassFixedPzPi0; // invariant mass of (pi+,pi-,pi0) - invariant mass of pi0
180  TH2F **fHistoMotherSameDiff1Diff2BackInvMassFixedPzPi0Pt; // array of histos of pi+pi-pi0 mixed event, invMass, pT_{pi+pi-pi0}, the Pz of the pi0 was fixed such that its invMass matches the PDG value
181  TH2F **fHistoMotherSameDiff1Diff1BackInvMassFixedPzPi0Pt; // array of histos of pi+pi-pi0 mixed event, invMass, pT_{pi+pi-pi0}, the Pz of the pi0 was fixed such that its invMass matches the PDG value
182  TH2F **fHistoMotherSameSameDiff2BackInvMassFixedPzPi0Pt; // array of histos of pi+pi-pi0 mixed event, invMass, pT_{pi+pi-pi0}, the Pz of the pi0 was fixed such that its invMass matches the PDG value
183  TH2F **fHistoMotherSameDiff1SameBackInvMassFixedPzPi0Pt; // array of histos of pi+pi-pi0 mixed event, invMass, pT_{pi+pi-pi0}, the Pz of the pi0 was fixed such that its invMass matches the PDG value
184 
185 
186  // angle distributions
187  TH2F **fHistoAngleOmegaPiPlPiMi; // angle between combined Pi+ and Pi- and omega
188  TH2F **fHistoAngleOmegaPiZero; // angle between Pi0 and omega
189  TH2F **fHistoAngleOmegaPiPl; // angle between Pi+ and omega
190  TH2F **fHistoAngleOmegaPiMi; // angle between Pi- and omega
191  TH2F **fHistoAnglePiPlPiMi; // angle between Pi+ and Pi-
192  TH2F **fHistoAnglePiZeroPiMi; // angle between Pi0 and Pi-
193  TH2F **fHistoAnglePiPlPiZero; // angle between Pi+ and Pi0
194  TH2F **fHistoAngleSum; // angle between omega and Pi0 + angle between Pi+ and Pi- + angle between Pi0 and Pi-
196 
197  // pure MC properties
198  TH1F **fHistoMCAllGammaPt; // array of histos of all produced gammas in the specified y range
199  TH1F **fHistoMCConvGammaPt; // array of histos of all converted gammas in the specified y range
200  TH1F **fHistoMCAllPosPionsPt; // array of histos with all produced primary positive pions in the specified y range
201  TH1F **fHistoMCAllNegPionsPt; // array of histos with all produced primary negative pions in the specified y range
202  TH1F **fHistoMCGammaFromNeutralMesonPt; // array of histos of all produced gammas from omega or eta via pi+pi-pi0 in the specified y range/
203  TH1F **fHistoMCPosPionsFromNeutralMesonPt; // array of histos of all produced positive pions from omega or eta via pi+pi-pi0 in the specified y range/
204  TH1F **fHistoMCNegPionsFromNeutralMesonPt; // array of histos of all produced negative pions from omega or eta via pi+pi-pi0 in the specified y range/
205  TH1F **fHistoMCEtaPiPlPiMiPiZeroPt; // array of histos of produced etas via pi+pi-pi0 in the specified y range
206  TH1F **fHistoMCEtaPiPlPiMiPiZeroInAccPt; // array of histos of produced etas via pi+pi-pi0 in the specified y range, with decay products in respective y, eta ranges
207  TH1F **fHistoMCOmegaPiPlPiMiPiZeroPt; // array of histos of produced omegas via pi+pi-pi0 in the specified y range
208  TH1F **fHistoMCOmegaPiPlPiMiPiZeroInAccPt; // array of histos of produced omegas via pi+pi-pi0 in the specified y range, with decay products in respective y, eta ranges
209 
210  // reconstructed particles MC validated
211  TH2F **fHistoTrueMotherPiPlPiMiPiZeroInvMassPt; // histos with reconstructed validated eta or omega, inv mass, pT
212  TH2F **fHistoTrueMotherGammaGammaInvMassPt; // histos with reconstructed validated pi0, inv mass, pT
213  TH2F **fHistoTrueMotherGammaGammaFromEtaInvMassPt; // histos with reconstructed validated pi0, inv mass, pT
214  TH2F **fHistoTrueMotherGammaGammaFromOmegaInvMassPt; // histos with reconstructed validated pi0, inv mass, pT
215  TH1F **fHistoTrueConvGammaPt; // histos with reconstructed validated conv gamma, pT
216  TH1F **fHistoTrueConvGammaFromNeutralMesonPt; // histos with reconstructed validated conv gamma from eta or omega via pi0, pT
217  TH1F **fHistoTrueClusterGammaPt; // histos with reconstructed validated cluster gamma, pT
218  TH1F **fHistoTrueClusterGammaFromNeutralMesonPt; // histos with reconstructed validated cluster gamma from eta or omega via pi0, pT
219  TH1F **fHistoTruePosPionPt; // histos with reconstructed validated positive pion, pT
220  TH1F **fHistoTruePosPionFromNeutralMesonPt; // histos with reconstructed validated positive pion from eta or omega, pT
221  TH1F **fHistoTrueNegPionPt; // histos with reconstructed validated negative pion, pT
222  TH1F **fHistoTrueNegPionFromNeutralMesonPt; // histos with reconstructed validated negative pion from eta or omega, pT
223  TH2F **fHistoTruePionPionInvMassPt; // histos with reconstructed validated two pion, invariant mass, pT
224  TH2F **fHistoTruePionPionFromSameMotherInvMassPt;// histos with reconstructed validated two pion from same mother, invariant mass, pT
225  TH2F **fHistoTruePionPionFromEtaInvMassPt; // histos with reconstructed validated two pion from eta , invariant mass, pT
226  TH2F **fHistoTruePionPionFromOmegaInvMassPt; // histos with reconstructed validated two pion from omega, invariant mass, pT
235  // Event properties
236  TH1I **fHistoNEvents; // histo for event counting
237  TH1I **fHistoNGoodESDTracks; // histo number of reconstructed primary tracks
238  TProfile **fProfileEtaShift; // profile for eta shift bookkeeping
240 
241 
242  TRandom3 fRandom; // random number
243  Int_t fnCuts; // number of cuts to be run in parallel
244  Int_t fiCut; // current cut
245  Int_t fNumberOfESDTracks; // integer with number of primary tracks in this event
246  Bool_t fMoveParticleAccordingToVertex; // Flag to move parice to the vertex
247  Int_t fIsHeavyIon; // Flag for collision system 0: pp, 1: PbPb, 2: pPb
248  Bool_t fDoMesonAnalysis; // Flag for switching on meson analysis
249  Bool_t fDoMesonQA; // Flag for switching on small meson QA
250  Bool_t fIsFromMBHeader; // Flag for particle whether it belongs to accepted header
251  Bool_t fIsMC; // Flag for MC
252  Int_t fNeutralPionMode; // Flag how neutral pion is reconstructed 0=PCM-PCM, 1=PCM-Calo, 2=Calo-Calo
253  Double_t fTolerance; // tolerance in rad for angle cuts
254 
255  private:
258 
260 };
261 
262 #endif // ALIANALYSISTASKNEUTRALMESONTOPIPLPIMIPIZERO_H
263 
AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero & operator=(const AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero &)
void ProcessTrueNeutralPionCandidatesPureCalo(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)
double Double_t
Definition: External.C:58
vector< Int_t > fVectorDoubleCountTruePi0s
array of histos with double counted photons, R, pT
Definition: External.C:236
vector< Int_t > fVectorDoubleCountTrueOmegas
vector containing labels of validated eta
vector< Int_t > fVectorDoubleCountTrueEtas
vector containing labels of validated pi0
void ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionMother *TrueNeutralPionCandidate, AliAODConversionPhoton *TrueVirtualGammaCandidate)
int Int_t
Definition: External.C:63
Class handling all kinds of selection cuts for Gamma Calo analysis.
Definition: External.C:204
void ProcessTrueCaloPhotonCandidates(AliAODConversionPhoton *TruePhotonCandidate)
TRandom3 fRandom
array of histos with SPD tracklets vs SPD clusters for background rejection
TH1I ** fHistoNEvents
vector containing labels of validated photons
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH2F ** fHistoDoubleCountTrueConvGammaRPt
array of histos with double counted omegas, invMass, pT
Int_t mode
Definition: anaM.C:41
void ProcessTrueNeutralPionCandidatesPureConversions(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)
Bool_t isMC
vector< Int_t > fVectorDoubleCountTrueConvGammas
vector containing labels of validated omega
TH2F ** fHistoDoubleCountTrueEtaInvMassPt
array of histos with double counted pi0s, invMass, pT
TH2F ** fHistoDoubleCountTrueOmegaInvMassPt
array of histos with double counted etas, invMass, pT
Bool_t KinematicCut(AliAODConversionMother *negpion, AliAODConversionMother *pospion, AliAODConversionMother *neutpion, AliAODConversionMother *omega)
Class handling all kinds of selection cuts for Gamma Conversion analysis.
const char Option_t
Definition: External.C:48
void MoveParticleAccordingToVertex(AliAODConversionMother *particle, const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex)
bool Bool_t
Definition: External.C:53
void ProcessTrueNeutralPionCandidatesMixedConvCalo(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)
ClassDef(AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero, 13)
Bool_t CheckVectorForDoubleCount(vector< Int_t > &vec, Int_t tobechecked)
void ProcessTrueNeutralPionCandidatesPureConversionsAOD(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1)