1 /**************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 /////////////////////////////////////////////////////////////
18 // Class to analyze ZDC data //
20 /////////////////////////////////////////////////////////////
29 #include "AliAnalysisManager.h"
30 #include "AliInputEventHandler.h"
31 #include "AliVEvent.h"
33 #include "AliESDEvent.h"
34 #include "AliESDHeader.h"
35 #include "AliESDInputHandler.h"
36 #include "AliESDZDC.h"
37 #include "AliMultiplicity.h"
38 #include "AliAODHandler.h"
39 #include "AliAODEvent.h"
40 #include "AliAODHeader.h"
41 #include "AliAODVertex.h"
42 #include "AliAODVZERO.h"
43 #include "AliAODZDC.h"
44 #include "AliAODMCHeader.h"
45 #include "AliMCEventHandler.h"
46 #include "AliMCEvent.h"
47 #include "AliHeader.h"
48 #include "AliAODMCParticle.h"
49 #include "AliAnalysisTaskSE.h"
50 #include "AliGenEventHeader.h"
51 #include "AliGenHijingEventHeader.h"
52 #include "AliPhysicsSelectionTask.h"
53 #include "AliPhysicsSelection.h"
54 #include "AliBackgroundSelection.h"
55 #include "AliTriggerAnalysis.h"
56 #include "AliCentrality.h"
57 #include "AliAnalysisTaskZDCpA.h"
59 ClassImp(AliAnalysisTaskZDCpA)
62 //________________________________________________________________________
63 AliAnalysisTaskZDCpA::AliAnalysisTaskZDCpA():
81 fhZDCAvsTracklets(0x0),
82 fhZDCCvsTracklets(0x0),
87 fhZNCvscentrality(0x0),
88 fhZNAvscentrality(0x0),
89 fhZPCvscentrality(0x0),
90 fhZPAvscentrality(0x0),
96 // Default constructor
97 for(int i=0; i<5; i++){
107 for(int i=0; i<2; i++) fhZEM[i] = 0x0;
108 for(int i=0; i<6; i++){
112 for(int i=0; i<4; i++){
113 fhZNCPMQiPMC[i] = 0x0;
114 fhZNAPMQiPMC[i] = 0x0;
115 fhZPCPMQiPMC[i] = 0x0;
116 fhZPAPMQiPMC[i] = 0x0;
121 //________________________________________________________________________
122 AliAnalysisTaskZDCpA::AliAnalysisTaskZDCpA(const char *name):
123 AliAnalysisTaskSE(name),
124 fAnalysisInput(kESD),
128 fCentrEstimator("V0M"),
140 fhZDCAvsTracklets(0x0),
141 fhZDCCvsTracklets(0x0),
146 fhZNCvscentrality(0x0),
147 fhZNAvscentrality(0x0),
148 fhZPCvscentrality(0x0),
149 fhZPAvscentrality(0x0),
150 fhZNCpmcvscentr(0x0),
151 fhZNApmcvscentr(0x0),
152 fhZPCpmcvscentr(0x0),
156 for(int i=0; i<5; i++){
166 for(int i=0; i<2; i++) fhZEM[i] = 0x0;
167 for(int i=0; i<6; i++){
171 for(int i=0; i<4; i++){
172 fhZNCPMQiPMC[i] = 0x0;
173 fhZNAPMQiPMC[i] = 0x0;
174 fhZPCPMQiPMC[i] = 0x0;
175 fhZPAPMQiPMC[i] = 0x0;
179 // Output slot #1 writes into a TList container
180 DefineOutput(1, TList::Class());
184 //________________________________________________________________________
185 AliAnalysisTaskZDCpA& AliAnalysisTaskZDCpA::operator=(const AliAnalysisTaskZDCpA& c)
188 // Assignment operator
191 AliAnalysisTaskSE::operator=(c);
196 //________________________________________________________________________
197 AliAnalysisTaskZDCpA::AliAnalysisTaskZDCpA(const AliAnalysisTaskZDCpA& ana):
198 AliAnalysisTaskSE(ana),
199 fAnalysisInput(ana.fAnalysisInput),
200 fIsMCInput(ana.fIsMCInput),
201 fCentrLowLim(ana.fCentrLowLim),
202 fCentrUpLim(ana.fCentrUpLim),
203 fCentrEstimator(ana.fCentrEstimator),
204 fOutput(ana.fOutput),
205 fhZNCvsZNA(ana.fhZNCvsZNA),
206 fhZPCvsZPA(ana.fhZPCvsZPA),
207 fhZNCvsZPC(ana.fhZNCvsZPC),
208 fhZNAvsZPA(ana.fhZNAvsZPA),
209 fhZNAvsZEM(ana.fhZNAvsZEM),
210 fhZNCvsZEM(ana.fhZNCvsZEM),
211 fhZNAwV0M(ana.fhZNAwV0M),
212 fhZNCwV0M(ana.fhZNCwV0M),
213 fhZNAvsVZERO(ana.fhZNAvsVZERO),
214 fhZNCvsVZERO(ana.fhZNCvsVZERO),
215 fhZDCAvsTracklets(ana.fhZDCAvsTracklets),
216 fhZDCCvsTracklets(ana.fhZDCCvsTracklets),
217 fhVZEROvsZEM(ana.fhVZEROvsZEM),
218 fhDebunch(ana.fhDebunch),
219 fhZNCcentroid(ana.fhZNCcentroid),
220 fhZNAcentroid(ana.fhZNAcentroid),
221 fhZNCvscentrality(ana.fhZNCvscentrality),
222 fhZNAvscentrality(ana.fhZNAvscentrality),
223 fhZPCvscentrality(ana.fhZPCvscentrality),
224 fhZPAvscentrality(ana.fhZPAvscentrality),
225 fhZNCpmcvscentr(ana.fhZNCpmcvscentr),
226 fhZNApmcvscentr(ana.fhZNApmcvscentr),
227 fhZPCpmcvscentr(ana.fhZPCpmcvscentr),
228 fhZPApmcvscentr(ana.fhZPApmcvscentr)
233 for(int i=0; i<5; i++){
234 fhZNCPM[i] = ana.fhZNCPM[i];
235 fhZNAPM[i] = ana.fhZNAPM[i];
236 fhZPCPM[i] = ana.fhZPCPM[i];
237 fhZPAPM[i] = ana.fhZPAPM[i];
238 fhZNCPMlg[i] = ana.fhZNCPMlg[i];
239 fhZNAPMlg[i] = ana.fhZNAPMlg[i];
240 fhZPCPMlg[i] = ana.fhZPCPMlg[i];
241 fhZPAPMlg[i] = ana.fhZPAPMlg[i];
243 for(int i=0; i<2; i++) fhZEM[i] = ana.fhZEM[i];
244 for(int i=0; i<6; i++){
245 fhTDCraw[i] = ana.fhTDCraw[i];
246 fhTDC[i] = ana.fhTDC[i];
248 for(int i=0; i<4; i++) fhPMCvsPMQ[i] = ana.fhPMCvsPMQ[i];
249 for(int i=0; i<4; i++){
250 fhZNCPMQiPMC[i] = ana.fhZNCPMQiPMC[i];
251 fhZNAPMQiPMC[i] = ana.fhZNAPMQiPMC[i];
252 fhZPCPMQiPMC[i] = ana.fhZPCPMQiPMC[i];
253 fhZPAPMQiPMC[i] = ana.fhZPAPMQiPMC[i];
254 fhPMCvsPMQ[i] = ana.fhPMCvsPMQ[i];
258 //________________________________________________________________________
259 AliAnalysisTaskZDCpA::~AliAnalysisTaskZDCpA()
262 if(fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()){
263 delete fOutput; fOutput=0;
268 //________________________________________________________________________
269 void AliAnalysisTaskZDCpA::UserCreateOutputObjects()
271 // Create the output containers
272 //printf(" AliAnalysisTaskZDCpA::UserCreateOutputObjects()\n\n");
275 //fOutput->SetName("output");
277 for(int i=0; i<5; i++){
279 sprintf(hname,"hZNCPM%d",i);
280 fhZNCPM[i] = new TH1F(hname, hname, 250, -50., 2450);
281 fOutput->Add(fhZNCPM[i]);
283 sprintf(hname,"hZNAPM%d",i);
284 fhZNAPM[i] = new TH1F(hname, hname, 250, -50., 2450);
285 fOutput->Add(fhZNAPM[i]);
287 sprintf(hname,"hZPCPM%d",i);
288 fhZPCPM[i] = new TH1F(hname, hname, 250, -50., 2450);
289 fOutput->Add(fhZPCPM[i]);
291 sprintf(hname,"hZPAPM%d",i);
292 fhZPAPM[i] = new TH1F(hname, hname, 250, -50., 2450);
293 fOutput->Add(fhZPAPM[i]);
295 sprintf(hname,"hZNCPMlg%d",i);
296 fhZNCPMlg[i] = new TH1F(hname, hname, 200, -50., 950);
297 fOutput->Add(fhZNCPMlg[i]);
299 sprintf(hname,"hZNAPMlg%d",i);
300 fhZNAPMlg[i] = new TH1F(hname, hname, 200, -50., 950);
301 fOutput->Add(fhZNAPMlg[i]);
303 sprintf(hname,"hZPCPMlg%d",i);
304 fhZPCPMlg[i] = new TH1F(hname, hname, 200, -50., 950);
305 fOutput->Add(fhZPCPMlg[i]);
307 sprintf(hname,"hZPAPMlg%d",i);
308 fhZPAPMlg[i] = new TH1F(hname, hname, 200, -50., 950);
309 fOutput->Add(fhZPAPMlg[i]);
314 sprintf(hnamenc, "hZNCPMQ%dPMC",i+1);
315 fhZNCPMQiPMC[i] = new TH1F(hnamenc, hnamenc, 100, 0., 1.);
316 fOutput->Add(fhZNCPMQiPMC[i]);
319 sprintf(hnamena, "hZNAPMQ%dPMC",i+1);
320 fhZNAPMQiPMC[i] = new TH1F(hnamena, hnamena, 100, 0., 1.);
321 fOutput->Add(fhZNAPMQiPMC[i]);
324 sprintf(hnamepc, "hZPCPMQ%dPMC",i+1);
325 fhZPCPMQiPMC[i] = new TH1F(hnamepc, hnamepc, 100, 0., 1.);
326 fOutput->Add(fhZPCPMQiPMC[i]);
329 sprintf(hnamepa, "hZPAPMQ%dPMC",i+1);
330 fhZPAPMQiPMC[i] = new TH1F(hnamepa, hnamepa, 100, 0., 1.);
331 fOutput->Add(fhZPAPMQiPMC[i]);
334 for(int i=0; i<6; i++){
336 fhZEM[i] = new TH1F("hZEM1","hZEM1",200,-10.,1990.);
337 fhTDCraw[i] = new TH1F("hTDCZEM1raw", "hTDCZEM1raw", 200, -200., 0.);
338 fhTDC[i] = new TH1F("hTDCZEM1", "hTDCZEM1", 200, -150., 50.);
339 fhPMCvsPMQ[i] = new TH2F("hPMCvsPMQZNC","hPMCvsPMQZNC",100,0.,2000,100,0.,2000);
341 fOutput->Add(fhZEM[i]);
342 fOutput->Add(fhPMCvsPMQ[i]);
345 fhZEM[i] = new TH1F("hZEM2","hZEM2",200,-10.,1990.);
346 fhTDCraw[i] = new TH1F("hTDCZEM2raw", "hTDCZEM2raw", 200, -200., 0.);
347 fhTDC[i] = new TH1F("hTDCZEM2", "hTDCZEM2", 200, -150., 50.);
348 fhPMCvsPMQ[i] = new TH2F("hPMCvsPMQZPC","hPMCvsPMQZPC",100,0.,2000,100,0.,2000);
350 fOutput->Add(fhZEM[i]);
351 fOutput->Add(fhPMCvsPMQ[i]);
354 fhTDCraw[i] = new TH1F("hTDCZNCraw", "hTDCZNCraw", 200, -200., 0.);
355 fhTDC[i] = new TH1F("hTDCZNC", "hTDCZNC", 200, -150., 50.);
356 fhPMCvsPMQ[i] = new TH2F("hPMCvsPMQZNA","hPMCvsPMQZNA",100,0.,2000,100,0.,2000);
358 fOutput->Add(fhPMCvsPMQ[i]);
361 fhTDCraw[i] = new TH1F("hTDCZPCraw", "hTDCZPCraw", 200, -200., 0.);
362 fhTDC[i] = new TH1F("hTDCZPC", "hTDCZPC", 200, -150., 50.);
363 fhPMCvsPMQ[i] = new TH2F("hPMCvsPMQZPA","hPMCvsPMQZPA",100,0.,2000,100,0.,2000);
365 fOutput->Add(fhPMCvsPMQ[i]);
368 fhTDCraw[i] = new TH1F("hTDCZNAraw", "hTDCZNAraw", 200, -200., 0.);
369 fhTDC[i] = new TH1F("hTDCZNA", "hTDCZNA", 200, -150., 50.);
372 fhTDCraw[i] = new TH1F("hTDCZPAraw", "hTDCZPAraw", 200, -200., 0.);
373 fhTDC[i] = new TH1F("hTDCZPA", "hTDCZPA", 200, -150., 50.);
376 fOutput->Add(fhTDC[i]);
380 fhZNCvsZNA = new TH2F("hZNCvsZNA","hZNCvsZNA",250,-50.,2450,200,-50.,2450);
381 fOutput->Add(fhZNCvsZNA);
382 fhZPCvsZPA = new TH2F("hZPCvsZPA","hZPCvsZPA",250,-50.,2450,200,-50.,2450);
383 fOutput->Add(fhZPCvsZPA);
384 fhZNCvsZPC = new TH2F("hZNCvsZPC","hZNCvsZPC",250,-50.,2450,200,-50.,2450);
385 fOutput->Add(fhZNCvsZPC);
386 fhZNAvsZPA = new TH2F("hZNAvsZPA","hZNAvsZPA",250,-50.,2450,200,-50.,2450);
387 fOutput->Add(fhZNAvsZPA);
388 fhZNAvsZEM = new TH2F("hZNAvsZEM","hZNAvsZEM",250,0.,2500.,250,0.,2500.);
389 fOutput->Add(fhZNAvsZEM);
390 fhZNCvsZEM = new TH2F("hZNCvsZEM","hZNCvsZEM",250,0.,2500.,250,0.,2500.);
391 fOutput->Add(fhZNCvsZEM);
392 fhZNAwV0M = new TH1F("hZNAwV0M","hZNA wV0M",250,0.,2500.);
393 fOutput->Add(fhZNAwV0M);
394 fhZNCwV0M = new TH1F("hZNCwV0M","hZNC wV0M",250,0.,2500.);
395 fOutput->Add(fhZNCwV0M);
396 fhZNAvsVZERO = new TH2F("hZNAvsVZERO","ZNA vs. VZERO",250,0.,25000.,250,0.,2500.);
397 fOutput->Add(fhZNAvsVZERO);
398 fhZNCvsVZERO = new TH2F("hZNCvsVZERO","ZNC vs. VZERO",250,0.,25000.,250,0.,2500.);
399 fOutput->Add(fhZNCvsVZERO);
400 fhZDCAvsTracklets = new TH2F("hZDCAvsTracklets","hZDCAvsTracklets",200,0.,4000.,250,0.,2500.);
401 fOutput->Add(fhZDCAvsTracklets);
402 fhZDCCvsTracklets = new TH2F("hZDCCvsTracklets","hZDCCvsTracklets",200,0.,4000.,250,0.,2500.);
403 fOutput->Add(fhZDCCvsTracklets);
404 fhVZEROvsZEM = new TH2F("hVZEROvsZEM","hVZEROvsZEM",250,0.,2500.,250,0.,25000.);
405 fOutput->Add(fhVZEROvsZEM);
406 fhDebunch = new TH2F("hDebunch","hDebunch",240,-100.,-40.,240,-30.,30.);
407 fOutput->Add(fhDebunch);
408 fhZNCcentroid = new TH2F("hZNCcentroid","hZNCcentroid",100,-3.5,3.5,100,-3.5,3.5);
409 fOutput->Add(fhZNCcentroid);
410 fhZNAcentroid = new TH2F("hZNAcentroid","hZNAcentroid",100,-3.5,3.5,100,-3.5,3.5);
411 fOutput->Add(fhZNAcentroid);
413 fhZNCvscentrality = new TH2F("hZNCvscentrality","ZNC vs. centrality",100,0.,100.,100,0.,100.);
414 fOutput->Add(fhZNCvscentrality);
415 fhZNAvscentrality = new TH2F("hZNAvscentrality","ZNA vs. centrality",100,0.,100.,100,0.,100.);
416 fOutput->Add(fhZNAvscentrality);
417 fhZPCvscentrality = new TH2F("hZPCvscentrality","ZPC vs. centrality",100,0.,100.,100,0.,100.);
418 fOutput->Add(fhZPCvscentrality);
419 fhZPAvscentrality = new TH2F("hZPAvscentrality","ZPA vs. centrality",100,0.,100.,100,0.,100.);
420 fOutput->Add(fhZPAvscentrality);
422 fhZNCpmcvscentr = new TH2F("hZNCpmcvscentr","ZNC PMC vs. centrality",100,0.,100.,100,0.,100.);
423 fOutput->Add(fhZNCpmcvscentr);
424 fhZNApmcvscentr = new TH2F("hZNApmcvscentr","ZNA PMC vs. centrality",100,0.,100.,100,0.,100.);
425 fOutput->Add(fhZNApmcvscentr);
426 fhZPCpmcvscentr = new TH2F("hZPCpmcvscentr","ZPC PMC vs. centrality",100,0.,100.,100,0.,100.);
427 fOutput->Add(fhZPCpmcvscentr);
428 fhZPApmcvscentr = new TH2F("hZPApmcvscentr","ZPA PMC vs. centrality",100,0.,100.,100,0.,100.);
429 fOutput->Add(fhZPApmcvscentr);
431 PostData(1, fOutput);
434 //________________________________________________________________________
435 void AliAnalysisTaskZDCpA::UserExec(Option_t */*option*/)
437 // Execute analysis for current event:
440 printf("ERROR: InputEvent not available");
444 if(fAnalysisInput==kESD){
446 AliESDEvent* esd = dynamic_cast<AliESDEvent*> (InputEvent());
449 // Select PHYSICS events (type=7, for data)
450 if(!fIsMCInput && esd->GetEventType()!=7) return;
452 // ********* MC INFO *********************************
454 AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
456 printf("ERROR: Could not retrieve MC event handler");
460 AliMCEvent* mcEvent = eventHandler->MCEvent();
462 printf("ERROR: Could not retrieve MC event");
466 // ****************************************************
469 // AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
470 // AliInputEventHandler *hdr = (AliInputEventHandler*)am->GetInputEventHandler();
471 // printf(" PS selection %d\n",hdr->IsEventSelected());
472 // if(hdr->IsEventSelected() & AliVEvent::kAnyINT){
474 AliCentrality *centrality = esd->GetCentrality();
475 Float_t centrperc = centrality->GetCentralityPercentile(fCentrEstimator.Data());
476 if(centrperc<fCentrLowLim || centrperc>fCentrUpLim) return;
478 // ***** Trigger selection
479 /*TString triggerClass = esd->GetFiredTriggerClasses();
480 sprintf(fTrigClass,"%s",triggerClass.Data());*/
482 const AliMultiplicity *mult = esd->GetMultiplicity();
483 Int_t nTracklets = mult->GetNumberOfTracklets();
484 //for(Int_t ilay=0; ilay<6; ilay++) fNClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
485 //Int_t nClusterslay1 = mult->GetNumberOfITSClusters(1);
487 AliESDVZERO *vzeroAOD = esd->GetVZEROData();
488 Float_t multV0A = vzeroAOD->GetMTotV0A();
489 Float_t multV0C = vzeroAOD->GetMTotV0C();
491 AliESDZDC *esdZDC = esd->GetESDZDC();
493 Float_t tdc[32][4], tdcSum=-999, tdcDiff=-999;
494 Bool_t tdcMult[6] = {kFALSE};
495 for(Int_t itdc=0; itdc<32; itdc++){
496 for(Int_t i=0; i<4; i++){
497 if(esdZDC->GetZDCTDCData(itdc, i)!=0.){
498 tdc[itdc][i] = esdZDC->GetZDCTDCCorrected(itdc, i);
499 if(itdc>=8 && itdc<=13){
500 tdcMult[itdc-8] = kTRUE;
501 fhTDC[itdc-8]->Fill(tdc[itdc][i]);
503 else if(itdc==15 && i==0){
504 for(int ich=8; ich<=13; ich++) fhTDCraw[ich-8]->Fill(esdZDC->GetZDCTDCData(ich, 0)-esdZDC->GetZDCTDCData(itdc, i));
509 Bool_t zem1 = tdcMult[0];
510 Bool_t zem2 = tdcMult[1];
511 Bool_t znc = tdcMult[2];
512 Bool_t zpc = tdcMult[3];
513 Bool_t zna = tdcMult[4];
514 Bool_t zpa = tdcMult[5];
516 tdcSum = esdZDC->GetZNTDCSum(0);
517 tdcDiff = esdZDC->GetZNTDCDiff(0);
518 fhDebunch->Fill(tdcDiff, tdcSum);
521 Float_t energyZNC = (Float_t) (esdZDC->GetZNCEnergy());
522 Float_t energyZPC = (Float_t) (esdZDC->GetZPCEnergy());
523 Float_t energyZNA = (Float_t) (esdZDC->GetZNAEnergy());
524 Float_t energyZPA = (Float_t) (esdZDC->GetZPAEnergy());
525 Float_t energyZEM1 = (Float_t) (esdZDC->GetZEM1Energy());
526 Float_t energyZEM2 = (Float_t) (esdZDC->GetZEM2Energy());
528 const Double_t * towZNC = esdZDC->GetZNCTowerEnergy();
529 const Double_t * towZPC = esdZDC->GetZPCTowerEnergy();
530 const Double_t * towZNA = esdZDC->GetZNATowerEnergy();
531 const Double_t * towZPA = esdZDC->GetZPATowerEnergy();
533 const Double_t * towZNClg = esdZDC->GetZNCTowerEnergyLR();
534 const Double_t * towZPClg = esdZDC->GetZPCTowerEnergyLR();
535 const Double_t * towZNAlg = esdZDC->GetZNATowerEnergyLR();
536 const Double_t * towZPAlg = esdZDC->GetZPATowerEnergyLR();
538 Double_t xyZNC[2]={-99.,-99.}, xyZNA[2]={-99.,-99.};
539 esdZDC->GetZNCentroidInPbPb(esd->GetBeamEnergy(), xyZNC, xyZNA);
540 fhZNCcentroid->Fill(xyZNC[0], xyZNC[1]);
541 fhZNAcentroid->Fill(xyZNA[0], xyZNA[1]);
544 fbZDC = esdZDC->GetImpactParameter();
545 fNpartZDC = esdZDC->GetZDCParticipants();
546 fbZDCA = esdZDC->GetImpactParamSideA();
547 fNpartZDCA = esdZDC->GetZDCPartSideA();
548 fbZDCC = esdZDC->GetImpactParamSideC();
549 fNpartZDCC = esdZDC->GetZDCPartSideC();*/
552 for(int i=0; i<5; i++){
553 fhZNCPM[i]->Fill(towZNC[i]);
554 fhZNCPMlg[i]->Fill(towZNClg[i]);
555 if((i<4) && (towZNC[0]>0.)) fhZNCPMQiPMC[i]->Fill(towZNC[i+1]/towZNC[0]);
557 fhPMCvsPMQ[0]->Fill(towZNC[1]+towZNC[2]+towZNC[3]+towZNC[4], towZNC[0]);
560 for(int i=0; i<5; i++){
561 fhZPCPM[i]->Fill(towZPC[i]);
562 fhZPCPMlg[i]->Fill(towZPClg[i]);
563 if(((i<4) && towZPC[0]>0.)) fhZPCPMQiPMC[i]->Fill(towZPC[i+1]/towZPC[0]);
565 fhPMCvsPMQ[1]->Fill(towZPC[1]+towZPC[2]+towZPC[3]+towZPC[4], towZPC[0]);
568 for(int i=0; i<5; i++){
569 fhZNAPM[i]->Fill(towZNA[i]);
570 fhZNAPMlg[i]->Fill(towZNAlg[i]);
571 if(((i<4) && towZNA[0]>0.)) fhZNAPMQiPMC[i]->Fill(towZNA[i+1]/towZNA[0]);
573 fhPMCvsPMQ[2]->Fill(towZNA[1]+towZNA[2]+towZNA[3]+towZNA[4], towZNA[0]);
576 for(int i=0; i<5; i++){
577 fhZPAPM[i]->Fill(towZPA[i]);
578 fhZPAPMlg[i]->Fill(towZPAlg[i]);
579 if(((i<4) && towZPA[0]>0.)) fhZPAPMQiPMC[i]->Fill(towZPA[i+1]/towZPA[0]);
581 fhPMCvsPMQ[3]->Fill(towZPA[1]+towZPA[2]+towZPA[3]+towZPA[4], towZPA[0]);
583 if(zem1) fhZEM[0]->Fill(energyZEM1);
584 if(zem2) fhZEM[1]->Fill(energyZEM2);
587 fhZNCvsZNA->Fill(energyZNA, energyZNC);
588 fhZPCvsZPA->Fill(energyZPA, energyZPC);
589 fhZNCvsZPC->Fill(energyZPC, energyZNC);
590 fhZNAvsZPA->Fill(energyZPA, energyZNA);
591 fhZNAvsZEM->Fill(energyZEM1+energyZEM2, energyZNA);
592 fhZNCvsZEM->Fill(energyZEM1+energyZEM2, energyZNC);
593 fhZNAwV0M->Fill(energyZNA, centrperc);
594 fhZNCwV0M->Fill(energyZNC, centrperc);
595 fhZNAvsVZERO->Fill(multV0A+multV0C, energyZNA);
596 fhZNCvsVZERO->Fill(multV0A+multV0C, energyZNC);
597 fhZDCAvsTracklets->Fill((Float_t) (nTracklets), energyZNA+energyZPA);
598 fhZDCCvsTracklets->Fill((Float_t) (nTracklets), energyZNC+energyZPC);
599 fhVZEROvsZEM->Fill(energyZEM1+energyZEM2, multV0A+multV0C);
601 fhZNCvscentrality->Fill(centrperc, energyZNC);
602 fhZNAvscentrality->Fill(centrperc, energyZNA);
603 fhZPCvscentrality->Fill(centrperc, energyZPC);
604 fhZPAvscentrality->Fill(centrperc, energyZPA);
606 fhZNCpmcvscentr->Fill(centrperc, towZNC[0]);
607 fhZNApmcvscentr->Fill(centrperc, towZNA[0]);
608 fhZPCpmcvscentr->Fill(centrperc, towZPC[0]);
609 fhZPApmcvscentr->Fill(centrperc, towZPA[0]);
612 // } // PHYSICS SELECTION
615 else if(fAnalysisInput==kAOD){
617 AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
619 printf("AODs not available");
623 // Select PHYSICS events (type=7, for data)
624 //if(!fIsMCInput && aod->GetEventType()!=7) return;
627 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
628 AliInputEventHandler *hdr = (AliInputEventHandler*)am->GetInputEventHandler();
629 if(hdr->IsEventSelected() & AliVEvent::kAnyINT){
631 AliCentrality* centrality = aod->GetCentrality();
632 Float_t centrperc = centrality->GetCentralityPercentile(fCentrEstimator.Data());
634 /*AliAODHeader *aodheader = aod->GetHeader();
635 AliCentrality *centralityp = aodheader->GetCentralityP();
636 Float_t centrperc = centralityp->GetCentralityPercentile(fCentrEstimator.Data());
639 if(centrperc<fCentrLowLim || centrperc>fCentrUpLim) return;
641 // ***** Trigger selection
642 /*TString triggerClass = aod->GetFiredTriggerClasses();
643 sprintf(fTrigClass,"%s",triggerClass.Data());
645 const AliAODVertex *vertex = aod->GetPrimaryVertexSPD();
646 fxVertex = vertex->GetX();
647 fyVertex = vertex->GetY();
648 fzVertex = vertex->GetZ();*/
650 AliAODTracklets *trackl = aod->GetTracklets();
651 Int_t nTracklets = trackl->GetNumberOfTracklets();
653 AliAODVZERO *vzeroAOD = aod->GetVZEROData();
654 Float_t multV0A = vzeroAOD->GetMTotV0A();
655 Float_t multV0C = vzeroAOD->GetMTotV0C();
657 AliAODZDC *aodZDC = aod->GetZDCData();
659 Float_t energyZNC = (Float_t) (aodZDC->GetZNCEnergy());
660 Float_t energyZPC = (Float_t) (aodZDC->GetZPCEnergy());
661 Float_t energyZNA = (Float_t) (aodZDC->GetZNAEnergy());
662 Float_t energyZPA = (Float_t) (aodZDC->GetZPAEnergy());
663 Float_t energyZEM1 = (Float_t) (aodZDC->GetZEM1Energy());
664 Float_t energyZEM2 = (Float_t) (aodZDC->GetZEM2Energy());
666 const Double_t * towZNC = aodZDC->GetZNCTowerEnergy();
667 const Double_t * towZPC = aodZDC->GetZPCTowerEnergy();
668 const Double_t * towZNA = aodZDC->GetZNATowerEnergy();
669 const Double_t * towZPA = aodZDC->GetZPATowerEnergy();
671 const Double_t * towZNClg = aodZDC->GetZNCTowerEnergyLR();
672 const Double_t * towZNAlg = aodZDC->GetZNATowerEnergyLR();
674 Double_t towZPClg[5], towZPAlg[5]={0.};
675 for(Int_t it=0; it<5; it++){
676 towZPClg[it] = 8*towZPC[it];
677 towZPAlg[it] = 8*towZNA[it];
680 Double_t xyZNC[2]={-99.,-99.}, xyZNA[2]={-99.,-99.};
681 aodZDC->GetZNCentroidInPbPb(1380., xyZNC, xyZNA);
682 fhZNCcentroid->Fill(xyZNC[0], xyZNC[1]);
683 fhZNAcentroid->Fill(xyZNA[0], xyZNA[1]);
685 Float_t tdcSum = aodZDC->GetZDCTimeSum();
686 Float_t tdcDiff = aodZDC->GetZDCTimeDiff();
687 fhDebunch->Fill(tdcDiff, tdcSum);
689 for(int i=0; i<5; i++){
690 fhZNCPM[i]->Fill(towZNC[i]);
691 fhZNCPMlg[i]->Fill(towZNClg[i]);
692 if((i<4) && (towZNC[0]>0.)) fhZNCPMQiPMC[i]->Fill(towZNC[i+1]/towZNC[0]);
694 fhPMCvsPMQ[0]->Fill(towZNC[1]+towZNC[2]+towZNC[3]+towZNC[4], towZNC[0]);
695 for(int i=0; i<5; i++){
696 fhZPCPM[i]->Fill(towZPC[i]);
697 fhZPCPMlg[i]->Fill(towZPClg[i]);
698 if(((i<4) && towZPC[0]>0.)) fhZPCPMQiPMC[i]->Fill(towZPC[i+1]/towZPC[0]);
700 fhPMCvsPMQ[1]->Fill(towZPC[1]+towZPC[2]+towZPC[3]+towZPC[4], towZPC[0]);
701 for(int i=0; i<5; i++){
702 fhZNAPM[i]->Fill(towZNA[i]);
703 fhZNAPMlg[i]->Fill(towZNAlg[i]);
704 if(((i<4) && towZNA[0]>0.)) fhZNAPMQiPMC[i]->Fill(towZNA[i+1]/towZNA[0]);
706 fhPMCvsPMQ[2]->Fill(towZNA[1]+towZNA[2]+towZNA[3]+towZNA[4], towZNA[0]);
707 for(int i=0; i<5; i++){
708 fhZPAPM[i]->Fill(towZPA[i]);
709 fhZPAPMlg[i]->Fill(towZPAlg[i]);
710 if(((i<4) && towZPA[0]>0.)) fhZPAPMQiPMC[i]->Fill(towZPA[i+1]/towZPA[0]);
712 fhPMCvsPMQ[3]->Fill(towZPA[1]+towZPA[2]+towZPA[3]+towZPA[4], towZPA[0]);
713 fhZEM[0]->Fill(energyZEM1);
714 fhZEM[1]->Fill(energyZEM2);
716 fhZNCvsZNA->Fill(energyZNA, energyZNC);
717 fhZPCvsZPA->Fill(energyZPA, energyZPC);
718 fhZNCvsZPC->Fill(energyZPC, energyZNC);
719 fhZNAvsZPA->Fill(energyZPA, energyZNA);
720 fhZNAvsZEM->Fill(energyZEM1+energyZEM2, energyZNA);
721 fhZNCvsZEM->Fill(energyZEM1+energyZEM2, energyZNC);
722 fhZNAwV0M->Fill(energyZNA, centrperc);
723 fhZNCwV0M->Fill(energyZNC, centrperc);
724 fhZNAvsVZERO->Fill(multV0A+multV0C, energyZNA);
725 fhZNCvsVZERO->Fill(multV0A+multV0C, energyZNC);
726 fhZDCAvsTracklets->Fill((Float_t) (nTracklets), energyZNA+energyZPA);
727 fhZDCCvsTracklets->Fill((Float_t) (nTracklets), energyZNC+energyZPC);
728 fhVZEROvsZEM->Fill(energyZEM1+energyZEM2, multV0A+multV0C);
730 fhZNCvscentrality->Fill(centrperc, energyZNC);
731 fhZNAvscentrality->Fill(centrperc, energyZNA);
732 fhZPCvscentrality->Fill(centrperc, energyZPC);
733 fhZPAvscentrality->Fill(centrperc, energyZPA);
735 fhZNCpmcvscentr->Fill(centrperc, towZNC[0]);
736 fhZNApmcvscentr->Fill(centrperc, towZNA[0]);
737 fhZPCpmcvscentr->Fill(centrperc, towZPC[0]);
738 fhZPApmcvscentr->Fill(centrperc, towZPA[0]);
740 } // PHYSICS SELECTION
743 PostData(1, fOutput);
749 //________________________________________________________________________
750 void AliAnalysisTaskZDCpA::Terminate(Option_t */*option*/)
752 // Terminate analysis
754 /* if(fDebug > 1) printf(" **** AliAnalysisTaskZDCpA::Terminate() \n");
756 //fOutput = dynamic_cast<TList*> (GetOutputData(1));
757 //if(!fOutput) printf("ERROR: fOutput not available\n");