ROOT logo
// Object holding the Energy loss fit 'correction'
// 
// These are generated from Monte-Carlo or real ESDs. 
#ifndef ALIFMDCORRELOSSFIT_H
#define ALIFMDCORRELOSSFIT_H
/**
 * @file   AliFMDCorrELossFit.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:01:15 2011
 * 
 * @brief  
 * 
 * @ingroup pwglf_forward_eloss
 * 
 */
#include <TObject.h>
#include <TAxis.h>
#include <TObjArray.h>
#include <TArrayI.h>
class TF1;
class TH1;
class TBrowser;

/** 
 * @defgroup pwglf_forward_corr Corrections 
 * 
 * Correction objects used 
 *
 * @ingroup pwglf_forward
 */
/** 
 * Object holding the Energy loss fit 'correction'
 * 
 * These are generated from Monte-Carlo or real ESDs. 
 *
 * @ingroup pwglf_forward_corr
 * @ingroup pwglf_forward_eloss
 */
class AliFMDCorrELossFit : public TObject 
{
public:
  enum { 
    kHasShift = (1<<14)
  };
  /** 
   * POD structure to hold data from fits 
   * 
   * @ingroup pwglf_forward_corr
   */
  struct ELossFit : public TObject 
  {
    Int_t     fN;      // Number of peaks fitted
    UShort_t  fNu;     // Number degrees of freedom
    Double_t  fChi2;   // Chi square from fit
    Double_t  fC;      // Scaling constant 
    Double_t  fDelta;  // Most probable value 
    Double_t  fXi;     // Width parameter of Landau 
    Double_t  fSigma;  // Sigma on folded gaussian 
    Double_t  fSigmaN; // Sigma of detector noise 
    Double_t* fA;      // [fN] Weights 
    Double_t  fEC;     // Error on C 
    Double_t  fEDelta; // Error on Delta 
    Double_t  fEXi;    // Error on Xi
    Double_t  fESigma; // Error on sigma 
    Double_t  fESigmaN;// Error on sigma (noise)
    Double_t* fEA;     // [fN] Error on weights
    Int_t     fQuality;// Assigned quality 
    UShort_t  fDet;    // Detector 
    Char_t    fRing;   // Ring
    UShort_t  fBin;    // Eta bin

    mutable UShort_t fMaxWeight; //!Cached maximum weight

    static Double_t fgMaxRelError;  // Global default max relative error
    static Double_t fgLeastWeight;  // Global default least weight 
    static Double_t fgMaxChi2nu;    // Global default maximum reduced chi^2
    /**
     * Default constructor 
     * 
     */
    ELossFit();
    /** 
     * Construct from a function
     * 
     * @param quality Quality flag
     * @param f       Function
     */
    ELossFit(Int_t quality,const TF1& f);
    /** 
     * Constructor with full parameter set
     * 
     * @param quality   Quality flag
     * @param n         @f$ N@f$ - Number of fitted peaks
     * @param chi2      @f$ \chi^2 @f$
     * @param nu        @f$ \nu @f$ - number degrees of freedom
     * @param c         @f$ C@f$ - scale constant
     * @param ec        @f$ \delta C@f$ - error on @f$ C@f$ 
     * @param delta     @f$ \Delta@f$ - Most probable value		  
     * @param edelta    @f$ \delta\Delta@f$ - error on @f$\Delta@f$ 
     * @param xi        @f$ \xi@f$ - width  
     * @param exi       @f$ \delta\xi@f$ - error on @f$\xi@f$ 
     * @param sigma     @f$ \sigma@f$ - Width of Gaussian		   
     * @param esigma    @f$ \delta\sigma@f$ - error on @f$\sigma@f$ 
     * @param sigman    @f$ \sigma_n@f$ - Noise width		  
     * @param esigman   @f$ \delta\sigma_n@f$ - error on @f$\sigma_n@f$ 
     * @param a         Array of @f$ N-1@f$ weights @f$ a_i@f$ for 
     *                  @f$ i=2,\ldots@f$ 
     * @param ea        Array of @f$ N-1@f$ error on the weights @f$ a_i@f$ for 
     *                  @f$ i=2,\ldots@f$ 
     */
    ELossFit(Int_t     quality,UShort_t  n, 
	     Double_t  chi2,   UShort_t  nu, 
	     Double_t  c,      Double_t  ec, 
	     Double_t  delta,  Double_t  edelta, 
	     Double_t  xi,     Double_t  exi,
	     Double_t  sigma,  Double_t  esigma, 
	     Double_t  sigman, Double_t  esigman, 
	     const Double_t* a,const Double_t* ea);
    /** 
     * Copy constructor 
     * 
     * @param o Object to copy from 
     */
    ELossFit(const ELossFit& o);
    /** 
     * Assignment operator 
     * 
     * @param o Object to assign from 
     * 
     * @return Reference to this object 
     */
    ELossFit& operator=(const ELossFit& o);
    /** 
     * Destructor 
     */
    ~ELossFit();
    /**
     * @{
     * @name Access to parameters 
     */
    /**
     * @return Number of peaks fitted
     */
    Int_t GetN() const { return fN; }
    /**
     * @return Number degrees of freedom
     */
    UShort_t GetNu() const { return fNu; }
    /**
     * @return Chi square from fit
     */
    Double_t GetChi2() const { return fChi2; }
    /**
     * @return Scaling constant 
     */
    Double_t GetC() const { return fC; }
    /**
     * @return Most probable value 
     */
    Double_t GetDelta() const { return fDelta; }
    /**
     * @return Width parameter of Landau 
     */
    Double_t GetXi() const { return fXi; }
    /**
     * @return Sigma on folded gaussian 
     */
    Double_t GetSigma() const { return fSigma; }
    /**
     * @return Sigma of detector noise 
     */
    Double_t GetSigmaN() const { return fSigmaN; }
    /**
     * @return Weights 
     */
    Double_t* GetAs() const { return fA; }
    /**
     * @param i Which weight to get 
     *
     * @return Weights 
     */
    Double_t GetA(UShort_t i) const;    
    /**
     * @return Error on C 
     */
    Double_t GetEC() const { return fEC; }
    /**
     * @return Error on Delta 
     */
    Double_t GetEDelta() const { return fEDelta; }
    /**
     * @return Error on Xi
     */
    Double_t GetEXi() const { return fEXi; }
    /**
     * @return Error on sigma 
     */
    Double_t GetESigma() const { return fESigma; }
    /**
     * @return Error on sigma (noise)
     */
    Double_t GetESigmaN() const { return fESigmaN; }
    /**
     * @return Error on weights
     */
    Double_t* GetEAs() const { return fEA; }
    /**
     * @param i Which weight to get 
     *
     * @return Error on weights
     */
    Double_t GetEA(UShort_t i) const;
    /**
     * @return Assigned quality 
     */
    Int_t GetQuality() const { return fQuality; }
    /**
     * @return Detector 
     */
    UShort_t GetDet() const { return fDet; }
    /**
     * @return Ring
     */
    Char_t GetRing() const { return fRing; }
    /**
     * @return Eta bin
     */
    UShort_t GetBin() const { return fBin; }
    /* @} */

    /** 
     * @{ 
     * @name Evaluation 
     */
    /** 
     * Evaluate 
     * @f[ 
     *  f_N(x;\Delta,\xi,\sigma') = 
     *     \sum_{i=1}^{n} a_i f(x;\Delta_i,\xi_i,\sigma_i')
     * @f] 
     *
     * (see AliForwardUtil::NLandauGaus) for the maximum @f$ N @f$
     * that fulfills the requirements 
     *
     * @param x           Where to evaluate 
     * @param maxN 	  @f$ \max{N}@f$    
     * 
     * @return @f$ f_N(x;\Delta,\xi,\sigma')@f$ 
     */
    Double_t Evaluate(Double_t x, 
		      UShort_t maxN=999) const;
    /** 
     * Evaluate 
     * @f[ 
     *   f_W(x;\Delta,\xi,\sigma') = 
     *   \frac{\sum_{i=1}^{n} i a_i f_i(x;\Delta,\xi,\sigma')}{
     *     f_N(x;\Delta,\xi,\sigma')} = 
     *   \frac{\sum_{i=1}^{n} i a_i f(x;\Delta_i,\xi_i,\sigma_i')}{
     *     \sum_{i=1}^{n} a_i f(x;\Delta_i,\xi_i,\sigma_i')}
     * @f] 
     * where @f$ n@f$ fulfills the requirements (see FindMaxWeight). 
     *
     * If the denominator is zero, then 1 is returned. 
     *
     * See also AliForwardUtil::ILandauGaus and AliForwardUtil::NLandauGaus
     * for more information on the evaluated functions. 
     * 
     * @param x           Where to evaluate 
     * @param maxN 	  @f$ \max{N}@f$      
     * 
     * @return @f$ f_W(x;\Delta,\xi,\sigma')@f$.  
     */
    Double_t EvaluateWeighted(Double_t x, 
			      UShort_t maxN=9999) const;
    /** 
     * Find the maximum weight to use.  The maximum weight is the
     * largest i for which 
     * 
     * - @f$ i \leq \max{N}@f$ 
     * - @f$ a_i > \min{a}@f$ 
     * - @f$ \delta a_i/a_i > \delta_{max}@f$ 
     * 
     * @param maxRelError @f$ \min{a}@f$ 
     * @param leastWeight @f$ \delta_{max}@f$ 
     * @param maxN        @f$ \max{N}@f$      
     * 
     * @return The largest index @f$ i@f$ for which the above
     * conditions hold.  Will never return less than 1. 
     */
    Int_t FindMaxWeight(Double_t maxRelError=2*fgMaxRelError, 
			Double_t leastWeight=fgLeastWeight, 
			UShort_t maxN=999) const;
    /** 
     * Get a function that expresses this fit.
     * 
     * @f[ 
     *  f_N(x;\Delta,\xi,\sigma') = 
     *     \sum_{i=1}^{n} a_i f(x;\Delta_i,\xi_i,\sigma_i')
     * @f] 
     * (see AliForwardUtil::NLandauGaus) or, if @a i is 1 or larger 
     * @f[ 
     *  f_i(x;\Delta,\xi,\sigma') = a_i f(x;\Delta_i,\xi_i,\sigma_i')
     * @f] 
     * (see AliForwardUtil::ILandauGaus).
     *
     * @param i Component to get.  If @a i is 0 or less, then the full
     * function is returned, otherwise the specified component (if
     * valid).
     * @param max Upper bound on function 
     *
     * @return Pointer to newly allocated function.  The caller owns
     * this object, and must clean it up.
     */
    TF1* GetF1(Int_t i=0, Double_t max=20) const;
    /** 
     * Find the x value that corresponds to a (normalized) probability
     * of @a low or less.  That is, we can use this to say: "Give me
     * the x value under which it is unlikely that a particle gave a
     * signal".
     * 
     * @param low Threshold (between 0 and 1)
     * 
     * @return Cut value, or 1000 in case of problems 
     */
    Double_t FindProbabilityCut(Double_t low) const;
    /* @} */
    /** 
     * @{
     * @name TObject Sortable interface 
     */
    /** 
     * Declare this object as sortable 
     * 
     * @return Always true 
     */
    Bool_t IsSortable() const { return kTRUE; }
    /** 
     * Compare to another ELossFit object. 
     * 
     * - +1, if this quality is better (larger) than other objects quality
     * - -1, if this quality is worse (smaller) than other objects quality
     * - +1, if this @f$|\chi^2/\nu-1|@f$ is smaller than the same for other
     * - -1, if this @f$|\chi^2/\nu-1|@f$ is larger than the same for other
     * - 0 otherwise 
     * 
     * @param o Other object to compare to 
     *
     * @return See above
     */
    Int_t Compare(const TObject* o) const;
    /* @} */
    /** 
     * @{ 
     * name Auxiliary member functions  
     */
    /** 
     * Information to standard output 
     * 
     * @param option Not used 
     */
    void Print(Option_t* option) const; // *MENU*
    /** 
     * Draw this fit 
     * 
     * @param option Options 
     *  - COMP  Draw components too 
     */
    void Draw(Option_t* option="comp"); // *MENU*
    /** 
     * Browse this object 
     * 
     * @param b Browser
     */
    void Browse(TBrowser* b);
    /** 
     * Get the name of this object 
     * 
     * 
     * @return 
     */
    const Char_t* GetName() const;
    /** 
     * Calculate the lower bound 
     * 
     * @param f             Width factor
     * @param includeSigma  Whether to include sigma
     * 
     * @return @f$ \Delta - f (\xi + \sigma)@f$
     */
    Double_t GetLowerBound(Double_t f, Bool_t includeSigma) const;
    /** 
     * Calculate the lower bound 
     * 
     * @param f             fraction of @f$\Delta@f$
     * 
     * @return @f$ f\Delta@f$
     */
    Double_t GetLowerBound(Double_t f) const;
    /** 
     * Calculate the quality 
     * 
     * @param maxChi2nu   Maximum reduced @f$\chi^2@f$
     * @param maxRelError Maximum relative error 
     * @param leastWeight Least weight to use 
     */
    void CalculateQuality(Double_t maxChi2nu=fgMaxChi2nu, 
			  Double_t maxRelError=fgMaxRelError, 
			  Double_t leastWeight=fgLeastWeight);
    /* @} */
    ClassDef(ELossFit,2); // Result of fit 
  };

  /** 
   * Default constructor 
   */
  AliFMDCorrELossFit();
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliFMDCorrELossFit(const AliFMDCorrELossFit& o);
  /** 
   * Destructor 
   */
  virtual ~AliFMDCorrELossFit(); 
  /** 
   * Assignment operator 
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this object 
   */
  AliFMDCorrELossFit& operator=(const AliFMDCorrELossFit& o);

  /** 
   * @{ 
   * @name Set fits 
   */
  /** 
   * Set the fit parameters from a function 
   * 
   * @param d        Detector
   * @param r        Ring 
   * @param eta      Eta 
   * @param quality  Quality flag
   * @param f        Function from fit 
   *
   * @return true on success
   */  
  Bool_t SetFit(UShort_t d, Char_t r, Double_t eta, Int_t quality, 
		const TF1& f);
  /** 
   * Set the fit parameters from a function 
   * 
   * @param d    Detector
   * @param r    Ring 
   * @param eta  Eta 
   * @param f    ELoss fit result - note, the object will take ownership
   *
   * @return true on success
   */  
  Bool_t SetFit(UShort_t d, Char_t r, Double_t eta, ELossFit* f);
  /** 
   * Set the fit parameters from a function 
   * 
   * @param d       Detector
   * @param r       Ring 
   * @param etaBin  Eta (bin number, 1->nBins)
   * @param f       ELoss fit result - note, the object will take ownership
   *
   * @return true on success
   */  
  Bool_t SetFit(UShort_t d, Char_t r, Int_t etaBin, ELossFit* f);
  /** 
   * Set the fit parameters from a function 
   * 
   * @param d         Detector number
   * @param r         Ring identifier 
   * @param eta       Eta value
   * @param quality   Quality flag
   * @param n         @f$ N@f$ - Number of fitted peaks
   * @param chi2      @f$ \chi^2 @f$
   * @param nu        @f$ \nu @f$ - number degrees of freedom
   * @param c         @f$ C@f$ - scale constant
   * @param ec        @f$ \delta C@f$ - error on @f$ C@f$ 
   * @param delta     @f$ \Delta@f$ - most probable value
   * @param edelta    @f$ \delta\Delta@f$ - error on @f$\Delta@f$ 
   * @param xi        @f$ \xi@f$ - Landau width		  
   * @param exi       @f$ \delta\xi@f$ - error on @f$\xi@f$ 
   * @param sigma     @f$ \sigma@f$ - Gaussian width
   * @param esigma    @f$ \delta\sigma@f$ - error on @f$\sigma@f$ 
   * @param sigman    @f$ \sigma_n@f$ - Noise width		  
   * @param esigman   @f$ \delta\sigma_n@f$ - error on @f$\sigma_n@f$ 
   * @param a         Array of @f$ N-1@f$ weights @f$ a_i@f$ for 
   *                  @f$ i=2,\ldots@f$ 
   * @param ea        Array of @f$ N-1@f$ errors on weights @f$ a_i@f$ for 
   *                  @f$ i=2,\ldots@f$ 
   *
   * @return true on success
   */
  Bool_t SetFit(UShort_t  d,      Char_t    r, Double_t eta, 
		Int_t     quality,UShort_t  n, 
		Double_t  chi2,   UShort_t  nu, 
		Double_t  c,      Double_t  ec, 
		Double_t  delta,  Double_t  edelta, 
		Double_t  xi,     Double_t  exi,
		Double_t  sigma,  Double_t  esigma, 
		Double_t  sigman, Double_t  esigman, 
		Double_t* a,      Double_t* ea);
  /* @} */
  
  /** 
   * @{
   * @name Set and get eta axis
   */
  /** 
   * Set the eta axis to use 
   * 
   * @param axis Eta axis 
   */
  void SetEtaAxis(const TAxis& axis);
  /** 
   * Set the eta axis to use 
   * 
   * @param nBins Number of bins 
   * @param min   Minimum @f$ \eta@f$
   * @param max   maximum @f$ \eta@f$
   */
  void SetEtaAxis(Int_t nBins, Double_t min, Double_t max);
  /** 
   * Get the eta axis used
   * 
   * @return 
   */
  const TAxis& GetEtaAxis() const { return fEtaAxis; }
  /** 
   * Set the low cut used when fitting 
   * 
   * @param cut Cut value 
   */
  void SetLowCut(Double_t cut) { fLowCut = cut; }
  /** 
   * Get the low cut used when fitting 
   * 
   * @return Low cut used for fitting 
   */
  Double_t GetLowCut() const { return fLowCut; }
  /** 
   * Find the eta bin corresponding to the given eta 
   * 
   * @param eta  Eta value 
   * 
   * @return Bin (in @f$[1,N_{bins}]@f$) corresponding to the given
   * eta, or 0 if out of range.
   */
  Int_t FindEtaBin(Double_t eta) const;
  /* @} */

  /**
   * @{						
   * @name Find fits 
   */
  /** 
   * Find the fit corresponding to the specified parameters.  This
   * uses the cache map of good fits for the look-up.  For un-cached
   * look-up see GetFit.
   * 
   * @param d      Detector 
   * @param r      Ring 
   * @param eta    Eta value 
   * @param minQ   Minimum quality
   * 
   * @return Fit parameters or null in case of problems 
   */
  ELossFit* FindFit(UShort_t d, Char_t r, Double_t eta,
		    UShort_t minQ) const;
  /** 
   * Find the fit corresponding to the specified parameters.  This
   * uses the cache map of good fits for the look-up.  For un-cached
   * look-up see GetFit. 
   * 
   * @param d      Detector 
   * @param r      Ring 
   * @param etabin Eta bin (1 based)
   * @param minQ   Minimum quality
   * 
   * @return Fit parameters or null in case of problems 
   */
  ELossFit* FindFit(UShort_t d, Char_t r, Int_t etabin,
		    UShort_t minQ) const;
  /** 
   * Find the fit corresponding to the specified parameters.  Note,
   * the a cache-map of good fits isn't used for this look-up.  To use
   * the cache, use FindFit.
   * 
   * @param d   Detector 
   * @param r   Ring 
   * @param eta Eta value 
   * 
   * @return Fit parameters or null in case of problems 
   */
  ELossFit* GetFit(UShort_t d, Char_t r, Double_t eta) const;
  /** 
   * Find the fit corresponding to the specified parameters. Note,
   * the a cache-map of good fits isn't used for this look-up.  To use
   * the cache, use FindFit.
   * 
   * @param d      Detector 
   * @param r      Ring 
   * @param etabin Eta bin (1 based)
   * 
   * @return Fit parameters or null in case of problems 
   */
  ELossFit* GetFit(UShort_t d, Char_t r, Int_t etabin) const;
  /* @} */

  /** 
   * @{ 
   * @name Lower bounds on fits 
   */
  /** 
   * Get the lower validity bound of the fit. 
   * 
   * @param d            Detector
   * @param r            Ring
   * @param etaBin       Eta bin (1-based)
   * @param f            Fraction of @f$\Delta_{mp}@f$
   * 
   * @return @f$ f\Delta_{mp}@f$ 
   */
  Double_t GetLowerBound(UShort_t d, Char_t r, Int_t etaBin, 
			 Double_t f) const;
  /** 
   * Get the lower validity bound of the fit.
   * 
   * @param d            Detector
   * @param r            Ring
   * @param eta          Eta value
   * @param f            Fraction of @f$\Delta_{mp}@f$
   * 
   * @return @f$ f\Delta_{mp}@f$ 
   */
  Double_t GetLowerBound(UShort_t d, Char_t r, Double_t eta, 
			 Double_t f) const;
  /** 
   * Get the lower validity bound of the fit. 
   * 
   * @param d            Detector
   * @param r            Ring
   * @param etaBin       Eta bin (1-based)
   * @param p            Probability cut
   * @param dummy        Not used
   * 
   * @return @f$ x@f$ for which @f$ P(x>p)@f$
   */
  Double_t GetLowerBound(UShort_t d, Char_t r, Int_t etaBin, 
			 Double_t p, Bool_t dummy) const;
  /** 
   * Get the lower validity bound of the fit.
   * 
   * @param d            Detector
   * @param r            Ring
   * @param eta          Eta value
   * @param p            Probability cut
   * @param dummy        Not used
   * 
   * @return @f$ x@f$ for which @f$ P(x>p)@f$
   */
  Double_t GetLowerBound(UShort_t d, Char_t r, Double_t eta, 
			 Double_t p, Bool_t dummy) const;
  /** 
   * Get the lower validity bound of the fit
   * 
   * @param d            Detector
   * @param r            Ring
   * @param etaBin       Eta bin (1-based)
   * @param f            Factor on xi (and sigma)
   * @param showErrors   Show errors
   * @param includeSigma Whether to include sigma 
   * 
   * @return @f$ \Delta_{mp} - f(\xi+\sigma)@f$ 
   */
  Double_t GetLowerBound(UShort_t d, Char_t r, Int_t etaBin, 
			 Double_t f, Bool_t showErrors,
			 Bool_t includeSigma) const;
  /** 
   * Get the lower validity bound of the fit
   * 
   * @param d            Detector
   * @param r            Ring
   * @param eta          Eta value
   * @param f            Factor on xi (and sigma)
   * @param showErrors   Show errors
   * @param includeSigma Whether to include sigma 
   * 
   * @return @f$ \Delta_{mp} - f(\xi+\sigma)@f$ 
   */
  Double_t GetLowerBound(UShort_t d, Char_t r, Double_t eta, 
			 Double_t f, Bool_t showErrors,
			 Bool_t includeSigma) const;
  /* @} */
  
  /**						
   * @{ 
   * @name Miscellaneous
   */
  void CacheBins(UShort_t minQuality) const;
  /** 
   * Get the ring array corresponding to the specified ring
   * 
   * @param d Detector 
   * @param r Ring 
   * 
   * @return Pointer to ring array, or null in case of problems
   */
  TObjArray* GetRingArray(UShort_t d, Char_t r) const;
  /** 
   * Signal that this is a folder
   * 
   * @return Always true 
   */
  Bool_t IsFolder() const { return true; }
  /** 
   * Browse this object 
   * 
   * @param b 
   */
  void Browse(TBrowser* b);
  /** 
   * Draw this object 
   *
   * @param option Options.  Possible values are 
   *  - error Plot error bars 
   *  - relative Plot relative errors
   */
  void Draw(Option_t* option=""); //*MENU*
  /** 
   * Print this object.  
   * 
   * @param option Options 
   *   - R   Print recursive  
   *
   */
  void Print(Option_t* option="R") const; //*MENU*
  /** 
   * Get a list of THStack - one for each parameter.  
   *
   * If @a err is true, then error bars are set too.  If @a rel is
   * true, then the relative error (rather than the absolute value) is
   * filled into the histograms.  If @a good is true, then we use the
   * cache-map of good fits rather than all fits.
   * 
   * @param err  Show errors
   * @param rel  Show relative errors 
   * @param good Only show good fits
   * @param maxN Maximum weight to use 
   * 
   * @return List of THStack
   */
  TList* GetStacks(Bool_t err, Bool_t rel, Bool_t good, UShort_t maxN=5) const;
  /* @} */
protected:
  /** 
   * Get the ring array corresponding to the specified ring
   * 
   * @param d Detector 
   * @param r Ring 
   * 
   * @return Pointer to ring array, or newly created container 
   */
  TObjArray* GetOrMakeRingArray(UShort_t d, Char_t r);
  /** 
   * Fill fit values into stack histograms 
   * 
   * @param f         Fit
   * @param rel       If true, fill in relative errors
   * @param used      The bin begin used for this fit 
   * @param hChi      @f$\chi^2/\nu@f$ histogram 
   * @param hN        @f$ N_{a}@f$ - number of components - histogram
   * @param hC        @f$ C@f$ - prefactor - histogram
   * @param hDelta    @f$ \Delta_p@f$ - most-probably value - histogram
   * @param hXi       @f$ \xi@f$ - Landau 'width' - histogram 
   * @param hSigma    @f$ \sigma@f$ - Gaussian smear - histogram 
   * @param maxN      @f$ N_{a,max}@f$ Largest possible @f$ N@f$ 
   * @param hA        @f$ a_{i}, i=\{2,..,N_{a,max}\}@f$ - histogram
   */
  void UpdateStackHist(ELossFit* f,     Bool_t rel, 
		       Int_t     used, 
		       TH1*      hChi, TH1*   hN, 
		       TH1*      hC,   TH1*   hDelta, 
		       TH1*      hXi,  TH1*   hSigma, 
		       Int_t     maxN, TH1**  hA) const;
		       
  TObjArray  fRings;    // Array of rings
  TAxis      fEtaAxis;  // Eta axis used
  Double_t   fLowCut;   // Low cut used when fitting 
  mutable TArrayI    fCache;

  ClassDef(AliFMDCorrELossFit,3); 
};

//____________________________________________________________________
inline void 
AliFMDCorrELossFit::SetEtaAxis(Int_t nBins, Double_t min, Double_t max)
{
  fEtaAxis.Set(nBins, min, max);
}
//____________________________________________________________________
inline void 
AliFMDCorrELossFit::SetEtaAxis(const TAxis& e)
{
  fEtaAxis.Set(e.GetNbins(), e.GetXmin(), e.GetXmax());
}
//____________________________________________________________________
inline Double_t
AliFMDCorrELossFit::ELossFit::GetA(UShort_t i) const
{
  if (i <  1)   return 0;
  if (i >  fN)  return 0;
  if (i == 1)   return 1;
  return fA[i-2];
}
//____________________________________________________________________
inline Double_t
AliFMDCorrELossFit::ELossFit::GetEA(UShort_t i) const
{
  if (i <  1)   return 0;
  if (i >  fN)  return 0;
  if (i == 1)   return 1;
  return fEA[i-2];
}


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

 AliFMDCorrELossFit.h:1
 AliFMDCorrELossFit.h:2
 AliFMDCorrELossFit.h:3
 AliFMDCorrELossFit.h:4
 AliFMDCorrELossFit.h:5
 AliFMDCorrELossFit.h:6
 AliFMDCorrELossFit.h:7
 AliFMDCorrELossFit.h:8
 AliFMDCorrELossFit.h:9
 AliFMDCorrELossFit.h:10
 AliFMDCorrELossFit.h:11
 AliFMDCorrELossFit.h:12
 AliFMDCorrELossFit.h:13
 AliFMDCorrELossFit.h:14
 AliFMDCorrELossFit.h:15
 AliFMDCorrELossFit.h:16
 AliFMDCorrELossFit.h:17
 AliFMDCorrELossFit.h:18
 AliFMDCorrELossFit.h:19
 AliFMDCorrELossFit.h:20
 AliFMDCorrELossFit.h:21
 AliFMDCorrELossFit.h:22
 AliFMDCorrELossFit.h:23
 AliFMDCorrELossFit.h:24
 AliFMDCorrELossFit.h:25
 AliFMDCorrELossFit.h:26
 AliFMDCorrELossFit.h:27
 AliFMDCorrELossFit.h:28
 AliFMDCorrELossFit.h:29
 AliFMDCorrELossFit.h:30
 AliFMDCorrELossFit.h:31
 AliFMDCorrELossFit.h:32
 AliFMDCorrELossFit.h:33
 AliFMDCorrELossFit.h:34
 AliFMDCorrELossFit.h:35
 AliFMDCorrELossFit.h:36
 AliFMDCorrELossFit.h:37
 AliFMDCorrELossFit.h:38
 AliFMDCorrELossFit.h:39
 AliFMDCorrELossFit.h:40
 AliFMDCorrELossFit.h:41
 AliFMDCorrELossFit.h:42
 AliFMDCorrELossFit.h:43
 AliFMDCorrELossFit.h:44
 AliFMDCorrELossFit.h:45
 AliFMDCorrELossFit.h:46
 AliFMDCorrELossFit.h:47
 AliFMDCorrELossFit.h:48
 AliFMDCorrELossFit.h:49
 AliFMDCorrELossFit.h:50
 AliFMDCorrELossFit.h:51
 AliFMDCorrELossFit.h:52
 AliFMDCorrELossFit.h:53
 AliFMDCorrELossFit.h:54
 AliFMDCorrELossFit.h:55
 AliFMDCorrELossFit.h:56
 AliFMDCorrELossFit.h:57
 AliFMDCorrELossFit.h:58
 AliFMDCorrELossFit.h:59
 AliFMDCorrELossFit.h:60
 AliFMDCorrELossFit.h:61
 AliFMDCorrELossFit.h:62
 AliFMDCorrELossFit.h:63
 AliFMDCorrELossFit.h:64
 AliFMDCorrELossFit.h:65
 AliFMDCorrELossFit.h:66
 AliFMDCorrELossFit.h:67
 AliFMDCorrELossFit.h:68
 AliFMDCorrELossFit.h:69
 AliFMDCorrELossFit.h:70
 AliFMDCorrELossFit.h:71
 AliFMDCorrELossFit.h:72
 AliFMDCorrELossFit.h:73
 AliFMDCorrELossFit.h:74
 AliFMDCorrELossFit.h:75
 AliFMDCorrELossFit.h:76
 AliFMDCorrELossFit.h:77
 AliFMDCorrELossFit.h:78
 AliFMDCorrELossFit.h:79
 AliFMDCorrELossFit.h:80
 AliFMDCorrELossFit.h:81
 AliFMDCorrELossFit.h:82
 AliFMDCorrELossFit.h:83
 AliFMDCorrELossFit.h:84
 AliFMDCorrELossFit.h:85
 AliFMDCorrELossFit.h:86
 AliFMDCorrELossFit.h:87
 AliFMDCorrELossFit.h:88
 AliFMDCorrELossFit.h:89
 AliFMDCorrELossFit.h:90
 AliFMDCorrELossFit.h:91
 AliFMDCorrELossFit.h:92
 AliFMDCorrELossFit.h:93
 AliFMDCorrELossFit.h:94
 AliFMDCorrELossFit.h:95
 AliFMDCorrELossFit.h:96
 AliFMDCorrELossFit.h:97
 AliFMDCorrELossFit.h:98
 AliFMDCorrELossFit.h:99
 AliFMDCorrELossFit.h:100
 AliFMDCorrELossFit.h:101
 AliFMDCorrELossFit.h:102
 AliFMDCorrELossFit.h:103
 AliFMDCorrELossFit.h:104
 AliFMDCorrELossFit.h:105
 AliFMDCorrELossFit.h:106
 AliFMDCorrELossFit.h:107
 AliFMDCorrELossFit.h:108
 AliFMDCorrELossFit.h:109
 AliFMDCorrELossFit.h:110
 AliFMDCorrELossFit.h:111
 AliFMDCorrELossFit.h:112
 AliFMDCorrELossFit.h:113
 AliFMDCorrELossFit.h:114
 AliFMDCorrELossFit.h:115
 AliFMDCorrELossFit.h:116
 AliFMDCorrELossFit.h:117
 AliFMDCorrELossFit.h:118
 AliFMDCorrELossFit.h:119
 AliFMDCorrELossFit.h:120
 AliFMDCorrELossFit.h:121
 AliFMDCorrELossFit.h:122
 AliFMDCorrELossFit.h:123
 AliFMDCorrELossFit.h:124
 AliFMDCorrELossFit.h:125
 AliFMDCorrELossFit.h:126
 AliFMDCorrELossFit.h:127
 AliFMDCorrELossFit.h:128
 AliFMDCorrELossFit.h:129
 AliFMDCorrELossFit.h:130
 AliFMDCorrELossFit.h:131
 AliFMDCorrELossFit.h:132
 AliFMDCorrELossFit.h:133
 AliFMDCorrELossFit.h:134
 AliFMDCorrELossFit.h:135
 AliFMDCorrELossFit.h:136
 AliFMDCorrELossFit.h:137
 AliFMDCorrELossFit.h:138
 AliFMDCorrELossFit.h:139
 AliFMDCorrELossFit.h:140
 AliFMDCorrELossFit.h:141
 AliFMDCorrELossFit.h:142
 AliFMDCorrELossFit.h:143
 AliFMDCorrELossFit.h:144
 AliFMDCorrELossFit.h:145
 AliFMDCorrELossFit.h:146
 AliFMDCorrELossFit.h:147
 AliFMDCorrELossFit.h:148
 AliFMDCorrELossFit.h:149
 AliFMDCorrELossFit.h:150
 AliFMDCorrELossFit.h:151
 AliFMDCorrELossFit.h:152
 AliFMDCorrELossFit.h:153
 AliFMDCorrELossFit.h:154
 AliFMDCorrELossFit.h:155
 AliFMDCorrELossFit.h:156
 AliFMDCorrELossFit.h:157
 AliFMDCorrELossFit.h:158
 AliFMDCorrELossFit.h:159
 AliFMDCorrELossFit.h:160
 AliFMDCorrELossFit.h:161
 AliFMDCorrELossFit.h:162
 AliFMDCorrELossFit.h:163
 AliFMDCorrELossFit.h:164
 AliFMDCorrELossFit.h:165
 AliFMDCorrELossFit.h:166
 AliFMDCorrELossFit.h:167
 AliFMDCorrELossFit.h:168
 AliFMDCorrELossFit.h:169
 AliFMDCorrELossFit.h:170
 AliFMDCorrELossFit.h:171
 AliFMDCorrELossFit.h:172
 AliFMDCorrELossFit.h:173
 AliFMDCorrELossFit.h:174
 AliFMDCorrELossFit.h:175
 AliFMDCorrELossFit.h:176
 AliFMDCorrELossFit.h:177
 AliFMDCorrELossFit.h:178
 AliFMDCorrELossFit.h:179
 AliFMDCorrELossFit.h:180
 AliFMDCorrELossFit.h:181
 AliFMDCorrELossFit.h:182
 AliFMDCorrELossFit.h:183
 AliFMDCorrELossFit.h:184
 AliFMDCorrELossFit.h:185
 AliFMDCorrELossFit.h:186
 AliFMDCorrELossFit.h:187
 AliFMDCorrELossFit.h:188
 AliFMDCorrELossFit.h:189
 AliFMDCorrELossFit.h:190
 AliFMDCorrELossFit.h:191
 AliFMDCorrELossFit.h:192
 AliFMDCorrELossFit.h:193
 AliFMDCorrELossFit.h:194
 AliFMDCorrELossFit.h:195
 AliFMDCorrELossFit.h:196
 AliFMDCorrELossFit.h:197
 AliFMDCorrELossFit.h:198
 AliFMDCorrELossFit.h:199
 AliFMDCorrELossFit.h:200
 AliFMDCorrELossFit.h:201
 AliFMDCorrELossFit.h:202
 AliFMDCorrELossFit.h:203
 AliFMDCorrELossFit.h:204
 AliFMDCorrELossFit.h:205
 AliFMDCorrELossFit.h:206
 AliFMDCorrELossFit.h:207
 AliFMDCorrELossFit.h:208
 AliFMDCorrELossFit.h:209
 AliFMDCorrELossFit.h:210
 AliFMDCorrELossFit.h:211
 AliFMDCorrELossFit.h:212
 AliFMDCorrELossFit.h:213
 AliFMDCorrELossFit.h:214
 AliFMDCorrELossFit.h:215
 AliFMDCorrELossFit.h:216
 AliFMDCorrELossFit.h:217
 AliFMDCorrELossFit.h:218
 AliFMDCorrELossFit.h:219
 AliFMDCorrELossFit.h:220
 AliFMDCorrELossFit.h:221
 AliFMDCorrELossFit.h:222
 AliFMDCorrELossFit.h:223
 AliFMDCorrELossFit.h:224
 AliFMDCorrELossFit.h:225
 AliFMDCorrELossFit.h:226
 AliFMDCorrELossFit.h:227
 AliFMDCorrELossFit.h:228
 AliFMDCorrELossFit.h:229
 AliFMDCorrELossFit.h:230
 AliFMDCorrELossFit.h:231
 AliFMDCorrELossFit.h:232
 AliFMDCorrELossFit.h:233
 AliFMDCorrELossFit.h:234
 AliFMDCorrELossFit.h:235
 AliFMDCorrELossFit.h:236
 AliFMDCorrELossFit.h:237
 AliFMDCorrELossFit.h:238
 AliFMDCorrELossFit.h:239
 AliFMDCorrELossFit.h:240
 AliFMDCorrELossFit.h:241
 AliFMDCorrELossFit.h:242
 AliFMDCorrELossFit.h:243
 AliFMDCorrELossFit.h:244
 AliFMDCorrELossFit.h:245
 AliFMDCorrELossFit.h:246
 AliFMDCorrELossFit.h:247
 AliFMDCorrELossFit.h:248
 AliFMDCorrELossFit.h:249
 AliFMDCorrELossFit.h:250
 AliFMDCorrELossFit.h:251
 AliFMDCorrELossFit.h:252
 AliFMDCorrELossFit.h:253
 AliFMDCorrELossFit.h:254
 AliFMDCorrELossFit.h:255
 AliFMDCorrELossFit.h:256
 AliFMDCorrELossFit.h:257
 AliFMDCorrELossFit.h:258
 AliFMDCorrELossFit.h:259
 AliFMDCorrELossFit.h:260
 AliFMDCorrELossFit.h:261
 AliFMDCorrELossFit.h:262
 AliFMDCorrELossFit.h:263
 AliFMDCorrELossFit.h:264
 AliFMDCorrELossFit.h:265
 AliFMDCorrELossFit.h:266
 AliFMDCorrELossFit.h:267
 AliFMDCorrELossFit.h:268
 AliFMDCorrELossFit.h:269
 AliFMDCorrELossFit.h:270
 AliFMDCorrELossFit.h:271
 AliFMDCorrELossFit.h:272
 AliFMDCorrELossFit.h:273
 AliFMDCorrELossFit.h:274
 AliFMDCorrELossFit.h:275
 AliFMDCorrELossFit.h:276
 AliFMDCorrELossFit.h:277
 AliFMDCorrELossFit.h:278
 AliFMDCorrELossFit.h:279
 AliFMDCorrELossFit.h:280
 AliFMDCorrELossFit.h:281
 AliFMDCorrELossFit.h:282
 AliFMDCorrELossFit.h:283
 AliFMDCorrELossFit.h:284
 AliFMDCorrELossFit.h:285
 AliFMDCorrELossFit.h:286
 AliFMDCorrELossFit.h:287
 AliFMDCorrELossFit.h:288
 AliFMDCorrELossFit.h:289
 AliFMDCorrELossFit.h:290
 AliFMDCorrELossFit.h:291
 AliFMDCorrELossFit.h:292
 AliFMDCorrELossFit.h:293
 AliFMDCorrELossFit.h:294
 AliFMDCorrELossFit.h:295
 AliFMDCorrELossFit.h:296
 AliFMDCorrELossFit.h:297
 AliFMDCorrELossFit.h:298
 AliFMDCorrELossFit.h:299
 AliFMDCorrELossFit.h:300
 AliFMDCorrELossFit.h:301
 AliFMDCorrELossFit.h:302
 AliFMDCorrELossFit.h:303
 AliFMDCorrELossFit.h:304
 AliFMDCorrELossFit.h:305
 AliFMDCorrELossFit.h:306
 AliFMDCorrELossFit.h:307
 AliFMDCorrELossFit.h:308
 AliFMDCorrELossFit.h:309
 AliFMDCorrELossFit.h:310
 AliFMDCorrELossFit.h:311
 AliFMDCorrELossFit.h:312
 AliFMDCorrELossFit.h:313
 AliFMDCorrELossFit.h:314
 AliFMDCorrELossFit.h:315
 AliFMDCorrELossFit.h:316
 AliFMDCorrELossFit.h:317
 AliFMDCorrELossFit.h:318
 AliFMDCorrELossFit.h:319
 AliFMDCorrELossFit.h:320
 AliFMDCorrELossFit.h:321
 AliFMDCorrELossFit.h:322
 AliFMDCorrELossFit.h:323
 AliFMDCorrELossFit.h:324
 AliFMDCorrELossFit.h:325
 AliFMDCorrELossFit.h:326
 AliFMDCorrELossFit.h:327
 AliFMDCorrELossFit.h:328
 AliFMDCorrELossFit.h:329
 AliFMDCorrELossFit.h:330
 AliFMDCorrELossFit.h:331
 AliFMDCorrELossFit.h:332
 AliFMDCorrELossFit.h:333
 AliFMDCorrELossFit.h:334
 AliFMDCorrELossFit.h:335
 AliFMDCorrELossFit.h:336
 AliFMDCorrELossFit.h:337
 AliFMDCorrELossFit.h:338
 AliFMDCorrELossFit.h:339
 AliFMDCorrELossFit.h:340
 AliFMDCorrELossFit.h:341
 AliFMDCorrELossFit.h:342
 AliFMDCorrELossFit.h:343
 AliFMDCorrELossFit.h:344
 AliFMDCorrELossFit.h:345
 AliFMDCorrELossFit.h:346
 AliFMDCorrELossFit.h:347
 AliFMDCorrELossFit.h:348
 AliFMDCorrELossFit.h:349
 AliFMDCorrELossFit.h:350
 AliFMDCorrELossFit.h:351
 AliFMDCorrELossFit.h:352
 AliFMDCorrELossFit.h:353
 AliFMDCorrELossFit.h:354
 AliFMDCorrELossFit.h:355
 AliFMDCorrELossFit.h:356
 AliFMDCorrELossFit.h:357
 AliFMDCorrELossFit.h:358
 AliFMDCorrELossFit.h:359
 AliFMDCorrELossFit.h:360
 AliFMDCorrELossFit.h:361
 AliFMDCorrELossFit.h:362
 AliFMDCorrELossFit.h:363
 AliFMDCorrELossFit.h:364
 AliFMDCorrELossFit.h:365
 AliFMDCorrELossFit.h:366
 AliFMDCorrELossFit.h:367
 AliFMDCorrELossFit.h:368
 AliFMDCorrELossFit.h:369
 AliFMDCorrELossFit.h:370
 AliFMDCorrELossFit.h:371
 AliFMDCorrELossFit.h:372
 AliFMDCorrELossFit.h:373
 AliFMDCorrELossFit.h:374
 AliFMDCorrELossFit.h:375
 AliFMDCorrELossFit.h:376
 AliFMDCorrELossFit.h:377
 AliFMDCorrELossFit.h:378
 AliFMDCorrELossFit.h:379
 AliFMDCorrELossFit.h:380
 AliFMDCorrELossFit.h:381
 AliFMDCorrELossFit.h:382
 AliFMDCorrELossFit.h:383
 AliFMDCorrELossFit.h:384
 AliFMDCorrELossFit.h:385
 AliFMDCorrELossFit.h:386
 AliFMDCorrELossFit.h:387
 AliFMDCorrELossFit.h:388
 AliFMDCorrELossFit.h:389
 AliFMDCorrELossFit.h:390
 AliFMDCorrELossFit.h:391
 AliFMDCorrELossFit.h:392
 AliFMDCorrELossFit.h:393
 AliFMDCorrELossFit.h:394
 AliFMDCorrELossFit.h:395
 AliFMDCorrELossFit.h:396
 AliFMDCorrELossFit.h:397
 AliFMDCorrELossFit.h:398
 AliFMDCorrELossFit.h:399
 AliFMDCorrELossFit.h:400
 AliFMDCorrELossFit.h:401
 AliFMDCorrELossFit.h:402
 AliFMDCorrELossFit.h:403
 AliFMDCorrELossFit.h:404
 AliFMDCorrELossFit.h:405
 AliFMDCorrELossFit.h:406
 AliFMDCorrELossFit.h:407
 AliFMDCorrELossFit.h:408
 AliFMDCorrELossFit.h:409
 AliFMDCorrELossFit.h:410
 AliFMDCorrELossFit.h:411
 AliFMDCorrELossFit.h:412
 AliFMDCorrELossFit.h:413
 AliFMDCorrELossFit.h:414
 AliFMDCorrELossFit.h:415
 AliFMDCorrELossFit.h:416
 AliFMDCorrELossFit.h:417
 AliFMDCorrELossFit.h:418
 AliFMDCorrELossFit.h:419
 AliFMDCorrELossFit.h:420
 AliFMDCorrELossFit.h:421
 AliFMDCorrELossFit.h:422
 AliFMDCorrELossFit.h:423
 AliFMDCorrELossFit.h:424
 AliFMDCorrELossFit.h:425
 AliFMDCorrELossFit.h:426
 AliFMDCorrELossFit.h:427
 AliFMDCorrELossFit.h:428
 AliFMDCorrELossFit.h:429
 AliFMDCorrELossFit.h:430
 AliFMDCorrELossFit.h:431
 AliFMDCorrELossFit.h:432
 AliFMDCorrELossFit.h:433
 AliFMDCorrELossFit.h:434
 AliFMDCorrELossFit.h:435
 AliFMDCorrELossFit.h:436
 AliFMDCorrELossFit.h:437
 AliFMDCorrELossFit.h:438
 AliFMDCorrELossFit.h:439
 AliFMDCorrELossFit.h:440
 AliFMDCorrELossFit.h:441
 AliFMDCorrELossFit.h:442
 AliFMDCorrELossFit.h:443
 AliFMDCorrELossFit.h:444
 AliFMDCorrELossFit.h:445
 AliFMDCorrELossFit.h:446
 AliFMDCorrELossFit.h:447
 AliFMDCorrELossFit.h:448
 AliFMDCorrELossFit.h:449
 AliFMDCorrELossFit.h:450
 AliFMDCorrELossFit.h:451
 AliFMDCorrELossFit.h:452
 AliFMDCorrELossFit.h:453
 AliFMDCorrELossFit.h:454
 AliFMDCorrELossFit.h:455
 AliFMDCorrELossFit.h:456
 AliFMDCorrELossFit.h:457
 AliFMDCorrELossFit.h:458
 AliFMDCorrELossFit.h:459
 AliFMDCorrELossFit.h:460
 AliFMDCorrELossFit.h:461
 AliFMDCorrELossFit.h:462
 AliFMDCorrELossFit.h:463
 AliFMDCorrELossFit.h:464
 AliFMDCorrELossFit.h:465
 AliFMDCorrELossFit.h:466
 AliFMDCorrELossFit.h:467
 AliFMDCorrELossFit.h:468
 AliFMDCorrELossFit.h:469
 AliFMDCorrELossFit.h:470
 AliFMDCorrELossFit.h:471
 AliFMDCorrELossFit.h:472
 AliFMDCorrELossFit.h:473
 AliFMDCorrELossFit.h:474
 AliFMDCorrELossFit.h:475
 AliFMDCorrELossFit.h:476
 AliFMDCorrELossFit.h:477
 AliFMDCorrELossFit.h:478
 AliFMDCorrELossFit.h:479
 AliFMDCorrELossFit.h:480
 AliFMDCorrELossFit.h:481
 AliFMDCorrELossFit.h:482
 AliFMDCorrELossFit.h:483
 AliFMDCorrELossFit.h:484
 AliFMDCorrELossFit.h:485
 AliFMDCorrELossFit.h:486
 AliFMDCorrELossFit.h:487
 AliFMDCorrELossFit.h:488
 AliFMDCorrELossFit.h:489
 AliFMDCorrELossFit.h:490
 AliFMDCorrELossFit.h:491
 AliFMDCorrELossFit.h:492
 AliFMDCorrELossFit.h:493
 AliFMDCorrELossFit.h:494
 AliFMDCorrELossFit.h:495
 AliFMDCorrELossFit.h:496
 AliFMDCorrELossFit.h:497
 AliFMDCorrELossFit.h:498
 AliFMDCorrELossFit.h:499
 AliFMDCorrELossFit.h:500
 AliFMDCorrELossFit.h:501
 AliFMDCorrELossFit.h:502
 AliFMDCorrELossFit.h:503
 AliFMDCorrELossFit.h:504
 AliFMDCorrELossFit.h:505
 AliFMDCorrELossFit.h:506
 AliFMDCorrELossFit.h:507
 AliFMDCorrELossFit.h:508
 AliFMDCorrELossFit.h:509
 AliFMDCorrELossFit.h:510
 AliFMDCorrELossFit.h:511
 AliFMDCorrELossFit.h:512
 AliFMDCorrELossFit.h:513
 AliFMDCorrELossFit.h:514
 AliFMDCorrELossFit.h:515
 AliFMDCorrELossFit.h:516
 AliFMDCorrELossFit.h:517
 AliFMDCorrELossFit.h:518
 AliFMDCorrELossFit.h:519
 AliFMDCorrELossFit.h:520
 AliFMDCorrELossFit.h:521
 AliFMDCorrELossFit.h:522
 AliFMDCorrELossFit.h:523
 AliFMDCorrELossFit.h:524
 AliFMDCorrELossFit.h:525
 AliFMDCorrELossFit.h:526
 AliFMDCorrELossFit.h:527
 AliFMDCorrELossFit.h:528
 AliFMDCorrELossFit.h:529
 AliFMDCorrELossFit.h:530
 AliFMDCorrELossFit.h:531
 AliFMDCorrELossFit.h:532
 AliFMDCorrELossFit.h:533
 AliFMDCorrELossFit.h:534
 AliFMDCorrELossFit.h:535
 AliFMDCorrELossFit.h:536
 AliFMDCorrELossFit.h:537
 AliFMDCorrELossFit.h:538
 AliFMDCorrELossFit.h:539
 AliFMDCorrELossFit.h:540
 AliFMDCorrELossFit.h:541
 AliFMDCorrELossFit.h:542
 AliFMDCorrELossFit.h:543
 AliFMDCorrELossFit.h:544
 AliFMDCorrELossFit.h:545
 AliFMDCorrELossFit.h:546
 AliFMDCorrELossFit.h:547
 AliFMDCorrELossFit.h:548
 AliFMDCorrELossFit.h:549
 AliFMDCorrELossFit.h:550
 AliFMDCorrELossFit.h:551
 AliFMDCorrELossFit.h:552
 AliFMDCorrELossFit.h:553
 AliFMDCorrELossFit.h:554
 AliFMDCorrELossFit.h:555
 AliFMDCorrELossFit.h:556
 AliFMDCorrELossFit.h:557
 AliFMDCorrELossFit.h:558
 AliFMDCorrELossFit.h:559
 AliFMDCorrELossFit.h:560
 AliFMDCorrELossFit.h:561
 AliFMDCorrELossFit.h:562
 AliFMDCorrELossFit.h:563
 AliFMDCorrELossFit.h:564
 AliFMDCorrELossFit.h:565
 AliFMDCorrELossFit.h:566
 AliFMDCorrELossFit.h:567
 AliFMDCorrELossFit.h:568
 AliFMDCorrELossFit.h:569
 AliFMDCorrELossFit.h:570
 AliFMDCorrELossFit.h:571
 AliFMDCorrELossFit.h:572
 AliFMDCorrELossFit.h:573
 AliFMDCorrELossFit.h:574
 AliFMDCorrELossFit.h:575
 AliFMDCorrELossFit.h:576
 AliFMDCorrELossFit.h:577
 AliFMDCorrELossFit.h:578
 AliFMDCorrELossFit.h:579
 AliFMDCorrELossFit.h:580
 AliFMDCorrELossFit.h:581
 AliFMDCorrELossFit.h:582
 AliFMDCorrELossFit.h:583
 AliFMDCorrELossFit.h:584
 AliFMDCorrELossFit.h:585
 AliFMDCorrELossFit.h:586
 AliFMDCorrELossFit.h:587
 AliFMDCorrELossFit.h:588
 AliFMDCorrELossFit.h:589
 AliFMDCorrELossFit.h:590
 AliFMDCorrELossFit.h:591
 AliFMDCorrELossFit.h:592
 AliFMDCorrELossFit.h:593
 AliFMDCorrELossFit.h:594
 AliFMDCorrELossFit.h:595
 AliFMDCorrELossFit.h:596
 AliFMDCorrELossFit.h:597
 AliFMDCorrELossFit.h:598
 AliFMDCorrELossFit.h:599
 AliFMDCorrELossFit.h:600
 AliFMDCorrELossFit.h:601
 AliFMDCorrELossFit.h:602
 AliFMDCorrELossFit.h:603
 AliFMDCorrELossFit.h:604
 AliFMDCorrELossFit.h:605
 AliFMDCorrELossFit.h:606
 AliFMDCorrELossFit.h:607
 AliFMDCorrELossFit.h:608
 AliFMDCorrELossFit.h:609
 AliFMDCorrELossFit.h:610
 AliFMDCorrELossFit.h:611
 AliFMDCorrELossFit.h:612
 AliFMDCorrELossFit.h:613
 AliFMDCorrELossFit.h:614
 AliFMDCorrELossFit.h:615
 AliFMDCorrELossFit.h:616
 AliFMDCorrELossFit.h:617
 AliFMDCorrELossFit.h:618
 AliFMDCorrELossFit.h:619
 AliFMDCorrELossFit.h:620
 AliFMDCorrELossFit.h:621
 AliFMDCorrELossFit.h:622
 AliFMDCorrELossFit.h:623
 AliFMDCorrELossFit.h:624
 AliFMDCorrELossFit.h:625
 AliFMDCorrELossFit.h:626
 AliFMDCorrELossFit.h:627
 AliFMDCorrELossFit.h:628
 AliFMDCorrELossFit.h:629
 AliFMDCorrELossFit.h:630
 AliFMDCorrELossFit.h:631
 AliFMDCorrELossFit.h:632
 AliFMDCorrELossFit.h:633
 AliFMDCorrELossFit.h:634
 AliFMDCorrELossFit.h:635
 AliFMDCorrELossFit.h:636
 AliFMDCorrELossFit.h:637
 AliFMDCorrELossFit.h:638
 AliFMDCorrELossFit.h:639
 AliFMDCorrELossFit.h:640
 AliFMDCorrELossFit.h:641
 AliFMDCorrELossFit.h:642
 AliFMDCorrELossFit.h:643
 AliFMDCorrELossFit.h:644
 AliFMDCorrELossFit.h:645
 AliFMDCorrELossFit.h:646
 AliFMDCorrELossFit.h:647
 AliFMDCorrELossFit.h:648
 AliFMDCorrELossFit.h:649
 AliFMDCorrELossFit.h:650
 AliFMDCorrELossFit.h:651
 AliFMDCorrELossFit.h:652
 AliFMDCorrELossFit.h:653
 AliFMDCorrELossFit.h:654
 AliFMDCorrELossFit.h:655
 AliFMDCorrELossFit.h:656
 AliFMDCorrELossFit.h:657
 AliFMDCorrELossFit.h:658
 AliFMDCorrELossFit.h:659
 AliFMDCorrELossFit.h:660
 AliFMDCorrELossFit.h:661
 AliFMDCorrELossFit.h:662
 AliFMDCorrELossFit.h:663
 AliFMDCorrELossFit.h:664
 AliFMDCorrELossFit.h:665
 AliFMDCorrELossFit.h:666
 AliFMDCorrELossFit.h:667
 AliFMDCorrELossFit.h:668
 AliFMDCorrELossFit.h:669
 AliFMDCorrELossFit.h:670
 AliFMDCorrELossFit.h:671
 AliFMDCorrELossFit.h:672
 AliFMDCorrELossFit.h:673
 AliFMDCorrELossFit.h:674
 AliFMDCorrELossFit.h:675
 AliFMDCorrELossFit.h:676
 AliFMDCorrELossFit.h:677
 AliFMDCorrELossFit.h:678
 AliFMDCorrELossFit.h:679
 AliFMDCorrELossFit.h:680
 AliFMDCorrELossFit.h:681
 AliFMDCorrELossFit.h:682
 AliFMDCorrELossFit.h:683
 AliFMDCorrELossFit.h:684
 AliFMDCorrELossFit.h:685
 AliFMDCorrELossFit.h:686
 AliFMDCorrELossFit.h:687
 AliFMDCorrELossFit.h:688
 AliFMDCorrELossFit.h:689
 AliFMDCorrELossFit.h:690
 AliFMDCorrELossFit.h:691
 AliFMDCorrELossFit.h:692
 AliFMDCorrELossFit.h:693
 AliFMDCorrELossFit.h:694
 AliFMDCorrELossFit.h:695
 AliFMDCorrELossFit.h:696
 AliFMDCorrELossFit.h:697
 AliFMDCorrELossFit.h:698
 AliFMDCorrELossFit.h:699
 AliFMDCorrELossFit.h:700
 AliFMDCorrELossFit.h:701
 AliFMDCorrELossFit.h:702
 AliFMDCorrELossFit.h:703
 AliFMDCorrELossFit.h:704
 AliFMDCorrELossFit.h:705
 AliFMDCorrELossFit.h:706
 AliFMDCorrELossFit.h:707
 AliFMDCorrELossFit.h:708
 AliFMDCorrELossFit.h:709
 AliFMDCorrELossFit.h:710
 AliFMDCorrELossFit.h:711
 AliFMDCorrELossFit.h:712
 AliFMDCorrELossFit.h:713
 AliFMDCorrELossFit.h:714
 AliFMDCorrELossFit.h:715
 AliFMDCorrELossFit.h:716
 AliFMDCorrELossFit.h:717
 AliFMDCorrELossFit.h:718
 AliFMDCorrELossFit.h:719
 AliFMDCorrELossFit.h:720
 AliFMDCorrELossFit.h:721
 AliFMDCorrELossFit.h:722
 AliFMDCorrELossFit.h:723
 AliFMDCorrELossFit.h:724
 AliFMDCorrELossFit.h:725
 AliFMDCorrELossFit.h:726
 AliFMDCorrELossFit.h:727
 AliFMDCorrELossFit.h:728
 AliFMDCorrELossFit.h:729
 AliFMDCorrELossFit.h:730
 AliFMDCorrELossFit.h:731
 AliFMDCorrELossFit.h:732
 AliFMDCorrELossFit.h:733
 AliFMDCorrELossFit.h:734
 AliFMDCorrELossFit.h:735
 AliFMDCorrELossFit.h:736
 AliFMDCorrELossFit.h:737
 AliFMDCorrELossFit.h:738
 AliFMDCorrELossFit.h:739
 AliFMDCorrELossFit.h:740
 AliFMDCorrELossFit.h:741
 AliFMDCorrELossFit.h:742
 AliFMDCorrELossFit.h:743
 AliFMDCorrELossFit.h:744
 AliFMDCorrELossFit.h:745
 AliFMDCorrELossFit.h:746
 AliFMDCorrELossFit.h:747
 AliFMDCorrELossFit.h:748
 AliFMDCorrELossFit.h:749
 AliFMDCorrELossFit.h:750
 AliFMDCorrELossFit.h:751
 AliFMDCorrELossFit.h:752
 AliFMDCorrELossFit.h:753
 AliFMDCorrELossFit.h:754
 AliFMDCorrELossFit.h:755
 AliFMDCorrELossFit.h:756
 AliFMDCorrELossFit.h:757
 AliFMDCorrELossFit.h:758
 AliFMDCorrELossFit.h:759
 AliFMDCorrELossFit.h:760
 AliFMDCorrELossFit.h:761
 AliFMDCorrELossFit.h:762
 AliFMDCorrELossFit.h:763
 AliFMDCorrELossFit.h:764
 AliFMDCorrELossFit.h:765
 AliFMDCorrELossFit.h:766
 AliFMDCorrELossFit.h:767
 AliFMDCorrELossFit.h:768
 AliFMDCorrELossFit.h:769
 AliFMDCorrELossFit.h:770
 AliFMDCorrELossFit.h:771
 AliFMDCorrELossFit.h:772
 AliFMDCorrELossFit.h:773
 AliFMDCorrELossFit.h:774
 AliFMDCorrELossFit.h:775
 AliFMDCorrELossFit.h:776
 AliFMDCorrELossFit.h:777
 AliFMDCorrELossFit.h:778
 AliFMDCorrELossFit.h:779
 AliFMDCorrELossFit.h:780
 AliFMDCorrELossFit.h:781
 AliFMDCorrELossFit.h:782
 AliFMDCorrELossFit.h:783
 AliFMDCorrELossFit.h:784
 AliFMDCorrELossFit.h:785
 AliFMDCorrELossFit.h:786
 AliFMDCorrELossFit.h:787
 AliFMDCorrELossFit.h:788
 AliFMDCorrELossFit.h:789
 AliFMDCorrELossFit.h:790
 AliFMDCorrELossFit.h:791
 AliFMDCorrELossFit.h:792
 AliFMDCorrELossFit.h:793
 AliFMDCorrELossFit.h:794
 AliFMDCorrELossFit.h:795
 AliFMDCorrELossFit.h:796
 AliFMDCorrELossFit.h:797
 AliFMDCorrELossFit.h:798
 AliFMDCorrELossFit.h:799
 AliFMDCorrELossFit.h:800
 AliFMDCorrELossFit.h:801
 AliFMDCorrELossFit.h:802
 AliFMDCorrELossFit.h:803
 AliFMDCorrELossFit.h:804
 AliFMDCorrELossFit.h:805
 AliFMDCorrELossFit.h:806
 AliFMDCorrELossFit.h:807
 AliFMDCorrELossFit.h:808
 AliFMDCorrELossFit.h:809
 AliFMDCorrELossFit.h:810
 AliFMDCorrELossFit.h:811
 AliFMDCorrELossFit.h:812
 AliFMDCorrELossFit.h:813
 AliFMDCorrELossFit.h:814
 AliFMDCorrELossFit.h:815
 AliFMDCorrELossFit.h:816
 AliFMDCorrELossFit.h:817
 AliFMDCorrELossFit.h:818
 AliFMDCorrELossFit.h:819
 AliFMDCorrELossFit.h:820
 AliFMDCorrELossFit.h:821
 AliFMDCorrELossFit.h:822
 AliFMDCorrELossFit.h:823
 AliFMDCorrELossFit.h:824
 AliFMDCorrELossFit.h:825
 AliFMDCorrELossFit.h:826
 AliFMDCorrELossFit.h:827
 AliFMDCorrELossFit.h:828
 AliFMDCorrELossFit.h:829
 AliFMDCorrELossFit.h:830
 AliFMDCorrELossFit.h:831
 AliFMDCorrELossFit.h:832
 AliFMDCorrELossFit.h:833
 AliFMDCorrELossFit.h:834
 AliFMDCorrELossFit.h:835
 AliFMDCorrELossFit.h:836
 AliFMDCorrELossFit.h:837
 AliFMDCorrELossFit.h:838
 AliFMDCorrELossFit.h:839