ROOT logo
// 
// Calculate the qa in the forward regions event-by-event 
// 
#ifndef ALIFORWARDQATASK_H
#define ALIFORWARDQATASK_H
/**
 * @file   AliForwardQATask.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:06:42 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_aod
 */
#include "AliBaseESDTask.h"
#include "AliFMDEventInspector.h"
#include "AliFMDESDFixer.h"
#include "AliFMDSharingFilter.h"
#include "AliFMDDensityCalculator.h"
#include "AliFMDEnergyFitter.h"
#include <AliESDFMD.h>
class AliESDEvent;
class TH2D;
class TAxis;

/** 
 * Calculate the QA in the forward regions
 * 
 * @par Inputs: 
 *   - AliESDEvent 
 *
 * @par Outputs: 
 *   - Histograms 
 * 
 * @par Histograms 
 *   
 * @par Corrections used 
 * 
 * @ingroup pwglf_forward_tasks
 * 
 */
class AliForwardQATask : public AliBaseESDTask
{
public:
  /** 
   * Constructor 
   * 
   * @param name Name of task 
   */
  AliForwardQATask(const char* name);
  /** 
   * Constructor
   */
  AliForwardQATask();
  /** 
   * @{ 
   * @name Interface methods 
   */
  /** 
   * Called when initialising the train. 
   * 
   * @return Always true
   */
  virtual Bool_t Setup();
  /** 
   * 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 after reading in the first event. Here we can setup stuff
   * depending on the conditions we're running under.
   * 
   * @return true on success.  If this returns false, then we turn the
   * task into a zombie and we do no more processing.
   */
  virtual Bool_t PreData(const TAxis& vertex, const TAxis& eta);
  
  /** 
   * 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);
  /** 
   * End of job
   * 
   * @return true on success
   */
  virtual Bool_t Finalize();
  /** 
   * @} 
   */
  /** 
   * @{ 
   * @name Default axes 
   */
  /** 
   * Set the default eta axis to use in case we didn't get one from
   * the read-in corretions.  Override this if the sub class should go
   * on even without a valid eta axis from the corrections (e.g. QA
   * task)
   * 
   * @return null
   */
  virtual TAxis* DefaultEtaAxis() const;
  /** 
   * Set the default eta axis to use in case we didn't get one from
   * the read-in corretions.  Override this if the sub class should go
   * on even without a valid eta axis from the corrections (e.g. QA
   * task)
   * 
   * @return null
   */
  virtual TAxis* DefaultVertexAxis() const;
  /* @} */
  /** 
   * @{ 
   * @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 EnergyFitter algorithm 
   * 
   * @return Reference to AliFMDEnergyFitter object 
   */
  AliFMDEnergyFitter& GetEnergyFitter() { return fEnergyFitter; }
  /**
   * 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 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 EnergyFitter algorithm 
   * 
   * @return Reference to AliFMDEnergyFitter object 
   */
  const AliFMDEnergyFitter& GetEnergyFitter() const { return fEnergyFitter; }
  /**
   * 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; }
  /** 
   * @} 
   */
  /** 
   * Set debug level 
   * 
   * @param dbg Debug level
   */
  void SetDebug(Int_t dbg);
  /** 
   * Print information 
   * 
   * @param option Not used
   */
  void Print(Option_t* option="") const;
  /** 
   * Check if we're running over MC data
   * 
   * @return true if the event inspector thinks it's MC
   */
  Bool_t IsMC() const { return GetEventInspector().IsMC(); }
protected: 
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliForwardQATask(const AliForwardQATask& o);
  /** 
   * Assignment operator 
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object 
   */
  AliForwardQATask& operator=(const AliForwardQATask& o);

  Bool_t                  fEnableLowFlux;// Whether to use low-flux code
  AliESDFMD               fESDFMD;       // Sharing corrected ESD object
  AliForwardUtil::Histos  fHistos;       // Cache histograms 
  AliFMDEventInspector    fEventInspector;    // Algorithm
  AliFMDESDFixer          fESDFixer;          // Algorithm
  AliFMDEnergyFitter      fEnergyFitter;      // Algorithm
  AliFMDSharingFilter     fSharingFilter;     // Algorithm
  AliFMDDensityCalculator fDensityCalculator; // Algorithm

  ClassDef(AliForwardQATask,4) // Forward QA class
};

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

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