1 //====================================================================
2 #include "AliForwarddNdetaTask.h"
9 #include <AliAnalysisManager.h>
10 #include <AliAODEvent.h>
11 #include <AliAODHandler.h>
12 #include <AliAODInputHandler.h>
13 #include "AliForwardUtil.h"
14 #include "AliAODForwardMult.h"
16 //____________________________________________________________________
17 AliForwarddNdetaTask::AliForwarddNdetaTask()
23 DGUARD(fDebug, 0, "Default CTOR of AliForwarddNdetaTask");
26 //____________________________________________________________________
27 AliForwarddNdetaTask::AliForwarddNdetaTask(const char* /* name */)
28 : AliBasedNdetaTask("Forward")
36 DGUARD(fDebug, 0, "Named CTOR of AliForwarddNdetaTask");
39 //____________________________________________________________________
40 AliForwarddNdetaTask::AliForwarddNdetaTask(const AliForwarddNdetaTask& o)
41 : AliBasedNdetaTask(o)
46 DGUARD(fDebug, 0, "Copy CTOR of AliForwarddNdetaTask");
49 //____________________________________________________________________
50 AliBasedNdetaTask::CentralityBin*
51 AliForwarddNdetaTask::MakeCentralityBin(const char* name, Short_t l, Short_t h)
55 // Make a new centrality bin
58 // name Histogram names
63 // Newly allocated object (of our type)
65 DGUARD(fDebug, 3,"Make a centrality bin for AliForwarddNdetaTask: %s [%d,%d]",
67 return new AliForwarddNdetaTask::CentralityBin(name, l, h);
71 //____________________________________________________________________
73 AliForwarddNdetaTask::GetHistogram(const AliAODEvent* aod, Bool_t mc)
76 // Retrieve the histogram
80 // mc Whether to get the MC histogram or not
83 // Retrieved histogram or null
86 if (mc) obj = aod->FindListObject("ForwardMC");
87 else obj = aod->FindListObject("Forward");
89 // We should have a forward object at least
91 if (!mc) AliWarning("No Forward object found AOD");
94 AliAODForwardMult* forward = static_cast<AliAODForwardMult*>(obj);
95 return &(forward->GetHistogram());
98 //========================================================================
100 AliForwarddNdetaTask::CentralityBin::End(TList* sums,
103 const TH2F* shapeCorr,
117 DGUARD(fDebug, 1, "In End of %s with corrEmpty=%d, cutEdges=%d, rootProj=%d",
118 GetName(), corrEmpty, cutEdges, rootProj);
119 AliBasedNdetaTask::CentralityBin::End(sums, results, scheme,
120 shapeCorr, trigEff, trigEff0,
122 rootProj, corrEmpty, cutEdges,
123 triggerMask, marker, color, mclist,
126 if (!IsAllBin()) return;
127 TFile* file = TFile::Open("forward.root", "READ");
130 TList* forward = static_cast<TList*>(file->Get("Forward"));
132 AliError("List Forward not found in forward.root");
135 TList* rings = static_cast<TList*>(forward->FindObject("ringResults"));
137 AliError("List ringResults not found in forward.root");
140 THStack* res = static_cast<THStack*>(rings->FindObject("all"));
142 AliError(Form("Stack all not found in %s", rings->GetName()));
146 AliError("Triggers histogram not set");
151 Double_t epsilonT = trigEff;
154 if (triggerMask == AliAODForwardMult::kNSD) {
155 // This is a local change
157 AliWarning(Form("Using hard-coded NSD trigger efficiency of %f",epsilonT));
160 AliInfo("Adding per-ring histograms to output");
162 Double_t scaler = Normalization(*fTriggers, scheme, epsilonT, ntotal, &text);
163 TIter next(res->GetHists());
165 while ((hist = static_cast<TH1*>(next()))) hist->Scale(scaler);
166 res->SetName("dndetaRings");
168 fOutput->Add(new TNamed("normCalc", text.Data()));
171 //________________________________________________________________________