ROOT logo
// 
// This class calculates the exclusive charged particle density
// in each for the 5 FMD rings. 
//
#ifndef ALIFMDMCCORRECTOR_H
#define ALIFMDMCCORRECTOR_H
/**
 * @file   AliFMDMCCorrector.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:03:15 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_aod
 */
#include "AliFMDCorrector.h"
#include <TList.h>
class TProfile2D;
class TH2;

/** 
 * @defgroup pwglf_forward_mc  Monte-carlo code
 * 
 * Sub-algorithms specific to Monte-carlo (simulation) productions 
 *
 * @ingroup pwglf_forward
 */
/** 
 * This class calculates the exclusive charged particle density
 * in each for the 5 FMD rings. 
 *
 * @par Input:
 *   - 5 RingHistos objects - each with a number of vertex dependent 
 *     2D histograms of the inclusive charge particle density 
 *
 * @par Output:
 *   - 5 RingHistos objects - each with a number of vertex dependent 
 *     2D histograms of the exclusive charge particle density 
 * 
 * @par Corrections used: 
 *   - AliFMDCorrSecondaryMap;
 *   - AliFMDCorrVertexBias
 *   - AliFMDCorrMergingEfficiency
 *
 * @ingroup pwglf_forward_algo
 * @ingroup pwglf_forward_mc
 * @ingroup pwglf_forward_aod
 */
class AliFMDMCCorrector : public AliFMDCorrector
{
public:
  /** 
   * Constructor 
   */
  AliFMDMCCorrector()
    : AliFMDCorrector(),
      fFMD1i(0), 
      fFMD2i(0),
      fFMD2o(0),
      fFMD3i(0),
      fFMD3o(0),
      fComps(0),
      fSecondaryForMC(true)
  {}
  /** 
   * Constructor 
   * 
   * @param name Name of object
   */
  AliFMDMCCorrector(const char* name)
    : AliFMDCorrector(name),
      fFMD1i(0), 
      fFMD2i(0),
      fFMD2o(0),
      fFMD3i(0),
      fFMD3o(0),
      fComps(0),
      fSecondaryForMC(true)
  {}
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliFMDMCCorrector(const AliFMDMCCorrector& o)
    : AliFMDCorrector(o),
      fFMD1i(o.fFMD1i), 
      fFMD2i(o.fFMD2i),
      fFMD2o(o.fFMD2o),
      fFMD3i(o.fFMD3i),
      fFMD3o(o.fFMD3o),
      fComps(0),
      fSecondaryForMC(o.fSecondaryForMC)
  {}
  /** 
   * Destructor 
   */
  virtual ~AliFMDMCCorrector();
  /** 
   * Assignement operator
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object
   */
  AliFMDMCCorrector& operator=(const AliFMDMCCorrector&);
  /** 
   * If set, then do not do the secondary correction for MC data
   * 
   * @param use 
   */
  void SetSecondaryForMC(Bool_t use) { fSecondaryForMC = use; }
  /** 
   * Initialize this object 
   * 
   * @param etaAxis Eta axis to use 
   */
  void SetupForData(const TAxis& etaAxis);
  /** 
   * Do the calculations 
   * 
   * @param hists    Cache of histograms 
   * @param vtxBin   Vertex bin 
   * 
   * @return true on successs 
   */
  virtual Bool_t CorrectMC(AliForwardUtil::Histos& hists, UShort_t vtxBin);
  /** 
   * Compare the result of analysing the ESD for 
   * the inclusive charged particle density to analysing 
   * MC truth 
   * 
   * @param esd 
   * @param mc 
   * 
   * @return 
   */
  virtual Bool_t CompareResults(AliForwardUtil::Histos& esd, 
				AliForwardUtil::Histos& mc);
  /** 
   * Output diagnostic histograms to directory 
   * 
   * @param dir List to write in
   */  
  void CreateOutputObjects(TList* dir);

  /**
   * Print information
   * 
   * @param option Not used 
   */
  void Print(Option_t* option="") const;
protected:
  /** 
   * MAke comparison profiles
   * 
   * @param d     Detector 
   * @param r     Ring 
   * @param axis  Eta axis 
   * 
   * @return Newly allocated profile object
   */
  TProfile2D* Make(UShort_t d, Char_t r, const TAxis& axis) const;
  /** 
   * Fill comparison profiles
   * 
   * @param d    Detector 
   * @param r    Ring 
   * @param esd  ESD histogram
   * @param mc   MC histogram
   */
  void Fill(UShort_t d, Char_t r, TH2* esd, TH2* mc);

  TProfile2D* fFMD1i; // Comparison
  TProfile2D* fFMD2i; // Comparison
  TProfile2D* fFMD2o; // Comparison
  TProfile2D* fFMD3i; // Comparison
  TProfile2D* fFMD3o; // Comparison
  TList*      fComps; // List of comparisons 
  Bool_t      fSecondaryForMC;  // Whether to correct MC data 

  ClassDef(AliFMDMCCorrector,2); // Calculate Nch density 
};

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

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