]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/EMCALTasks/AliAnalysisTaskEMCALPi0PbPb.h
revert mistake
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / AliAnalysisTaskEMCALPi0PbPb.h
CommitLineData
6bf90832 1#ifndef AliAnalysisTaskEMCALPi0PbPb_h
2#define AliAnalysisTaskEMCALPi0PbPb_h
ea3fd2d5 3
4// $Id$
5
fa443410 6class TAxis;
f5d4ab70 7class TClonesArray;
296ea9b4 8class TH1;
9class TH2;
f5d4ab70 10class TNtuple;
717fe7de 11class TObjArray;
12class AliAODCaloCells;
13class AliAODCaloCluster;
ea3fd2d5 14class AliAODEvent;
296ea9b4 15class AliAODTrack;
788ca675 16class AliAODVertex;
2ef5608f 17class AliEMCALGeometry;
296ea9b4 18class AliEMCALRecoUtils;
717fe7de 19class AliESDCaloCells;
ea3fd2d5 20class AliESDCaloCluster;
717fe7de 21class AliESDEvent;
0ec74551 22class AliESDTrack;
788ca675 23class AliESDVertex;
0ec74551 24class AliESDtrackCuts;
807016ea 25class AliMCEvent;
38727e64 26class AliMCParticle;
788ca675 27class AliStaHeader;
28class AliStaVertex;
ea3fd2d5 29
30#include "AliAnalysisTaskSE.h"
d02977ee 31#include "AliStaObjects.h"
ea3fd2d5 32
33class AliAnalysisTaskEMCALPi0PbPb : public AliAnalysisTaskSE {
34 public:
4ea96211 35 AliAnalysisTaskEMCALPi0PbPb();
36 AliAnalysisTaskEMCALPi0PbPb(const char *name);
ea3fd2d5 37 virtual ~AliAnalysisTaskEMCALPi0PbPb();
38
286b47a5 39 void UserCreateOutputObjects();
40 void UserExec(Option_t *option);
41 void Terminate(Option_t *);
717fe7de 42
b6c599fe 43 void SetAsymMax(Double_t asymMax) { fAsymMax = asymMax; }
44 void SetCentrality(const char *n) { fCentVar = n; }
286b47a5 45 void SetCentralityRange(Double_t from, Double_t to) { fCentFrom=from; fCentTo=to; }
b6c599fe 46 void SetClusName(const char *n) { fClusName = n; }
a49742b5 47 void SetDoAfterburner(Bool_t b) { fDoAfterburner = b; }
469b2bff 48 void SetDoPhysicsSelection(Bool_t b) { fDoPSel = b; }
b6c599fe 49 void SetDoTrackMatWithGeom(Bool_t b) { fDoTrMatGeom = b; }
469b2bff 50 void SetEmbedMode(Bool_t b) { fEmbedMode = b; }
b6c599fe 51 void SetFillNtuple(Bool_t b) { fDoNtuple = b; }
52 void SetGeoName(const char *n) { fGeoName = n; }
2ef5608f 53 void SetGeoUtils(AliEMCALGeometry *geo) { fGeom = geo; }
b6c599fe 54 void SetIsoDist(Double_t d) { fIsoDist = d; }
38727e64 55 void SetL0TimeRange(Int_t l, Int_t h) { fMinL0Time=l; fMaxL0Time=h; }
3a952328 56 void SetMarkCells(const char *n) { fMarkCells = n; }
38727e64 57 void SetMcMode(Bool_t b) { fMcMode = b; }
b6c599fe 58 void SetMinClusEnergy(Double_t e) { fMinE = e; }
59 void SetMinEcc(Double_t ecc) { fMinEcc = ecc; }
60 void SetMinErat(Double_t erat) { fMinErat = erat; }
3a952328 61 void SetMinNClustersPerTrack(Double_t m) { fMinNClusPerTr = m; }
b6c599fe 62 void SetNminCells(Int_t n) { fNminCells = n; }
3a952328 63 void SetPrimTrackCuts(AliESDtrackCuts *c) { fPrimTrCuts = c; }
e0e1022c 64 void SetPrimTracksName(const char *n) { fPrimTracksName = n; }
38727e64 65 void SetRecoUtils(AliEMCALRecoUtils *reco) { fReco = reco; }
b6c599fe 66 void SetTrClassNames(const char *n) { fTrClassNames = n; }
67 void SetTrackCuts(AliESDtrackCuts *c) { fTrCuts = c; }
3a952328 68 void SetTrainMode(Bool_t b) { fTrainMode = b; }
469b2bff 69 void SetTrigName(const char *n) { fTrigName = n; }
b6c599fe 70 void SetUseQualFlag(Bool_t b) { fUseQualFlag = b; }
d595acbb 71 void SetVertexRange(Double_t z1, Double_t z2) { fVtxZMin=z1; fVtxZMax=z2; }
717fe7de 72
73 protected:
38727e64 74 virtual void CalcCaloTriggers();
296ea9b4 75 virtual void CalcClusterProps();
b6c599fe 76 virtual void CalcPrimTracks();
38727e64 77 virtual void CalcMcInfo();
3a952328 78 virtual void CalcTracks();
323834f0 79 virtual void ClusterAfterburner();
76332037 80 virtual void FillCellHists();
81 virtual void FillClusHists();
788ca675 82 virtual void FillNtuple();
323834f0 83 virtual void FillOtherHists();
788ca675 84 virtual void FillPionHists();
38727e64 85 virtual void FillMcHists();
f5e0f1e2 86 virtual void FillTrackHists();
788ca675 87 void FillVertex(AliStaVertex *v, const AliESDVertex *esdv);
88 void FillVertex(AliStaVertex *v, const AliAODVertex *aodv);
0fbe8d4f 89 Double_t GetCellIsolation(Double_t cEta, Double_t cPhi, Double_t radius=0.2) const;
5fc7508c 90 Double_t GetCellIsoNxM(Double_t cEta, Double_t cPhi, Int_t N, Int_t M) const;
0fbe8d4f 91 Double_t GetCellEnergy(const AliVCluster *c) const;
92 Double_t GetMaxCellEnergy(const AliVCluster *c) const { Short_t id=-1; return GetMaxCellEnergy(c,id); }
93 Double_t GetMaxCellEnergy(const AliVCluster *c, Short_t &id) const;
1f41ed3d 94 Double_t GetSecondMaxCellEnergy(AliVCluster *clus, Short_t &id) const;
0fbe8d4f 95 Int_t GetNCells(const AliVCluster *c, Double_t emin=0.) const;
2ee7bda4 96 Int_t GetNCells(Int_t sm, Double_t emin=0.) const;
0fbe8d4f 97 void GetSigma(const AliVCluster *c, Double_t &sigmaMax, Double_t &sigmaMin) const;
5fc7508c 98 void GetSigmaEtaEta(const AliVCluster *c, Double_t &sigmaEtaEta, Double_t &sigmaPhiPhi) const;
0fbe8d4f 99 Double_t GetTrackIsolation(Double_t cEta, Double_t cPhi, Double_t radius=0.2, Double_t pt=0.) const;
5fc7508c 100 Double_t GetTrackIsoStrip(Double_t cEta, Double_t cPhi, Double_t dEta=0.015, Double_t dPhi=0.3, Double_t pt=0.) const;
0fbe8d4f 101 Bool_t IsShared(const AliVCluster *c) const;
2ee7bda4 102 Bool_t IsIdPartOfCluster(const AliVCluster *c, Short_t id) const;
807016ea 103 void PrintDaughters(const AliVParticle *p, const TObjArray *arr, Int_t level=0) const;
104 void PrintDaughters(const AliMCParticle *p, const AliMCEvent *arr, Int_t level=0) const;
38727e64 105 void PrintTrackRefs(AliMCParticle *p) const;
807016ea 106 void ProcessDaughters(AliVParticle *p, Int_t index, const TObjArray *arr);
107 void ProcessDaughters(AliMCParticle *p, Int_t index, const AliMCEvent *arr);
286b47a5 108
717fe7de 109 // input members
6eb6260e 110 TString fCentVar; // variable for centrality determination
111 Double_t fCentFrom; // min centrality (def=0)
112 Double_t fCentTo; // max centrality (def=100)
113 Double_t fVtxZMin; // min primary vertex z (def=-10cm)
114 Double_t fVtxZMax; // max primary vertex z (def=+10cm)
115 Bool_t fUseQualFlag; // if true use quality flag for centrality
116 TString fClusName; // cluster branch name (def="")
117 Bool_t fDoNtuple; // if true write out ntuple
a49742b5 118 Bool_t fDoAfterburner; // if true run after burner
f224d35b 119 Double_t fAsymMax; // maximum energy asymmetry (def=1)
120 Int_t fNminCells; // minimum number of cells attached to cluster (def=1)
296ea9b4 121 Double_t fMinE; // minimum cluster energy (def=0.1 GeV/c)
f224d35b 122 Double_t fMinErat; // minimum emax/ec ratio (def=0)
123 Double_t fMinEcc; // minimum eccentricity (def=0)
6bf90832 124 TString fGeoName; // geometry name (def = EMCAL_FIRSTYEARV1)
b6c599fe 125 Double_t fMinNClusPerTr; // minimum number of cluster per track (def=50)
296ea9b4 126 Double_t fIsoDist; // isolation distance (def=0.2)
b3ee6797 127 TString fTrClassNames; // trigger class names
128 AliESDtrackCuts *fTrCuts; // track cuts
3a952328 129 AliESDtrackCuts *fPrimTrCuts; // track cuts
e0e1022c 130 TString fPrimTracksName; // name of track collection (if "" use branch)
b6c599fe 131 Bool_t fDoTrMatGeom; // track matching including geometry
3a952328 132 Bool_t fTrainMode; // train mode with minimal number of resources
133 TString fMarkCells; // list of mark cells to monitor
134 Int_t fMinL0Time; // minimum accepted time for trigger
135 Int_t fMaxL0Time; // maximum accepted time for trigger
38727e64 136 Bool_t fMcMode; // monte carlo mode
cfd7d5b2 137 Bool_t fEmbedMode; // embedding mode
2ef5608f 138 AliEMCALGeometry *fGeom; // geometry utils
38727e64 139 AliEMCALRecoUtils *fReco; // reco utils
2ee7bda4 140 TString fTrigName; // trigger name
807016ea 141 Bool_t fDoPSel; // if false then accept all events
f5d4ab70 142 // derived members (ie with ! after //)
27c2e3d9 143 Bool_t fIsGeoMatsSet; //!indicate that geo matrices are set
d9f26424 144 ULong64_t fNEvs; //!accepted events
6eb6260e 145 TList *fOutput; //!container of output histograms
b3ee6797 146 TObjArray *fTrClassNamesArr; //!array of trig class names
6eb6260e 147 AliESDEvent *fEsdEv; //!pointer to input esd event
148 AliAODEvent *fAodEv; //!pointer to input aod event
a2de5ca1 149 const TObjArray *fRecPoints; //!pointer to rec points (AliAnalysisTaskEMCALClusterizeFast)
150 const TClonesArray *fDigits; //!pointer to digits (AliAnalysisTaskEMCALClusterizeFast)
6eb6260e 151 TObjArray *fEsdClusters; //!pointer to esd clusters
152 AliESDCaloCells *fEsdCells; //!pointer to esd cells
153 TObjArray *fAodClusters; //!pointer to aod clusters
154 AliAODCaloCells *fAodCells; //!pointer to aod cells
155 TAxis *fPtRanges; //!pointer to pt ranges
296ea9b4 156 TObjArray *fSelTracks; //!pointer to selected tracks
3a952328 157 TObjArray *fSelPrimTracks; //!pointer to selected primary tracks
788ca675 158 // ntuple
159 TTree *fNtuple; //!pointer to ntuple
160 AliStaHeader *fHeader; //!pointer to header
161 AliStaVertex *fPrimVert; //!pointer to primary vertex
162 AliStaVertex *fSpdVert; //!pointer to SPD vertex
163 AliStaVertex *fTpcVert; //!pointer to TPC vertex
164 TClonesArray *fClusters; //!pointer to clusters
3a952328 165 TClonesArray *fTriggers; //!pointer to triggers
807016ea 166 TClonesArray *fMcParts; //!pointer to mc particles
717fe7de 167 // histograms
296ea9b4 168 TH1 *fHCuts; //!histo for cuts
169 TH1 *fHVertexZ; //!histo for vtxz
170 TH1 *fHVertexZ2; //!histo for vtxz after vtx cuts
171 TH1 *fHCent; //!histo for cent
172 TH1 *fHCentQual; //!histo for cent after quality flag cut
b3ee6797 173 TH1 *fHTclsBeforeCuts; //!histo for trigger classes before cuts
174 TH1 *fHTclsAfterCuts; //!histo for trigger classes after cuts
175
d595acbb 176 // histograms for cells
296ea9b4 177 TH2 **fHColuRow; //!histo for cell column and row
178 TH2 **fHColuRowE; //!histo for cell column and row weight energy
179 TH1 **fHCellMult; //!histo for cell multiplicity in module
180 TH1 *fHCellE; //!histo for cell energy
181 TH1 *fHCellH; //!histo for highest cell energy
182 TH1 *fHCellM; //!histo for mean cell energy (normalized to hit cells)
183 TH1 *fHCellM2; //!histo for mean cell energy (normalized to all cells)
184 TH1 **fHCellFreqNoCut; //!histo for cell frequency without cut
2e4d8148 185 TH1 **fHCellFreqCut100M; //!histo for cell frequency with cut 100MeV
186 TH1 **fHCellFreqCut300M; //!histo for cell frequency with cut 300MeV
187 TH1 **fHCellFreqE; //!histo for cell frequency weighted with energy
296ea9b4 188 TH1 **fHCellCheckE; //!histo for cell E distribution for given channels
fa443410 189 // histograms for clusters
296ea9b4 190 TH1 *fHClustEccentricity; //!histo for cluster eccentricity
191 TH2 *fHClustEtaPhi; //!histo for cluster eta vs. phi
192 TH2 *fHClustEnergyPt; //!histo for cluster energy vs. pT
193 TH2 *fHClustEnergySigma; //!histo for cluster energy vs. variance over long axis
194 TH2 *fHClustSigmaSigma; //!histo for sigma vs. lambda_0 comparison
f5e0f1e2 195 TH2 *fHClustNCellEnergyRatio; //!histo for cluster n cells vs. energy ratio
196 TH2 *fHClustEnergyNCell; //!histo for cluster energy vs. cluster n cells
197 // histograms for primary tracks
198 TH1 *fHPrimTrackPt; //!histo for primary track pt
199 TH1 *fHPrimTrackEta; //!histo for primary track eta
200 TH1 *fHPrimTrackPhi; //!histo for primary track phi
b6c599fe 201 // histograms for track matching
202 TH1 *fHMatchDr; //!histo for dR track cluster matching
203 TH1 *fHMatchDz; //!histo for dZ track cluster matching
204 TH1 *fHMatchEp; //!histo for E/p track cluster matching
fa443410 205 // histograms for pion candidates
296ea9b4 206 TH2 *fHPionEtaPhi; //!histo for pion eta vs. phi
207 TH2 *fHPionMggPt; //!histo for pion mass vs. pT
208 TH2 *fHPionMggAsym; //!histo for pion mass vs. asym
209 TH2 *fHPionMggDgg; //!histo for pion mass vs. opening angle
210 TH1 *fHPionInvMasses[21]; //!histos for invariant mass plots
38727e64 211 // histograms for MC
ea3fd2d5 212
ea3fd2d5 213 private:
717fe7de 214 AliAnalysisTaskEMCALPi0PbPb(const AliAnalysisTaskEMCALPi0PbPb&); // not implemented
215 AliAnalysisTaskEMCALPi0PbPb &operator=(const AliAnalysisTaskEMCALPi0PbPb&); // not implemented
ea3fd2d5 216
e0e1022c 217 ClassDef(AliAnalysisTaskEMCALPi0PbPb, 13) // Analysis task for neutral pions in Pb+Pb
ea3fd2d5 218};
ea3fd2d5 219#endif