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 "AliCentralCorrectionManager.h"
17 #include "AliCentralCorrAcceptance.h"
18 #include "AliCentralCorrSecondaryMap.h"
19 #include "AliForwardUtil.h"
20 #include "AliAODForwardMult.h"
22 #include "AliAODHandler.h"
23 #include "AliInputEventHandler.h"
24 #include "AliESDInputHandler.h"
25 #include "AliAnalysisManager.h"
26 #include "AliESDEvent.h"
27 #include "AliMultiplicity.h"
28 #include "AliFMDEventInspector.h"
29 #include <AliMCEvent.h>
30 #include <AliTrackReference.h>
41 //====================================================================
42 AliCentralMCMultiplicityTask::AliCentralMCMultiplicityTask(const char* name)
43 : AliCentralMultiplicityTask(name),
50 DGUARD(fDebug,3,"Named CTOR of AliCentralMCMultiplicityTask: %s",
53 "ESD:AliESDRun.,AliESDHeader.,AliMultiplicity.,"
54 "SPDVertex.,PrimaryVertex.";
56 //____________________________________________________________________
57 AliCentralMCMultiplicityTask::AliCentralMCMultiplicityTask()
58 : AliCentralMultiplicityTask(),
65 DGUARD(fDebug, 3,"Default CTOR of AliCentralMCMultiplicityTask");
67 //____________________________________________________________________
69 AliCentralMCMultiplicityTask::CreateBranches(AliAODHandler* ah)
72 // Create output objects
75 DGUARD(fDebug,1,"Create user output in AliCentralMCMultiplicityTask");
76 AliCentralMultiplicityTask::CreateBranches(ah);
79 // AliFatal("No AOD output handler set in analysis manager");
83 TObject* obj = &fAODMCCentral;
84 ah->AddBranch("AliAODCentralMult", &obj);
86 //____________________________________________________________________
88 AliCentralMCMultiplicityTask::Book()
90 AliCentralMultiplicityTask::Book();
91 fTrackDensity.CreateOutputObjects(fList);
94 //____________________________________________________________________
95 Bool_t AliCentralMCMultiplicityTask::PreData(const TAxis& v, const TAxis& e)
97 AliCentralMultiplicityTask::PreData(v, e);
98 fAODMCCentral.Init(e);
102 //____________________________________________________________________
103 Bool_t AliCentralMCMultiplicityTask::PreEvent()
105 AliCentralMultiplicityTask::PreEvent();
106 fAODMCCentral.Clear("");
109 //____________________________________________________________________
110 Bool_t AliCentralMCMultiplicityTask::Event(AliESDEvent& esd)
113 // Process each event
118 DGUARD(fDebug,1,"Process event in AliCentralMCMultiplicityTask");
121 Bool_t lowFlux = kFALSE;
126 UShort_t nClusters = 0;
127 UInt_t found = fInspector.Process(&esd, triggers, lowFlux,
128 ivz, ip, cent, nClusters);
130 // Make sure AOD is filled
133 // Is this accepted for analysis?
134 Bool_t isAccepted = true;
136 // No event or no trigger
137 if (found & AliFMDEventInspector::kNoEvent) isAccepted = false;
138 if (found & AliFMDEventInspector::kNoTriggers) isAccepted = false;
139 if (found & AliFMDEventInspector::kNoSPD) isAccepted = false;
140 if (found & AliFMDEventInspector::kNoVertex) isAccepted = false;
141 if (triggers & AliAODForwardMult::kPileUp) isAccepted = false;
142 if (found & AliFMDEventInspector::kBadVertex) isAccepted = false;
144 VtxBin* bin = static_cast<VtxBin*>(fVtxList->At(ivz));
145 if (!bin) return false;
149 const AliMultiplicity* spdmult = esd.GetMultiplicity();
150 TH2D& aodHist = fAODCentral.GetHistogram();
152 ProcessESD(aodHist, spdmult);
153 bin->Correct(aodHist, fUseSecondary, fUseAcceptance);
155 if (triggers & AliAODForwardMult::kInel)
156 fHData->Add(&(fAODCentral.GetHistogram()));
159 const AliMCEvent* mcEvent = MCEvent();
160 if (!mcEvent) return false;
161 TH2D& hist = fAODMCCentral.GetHistogram();
164 fTrackDensity.Calculate(*mcEvent, ip.Z(), hist, NULL);
165 bin->Correct(hist, fUseSecondary, fUseAcceptance, false);
170 //____________________________________________________________________
172 AliCentralMCMultiplicityTask::Print(Option_t* option) const
180 AliCentralMultiplicityTask::Print(option);
181 gROOT->IncreaseDirLevel();
182 fTrackDensity.Print(option);
183 gROOT->DecreaseDirLevel();