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),
48 //____________________________________________________________________
49 AliCentralMCMultiplicityTask::AliCentralMCMultiplicityTask()
50 : AliCentralMultiplicityTask(),
58 //____________________________________________________________________
59 AliCentralMCMultiplicityTask::AliCentralMCMultiplicityTask(const AliCentralMCMultiplicityTask& o)
60 : AliCentralMultiplicityTask(o),
61 fTrackDensity(o.fTrackDensity),
62 fAODMCCentral(o.fAODMCCentral)
68 //____________________________________________________________________
69 AliCentralMCMultiplicityTask&
70 AliCentralMCMultiplicityTask::operator=(const AliCentralMCMultiplicityTask& o)
73 // Assignment operator
75 AliCentralMultiplicityTask::operator=(o);
76 fAODMCCentral = o.fAODMCCentral;
77 fTrackDensity = o.fTrackDensity;
80 //____________________________________________________________________
81 void AliCentralMCMultiplicityTask::UserCreateOutputObjects()
84 // Create output objects
87 AliCentralMultiplicityTask::UserCreateOutputObjects();
89 AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
91 dynamic_cast<AliAODHandler*>(am->GetOutputEventHandler());
92 if (!ah) AliFatal("No AOD output handler set in analysis manager");
95 TObject* obj = &fAODMCCentral;
96 ah->AddBranch("AliAODCentralMult", &obj);
99 fTrackDensity.DefineOutput(fList);
102 //____________________________________________________________________
103 void AliCentralMCMultiplicityTask::UserExec(Option_t* option)
106 // Process each event
111 fAODMCCentral.Clear("");
114 AliCentralMultiplicityTask::UserExec(option);
116 // check if we need this event
117 AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
119 dynamic_cast<AliAODHandler*>(am->GetOutputEventHandler());
121 AliFatal("No AOD output handler set in analysis manager");
123 // if base class did not want this event, then neither to we
124 if (!ah->GetFillAOD() || fIvz <= 0) return;
126 const AliMCEvent* mcEvent = MCEvent();
127 TH2D& hist = fAODMCCentral.GetHistogram();
129 Double_t vz = GetManager().GetSecMap()->GetVertexAxis().GetBinCenter(fIvz);
131 fTrackDensity.Calculate(*mcEvent, vz, hist, NULL);
133 CorrectData(hist, fIvz);
137 //____________________________________________________________________
138 void AliCentralMCMultiplicityTask::Terminate(Option_t* option)
146 AliCentralMultiplicityTask::Terminate(option);
148 //____________________________________________________________________
150 AliCentralMCMultiplicityTask::Print(Option_t* option) const
158 AliCentralMultiplicityTask::Print(option);
159 gROOT->IncreaseDirLevel();
160 fTrackDensity.Print(option);
161 gROOT->DecreaseDirLevel();