1 #ifndef ALIROOT_PWG2_FORWARD_ALIFORWARDMULTIPLICITY_H
2 #define ALIROOT_PWG2_FORWARD_ALIFORWARDMULTIPLICITY_H
3 #include <AliAnalysisTaskSE.h>
4 #include "AliForwardUtil.h"
5 #include "AliFMDEventInspector.h"
6 #include "AliFMDEnergyFitter.h"
7 #include "AliFMDSharingFilter.h"
8 #include "AliFMDDensityCalculator.h"
9 #include "AliFMDCorrections.h"
10 #include "AliFMDHistCollector.h"
11 #include "AliAODForwardMult.h"
12 #include "AliFMDEnergyFitter.h"
13 #include <AliESDFMD.h>
15 class AliFMDAnaParameters;
23 * @mainpage ALICE PWG2 Forward Multiplcity Analysis
26 * @defgroup pwg2_forward PWG2 Forward analysis
28 * Code to do the multiplicity analysis in the forward psuedo-rapidity
33 * @defgroup pwg2_forward_tasks Tasks
35 * Code to do the multiplicity analysis in the forward psuedo-rapidity
38 * @ingroup pwg2_forward
41 * Calculate the multiplicity in the forward regions event-by-event
51 * @par Corrections used
53 * @ingroup pwg2_forward_tasks
56 class AliForwardMultiplicityTask : public AliAnalysisTaskSE
62 * @param name Name of task
64 AliForwardMultiplicityTask(const char* name);
68 AliForwardMultiplicityTask();
72 * @param o Object to copy from
74 AliForwardMultiplicityTask(const AliForwardMultiplicityTask& o);
78 * @param o Object to assign from
80 * @return Reference to this object
82 AliForwardMultiplicityTask& operator=(const AliForwardMultiplicityTask& o);
85 * @name Interface methods
93 * Create output objects
96 virtual void UserCreateOutputObjects();
100 * @param option Not used
102 virtual void UserExec(Option_t* option);
106 * @param option Not used
108 virtual void Terminate(Option_t* option);
115 * @param option Not used
117 void Print(Option_t* option="") const;
119 * Whether to enable low-flux code
121 * @param use IF true, enable low-flux code
123 void SetEnableLowFlux(Bool_t use=true) { fEnableLowFlux = use; }
126 * @name Access to sub-algorithms
129 * Get reference to the EventInspector algorithm
131 * @return Reference to AliFMDEventInspector object
133 AliFMDEventInspector& GetEventInspector() { return fEventInspector; }
135 * Get reference to the EnergyFitter algorithm
137 * @return Reference to AliFMDEnergyFitter object
139 AliFMDEnergyFitter& GetEnergyFitter() { return fEnergyFitter; }
141 * Get reference to the SharingFilter algorithm
143 * @return Reference to AliFMDSharingFilter object
145 AliFMDSharingFilter& GetSharingFilter() { return fSharingFilter; }
147 * Get reference to the DensityCalculator algorithm
149 * @return Reference to AliFMDDensityCalculator object
151 AliFMDDensityCalculator& GetDensityCalculator() { return fDensityCalculator; }
153 * Get reference to the Corrections algorithm
155 * @return Reference to AliFMDCorrections object
157 AliFMDCorrections& GetCorrections() { return fCorrections; }
159 * Get reference to the HistCollector algorithm
161 * @return Reference to AliFMDHistCollector object
163 AliFMDHistCollector& GetHistCollector() { return fHistCollector; }
167 void SetDebug(Int_t dbg);
170 * Initialise the sub objects and stuff. Called on first event
173 virtual void InitializeSubs();
175 * Mark this event as one to store in the AOD
178 virtual void MarkEventForStore() const;
180 Bool_t fEnableLowFlux;// Whether to use low-flux specific code
181 TH2D* fHData; // Summed 1/Nd^2N_{ch}/dphideta
182 Bool_t fFirstEvent; // Whether the event is the first seen
183 AliESDFMD fESDFMD; // Sharing corrected ESD object
184 AliForwardUtil::Histos fHistos; // Cache histograms
185 AliAODForwardMult fAODFMD; // Output object
187 AliFMDEventInspector fEventInspector; // Algorithm
188 AliFMDEnergyFitter fEnergyFitter; // Algorithm
189 AliFMDSharingFilter fSharingFilter; // Algorithm
190 AliFMDDensityCalculator fDensityCalculator; // Algorithm
191 AliFMDCorrections fCorrections; // Algorithm
192 AliFMDHistCollector fHistCollector; // Algorithm
194 TList* fList; // Output list
196 ClassDef(AliForwardMultiplicityTask,1) // Forward multiplicity class