3 #include "AliAnalysisTaskEMCALPi0PbPb.h"
5 #include <TClonesArray.h>
9 #include <TLorentzVector.h>
10 #include "AliAODEvent.h"
11 #include "AliAODVertex.h"
12 #include "AliAnalysisManager.h"
13 #include "AliAnalysisTaskEMCALClusterizeFast.h"
14 #include "AliCentrality.h"
15 #include "AliEMCALGeoUtils.h"
16 #include "AliESDEvent.h"
17 #include "AliESDVertex.h"
20 ClassImp(AliAnalysisTaskEMCALPi0PbPb)
22 //________________________________________________________________________
23 AliAnalysisTaskEMCALPi0PbPb::AliAnalysisTaskEMCALPi0PbPb()
24 : AliAnalysisTaskSE(),
47 //________________________________________________________________________
48 AliAnalysisTaskEMCALPi0PbPb::AliAnalysisTaskEMCALPi0PbPb(const char *name)
49 : AliAnalysisTaskSE(name),
71 DefineInput(0, TChain::Class());
72 DefineOutput(1, TList::Class());
73 fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex,EMCALCells.,CaloClusters "
74 "AOD:header,vertices,emcalCells,caloClusters";
77 //________________________________________________________________________
78 AliAnalysisTaskEMCALPi0PbPb::~AliAnalysisTaskEMCALPi0PbPb()
82 delete fOutput; fOutput = 0;
85 //________________________________________________________________________
86 void AliAnalysisTaskEMCALPi0PbPb::UserCreateOutputObjects()
88 // Create user objects here.
90 fOutput = new TList();
93 fHcuts = new TH1F("hEventCuts","",4,0.5,4.5);
94 fHcuts->GetXaxis()->SetBinLabel(1,"All (PS)");
95 fHcuts->GetXaxis()->SetBinLabel(2,Form("%s: %.0f-%.0f",fCentVar.Data(),fCentFrom,fCentTo));
96 fHcuts->GetXaxis()->SetBinLabel(3,"QFlag");
97 fHcuts->GetXaxis()->SetBinLabel(4,Form("zvtx: %.0f-%.0f",fVtxZMin,fVtxZMax));
99 fHvertexZ = new TH1F("hVertexZBeforeCuts",";z [cm];",100,-25,25);
100 fOutput->Add(fHvertexZ);
101 fHcent = new TH1F("hCentBeforeCuts",Form(";%s;",fCentVar.Data()),101,-1,100);
102 fOutput->Add(fHcent);
104 PostData(1, fOutput);
107 //________________________________________________________________________
108 void AliAnalysisTaskEMCALPi0PbPb::UserExec(Option_t *)
110 // Called for each event.
115 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
116 fEsdEv = dynamic_cast<AliESDEvent*>(InputEvent());
118 am->LoadBranch("AliESDRun.");
119 am->LoadBranch("AliESDHeader.");
121 fAodEv = dynamic_cast<AliAODEvent*>(InputEvent());
122 am->LoadBranch("header");
128 const AliCentrality *centP = InputEvent()->GetCentrality();
129 Double_t cent = centP->GetCentralityPercentileUnchecked(fCentVar);
131 if (cent<fCentFrom||cent>fCentTo)
137 if (centP->GetQuality()>0)
144 am->LoadBranch("PrimaryVertex");
146 fAodEv = dynamic_cast<AliAODEvent*>(InputEvent());
147 am->LoadBranch("vertices");
150 const AliVVertex *vertex = InputEvent()->GetPrimaryVertex();
154 fHvertexZ->Fill(vertex->GetZ());
156 if(vertex->GetZ()<fVtxZMin||vertex->GetZ()>fVtxZMax)
161 fRecPoints = 0; // will be set if fClusName is given and AliAnalysisTaskEMCALClusterizeFast is used
162 fEsdClusters = 0; // will be set if ESD input used and if fRecPoints are not set of if clusters are attached
163 fEsdCells = 0; // will be set if ESD input used
164 fAodClusters = 0; // will be set if AOD input used and if fRecPoints are not set of if clusters are attached
165 // or if fClusName is given and AliAnalysisTaskEMCALClusterizeFast in AOD output mode
166 fAodCells = 0; // will be set if AOD input used
168 // deal with special output from AliAnalysisTaskEMCALClusterizeFast first
169 Bool_t clusattached = 0;
170 Bool_t recalibrated = 0;
171 if (1 && !fClusName.IsNull()) {
172 AliAnalysisTaskEMCALClusterizeFast *cltask = 0;
173 TObjArray *ts = am->GetTasks();
174 cltask = dynamic_cast<AliAnalysisTaskEMCALClusterizeFast*>(ts->FindObject(fClusName));
175 if (cltask && cltask->GetClusters()) {
176 fRecPoints = cltask->GetClusters();
177 clusattached = cltask->GetAttachClusters();
178 if (cltask->GetCalibData()!=0)
179 recalibrated = kTRUE;
182 if (1 && AODEvent() && !fClusName.IsNull()) {
183 TList *l = AODEvent()->GetList();
184 TClonesArray *clus = 0;
186 clus = dynamic_cast<TClonesArray*>(l->FindObject(fClusName));
191 if (fEsdEv) { // ESD input mode
192 if (1 && (!fRecPoints||clusattached)) {
194 am->LoadBranch("CaloClusters");
195 TList *l = fEsdEv->GetList();
196 TClonesArray *clus = 0;
198 clus = dynamic_cast<TClonesArray*>(l->FindObject("CaloClusters"));
204 am->LoadBranch("EMCALCells.");
205 fEsdCells = fEsdEv->GetEMCALCells();
207 } else if (fAodEv) { // AOD input mode
208 if (1 && (!fAodClusters || clusattached)) {
210 am->LoadBranch("caloClusters");
211 TList *l = fAodEv->GetList();
212 TClonesArray *clus = 0;
214 clus = dynamic_cast<TClonesArray*>(l->FindObject("caloClusters"));
220 am->LoadBranch("emcalCells");
221 fAodCells = fAodEv->GetEMCALCells();
224 AliFatal("Impossible to not have either pointer to ESD or AOD event");
228 AliDebug(2,Form("fRecPoints set: %p", fRecPoints));
229 AliDebug(2,Form("fEsdClusters set: %p", fEsdClusters));
230 AliDebug(2,Form("fEsdCells set: %p", fEsdCells));
231 AliDebug(2,Form("fAodClusters set: %p", fAodClusters));
232 AliDebug(2,Form("fAodCells set: %p", fAodCells));
239 PostData(1, fOutput);
242 //________________________________________________________________________
243 void AliAnalysisTaskEMCALPi0PbPb::Terminate(Option_t *)
245 // Terminate called at the end of analysis.
248 //________________________________________________________________________
249 void AliAnalysisTaskEMCALPi0PbPb::FillCellHists()
251 // Fill histograms related to cell properties.
254 //________________________________________________________________________
255 void AliAnalysisTaskEMCALPi0PbPb::FillClusHists()
257 // Fill histograms related to cluster properties.
260 //________________________________________________________________________
261 void AliAnalysisTaskEMCALPi0PbPb::FillPionHists()
263 // Fill histograms related to pions.