1 //====================================================================
3 // Base class for classes that calculate the multiplicity in the
4 // central region event-by-event
10 // - AliAODCentralMult
15 #include "AliCentralMCMultiplicityTask.h"
16 #include "AliForwardCorrectionManager.h"
17 #include "AliForwardUtil.h"
19 #include "AliAODHandler.h"
20 #include "AliInputEventHandler.h"
21 #include "AliESDInputHandler.h"
22 #include "AliAnalysisManager.h"
23 #include "AliESDEvent.h"
24 #include "AliMultiplicity.h"
25 #include "AliFMDEventInspector.h"
26 #include <AliMCEvent.h>
27 #include <AliTrackReference.h>
38 //====================================================================
39 AliCentralMCMultiplicityTask::AliCentralMCMultiplicityTask(const char* name)
40 : AliCentralMultiplicityTask(name),
47 DGUARD(fDebug,0,"Named CTOR of AliCentralMCMultiplicityTask: %s", name);
49 //____________________________________________________________________
50 AliCentralMCMultiplicityTask::AliCentralMCMultiplicityTask()
51 : AliCentralMultiplicityTask(),
58 DGUARD(fDebug,0,"Default CTOR of AliCentralMCMultiplicityTask");
60 //____________________________________________________________________
61 AliCentralMCMultiplicityTask::AliCentralMCMultiplicityTask(const AliCentralMCMultiplicityTask& o)
62 : AliCentralMultiplicityTask(o),
63 fTrackDensity(o.fTrackDensity),
64 fAODMCCentral(o.fAODMCCentral)
69 DGUARD(fDebug,0,"COPY CTOR of AliCentralMCMultiplicityTask");
71 //____________________________________________________________________
72 AliCentralMCMultiplicityTask&
73 AliCentralMCMultiplicityTask::operator=(const AliCentralMCMultiplicityTask& o)
76 // Assignment operator
78 DGUARD(fDebug,3,"Assignment of AliCentralMCMultiplicityTask");
79 if (&o == this) return *this;
80 AliCentralMultiplicityTask::operator=(o);
81 fAODMCCentral = o.fAODMCCentral;
82 fTrackDensity = o.fTrackDensity;
85 //____________________________________________________________________
86 void AliCentralMCMultiplicityTask::UserCreateOutputObjects()
89 // Create output objects
92 DGUARD(fDebug,1,"Create user output in AliCentralMCMultiplicityTask");
93 AliCentralMultiplicityTask::UserCreateOutputObjects();
95 AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
97 dynamic_cast<AliAODHandler*>(am->GetOutputEventHandler());
98 if (!ah) AliFatal("No AOD output handler set in analysis manager");
101 TObject* obj = &fAODMCCentral;
102 ah->AddBranch("AliAODCentralMult", &obj);
105 fTrackDensity.DefineOutput(fList);
108 //____________________________________________________________________
109 void AliCentralMCMultiplicityTask::UserExec(Option_t* option)
112 // Process each event
117 DGUARD(fDebug,1,"Process event in AliCentralMCMultiplicityTask");
118 fAODMCCentral.Clear("");
121 AliCentralMultiplicityTask::UserExec(option);
123 // check if we need this event
124 AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
126 dynamic_cast<AliAODHandler*>(am->GetOutputEventHandler());
128 AliFatal("No AOD output handler set in analysis manager");
130 // if base class did not want this event, then neither to we
131 if (!ah->GetFillAOD() || fIvz <= 0) return;
133 const AliMCEvent* mcEvent = MCEvent();
134 if (!mcEvent) return;
135 TH2D& hist = fAODMCCentral.GetHistogram();
137 Double_t vz = GetManager().GetSecMap()->GetVertexAxis().GetBinCenter(fIvz);
139 fTrackDensity.Calculate(*mcEvent, vz, hist, NULL);
141 CorrectData(hist, fIvz);
145 //____________________________________________________________________
146 void AliCentralMCMultiplicityTask::Terminate(Option_t* option)
154 DGUARD(fDebug,1,"Final analysis of merge in AliCentralMCMultiplicityTask");
155 AliCentralMultiplicityTask::Terminate(option);
157 //____________________________________________________________________
159 AliCentralMCMultiplicityTask::Print(Option_t* option) const
167 AliCentralMultiplicityTask::Print(option);
168 gROOT->IncreaseDirLevel();
169 fTrackDensity.Print(option);
170 gROOT->DecreaseDirLevel();