ROOT logo
// 
// Calculate the corrections in the central regions
// 
#ifndef ALICENTRALMCCORRECTIONS_H
#define ALICENTRALMCCORRECTIONS_H
/**
 * @file   AliCentralMCCorrectionsTask.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:05:51 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_central_aod
 */
#include "AliBaseMCCorrectionsTask.h"
#include "AliSPDMCTrackDensity.h"
class AliCentralCorrSecondaryMap;
class AliCentralCorrAcceptance;


/** 
 * Calculate the corrections in the central regions
 * 
 * @par Inputs: 
 *   - AliESDEvent 
 *
 * @par Outputs: 
 *   - AliAODCentralMult 
 * 
 * @par Histograms 
 *   
 * @par Corrections used 
 * 
 * @ingroup pwglf_central_tasks
 * @ingroup pwglf_central_mc
 * @ingroup pwglf_central_aod
 * 
 */
class AliCentralMCCorrectionsTask : public AliBaseMCCorrectionsTask
{
public:
  /** 
   * Constructor 
   * 
   * @param name Name of task 
   */
  AliCentralMCCorrectionsTask(const char* name);
  /** 
   * Constructor
   */
  AliCentralMCCorrectionsTask();
  /** 
   * @{ 
   * @name Interface methods 
   */
  /** 
   * Print this object 
   * 
   * @param option   Not used
   */
  void Print(Option_t* option="") const;

  /** 
   * Set the number of phi bins to use 
   * 
   * @param nBins 
   */
  void SetNPhiBins(UShort_t nBins) { fNPhiBins = nBins; }
  /** 
   * Whether to make effective corrections
   * 
   * @param e if true, make effective correction
   */
  void SetEffectiveCorrection(Bool_t e) { fEffectiveCorr = e; }
  /** 
   * Set the maximum @f$|\eta|@f$ to accept. 
   * 
   * @param maxEta maximum @f$|\eta|@f$
   */
  void SetEtaCut(Double_t maxEta=1.9) { fEtaCut = maxEta; }
  /** 
   * If a particular phi bin has less then this fraction of the
   * largest signal in the corresponding @f$\eta@f$ slice, then it is
   * not used.
   * 
   * @param least Lower bound on fraction of largest signal in this
   * @f$\eta@f$ slice
   */
  void SetAcceptanceCut(Double_t least=0.8) { fCorrCut = least; }
  /** 
   * Get a reference to the track density calculator 
   * 
   * @return Reference to the track density calculator 
   */
  AliSPDMCTrackDensity& GetTrackDensity() { return fTrackDensity; }
  /** 
   * Get a reference to the track density calculator 
   * 
   * @return Reference to the track density calculator 
   */
  const AliSPDMCTrackDensity& GetTrackDensity() const { return fTrackDensity; }
protected: 
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliCentralMCCorrectionsTask(const AliCentralMCCorrectionsTask& o);
  /** 
   * Assignment operator 
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object 
   */
  AliCentralMCCorrectionsTask& operator=(const AliCentralMCCorrectionsTask& o);
  /**
   * A vertex bin 
   * 
   */
  struct VtxBin : public AliBaseMCCorrectionsTask::VtxBin
  {
    /** 
     * Constructor 
     */
    VtxBin();
    /** 
     * Constructor
     *  
     * @param low       Lower @f$v_z@f$ bound
     * @param high      Upper @f$v_z@f$ bound
     * @param etaAxis   @f$\eta@f$ axis to use 
     * @param nPhi      Number of phi bins 
     */
    VtxBin(Double_t low, Double_t high, const TAxis& etaAxis, UShort_t nPhi);
    /** 
     * Copy constructor 
     * 
     * @param o Object to copy from 
     */
    VtxBin(const VtxBin& o);
    /** 
     * Assignment operator 
     * 
     * @param o Object to assign from 
     * 
     * @return Reference to this object
     */
    VtxBin& operator=(const VtxBin& o);
    /** 
     * Declare output in passed list 
     * 
     * @param list List to put output in 
     */
    TList* CreateOutputObjects(TList* list);
    /** 
     * End of job process 
     * 
     * @param o         List to add output to 
     * @param i         Input list
     * @param iVz       Vertex bin 
     * @param effective Make an effective correction 
     * @param etaCut    Maximum @f$|\eta|@f$ to use 
     * @param accCut    Cut on acceptance 
     * @param acorr     Acceptance correction 
     * @param map       Corrections map 
     */
    void Terminate(const TList* i, 
		   TList* o,
		   UShort_t iVz, 
		   Bool_t effective,
		   Double_t etaCut, 
		   Double_t accCut,
		   AliCentralCorrSecondaryMap* map,
		   AliCentralCorrAcceptance* acorr);
    
    TH2D* fHits;     // Cache of MC-truth hits
    TH2D* fClusters; // Cache of reconstructed hits

    ClassDef(VtxBin,3); // Vertex bin 
  };
  /** 
   * Define our vertex bins 
   * 
   * @param list List to read or add binst from/to
   */
  void DefineBins(TList* list);
  /** 
   * Create a vertex bin 
   * 
   * @param low     Low cut on @f$IP_{z}@f$ 
   * @param high    High cut on @f$IP_{z}@f$ 
   * 
   * @return Newly created vertex bin
   */
  AliBaseMCCorrectionsTask::VtxBin* CreateVtxBin(Double_t low, Double_t high);
  /** 
   * Process an ESD event
   * 
   * @param esd   ESD event 
   * @param mc    MC event
   * @param bin   Vertex bin 
   * @param vz    @f$IP_{z}@f$ 
   * 
   * @return true on success
   */
  Bool_t ProcessESD(const AliESDEvent& esd, const AliMCEvent& mc, 
		    AliBaseMCCorrectionsTask::VtxBin& bin,
		    Double_t vz);
  /** 
   * Create corrections objects and store them in passed list
   * 
   * @param results Output list 
   */
  virtual void CreateCorrections(TList* results);
  /** 
   * Do the final processing of a vertex bin 
   * 
   * @param bin       Vertex bin
   * @param iVz       Vertex bin number 
   * 
   * @return true on successd
   */
  virtual Bool_t FinalizeVtxBin(AliBaseMCCorrectionsTask::VtxBin*      bin, 
				UShort_t     iVz);


  AliSPDMCTrackDensity        fTrackDensity; // Get the track density 
  AliCentralCorrSecondaryMap* fSecCorr;
  AliCentralCorrAcceptance*   fAccCorr;

  UShort_t   fNPhiBins;      // Nunber of phi bins
  Bool_t     fEffectiveCorr; // Whether to make effective corrections
  Double_t   fEtaCut;        // Maximum Eta
  Double_t   fCorrCut;       // Correction cut
  ClassDef(AliCentralMCCorrectionsTask,3) // Central corrections class
};

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

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