ROOT logo
//
// This class contains the secondary correction 
// for the central region
//
#ifndef ALICENTRALCORRSECONDARYMAP_H
#define ALICENTRALCORRSECONDARYMAP_H
/**
 * @file   AliCentralCorrSecondaryMap.h
 * @author Hans Hjersing Dalsgaard 
 * @date   Wed Mar 23 13:59:03 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_corr
 */
#include <TObject.h>
#include <TObjArray.h>
#include <TAxis.h>
class TH2D;

/**
 * This class contains the acceptance correction due to dead channels
 *
 * These are generated from the on-line dead channel calculations 
 *
 * @ingroup pwglf_forward_corr
 */
class AliCentralCorrSecondaryMap : public TObject 
{
public:
  /** 
   * Default constructor 
   */
  AliCentralCorrSecondaryMap();
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliCentralCorrSecondaryMap(const AliCentralCorrSecondaryMap& o);
  /**
   * Destructor 
   * 
   */
  virtual ~AliCentralCorrSecondaryMap();
  /** 
   * @{ 
   * @name Get corrections and parameters 
   */
  /** 
   * Assignment operator 
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object 
   */
  AliCentralCorrSecondaryMap& operator=(const AliCentralCorrSecondaryMap& o);
  /** 
   * Get the acceptance correction @f$ a_{r,v}@f$ 
   *
   * @param v  Primary interaction point @f$z@f$ coordinate
   * 
   * @return The correction @f$ a_{r,v}@f$ 
   */
  TH2D* GetCorrection(Double_t v) const;
  /** 
   * Get the acceptance correction @f$ a_{r,v}@f$ 
   *
   * @param b  Bin corresponding to the primary interaction point 
   *           @f$z@f$ coordinate (1 based)
   * 
   * @return The correction @f$ a_{r,v}@f$ 
   */
  TH2D* GetCorrection(UShort_t b) const;
  /** 
   * Get the vertex axis used 
   * 
   * @return vertex axis 
   */
  const TAxis& GetVertexAxis() const { return fVertexAxis; }
  /* @} */

  /** 
   * @{ 
   * @name Set corrections and parameters 
   */
  /** 
   * Set the acceptance correction @f$ a_{r,v}(\eta)@f$.
   * Note, that the object takes ownership of the passed pointer.
   * 
   * @param v    Primary interaction point @f$z@f$ coordinate  
   * @param h    @f$ a_{r,v}(\eta)@f$ 
   * 
   * @return true if operation succeeded 
   */
  Bool_t SetCorrection(Double_t v, TH2D* h);
  /** 
   * Set the acceptance correction @f$ a_{r,v}(\eta)@f$ 
   * Note, that the object takes ownership of the passed pointer.
   * 
   * @param b    Bin corresponding to the primary interaction point 
   *             @f$z@f$ coordinate  (1 based)
   * @param h    @f$ a_{r,v}(\eta)@f$ 
   * 
   * @return true if operation succeeded 
   */
  Bool_t SetCorrection(UShort_t b, TH2D* h);
  /** 
   * Set the vertex axis to use 
   * 
   * @param axis Vertex axis 
   */
  void SetVertexAxis(const TAxis& axis);
  /** 
   * Set the vertex axis to use 
   * 
   * @param nBins   Number of bins
   * @param min     Minimum
   * @param max     Maximum
   */
  void SetVertexAxis(Int_t nBins, Double_t min, Double_t max);
  /* @} */

  /** 
   * @{ 
   * @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:
  /** 
   * Find the vertex bin that corresponds to the passed vertex 
   * 
   * @param vertex The interaction points @f$z@f$-coordinate 
   * 
   * @return Vertex bin in @f$[1,N_{\mbox{vertex}}]@f$ or negative if 
   * out of range 
   */
  Int_t FindVertexBin(Double_t vertex) const;
  /** 
   * Get the index corresponding to the given ring 
   * 
   * @param d Detector
   * @param r Ring 
   * 
   * @return Index (0 based) or negative in case of errors
   */
    
  TObjArray fArray;      // Array of per-ring, per-vertex 2nd map
  TAxis     fVertexAxis;     // The vertex axis 
  ClassDef(AliCentralCorrSecondaryMap,1); // SecondaryMap correction due to dead areas
};

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