ROOT logo
//
// This class contains the secondary correction and the double hit
// correction used in low-flux events.
//
#ifndef ALIFMDCORRDOUBLEHIT_H
#define ALIFMDCORRDOUBLEHIT_H
/**
 * @file   AliFMDCorrDoubleHit.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:00:50 2011
 * 
 * @brief  
 * 
 * @ingroup pwglf_forward_corr
 * 
 */
#include <TObject.h>
#include <TObjArray.h>
class TH1D;

/**
 * This class contains double hit correction used in low-flux events.
 *
 *
 * The double hit correction is given by 
 * @f[
 *   h_{r}(\eta) = \frac{\sum_i N_{i,strips hit}(\eta)}{
 *                       \sum_i N_{i,total hits}(\eta)}
 * @f]
 *
 * where @f$ N_{i,strips hit}(\eta)@f$ is the number of strips in the
 * @f$\eta@f$ bin that had one or more hits in event @f$i@f$, and
 * @f$N_{i,total hits}(\eta)@f$ is the total number hits in the
 * @f$\eta@f$ bin. 
 *
 * These are generated from Monte-Carlo truth information. 
 *
 * @ingroup pwglf_forward_corr
 * 
 */
class AliFMDCorrDoubleHit : public TObject 
{
public:
  /** 
   * Default constructor 
   */
  AliFMDCorrDoubleHit();
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliFMDCorrDoubleHit(const AliFMDCorrDoubleHit& o);
  /**
   * Destructor 
   * 
   */
  virtual ~AliFMDCorrDoubleHit();
  /** 
   * Assignment operator 
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object 
   */
  AliFMDCorrDoubleHit& operator=(const AliFMDCorrDoubleHit& o);
  /** 
   * @{ 
   * @name Get corrections and parameters 
   */
  /** 
   * Get the double hit correction @f$ h_{r}(\eta)@f$ 
   * 
   * @param d Detector number 
   * @param r Ring identifier 
   * 
   * @return @f$ h_{r}(\eta)@f$ 
   */
  TH1D* GetCorrection(UShort_t d, Char_t r) const;
  /* @} */

  /** 
   * @{ 
   * @name Set corrections and parameters 
   */
  /** 
   * Set the double hit correction @f$ h_{r}(\eta)@f$. Note, that the
   * object takes ownership of the passed pointer.
   * 
   * @param d  Detector number (1-3)
   * @param r  Ring identifier (I or O)
   * @param h  @f$ h_{r}(\eta)@f$ 
   * 
   * @return true if operation succeeded 
   */
  Bool_t SetCorrection(UShort_t d, Char_t r, TH1D* h);
  /* @} */

  /** 
   * @{ 
   * @name Auxiliary member functions 
   */
  /** 
   * Declare this as a folder
   * 
   * @return Always true 
   */
  Bool_t IsFolder() const { return true; }
  /** 
   * Browse this object in the browser
   * 
   * @param b 
   */
  void Browse(TBrowser* b);
  /** 
   * Print this object 
   * 
   * @param option 
   */  
  void Print(Option_t* option="R") const; //*MENU*
  /* @} */
protected:
  /** 
   * Get the index corresponding to the given ring 
   * 
   * @param d Detector
   * @param r Ring 
   * 
   * @return Index (0 based) or negative in case of errors
   */
  Int_t GetRingIndex(UShort_t d, Char_t r) const;

  TObjArray fCorrections; // Array of per-ring double hit corr. 
  ClassDef(AliFMDCorrDoubleHit,1); // 
};
#endif
// Local Variables:
//  mode: C++
// End:
 AliFMDCorrDoubleHit.h:1
 AliFMDCorrDoubleHit.h:2
 AliFMDCorrDoubleHit.h:3
 AliFMDCorrDoubleHit.h:4
 AliFMDCorrDoubleHit.h:5
 AliFMDCorrDoubleHit.h:6
 AliFMDCorrDoubleHit.h:7
 AliFMDCorrDoubleHit.h:8
 AliFMDCorrDoubleHit.h:9
 AliFMDCorrDoubleHit.h:10
 AliFMDCorrDoubleHit.h:11
 AliFMDCorrDoubleHit.h:12
 AliFMDCorrDoubleHit.h:13
 AliFMDCorrDoubleHit.h:14
 AliFMDCorrDoubleHit.h:15
 AliFMDCorrDoubleHit.h:16
 AliFMDCorrDoubleHit.h:17
 AliFMDCorrDoubleHit.h:18
 AliFMDCorrDoubleHit.h:19
 AliFMDCorrDoubleHit.h:20
 AliFMDCorrDoubleHit.h:21
 AliFMDCorrDoubleHit.h:22
 AliFMDCorrDoubleHit.h:23
 AliFMDCorrDoubleHit.h:24
 AliFMDCorrDoubleHit.h:25
 AliFMDCorrDoubleHit.h:26
 AliFMDCorrDoubleHit.h:27
 AliFMDCorrDoubleHit.h:28
 AliFMDCorrDoubleHit.h:29
 AliFMDCorrDoubleHit.h:30
 AliFMDCorrDoubleHit.h:31
 AliFMDCorrDoubleHit.h:32
 AliFMDCorrDoubleHit.h:33
 AliFMDCorrDoubleHit.h:34
 AliFMDCorrDoubleHit.h:35
 AliFMDCorrDoubleHit.h:36
 AliFMDCorrDoubleHit.h:37
 AliFMDCorrDoubleHit.h:38
 AliFMDCorrDoubleHit.h:39
 AliFMDCorrDoubleHit.h:40
 AliFMDCorrDoubleHit.h:41
 AliFMDCorrDoubleHit.h:42
 AliFMDCorrDoubleHit.h:43
 AliFMDCorrDoubleHit.h:44
 AliFMDCorrDoubleHit.h:45
 AliFMDCorrDoubleHit.h:46
 AliFMDCorrDoubleHit.h:47
 AliFMDCorrDoubleHit.h:48
 AliFMDCorrDoubleHit.h:49
 AliFMDCorrDoubleHit.h:50
 AliFMDCorrDoubleHit.h:51
 AliFMDCorrDoubleHit.h:52
 AliFMDCorrDoubleHit.h:53
 AliFMDCorrDoubleHit.h:54
 AliFMDCorrDoubleHit.h:55
 AliFMDCorrDoubleHit.h:56
 AliFMDCorrDoubleHit.h:57
 AliFMDCorrDoubleHit.h:58
 AliFMDCorrDoubleHit.h:59
 AliFMDCorrDoubleHit.h:60
 AliFMDCorrDoubleHit.h:61
 AliFMDCorrDoubleHit.h:62
 AliFMDCorrDoubleHit.h:63
 AliFMDCorrDoubleHit.h:64
 AliFMDCorrDoubleHit.h:65
 AliFMDCorrDoubleHit.h:66
 AliFMDCorrDoubleHit.h:67
 AliFMDCorrDoubleHit.h:68
 AliFMDCorrDoubleHit.h:69
 AliFMDCorrDoubleHit.h:70
 AliFMDCorrDoubleHit.h:71
 AliFMDCorrDoubleHit.h:72
 AliFMDCorrDoubleHit.h:73
 AliFMDCorrDoubleHit.h:74
 AliFMDCorrDoubleHit.h:75
 AliFMDCorrDoubleHit.h:76
 AliFMDCorrDoubleHit.h:77
 AliFMDCorrDoubleHit.h:78
 AliFMDCorrDoubleHit.h:79
 AliFMDCorrDoubleHit.h:80
 AliFMDCorrDoubleHit.h:81
 AliFMDCorrDoubleHit.h:82
 AliFMDCorrDoubleHit.h:83
 AliFMDCorrDoubleHit.h:84
 AliFMDCorrDoubleHit.h:85
 AliFMDCorrDoubleHit.h:86
 AliFMDCorrDoubleHit.h:87
 AliFMDCorrDoubleHit.h:88
 AliFMDCorrDoubleHit.h:89
 AliFMDCorrDoubleHit.h:90
 AliFMDCorrDoubleHit.h:91
 AliFMDCorrDoubleHit.h:92
 AliFMDCorrDoubleHit.h:93
 AliFMDCorrDoubleHit.h:94
 AliFMDCorrDoubleHit.h:95
 AliFMDCorrDoubleHit.h:96
 AliFMDCorrDoubleHit.h:97
 AliFMDCorrDoubleHit.h:98
 AliFMDCorrDoubleHit.h:99
 AliFMDCorrDoubleHit.h:100
 AliFMDCorrDoubleHit.h:101
 AliFMDCorrDoubleHit.h:102
 AliFMDCorrDoubleHit.h:103
 AliFMDCorrDoubleHit.h:104
 AliFMDCorrDoubleHit.h:105
 AliFMDCorrDoubleHit.h:106
 AliFMDCorrDoubleHit.h:107
 AliFMDCorrDoubleHit.h:108
 AliFMDCorrDoubleHit.h:109
 AliFMDCorrDoubleHit.h:110
 AliFMDCorrDoubleHit.h:111
 AliFMDCorrDoubleHit.h:112
 AliFMDCorrDoubleHit.h:113
 AliFMDCorrDoubleHit.h:114
 AliFMDCorrDoubleHit.h:115
 AliFMDCorrDoubleHit.h:116
 AliFMDCorrDoubleHit.h:117
 AliFMDCorrDoubleHit.h:118
 AliFMDCorrDoubleHit.h:119
 AliFMDCorrDoubleHit.h:120
 AliFMDCorrDoubleHit.h:121
 AliFMDCorrDoubleHit.h:122
 AliFMDCorrDoubleHit.h:123
 AliFMDCorrDoubleHit.h:124
 AliFMDCorrDoubleHit.h:125
 AliFMDCorrDoubleHit.h:126
 AliFMDCorrDoubleHit.h:127
 AliFMDCorrDoubleHit.h:128
 AliFMDCorrDoubleHit.h:129
 AliFMDCorrDoubleHit.h:130
 AliFMDCorrDoubleHit.h:131
 AliFMDCorrDoubleHit.h:132
 AliFMDCorrDoubleHit.h:133
 AliFMDCorrDoubleHit.h:134
 AliFMDCorrDoubleHit.h:135
 AliFMDCorrDoubleHit.h:136
 AliFMDCorrDoubleHit.h:137
 AliFMDCorrDoubleHit.h:138
 AliFMDCorrDoubleHit.h:139