ROOT logo
//
// Class to do the sharing correction for MC data.
//
#ifndef ALIFMDMCSHARINGFILTER_H
#define ALIFMDMCSHARINGFILTER_H
/**
 * @file   AliFMDMCSharingFilter.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:03:47 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_aod
 */
#include "AliFMDSharingFilter.h"
#include "AliFMDMCTrackDensity.h"

/**
 * Class to do the sharing correction for MC data.
 *
 * @par Input: 
 *    - AliESDFMD object  - from reconstruction
 *    - Kinematics
 *    - Track-References
 *
 * @par Output: 
 *    - AliESDFMD object  - copy of input, but with signals merged 
 *
 * @par Corrections used: 
 *    - None
 *
 * @par Histograms: 
 *    - For each ring (FMD1i, FMD2i, FMD2o, FMD3i, FMD3o) the distribution of 
 *      signals before and after the filter.  
 *    - For each ring (see above), an array of distributions of number of 
 *      hit strips for each vertex bin (if enabled - see SetupForData method)
 * 
 *
 * @ingroup pwglf_forward_algo
 * @ingroup pwglf_forward_mc
 * @ingroup pwglf_forward_aod
 */
class AliFMDMCSharingFilter : public AliFMDSharingFilter
{
public: 
  /** 
   * Destructor
   */
  virtual ~AliFMDMCSharingFilter();
  /** 
   * Default Constructor - do not use 
   */
  AliFMDMCSharingFilter()
  : AliFMDSharingFilter(), 
    fTrackDensity(),
    fFMD1i(0),
    fFMD2i(0),
    fFMD2o(0),
    fFMD3i(0),
    fFMD3o(0) /*, 
		fOperComp(0) */
  {}
  /** 
   * Constructor 
   * 
   * @param title Title of object  - not significant 
   */
  AliFMDMCSharingFilter(const char* title);
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliFMDMCSharingFilter(const AliFMDMCSharingFilter& o);
  /** 
   * Assignment operator 
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this 
   */
  AliFMDMCSharingFilter& operator=(const AliFMDMCSharingFilter& o);

  /** 
   * Return the track density calculator 
   * 
   * @return Track density calculator 
   */
  const AliFMDMCTrackDensity& GetTrackDensity() const { return fTrackDensity; }
  /** 
   * Return the track density calculator 
   * 
   * @return Track density calculator 
   */
  AliFMDMCTrackDensity& GetTrackDensity() { return fTrackDensity; }

  /** 
   * Filter the input kinematics and track references, using 
   * some of the ESD information
   * 
   * @param input   Input ESD event
   * @param event   Input MC event
   * @param vz      Vertex position 
   * @param output  Output ESD-like object
   * @param primary Per-event histogram of primaries 
   *
   * @return True on succes, false otherwise 
   */
  Bool_t FilterMC(const AliESDFMD&  input, 
		  const AliMCEvent& event,
		  Double_t          vz,
		  AliESDFMD&        output,
		  TH2D*             primary);
  /** 
   * Compare the result of merging to the monte-carlo truth.  This
   * fills the correlation histograms
   * 
   * @param esd  ESD after sharing correction
   * @param mc   MC ESD 
   */
  void CompareResults(const AliESDFMD&  esd, const AliESDFMD&  mc);
		  
  /** 
   * Define the output histograms.  These are put in a sub list of the
   * passed list.   The histograms are merged before the parent task calls 
   * AliAnalysisTaskSE::Terminate 
   * 
   * @param dir Directory to add to 
   */
  void CreateOutputObjects(TList* dir);
  /** 
   * Scale the histograms to the total number of events 
   * 
   * @param dir     Where the output is 
   * @param output  Output list
   * @param nEvents Number of events 
   */
  void Terminate(const TList* dir, TList* output, Int_t nEvents);
  /** 
   * Print information
   * 
   * @param option Not used 
   */
  void Print(Option_t* option="") const;

  virtual void SetDebug(Int_t dbg=1);
protected:
  AliFMDMCTrackDensity fTrackDensity;
  TH2D* fFMD1i;      // ESD-MC correlation 
  TH2D* fFMD2i;      // ESD-MC correlation 
  TH2D* fFMD2o;      // ESD-MC correlation 
  TH2D* fFMD3i;      // ESD-MC correlation 
  TH2D* fFMD3o;      // ESD-MC correlation 
  // TH2I* fOperComp;   // Operation vs # trackrefs
  ClassDef(AliFMDMCSharingFilter,3); //
};

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