]>
Commit | Line | Data |
---|---|---|
0bd4b00f | 1 | #include "AliFMDEnergyFitterTask.h" |
2 | #include "AliLog.h" | |
3 | // #include "AliFMDAnaParameters.h" | |
4 | #include "AliESDEvent.h" | |
5 | #include "AliAODForwardMult.h" | |
6 | #include "AliForwardCorrectionManager.h" | |
7 | #include "AliAnalysisManager.h" | |
8 | #include <TH1.h> | |
9 | #include <TDirectory.h> | |
10 | #include <TTree.h> | |
11 | ||
12 | //==================================================================== | |
13 | AliFMDEnergyFitterTask::AliFMDEnergyFitterTask() | |
14 | : AliAnalysisTaskSE(), | |
15 | fFirstEvent(true), | |
16 | fEventInspector(), | |
17 | fEnergyFitter(), | |
18 | fList(0) | |
19 | { | |
20 | } | |
21 | ||
22 | //____________________________________________________________________ | |
23 | AliFMDEnergyFitterTask::AliFMDEnergyFitterTask(const char* name) | |
24 | : AliAnalysisTaskSE(name), | |
25 | fFirstEvent(true), | |
26 | fEventInspector("event"), | |
27 | fEnergyFitter("energy"), | |
28 | fList(0) | |
29 | { | |
30 | DefineOutput(1, TList::Class()); | |
31 | } | |
32 | ||
33 | //____________________________________________________________________ | |
34 | AliFMDEnergyFitterTask::AliFMDEnergyFitterTask(const AliFMDEnergyFitterTask& o) | |
35 | : AliAnalysisTaskSE(o), | |
36 | fFirstEvent(o.fFirstEvent), | |
37 | fEventInspector(o.fEventInspector), | |
38 | fEnergyFitter(o.fEnergyFitter), | |
39 | fList(o.fList) | |
40 | { | |
41 | DefineOutput(1, TList::Class()); | |
42 | } | |
43 | ||
44 | //____________________________________________________________________ | |
45 | AliFMDEnergyFitterTask& | |
46 | AliFMDEnergyFitterTask::operator=(const AliFMDEnergyFitterTask& o) | |
47 | { | |
48 | AliAnalysisTaskSE::operator=(o); | |
49 | ||
50 | fFirstEvent = o.fFirstEvent; | |
51 | fEventInspector = o.fEventInspector; | |
52 | fEnergyFitter = o.fEnergyFitter; | |
53 | fList = o.fList; | |
54 | ||
55 | return *this; | |
56 | } | |
57 | ||
58 | //____________________________________________________________________ | |
59 | void | |
60 | AliFMDEnergyFitterTask::SetDebug(Int_t dbg) | |
61 | { | |
62 | fEventInspector.SetDebug(dbg); | |
63 | fEnergyFitter.SetDebug(dbg); | |
64 | } | |
65 | ||
66 | //____________________________________________________________________ | |
67 | void | |
68 | AliFMDEnergyFitterTask::Init() | |
69 | { | |
70 | fFirstEvent = true; | |
71 | } | |
72 | ||
73 | //____________________________________________________________________ | |
74 | void | |
75 | AliFMDEnergyFitterTask::InitializeSubs() | |
76 | { | |
77 | ||
78 | // AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance(); | |
79 | // pars->Init(kTRUE); | |
80 | ||
81 | AliForwardCorrectionManager& fcm = AliForwardCorrectionManager::Instance(); | |
82 | fcm.Init(fEventInspector.GetCollisionSystem(), | |
83 | fEventInspector.GetEnergy(), | |
84 | fEventInspector.GetField(), 0); | |
85 | TAxis eAxis(0,0,0); | |
86 | TAxis vAxis(10,-10,10); | |
87 | fEnergyFitter.Init(eAxis); | |
88 | fEventInspector.Init(vAxis); | |
89 | } | |
90 | ||
91 | //____________________________________________________________________ | |
92 | void | |
93 | AliFMDEnergyFitterTask::UserCreateOutputObjects() | |
94 | { | |
95 | fList = new TList; | |
96 | ||
97 | fEventInspector.DefineOutput(fList); | |
98 | fEnergyFitter.DefineOutput(fList); | |
99 | ||
100 | PostData(1, fList); | |
101 | } | |
102 | //____________________________________________________________________ | |
103 | void | |
104 | AliFMDEnergyFitterTask::UserExec(Option_t*) | |
105 | { | |
106 | // static Int_t cnt = 0; | |
107 | // cnt++; | |
108 | // Get the input data | |
109 | AliESDEvent* esd = dynamic_cast<AliESDEvent*>(InputEvent()); | |
110 | // AliInfo(Form("Event # %6d (esd=%p)", cnt, esd)); | |
111 | if (!esd) { | |
112 | AliWarning("No ESD event found for input event"); | |
113 | return; | |
114 | } | |
115 | ||
116 | // On the first event, initialize the parameters | |
117 | if (fFirstEvent && esd->GetESDRun()) { | |
118 | fEventInspector.ReadRunDetails(esd); | |
119 | ||
120 | AliInfo(Form("Initializing with parameters from the ESD:\n" | |
121 | " AliESDEvent::GetBeamEnergy() ->%f\n" | |
122 | " AliESDEvent::GetBeamType() ->%s\n" | |
123 | " AliESDEvent::GetCurrentL3() ->%f\n" | |
124 | " AliESDEvent::GetMagneticField()->%f\n" | |
125 | " AliESDEvent::GetRunNumber() ->%d\n", | |
126 | esd->GetBeamEnergy(), | |
127 | esd->GetBeamType(), | |
128 | esd->GetCurrentL3(), | |
129 | esd->GetMagneticField(), | |
130 | esd->GetRunNumber())); | |
131 | ||
132 | ||
133 | ||
134 | // AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance(); | |
135 | // pars->SetParametersFromESD(esd); | |
136 | // pars->PrintStatus(); | |
137 | fFirstEvent = false; | |
138 | ||
139 | InitializeSubs(); | |
140 | } | |
141 | Bool_t lowFlux = kFALSE; | |
142 | UInt_t triggers = 0; | |
143 | UShort_t ivz = 0; | |
144 | Double_t vz = 0; | |
145 | UInt_t found = fEventInspector.Process(esd, triggers, lowFlux, ivz, vz); | |
146 | if (found & AliFMDEventInspector::kNoEvent) return; | |
147 | if (found & AliFMDEventInspector::kNoTriggers) return; | |
148 | if (found & AliFMDEventInspector::kNoSPD) return; | |
149 | if (found & AliFMDEventInspector::kNoFMD) return; | |
150 | if (found & AliFMDEventInspector::kNoVertex) return; | |
151 | if (found & AliFMDEventInspector::kBadVertex) return; | |
152 | ||
153 | // Get FMD data | |
154 | AliESDFMD* esdFMD = esd->GetFMDData(); | |
155 | // Do the energy stuff | |
156 | if (!fEnergyFitter.Accumulate(*esdFMD, triggers & AliAODForwardMult::kEmpty)){ | |
157 | AliWarning("Energy fitter failed"); | |
158 | return; | |
159 | } | |
160 | PostData(1, fList); | |
161 | } | |
162 | ||
163 | //____________________________________________________________________ | |
164 | void | |
165 | AliFMDEnergyFitterTask::Terminate(Option_t*) | |
166 | { | |
167 | TList* list = dynamic_cast<TList*>(GetOutputData(1)); | |
168 | if (!list) { | |
169 | AliError(Form("No output list defined (%p)", GetOutputData(1))); | |
170 | if (GetOutputData(1)) GetOutputData(1)->Print(); | |
171 | return; | |
172 | } | |
173 | ||
174 | // Get our histograms from the container | |
175 | TH1I* hEventsTr = 0;//static_cast<TH1I*>(list->FindObject("nEventsTr")); | |
176 | TH1I* hEventsTrVtx = 0;//static_cast<TH1I*>(list->FindObject("nEventsTrVtx")); | |
177 | TH1I* hTriggers = 0; | |
178 | if (!fEventInspector.FetchHistograms(list, hEventsTr, | |
179 | hEventsTrVtx, hTriggers)) { | |
180 | AliError(Form("Didn't get histograms from event selector " | |
181 | "(hEventsTr=%p,hEventsTrVtx=%p)", | |
182 | hEventsTr, hEventsTrVtx)); | |
183 | list->ls(); | |
184 | return; | |
185 | } | |
186 | fEnergyFitter.Fit(list); | |
187 | } | |
188 | ||
189 | //____________________________________________________________________ | |
190 | void | |
191 | AliFMDEnergyFitterTask::Print(Option_t*) const | |
192 | { | |
193 | } | |
194 | ||
195 | // | |
196 | // EOF | |
197 | // |