ROOT logo
// 
// This class collects the event histograms into single histograms, 
// one for each ring in each vertex bin.  
//
#ifndef ALIFMDHISTCOLLECTOR_H
#define ALIFMDHISTCOLLECTOR_H
/**
 * @file   AliFMDHistCollector.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:03:01 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_aod
 */
#include <TNamed.h>
#include <TList.h>
#include <TArrayI.h>
#include "AliForwardUtil.h"
class AliESDFMD;
class TH2;
class TH2D;
class TH1D;
class TObjArray;

/** 
 * This class collects the event histograms into single histograms, 
 * one for each ring in each vertex bin.  
 *
 * @par Input:
 *   - AliESDFMD object possibly corrected for sharing
 *
 * @par Output:
 *   - 5 RingHistos objects - each with a number of vertex dependent 
 *     2D histograms of the inclusive charge particle density 
 * 
 * @par HistCollector used: 
 *   - AliFMDCorrSecondaryMap
 *
 * @ingroup pwglf_forward_algo
 * @ingroup pwglf_forward_aod
 */
class AliFMDHistCollector : public TNamed
{
public:
  /** 
   * Methods to use when merging overlapping bins @f$b_1@f$, @f$b_2@f$
   * with content @f$c_1@f$, @f$c_2@f$, and errors @f$e_1@f$,
   * @f$e_2@f$ into bin @f$ b@f$ with content @f$c@f$ and error @f$e@f$ 
   */
  enum MergeMethod {
    /**
     * @f[
     *   c = \frac{1}{2}(c_1+c_2) 
     * @f]
     * @f[
     *   e = \sqrt{e_1^2+e_2^2} 
     * @f]
     */
    kStraightMean,       
    /**
     * As above, exept zero's are ignored 
     */
    kStraightMeanNoZero, 
    /** 
     * @f[ 
     *   c = \frac{\frac{c_1}{e_1^2}+\frac{c_2}{e_2^2}}{
     *             \frac{1}{e_1^2}+\frac{1}{e_2^2}}
     * @f]
     * @f[
     *   e = \sqrt{\frac{1}{\frac{1}{e_1^2}+\frac{1}{e_2^2}}}
     * @f]
     */
    kWeightedMean, 
    /** 
     * @f[
     *     c = \left\{\begin{array}{cl}
     *          c_1 & \mbox{if $e_1 < e_2$} \\
     *          c_2 & \mbox{otherwise}\end{array}\right.
     * @f]
     */
    kLeastError,
    /** 
     * Just sum the signals 
     */
    kSum,
    /** 
     * In overlaps, prefer inners, or if both are inners, 
     * do the straight mean 
     */
    kPreferInner,
    /** 
     * In overlaps, prefer outers, or if both are outers (doesn't happen), 
     * do the straight mean 
     */
    kPreferOuter

  };
  /**
   * How to obtain the fiducial cuts 
   */
  enum FiducialMethod { 
    /**
     * Select bins by fixed cut.  Bins with a secondary correction
     * less than the cut is considered as non-valid
     */
    kByCut, 
    /**
     * A bin is considered non-valid, if it is less then twice as
     * large as it's neighbors (in eta)
     */
    kDistance 
  };
  /**
   * FMD ring bits for skipping 
   */
   enum FMDRingBits { 
     kFMD1I=0x01,
     kFMD1 =kFMD1I,
     kFMD2I=0x02,
     kFMD2O=0x04,
     kFMD2 =kFMD2I|kFMD2O,
     kFMD3I=0x08,
     kFMD3O=0x10,
     kFMD3 =kFMD3I|kFMD3O
  };
  /** 
   * Constructor 
   */
  AliFMDHistCollector();
  /** 
   * Constructor 
   * 
   * @param title Name of object
   */
  AliFMDHistCollector(const char* title);
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliFMDHistCollector(const AliFMDHistCollector& o);

  /** 
   * Destructor 
   */
  virtual ~AliFMDHistCollector();
  /** 
   * Assignement operator
   * 
   * @param o Object to assign from 
   *
   * @return Reference to this object
   */
  AliFMDHistCollector& operator=(const AliFMDHistCollector&);
  /** 
   * Intialise 
   * 
   * @param vtxAxis  @f$ v_z@f$ axis 
   * @param etaAxis  @f$ \eta@f$ axis 
   */  
  virtual void SetupForData(const TAxis& vtxAxis,
		    const TAxis& etaAxis);
  /** 
   * Do the calculations 
   * 
   * @param hists    Cache of histograms 
   * @param sums     Cache to sum ring histograms in 
   * @param vtxBin   Vertex bin (1 based)
   * @param out      Output histogram
   * @param cent     Centrality
   * @param eta2phi  Copy eta coverage to phi acceptance 
   * @param add      If true, add to internal caches
   * 
   * @return true on successs 
   */
  virtual Bool_t Collect(const AliForwardUtil::Histos& hists, 
			 AliForwardUtil::Histos&       sums, 
			 UShort_t                      vtxBin, 
			 TH2D&                         out,
			 Double_t 		       cent=-1.0,
			 Bool_t                        eta2phi=false,
			 Bool_t                        add=true);
  /** 
   * Output diagnostic histograms to directory 
   * 
   * @param dir List to write in
   */  
  virtual void CreateOutputObjects(TList* dir);
  /** 
   * Set the merge method 
   * 
   * @param m Method
   */
  void SetMergeMethod(MergeMethod m) { fMergeMethod = m; }
  MergeMethod GetMergeMethod() const { return fMergeMethod; }
  /** 
   * Set the method for finding the fidicual area of the secondary maps 
   * 
   * @param m Method
   */
  void SetFiducialMethod(FiducialMethod m) { fFiducialMethod = m; }
  /** 
   * Set the number of extra bins (beyond the secondary map border) 
   * to cut away. 
   * 
   * @param n Number of bins 
   */
  void SetNCutBins(UInt_t n=2) { fNCutBins = n; }
  /** 
   * Set the correction cut, that is, when bins in the secondary
   * correction maps have a value lower than this cut, they are
   * considered uncertain and not used
   * 
   * @param cut Cut-off 
   */
  void SetCorrectionCut(Float_t cut=0.5) { fCorrectionCut = cut; }
  /** 
   * Set FMD rings to skip. Argument should be
   * kFirstRingToSkip|kSecondRingToSkip...
   * 
   * @param mask bit pattern
   */
  void SetFMDRingsToSkip(UShort_t mask) { fSkipFMDRings = mask; }
 /** 
   * Set whether to make bg maps or not
   * 
   * @param use make them
   */
  void SetMakeBGHitMaps(Bool_t use) { fBgAndHitMaps = use; }
  /** 
   * Set whether to make by-centrality sums for each ring
   * 
   * @param use If true, make by-centrality sums
   */
  void SetMakeCentralitySums(Bool_t use) { fDoByCent = use; }
  /** 
   * Set the debug level. The higher the value the more output 
   * 
   * @param dbg Debug level 
   */
  void SetDebug(Int_t dbg=1) { fDebug = dbg; }
  /** 
   * Print information 
   * 
   * @param option Not used
   */
  void Print(Option_t* option="") const;
protected:
  /** 
   * Get the detector and ring from the ring index 
   * 
   * @param idx Ring index 
   * @param d   On return, the detector or 0 in case of errors 
   * @param r   On return, the ring id or '0' in case of errors 
   */
  static void GetDetRing(Int_t idx, UShort_t& d, Char_t& r);
  /** 
   * Get the ring index from detector number and ring identifier 
   * 
   * @param d Detector
   * @param r Ring identifier 
   * 
   * @return ring index or -1 in case of problems 
   */
  static Int_t GetIdx(UShort_t d, Char_t r);
  /** 
   * Check if the detector @a d, ring @a r is listed <i>in</i> the @a
   * skips bit mask.  If the detector/ring is in the mask, return true.
   * 
   * That is, use case is 
   * @code 
   *  for (UShort_t d=1. d<=3, d++) {
   *    UShort_t nr = (d == 1 ? 1 : 2);
   *    for (UShort_t q = 0; q < nr; q++) { 
   *      Char_t r = (q == 0 ? 'I' : 'O');
   *      if (CheckSkips(d, r, skips)) continue; 
   *      // Process detector/ring 
   *    }
   *  }
   * @endcode
   *
   * @param d      Detector
   * @param r      Ring 
   * @param skips  Mask of detector/rings to skip
   * 
   * @return True if detector @a d, ring @a r is in the mask @a skips 
   */
  static Bool_t CheckSkip(UShort_t d, Char_t r, UShort_t skips);
  /** 
   * Check the correction
   * 
   * @param m   Fiducial method used
   * @param cut Cut value 
   * @param bg  Secondary map
   * @param ie  @f$\eta@f$ bin
   * @param ip  @f$\varphi@f$ bin
   * 
   * @return true if OK. 
   */
  static Bool_t CheckCorrection(FiducialMethod m, Double_t cut, 
				const TH2D* bg, Int_t ie, Int_t ip);

  /** 
   * Merge bins accoring to set method
   * 
   * @param m   Merging method
   * @param c   Current content
   * @param e   Current error
   * @param oc  Old content
   * @param oe  Old error
   * @param rc  On return, the new content
   * @param re  On return, tne new error
   */
  static void MergeBins(MergeMethod   m, 
			Double_t c,   Double_t e, 
			Double_t oc,  Double_t oe,
			Double_t& rc, Double_t& re);
  
  //==================================================================
  /**
   * Structure to hold per-vertex bin cache of per-ring histograms 
   */
  struct VtxBin : public TObject
  {
    /** 
     * Constructor 
     * 
     * @param index   Index number
     * @param minIpZ  Least @f$IP_{z}@f$
     * @param maxIpZ  Largest @f$IP_{z}@f$
     * @param nCut    Cut on n
     */
    VtxBin(Int_t index=0, Double_t minIpZ=999, Double_t maxIpZ=-999,
	   Int_t nCut=0);
    /** 
     * 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);
    /** 
     * Override to give name based on cuts
     * 
     * @return Name
     */
    const Char_t* GetName() const;
    /** 
     * Set up for data
     * 
     * @param coverage    Diagnostics histogram to be filled 
     * @param skip        Skip flags
     * @param fiducial    Fiducial cut method
     * @param cut         Fiducial cut
     * @param l           Parent output list 
     * @param etaAxis     @f$\eta@f$ axis used
     * @param doHitMap    If true, also do a per-ring sum
     * @param storeSecMap If true, store used secondary map
     */
    void SetupForData(TH2*           coverage,
		      UShort_t       skip,
		      FiducialMethod fiducial, 
		      Double_t       cut,
		      TList*         l, 
		      const TAxis&   etaAxis,
		      Bool_t         doHitMap,
		      Bool_t         storeSecMap);
    /** 
     * Process one event in this vertex bin
     * 
     * @param hists      Histograms
     * @param sums       Sum histograms
     * @param out        Per-event output histogram
     * @param sumRings   Sum per ring 
     * @param skipped    Histogram of skipped rings 
     * @param cent       Event centrality
     * @param m          Merging method
     * @param skips      Which rings to skip
     * @param byCent     List (or null) of per centrality sums
     * @param eta2phi    Copy eta coverage to phi acceptance 
     * @param add      If true, add to internal caches
     *
     * @return true on success
     */
    Bool_t Collect(const AliForwardUtil::Histos& hists, 
		   AliForwardUtil::Histos&       sums, 
		   TH2D&                         out,
		   TH2D*                         sumRings,
		   TH1D*                         skipped,
		   Double_t                      cent,
		   MergeMethod                   m,
		   UShort_t                      skips,
		   TList*                        byCent,
		   Bool_t                        eta2phi,
		   Bool_t                        add);
    /** 
     * Check if there's an overlap between detector @a d, ring @a r
     * and some other ring for the given @f$\eta@f$ @a bin.  If so,
     * return the ring index.  If not, return -1.
     * 
     * @param d    Current detector
     * @param r    Current ring
     * @param bin  Current @f$\eta@f$ bin
     * 
     * @return Index of overlapping ring, or -1
     */    
    Int_t GetOverlap(UShort_t d, Char_t r, Int_t bin) const;
    /** 
     * Get the first and last @f$\eta@f$ bin for a detector 
     * 
     * @param d      Current detector 
     * @param r      Current ring	   
     * @param first  On return, the first @f$\eta@f$ bin
     * @param last   On return, the last @f$\eta@f$ bin
     */
    void GetFirstAndLast(UShort_t d, UShort_t r, 
			 Int_t& first, Int_t& last) const {
      GetFirstAndLast(GetIdx(d,r), first, last);
    }
    /** 
     * Get the first and last @f$\eta@f$ bin for a detector 
     * 
     * @param idx    Current ring index
     * @param first  On return, the first @f$\eta@f$ bin
     * @param last   On return, the last @f$\eta@f$ bin
     */
    void GetFirstAndLast(Int_t idx,Int_t& first, Int_t& last) const;
    /** 
     * Get the first @f$\eta@f$ bin
     * 
     * @param idx Ring index (0-4)
     * 
     * @return bin number
     */
    Int_t GetFirst(Int_t idx) const;
    /** 
     * Get the last @f$\eta@f$ bin
     * 
     * @param idx Ring index (0-4)
     * 
     * @return bin number
     */
    Int_t GetLast(Int_t idx) const;
    /** 
     * Get the first @f$\eta@f$ bin
     * 
     * @param d  Detector
     * @param r  Ring
     * 
     * @return bin number
     */
    Int_t GetFirst(UShort_t d, Char_t r) const { return GetFirst(GetIdx(d,r));}
    /** 
     * Get the last @f$\eta@f$ bin
     * 
     * @param d  Detector
     * @param r  Ring
     * 
     * @return bin number
     */
    Int_t GetLast(UShort_t d, Char_t r) const { return GetLast(GetIdx(d,r));}

    Int_t                   fIndex;     // Vertex bin index
    Double_t                fLow;       // Low @f$ ip_z @f$ 
    Double_t                fHigh;      // High @f$ ip_z @f$
    AliForwardUtil::Histos* fHitMap;    // Hit map (optional)
    TArrayI                 fFirstBin;  // Per-ring first bin
    TArrayI                 fLastBin;   // Per-ring last bin
    Int_t                   fNCutBins;  // Number of bins to cut 

    // ClassDef(VtxBin,1); // Vertex bin in histogram collector
  };
  /** 
   * Get a vertex bin
   * 
   * @param ivtx Bin number (1-nVz)
   * 
   * @return Bin or null
   */
  VtxBin* GetVtxBin(Int_t ivtx);
  /** 
   * Get a vertex bin
   * 
   * @param ivtx Bin number (1-nVz)
   * 
   * @return Bin or null
   */
  const VtxBin* GetVtxBin(Int_t ivtx) const;

  Int_t       fNCutBins;        // Number of additional bins to cut away
  Float_t     fCorrectionCut;   // Cut-off on secondary corrections 
  Int_t       fDebug;           // Debug level 
  TList*      fList;		// Output list
  TH2D*       fSumRings;        // Sum per ring (on y-axis)
  TH2D*       fCoverage;        // Sum per ring (on y-axis)
  TH1D*       fSkipped;         // Skipped rings
  MergeMethod fMergeMethod;     // Merge methiod for overlapping bins 
  FiducialMethod fFiducialMethod; // Fidicual method
  UShort_t    fSkipFMDRings;    // FMD rings to ignore     
  Bool_t      fBgAndHitMaps;    // Make hit/bg maps or not
  TObjArray*  fVtxList;         //! Per-vertex list
  TList*      fByCent;          // By centrality sums
  Bool_t      fDoByCent;        // Whether to do by centrality sum
  ClassDef(AliFMDHistCollector,6); // Calculate Nch density 
};


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

 AliFMDHistCollector.h:1
 AliFMDHistCollector.h:2
 AliFMDHistCollector.h:3
 AliFMDHistCollector.h:4
 AliFMDHistCollector.h:5
 AliFMDHistCollector.h:6
 AliFMDHistCollector.h:7
 AliFMDHistCollector.h:8
 AliFMDHistCollector.h:9
 AliFMDHistCollector.h:10
 AliFMDHistCollector.h:11
 AliFMDHistCollector.h:12
 AliFMDHistCollector.h:13
 AliFMDHistCollector.h:14
 AliFMDHistCollector.h:15
 AliFMDHistCollector.h:16
 AliFMDHistCollector.h:17
 AliFMDHistCollector.h:18
 AliFMDHistCollector.h:19
 AliFMDHistCollector.h:20
 AliFMDHistCollector.h:21
 AliFMDHistCollector.h:22
 AliFMDHistCollector.h:23
 AliFMDHistCollector.h:24
 AliFMDHistCollector.h:25
 AliFMDHistCollector.h:26
 AliFMDHistCollector.h:27
 AliFMDHistCollector.h:28
 AliFMDHistCollector.h:29
 AliFMDHistCollector.h:30
 AliFMDHistCollector.h:31
 AliFMDHistCollector.h:32
 AliFMDHistCollector.h:33
 AliFMDHistCollector.h:34
 AliFMDHistCollector.h:35
 AliFMDHistCollector.h:36
 AliFMDHistCollector.h:37
 AliFMDHistCollector.h:38
 AliFMDHistCollector.h:39
 AliFMDHistCollector.h:40
 AliFMDHistCollector.h:41
 AliFMDHistCollector.h:42
 AliFMDHistCollector.h:43
 AliFMDHistCollector.h:44
 AliFMDHistCollector.h:45
 AliFMDHistCollector.h:46
 AliFMDHistCollector.h:47
 AliFMDHistCollector.h:48
 AliFMDHistCollector.h:49
 AliFMDHistCollector.h:50
 AliFMDHistCollector.h:51
 AliFMDHistCollector.h:52
 AliFMDHistCollector.h:53
 AliFMDHistCollector.h:54
 AliFMDHistCollector.h:55
 AliFMDHistCollector.h:56
 AliFMDHistCollector.h:57
 AliFMDHistCollector.h:58
 AliFMDHistCollector.h:59
 AliFMDHistCollector.h:60
 AliFMDHistCollector.h:61
 AliFMDHistCollector.h:62
 AliFMDHistCollector.h:63
 AliFMDHistCollector.h:64
 AliFMDHistCollector.h:65
 AliFMDHistCollector.h:66
 AliFMDHistCollector.h:67
 AliFMDHistCollector.h:68
 AliFMDHistCollector.h:69
 AliFMDHistCollector.h:70
 AliFMDHistCollector.h:71
 AliFMDHistCollector.h:72
 AliFMDHistCollector.h:73
 AliFMDHistCollector.h:74
 AliFMDHistCollector.h:75
 AliFMDHistCollector.h:76
 AliFMDHistCollector.h:77
 AliFMDHistCollector.h:78
 AliFMDHistCollector.h:79
 AliFMDHistCollector.h:80
 AliFMDHistCollector.h:81
 AliFMDHistCollector.h:82
 AliFMDHistCollector.h:83
 AliFMDHistCollector.h:84
 AliFMDHistCollector.h:85
 AliFMDHistCollector.h:86
 AliFMDHistCollector.h:87
 AliFMDHistCollector.h:88
 AliFMDHistCollector.h:89
 AliFMDHistCollector.h:90
 AliFMDHistCollector.h:91
 AliFMDHistCollector.h:92
 AliFMDHistCollector.h:93
 AliFMDHistCollector.h:94
 AliFMDHistCollector.h:95
 AliFMDHistCollector.h:96
 AliFMDHistCollector.h:97
 AliFMDHistCollector.h:98
 AliFMDHistCollector.h:99
 AliFMDHistCollector.h:100
 AliFMDHistCollector.h:101
 AliFMDHistCollector.h:102
 AliFMDHistCollector.h:103
 AliFMDHistCollector.h:104
 AliFMDHistCollector.h:105
 AliFMDHistCollector.h:106
 AliFMDHistCollector.h:107
 AliFMDHistCollector.h:108
 AliFMDHistCollector.h:109
 AliFMDHistCollector.h:110
 AliFMDHistCollector.h:111
 AliFMDHistCollector.h:112
 AliFMDHistCollector.h:113
 AliFMDHistCollector.h:114
 AliFMDHistCollector.h:115
 AliFMDHistCollector.h:116
 AliFMDHistCollector.h:117
 AliFMDHistCollector.h:118
 AliFMDHistCollector.h:119
 AliFMDHistCollector.h:120
 AliFMDHistCollector.h:121
 AliFMDHistCollector.h:122
 AliFMDHistCollector.h:123
 AliFMDHistCollector.h:124
 AliFMDHistCollector.h:125
 AliFMDHistCollector.h:126
 AliFMDHistCollector.h:127
 AliFMDHistCollector.h:128
 AliFMDHistCollector.h:129
 AliFMDHistCollector.h:130
 AliFMDHistCollector.h:131
 AliFMDHistCollector.h:132
 AliFMDHistCollector.h:133
 AliFMDHistCollector.h:134
 AliFMDHistCollector.h:135
 AliFMDHistCollector.h:136
 AliFMDHistCollector.h:137
 AliFMDHistCollector.h:138
 AliFMDHistCollector.h:139
 AliFMDHistCollector.h:140
 AliFMDHistCollector.h:141
 AliFMDHistCollector.h:142
 AliFMDHistCollector.h:143
 AliFMDHistCollector.h:144
 AliFMDHistCollector.h:145
 AliFMDHistCollector.h:146
 AliFMDHistCollector.h:147
 AliFMDHistCollector.h:148
 AliFMDHistCollector.h:149
 AliFMDHistCollector.h:150
 AliFMDHistCollector.h:151
 AliFMDHistCollector.h:152
 AliFMDHistCollector.h:153
 AliFMDHistCollector.h:154
 AliFMDHistCollector.h:155
 AliFMDHistCollector.h:156
 AliFMDHistCollector.h:157
 AliFMDHistCollector.h:158
 AliFMDHistCollector.h:159
 AliFMDHistCollector.h:160
 AliFMDHistCollector.h:161
 AliFMDHistCollector.h:162
 AliFMDHistCollector.h:163
 AliFMDHistCollector.h:164
 AliFMDHistCollector.h:165
 AliFMDHistCollector.h:166
 AliFMDHistCollector.h:167
 AliFMDHistCollector.h:168
 AliFMDHistCollector.h:169
 AliFMDHistCollector.h:170
 AliFMDHistCollector.h:171
 AliFMDHistCollector.h:172
 AliFMDHistCollector.h:173
 AliFMDHistCollector.h:174
 AliFMDHistCollector.h:175
 AliFMDHistCollector.h:176
 AliFMDHistCollector.h:177
 AliFMDHistCollector.h:178
 AliFMDHistCollector.h:179
 AliFMDHistCollector.h:180
 AliFMDHistCollector.h:181
 AliFMDHistCollector.h:182
 AliFMDHistCollector.h:183
 AliFMDHistCollector.h:184
 AliFMDHistCollector.h:185
 AliFMDHistCollector.h:186
 AliFMDHistCollector.h:187
 AliFMDHistCollector.h:188
 AliFMDHistCollector.h:189
 AliFMDHistCollector.h:190
 AliFMDHistCollector.h:191
 AliFMDHistCollector.h:192
 AliFMDHistCollector.h:193
 AliFMDHistCollector.h:194
 AliFMDHistCollector.h:195
 AliFMDHistCollector.h:196
 AliFMDHistCollector.h:197
 AliFMDHistCollector.h:198
 AliFMDHistCollector.h:199
 AliFMDHistCollector.h:200
 AliFMDHistCollector.h:201
 AliFMDHistCollector.h:202
 AliFMDHistCollector.h:203
 AliFMDHistCollector.h:204
 AliFMDHistCollector.h:205
 AliFMDHistCollector.h:206
 AliFMDHistCollector.h:207
 AliFMDHistCollector.h:208
 AliFMDHistCollector.h:209
 AliFMDHistCollector.h:210
 AliFMDHistCollector.h:211
 AliFMDHistCollector.h:212
 AliFMDHistCollector.h:213
 AliFMDHistCollector.h:214
 AliFMDHistCollector.h:215
 AliFMDHistCollector.h:216
 AliFMDHistCollector.h:217
 AliFMDHistCollector.h:218
 AliFMDHistCollector.h:219
 AliFMDHistCollector.h:220
 AliFMDHistCollector.h:221
 AliFMDHistCollector.h:222
 AliFMDHistCollector.h:223
 AliFMDHistCollector.h:224
 AliFMDHistCollector.h:225
 AliFMDHistCollector.h:226
 AliFMDHistCollector.h:227
 AliFMDHistCollector.h:228
 AliFMDHistCollector.h:229
 AliFMDHistCollector.h:230
 AliFMDHistCollector.h:231
 AliFMDHistCollector.h:232
 AliFMDHistCollector.h:233
 AliFMDHistCollector.h:234
 AliFMDHistCollector.h:235
 AliFMDHistCollector.h:236
 AliFMDHistCollector.h:237
 AliFMDHistCollector.h:238
 AliFMDHistCollector.h:239
 AliFMDHistCollector.h:240
 AliFMDHistCollector.h:241
 AliFMDHistCollector.h:242
 AliFMDHistCollector.h:243
 AliFMDHistCollector.h:244
 AliFMDHistCollector.h:245
 AliFMDHistCollector.h:246
 AliFMDHistCollector.h:247
 AliFMDHistCollector.h:248
 AliFMDHistCollector.h:249
 AliFMDHistCollector.h:250
 AliFMDHistCollector.h:251
 AliFMDHistCollector.h:252
 AliFMDHistCollector.h:253
 AliFMDHistCollector.h:254
 AliFMDHistCollector.h:255
 AliFMDHistCollector.h:256
 AliFMDHistCollector.h:257
 AliFMDHistCollector.h:258
 AliFMDHistCollector.h:259
 AliFMDHistCollector.h:260
 AliFMDHistCollector.h:261
 AliFMDHistCollector.h:262
 AliFMDHistCollector.h:263
 AliFMDHistCollector.h:264
 AliFMDHistCollector.h:265
 AliFMDHistCollector.h:266
 AliFMDHistCollector.h:267
 AliFMDHistCollector.h:268
 AliFMDHistCollector.h:269
 AliFMDHistCollector.h:270
 AliFMDHistCollector.h:271
 AliFMDHistCollector.h:272
 AliFMDHistCollector.h:273
 AliFMDHistCollector.h:274
 AliFMDHistCollector.h:275
 AliFMDHistCollector.h:276
 AliFMDHistCollector.h:277
 AliFMDHistCollector.h:278
 AliFMDHistCollector.h:279
 AliFMDHistCollector.h:280
 AliFMDHistCollector.h:281
 AliFMDHistCollector.h:282
 AliFMDHistCollector.h:283
 AliFMDHistCollector.h:284
 AliFMDHistCollector.h:285
 AliFMDHistCollector.h:286
 AliFMDHistCollector.h:287
 AliFMDHistCollector.h:288
 AliFMDHistCollector.h:289
 AliFMDHistCollector.h:290
 AliFMDHistCollector.h:291
 AliFMDHistCollector.h:292
 AliFMDHistCollector.h:293
 AliFMDHistCollector.h:294
 AliFMDHistCollector.h:295
 AliFMDHistCollector.h:296
 AliFMDHistCollector.h:297
 AliFMDHistCollector.h:298
 AliFMDHistCollector.h:299
 AliFMDHistCollector.h:300
 AliFMDHistCollector.h:301
 AliFMDHistCollector.h:302
 AliFMDHistCollector.h:303
 AliFMDHistCollector.h:304
 AliFMDHistCollector.h:305
 AliFMDHistCollector.h:306
 AliFMDHistCollector.h:307
 AliFMDHistCollector.h:308
 AliFMDHistCollector.h:309
 AliFMDHistCollector.h:310
 AliFMDHistCollector.h:311
 AliFMDHistCollector.h:312
 AliFMDHistCollector.h:313
 AliFMDHistCollector.h:314
 AliFMDHistCollector.h:315
 AliFMDHistCollector.h:316
 AliFMDHistCollector.h:317
 AliFMDHistCollector.h:318
 AliFMDHistCollector.h:319
 AliFMDHistCollector.h:320
 AliFMDHistCollector.h:321
 AliFMDHistCollector.h:322
 AliFMDHistCollector.h:323
 AliFMDHistCollector.h:324
 AliFMDHistCollector.h:325
 AliFMDHistCollector.h:326
 AliFMDHistCollector.h:327
 AliFMDHistCollector.h:328
 AliFMDHistCollector.h:329
 AliFMDHistCollector.h:330
 AliFMDHistCollector.h:331
 AliFMDHistCollector.h:332
 AliFMDHistCollector.h:333
 AliFMDHistCollector.h:334
 AliFMDHistCollector.h:335
 AliFMDHistCollector.h:336
 AliFMDHistCollector.h:337
 AliFMDHistCollector.h:338
 AliFMDHistCollector.h:339
 AliFMDHistCollector.h:340
 AliFMDHistCollector.h:341
 AliFMDHistCollector.h:342
 AliFMDHistCollector.h:343
 AliFMDHistCollector.h:344
 AliFMDHistCollector.h:345
 AliFMDHistCollector.h:346
 AliFMDHistCollector.h:347
 AliFMDHistCollector.h:348
 AliFMDHistCollector.h:349
 AliFMDHistCollector.h:350
 AliFMDHistCollector.h:351
 AliFMDHistCollector.h:352
 AliFMDHistCollector.h:353
 AliFMDHistCollector.h:354
 AliFMDHistCollector.h:355
 AliFMDHistCollector.h:356
 AliFMDHistCollector.h:357
 AliFMDHistCollector.h:358
 AliFMDHistCollector.h:359
 AliFMDHistCollector.h:360
 AliFMDHistCollector.h:361
 AliFMDHistCollector.h:362
 AliFMDHistCollector.h:363
 AliFMDHistCollector.h:364
 AliFMDHistCollector.h:365
 AliFMDHistCollector.h:366
 AliFMDHistCollector.h:367
 AliFMDHistCollector.h:368
 AliFMDHistCollector.h:369
 AliFMDHistCollector.h:370
 AliFMDHistCollector.h:371
 AliFMDHistCollector.h:372
 AliFMDHistCollector.h:373
 AliFMDHistCollector.h:374
 AliFMDHistCollector.h:375
 AliFMDHistCollector.h:376
 AliFMDHistCollector.h:377
 AliFMDHistCollector.h:378
 AliFMDHistCollector.h:379
 AliFMDHistCollector.h:380
 AliFMDHistCollector.h:381
 AliFMDHistCollector.h:382
 AliFMDHistCollector.h:383
 AliFMDHistCollector.h:384
 AliFMDHistCollector.h:385
 AliFMDHistCollector.h:386
 AliFMDHistCollector.h:387
 AliFMDHistCollector.h:388
 AliFMDHistCollector.h:389
 AliFMDHistCollector.h:390
 AliFMDHistCollector.h:391
 AliFMDHistCollector.h:392
 AliFMDHistCollector.h:393
 AliFMDHistCollector.h:394
 AliFMDHistCollector.h:395
 AliFMDHistCollector.h:396
 AliFMDHistCollector.h:397
 AliFMDHistCollector.h:398
 AliFMDHistCollector.h:399
 AliFMDHistCollector.h:400
 AliFMDHistCollector.h:401
 AliFMDHistCollector.h:402
 AliFMDHistCollector.h:403
 AliFMDHistCollector.h:404
 AliFMDHistCollector.h:405
 AliFMDHistCollector.h:406
 AliFMDHistCollector.h:407
 AliFMDHistCollector.h:408
 AliFMDHistCollector.h:409
 AliFMDHistCollector.h:410
 AliFMDHistCollector.h:411
 AliFMDHistCollector.h:412
 AliFMDHistCollector.h:413
 AliFMDHistCollector.h:414
 AliFMDHistCollector.h:415
 AliFMDHistCollector.h:416
 AliFMDHistCollector.h:417
 AliFMDHistCollector.h:418
 AliFMDHistCollector.h:419
 AliFMDHistCollector.h:420
 AliFMDHistCollector.h:421
 AliFMDHistCollector.h:422
 AliFMDHistCollector.h:423
 AliFMDHistCollector.h:424
 AliFMDHistCollector.h:425
 AliFMDHistCollector.h:426
 AliFMDHistCollector.h:427
 AliFMDHistCollector.h:428
 AliFMDHistCollector.h:429
 AliFMDHistCollector.h:430
 AliFMDHistCollector.h:431
 AliFMDHistCollector.h:432
 AliFMDHistCollector.h:433
 AliFMDHistCollector.h:434
 AliFMDHistCollector.h:435
 AliFMDHistCollector.h:436
 AliFMDHistCollector.h:437
 AliFMDHistCollector.h:438
 AliFMDHistCollector.h:439
 AliFMDHistCollector.h:440
 AliFMDHistCollector.h:441
 AliFMDHistCollector.h:442
 AliFMDHistCollector.h:443
 AliFMDHistCollector.h:444
 AliFMDHistCollector.h:445
 AliFMDHistCollector.h:446
 AliFMDHistCollector.h:447
 AliFMDHistCollector.h:448
 AliFMDHistCollector.h:449
 AliFMDHistCollector.h:450
 AliFMDHistCollector.h:451
 AliFMDHistCollector.h:452
 AliFMDHistCollector.h:453
 AliFMDHistCollector.h:454
 AliFMDHistCollector.h:455
 AliFMDHistCollector.h:456
 AliFMDHistCollector.h:457
 AliFMDHistCollector.h:458
 AliFMDHistCollector.h:459
 AliFMDHistCollector.h:460
 AliFMDHistCollector.h:461
 AliFMDHistCollector.h:462
 AliFMDHistCollector.h:463
 AliFMDHistCollector.h:464
 AliFMDHistCollector.h:465
 AliFMDHistCollector.h:466
 AliFMDHistCollector.h:467
 AliFMDHistCollector.h:468
 AliFMDHistCollector.h:469
 AliFMDHistCollector.h:470
 AliFMDHistCollector.h:471
 AliFMDHistCollector.h:472
 AliFMDHistCollector.h:473
 AliFMDHistCollector.h:474
 AliFMDHistCollector.h:475
 AliFMDHistCollector.h:476
 AliFMDHistCollector.h:477
 AliFMDHistCollector.h:478
 AliFMDHistCollector.h:479
 AliFMDHistCollector.h:480
 AliFMDHistCollector.h:481
 AliFMDHistCollector.h:482
 AliFMDHistCollector.h:483
 AliFMDHistCollector.h:484
 AliFMDHistCollector.h:485
 AliFMDHistCollector.h:486
 AliFMDHistCollector.h:487
 AliFMDHistCollector.h:488
 AliFMDHistCollector.h:489
 AliFMDHistCollector.h:490
 AliFMDHistCollector.h:491
 AliFMDHistCollector.h:492
 AliFMDHistCollector.h:493
 AliFMDHistCollector.h:494
 AliFMDHistCollector.h:495
 AliFMDHistCollector.h:496
 AliFMDHistCollector.h:497
 AliFMDHistCollector.h:498
 AliFMDHistCollector.h:499
 AliFMDHistCollector.h:500
 AliFMDHistCollector.h:501
 AliFMDHistCollector.h:502
 AliFMDHistCollector.h:503
 AliFMDHistCollector.h:504
 AliFMDHistCollector.h:505
 AliFMDHistCollector.h:506
 AliFMDHistCollector.h:507
 AliFMDHistCollector.h:508
 AliFMDHistCollector.h:509
 AliFMDHistCollector.h:510
 AliFMDHistCollector.h:511
 AliFMDHistCollector.h:512
 AliFMDHistCollector.h:513
 AliFMDHistCollector.h:514
 AliFMDHistCollector.h:515
 AliFMDHistCollector.h:516
 AliFMDHistCollector.h:517
 AliFMDHistCollector.h:518
 AliFMDHistCollector.h:519
 AliFMDHistCollector.h:520
 AliFMDHistCollector.h:521