]>
Commit | Line | Data |
---|---|---|
6bf90832 | 1 | #ifndef AliAnalysisTaskEMCALPi0PbPb_h |
2 | #define AliAnalysisTaskEMCALPi0PbPb_h | |
ea3fd2d5 | 3 | |
4 | // $Id$ | |
5 | ||
fa443410 | 6 | class TAxis; |
f5d4ab70 | 7 | class TClonesArray; |
296ea9b4 | 8 | class TH1; |
9 | class TH2; | |
f5d4ab70 | 10 | class TNtuple; |
717fe7de | 11 | class TObjArray; |
12 | class AliAODCaloCells; | |
13 | class AliAODCaloCluster; | |
ea3fd2d5 | 14 | class AliAODEvent; |
296ea9b4 | 15 | class AliAODTrack; |
788ca675 | 16 | class AliAODVertex; |
2ef5608f | 17 | class AliEMCALGeometry; |
296ea9b4 | 18 | class AliEMCALRecoUtils; |
717fe7de | 19 | class AliESDCaloCells; |
ea3fd2d5 | 20 | class AliESDCaloCluster; |
717fe7de | 21 | class AliESDEvent; |
0ec74551 | 22 | class AliESDTrack; |
788ca675 | 23 | class AliESDVertex; |
0ec74551 | 24 | class AliESDtrackCuts; |
807016ea | 25 | class AliMCEvent; |
38727e64 | 26 | class AliMCParticle; |
788ca675 | 27 | class AliStaHeader; |
28 | class AliStaVertex; | |
ea3fd2d5 | 29 | |
30 | #include "AliAnalysisTaskSE.h" | |
d02977ee | 31 | #include "AliStaObjects.h" |
ea3fd2d5 | 32 | |
33 | class 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 |