ROOT logo
// This class calculates the inclusive charged particle density
// in each for the 5 FMD rings. 
//
#ifndef ALIFMDDENSITYCALCULATOR_H
#define ALIFMDDENSITYCALCULATOR_H
/**
 * @file   AliFMDDensityCalculator.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:02:09 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_aod
 */
#include <TNamed.h>
#include <TList.h>
#include <TArrayI.h>
#include <TVector3.h>
#include "AliForwardUtil.h"
#include "AliFMDMultCuts.h"
#include "AliPoissonCalculator.h"
class AliESDFMD;
class TH2D;
class TH1D;
class TProfile;
class AliFMDCorrELossFit;

/** 
 * This class calculates the inclusive charged particle density
 * in each for the 5 FMD rings. 
 *
 * @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 Corrections used: 
 *   - AliFMDAnaCalibEnergyDistribution 
 *   - AliFMDDoubleHitCorrection 
 *   - AliFMDDeadCorrection 
 *
 * @ingroup pwglf_forward_algo
 * @ingroup pwglf_forward_aod
 */
class AliFMDDensityCalculator : public TNamed
{
public:
  /**
   * How to correct for the missing phi coverage at the corners of the
   * sensors 
   * 
   */
  enum { 
    /** No correction */
    kPhiNoCorrect,
    /** Correct the calculated number charged particles */
    kPhiCorrectNch,
    /** Correct the energy loss */
    kPhiCorrectELoss
  };
  /** 
   * Folder name 
   */
  static const char* fgkFolderName;
  /** 
   * Constructor 
   */
  AliFMDDensityCalculator();
  /** 
   * Constructor 
   * 
   * @param name Name of object
   */
  AliFMDDensityCalculator(const char* name);
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliFMDDensityCalculator(const AliFMDDensityCalculator& o);
  /** 
   * Destructor 
   */
  virtual ~AliFMDDensityCalculator();
  /** 
   * Assignement operator
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object
   */
  AliFMDDensityCalculator& operator=(const AliFMDDensityCalculator& o);
  /** 
   * Initialize this sub-algorithm
   * 
   * @param etaAxis Not used 
   */
  virtual void SetupForData(const TAxis& etaAxis);
  /** 
   * Do the calculations 
   * 
   * @param fmd      AliESDFMD object (possibly) corrected for sharing
   * @param hists    Histogram cache
   * @param lowFlux  Low flux flag. 
   * @param cent     Centrality 
   * @param ip       Coordinates of interaction point
   * 
   * @return true on successs 
   */
  virtual Bool_t Calculate(const AliESDFMD&        fmd, 
			   AliForwardUtil::Histos& hists, 
			   Bool_t   		   lowFlux, 
			   Double_t  		   cent=-1, 
			   const TVector3&         ip=TVector3(1024,1024,0));
  /** 
   * Scale the histograms to the total number of events 
   * 
   * @param dir     where to put the output
   * @param output  Output list
   * @param nEvents Number of events 
   */
  virtual void Terminate(const TList* dir, TList* output, Int_t nEvents);
  /** 
   * Output diagnostic histograms to directory 
   * 
   * @param dir List to write in
   */  
  virtual void CreateOutputObjects(TList* dir);
  /** 
   * Set the debug level.  The higher the value the more output 
   * 
   * @param dbg Debug level 
   */
  void SetDebug(Int_t dbg=1) { fDebug = dbg; }	
  void SetDoTiming(Bool_t enable=true) { fDoTiming = enable; }
  /** 
   * Maximum particle weight to use 
   * 
   * @param m 
   */
  void SetMaxParticles(UShort_t m) { fMaxParticles = m; }  
  /** 
   * Set whether to use poisson statistics to estimate the 
   * number of particles that has hit within a region.  If this is true, 
   * then the average charge particle density is given by 
   * @f[
   *  \lambda = -\log\left(\frac{N_e}{N_t}\right)
   * @f]
   * where $N_e$ is the number of strips within the region that has no
   * hits over threshold, and $N_t$ is the total number of strips in the 
   * region/ 
   * 
   * @param u Whether to use poisson statistics to estimate the 
   * number of particles that has hit within a region.
   */
  void SetUsePoisson(Bool_t u) { fUsePoisson = u; }
  /** 
   * In case of a displaced vertices recalculate eta and angle correction
   * 
   * @param use recalculate or not
   * 
   */
  void SetRecalculatePhi(Bool_t use) { fRecalculatePhi = use; }
  /** 
   * Set whether to use the phi acceptance correction. 
   * 
   * How the phi acceptance is used depends on the value passed.  
   * - 0:  No phi acceptance 
   * - 1:  Phi acceptance correction done to estimate of particles 
   * - 2:  Phi acceptance correction done to energy deposited 
   *
   * @param u If >0, use the phi acceptance (default is false)
   */
   
  void SetUsePhiAcceptance(UShort_t u=kPhiCorrectNch) { fUsePhiAcceptance = u; }
  /** 
   * Set the luming factors used in the Poisson method
   * 
   * @param eta Must be 1 or larger 
   * @param phi Must be 1 or larger 
   */
  void SetLumping(Int_t eta, Int_t phi) { 
    fEtaLumping = (eta < 1 ? 1 : eta); 
    fPhiLumping = (phi < 1 ? 1 : phi); 
  }
  /** 
   * Set the minimum quality of the energy loss fits 
   * 
   * @param cut Cut value 
   */
  void SetMinQuality(UShort_t cut=10) { fMinQuality = cut; }
  /** 
   * Set the maximum ratio of outlier bins to the total number of bins
   * with data.  
   * 
   * @param ratio Maximum ratio (number between 0 and 1) 
   */
  void SetMaxOutliers(Double_t ratio=0.10) { fMaxOutliers = ratio; }
  /** 
   * Set the maximum relative diviation between @f$N_{ch}^{Poisson}@f$
   * and @f$N_{ch}^{\Delta}@f$
   * 
   * @param cut Relative cut (number between 0 and 1) 
   */
  void SetOutlierCut(Double_t cut=0.50) { fOutlierCut = cut; }
  /** 
   * Get the multiplicity cut.  If the user has set fMultCut (via
   * SetMultCut) then that value is used.  If not, then the lower
   * value of the fit range for the enery loss fits is returned.
   * 
   * @param d      Detector 
   * @param r      Ring 
   * @param eta    Psuedo-rapidity
   * @param errors Factor in errors
   *
   * @return Lower cut on multiplicity
   */
  Double_t GetMultCut(UShort_t d, Char_t r, Double_t eta, 
		      Bool_t errors=true) const;
  /** 
   * Get the multiplicity cut.  If the user has set fMultCut (via
   * SetMultCut) then that value is used.  If not, then the lower
   * value of the fit range for the enery loss fits is returned.
   * 
   * @param d      Detector 
   * @param r      Ring 
   * @param ieta   Psuedo-rapidity bin
   * @param errors Factor in errors
   *
   * @return Lower cut on multiplicity
   */
  Double_t GetMultCut(UShort_t d, Char_t r, Int_t ieta, 
		      Bool_t errors=true) const;
  /** 
   * Set the minimum quality of the energy loss fits 
   * 
   * @return Cut value 
   */
  UShort_t GetMinQuality() const { return fMinQuality; }
  /** 
   * Print information 
   * 
   * @param option Print options 
   *   - max  Print max weights 
   */
  void Print(Option_t* option="") const;
  /** 
   * Get the cuts used 
   * 
   * @return Reference to cuts object
   */
  AliFMDMultCuts& GetCuts() { return fCuts; }
  /** 
   * Set the cuts to use 
   * 
   * @param c Cuts to use 
   */
  void SetCuts(const AliFMDMultCuts& c) { fCuts = c; }
protected:
  /** 
   * Find the max weight to use for FMD<i>dr</i> in eta bin @a iEta
   * 
   * @param cor   Correction
   * @param d     Detector 
   * @param r     Ring 
   * @param iEta  Eta bin 
   *
   * @return The maximum weight 
   */
  Int_t FindMaxWeight(const AliFMDCorrELossFit* cor,
		      UShort_t d, Char_t r, Int_t iEta) const;

  /** 
   * Find the max weight to use for FMD<i>dr</i> in eta @a eta
   * 
   * @param cor   Correction
   * @param d     Detector 
   * @param r     Ring 
   * @param eta   Eta
   *
   * @return The maximum weight 
   */
  Int_t FindMaxWeight(const AliFMDCorrELossFit* cor,
		      UShort_t d, Char_t r, Double_t iEta) const;

  /** 
   * Find the max weights and cache them 
   * 
   * @param axis Default @f$\eta@f$ axis from parent task 
   */  
  void CacheMaxWeights(const TAxis& axis);
  /** 
   * Find the (cached) maximum weight for FMD<i>dr</i> in 
   * @f$\eta@f$ bin @a iEta
   * 
   * @param d     Detector
   * @param r     Ring
   * @param iEta  Eta bin
   * 
   * @return max weight or <= 0 in case of problems 
   */
  Int_t GetMaxWeight(UShort_t d, Char_t r, Int_t iEta) const;
  /** 
   * Find the (cached) maximum weight for FMD<i>dr</i> iat
   * @f$\eta@f$ 
   * 
   * @param d     Detector
   * @param r     Ring
   * @param eta   Eta bin
   * 
   * @return max weight or <= 0 in case of problems 
   */
  Int_t GetMaxWeight(UShort_t d, Char_t r, Float_t eta) const;

  /** 
   * Get the number of particles corresponding to the signal mult
   * 
   * @param mult     Signal
   * @param d        Detector
   * @param r        Ring 
   * @param eta      Pseudo-rapidity 
   * @param lowFlux  Low-flux flag 
   * 
   * @return The number of particles 
   */
  virtual Float_t NParticles(Float_t  mult, 
			     UShort_t d, 
			     Char_t   r, 
			     Float_t  eta, 
			     Bool_t   lowFlux) const;
  /** 
   * Get the inverse correction factor.  This consist of
   * 
   * - acceptance correction (corners of sensors) 
   * - double hit correction (for low-flux events) 
   * - dead strip correction 
   * 
   * @param d        Detector
   * @param r        Ring 
   * @param t        Strip 
   * @param eta      Pseudo-rapidity 
   * @param lowFlux  Low-flux flag 
   * 
   * @return the correction factor 
   */
  virtual Float_t Correction(UShort_t d, Char_t r, UShort_t t, 
			     Float_t eta, Bool_t lowFlux) const;
  /** 
   * Get the acceptance correction for strip @a t in an ring of type @a r
   * 
   * @param r  Ring type ('I' or 'O')
   * @param t  Strip number 
   * 
   * @return Inverse acceptance correction 
   */
  virtual Float_t AcceptanceCorrection(Char_t r, UShort_t t) const;
  /** 
   * Generate the acceptance corrections 
   * 
   * @param r Ring to generate for 
   * 
   * @return Newly allocated histogram of acceptance corrections
   */
  virtual TH1D*   GenerateAcceptanceCorrection(Char_t r) const;
  /** 
   * Check if, for a given region, whether this is an outlier 
   * 
   * The condition for an outlier event are 
   * @f[
   * |N_{ch}^{Poisson} - N_{ch}^{\Delta}| / N_{ch}^{\Delta} > c
   * @f]
   *
   * @param eloss    @f$ N_{ch}^{\Delta}@f$ - number of charged particles
   * @param poisson  @f$ N_{ch}^{Poisson}@f$ - number of charged particles
   * @param cut      @f$ c@f$ - the cut 
   * 
   * @return true if the region reflects an outlier event 
   */
  virtual Bool_t CheckOutlier(Double_t eloss, 
			      Double_t poisson,
			      Double_t cut=0.5) const;
  /** 
   * Internal data structure to keep track of the histograms
   */
  struct RingHistos : public AliForwardUtil::RingHistos
  { 
    /** 
     * Default CTOR
     */
    RingHistos();
    /** 
     * Constructor
     * 
     * @param d detector
     * @param r ring 
     */
    RingHistos(UShort_t d, Char_t r);
    /** 
     * Copy constructor 
     * 
     * @param o Object to copy from 
     */
    RingHistos(const RingHistos& o);
    /** 
     * Assignment operator 
     * 
     * @param o Object to assign from 
     * 
     * @return Reference to this 
     */
    RingHistos& operator=(const RingHistos& o);
    /** 
     * Destructor 
     */
    ~RingHistos();
    /** 
     * Initialize the object 
     * 
     * @param eAxis 
     */
    void SetupForData(const TAxis& eAxis);
    /** 
     * Make output 
     * 
     * @param dir Where to put it 
     */
    void CreateOutputObjects(TList* dir);
    /** 
     * Scale the histograms to the total number of events 
     * 
     * @param dir     Where the output is 
     * @param nEvents Number of events 
     */
    void Terminate(TList* dir, Int_t nEvents);
    TList*    fList;
    // TH2D*     fEvsN;           // Correlation of Eloss vs uncorrected Nch
    // TH2D*     fEvsM;           // Correlation of Eloss vs corrected Nch
    // TProfile* fEtaVsN;         // Average uncorrected Nch vs eta
    // TProfile* fEtaVsM;         // Average corrected Nch vs eta
    TProfile* fCorr;           // Average correction vs eta
    TH2D*     fDensity;        // Distribution inclusive Nch
    TH2D*     fELossVsPoisson; // Correlation of energy loss vs Poisson N_ch
    TH1D*     fDiffELossPoisson;// Relative difference to Poisson
    TH2D*     fELossVsPoissonOut; // Correlation of energy loss vs Poisson N_ch
    TH1D*     fDiffELossPoissonOut;// Relative difference to Poisson
    TH1D*     fOutliers;       // Fraction of outliers per event 
    AliPoissonCalculator fPoisson; // Calculate density using Poisson method
    TH1D*     fELoss;          // Energy loss as seen by this 
    TH1D*     fELossUsed;      // Energy loss in strips with signal 
    Double_t  fMultCut;        // If set, use this
    TH1D*     fTotal;          // Total number of strips per eta
    TH1D*     fGood;           // Number of good strips per eta
    TH2D*     fPhiAcc;         // Phi acceptance vs IpZ
    TH1D*     fPhiBefore;      // Phi before re-calce 
    TH1D*     fPhiAfter;       // Phi after re-calc
    ClassDef(RingHistos,10);
  };
  /** 
   * Get the ring histogram container 
   * 
   * @param d Detector
   * @param r Ring 
   * 
   * @return Ring histogram container 
   */
  RingHistos* GetRingHistos(UShort_t d, Char_t r) const;
  TList    fRingHistos;    //  List of histogram containers
  TH1D*    fSumOfWeights;  //  Histogram
  TH1D*    fWeightedSum;   //  Histogram
  TH1D*    fCorrections;   //  Histogram
  UShort_t fMaxParticles;  //  Maximum particle weight to use 
  Bool_t   fUsePoisson;    //  If true, then use poisson statistics 
  UShort_t fUsePhiAcceptance; // Whether to correct for corners 
  TH1D*    fAccI;          //  Acceptance correction for inner rings
  TH1D*    fAccO;          //  Acceptance correction for outer rings
  TArrayI  fFMD1iMax;      //  Array of max weights 
  TArrayI  fFMD2iMax;      //  Array of max weights 
  TArrayI  fFMD2oMax;      //  Array of max weights 
  TArrayI  fFMD3iMax;      //  Array of max weights 
  TArrayI  fFMD3oMax;      //  Array of max weights 
  TH2D*    fMaxWeights;    //  Histogram of max weights
  TH2D*    fLowCuts;       //  Histogram of low cuts
  Int_t    fEtaLumping;    //  How to lump eta bins for Poisson 
  Int_t    fPhiLumping;    //  How to lump phi bins for Poisson 
  Int_t    fDebug;         //  Debug level 
  AliFMDMultCuts fCuts;    // Cuts
  Bool_t   fRecalculatePhi;  // Whether to correct for (X,Y) offset
  UShort_t fMinQuality;      // Least quality for fits
  AliForwardUtil::Histos fCache;
  Bool_t                 fDoTiming;
  TProfile*              fHTiming;
  Double_t               fMaxOutliers; // Maximum ratio of outlier bins 
  Double_t               fOutlierCut;  // Maximum relative diviation 

  ClassDef(AliFMDDensityCalculator,14); // Calculate Nch density 
};

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

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