ROOT logo
// 
// This class calculates the inclusive charged particle density
// in each for the 5 FMD rings based on the MC truth.
//
#ifndef ALIFMDMCDENSITYCALCULATOR_H
#define ALIFMDMCDENSITYCALCULATOR_H
/**
 * @file   AliFMDMCDensityCalculator.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:03:27 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_aod
 */
#include "AliFMDDensityCalculator.h"
#include <TList.h>
#include "AliForwardUtil.h"
class AliMCEvent;
class TH2;
class TH2D;
class TProfile2D;

/** 
 * This class calculates the inclusive charged particle density
 * in each for the 5 FMD rings based on the MC truth.
 *
 * @par Input:
 *   - AliMCEvent  MC truth event infromation
 *
 * @par Output:
 *   - None
 *
 * @par Corrections used: 
 *   - None
 *
 * @ingroup pwglf_forward_algo
 * @ingroup pwglf_forward_mc
 * @ingroup pwglf_forward_aod
 */
class AliFMDMCDensityCalculator : public AliFMDDensityCalculator
{
public:
  /** 
   * Constructor 
   */
  AliFMDMCDensityCalculator() 
    : AliFMDDensityCalculator(),
      fFMD1i(0), 
      fFMD2i(0),
      fFMD2o(0),
      fFMD3i(0),
      fFMD3o(0),
      fFMD1iC(0), 
      fFMD2iC(0),
      fFMD2oC(0),
      fFMD3iC(0),
      fFMD3oC(0),
      fFMD1iD(0), 
      fFMD2iD(0),
      fFMD2oD(0),
      fFMD3iD(0),
      fFMD3oD(0),
      fComps(0)
  {}
  /** 
   * Constructor 
   * 
   * @param name Name of object
   */
  AliFMDMCDensityCalculator(const char* name) 
   : AliFMDDensityCalculator(name),
      fFMD1i(0), 
      fFMD2i(0),
      fFMD2o(0),
      fFMD3i(0),
      fFMD3o(0),
      fFMD1iC(0), 
      fFMD2iC(0),
      fFMD2oC(0),
      fFMD3iC(0),
      fFMD3oC(0),
      fFMD1iD(0), 
      fFMD2iD(0),
      fFMD2oD(0),
      fFMD3iD(0),
      fFMD3oD(0),
      fComps(0)
  {}
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliFMDMCDensityCalculator(const AliFMDMCDensityCalculator& o)
   : AliFMDDensityCalculator(o) ,
      fFMD1i(o.fFMD1i), 
      fFMD2i(o.fFMD2i),
      fFMD2o(o.fFMD2o),
      fFMD3i(o.fFMD3i),
      fFMD3o(o.fFMD3o),
      fFMD1iC(o.fFMD1iC), 
      fFMD2iC(o.fFMD2iC),
      fFMD2oC(o.fFMD2oC),
      fFMD3iC(o.fFMD3iC),
      fFMD3oC(o.fFMD3oC),
      fFMD1iD(o.fFMD1iD), 
      fFMD2iD(o.fFMD2iD),
      fFMD2oD(o.fFMD2oD),
      fFMD3iD(o.fFMD3iD),
      fFMD3oD(o.fFMD3oD),
      fComps(0)
  {}
  /** 
   * Destructor 
   */
  virtual ~AliFMDMCDensityCalculator();
  /** 
   * Assignement operator
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object
   */
  AliFMDMCDensityCalculator& operator=(const AliFMDMCDensityCalculator& o);
  /** 
   * Initialize this object 
   * 
   * @param etaAxis Eta axis to use 
   */
  void SetupForData(const TAxis& etaAxis);
  /** 
   * Calculate the charged particle density from the MC track references. 
   * 
   * @param fmd    FMD ESD event structure
   * @param hists  Histograms to fill
   * 
   * @return true on success
   */
  virtual Bool_t CalculateMC(const AliESDFMD&        fmd,
			     AliForwardUtil::Histos& hists);
			     
  /** 
   * 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);
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;
  /** 
   * MAke comparison profiles
   * 
   * @param d     Detector 
   * @param r     Ring 
   * 
   * @return Newly allocated profile object
   */
  TH2D* Make(UShort_t d, Char_t r) const;
  /** 
   * Make comparison profiles
   * 
   * @param d     Detector 
   * @param r     Ring 
   * @param max   Maximum 
   * 
   * @return Newly allocated profile object
   */
  TH1D* Make(UShort_t d, Char_t r, Int_t max) 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
  TH2D*       fFMD1iC; // Correlation in FMD1i
  TH2D*       fFMD2iC; // Correlation in FMD2i
  TH2D*       fFMD2oC; // Correlation in FMD2o
  TH2D*       fFMD3iC; // Correlation in FMD3i
  TH2D*       fFMD3oC; // Correlation in FMD3o
  TH1D*       fFMD1iD; // Correlation in FMD1i
  TH1D*       fFMD2iD; // Correlation in FMD2i
  TH1D*       fFMD2oD; // Correlation in FMD2o
  TH1D*       fFMD3iD; // Correlation in FMD3i
  TH1D*       fFMD3oD; // Correlation in FMD3o
  TList*      fComps; // List of comparisons 

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

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

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