ROOT logo
// 
// Calculate the multiplicity in the forward regions event-by-event 
// 
#ifndef ALIFORWARDMCMULTIPLICITYTASK_H
#define ALIFORWARDMCMULTIPLICITYTASK_H
/**
 * @file   AliForwardMCMultiplicityTask.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:06:13 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_aod
 */
#include "AliForwardMultiplicityBase.h"
#include "AliFMDMCEventInspector.h"
#include "AliFMDESDFixer.h"
#include "AliFMDMCSharingFilter.h"
#include "AliFMDMCDensityCalculator.h"
#include "AliFMDMCCorrector.h"
#include "AliFMDHistCollector.h"
// #include "AliFMDEnergyFitter.h"
#include "AliFMDEventPlaneFinder.h"
#include <AliESDFMD.h>
class AliESDEvent;
class TH2D;
class TList;
class AliFMDMCTrackDensity;

/** 
 * Calculate the multiplicity in the forward regions event-by-event 
 * 
 * @par Inputs: 
 *   - AliESDEvent 
 *   - Kinematics
 *   - Track references
 *
 * @par Outputs: 
 *   - AliAODForwardMult 
 * 
 * @par Histograms 
 *   
 * @par Corrections used 
 * 
 * @ingroup pwglf_forward_tasks
 * @ingroup pwglf_forward_mc
 * @ingroup pwglf_forward_aod
 * 
 */
class AliForwardMCMultiplicityTask : public AliForwardMultiplicityBase
{
public:
  /** 
   * Constructor 
   * 
   * @param name Name of task 
   */
  AliForwardMCMultiplicityTask(const char* name);
  /** 
   * Constructor
   */
  AliForwardMCMultiplicityTask();
  /** 
   * @{ 
   * @name Interface methods 
   */
  /** 
   * Book output objects. Derived class should define this to book
   * output objects on the processing output list @c fList before the
   * actual event processing.  This is called on the master and on
   * each slave.
   * 
   * If this member function returns false, the execution is stopped
   * with a fatal signal.
   *
   * @return true on success. 
   */
  virtual Bool_t Book();
  /** 
   * Called before processing a single event - should not do anything
   * but clear data, etc.
   * 
   * @return true on success
   */
  virtual Bool_t PreEvent();
  /** 
   * Process each event 
   *
   * @param esd ESD event
   */  
  virtual Bool_t Event(AliESDEvent& esd);
  /** 
   * Called after processing a single event - should not do anything
   * but clear data, etc.
   * 
   * @return true on success
   */
  virtual Bool_t PostEvent();
  /* 
   * @} 
   */
  /** 
   * Process only primary MC tracks 
   * 
   * @param use 
   */
  void SetOnlyPrimary(Bool_t use);
  /** 
   * @{ 
   * @name Access to sub-algorithms 
   */
  /**
   * Get reference to the EventInspector algorithm 
   * 
   * @return Reference to AliFMDEventInspector object 
   */
  AliFMDEventInspector& GetEventInspector() { return fEventInspector; }
  /**
   * Get reference to the ESDFixer algorithm 
   * 
   * @return Reference to AliFMDESDFixer object 
   */
  AliFMDESDFixer& GetESDFixer() { return fESDFixer; }
  /**
   * Get reference to the SharingFilter algorithm 
   * 
   * @return Reference to AliFMDSharingFilter object 
   */
  AliFMDSharingFilter& GetSharingFilter() { return fSharingFilter; }
  /**
   * Get reference to the DensityCalculator algorithm 
   * 
   * @return Reference to AliFMDDensityCalculator object 
   */
  AliFMDDensityCalculator& GetDensityCalculator() { return fDensityCalculator; }
  /**
   * Get reference to the Corrections algorithm 
   * 
   * @return Reference to AliFMDCorrector object 
   */
  AliFMDCorrector& GetCorrections() { return fCorrections; }
  /**
   * Get reference to the HistCollector algorithm 
   * 
   * @return Reference to AliFMDHistCollector object 
   */
  AliFMDHistCollector& GetHistCollector() { return fHistCollector; }
   /**
   * Get reference to the EventPlaneFinder algorithm 
   * 
   * @return Reference to AliFMDEventPlaneFinder object 
   */
  AliFMDEventPlaneFinder& GetEventPlaneFinder() { return fEventPlaneFinder; }
  /** 
   * Get the track density calculator in the sharing filter 
   * 
   * @return Reference to AliFMDMCTrackDensity object in sharing filter 
   */
  AliFMDMCTrackDensity& GetTrackDensity() { return fSharingFilter.GetTrackDensity(); }
  /**
   * Get reference to the EventInspector algorithm 
   * 
   * @return Reference to AliFMDEventInspector object 
   */
  const AliFMDEventInspector& GetEventInspector() const { return fEventInspector; }
  /**
   * Get reference to the ESDFixer algorithm 
   * 
   * @return Reference to AliFMDESDFixer object 
   */
  const AliFMDESDFixer& GetESDFixer() const { return fESDFixer; }
  /**
   * Get reference to the SharingFilter algorithm 
   * 
   * @return Reference to AliFMDSharingFilter object 
   */
  const AliFMDSharingFilter& GetSharingFilter() const { return fSharingFilter; }
  /**
   * Get reference to the DensityCalculator algorithm 
   * 
   * @return Reference to AliFMDDensityCalculator object 
   */
  const AliFMDDensityCalculator& GetDensityCalculator() const { return fDensityCalculator; }
  /**
   * Get reference to the Corrections algorithm 
   * 
   * @return Reference to AliFMDCorrector object 
   */
  const AliFMDCorrector& GetCorrections() const { return fCorrections; }
  /**
   * Get reference to the HistCollector algorithm 
   * 
   * @return Reference to AliFMDHistCollector object 
   */
  const AliFMDHistCollector& GetHistCollector() const { return fHistCollector; }
  /**
   * Get reference to the EventPlaneFinder algorithm 
   * 
   * @return Reference to AliFMDEventPlaneFinder object 
   */
  const AliFMDEventPlaneFinder& GetEventPlaneFinder() const { return fEventPlaneFinder; }
  /** 
   * Get the track density calculator in the sharing filter 
   * 
   * @return Reference to AliFMDMCTrackDensity object in sharing filter 
   */
  const AliFMDMCTrackDensity& GetTrackDensity() const { return fSharingFilter.GetTrackDensity(); }
  /** 
   * @} 
   */
protected: 
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliForwardMCMultiplicityTask(const AliForwardMCMultiplicityTask& o);
  /** 
   * Assignment operator 
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object 
   */
  AliForwardMCMultiplicityTask& 
  operator=(const AliForwardMCMultiplicityTask& o);
  /** 
   * Initialize members based on eta and vertex axis - only available
   * after first event - called from SetupForData.
   * 
   * @param pe @f$\eta@f$ axis
   * @param pv Interaction point Z-coordinate axis 
   */
  virtual void InitMembers(const TAxis& pe, const TAxis& pv);
  /**
   * Create output branches - called from UserCreateOutputObjects
   */
  virtual void CreateBranches(AliAODHandler* ah);
  /** 
   * Do estimates of @f$dN/d\eta@f$ - called at Terminate
   * 
   * @param input  Input list
   * @param output Output list
   */
  virtual void EstimatedNdeta(const TList* input, TList* output) const;

  AliESDFMD              fESDFMD;       // Sharing corrected ESD object
  AliESDFMD              fMCESDFMD;     // MC 'Sharing corrected' ESD object
  AliForwardUtil::Histos fMCHistos;     // MC Cache histograms 
  AliAODForwardMult      fMCAODFMD;     // MC Output object
  AliForwardUtil::Histos fMCRingSums;   // Cache histograms 
  TH2D*                  fPrimary;      // Per event primary particles 

  AliFMDMCEventInspector    fEventInspector;    // Algorithm
  AliFMDESDFixer            fESDFixer;          // Algorithm
  AliFMDMCSharingFilter     fSharingFilter;     // Algorithm
  AliFMDMCDensityCalculator fDensityCalculator; // Algorithm
  AliFMDMCCorrector         fCorrections;       // Algorithm
  AliFMDHistCollector       fHistCollector;     // Algorithm
  AliFMDEventPlaneFinder    fEventPlaneFinder;  // Algorithm

  ClassDef(AliForwardMCMultiplicityTask,4) // Forward multiplicity class
};

#endif
// Local Variables:
//  mode: C++
// End:

 AliForwardMCMultiplicityTask.h:1
 AliForwardMCMultiplicityTask.h:2
 AliForwardMCMultiplicityTask.h:3
 AliForwardMCMultiplicityTask.h:4
 AliForwardMCMultiplicityTask.h:5
 AliForwardMCMultiplicityTask.h:6
 AliForwardMCMultiplicityTask.h:7
 AliForwardMCMultiplicityTask.h:8
 AliForwardMCMultiplicityTask.h:9
 AliForwardMCMultiplicityTask.h:10
 AliForwardMCMultiplicityTask.h:11
 AliForwardMCMultiplicityTask.h:12
 AliForwardMCMultiplicityTask.h:13
 AliForwardMCMultiplicityTask.h:14
 AliForwardMCMultiplicityTask.h:15
 AliForwardMCMultiplicityTask.h:16
 AliForwardMCMultiplicityTask.h:17
 AliForwardMCMultiplicityTask.h:18
 AliForwardMCMultiplicityTask.h:19
 AliForwardMCMultiplicityTask.h:20
 AliForwardMCMultiplicityTask.h:21
 AliForwardMCMultiplicityTask.h:22
 AliForwardMCMultiplicityTask.h:23
 AliForwardMCMultiplicityTask.h:24
 AliForwardMCMultiplicityTask.h:25
 AliForwardMCMultiplicityTask.h:26
 AliForwardMCMultiplicityTask.h:27
 AliForwardMCMultiplicityTask.h:28
 AliForwardMCMultiplicityTask.h:29
 AliForwardMCMultiplicityTask.h:30
 AliForwardMCMultiplicityTask.h:31
 AliForwardMCMultiplicityTask.h:32
 AliForwardMCMultiplicityTask.h:33
 AliForwardMCMultiplicityTask.h:34
 AliForwardMCMultiplicityTask.h:35
 AliForwardMCMultiplicityTask.h:36
 AliForwardMCMultiplicityTask.h:37
 AliForwardMCMultiplicityTask.h:38
 AliForwardMCMultiplicityTask.h:39
 AliForwardMCMultiplicityTask.h:40
 AliForwardMCMultiplicityTask.h:41
 AliForwardMCMultiplicityTask.h:42
 AliForwardMCMultiplicityTask.h:43
 AliForwardMCMultiplicityTask.h:44
 AliForwardMCMultiplicityTask.h:45
 AliForwardMCMultiplicityTask.h:46
 AliForwardMCMultiplicityTask.h:47
 AliForwardMCMultiplicityTask.h:48
 AliForwardMCMultiplicityTask.h:49
 AliForwardMCMultiplicityTask.h:50
 AliForwardMCMultiplicityTask.h:51
 AliForwardMCMultiplicityTask.h:52
 AliForwardMCMultiplicityTask.h:53
 AliForwardMCMultiplicityTask.h:54
 AliForwardMCMultiplicityTask.h:55
 AliForwardMCMultiplicityTask.h:56
 AliForwardMCMultiplicityTask.h:57
 AliForwardMCMultiplicityTask.h:58
 AliForwardMCMultiplicityTask.h:59
 AliForwardMCMultiplicityTask.h:60
 AliForwardMCMultiplicityTask.h:61
 AliForwardMCMultiplicityTask.h:62
 AliForwardMCMultiplicityTask.h:63
 AliForwardMCMultiplicityTask.h:64
 AliForwardMCMultiplicityTask.h:65
 AliForwardMCMultiplicityTask.h:66
 AliForwardMCMultiplicityTask.h:67
 AliForwardMCMultiplicityTask.h:68
 AliForwardMCMultiplicityTask.h:69
 AliForwardMCMultiplicityTask.h:70
 AliForwardMCMultiplicityTask.h:71
 AliForwardMCMultiplicityTask.h:72
 AliForwardMCMultiplicityTask.h:73
 AliForwardMCMultiplicityTask.h:74
 AliForwardMCMultiplicityTask.h:75
 AliForwardMCMultiplicityTask.h:76
 AliForwardMCMultiplicityTask.h:77
 AliForwardMCMultiplicityTask.h:78
 AliForwardMCMultiplicityTask.h:79
 AliForwardMCMultiplicityTask.h:80
 AliForwardMCMultiplicityTask.h:81
 AliForwardMCMultiplicityTask.h:82
 AliForwardMCMultiplicityTask.h:83
 AliForwardMCMultiplicityTask.h:84
 AliForwardMCMultiplicityTask.h:85
 AliForwardMCMultiplicityTask.h:86
 AliForwardMCMultiplicityTask.h:87
 AliForwardMCMultiplicityTask.h:88
 AliForwardMCMultiplicityTask.h:89
 AliForwardMCMultiplicityTask.h:90
 AliForwardMCMultiplicityTask.h:91
 AliForwardMCMultiplicityTask.h:92
 AliForwardMCMultiplicityTask.h:93
 AliForwardMCMultiplicityTask.h:94
 AliForwardMCMultiplicityTask.h:95
 AliForwardMCMultiplicityTask.h:96
 AliForwardMCMultiplicityTask.h:97
 AliForwardMCMultiplicityTask.h:98
 AliForwardMCMultiplicityTask.h:99
 AliForwardMCMultiplicityTask.h:100
 AliForwardMCMultiplicityTask.h:101
 AliForwardMCMultiplicityTask.h:102
 AliForwardMCMultiplicityTask.h:103
 AliForwardMCMultiplicityTask.h:104
 AliForwardMCMultiplicityTask.h:105
 AliForwardMCMultiplicityTask.h:106
 AliForwardMCMultiplicityTask.h:107
 AliForwardMCMultiplicityTask.h:108
 AliForwardMCMultiplicityTask.h:109
 AliForwardMCMultiplicityTask.h:110
 AliForwardMCMultiplicityTask.h:111
 AliForwardMCMultiplicityTask.h:112
 AliForwardMCMultiplicityTask.h:113
 AliForwardMCMultiplicityTask.h:114
 AliForwardMCMultiplicityTask.h:115
 AliForwardMCMultiplicityTask.h:116
 AliForwardMCMultiplicityTask.h:117
 AliForwardMCMultiplicityTask.h:118
 AliForwardMCMultiplicityTask.h:119
 AliForwardMCMultiplicityTask.h:120
 AliForwardMCMultiplicityTask.h:121
 AliForwardMCMultiplicityTask.h:122
 AliForwardMCMultiplicityTask.h:123
 AliForwardMCMultiplicityTask.h:124
 AliForwardMCMultiplicityTask.h:125
 AliForwardMCMultiplicityTask.h:126
 AliForwardMCMultiplicityTask.h:127
 AliForwardMCMultiplicityTask.h:128
 AliForwardMCMultiplicityTask.h:129
 AliForwardMCMultiplicityTask.h:130
 AliForwardMCMultiplicityTask.h:131
 AliForwardMCMultiplicityTask.h:132
 AliForwardMCMultiplicityTask.h:133
 AliForwardMCMultiplicityTask.h:134
 AliForwardMCMultiplicityTask.h:135
 AliForwardMCMultiplicityTask.h:136
 AliForwardMCMultiplicityTask.h:137
 AliForwardMCMultiplicityTask.h:138
 AliForwardMCMultiplicityTask.h:139
 AliForwardMCMultiplicityTask.h:140
 AliForwardMCMultiplicityTask.h:141
 AliForwardMCMultiplicityTask.h:142
 AliForwardMCMultiplicityTask.h:143
 AliForwardMCMultiplicityTask.h:144
 AliForwardMCMultiplicityTask.h:145
 AliForwardMCMultiplicityTask.h:146
 AliForwardMCMultiplicityTask.h:147
 AliForwardMCMultiplicityTask.h:148
 AliForwardMCMultiplicityTask.h:149
 AliForwardMCMultiplicityTask.h:150
 AliForwardMCMultiplicityTask.h:151
 AliForwardMCMultiplicityTask.h:152
 AliForwardMCMultiplicityTask.h:153
 AliForwardMCMultiplicityTask.h:154
 AliForwardMCMultiplicityTask.h:155
 AliForwardMCMultiplicityTask.h:156
 AliForwardMCMultiplicityTask.h:157
 AliForwardMCMultiplicityTask.h:158
 AliForwardMCMultiplicityTask.h:159
 AliForwardMCMultiplicityTask.h:160
 AliForwardMCMultiplicityTask.h:161
 AliForwardMCMultiplicityTask.h:162
 AliForwardMCMultiplicityTask.h:163
 AliForwardMCMultiplicityTask.h:164
 AliForwardMCMultiplicityTask.h:165
 AliForwardMCMultiplicityTask.h:166
 AliForwardMCMultiplicityTask.h:167
 AliForwardMCMultiplicityTask.h:168
 AliForwardMCMultiplicityTask.h:169
 AliForwardMCMultiplicityTask.h:170
 AliForwardMCMultiplicityTask.h:171
 AliForwardMCMultiplicityTask.h:172
 AliForwardMCMultiplicityTask.h:173
 AliForwardMCMultiplicityTask.h:174
 AliForwardMCMultiplicityTask.h:175
 AliForwardMCMultiplicityTask.h:176
 AliForwardMCMultiplicityTask.h:177
 AliForwardMCMultiplicityTask.h:178
 AliForwardMCMultiplicityTask.h:179
 AliForwardMCMultiplicityTask.h:180
 AliForwardMCMultiplicityTask.h:181
 AliForwardMCMultiplicityTask.h:182
 AliForwardMCMultiplicityTask.h:183
 AliForwardMCMultiplicityTask.h:184
 AliForwardMCMultiplicityTask.h:185
 AliForwardMCMultiplicityTask.h:186
 AliForwardMCMultiplicityTask.h:187
 AliForwardMCMultiplicityTask.h:188
 AliForwardMCMultiplicityTask.h:189
 AliForwardMCMultiplicityTask.h:190
 AliForwardMCMultiplicityTask.h:191
 AliForwardMCMultiplicityTask.h:192
 AliForwardMCMultiplicityTask.h:193
 AliForwardMCMultiplicityTask.h:194
 AliForwardMCMultiplicityTask.h:195
 AliForwardMCMultiplicityTask.h:196
 AliForwardMCMultiplicityTask.h:197
 AliForwardMCMultiplicityTask.h:198
 AliForwardMCMultiplicityTask.h:199
 AliForwardMCMultiplicityTask.h:200
 AliForwardMCMultiplicityTask.h:201
 AliForwardMCMultiplicityTask.h:202
 AliForwardMCMultiplicityTask.h:203
 AliForwardMCMultiplicityTask.h:204
 AliForwardMCMultiplicityTask.h:205
 AliForwardMCMultiplicityTask.h:206
 AliForwardMCMultiplicityTask.h:207
 AliForwardMCMultiplicityTask.h:208
 AliForwardMCMultiplicityTask.h:209
 AliForwardMCMultiplicityTask.h:210
 AliForwardMCMultiplicityTask.h:211
 AliForwardMCMultiplicityTask.h:212
 AliForwardMCMultiplicityTask.h:213
 AliForwardMCMultiplicityTask.h:214
 AliForwardMCMultiplicityTask.h:215
 AliForwardMCMultiplicityTask.h:216
 AliForwardMCMultiplicityTask.h:217
 AliForwardMCMultiplicityTask.h:218
 AliForwardMCMultiplicityTask.h:219
 AliForwardMCMultiplicityTask.h:220
 AliForwardMCMultiplicityTask.h:221
 AliForwardMCMultiplicityTask.h:222
 AliForwardMCMultiplicityTask.h:223
 AliForwardMCMultiplicityTask.h:224
 AliForwardMCMultiplicityTask.h:225
 AliForwardMCMultiplicityTask.h:226
 AliForwardMCMultiplicityTask.h:227
 AliForwardMCMultiplicityTask.h:228
 AliForwardMCMultiplicityTask.h:229
 AliForwardMCMultiplicityTask.h:230
 AliForwardMCMultiplicityTask.h:231
 AliForwardMCMultiplicityTask.h:232
 AliForwardMCMultiplicityTask.h:233
 AliForwardMCMultiplicityTask.h:234
 AliForwardMCMultiplicityTask.h:235
 AliForwardMCMultiplicityTask.h:236
 AliForwardMCMultiplicityTask.h:237
 AliForwardMCMultiplicityTask.h:238
 AliForwardMCMultiplicityTask.h:239
 AliForwardMCMultiplicityTask.h:240
 AliForwardMCMultiplicityTask.h:241
 AliForwardMCMultiplicityTask.h:242
 AliForwardMCMultiplicityTask.h:243
 AliForwardMCMultiplicityTask.h:244
 AliForwardMCMultiplicityTask.h:245
 AliForwardMCMultiplicityTask.h:246
 AliForwardMCMultiplicityTask.h:247
 AliForwardMCMultiplicityTask.h:248
 AliForwardMCMultiplicityTask.h:249
 AliForwardMCMultiplicityTask.h:250
 AliForwardMCMultiplicityTask.h:251
 AliForwardMCMultiplicityTask.h:252
 AliForwardMCMultiplicityTask.h:253
 AliForwardMCMultiplicityTask.h:254
 AliForwardMCMultiplicityTask.h:255
 AliForwardMCMultiplicityTask.h:256
 AliForwardMCMultiplicityTask.h:257
 AliForwardMCMultiplicityTask.h:258
 AliForwardMCMultiplicityTask.h:259
 AliForwardMCMultiplicityTask.h:260
 AliForwardMCMultiplicityTask.h:261
 AliForwardMCMultiplicityTask.h:262
 AliForwardMCMultiplicityTask.h:263
 AliForwardMCMultiplicityTask.h:264
 AliForwardMCMultiplicityTask.h:265
 AliForwardMCMultiplicityTask.h:266
 AliForwardMCMultiplicityTask.h:267
 AliForwardMCMultiplicityTask.h:268
 AliForwardMCMultiplicityTask.h:269
 AliForwardMCMultiplicityTask.h:270