]>
Commit | Line | Data |
---|---|---|
b2e7f2d6 | 1 | //==================================================================== |
2 | #include "AliForwarddNdetaTask.h" | |
3 | #include <TMath.h> | |
4 | #include <TH2D.h> | |
5 | #include <TH1D.h> | |
6 | #include <THStack.h> | |
7 | #include <TList.h> | |
5bb5d1f6 | 8 | #include <TFile.h> |
b2e7f2d6 | 9 | #include <AliAnalysisManager.h> |
10 | #include <AliAODEvent.h> | |
11 | #include <AliAODHandler.h> | |
12 | #include <AliAODInputHandler.h> | |
13 | #include "AliForwardUtil.h" | |
01caf91f | 14 | #include "AliAODForwardMult.h" |
b2e7f2d6 | 15 | |
16 | //____________________________________________________________________ | |
17 | AliForwarddNdetaTask::AliForwarddNdetaTask() | |
e1f47419 | 18 | : AliBasedNdetaTask() |
fb3430ac | 19 | { |
20 | // | |
21 | // Constructor | |
22 | // | |
6ab100ec | 23 | DGUARD(fDebug, 0, "Default CTOR of AliForwarddNdetaTask"); |
fb3430ac | 24 | } |
b2e7f2d6 | 25 | |
26 | //____________________________________________________________________ | |
27 | AliForwarddNdetaTask::AliForwarddNdetaTask(const char* /* name */) | |
e1f47419 | 28 | : AliBasedNdetaTask("Forward") |
b2e7f2d6 | 29 | { |
fb3430ac | 30 | // |
31 | // Constructor | |
32 | // | |
33 | // Paramters | |
34 | // name Name of task | |
4bcdcbc1 | 35 | SetTitle("FMD"); |
6ab100ec | 36 | DGUARD(fDebug, 0, "Named CTOR of AliForwarddNdetaTask"); |
b2e7f2d6 | 37 | } |
38 | ||
39 | //____________________________________________________________________ | |
40 | AliForwarddNdetaTask::AliForwarddNdetaTask(const AliForwarddNdetaTask& o) | |
e1f47419 | 41 | : AliBasedNdetaTask(o) |
fb3430ac | 42 | { |
43 | // | |
44 | // Copy constructor | |
45 | // | |
6ab100ec | 46 | DGUARD(fDebug, 0, "Copy CTOR of AliForwarddNdetaTask"); |
fb3430ac | 47 | } |
b2e7f2d6 | 48 | |
e1f47419 | 49 | //____________________________________________________________________ |
50 | AliBasedNdetaTask::CentralityBin* | |
51 | AliForwarddNdetaTask::MakeCentralityBin(const char* name, Short_t l, Short_t h) | |
52 | const | |
53 | { | |
54 | // | |
55 | // Make a new centrality bin | |
56 | // | |
57 | // Parameters: | |
58 | // name Histogram names | |
59 | // l Lower cut | |
60 | // h Upper cut | |
61 | // | |
62 | // Return: | |
63 | // Newly allocated object (of our type) | |
64 | // | |
6ab100ec | 65 | DGUARD(fDebug, 3,"Make a centrality bin for AliForwarddNdetaTask: %s [%d,%d]", |
66 | name, l, h); | |
e1f47419 | 67 | return new AliForwarddNdetaTask::CentralityBin(name, l, h); |
68 | } | |
69 | ||
e1f47419 | 70 | |
b2e7f2d6 | 71 | //____________________________________________________________________ |
72 | TH2D* | |
fb3430ac | 73 | AliForwarddNdetaTask::GetHistogram(const AliAODEvent* aod, Bool_t mc) |
b2e7f2d6 | 74 | { |
fb3430ac | 75 | // |
76 | // Retrieve the histogram | |
77 | // | |
78 | // Parameters: | |
79 | // aod AOD event | |
80 | // mc Whether to get the MC histogram or not | |
81 | // | |
82 | // Return: | |
83 | // Retrieved histogram or null | |
84 | // | |
fe52e455 | 85 | TObject* obj = 0; |
86 | if (mc) obj = aod->FindListObject("ForwardMC"); | |
87 | else obj = aod->FindListObject("Forward"); | |
b2e7f2d6 | 88 | |
89 | // We should have a forward object at least | |
fe52e455 | 90 | if (!obj) { |
91 | if (!mc) AliWarning("No Forward object found AOD"); | |
92 | return 0; | |
93 | } | |
94 | AliAODForwardMult* forward = static_cast<AliAODForwardMult*>(obj); | |
e1f47419 | 95 | return &(forward->GetHistogram()); |
96 | } | |
fe52e455 | 97 | |
e1f47419 | 98 | //======================================================================== |
99 | void | |
e1f47419 | 100 | AliForwarddNdetaTask::CentralityBin::End(TList* sums, |
101 | TList* results, | |
ffca499d | 102 | UShort_t scheme, |
f67d699c | 103 | const TH2F* shapeCorr, |
e1f47419 | 104 | Double_t trigEff, |
66cf95f2 | 105 | Double_t trigEff0, |
e1f47419 | 106 | Bool_t symmetrice, |
107 | Int_t rebin, | |
c25b5e1b | 108 | Bool_t rootProj, |
e1f47419 | 109 | Bool_t corrEmpty, |
c25b5e1b | 110 | Bool_t cutEdges, |
ffca499d | 111 | Int_t triggerMask, |
9ecab72f | 112 | Int_t marker, |
c89b9ac1 | 113 | Int_t color, |
114 | TList* mclist, | |
115 | TList* truthlist ) | |
b2e7f2d6 | 116 | { |
6ab100ec | 117 | DGUARD(fDebug, 1, "In End of %s with corrEmpty=%d, cutEdges=%d, rootProj=%d", |
118 | GetName(), corrEmpty, cutEdges, rootProj); | |
ffca499d | 119 | AliBasedNdetaTask::CentralityBin::End(sums, results, scheme, |
66cf95f2 | 120 | shapeCorr, trigEff, trigEff0, |
c25b5e1b | 121 | symmetrice, rebin, |
122 | rootProj, corrEmpty, cutEdges, | |
6ab100ec | 123 | triggerMask, marker, color, mclist, |
124 | truthlist); | |
5bb5d1f6 | 125 | |
126 | if (!IsAllBin()) return; | |
127 | TFile* file = TFile::Open("forward.root", "READ"); | |
128 | if (!file) return; | |
129 | ||
130 | TList* forward = static_cast<TList*>(file->Get("Forward")); | |
131 | if (!forward) { | |
132 | AliError("List Forward not found in forward.root"); | |
133 | return; | |
134 | } | |
135 | TList* rings = static_cast<TList*>(forward->FindObject("ringResults")); | |
136 | if (!rings) { | |
137 | AliError("List ringResults not found in forward.root"); | |
138 | return; | |
139 | } | |
140 | THStack* res = static_cast<THStack*>(rings->FindObject("all")); | |
141 | if (!res) { | |
142 | AliError(Form("Stack all not found in %s", rings->GetName())); | |
143 | return; | |
144 | } | |
145 | if (!fTriggers) { | |
146 | AliError("Triggers histogram not set"); | |
147 | return; | |
148 | } | |
66cf95f2 | 149 | |
5bb5d1f6 | 150 | Double_t ntotal = 0; |
151 | Double_t epsilonT = trigEff; | |
66cf95f2 | 152 | #if 0 |
5bb5d1f6 | 153 | // TEMPORARY FIX |
154 | if (triggerMask == AliAODForwardMult::kNSD) { | |
155 | // This is a local change | |
156 | epsilonT = 0.92; | |
157 | AliWarning(Form("Using hard-coded NSD trigger efficiency of %f",epsilonT)); | |
158 | } | |
66cf95f2 | 159 | #endif |
5bb5d1f6 | 160 | AliInfo("Adding per-ring histograms to output"); |
161 | Double_t scaler = Normalization(*fTriggers, scheme, epsilonT, ntotal); | |
162 | TIter next(res->GetHists()); | |
163 | TH1* hist = 0; | |
164 | while ((hist = static_cast<TH1*>(next()))) hist->Scale(scaler); | |
165 | res->SetName("dndetaRings"); | |
166 | fOutput->Add(res); | |
b2e7f2d6 | 167 | } |
168 | ||
169 | //________________________________________________________________________ | |
fe52e455 | 170 | // |
171 | // EOF | |
172 | // |