2 // Calculate the FMD eventplane
8 // - AnalysisResults.root
15 #include "AliAnalysisManager.h"
16 #include "AliFMDEventPlaneTask.h"
17 #include "AliAODHandler.h"
18 #include "AliAODInputHandler.h"
19 #include "AliAODForwardMult.h"
20 #include "AliAODEvent.h"
21 #include "AliAODForwardEP.h"
23 ClassImp(AliFMDEventPlaneTask)
28 AliFMDEventPlaneTask::AliFMDEventPlaneTask()
29 : AliAnalysisTaskSE(),
30 fSumList(0), // Sum list
31 fOutputList(0), // Output list
32 fAOD(0), // AOD input event
34 fEventPlaneFinder(), // EP finder
35 fZvertex(1111), // Z vertex
36 fCent(-1), // Centrality
37 fHistCent(), // Diagnostics histogram
38 fHistVertexSel(), // Diagnostics histogram
39 fHistVertexAll() // Diagnostics histogram
42 // Default constructor
44 DGUARD(fDebug, 3,"Default CTOR of AliFMDEventPlaneTask");
46 //_____________________________________________________________________
47 AliFMDEventPlaneTask::AliFMDEventPlaneTask(const char* name)
48 : AliAnalysisTaskSE(name),
49 fSumList(0), // Sum list
50 fOutputList(0), // Output list
51 fAOD(0), // AOD input event
53 fEventPlaneFinder("eventPlane"), // EP finder
54 fZvertex(1111), // Z vertex
55 fCent(-1), // Centrality
56 fHistCent(0), // Diagnostics histogram
57 fHistVertexSel(0), // Diagnostics histogram
58 fHistVertexAll(0) // Diagnostics histogram
67 DGUARD(fDebug, 3,"Named CTOR of AliFMDEventPlaneTask: %s", name);
69 DefineOutput(1, TList::Class());
70 DefineOutput(2, TList::Class());
73 //_____________________________________________________________________
74 AliFMDEventPlaneTask::AliFMDEventPlaneTask(const AliFMDEventPlaneTask& o)
75 : AliAnalysisTaskSE(o),
76 fSumList(o.fSumList), // Sumlist
77 fOutputList(o.fOutputList), // Output list
78 fAOD(o.fAOD), // AOD input event
79 fMC(o.fMC), // MC flag
80 fEventPlaneFinder(o.fEventPlaneFinder), // EP finder
81 fZvertex(o.fZvertex), // Z vertex
82 fCent(o.fCent), // Centrality
83 fHistCent(o.fHistCent), // Diagnostics histogram
84 fHistVertexSel(o.fHistVertexSel), // Diagnostics histogram
85 fHistVertexAll(o.fHistVertexAll) // Diagnostics histogram
91 // o Object to copy from
93 DGUARD(fDebug, 3,"Copy CTOR of AliFMDEventPlaneTask");
95 //_____________________________________________________________________
97 AliFMDEventPlaneTask::operator=(const AliFMDEventPlaneTask& o)
100 // Assignment operator
102 DGUARD(fDebug,3,"Assignment of AliFMDEventPlaneTask");
103 if (&o == this) return *this;
104 fSumList = o.fSumList;
105 fOutputList = o.fOutputList;
108 fEventPlaneFinder = o.fEventPlaneFinder;
109 fZvertex = o.fZvertex;
111 fHistCent = o.fHistCent;
112 fHistVertexSel = o.fHistVertexSel;
113 fHistVertexAll = o.fHistVertexAll;
117 //_____________________________________________________________________
118 void AliFMDEventPlaneTask::UserCreateOutputObjects()
121 // Create output objects
123 DGUARD(fDebug,1,"Create user objects of AliFMDEventPlaneTask");
125 fSumList = new TList();
126 fSumList->SetName("Sums");
127 fSumList->SetOwner();
129 // Diagnostics histograms
130 fHistCent = new TH1D("hCent", "Centralities", 100, 0, 100);
131 fHistVertexSel = new TH1D("hVertexSel", "Selectec vertices", 40, -20, 20);
132 fHistVertexAll = new TH1D("hVertexAll", "All vertices", 40, -20, 20);
134 fSumList->Add(fHistCent);
135 fSumList->Add(fHistVertexSel);
136 fSumList->Add(fHistVertexAll);
138 // Init of EventPlaneFinder
139 TAxis* pe = new TAxis(200, -4., 6.);
140 fEventPlaneFinder.CreateOutputObjects(fSumList);
141 fEventPlaneFinder.SetupForData(*pe);
143 PostData(1, fSumList);
146 //_____________________________________________________________________
147 void AliFMDEventPlaneTask::UserExec(Option_t */*option*/)
155 DGUARD(fDebug,1,"Process an event in AliFMDEventPlaneTask");
157 // Reset data members
162 fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
165 AliAODForwardMult* aodfmult =
166 static_cast<AliAODForwardMult*>(fAOD->FindListObject("Forward"));
168 if (!aodfmult) return;
169 if (!AODCheck(aodfmult)) return;
171 if (fAOD->GetRunNumber() != fEventPlaneFinder.GetRunNumber())
172 fEventPlaneFinder.SetRunNumber(fAOD->GetRunNumber());
174 AliAODForwardEP aodep;
175 TH2D fmdHist = aodfmult->GetHistogram();
177 fEventPlaneFinder.FindEventplane(fAOD, aodep, &fmdHist, 0);
179 PostData(1, fSumList);
182 //_____________________________________________________________________
183 void AliFMDEventPlaneTask::Terminate(Option_t */*option*/)
186 // Terminate - Called after all events
191 DGUARD(fDebug,1,"Process merged output of AliFMDEventPlaneTask");
193 // Reinitiate lists if Terminate is called separately!
194 fSumList = dynamic_cast<TList*> (GetOutputData(1));
196 AliError("Could not retrieve TList fSumList");
201 fOutputList = new TList();
202 fOutputList->SetName("Results");
203 fOutputList->SetOwner();
205 // Calculations can be done here: Currently there are none
207 PostData(2, fOutputList);
210 // _____________________________________________________________________
211 Bool_t AliFMDEventPlaneTask::AODCheck(const AliAODForwardMult* aodfm)
214 // Function to check that and AOD event meets the cuts
217 // AliAODForwardMult: forward mult object with trigger and vertex info
219 DGUARD(fDebug,2,"Check AOD in AliFMDEventPlaneTask");
221 if (!aodfm->IsTriggerBits(AliAODForwardMult::kOffline)) return kFALSE;
223 fCent = (Double_t)aodfm->GetCentrality();
224 if (0. >= fCent || fCent >= 80.) return kFALSE;
225 fHistCent->Fill(fCent);
227 fZvertex = aodfm->GetIpZ();
228 fHistVertexAll->Fill(fZvertex);
229 if (TMath::Abs(fZvertex) >= 10.) return kFALSE;
230 fHistVertexSel->Fill(fZvertex);
235 //_____________________________________________________________________