2 // Calculate the corrections in the central regions
4 #ifndef ALICENTRALMCCORRECTIONS_H
5 #define ALICENTRALMCCORRECTIONS_H
7 * @file AliCentralMCCorrectionsTask.h
8 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
9 * @date Wed Mar 23 14:05:51 2011
14 * @ingroup pwglf_central_aod
16 #include <AliAnalysisTaskSE.h>
17 #include "AliFMDMCEventInspector.h"
18 #include "AliSPDMCTrackDensity.h"
19 class AliCentralCorrSecondaryMap;
20 class AliCentralCorrAcceptance;
29 * Calculate the corrections in the central regions
39 * @par Corrections used
41 * @ingroup pwglf_central_tasks
42 * @ingroup pwglf_central_mc
43 * @ingroup pwglf_central_aod
46 class AliCentralMCCorrectionsTask : public AliAnalysisTaskSE
52 * @param name Name of task
54 AliCentralMCCorrectionsTask(const char* name);
58 AliCentralMCCorrectionsTask();
62 * @param o Object to copy from
64 AliCentralMCCorrectionsTask(const AliCentralMCCorrectionsTask& o);
68 * @param o Object to assign from
70 * @return Reference to this object
72 AliCentralMCCorrectionsTask& operator=(const AliCentralMCCorrectionsTask& o);
75 * @name Interface methods
83 * Create output objects
86 virtual void UserCreateOutputObjects();
90 * @param option Not used
92 virtual void UserExec(Option_t* option);
96 * @param option Not used
98 virtual void Terminate(Option_t* option);
105 * @param option Not used
107 void Print(Option_t* option="") const;
110 * Set the vertex axis to use
112 * @param nBins Number of bins
113 * @param vzMin Least @f$z@f$ coordinate of interation point
114 * @param vzMax Largest @f$z@f$ coordinate of interation point
116 void SetVertexAxis(Int_t nBins, Double_t vzMin, Double_t vzMax=-1000000);
118 * Set the vertex axis to use
122 void SetVertexAxis(const TAxis& axis);
124 * Set the eta axis to use
126 * @param nBins Number of bins
127 * @param etaMin Least @f$\eta@f$
128 * @param etaMax Largest @f$\eta@f$
130 void SetEtaAxis(Int_t nBins, Double_t etaMin, Double_t etaMax=-1000000);
132 * Set the eta axis to use
136 void SetEtaAxis(const TAxis& axis);
138 * Set the number of phi bins to use
142 void SetNPhiBins(UShort_t nBins) { fNPhiBins = nBins; }
144 * Whether to make effective corrections
146 * @param e if true, make effective correction
148 void SetEffectiveCorrection(Bool_t e) { fEffectiveCorr = e; }
150 * Set the maximum @f$|\eta|@f$ to accept.
152 * @param maxEta maximum @f$|\eta|@f$
154 void SetEtaCut(Double_t maxEta=1.9) { fEtaCut = maxEta; }
156 * If a particular phi bin has less then this fraction of the
157 * largest signal in the corresponding @f$\eta@f$ slice, then it is
160 * @param least Lower bound on fraction of largest signal in this
163 void SetAcceptanceCut(Double_t least=0.8) { fCorrCut = least; }
165 * Get a reference to the track density calculator
167 * @return Reference to the track density calculator
169 AliSPDMCTrackDensity& GetTrackDensity() { return fTrackDensity; }
171 * Get a reference to the track density calculator
173 * @return Reference to the track density calculator
175 const AliSPDMCTrackDensity& GetTrackDensity() const { return fTrackDensity; }
177 * Get a reference to the event inspector
179 * @return Reference to the event inspector
181 AliFMDMCEventInspector& GetEventInspector() { return fInspector; }
183 * Get a reference to the event inspector
185 * @return Reference to the event inspector
187 const AliFMDMCEventInspector& GetEventInspector() const { return fInspector;}
193 struct VtxBin : public TNamed
202 * @param low Lower @f$v_z@f$ bound
203 * @param high Upper @f$v_z@f$ bound
204 * @param etaAxis @f$\eta@f$ axis to use
205 * @param nPhi Number of phi bins
207 VtxBin(Double_t low, Double_t high, const TAxis& etaAxis, UShort_t nPhi);
211 * @param o Object to copy from
213 VtxBin(const VtxBin& o);
215 * Assignment operator
217 * @param o Object to assign from
219 * @return Reference to this object
221 VtxBin& operator=(const VtxBin& o);
225 * @param low Lower @f$v_z@f$ bound
226 * @param high Upper @f$v_z@f$ bound
230 static const char* BinName(Double_t low, Double_t high);
232 * Declare output in passed list
234 * @param list List to put output in
236 void CreateOutputObjects(TList* list);
240 * @param o List to add output to
241 * @param i Input list
242 * @param iVz Vertex bin
243 * @param effective Make an effective correction
244 * @param etaCut Maximum @f$|\eta|@f$ to use
245 * @param accCut Cut on acceptance
246 * @param acorr Acceptance correction
247 * @param map Corrections map
249 void Terminate(const TList* i,
255 AliCentralCorrSecondaryMap* map,
256 AliCentralCorrAcceptance* acorr);
258 TH2D* fHits; // Cache of MC-truth hits
259 TH2D* fClusters; // Cache of reconstructed hits
260 TH2D* fPrimary; // Cache or primary
261 TH1D* fCounts; // Event count
263 ClassDef(VtxBin,3); // Vertex bin
266 * Define our vertex bins
268 * @param list List to read or add binst from/to
270 void DefineBins(TList* list);
272 AliFMDMCEventInspector fInspector; // Event inspector
273 AliSPDMCTrackDensity fTrackDensity; // Get the track density
275 TObjArray* fVtxBins; // Vertex bins
276 Bool_t fFirstEvent; // First event flag
277 TH1I* fHEvents; // All Events
278 TH1I* fHEventsTr; // Histogram of events w/trigger
279 TH1I* fHEventsTrVtx; // Events w/trigger and vertex
280 TAxis fVtxAxis; // Vertex axis
281 TAxis fEtaAxis; // Eta axis
282 TList* fList; // Output list
283 UShort_t fNPhiBins; // Nunber of phi bins
284 Bool_t fEffectiveCorr; // Whether to make effective corrections
285 Double_t fEtaCut; // Maximum Eta
286 Double_t fCorrCut; // Correction cut
287 ClassDef(AliCentralMCCorrectionsTask,3) // Central corrections class