ROOT logo
// 
// Calculate the multiplicity in the forward regions event-by-event 
// 
#ifndef ALIFORWARDMULTIPLICITYTASK_H
#define ALIFORWARDMULTIPLICITYTASK_H
/**
 * @file   AliForwardMultiplicityTask.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:06:42 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_aod
 */
#include "AliForwardMultiplicityBase.h"
#include "AliForwardUtil.h"
#include "AliFMDEventInspector.h"
#include "AliFMDESDFixer.h"
#include "AliFMDSharingFilter.h"
#include "AliFMDDensityCalculator.h"
#include "AliFMDCorrector.h"
#include "AliFMDHistCollector.h"
// #include "AliFMDEnergyFitter.h"
#include "AliFMDEventPlaneFinder.h"
#include <AliESDFMD.h>
class AliESDEvent;
class TH2D;
class TList;
class TH3D;	

/** 
 * Calculate the multiplicity in the forward regions event-by-event 
 * 
 * @par Inputs: 
 *   - AliESDEvent 
 *
 * @par Outputs: 
 *   - AliAODForwardMult 
 * 
 * @par Histograms 
 *   
 * @par Corrections used 
 * 
 * @ingroup pwglf_forward_tasks
 * @ingroup pwglf_forward_aod
 * 
 */
class AliForwardMultiplicityTask : public AliForwardMultiplicityBase
{
public:
  /** 
   * Constructor 
   * 
   * @param name Name of task 
   */
  AliForwardMultiplicityTask(const char* name);
  /** 
   * Constructor
   */
  AliForwardMultiplicityTask();
  /** 
   * @{ 
   * @name Interface methods 
   */
  /** 
   * Called on first event _before_ reading corrections.  Here, the
   * user class can do additional checking to see if the some (more or
   * less) corrections are needed.
   * 
   * @param esd Event 
   */
  virtual void PreCorrections(const AliESDEvent* esd);
  /** 
   * 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 Event
   * 
   * @return true on success
   */  
  virtual Bool_t Event(AliESDEvent& esd);
  /** 
   * @} 
   */
  /** 
   * @{ 
   * @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 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 
   */
  AliFMDEventPlaneFinder& GetEventPlaneFinder() { return fEventPlaneFinder; }
  /**
   * Get reference to the EventPlaneFinder algorithm 
   * 
   * @return Reference to AliFMDEventPlaneFinder object 
   */
  const AliFMDEventPlaneFinder& GetEventPlaneFinder() const { return fEventPlaneFinder; }
  /** 
   * @} 
   */
  /** 
   * Set whether to make a timing histogram 
   * 
   * @param enable 
   */
  virtual void SetDoTiming(Bool_t enable=true);
protected: 
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliForwardMultiplicityTask(const AliForwardMultiplicityTask& o);
  /** 
   * Assignment operator 
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object 
   */
  AliForwardMultiplicityTask& operator=(const AliForwardMultiplicityTask& o);

  AliESDFMD               fESDFMD;            // Sharing corrected ESD object
  AliFMDEventInspector    fEventInspector;    // Algorithm
  AliFMDESDFixer          fESDFixer;          // Algorithm
  AliFMDSharingFilter     fSharingFilter;     // Algorithm
  AliFMDDensityCalculator fDensityCalculator; // Algorithm
  AliFMDCorrector         fCorrections;       // Algorithm
  AliFMDHistCollector     fHistCollector;     // Algorithm
  AliFMDEventPlaneFinder  fEventPlaneFinder;  // Algorithm

  ClassDef(AliForwardMultiplicityTask,6) // Forward multiplicity class
};

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

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