2 // Calculate the multiplicity in the forward regions event-by-event
4 #ifndef ALIFORWARDMCMULTIPLICITYTASK_H
5 #define ALIFORWARDMCMULTIPLICITYTASK_H
7 * @file AliForwardMCMultiplicityTask.h
8 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
9 * @date Wed Mar 23 14:06:13 2011
14 * @ingroup pwglf_forward_aod
16 #include "AliForwardMultiplicityBase.h"
17 #include "AliFMDMCEventInspector.h"
18 #include "AliFMDESDFixer.h"
19 #include "AliFMDMCSharingFilter.h"
20 #include "AliFMDMCDensityCalculator.h"
21 #include "AliFMDMCCorrector.h"
22 #include "AliFMDHistCollector.h"
23 // #include "AliFMDEnergyFitter.h"
24 #include "AliFMDEventPlaneFinder.h"
25 #include <AliESDFMD.h>
31 * Calculate the multiplicity in the forward regions event-by-event
43 * @par Corrections used
45 * @ingroup pwglf_forward_tasks
46 * @ingroup pwglf_forward_mc
47 * @ingroup pwglf_forward_aod
50 class AliForwardMCMultiplicityTask : public AliForwardMultiplicityBase
56 * @param name Name of task
58 AliForwardMCMultiplicityTask(const char* name);
62 AliForwardMCMultiplicityTask();
65 * @name Interface methods
68 * Book output objects. Derived class should define this to book
69 * output objects on the processing output list @c fList before the
70 * actual event processing. This is called on the master and on
73 * If this member function returns false, the execution is stopped
74 * with a fatal signal.
76 * @return true on success.
78 virtual Bool_t Book();
80 * Called before processing a single event - should not do anything
81 * but clear data, etc.
83 * @return true on success
85 virtual Bool_t PreEvent();
89 * @param esd ESD event
91 virtual Bool_t Event(AliESDEvent& esd);
93 * Called after processing a single event - should not do anything
94 * but clear data, etc.
96 * @return true on success
98 virtual Bool_t PostEvent();
103 * Process only primary MC tracks
107 void SetOnlyPrimary(Bool_t use);
110 * @name Access to sub-algorithms
113 * Get reference to the EventInspector algorithm
115 * @return Reference to AliFMDEventInspector object
117 AliFMDEventInspector& GetEventInspector() { return fEventInspector; }
119 * Get reference to the ESDFixer algorithm
121 * @return Reference to AliFMDESDFixer object
123 AliFMDESDFixer& GetESDFixer() { return fESDFixer; }
125 * Get reference to the SharingFilter algorithm
127 * @return Reference to AliFMDSharingFilter object
129 AliFMDSharingFilter& GetSharingFilter() { return fSharingFilter; }
131 * Get reference to the DensityCalculator algorithm
133 * @return Reference to AliFMDDensityCalculator object
135 AliFMDDensityCalculator& GetDensityCalculator() { return fDensityCalculator; }
137 * Get reference to the Corrections algorithm
139 * @return Reference to AliFMDCorrector object
141 AliFMDCorrector& GetCorrections() { return fCorrections; }
143 * Get reference to the HistCollector algorithm
145 * @return Reference to AliFMDHistCollector object
147 AliFMDHistCollector& GetHistCollector() { return fHistCollector; }
149 * Get reference to the EventInspector algorithm
151 * @return Reference to AliFMDEventInspector object
153 const AliFMDEventInspector& GetEventInspector() const { return fEventInspector; }
155 * Get reference to the ESDFixer algorithm
157 * @return Reference to AliFMDESDFixer object
159 const AliFMDESDFixer& GetESDFixer() const { return fESDFixer; }
161 * Get reference to the SharingFilter algorithm
163 * @return Reference to AliFMDSharingFilter object
165 const AliFMDSharingFilter& GetSharingFilter() const { return fSharingFilter; }
167 * Get reference to the DensityCalculator algorithm
169 * @return Reference to AliFMDDensityCalculator object
171 const AliFMDDensityCalculator& GetDensityCalculator() const { return fDensityCalculator; }
173 * Get reference to the Corrections algorithm
175 * @return Reference to AliFMDCorrector object
177 const AliFMDCorrector& GetCorrections() const { return fCorrections; }
179 * Get reference to the HistCollector algorithm
181 * @return Reference to AliFMDHistCollector object
183 const AliFMDHistCollector& GetHistCollector() const { return fHistCollector; }
185 * Get reference to the EventPlaneFinder algorithm
187 * @return Reference to AliFMDEventPlaneFinder object
189 AliFMDEventPlaneFinder& GetEventPlaneFinder() { return fEventPlaneFinder; }
191 * Get reference to the EventPlaneFinder algorithm
193 * @return Reference to AliFMDEventPlaneFinder object
195 const AliFMDEventPlaneFinder& GetEventPlaneFinder() const { return fEventPlaneFinder; }
203 * @param o Object to copy from
205 AliForwardMCMultiplicityTask(const AliForwardMCMultiplicityTask& o);
207 * Assignment operator
209 * @param o Object to assign from
211 * @return Reference to this object
213 AliForwardMCMultiplicityTask&
214 operator=(const AliForwardMCMultiplicityTask& o);
216 * Initialize members based on eta and vertex axis - only available
217 * after first event - called from SetupForData.
219 * @param pe @f$\eta@f$ axis
220 * @param pv Interaction point Z-coordinate axis
222 virtual void InitMembers(const TAxis& pe, const TAxis& pv);
224 * Create output branches - called from UserCreateOutputObjects
226 virtual void CreateBranches(AliAODHandler* ah);
228 * Do estimates of @f$dN/d\eta@f$ - called at Terminate
230 * @param input Input list
231 * @param output Output list
233 virtual void EstimatedNdeta(const TList* input, TList* output) const;
235 AliESDFMD fESDFMD; // Sharing corrected ESD object
236 AliESDFMD fMCESDFMD; // MC 'Sharing corrected' ESD object
237 AliForwardUtil::Histos fMCHistos; // MC Cache histograms
238 AliAODForwardMult fMCAODFMD; // MC Output object
239 AliForwardUtil::Histos fMCRingSums; // Cache histograms
240 TH2D* fPrimary; // Per event primary particles
242 AliFMDMCEventInspector fEventInspector; // Algorithm
243 AliFMDESDFixer fESDFixer; // Algorithm
244 AliFMDMCSharingFilter fSharingFilter; // Algorithm
245 AliFMDMCDensityCalculator fDensityCalculator; // Algorithm
246 AliFMDMCCorrector fCorrections; // Algorithm
247 AliFMDHistCollector fHistCollector; // Algorithm
248 AliFMDEventPlaneFinder fEventPlaneFinder; // Algorithm
250 ClassDef(AliForwardMCMultiplicityTask,4) // Forward multiplicity class