updated dphi correlation analysis
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / AliCentralMultiplicityTask.cxx
CommitLineData
6f791cc3 1//====================================================================
2//
3// Base class for classes that calculate the multiplicity in the
4// central region event-by-event
5//
6// Inputs:
7// - AliESDEvent
8//
9// Outputs:
10// - AliAODCentralMult
11//
12// Histograms
13//
14// Corrections used
15#include "AliCentralMultiplicityTask.h"
52047b6f 16#include "AliAODForwardMult.h"
6f791cc3 17#include "AliForwardUtil.h"
18#include "AliLog.h"
19#include "AliAODHandler.h"
6f791cc3 20#include "AliAnalysisManager.h"
21#include "AliESDEvent.h"
22#include "AliMultiplicity.h"
23#include <TROOT.h>
24#include <TFile.h>
3e478dba 25#include <TError.h>
28b4012a 26#include <TSystem.h>
6f791cc3 27#include <iostream>
28#include <iomanip>
29
30//====================================================================
31AliCentralMultiplicityTask::AliCentralMultiplicityTask(const char* name)
32 : AliAnalysisTaskSE(name),
52047b6f 33 fInspector("centralEventInspector"),
6f791cc3 34 fData(0),
35 fList(0),
36 fAODCentral(kFALSE),
3b2bfb07 37 fManager(),
e58000b7 38 fUseSecondary(true),
9453b19e 39 fUseAcceptance(true),
52047b6f 40 fFirstEventSeen(false),
28b4012a 41 fIvz(0),
42 fNClusterTracklet(0),
43 fClusterPerTracklet(0),
44 fNCluster(0),
45 fNTracklet(0)
6f791cc3 46{
fb3430ac 47 //
48 // Constructor
49 //
6f791cc3 50 DefineOutput(1, TList::Class());
a59cbd24 51 fBranchNames =
52 "ESD:AliESDRun.,AliESDHeader.,AliMultiplicity.,"
53 "SPDVertex.,PrimaryVertex.";
6f791cc3 54}
55//____________________________________________________________________
9c825779 56AliCentralMultiplicityTask::AliCentralMultiplicityTask()
57 : AliAnalysisTaskSE(),
52047b6f 58 fInspector(),
9c825779 59 fData(0),
60 fList(0),
61 fAODCentral(),
3b2bfb07 62 fManager(),
e58000b7 63 fUseSecondary(true),
9453b19e 64 fUseAcceptance(true),
52047b6f 65 fFirstEventSeen(false),
28b4012a 66 fIvz(0),
67 fNClusterTracklet(0),
68 fClusterPerTracklet(0),
69 fNCluster(0),
70 fNTracklet(0)
9c825779 71{
fb3430ac 72 //
73 // Constructor
74 //
9c825779 75}
76//____________________________________________________________________
77AliCentralMultiplicityTask::AliCentralMultiplicityTask(const AliCentralMultiplicityTask& o)
78 : AliAnalysisTaskSE(o),
52047b6f 79 fInspector(o.fInspector),
9c825779 80 fData(o.fData),
81 fList(o.fList),
82 fAODCentral(o.fAODCentral),
3b2bfb07 83 fManager(o.fManager),
e58000b7 84 fUseSecondary(o.fUseSecondary),
9453b19e 85 fUseAcceptance(o.fUseAcceptance),
52047b6f 86 fFirstEventSeen(o.fFirstEventSeen),
28b4012a 87 fIvz(0),
88 fNClusterTracklet(o.fNClusterTracklet),
89 fClusterPerTracklet(o.fClusterPerTracklet),
90 fNCluster(o.fNCluster),
91 fNTracklet(o.fNTracklet)
9c825779 92{
fb3430ac 93 //
94 // Copy constructor
95 //
9c825779 96}
97//____________________________________________________________________
98AliCentralMultiplicityTask&
99AliCentralMultiplicityTask::operator=(const AliCentralMultiplicityTask& o)
100{
fb3430ac 101 //
102 // Assignment operator
103 //
28b4012a 104 fInspector = o.fInspector;
105 fData = o.fData;
106 fList = o.fList;
107 fAODCentral = o.fAODCentral;
108 fManager = o.fManager;
109 fUseSecondary = o.fUseSecondary;
110 fUseAcceptance = o.fUseAcceptance;
111 fFirstEventSeen = o.fFirstEventSeen;
112 fIvz = 0;
113 fNClusterTracklet = o.fNClusterTracklet;
114 fClusterPerTracklet= o.fClusterPerTracklet;
115 fNCluster = o.fNCluster;
116 fNTracklet = o.fNTracklet;
9c825779 117 return *this;
118}
119//____________________________________________________________________
3e478dba 120void AliCentralMultiplicityTask::UserCreateOutputObjects()
121{
fb3430ac 122 //
123 // Create output objects
124 //
125 //
6f791cc3 126
127 AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
128 AliAODHandler* ah =
129 dynamic_cast<AliAODHandler*>(am->GetOutputEventHandler());
130 if (!ah) AliFatal("No AOD output handler set in analysis manager");
131
132
133 TObject* obj = &fAODCentral;
134 ah->AddBranch("AliAODCentralMult", &obj);
52047b6f 135
136
6f791cc3 137 fList = new TList();
9d05ffeb 138 fList->SetOwner();
52047b6f 139
140 fInspector.DefineOutput(fList);
141
142 PostData(1,fList);
143}
144
145//____________________________________________________________________
146AliESDEvent*
147AliCentralMultiplicityTask::GetESDEvent()
148{
149 //
150 // Get the ESD event. IF this is the first event, initialise
151 //
152 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(InputEvent());
153 if (!esd) {
154 AliWarning("No ESD event found for input event");
155 return 0;
156 }
28b4012a 157
158 // IF we've read the first event already, just return the event
52047b6f 159 if (fFirstEventSeen) return esd;
6f791cc3 160
28b4012a 161 // Read the details of the rung
52047b6f 162 fInspector.ReadRunDetails(esd);
28b4012a 163
164 // If we weren't initialised before (i.e., in the setup), do so now.
165 if (!GetManager().IsInit()) {
166 GetManager().Init(fInspector.GetCollisionSystem(),
167 fInspector.GetEnergy(),
168 fInspector.GetField());
169 AliInfo("Manager of corrections in AliCentralMultiplicityTask init");
170 }
171
172 // Check for existence and get secondary map
52047b6f 173 AliCentralCorrSecondaryMap* secMap = GetManager().GetSecMap();
28b4012a 174 if (!secMap) AliFatal("No secondary map defined!");
52047b6f 175 const TAxis& vaxis = secMap->GetVertexAxis();
176
28b4012a 177 fNClusterTracklet = new TH2D("nClusterVsnTracklet",
178 "Total number of cluster vs number of tracklets",
179 100, 0, 100, 100, 0, 100);
180 fNClusterTracklet->SetDirectory(0);
181 fNClusterTracklet->SetXTitle("# of free clusters");
182 fNClusterTracklet->SetYTitle("# of tracklets");
183 fNClusterTracklet->SetStats(0);
184 fList->Add(fNClusterTracklet);
185
186 Int_t nEta = 80;
187 Double_t lEta = 2;
188 fClusterPerTracklet = new TH2D("clusterPerTracklet",
189 "N_{free cluster}/N_{tracklet} vs. #eta",
190 nEta,-lEta,lEta, 101, -.05, 10.05);
191 fClusterPerTracklet->SetDirectory(0);
192 fClusterPerTracklet->SetXTitle("#eta");
193 fClusterPerTracklet->SetYTitle("N_{free cluster}/N_{tracklet}");
194 fClusterPerTracklet->SetStats(0);
195 fList->Add(fClusterPerTracklet);
196
197 // Cache histograms
198 fNCluster = new TH1D("cacheCluster", "", nEta,-lEta,lEta);
199 fNCluster->SetDirectory(0);
200 fNCluster->Sumw2();
201
202 fNTracklet = new TH1D("cacheTracklet", "", nEta,-lEta,lEta);
203 fNTracklet->SetDirectory(0);
204 fNTracklet->Sumw2();
205
206 // Initialize the inspecto
52047b6f 207 fInspector.Init(vaxis);
52047b6f 208 fFirstEventSeen = kTRUE;
28b4012a 209
210 // Print some information
52047b6f 211 Print();
212
213 return esd;
6f791cc3 214}
52047b6f 215//____________________________________________________________________
216void
217AliCentralMultiplicityTask::MarkEventForStore() const
218{
219 // Make sure the AOD tree is filled
220 AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
221 AliAODHandler* ah =
222 dynamic_cast<AliAODHandler*>(am->GetOutputEventHandler());
223 if (!ah)
224 AliFatal("No AOD output handler set in analysis manager");
225
226 ah->SetFillAOD(kTRUE);
227}
228
6f791cc3 229//____________________________________________________________________
3e478dba 230void AliCentralMultiplicityTask::UserExec(Option_t* /*option*/)
231{
fb3430ac 232 //
233 // Process each event
234 //
235 // Parameters:
236 // option Not used
237 //
c4a7e081 238 fAODCentral.Clear("");
52047b6f 239 fIvz = 0;
240
241 AliESDEvent* esd = GetESDEvent();
6f791cc3 242
52047b6f 243 Bool_t lowFlux = kFALSE;
244 UInt_t triggers = 0;
245 UShort_t ivz = 0;
246 Double_t vz = 0;
247 Double_t cent = -1;
248 UShort_t nClusters = 0;
249 UInt_t found = fInspector.Process(esd, triggers, lowFlux,
250 ivz, vz, cent, nClusters);
251
252 // No event or no trigger
253 if (found & AliFMDEventInspector::kNoEvent) return;
254 if (found & AliFMDEventInspector::kNoTriggers) return;
6f791cc3 255
256 // Make sure AOD is filled
52047b6f 257 MarkEventForStore();
258
259 if (found == AliFMDEventInspector::kNoSPD) return;
260 if (found == AliFMDEventInspector::kNoVertex) return;
261 if (triggers & AliAODForwardMult::kPileUp) return;
262 if (found == AliFMDEventInspector::kBadVertex) return; // Out of range
6f791cc3 263
264 //Doing analysis
52047b6f 265 fIvz = ivz;
6f791cc3 266 const AliMultiplicity* spdmult = esd->GetMultiplicity();
52047b6f 267
268 TH2D& aodHist = fAODCentral.GetHistogram();
269
270 ProcessESD(aodHist, spdmult);
271 CorrectData(aodHist, ivz);
272
273 PostData(1,fList);
274}
275//____________________________________________________________________
276void
277AliCentralMultiplicityTask::ProcessESD(TH2D& aodHist,
278 const AliMultiplicity* spdmult) const
279{
28b4012a 280 fNTracklet->Reset();
281 fNCluster->Reset();
282
6f791cc3 283 //Filling clusters in layer 1 used for tracklets...
28b4012a 284 for(Int_t j = 0; j< spdmult->GetNumberOfTracklets();j++) {
285 Double_t eta = spdmult->GetEta(j);
286 fNTracklet->Fill(eta);
287 aodHist.Fill(eta,spdmult->GetPhi(j));
288 }
3e478dba 289
6f791cc3 290 //...and then the unused ones in layer 1
28b4012a 291 for(Int_t j = 0; j< spdmult->GetNumberOfSingleClusters();j++) {
292 Double_t eta = -TMath::Log(TMath::Tan(spdmult->GetThetaSingle(j)/2.));
293 fNCluster->Fill(eta);
294 aodHist.Fill(eta, spdmult->GetPhiSingle(j));
295 }
296 fNClusterTracklet->Fill(fNCluster->GetEntries(),
297 fNTracklet->GetEntries());
298
299 fNCluster->Divide(fNTracklet);
300 for (Int_t j = 1; j <= fNCluster->GetNbinsX(); j++)
301 fClusterPerTracklet->Fill(fNCluster->GetXaxis()->GetBinCenter(j),
302 fNCluster->GetBinContent(j));
303
52047b6f 304}
305
306//____________________________________________________________________
307void
308AliCentralMultiplicityTask::CorrectData(TH2D& aodHist, UShort_t vtxbin) const
309{
3e478dba 310 // Corrections
6f791cc3 311 TH1D* hAcceptance = fManager.GetAcceptanceCorrection(vtxbin);
9453b19e 312 TH2D* hSecMap = fManager.GetSecMapCorrection(vtxbin);
12fffad7 313
9453b19e 314 if (!hSecMap) AliFatal("No secondary map!");
315 if (!hAcceptance) AliFatal("No acceptance!");
dbe8d9ed 316
52047b6f 317 if (fUseSecondary && hSecMap) aodHist.Divide(hSecMap);
6f791cc3 318
52047b6f 319 for(Int_t nx = 1; nx <= aodHist.GetNbinsX(); nx++) {
3b2bfb07 320 Float_t accCor = hAcceptance->GetBinContent(nx);
9453b19e 321 Float_t accErr = hAcceptance->GetBinError(nx);
6f791cc3 322
323 Bool_t etabinSeen = kFALSE;
52047b6f 324 for(Int_t ny = 1; ny <= aodHist.GetNbinsY(); ny++) {
9453b19e 325 // Get currrent value
52047b6f 326 Float_t aodValue = aodHist.GetBinContent(nx,ny);
327 Float_t aodErr = aodHist.GetBinError(nx,ny);
9453b19e 328
329 // Set underflow bin
12fffad7 330 Float_t secCor = 0;
52047b6f 331 if(hSecMap) secCor = hSecMap->GetBinContent(nx,ny);
3b2bfb07 332 if (secCor > 0.5) etabinSeen = kTRUE;
52047b6f 333 if (aodValue < 0.000001) {
334 aodHist.SetBinContent(nx,ny, 0);
335 continue;
336 }
9453b19e 337
338 if (!fUseAcceptance) continue;
339
340 // Acceptance correction
3b2bfb07 341 if (accCor < 0.000001) accCor = 1;
342 Float_t aodNew = aodValue / accCor ;
12fffad7 343 Float_t error = aodNew*TMath::Sqrt(TMath::Power(aodErr/aodValue,2) +
344 TMath::Power(accErr/accCor,2) );
52047b6f 345 aodHist.SetBinContent(nx,ny, aodNew);
12fffad7 346 //test
52047b6f 347 aodHist.SetBinError(nx,ny,error);
348 aodHist.SetBinError(nx,ny,aodErr);
6f791cc3 349
350 }
351 //Filling underflow bin if we eta bin is in range
52047b6f 352 if(etabinSeen) aodHist.SetBinContent(nx,0, 1.);
6f791cc3 353 }
6f791cc3 354}
52047b6f 355
6f791cc3 356//____________________________________________________________________
3e478dba 357void AliCentralMultiplicityTask::Terminate(Option_t* /*option*/)
358{
fb3430ac 359 //
360 // End of job
361 //
362 // Parameters:
363 // option Not used
364 //
6f791cc3 365}
366//____________________________________________________________________
367void
52047b6f 368AliCentralMultiplicityTask::Print(Option_t* option) const
6f791cc3 369{
fb3430ac 370 //
371 // Print information
372 //
373 // Parameters:
374 // option Not used
375 //
52047b6f 376 std::cout << ClassName() << ": " << GetName() << "\n"
377 << std::boolalpha
378 << " Use secondary correction: " << fUseSecondary << '\n'
379 << " Use acceptance correction: " << fUseAcceptance << '\n'
380 << " Off-line trigger mask: 0x"
381 << std::hex << std::setfill('0')
382 << std::setw (8) << fOfflineTriggerMask
383 << std::dec << std::setfill (' ')
384 << std::noboolalpha << std::endl;
385 gROOT->IncreaseDirLevel();
386 fManager.Print(option);
387 fInspector.Print(option);
388 gROOT->DecreaseDirLevel();
389
6f791cc3 390}
3e478dba 391//====================================================================
6f791cc3 392AliCentralMultiplicityTask::Manager::Manager() :
393 fAcceptancePath("$ALICE_ROOT/PWG2/FORWARD/corrections/CentralAcceptance"),
394 fSecMapPath("$ALICE_ROOT/PWG2/FORWARD/corrections/CentralSecMap"),
395 fAcceptance(),
396 fSecmap(),
397 fAcceptanceName("centralacceptance"),
e58000b7 398 fSecMapName("centralsecmap"),
399 fIsInit(kFALSE)
6f791cc3 400{
fb3430ac 401 //
402 // Constructor
403 //
6f791cc3 404}
405//____________________________________________________________________
3e478dba 406AliCentralMultiplicityTask::Manager::Manager(const Manager& o)
407 :fAcceptancePath(o.fAcceptancePath),
408 fSecMapPath(o.fSecMapPath),
409 fAcceptance(o.fAcceptance),
410 fSecmap(o.fSecmap),
411 fAcceptanceName(o.fAcceptanceName),
e58000b7 412 fSecMapName(o.fSecMapName),
413 fIsInit(o.fIsInit)
fb3430ac 414{
415 //
416 // Copy Constructor
417 //
418}
3e478dba 419//____________________________________________________________________
420AliCentralMultiplicityTask::Manager&
421AliCentralMultiplicityTask::Manager::operator=(const Manager& o)
422{
fb3430ac 423 //
424 // Assignment operator
425 //
3e478dba 426 fAcceptancePath = o.fAcceptancePath;
427 fSecMapPath = o.fSecMapPath;
428 fAcceptance = o.fAcceptance;
429 fSecmap = o.fSecmap;
430 fAcceptanceName = o.fAcceptanceName;
431 fSecMapName = o.fSecMapName;
e58000b7 432 fIsInit = o.fIsInit;
3e478dba 433 return *this;
434}
435
436//____________________________________________________________________
437const char*
438AliCentralMultiplicityTask::Manager::GetFullFileName(UShort_t what,
439 UShort_t sys,
440 UShort_t sNN,
441 Short_t field) const
442{
fb3430ac 443 //
444 // Get full path name to object file
445 //
446 // Parameters:
447 // what What to get
448 // sys Collision system
449 // sNN Center of mass energy
450 // field Magnetic field
451 //
452 // Return:
453 //
454 //
3e478dba 455 return Form("%s/%s",
456 what == 0 ? GetSecMapPath() : GetAcceptancePath(),
457 GetFileName(what, sys, sNN, field));
458}
459
460//____________________________________________________________________
461const char*
462AliCentralMultiplicityTask::Manager::GetFileName(UShort_t what ,
463 UShort_t sys,
464 UShort_t sNN,
465 Short_t field) const
466{
fb3430ac 467 //
468 // Get the full path name
469 //
470 // Parameters:
471 // what What to get
472 // sys Collision system
473 // sNN Center of mass energy
474 // field Magnetic field
475 //
476 // Return:
477 //
478 //
3e478dba 479 // Must be static - otherwise the data may disappear on return from
480 // this member function
481 static TString fname = "";
6f791cc3 482
483 switch(what) {
28b4012a 484 case 0: fname = fSecMapName; break;
485 case 1: fname = fAcceptanceName; break;
6f791cc3 486 default:
3e478dba 487 ::Error("GetFileName",
488 "Invalid indentifier %d for central object, must be 0 or 1!", what);
6f791cc3 489 break;
490 }
28b4012a 491 fname.Append(Form("_%s_%04dGeV_%c%1dkG.root",
6f791cc3 492 AliForwardUtil::CollisionSystemString(sys),
493 sNN, (field < 0 ? 'm' : 'p'), TMath::Abs(field)));
494
495 return fname.Data();
6f791cc3 496}
3e478dba 497
6f791cc3 498//____________________________________________________________________
3e478dba 499TH2D*
500AliCentralMultiplicityTask::Manager::GetSecMapCorrection(UShort_t vtxbin) const
501{
fb3430ac 502 //
503 // Get the secondary map
504 //
505 // Parameters:
506 // vtxbin
507 //
508 // Return:
509 //
510 //
3e478dba 511 if (!fSecmap) {
512 ::Warning("GetSecMapCorrection","No secondary map defined");
513 return 0;
514 }
515 return fSecmap->GetCorrection(vtxbin);
516}
517//____________________________________________________________________
518TH1D*
519AliCentralMultiplicityTask::Manager::GetAcceptanceCorrection(UShort_t vtxbin)
520 const
521{
fb3430ac 522 //
523 // Get the acceptance correction
524 //
525 // Parameters:
526 // vtxbin
527 //
528 // Return:
529 //
530 //
3e478dba 531 if (!fAcceptance) {
532 ::Warning("GetAcceptanceCorrection","No acceptance map defined");
533 return 0;
534 }
535 return fAcceptance->GetCorrection(vtxbin);
536}
537
538//____________________________________________________________________
539void
540AliCentralMultiplicityTask::Manager::Init(UShort_t sys,
541 UShort_t sNN,
542 Short_t field)
543{
fb3430ac 544 //
545 // Initialize
546 //
547 // Parameters:
548 // sys Collision system (1: pp, 2: PbPb)
549 // sNN Center of mass energy per nucleon pair [GeV]
550 // field Magnetic field [kG]
551 //
e58000b7 552 if(fIsInit) ::Warning("Init","Already initialised - overriding...");
553
6f791cc3 554 TFile fsec(GetFullFileName(0,sys,sNN,field));
3e478dba 555 fSecmap =
556 dynamic_cast<AliCentralCorrSecondaryMap*>(fsec.Get(fSecMapName.Data()));
6f791cc3 557 if(!fSecmap) {
3e478dba 558 ::Error("Init", "no central Secondary Map found!") ;
6f791cc3 559 return;
560 }
561 TFile facc(GetFullFileName(1,sys,sNN,field));
3e478dba 562 fAcceptance =
563 dynamic_cast<AliCentralCorrAcceptance*>(facc.Get(fAcceptanceName.Data()));
564 if(!fAcceptance) {
565 ::Error("Init", "no central Acceptance found!") ;
566 return;
567 }
e58000b7 568
569 if(fSecmap && fAcceptance) {
570 fIsInit = kTRUE;
571 ::Info("Init",
52047b6f 572 "Central Manager initialised for %s, energy %dGeV, field %dkG",
573 sys == 1 ? "pp" : sys == 2 ? "PbPb" : "unknown", sNN,field);
574 }
575}
28b4012a 576//____________________________________________________________________
577Bool_t
578AliCentralMultiplicityTask::Manager::WriteFile(UShort_t what,
579 UShort_t sys,
580 UShort_t sNN,
581 Short_t fld,
582 TObject* obj,
583 Bool_t full) const
584{
585 //
586 // Write correction output to (a temporary) file
587 //
588 // Parameters:
589 // What What to write
590 // sys Collision system (1: pp, 2: PbPb)
591 // sNN Center of mass energy per nucleon (GeV)
592 // fld Field (kG)
593 // obj Object to write
594 // full if true, write to full path, otherwise locally
595 //
596 // Return:
597 // true on success.
598 TString ofName;
599 if (!full)
600 ofName = GetFileName(what, sys, sNN, fld);
601 else
602 ofName = GetFullFileName(what, sys, sNN, fld);
603 if (ofName.IsNull()) {
604 AliErrorGeneral("Manager",Form("Unknown object type %d", what));
605 return false;
606 }
607 TFile* output = TFile::Open(ofName, "RECREATE");
608 if (!output) {
609 AliErrorGeneral("Manager",Form("Failed to open file %s", ofName.Data()));
610 return false;
611 }
612
613 TString oName(GetObjectName(what));
614 Int_t ret = obj->Write(oName);
615 if (ret <= 0) {
616 AliErrorGeneral("Manager",Form("Failed to write %p to %s/%s (%d)",
617 obj, ofName.Data(), oName.Data(), ret));
618 return false;
619 }
620
621 ret = output->Write();
622 if (ret < 0) {
623 AliErrorGeneral("Manager",
624 Form("Failed to write %s to disk (%d)", ofName.Data(),ret));
625 return false;
626 }
627 output->ls();
628 output->Close();
629
630 TString cName(obj->IsA()->GetName());
631 AliInfoGeneral("Manager",
632 Form("Wrote %s object %s to %s\n",
633 cName.Data(),oName.Data(), ofName.Data()));
634 if (!full) {
635 TString dName(GetFileDir(what));
636 AliInfoGeneral("Manager",
637 Form("%s should be copied to %s\n"
638 "Do for example\n\t"
639 "aliroot $ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/"
640 "MoveCorrections.C\\(%d\\)\nor\n\t"
641 "cp %s %s/",
642 ofName.Data(),dName.Data(),
643 what, ofName.Data(),
644 gSystem->ExpandPathName(dName.Data())));
645
646
647 }
648 return true;
649}
6f791cc3 650
52047b6f 651//____________________________________________________________________
652void
653AliCentralMultiplicityTask::Manager::Print(Option_t* option) const
654{
28b4012a 655 //
656 // Print information to standard output
657 //
52047b6f 658 std::cout << " AliCentralMultiplicityTask::Manager\n"
659 << std::boolalpha
660 << " Initialized: " << fIsInit << '\n'
661 << " Acceptance path: " << fAcceptancePath << '\n'
662 << " Acceptance name: " << fAcceptanceName << '\n'
663 << " Acceptance: " << fAcceptance << '\n'
664 << " Secondary path: " << fSecMapPath << '\n'
665 << " Secondary name: " << fSecMapName << '\n'
666 << " Secondary map: " << fSecmap
667 << std::noboolalpha << std::endl;
668 if (fAcceptance) fAcceptance->Print(option);
669 if (fSecmap) fSecmap->Print(option);
6f791cc3 670}
52047b6f 671
6f791cc3 672//
673// EOF
674//