ROOT logo
// Object holding the Energy loss fit 'correction' 
// 
// These are generated from Monte-Carlo or real ESDs. 
//
#include "AliFMDCorrELossFit.h"
#include "AliForwardUtil.h"
#include "AliLandauGaus.h"
#include <TF1.h>
#include <TGraph.h>
#include <TBrowser.h>
#include <TVirtualPad.h>
#include <THStack.h>
#include <TLatex.h>
#include <TLegend.h>
#include <TLine.h>
#include <TH1D.h>
#include <AliLog.h>
#include <TMath.h>
#include <TList.h>
#include <iostream>
#include <iomanip>
namespace { 
  Int_t fDebug = 1;
}

Double_t AliFMDCorrELossFit::ELossFit::fgMaxRelError = .25;
Double_t AliFMDCorrELossFit::ELossFit::fgLeastWeight = 1e-7;
Double_t AliFMDCorrELossFit::ELossFit::fgMaxChi2nu   = 20;

//____________________________________________________________________
AliFMDCorrELossFit::ELossFit::ELossFit()
  : fN(0),
    fNu(0),
    fChi2(0),
    fC(0),
    fDelta(0),
    fXi(0),
    fSigma(0),
    fSigmaN(0),
    fA(0),
    fEC(0),
    fEDelta(0),
    fEXi(0),
    fESigma(0),
    fESigmaN(0),
    fEA(0),
    fQuality(0), 
    fDet(0), 
    fRing('\0'),
    fBin(0),
    fMaxWeight(0)
{
  //
  // Default constructor 
  // 
  //
}
//____________________________________________________________________
AliFMDCorrELossFit::ELossFit::ELossFit(Int_t quality, const TF1& f)
  : fN(f.GetNpar() > AliLandauGaus::kN ? 
       Int_t(f.GetParameter(AliLandauGaus::kN)) : 
       1),
    fNu(f.GetNDF()),
    fChi2(f.GetChisquare()),
    fC(f.GetParameter(AliLandauGaus::kC)),
    fDelta(f.GetParameter(AliLandauGaus::kDelta)),
    fXi(f.GetParameter(AliLandauGaus::kXi)),
    fSigma(f.GetParameter(AliLandauGaus::kSigma)),
    fSigmaN(f.GetParameter(AliLandauGaus::kSigmaN)),
    fA(0),
    fEC(f.GetParError(AliLandauGaus::kC)),
    fEDelta(f.GetParError(AliLandauGaus::kDelta)),
    fEXi(f.GetParError(AliLandauGaus::kXi)),
    fESigma(f.GetParError(AliLandauGaus::kSigma)),
    fESigmaN(f.GetParError(AliLandauGaus::kSigmaN)),
    fEA(0),
    fQuality(quality),
    fDet(0), 
    fRing('\0'),
    fBin(0),
    fMaxWeight(0)
{
  // 
  // Construct from a function
  // 
  // Parameters:
  //    quality Quality flag
  //    f       Function
  //
  if (fN <= 0) return;
  fA  = new Double_t[fN];
  fEA = new Double_t[fN];
  for (Int_t i = 0; i < fN-1; i++) { 
    fA[i]  = f.GetParameter(AliLandauGaus::kA+i);
    fEA[i] = f.GetParError(AliLandauGaus::kA+i);
  }
  fA[fN-1]  = -9999;
  fEA[fN-1] = -9999;
}

//____________________________________________________________________
AliFMDCorrELossFit::ELossFit::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)
  : fN(n),
    fNu(nu),
    fChi2(chi2),
    fC(c),
    fDelta(delta),
    fXi(xi),
    fSigma(sigma),
    fSigmaN(sigman),
    fA(0),
    fEC(ec),
    fEDelta(edelta),
    fEXi(exi),
    fESigma(esigma),
    fESigmaN(esigman),
    fEA(0),
    fQuality(quality),
    fDet(0), 
    fRing('\0'),
    fBin(0),
    fMaxWeight(0)
{
  // 
  // Constructor with full parameter set
  // 
  // Parameters:
  //    quality   Quality flag
  //    n         @f$ N@f$ - Number of fitted peaks
  //    chi2      @f$ \chi^2 @f$
  //    nu        @f$ \nu @f$ - number degrees of freedom
  //    c         @f$ C@f$ - scale constant
  //    ec        @f$ \delta C@f$ - error on @f$ C@f$ 
  //    delta     @f$ \Delta@f$ - Most probable value		  
  //    edelta    @f$ \delta\Delta@f$ - error on @f$\Delta@f$ 
  //    xi        @f$ \xi@f$ - width  
  //    exi       @f$ \delta\xi@f$ - error on @f$\xi@f$ 
  //    sigma     @f$ \sigma@f$ - Width of Gaussian		   
  //    esigma    @f$ \delta\sigma@f$ - error on @f$\sigma@f$ 
  //    sigman    @f$ \sigma_n@f$ - Noise width		  
  //    esigman   @f$ \delta\sigma_n@f$ - error on @f$\sigma_n@f$ 
  //    a         Array of @f$ N-1@f$ weights @f$ a_i@f$ for 
  //                  @f$ i=2,\ldots@f$ 
  //    ea        Array of @f$ N-1@f$ error on the weights @f$ a_i@f$ for 
  //                  @f$ i=2,\ldots@f$ 
  //
  if (fN <= 0) return;
  fA  = new Double_t[fN];
  fEA = new Double_t[fN];
  for (Int_t i = 0; i < fN-1; i++) { 
    fA[i]  = a[i];
    fEA[i] = ea[i];
  }
  fA[fN-1]  = -9999;
  fEA[fN-1] = -9999;
}
//____________________________________________________________________
AliFMDCorrELossFit::ELossFit::ELossFit(const ELossFit& o)
  : TObject(o), 
    fN(o.fN),
    fNu(o.fNu),
    fChi2(o.fChi2),
    fC(o.fC),
    fDelta(o.fDelta),
    fXi(o.fXi),
    fSigma(o.fSigma),
    fSigmaN(o.fSigmaN),
    fA(0),
    fEC(o.fEC),
    fEDelta(o.fEDelta),
    fEXi(o.fEXi),
    fESigma(o.fESigma),
    fESigmaN(o.fESigmaN),
    fEA(0),
    fQuality(o.fQuality),
    fDet(o.fDet), 
    fRing(o.fRing),
    fBin(o.fBin),
    fMaxWeight(o.fMaxWeight)
{
  // 
  // Copy constructor 
  // 
  // Parameters:
  //    o Object to copy from 
  //
  if (fN <= 0) return;
  fA  = new Double_t[fN];
  fEA = new Double_t[fN];
  for (Int_t i = 0; i < fN-1; i++) { 
    fA[i]  = o.fA[i];
    fEA[i] = o.fEA[i];
  }
  fA[fN-1]  = -9999;
  fEA[fN-1] = -9999;
}

//____________________________________________________________________
AliFMDCorrELossFit::ELossFit&
AliFMDCorrELossFit::ELossFit::operator=(const ELossFit& o)
{
  // 
  // Assignment operator 
  // 
  // Parameters:
  //    o Object to assign from 
  // 
  // Return:
  //    Reference to this object 
  //
  if (&o == this) return *this; 
  fN	     = o.fN;
  fNu	     = o.fNu;
  fChi2	     = o.fChi2;
  fC	     = o.fC;
  fDelta     = o.fDelta;
  fXi	     = o.fXi;
  fSigma     = o.fSigma;
  fSigmaN    = o.fSigmaN;
  fEC	     = o.fEC;
  fEDelta    = o.fEDelta;
  fEXi	     = o.fEXi;
  fESigma    = o.fESigma;
  fESigmaN   = o.fESigmaN;
  fQuality   = o.fQuality;
  fDet       = o.fDet; 
  fRing      = o.fRing;
  fBin       = o.fBin;
  fMaxWeight = o.fMaxWeight;
  if (fA)  delete [] fA;
  if (fEA) delete [] fEA; 
  fA  = 0;
  fEA = 0;

  if (fN <= 0) return *this;
  fA  = new Double_t[fN];
  fEA = new Double_t[fN];
  for (Int_t i = 0; i < fN; i++) { 
    fA[i]  = o.fA[i];
    fEA[i] = o.fEA[i];
  }

  return *this;
}

//____________________________________________________________________
AliFMDCorrELossFit::ELossFit::~ELossFit()
{
  if (fA)  delete[] fA;
  if (fEA) delete[] fEA;
}


//____________________________________________________________________
Int_t
AliFMDCorrELossFit::ELossFit::FindMaxWeight(Double_t maxRelError, 
					    Double_t leastWeight, 
					    UShort_t  maxN) 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$ 
  // 
  // Parameters:
  //    maxRelError @f$ \min{a}@f$ 
  //    leastWeight @f$ \delta_{max}@f$ 
  //    maxN        @f$ \max{N}@f$      
  // 
  // Return:
  //    The largest index @f$ i@f$ for which the above
  // conditions hold.  Will never return less than 1. 
  //
  if (fMaxWeight > 0) return fMaxWeight;
  Int_t n = TMath::Min(maxN, UShort_t(fN-1));
  Int_t m = 1;
  // fN is one larger than we have data 
  for (Int_t i = 0; i < n-1; i++, m++) { 
    if (fA[i] < leastWeight)  break;
    if (fEA[i] / fA[i] > maxRelError) break;
  }
  return fMaxWeight = m;
}

//____________________________________________________________________
Double_t 
AliFMDCorrELossFit::ELossFit::Evaluate(Double_t x, 
				       UShort_t maxN) const
{
  // 
  // Evaluate 
  // @f[ 
  //  f_N(x;\Delta,\xi,\sigma') = 
  //     \sum_{i=1}^{n} a_i f(x;\Delta_i,\xi_i,\sigma_i')
  // @f] 
  //
  // (see AliLandauGaus::NLandauGaus) for the maximum @f$ N @f$
  // that fulfills the requirements 
  // 
  // Parameters:
  //    x           Where to evaluate 
  //    maxN 	  @f$ \max{N}@f$    
  // 
  // Return:
  //    @f$ f_N(x;\Delta,\xi,\sigma')@f$ 
  //
  return AliLandauGaus::Fn(x, fDelta, fXi, fSigma, fSigmaN, 
			   TMath::Min(maxN, UShort_t(fN)), fA);
}

//____________________________________________________________________
Double_t 
AliFMDCorrELossFit::ELossFit::EvaluateWeighted(Double_t x, 
					       UShort_t maxN) 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 AliLandauGaus::Fi and AliLandauGaus::NLandauGaus
  // for more information on the evaluated functions. 
  // 
  // Parameters:
  //    x           Where to evaluate 
  //    maxN 	  @f$ \max{N}@f$      
  // 
  // Return:
  //    @f$ f_W(x;\Delta,\xi,\sigma')@f$.  
  //
  UShort_t n   = TMath::Min(maxN, UShort_t(fN-1));
  Double_t num = 0;
  Double_t den = 0;
  for (Int_t i = 1; i <= n; i++) {
    Double_t a = (i == 1 ? 1 : fA[i-1]);
    if (fA[i-1] < 0) break;
    Double_t f = AliLandauGaus::Fi(x,fDelta,fXi,fSigma,fSigmaN,i);
    num += i * a * f;
    den += a * f;
  }
  if (den <= 0) return 1;
  return num / den;
}


#define OUTPAR(N,V,E) 			\
  std::setprecision(9) <<               \
  std::setw(12) << N << ": " << 	\
  std::setw(14) << V << " +/- " <<  	\
  std::setw(14) << E << " (" <<  	\
  std::setprecision(-1) <<              \
  std::setw(5)  << 100*(V>0?E/V:1) << "%)\n"
  

//____________________________________________________________________
Int_t
AliFMDCorrELossFit::ELossFit::Compare(const TObject* o) const
{
  // 
  // 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 
  // 
  // Parameters:
  //    o Other object to compare to 
  //
  const ELossFit* other = static_cast<const ELossFit*>(o);
  if (this->fQuality < other->fQuality) return -1;
  if (this->fQuality > other->fQuality) return +1;
  Double_t chi2nu  = (fNu == 0 ? 1000 : fChi2 / fNu);
  Double_t oChi2nu = (other->fNu == 0 ? 1000 : other->fChi2 / other->fNu);
  if (TMath::Abs(chi2nu-1) < TMath::Abs(oChi2nu-1)) return +1;
  if (TMath::Abs(chi2nu-1) > TMath::Abs(oChi2nu-1)) return -1;
  return 0;
}

//____________________________________________________________________
void
AliFMDCorrELossFit::ELossFit::Print(Option_t* option) const
{
  // 
  // Information to standard output 
  // 
  // Parameters:
  //    option Not used 
  //
  TString o(option);
  if (o.Contains("S", TString::kIgnoreCase)) {
    Printf("%15s: q=%2d n=%1d chi2/nu=%6.3f",
	   GetName(), fQuality, fN, (fNu <= 0 ? 999 : fChi2 / fNu));
    return;
  }
  
  std::cout << GetName() << ":\n"
	    << " chi^2/nu = " << fChi2 << "/" << fNu << " = " 
	    << (fNu == 0 ? 999 : fChi2 / fNu) << "\n"
	    << "     Quality:   " << fQuality << "\n" 
	    << "  NParticles:   " << fN << "  (" << FindMaxWeight() << ")\n"
	    << OUTPAR("Delta",   fDelta,  fEDelta) 
	    << OUTPAR("xi",      fXi,     fEXi)
	    << OUTPAR("sigma",   fSigma,  fESigma)
	    << OUTPAR("sigma_n", fSigmaN, fESigmaN);
  for (Int_t i = 0; i < fN-1; i++) 
    std::cout << OUTPAR(Form("a%d", i+2), fA[i], fEA[i]);
  std::cout << std::flush;
}
//____________________________________________________________________
TF1*
AliFMDCorrELossFit::ELossFit::GetF1(Int_t i, Double_t max) const
{
  const Double_t lowX = 0.001;
  const Double_t upX  = (max < 0 ? 10 : max);
  Int_t          maxW = FindMaxWeight();
  TF1*           ret  = 0;
  
  if (i <= 0)
    ret = AliLandauGaus::MakeFn(fC * 1, fDelta, fXi, 
				fSigma, fSigmaN, maxW/*fN*/, fA,  lowX, upX);
  else if (i == 1) 
    ret = AliLandauGaus::MakeF1(fC, fDelta, fXi, fSigma, fSigmaN, lowX, upX);
  else if (i <= maxW) 
    ret = AliLandauGaus::MakeFi(fC*(i == 1 ? 1 : fA[i-2]), 
				fDelta, fXi, fSigma, fSigmaN, i, lowX, upX);
  
  return ret;
}
//____________________________________________________________________
Double_t
AliFMDCorrELossFit::ELossFit::FindProbabilityCut(Double_t low) const
{
  Double_t ret = 1000;
  TF1*     f   = 0;
  TGraph*  g   = 0;
  try {
    if (!(f = GetF1(1,5))) // First landau up to Delta/Delta_{mip}=5
      throw TString("Didn't TF1 object");
    if (!(g = new TGraph(f, "i")))
      throw TString("Failed to integrate function");

    Int_t    n     = g->GetN();
    Double_t total = g->GetY()[n-1];
    if (total <= 0) 
      throw TString::Format("Invalid integral: %lf", total);

    for (Int_t i = 0; i < n; i++) { 
      Double_t prob = g->GetY()[i] / total;
      if (prob > low) {
	ret = g->GetX()[i];
	break;
      }
    }
    if (ret >= 1000) 
      throw TString::Format("Couldn't find x value for cut %lf", low);
  }
  catch (const TString& str) {
    AliWarningF("%s: %s", GetName(), str.Data());
  }
  if (f) delete f;
  if (g) delete g;
  return ret;
}
  

//____________________________________________________________________
const Char_t*
AliFMDCorrELossFit::ELossFit::GetName() const 
{
  // 
  // Get the name of this object 
  // 
  // 
  // Return:
  //    
  //
  return Form("FMD%d%c_etabin%03d", fDet, fRing, fBin);
}

//____________________________________________________________________
void
AliFMDCorrELossFit::ELossFit::Browse(TBrowser* b)
{
  // 
  // Browse this object 
  // 
  // Parameters:
  //    b Browser
  //
  Draw(b ? b->GetDrawOption() : "comp values");
  gPad->SetLogy();
  gPad->Update();
}
     
//____________________________________________________________________
void
AliFMDCorrELossFit::ELossFit::Draw(Option_t* option)
{
  // 
  // Draw this fit 
  // 
  // Parameters:
  //    option Options 
  //  - COMP  Draw components too 
  //
  TString opt(option);
  opt.ToUpper();
  bool comp = false;
  bool good = false;
  bool vals = false;
  bool legd = false;
  bool peak = false;
  if (opt.Contains("COMP")) { 
    opt.ReplaceAll("COMP","");
    comp = true;
  }
  if (opt.Contains("GOOD")) { 
    opt.ReplaceAll("GOOD","");
    good = true;
  }
  if (opt.Contains("VALUES")) { 
    opt.ReplaceAll("VALUES","");
    vals = true;
  }
  if (opt.Contains("LEGEND")) { 
    opt.ReplaceAll("LEGEND","");
    legd = comp;
  }
  if (!opt.Contains("SAME")) { 
    gPad->Clear();
  }
  if (opt.Contains("PEAK")) { 
    peak = true;
  }
  TLegend* l = 0;
  if (legd) { 
    l = new TLegend(.3, .5, .59, .94);
    l->SetBorderSize(0);
    l->SetFillColor(0);
    l->SetFillStyle(0);
  }
  TObjArray cleanup;
  Int_t maxW = FindMaxWeight();
  TF1* tot = AliLandauGaus::MakeFn(fC * 1, fDelta, fXi, fSigma, fSigmaN, 
				   maxW/*fN*/,     fA,  0.01,   10);
  tot->SetLineColor(kBlack);
  tot->SetLineWidth(2);
  tot->SetLineStyle(1);
  tot->SetTitle(GetName());
  if (l) l->AddEntry(tot, "Total", "l");
  Double_t max = tot->GetMaximum();

  
  if (!opt.Contains("SAME")) {
    TH1* frame = new TH1F(GetName(), 
		     Form("FMD%d%c, eta bin %d",fDet,fRing,fBin),
		     100, 0, 10);
    frame->SetMinimum(max/10000);
    frame->SetMaximum(max*1.4);
    frame->SetXTitle("#Delta / #Delta_{mip}");
    frame->Draw();
    opt.Append(" SAME");
  }
  TF1* cpy = tot->DrawCopy(opt.Data());
  cleanup.Add(tot);

  if (vals) { 
    Double_t x1 = .72;
    Double_t x2 = .73;
    Double_t y  = .90;
    Double_t dy = .05;
    TLatex* ltx1 = new TLatex(x1, y, "");
    TLatex* ltx2 = new TLatex(x2, y, "");
    ltx1->SetNDC();
    ltx1->SetTextAlign(33);
    ltx1->SetTextFont(132);
    ltx1->SetTextSize(dy-.01);
    ltx2->SetNDC();
    ltx2->SetTextAlign(13);
    ltx2->SetTextFont(132);
    ltx2->SetTextSize(dy-.01);

    ltx1->DrawLatex(x1, y, "Quality");
    ltx2->DrawLatex(x2, y, Form("%d", fQuality));
    y -= dy;

    ltx1->DrawLatex(x1, y, "#chi^{2}/#nu");
    ltx2->DrawLatex(x2, y, Form("%7.3f", (fNu > 0 ? fChi2 / fNu : -1)));
    y -= dy;
    
    const Char_t* pn[] = { "C", "#Delta", "#xi", "#sigma" };
    Double_t      pv[] = { fC,  fDelta,  fXi,  fSigma };
    Double_t      pe[] = { fEC, fEDelta, fEXi, fESigma };
    for (Int_t i = 0; i < 4; i++) { 
      ltx1->DrawLatex(x1, y, pn[i]);
      ltx2->DrawLatex(x2, y, Form("%6.4f#pm%6.4f", pv[i], pe[i]));
      y -= dy;
    }
    for (Int_t i=2; i <= fN; i++) { 
      if (i > maxW) {
	ltx1->SetTextColor(kRed+3);
	ltx2->SetTextColor(kRed+3);
      }
      ltx1->DrawLatex(x1, y, Form("a_{%d}", i));
      ltx2->DrawLatex(x2, y, Form("%6.4f#pm%6.4f", fA[i-2], fEA[i-2]));
      y -= dy;
    }

  }

  if (peak) { 
    TLine* pl = new TLine(fDelta, 0.01*max, fDelta, 1.5*max);
    pl->SetLineStyle(2);
    pl->SetLineColor(kBlack);
    pl->Draw();
  }
  if (!comp) { 
    gPad->cd();
    return;
  }

  Double_t min = max;
  opt.Append(" same");
  for (Int_t i=1; i <= fN; i++) { 
    if (good && i > maxW) break;
    TF1* f = AliLandauGaus::MakeFi(fC*(i == 1 ? 1 : fA[i-2]), 
					     fDelta, fXi, 
					     fSigma, fSigmaN, 
					     i,      0.01, 10);
    f->SetLineWidth(2);
    f->SetLineStyle(i > maxW ? 2 : 1);
    min = TMath::Min(f->GetMaximum(), min);
    f->DrawCopy(opt.Data());
    if (l) l->AddEntry(f, Form("%d MIP%s", i, (i>1 ? "s" : "")), "l");

    cleanup.Add(f);
  }
  min /= 100;
  if (max <= 0) max = 0.1;
  if (min <= 0) min = 1e-4;
  cpy->SetMaximum(max);
  cpy->SetMinimum(min);
  cpy->GetHistogram()->SetMaximum(max);
  cpy->GetHistogram()->SetMinimum(min);
  cpy->GetHistogram()->GetYaxis()->SetRangeUser(min, max);
  if (l) l->Draw();

  gPad->cd();
}

						 
//____________________________________________________________________
#define CHECKPAR(V,E,T) ((V > 0) && (E / V < T))

//____________________________________________________________________
Double_t
AliFMDCorrELossFit::ELossFit::GetLowerBound(Double_t f) const
{
  // 
  // Return 
  //    Delta * f
  return f * fDelta;
}
//____________________________________________________________________
Double_t
AliFMDCorrELossFit::ELossFit::GetLowerBound(Double_t f, 
					    Bool_t includeSigma) const
{
  // 
  // Return 
  //    Delta - f * (xi + sigma)
  return fDelta - f * (fXi + (includeSigma ? fSigma : 0));
}

//____________________________________________________________________
void 
AliFMDCorrELossFit::ELossFit::CalculateQuality(Double_t maxChi2nu, 
					       Double_t maxRelError, 
					       Double_t leastWeight)
{
  // 
  // Calculate the quality 
  //
  Double_t decline = maxChi2nu;
  Int_t qual = 0;
  if (fNu > 0) {
    Double_t red = fChi2 / fNu;
    if (red < maxChi2nu) qual += 4;
    else {
      Int_t q = Int_t((maxChi2nu+decline - red) / decline * 4);
      if (q > 0) qual += q;
    }
  }
  if (CHECKPAR(fDelta,  fEDelta,  maxRelError)) qual++;
  if (CHECKPAR(fXi,     fEXi,     maxRelError)) qual++;
  if (CHECKPAR(fSigma,  fESigma,  maxRelError)) qual++;
  if (CHECKPAR(fSigmaN, fESigmaN, maxRelError)) qual++;
  // Large penalty for large sigma - often a bad fit. 
  if (fSigma > 10*fXi)                          qual -= 4; 
  qual += FindMaxWeight(2*maxRelError, leastWeight, fN);
  fQuality = qual;
}

//____________________________________________________________________
AliFMDCorrELossFit::AliFMDCorrELossFit()
  : TObject(), 
    fRings(), 
    fEtaAxis(0,0,0), 
    fLowCut(0),
    fCache(0)
{
  // 
  // Default constructor 
  //
  fRings.SetOwner(kTRUE);
  fEtaAxis.SetTitle("#eta");
  fEtaAxis.SetName("etaAxis");
  fRings.SetName("rings");
}

//____________________________________________________________________
AliFMDCorrELossFit::AliFMDCorrELossFit(const AliFMDCorrELossFit& o)
  : TObject(o), 
    fRings(o.fRings),
    fEtaAxis(o.fEtaAxis.GetNbins(),o.fEtaAxis.GetXmin(),o.fEtaAxis.GetXmax()), 
    fLowCut(0),
    fCache(0)
{
  // 
  // Copy constructor 
  // 
  // Parameters:
  //    o Object to copy from 
  //
  fEtaAxis.SetTitle("#eta");
  fEtaAxis.SetName("etaAxis");
}

//____________________________________________________________________
AliFMDCorrELossFit::~AliFMDCorrELossFit()
{
  // 
  // Destructor 
  //
  fRings.Clear();
}

//____________________________________________________________________
AliFMDCorrELossFit&
AliFMDCorrELossFit::operator=(const AliFMDCorrELossFit& o)
{
  // 
  // Assignment operator 
  // 
  // Parameters:
  //    o Object to assign from 
  // 
  // Return:
  //    Reference to this object 
  //
  if (&o == this) return *this; 
  fRings = o.fRings;
  fLowCut = o.fLowCut;
  fCache  = o.fCache;
  SetEtaAxis(o.fEtaAxis.GetNbins(), o.fEtaAxis.GetXmin(), o.fEtaAxis.GetXmax());

  return *this;
}
#define CACHE(BIN,IDX,OFFSET) fCache[IDX*OFFSET+BIN-1]
#define CACHEDR(BIN,D,R,OFFSET) \
  CACHE(BIN,(D == 1 ? 0 : (D - 2) * 2 + 1 + (R=='I' || R=='i' ? 0 : 1)),OFFSET)

//____________________________________________________________________
void
AliFMDCorrELossFit::CacheBins(UShort_t minQuality) const
{
  AliLandauGaus::EnableSigmaShift(TestBit(kHasShift));
  if (fCache.GetSize() > 0) return;

  Int_t nRings = fRings.GetEntriesFast();
  Int_t offset = fEtaAxis.GetNbins();

  fCache.Set(nRings*offset);
  fCache.Reset(-1);
  
  for (Int_t i = 0; i < nRings; i++) { 
    TObjArray* ringArray  = static_cast<TObjArray*>(fRings.At(i));

    // First loop to find where we actually have fits
    Int_t nFits      = 0;
    Int_t nGood      = 0;
    Int_t minBin     = offset+1;
    Int_t maxBin     = -1;
    Int_t realMinBin = offset+1;
    Int_t realMaxBin = -1;
    for (Int_t j = 1; j < ringArray->GetEntriesFast(); j++) {
      ELossFit* fit = static_cast<ELossFit*>(ringArray->At(j));
      if (!fit) continue;
      nFits++;

      // Update our range off possible fits 
      realMinBin = TMath::Min(j, realMinBin);
      realMaxBin = TMath::Max(j, realMaxBin);
      
      // Check the quality of the fit 
      fit->CalculateQuality(AliFMDCorrELossFit::ELossFit::fgMaxChi2nu, 
			    AliFMDCorrELossFit::ELossFit::fgMaxRelError, 
			    AliFMDCorrELossFit::ELossFit::fgLeastWeight);
      if (minQuality > 0 && fit->fQuality < minQuality) continue;
      nGood++;
      
      // Check this bin 
      CACHE(j,i,offset) = j;
      minBin            = TMath::Min(j, minBin);
      maxBin            = TMath::Max(j, maxBin);
    }
    AliInfoF("Out of %d bins, %d had fits, of which %d are good (%5.1f%%)", 
	     offset, nFits, nGood, (nFits > 0 ? 100*float(nGood)/nFits : 0));
    
    // Now loop and set neighbors 
    realMinBin = TMath::Max(1,      realMinBin-1); // Include one more 
    realMaxBin = TMath::Min(offset, realMaxBin+1); // Include one more 
    for (Int_t j = realMinBin; j <= realMaxBin; j++) {
      if (CACHE(j,i,offset) > 0) continue;
      
      Int_t nK    = TMath::Max(realMaxBin - j, j - realMinBin);
      Int_t found = -1;
      for (Int_t k = 1; k <= nK; k++) {
	Int_t left  = j - k;
	Int_t right = j + k;
	if      (left  > realMinBin && 
		 CACHE(left,i,offset)  == left) found = left;
	else if (right < realMaxBin && 
		 CACHE(right,i,offset) == right) found = right;
	if (found > 0) break;
      }
      // Now check that we found something 
      if (found) CACHE(j,i,offset) = CACHE(found,i,offset);
      else AliWarningF("No fit found for etabin=%d in ring=%d", j, i);
    }
  }
}


//____________________________________________________________________
Int_t
AliFMDCorrELossFit::FindEtaBin(Double_t eta) const
{
  // 
  // Find the eta bin corresponding to the given eta 
  // 
  // Parameters:
  //    eta  Eta value 
  // 
  // Return:
  //    Bin (in @f$[1,N_{bins}]@f$) corresponding to the given
  // eta, or 0 if out of range.
  //
  if (TMath::Abs(fEtaAxis.GetXmin() - fEtaAxis.GetXmax()) < 1e-6 
      || fEtaAxis.GetNbins() == 0) {
    AliWarning("No eta axis defined");
    return -1;
  }
  Int_t bin = const_cast<TAxis&>(fEtaAxis).FindBin(eta);
  if (bin <= 0 || bin > fEtaAxis.GetNbins()) return 0;
  return bin;
}

//____________________________________________________________________
Bool_t
AliFMDCorrELossFit::SetFit(UShort_t d, Char_t r, Int_t etaBin, ELossFit* fit)
{
  // 
  // Set the fit parameters from a function 
  // 
  // Parameters:
  //    d       Detector
  //    r       Ring 
  //    etaBin  Eta (bin number, 1->nBins)
  //    f       ELoss fit result - note, the object will take ownership
  //  
  TObjArray* ringArray = GetOrMakeRingArray(d, r);
  if (!ringArray) { 
    AliError(Form("Failed to make ring array for FMD%d%c", d, r));
    return kFALSE;
  }
  if (etaBin <= 0 || etaBin >= fEtaAxis.GetNbins()+1) { 
    AliError(Form("bin=%d is out of range [%d,%d]", 
		  etaBin, 1, fEtaAxis.GetNbins()));
    return kFALSE;
  }
  // AliInfo(Form("Adding fit %p at %3d", fit, etaBin));
  ringArray->AddAtAndExpand(fit, etaBin);
  return kTRUE;
}

//____________________________________________________________________
Bool_t
AliFMDCorrELossFit::SetFit(UShort_t d, Char_t r, Double_t eta, ELossFit* fit)
{
  // 
  // Set the fit parameters from a function 
  // 
  // Parameters:
  //    d    Detector
  //    r    Ring 
  //    eta  Eta 
  //    f    ELoss fit result - note, the object will take ownership
  //  
  Int_t bin = FindEtaBin(eta);
  if (bin <= 0) { 
    AliError(Form("eta=%f is out of range [%f,%f]", 
		  eta, fEtaAxis.GetXmin(), fEtaAxis.GetXmax()));
    return kFALSE;
  }

  return SetFit(d, r, bin, fit);
}
//____________________________________________________________________
Bool_t
AliFMDCorrELossFit::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)
{
  // 
  // Set the fit parameters from a function 
  // 
  // Parameters:
  //    d         Detector number
  //    r         Ring identifier 
  //    eta       Eta value
  //    quality   Quality flag
  //    n         @f$ N@f$ - Number of fitted peaks
  //    chi2      @f$ \chi^2 @f$
  //    nu        @f$ \nu @f$ - number degrees of freedom
  //    c         @f$ C@f$ - scale constant
  //    ec        @f$ \delta C@f$ - error on @f$ C@f$ 
  //    delta     @f$ \Delta@f$ - most probable value
  //    edelta    @f$ \delta\Delta@f$ - error on @f$\Delta@f$ 
  //    xi        @f$ \xi@f$ - Landau width		  
  //    exi       @f$ \delta\xi@f$ - error on @f$\xi@f$ 
  //    sigma     @f$ \sigma@f$ - Gaussian width
  //    esigma    @f$ \delta\sigma@f$ - error on @f$\sigma@f$ 
  //    sigman    @f$ \sigma_n@f$ - Noise width		  
  //    esigman   @f$ \delta\sigma_n@f$ - error on @f$\sigma_n@f$ 
  //    a         Array of @f$ N-1@f$ weights @f$ a_i@f$ for 
  //                  @f$ i=2,\ldots@f$ 
  //    ea        Array of @f$ N-1@f$ errors on weights @f$ a_i@f$ for 
  //                  @f$ i=2,\ldots@f$ 
  //
  ELossFit* e = new ELossFit(quality, n, 
			     chi2,    nu,
			     c,       ec,
			     delta,   edelta,
			     xi,      exi,
			     sigma,   esigma,
			     sigman,  esigman,
			     a,       ea);
  if (!SetFit(d, r, eta, e)) { 
    delete e;
    return kFALSE;
  }
  return kTRUE;
}
//____________________________________________________________________
Bool_t
AliFMDCorrELossFit::SetFit(UShort_t  d, Char_t r, Double_t eta, 
			   Int_t quality, const TF1& f)
{
  // 
  // Set the fit parameters from a function 
  // 
  // Parameters:
  //    d        Detector
  //    r        Ring 
  //    eta      Eta 
  //    quality  Quality flag
  //    f        Function from fit 
  //  
  ELossFit* e = new ELossFit(quality, f);
  if (!SetFit(d, r, eta, e)) { 
    delete e;
    return kFALSE;
  }
  return kTRUE;
}
//____________________________________________________________________
AliFMDCorrELossFit::ELossFit*
AliFMDCorrELossFit::GetFit(UShort_t  d, Char_t r, Int_t etabin) const
{
  // 
  // Get the fit corresponding to the specified parameters 
  // 
  // Parameters:
  //    d      Detector 
  //    r      Ring 
  //    etabin Eta bin (1 based)
  // 
  // Return:
  //    Fit parameters or null in case of problems 
  //
  TObjArray* ringArray = GetRingArray(d, r);
  if (!ringArray)                                   return 0;
  if (etabin <= 0 || etabin >= fEtaAxis.GetNbins()) return 0;
  if      (etabin > ringArray->GetEntriesFast())    return 0;
  else if (etabin >= ringArray->GetEntriesFast())   etabin--;
  else if (!ringArray->At(etabin))                  etabin++;
  return static_cast<ELossFit*>(ringArray->At(etabin));
}
//____________________________________________________________________
AliFMDCorrELossFit::ELossFit*
AliFMDCorrELossFit::GetFit(UShort_t  d, Char_t r, Double_t eta) const
{
  // 
  // Find the fit corresponding to the specified parameters 
  // 
  // Parameters:
  //    d   Detector 
  //    r   Ring 
  //    eta Eta value 
  // 
  // Return:
  //    Fit parameters or null in case of problems 
  //
  Int_t etabin = FindEtaBin(eta);
  return GetFit(d, r, etabin);
}

//____________________________________________________________________
AliFMDCorrELossFit::ELossFit*
AliFMDCorrELossFit::FindFit(UShort_t  d, Char_t r, Int_t etabin,
			    UShort_t minQ) const
{
  // 
  // Find the fit corresponding to the specified parameters 
  // 
  // Parameters:
  //    d      Detector 
  //    r      Ring 
  //    etabin Eta bin (1 based)
  // 
  // Return:
  //    Fit parameters or null in case of problems 
  //
  if (etabin <= 0 || etabin >= fEtaAxis.GetNbins()) { 
    // AliError(Form("Eta bin=%3d out of bounds [%d,%d] for FMD%d%c", 
    //  	     etabin, 1, fEtaAxis.GetNbins(), d, r));
    return 0;
  }

  TObjArray* ringArray = GetRingArray(d, r);
  if (!ringArray) { 
    AliError(Form("Failed to make ring array for FMD%d%c", d, r));
    return 0;
  }
  DMSG(fDebug, 10, "Got ringArray %s for FMD%d%c", ringArray->GetName(), d, r);
  if (fCache.GetSize() <= 0) CacheBins(minQ);
#if 0
  Int_t idx = (d == 1 ? 0 : 
	       (d - 2) * 2 + 1 + (r=='I' || r=='i' ? 0 : 1));
#endif
  Int_t bin = CACHEDR(etabin, d, r, fEtaAxis.GetNbins());
  
  if (bin < 0 || bin > ringArray->GetEntriesFast()) return 0;
  
  return static_cast<ELossFit*>(ringArray->At(bin));
}
//____________________________________________________________________
AliFMDCorrELossFit::ELossFit*
AliFMDCorrELossFit::FindFit(UShort_t  d, Char_t r, Double_t eta,
			    UShort_t minQ) const
{
  // 
  // Find the fit corresponding to the specified parameters 
  // 
  // Parameters:
  //    d   Detector 
  //    r   Ring 
  //    eta Eta value 
  // 
  // Return:
  //    Fit parameters or null in case of problems 
  //
  Int_t etabin = FindEtaBin(eta);
  return FindFit(d, r, etabin, minQ);
}
//____________________________________________________________________
TObjArray*
AliFMDCorrELossFit::GetRingArray(UShort_t d, Char_t r) const
{
  // 
  // Get the ring array corresponding to the specified ring
  // 
  // Parameters:
  //    d Detector 
  //    r Ring 
  // 
  // Return:
  //    Pointer to ring array, or null in case of problems
  //
  Int_t idx = -1;
  switch (d) { 
  case 1:   idx = 0; break;
  case 2:   idx = (r == 'i' || r == 'I') ? 1 : 2; break;
  case 3:   idx = (r == 'i' || r == 'I') ? 3 : 4; break;
  }
  if (idx < 0 || idx >= fRings.GetEntriesFast()) return 0;
  return static_cast<TObjArray*>(fRings.At(idx));
}
//____________________________________________________________________
TObjArray*
AliFMDCorrELossFit::GetOrMakeRingArray(UShort_t d, Char_t r)
{
  // 
  // Get the ring array corresponding to the specified ring
  // 
  // Parameters:
  //    d Detector 
  //    r Ring 
  // 
  // Return:
  //    Pointer to ring array, or newly created container 
  //
  Int_t idx = -1;
  switch (d) { 
  case 1:   idx = 0; break;
  case 2:   idx = (r == 'i' || r == 'I') ? 1 : 2; break;
  case 3:   idx = (r == 'o' || r == 'I') ? 3 : 4; break;
  }
  if (idx < 0) return 0;
  if (idx >= fRings.GetEntriesFast() || !fRings.At(idx)) {
    TObjArray* a = new TObjArray(0);
    // TOrdCollection* a = new TOrdCollection(fEtaAxis.GetNbins());
    a->SetName(Form("FMD%d%c", d, r));
    a->SetOwner();
    fRings.AddAtAndExpand(a, idx);
  }
  return static_cast<TObjArray*>(fRings.At(idx));
}

//____________________________________________________________________
Double_t
AliFMDCorrELossFit::GetLowerBound(UShort_t  d, Char_t r, Int_t etabin,
				  Double_t f) const
{
  ELossFit* fit = FindFit(d, r, etabin, 20);
  if (!fit) return -1024;
  return fit->GetLowerBound(f);
}
//____________________________________________________________________
Double_t
AliFMDCorrELossFit::GetLowerBound(UShort_t  d, Char_t r, Double_t eta,
				  Double_t f) const
{
  Int_t bin = FindEtaBin(eta);
  if (bin <= 0) return -1024;
  return GetLowerBound(d, r, Int_t(bin), f);
}
//____________________________________________________________________
Double_t
AliFMDCorrELossFit::GetLowerBound(UShort_t  d, Char_t r, Int_t etabin,
				  Double_t p, Bool_t) const
{
  DGUARD(fDebug, 10, "Get probability cut for FMD%d%c etabin=%d", d, r, etabin);
  ELossFit* fit = FindFit(d, r, etabin, 20);
  if (!fit) return -1024;
  return fit->FindProbabilityCut(p);
}
//____________________________________________________________________
Double_t
AliFMDCorrELossFit::GetLowerBound(UShort_t  d, Char_t r, Double_t eta,
				  Double_t p, Bool_t dummy) const
{
  DGUARD(fDebug, 10, "Get probability cut for FMD%d%c eta=%8.4f", d, r, eta);
  Int_t bin = FindEtaBin(eta);
  DMSG(fDebug, 10, "bin=%4d", bin);
  if (bin <= 0) return -1024;
  return GetLowerBound(d, r, Int_t(bin), p, dummy);
}
//____________________________________________________________________
Double_t
AliFMDCorrELossFit::GetLowerBound(UShort_t  d, Char_t r, Int_t etabin,
				  Double_t f, Bool_t showErrors, 
				  Bool_t includeSigma) const
{
  ELossFit* fit = FindFit(d, r, etabin, 20);
  if (!fit) { 
    if (showErrors) {
      AliWarning(Form("No fit for FMD%d%c @ etabin=%d", d, r, etabin));
    }
    return -1024;
  }
  return fit->GetLowerBound(f, includeSigma);
}

//____________________________________________________________________
Double_t
AliFMDCorrELossFit::GetLowerBound(UShort_t  d, Char_t r, Double_t eta,
				  Double_t f, Bool_t showErrors, 
				  Bool_t includeSigma) const
{
  Int_t bin = FindEtaBin(eta);
  if (bin <= 0) { 
    if (showErrors)
      AliError(Form("eta=%f out of bounds for FMD%d%c", eta, d, r));
    return -1024;
  }
  return GetLowerBound(d, r, bin, f, showErrors, includeSigma);
}

//____________________________________________________________________
namespace { 
  TH1D* MakeHist(const TAxis& axis, const char* name, const char* title, 
		 Int_t color)
  {
    TH1D* h = new TH1D(Form("%s_%s", name, title), 
		       Form("%s %s", name, title), 
		       axis.GetNbins(), axis.GetXmin(), axis.GetXmax());
    h->SetDirectory(0);
    h->SetMarkerStyle(20);
    h->SetMarkerColor(color);
    h->SetMarkerSize(0.5);
    h->SetFillColor(color);
    h->SetFillStyle(3001);
    h->SetLineColor(color);
    return h;
  }
}

  

#define IDX2RING(I) (i == 0 || i == 1 || i == 3 ? 'I' : 'O')
#define IDX2DET(I)  (i == 0 ? 1 : (i == 1 || i == 2 ? 2 : 3))
//____________________________________________________________________
TList*
AliFMDCorrELossFit::GetStacks(Bool_t   err, 
			      Bool_t   rel, 
			      Bool_t   good, 
			      UShort_t maxN) const
{
  // Get a list of THStacks 
  Int_t nRings = fRings.GetEntriesFast();
  // Int_t nPad   = 6+maxN-1; // 7 regular params, and maxN-1 weights

  enum { 
    kChi2nu = 0, 
    kC      = 1, 
    kDelta  = 2, 
    kXi     = 3, 
    kSigma  = 4, 
    kN      = 5 
  };
  
  THStack* sChi2nu;
  THStack* sC;
  THStack* sDelta;
  THStack* sXi;
  THStack* sSigma;
  // THStack* sigman;
  THStack* n;
  TList* stacks = new TList;
  stacks->AddAt(sChi2nu= new THStack("chi2",   "#chi^{2}/#nu"), kChi2nu);
  stacks->AddAt(sC     = new THStack("c",       "C"),           kC);
  stacks->AddAt(sDelta = new THStack("delta",  "#Delta_{mp}"),  kDelta);
  stacks->AddAt(sXi    = new THStack("xi",     "#xi"),          kXi);
  stacks->AddAt(sSigma = new THStack("sigma",  "#sigma"),       kSigma);
  //stacks->AddAt(sigman= new THStack("sigman", "#sigma_{n}"),   5);
  stacks->AddAt(n      = new THStack("n",      "N"),            kN);
  if (rel) { 
    sChi2nu->SetName("qual");
    sChi2nu->SetTitle("Quality");
    n->SetName("good");
    n->SetTitle("Bin map");
  }
  for (Int_t i = 1; i <= maxN; i++) {
    stacks->AddAt(new THStack(Form("a_%02d", i+1), Form("a_{%d}", i+1)), kN+i);
  }
  
  // TArrayD min(nPad);
  // TArrayD max(nPad);
  // min.Reset(100000);
  // max.Reset(-100000);

  for (Int_t i = 0; i < nRings; i++) { 
    if (!fRings.At(i)) continue;
    TObjArray* a     = static_cast<TObjArray*>(fRings.At(i));
    Int_t      nFits = a->GetEntriesFast();
    UShort_t   d     = IDX2DET(i);
    Char_t     r     = IDX2RING(i);
    Int_t      color = AliForwardUtil::RingColor(d, r);

    TH1* hChi    = MakeHist(fEtaAxis,a->GetName(), "chi2",   color);
    TH1* hC      = MakeHist(fEtaAxis,a->GetName(), "c",      color);
    TH1* hDelta  = MakeHist(fEtaAxis,a->GetName(), "delta",  color);
    TH1* hXi     = MakeHist(fEtaAxis,a->GetName(), "xi",     color);
    TH1* hSigma  = MakeHist(fEtaAxis,a->GetName(), "sigma",  color);
    // TH1D* hSigmaN = MakeHist(fEtaAxis,a->GetName(), "sigman", color);
    TH1* hN      = MakeHist(fEtaAxis,a->GetName(), "n",      color);
    TH1* hA[maxN];
    const char* ho = (rel || !err ? "hist" : "e");
    sChi2nu->Add(hChi,   "hist"); // 0
    sC     ->Add(hC,     ho);     // 1
    sDelta ->Add(hDelta, ho);     // 2
    sXi    ->Add(hXi,    ho);     // 3
    sSigma ->Add(hSigma, ho);     // 4
    // sigman->Add(hSigmaN,ho);     // 5
    n     ->Add(hN,     "hist"); // 5
    hChi->SetFillColor(color);
    hChi->SetFillStyle(3001);
    hN->SetFillColor(color);
    hN->SetFillStyle(3001);

    for (Int_t k = 1; k <= maxN; k++) { 
      hA[k-1] = MakeHist(fEtaAxis,a->GetName(), Form("a%02d",k+1), color);
      static_cast<THStack*>(stacks->At(kN+k))->Add(hA[k-1], ho);
    }
    
    if (good) {
      for (Int_t j = 1; j <= fEtaAxis.GetNbins(); j++) {
	ELossFit* f = FindFit(d, r, j, 20);
	if (!f) continue;
	
	UpdateStackHist(f, rel, j, hChi, hN, hC, hDelta, hXi, hSigma, maxN, hA);
      }
    }
    else {
      for (Int_t j = 0; j < nFits; j++) {
	ELossFit* f = static_cast<ELossFit*>(a->At(j));
	if (!f) continue;
	
	UpdateStackHist(f, rel, CACHE(j,i,fEtaAxis.GetNbins()), 
			hChi, hN, hC, hDelta, hXi, hSigma, maxN, hA);
      }
    }
  }
  return stacks;
}
//____________________________________________________________________
void
AliFMDCorrELossFit::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
{
  Int_t    b      =f->fBin;
  Double_t chi2nu =(rel ? f->fQuality : (f->fNu <= 0 ? 0 : f->fChi2 / f->fNu));
  Double_t c      =(rel ? (f->fC     >0 ?f->fEC     /f->fC     :0) : f->fC);
  Double_t delta  =(rel ? (f->fDelta >0 ?f->fEDelta /f->fDelta :0) : f->fDelta);
  Double_t xi     =(rel ? (f->fXi    >0 ?f->fEXi    /f->fXi    :0) : f->fXi);
  Double_t sigma  =(rel ? (f->fSigma >0 ?f->fESigma /f->fSigma :0) : f->fSigma);
  Int_t    w      =(rel ? used : f->FindMaxWeight());
  // Double_t  sigman = (rel ? (f->fSigmaN>0 ?f->fESigmaN/f->fSigmaN :0) 
  //                     : f->SigmaN); 
  hChi   ->SetBinContent(b, chi2nu);
  hN     ->SetBinContent(b, w);
  hC     ->SetBinContent(b, c);
  hDelta ->SetBinContent(b, delta);
  hXi    ->SetBinContent(b, xi);
  hSigma ->SetBinContent(b, sigma);

  if (!rel) {
    hC     ->SetBinError(b, f->fEC);
    hDelta ->SetBinError(b, f->fEDelta);
    hXi    ->SetBinError(b, f->fEXi);
    hSigma ->SetBinError(b, f->fESigma);
    // hSigmaN->SetBinError(b, f->fESigmaN);
  }
  for (Int_t k = 0; k < f->fN-1 && k < maxN; k++) { 
    Double_t a = (rel ? (f->fA[k] > 0 ? f->fEA[k] / f->fA[k] : 0) : f->fA[k]);
    hA[k]->SetBinContent(b, a);
    if (!rel) hA[k]->SetBinError(b, f->fEA[k]);
  }
}

//____________________________________________________________________
void
AliFMDCorrELossFit::Draw(Option_t* option)
{
  // 
  // Draw this object 
  // 
  // Parameters:
  //    option Options.  Possible values are 
  //  - err Plot error bars 
  //
  TString opt(Form("nostack %s", option));
  opt.ToLower();
  Bool_t  rel = (opt.Contains("relative"));
  Bool_t  err = (opt.Contains("error"));
  Bool_t  clr = (opt.Contains("clear"));
  Bool_t  gdd = (opt.Contains("good"));
  if (rel) opt.ReplaceAll("relative","");
  if (err) opt.ReplaceAll("error","");
  if (clr) opt.ReplaceAll("clear", "");
  if (gdd) opt.ReplaceAll("good", "");

  UShort_t maxN   = 0;
  Int_t nRings = fRings.GetEntriesFast();
  for (Int_t i = 0; i < nRings; i++) { 
    if (!fRings.At(i)) continue;
    TObjArray* a     = static_cast<TObjArray*>(fRings.At(i));
    Int_t      nFits = a->GetEntriesFast();

    for (Int_t j = 0; j < nFits; j++) {
      ELossFit* fit = static_cast<ELossFit*>(a->At(j));
      if (!fit) continue;
      maxN          = TMath::Max(maxN, UShort_t(fit->fN));
    }
  }
  // AliInfo(Form("Maximum N is %d", maxN));
  Int_t nPad = 6+maxN-1; // 7 regular params, and maxN-1 weights
  TVirtualPad* pad = gPad;
  if (clr) { 
    pad->Clear();
    pad->SetTopMargin(0.02);
    pad->SetRightMargin(0.02);
    pad->SetBottomMargin(0.15);
    pad->SetLeftMargin(0.10);
  }
  pad->Divide(2, (nPad+1)/2, 0.1, 0, 0);

  TList* stacks = GetStacks(err, rel, gdd, maxN);

  Int_t nPad2 = (nPad+1) / 2;
  for (Int_t i = 0; i < nPad; i++) {
    Int_t iPad = 1 + i/nPad2 + 2 * (i % nPad2);
    TVirtualPad* p = pad->cd(iPad);
    p->SetLeftMargin(.15);
    p->SetFillColor(0);
    p->SetFillStyle(0);
    p->SetGridx();
    p->SetGridy();
    if (rel && i != 0 && i != 6 && i != 5 && i != 4) p->SetLogy();


    THStack* stack = static_cast<THStack*>(stacks->At(i));
    if (!stack->GetHists() || stack->GetHists()->GetEntries() <= 0) { 
      AliWarningF("No histograms in %s", stack->GetName());
      continue;
    }
    // Double_t powMax = TMath::Log10(max[i]);
    // Double_t powMin = min[i] <= 0 ? powMax : TMath::Log10(min[i]);
    // if (powMax-powMin > 2. && min[i] != 0) p->SetLogy();

    // stack->SetMinimum(min[i]);
    // stack->SetMaximum(max[i]);
    stack->Draw(opt.Data());

    TString tit(stack->GetTitle());
    if (rel && i != 0 && i != 5)
      tit = Form("#delta %s/%s", tit.Data(), tit.Data());
    TH1*   hist  = stack->GetHistogram();
    TAxis* yaxis = hist->GetYaxis();
    yaxis->SetTitle(tit.Data());
    yaxis->SetTitleSize(0.15);
    yaxis->SetLabelSize(0.08);
    yaxis->SetTitleOffset(0.35);
    yaxis->SetTitleFont(132);
    yaxis->SetLabelFont(132);
    yaxis->SetNdivisions(5);


    TAxis* xaxis = stack->GetHistogram()->GetXaxis();
    xaxis->SetTitle("#eta");
    xaxis->SetTitleSize(0.15);
    xaxis->SetLabelSize(0.08);
    xaxis->SetTitleOffset(0.35);
    xaxis->SetTitleFont(132);
    xaxis->SetLabelFont(132);
    xaxis->SetNdivisions(10);

    stack->Draw(opt.Data());
  }
  pad->cd();      
}

//____________________________________________________________________
void
AliFMDCorrELossFit::Print(Option_t* option) const
{
  // 
  // Print this object.  
  // 
  // Parameters:
  //    option Options 
  //   - R   Print recursive  
  //
  //
  TString opt(option);
  opt.ToUpper();
  Int_t nRings  = fRings.GetEntriesFast();
  bool  recurse = opt.Contains("R");
  bool  cache   = opt.Contains("C") && fCache.GetSize() > 0;
  Int_t nBins   = fEtaAxis.GetNbins();

  std::cout << "Low cut in fit range: " << fLowCut << "\n"
	    << "Eta axis:             " << nBins
	    << " bins, range [" << fEtaAxis.GetXmin() << "," 
	    << fEtaAxis.GetXmax() << "]" << std::endl;
  
  for (Int_t i = 0; i < nRings; i++) { 
    if (!fRings.At(i)) continue;
    TObjArray* a     = static_cast<TObjArray*>(fRings.At(i));
    Int_t      nFits = a->GetEntriesFast();

    std::cout << a->GetName() << " [" << nFits << " entries]" 
	      << (recurse ? ":\n" : "\t");
    Int_t min = fEtaAxis.GetNbins()+1;
    Int_t max = 0;
    for (Int_t j = 0; j < nFits; j++) {
      if (!a->At(j)) continue;
      
      min = TMath::Min(j, min);
      max = TMath::Max(j, max);

      if (recurse) {
	std::cout << "Bin # " << j << "\t";
	ELossFit* fit = static_cast<ELossFit*>(a->At(j));
	fit->Print(option);
      }
    }
    if (!recurse) 
      std::cout << " bin range: " << std::setw(3) << min 
		<< "-" << std::setw(3) << max << " " << std::setw(3) 
		<< (max-min+1) << " bins" << std::endl;
  }

  if (!cache) return;

  std::cout << " eta bin           |           Fit bin              \n"
	    << " #       range     | FMD1i  FMD2i  FMD2o  FMD3i  FMD3o"
    // << "----+-----+++------+-----------------------------------"
	    << std::endl;
  size_t oldPrec = std::cout.precision();
  std::cout.precision(3);
  for (Int_t i = 1; i <= nBins; i++) { 
    std::cout << std::setw(4) << i << " " 
	      << std::setw(5) << std::showpos << fEtaAxis.GetBinLowEdge(i)
	      << " - " << std::setw(5) << fEtaAxis.GetBinUpEdge(i) 
	      << std::noshowpos << " | ";
    for (Int_t j = 0; j < 5; j++) {
      Int_t bin = CACHE(i,j,nBins);
      if (bin <= 0) std::cout << "       ";
      else          std::cout << std::setw(5) << bin 
			      << (bin == i ? ' ' : '*') << ' ';
    }
    std::cout << std::endl;
  }
  std::cout.precision(oldPrec);
}

//____________________________________________________________________
void
AliFMDCorrELossFit::Browse(TBrowser* b)
{
  // 
  // Browse this object 
  // 
  // Parameters:
  //    b 
  //
  b->Add(&fRings);
  b->Add(&fEtaAxis);
}



//____________________________________________________________________
//
// EOF
//
 AliFMDCorrELossFit.cxx:1
 AliFMDCorrELossFit.cxx:2
 AliFMDCorrELossFit.cxx:3
 AliFMDCorrELossFit.cxx:4
 AliFMDCorrELossFit.cxx:5
 AliFMDCorrELossFit.cxx:6
 AliFMDCorrELossFit.cxx:7
 AliFMDCorrELossFit.cxx:8
 AliFMDCorrELossFit.cxx:9
 AliFMDCorrELossFit.cxx:10
 AliFMDCorrELossFit.cxx:11
 AliFMDCorrELossFit.cxx:12
 AliFMDCorrELossFit.cxx:13
 AliFMDCorrELossFit.cxx:14
 AliFMDCorrELossFit.cxx:15
 AliFMDCorrELossFit.cxx:16
 AliFMDCorrELossFit.cxx:17
 AliFMDCorrELossFit.cxx:18
 AliFMDCorrELossFit.cxx:19
 AliFMDCorrELossFit.cxx:20
 AliFMDCorrELossFit.cxx:21
 AliFMDCorrELossFit.cxx:22
 AliFMDCorrELossFit.cxx:23
 AliFMDCorrELossFit.cxx:24
 AliFMDCorrELossFit.cxx:25
 AliFMDCorrELossFit.cxx:26
 AliFMDCorrELossFit.cxx:27
 AliFMDCorrELossFit.cxx:28
 AliFMDCorrELossFit.cxx:29
 AliFMDCorrELossFit.cxx:30
 AliFMDCorrELossFit.cxx:31
 AliFMDCorrELossFit.cxx:32
 AliFMDCorrELossFit.cxx:33
 AliFMDCorrELossFit.cxx:34
 AliFMDCorrELossFit.cxx:35
 AliFMDCorrELossFit.cxx:36
 AliFMDCorrELossFit.cxx:37
 AliFMDCorrELossFit.cxx:38
 AliFMDCorrELossFit.cxx:39
 AliFMDCorrELossFit.cxx:40
 AliFMDCorrELossFit.cxx:41
 AliFMDCorrELossFit.cxx:42
 AliFMDCorrELossFit.cxx:43
 AliFMDCorrELossFit.cxx:44
 AliFMDCorrELossFit.cxx:45
 AliFMDCorrELossFit.cxx:46
 AliFMDCorrELossFit.cxx:47
 AliFMDCorrELossFit.cxx:48
 AliFMDCorrELossFit.cxx:49
 AliFMDCorrELossFit.cxx:50
 AliFMDCorrELossFit.cxx:51
 AliFMDCorrELossFit.cxx:52
 AliFMDCorrELossFit.cxx:53
 AliFMDCorrELossFit.cxx:54
 AliFMDCorrELossFit.cxx:55
 AliFMDCorrELossFit.cxx:56
 AliFMDCorrELossFit.cxx:57
 AliFMDCorrELossFit.cxx:58
 AliFMDCorrELossFit.cxx:59
 AliFMDCorrELossFit.cxx:60
 AliFMDCorrELossFit.cxx:61
 AliFMDCorrELossFit.cxx:62
 AliFMDCorrELossFit.cxx:63
 AliFMDCorrELossFit.cxx:64
 AliFMDCorrELossFit.cxx:65
 AliFMDCorrELossFit.cxx:66
 AliFMDCorrELossFit.cxx:67
 AliFMDCorrELossFit.cxx:68
 AliFMDCorrELossFit.cxx:69
 AliFMDCorrELossFit.cxx:70
 AliFMDCorrELossFit.cxx:71
 AliFMDCorrELossFit.cxx:72
 AliFMDCorrELossFit.cxx:73
 AliFMDCorrELossFit.cxx:74
 AliFMDCorrELossFit.cxx:75
 AliFMDCorrELossFit.cxx:76
 AliFMDCorrELossFit.cxx:77
 AliFMDCorrELossFit.cxx:78
 AliFMDCorrELossFit.cxx:79
 AliFMDCorrELossFit.cxx:80
 AliFMDCorrELossFit.cxx:81
 AliFMDCorrELossFit.cxx:82
 AliFMDCorrELossFit.cxx:83
 AliFMDCorrELossFit.cxx:84
 AliFMDCorrELossFit.cxx:85
 AliFMDCorrELossFit.cxx:86
 AliFMDCorrELossFit.cxx:87
 AliFMDCorrELossFit.cxx:88
 AliFMDCorrELossFit.cxx:89
 AliFMDCorrELossFit.cxx:90
 AliFMDCorrELossFit.cxx:91
 AliFMDCorrELossFit.cxx:92
 AliFMDCorrELossFit.cxx:93
 AliFMDCorrELossFit.cxx:94
 AliFMDCorrELossFit.cxx:95
 AliFMDCorrELossFit.cxx:96
 AliFMDCorrELossFit.cxx:97
 AliFMDCorrELossFit.cxx:98
 AliFMDCorrELossFit.cxx:99
 AliFMDCorrELossFit.cxx:100
 AliFMDCorrELossFit.cxx:101
 AliFMDCorrELossFit.cxx:102
 AliFMDCorrELossFit.cxx:103
 AliFMDCorrELossFit.cxx:104
 AliFMDCorrELossFit.cxx:105
 AliFMDCorrELossFit.cxx:106
 AliFMDCorrELossFit.cxx:107
 AliFMDCorrELossFit.cxx:108
 AliFMDCorrELossFit.cxx:109
 AliFMDCorrELossFit.cxx:110
 AliFMDCorrELossFit.cxx:111
 AliFMDCorrELossFit.cxx:112
 AliFMDCorrELossFit.cxx:113
 AliFMDCorrELossFit.cxx:114
 AliFMDCorrELossFit.cxx:115
 AliFMDCorrELossFit.cxx:116
 AliFMDCorrELossFit.cxx:117
 AliFMDCorrELossFit.cxx:118
 AliFMDCorrELossFit.cxx:119
 AliFMDCorrELossFit.cxx:120
 AliFMDCorrELossFit.cxx:121
 AliFMDCorrELossFit.cxx:122
 AliFMDCorrELossFit.cxx:123
 AliFMDCorrELossFit.cxx:124
 AliFMDCorrELossFit.cxx:125
 AliFMDCorrELossFit.cxx:126
 AliFMDCorrELossFit.cxx:127
 AliFMDCorrELossFit.cxx:128
 AliFMDCorrELossFit.cxx:129
 AliFMDCorrELossFit.cxx:130
 AliFMDCorrELossFit.cxx:131
 AliFMDCorrELossFit.cxx:132
 AliFMDCorrELossFit.cxx:133
 AliFMDCorrELossFit.cxx:134
 AliFMDCorrELossFit.cxx:135
 AliFMDCorrELossFit.cxx:136
 AliFMDCorrELossFit.cxx:137
 AliFMDCorrELossFit.cxx:138
 AliFMDCorrELossFit.cxx:139
 AliFMDCorrELossFit.cxx:140
 AliFMDCorrELossFit.cxx:141
 AliFMDCorrELossFit.cxx:142
 AliFMDCorrELossFit.cxx:143
 AliFMDCorrELossFit.cxx:144
 AliFMDCorrELossFit.cxx:145
 AliFMDCorrELossFit.cxx:146
 AliFMDCorrELossFit.cxx:147
 AliFMDCorrELossFit.cxx:148
 AliFMDCorrELossFit.cxx:149
 AliFMDCorrELossFit.cxx:150
 AliFMDCorrELossFit.cxx:151
 AliFMDCorrELossFit.cxx:152
 AliFMDCorrELossFit.cxx:153
 AliFMDCorrELossFit.cxx:154
 AliFMDCorrELossFit.cxx:155
 AliFMDCorrELossFit.cxx:156
 AliFMDCorrELossFit.cxx:157
 AliFMDCorrELossFit.cxx:158
 AliFMDCorrELossFit.cxx:159
 AliFMDCorrELossFit.cxx:160
 AliFMDCorrELossFit.cxx:161
 AliFMDCorrELossFit.cxx:162
 AliFMDCorrELossFit.cxx:163
 AliFMDCorrELossFit.cxx:164
 AliFMDCorrELossFit.cxx:165
 AliFMDCorrELossFit.cxx:166
 AliFMDCorrELossFit.cxx:167
 AliFMDCorrELossFit.cxx:168
 AliFMDCorrELossFit.cxx:169
 AliFMDCorrELossFit.cxx:170
 AliFMDCorrELossFit.cxx:171
 AliFMDCorrELossFit.cxx:172
 AliFMDCorrELossFit.cxx:173
 AliFMDCorrELossFit.cxx:174
 AliFMDCorrELossFit.cxx:175
 AliFMDCorrELossFit.cxx:176
 AliFMDCorrELossFit.cxx:177
 AliFMDCorrELossFit.cxx:178
 AliFMDCorrELossFit.cxx:179
 AliFMDCorrELossFit.cxx:180
 AliFMDCorrELossFit.cxx:181
 AliFMDCorrELossFit.cxx:182
 AliFMDCorrELossFit.cxx:183
 AliFMDCorrELossFit.cxx:184
 AliFMDCorrELossFit.cxx:185
 AliFMDCorrELossFit.cxx:186
 AliFMDCorrELossFit.cxx:187
 AliFMDCorrELossFit.cxx:188
 AliFMDCorrELossFit.cxx:189
 AliFMDCorrELossFit.cxx:190
 AliFMDCorrELossFit.cxx:191
 AliFMDCorrELossFit.cxx:192
 AliFMDCorrELossFit.cxx:193
 AliFMDCorrELossFit.cxx:194
 AliFMDCorrELossFit.cxx:195
 AliFMDCorrELossFit.cxx:196
 AliFMDCorrELossFit.cxx:197
 AliFMDCorrELossFit.cxx:198
 AliFMDCorrELossFit.cxx:199
 AliFMDCorrELossFit.cxx:200
 AliFMDCorrELossFit.cxx:201
 AliFMDCorrELossFit.cxx:202
 AliFMDCorrELossFit.cxx:203
 AliFMDCorrELossFit.cxx:204
 AliFMDCorrELossFit.cxx:205
 AliFMDCorrELossFit.cxx:206
 AliFMDCorrELossFit.cxx:207
 AliFMDCorrELossFit.cxx:208
 AliFMDCorrELossFit.cxx:209
 AliFMDCorrELossFit.cxx:210
 AliFMDCorrELossFit.cxx:211
 AliFMDCorrELossFit.cxx:212
 AliFMDCorrELossFit.cxx:213
 AliFMDCorrELossFit.cxx:214
 AliFMDCorrELossFit.cxx:215
 AliFMDCorrELossFit.cxx:216
 AliFMDCorrELossFit.cxx:217
 AliFMDCorrELossFit.cxx:218
 AliFMDCorrELossFit.cxx:219
 AliFMDCorrELossFit.cxx:220
 AliFMDCorrELossFit.cxx:221
 AliFMDCorrELossFit.cxx:222
 AliFMDCorrELossFit.cxx:223
 AliFMDCorrELossFit.cxx:224
 AliFMDCorrELossFit.cxx:225
 AliFMDCorrELossFit.cxx:226
 AliFMDCorrELossFit.cxx:227
 AliFMDCorrELossFit.cxx:228
 AliFMDCorrELossFit.cxx:229
 AliFMDCorrELossFit.cxx:230
 AliFMDCorrELossFit.cxx:231
 AliFMDCorrELossFit.cxx:232
 AliFMDCorrELossFit.cxx:233
 AliFMDCorrELossFit.cxx:234
 AliFMDCorrELossFit.cxx:235
 AliFMDCorrELossFit.cxx:236
 AliFMDCorrELossFit.cxx:237
 AliFMDCorrELossFit.cxx:238
 AliFMDCorrELossFit.cxx:239
 AliFMDCorrELossFit.cxx:240
 AliFMDCorrELossFit.cxx:241
 AliFMDCorrELossFit.cxx:242
 AliFMDCorrELossFit.cxx:243
 AliFMDCorrELossFit.cxx:244
 AliFMDCorrELossFit.cxx:245
 AliFMDCorrELossFit.cxx:246
 AliFMDCorrELossFit.cxx:247
 AliFMDCorrELossFit.cxx:248
 AliFMDCorrELossFit.cxx:249
 AliFMDCorrELossFit.cxx:250
 AliFMDCorrELossFit.cxx:251
 AliFMDCorrELossFit.cxx:252
 AliFMDCorrELossFit.cxx:253
 AliFMDCorrELossFit.cxx:254
 AliFMDCorrELossFit.cxx:255
 AliFMDCorrELossFit.cxx:256
 AliFMDCorrELossFit.cxx:257
 AliFMDCorrELossFit.cxx:258
 AliFMDCorrELossFit.cxx:259
 AliFMDCorrELossFit.cxx:260
 AliFMDCorrELossFit.cxx:261
 AliFMDCorrELossFit.cxx:262
 AliFMDCorrELossFit.cxx:263
 AliFMDCorrELossFit.cxx:264
 AliFMDCorrELossFit.cxx:265
 AliFMDCorrELossFit.cxx:266
 AliFMDCorrELossFit.cxx:267
 AliFMDCorrELossFit.cxx:268
 AliFMDCorrELossFit.cxx:269
 AliFMDCorrELossFit.cxx:270
 AliFMDCorrELossFit.cxx:271
 AliFMDCorrELossFit.cxx:272
 AliFMDCorrELossFit.cxx:273
 AliFMDCorrELossFit.cxx:274
 AliFMDCorrELossFit.cxx:275
 AliFMDCorrELossFit.cxx:276
 AliFMDCorrELossFit.cxx:277
 AliFMDCorrELossFit.cxx:278
 AliFMDCorrELossFit.cxx:279
 AliFMDCorrELossFit.cxx:280
 AliFMDCorrELossFit.cxx:281
 AliFMDCorrELossFit.cxx:282
 AliFMDCorrELossFit.cxx:283
 AliFMDCorrELossFit.cxx:284
 AliFMDCorrELossFit.cxx:285
 AliFMDCorrELossFit.cxx:286
 AliFMDCorrELossFit.cxx:287
 AliFMDCorrELossFit.cxx:288
 AliFMDCorrELossFit.cxx:289
 AliFMDCorrELossFit.cxx:290
 AliFMDCorrELossFit.cxx:291
 AliFMDCorrELossFit.cxx:292
 AliFMDCorrELossFit.cxx:293
 AliFMDCorrELossFit.cxx:294
 AliFMDCorrELossFit.cxx:295
 AliFMDCorrELossFit.cxx:296
 AliFMDCorrELossFit.cxx:297
 AliFMDCorrELossFit.cxx:298
 AliFMDCorrELossFit.cxx:299
 AliFMDCorrELossFit.cxx:300
 AliFMDCorrELossFit.cxx:301
 AliFMDCorrELossFit.cxx:302
 AliFMDCorrELossFit.cxx:303
 AliFMDCorrELossFit.cxx:304
 AliFMDCorrELossFit.cxx:305
 AliFMDCorrELossFit.cxx:306
 AliFMDCorrELossFit.cxx:307
 AliFMDCorrELossFit.cxx:308
 AliFMDCorrELossFit.cxx:309
 AliFMDCorrELossFit.cxx:310
 AliFMDCorrELossFit.cxx:311
 AliFMDCorrELossFit.cxx:312
 AliFMDCorrELossFit.cxx:313
 AliFMDCorrELossFit.cxx:314
 AliFMDCorrELossFit.cxx:315
 AliFMDCorrELossFit.cxx:316
 AliFMDCorrELossFit.cxx:317
 AliFMDCorrELossFit.cxx:318
 AliFMDCorrELossFit.cxx:319
 AliFMDCorrELossFit.cxx:320
 AliFMDCorrELossFit.cxx:321
 AliFMDCorrELossFit.cxx:322
 AliFMDCorrELossFit.cxx:323
 AliFMDCorrELossFit.cxx:324
 AliFMDCorrELossFit.cxx:325
 AliFMDCorrELossFit.cxx:326
 AliFMDCorrELossFit.cxx:327
 AliFMDCorrELossFit.cxx:328
 AliFMDCorrELossFit.cxx:329
 AliFMDCorrELossFit.cxx:330
 AliFMDCorrELossFit.cxx:331
 AliFMDCorrELossFit.cxx:332
 AliFMDCorrELossFit.cxx:333
 AliFMDCorrELossFit.cxx:334
 AliFMDCorrELossFit.cxx:335
 AliFMDCorrELossFit.cxx:336
 AliFMDCorrELossFit.cxx:337
 AliFMDCorrELossFit.cxx:338
 AliFMDCorrELossFit.cxx:339
 AliFMDCorrELossFit.cxx:340
 AliFMDCorrELossFit.cxx:341
 AliFMDCorrELossFit.cxx:342
 AliFMDCorrELossFit.cxx:343
 AliFMDCorrELossFit.cxx:344
 AliFMDCorrELossFit.cxx:345
 AliFMDCorrELossFit.cxx:346
 AliFMDCorrELossFit.cxx:347
 AliFMDCorrELossFit.cxx:348
 AliFMDCorrELossFit.cxx:349
 AliFMDCorrELossFit.cxx:350
 AliFMDCorrELossFit.cxx:351
 AliFMDCorrELossFit.cxx:352
 AliFMDCorrELossFit.cxx:353
 AliFMDCorrELossFit.cxx:354
 AliFMDCorrELossFit.cxx:355
 AliFMDCorrELossFit.cxx:356
 AliFMDCorrELossFit.cxx:357
 AliFMDCorrELossFit.cxx:358
 AliFMDCorrELossFit.cxx:359
 AliFMDCorrELossFit.cxx:360
 AliFMDCorrELossFit.cxx:361
 AliFMDCorrELossFit.cxx:362
 AliFMDCorrELossFit.cxx:363
 AliFMDCorrELossFit.cxx:364
 AliFMDCorrELossFit.cxx:365
 AliFMDCorrELossFit.cxx:366
 AliFMDCorrELossFit.cxx:367
 AliFMDCorrELossFit.cxx:368
 AliFMDCorrELossFit.cxx:369
 AliFMDCorrELossFit.cxx:370
 AliFMDCorrELossFit.cxx:371
 AliFMDCorrELossFit.cxx:372
 AliFMDCorrELossFit.cxx:373
 AliFMDCorrELossFit.cxx:374
 AliFMDCorrELossFit.cxx:375
 AliFMDCorrELossFit.cxx:376
 AliFMDCorrELossFit.cxx:377
 AliFMDCorrELossFit.cxx:378
 AliFMDCorrELossFit.cxx:379
 AliFMDCorrELossFit.cxx:380
 AliFMDCorrELossFit.cxx:381
 AliFMDCorrELossFit.cxx:382
 AliFMDCorrELossFit.cxx:383
 AliFMDCorrELossFit.cxx:384
 AliFMDCorrELossFit.cxx:385
 AliFMDCorrELossFit.cxx:386
 AliFMDCorrELossFit.cxx:387
 AliFMDCorrELossFit.cxx:388
 AliFMDCorrELossFit.cxx:389
 AliFMDCorrELossFit.cxx:390
 AliFMDCorrELossFit.cxx:391
 AliFMDCorrELossFit.cxx:392
 AliFMDCorrELossFit.cxx:393
 AliFMDCorrELossFit.cxx:394
 AliFMDCorrELossFit.cxx:395
 AliFMDCorrELossFit.cxx:396
 AliFMDCorrELossFit.cxx:397
 AliFMDCorrELossFit.cxx:398
 AliFMDCorrELossFit.cxx:399
 AliFMDCorrELossFit.cxx:400
 AliFMDCorrELossFit.cxx:401
 AliFMDCorrELossFit.cxx:402
 AliFMDCorrELossFit.cxx:403
 AliFMDCorrELossFit.cxx:404
 AliFMDCorrELossFit.cxx:405
 AliFMDCorrELossFit.cxx:406
 AliFMDCorrELossFit.cxx:407
 AliFMDCorrELossFit.cxx:408
 AliFMDCorrELossFit.cxx:409
 AliFMDCorrELossFit.cxx:410
 AliFMDCorrELossFit.cxx:411
 AliFMDCorrELossFit.cxx:412
 AliFMDCorrELossFit.cxx:413
 AliFMDCorrELossFit.cxx:414
 AliFMDCorrELossFit.cxx:415
 AliFMDCorrELossFit.cxx:416
 AliFMDCorrELossFit.cxx:417
 AliFMDCorrELossFit.cxx:418
 AliFMDCorrELossFit.cxx:419
 AliFMDCorrELossFit.cxx:420
 AliFMDCorrELossFit.cxx:421
 AliFMDCorrELossFit.cxx:422
 AliFMDCorrELossFit.cxx:423
 AliFMDCorrELossFit.cxx:424
 AliFMDCorrELossFit.cxx:425
 AliFMDCorrELossFit.cxx:426
 AliFMDCorrELossFit.cxx:427
 AliFMDCorrELossFit.cxx:428
 AliFMDCorrELossFit.cxx:429
 AliFMDCorrELossFit.cxx:430
 AliFMDCorrELossFit.cxx:431
 AliFMDCorrELossFit.cxx:432
 AliFMDCorrELossFit.cxx:433
 AliFMDCorrELossFit.cxx:434
 AliFMDCorrELossFit.cxx:435
 AliFMDCorrELossFit.cxx:436
 AliFMDCorrELossFit.cxx:437
 AliFMDCorrELossFit.cxx:438
 AliFMDCorrELossFit.cxx:439
 AliFMDCorrELossFit.cxx:440
 AliFMDCorrELossFit.cxx:441
 AliFMDCorrELossFit.cxx:442
 AliFMDCorrELossFit.cxx:443
 AliFMDCorrELossFit.cxx:444
 AliFMDCorrELossFit.cxx:445
 AliFMDCorrELossFit.cxx:446
 AliFMDCorrELossFit.cxx:447
 AliFMDCorrELossFit.cxx:448
 AliFMDCorrELossFit.cxx:449
 AliFMDCorrELossFit.cxx:450
 AliFMDCorrELossFit.cxx:451
 AliFMDCorrELossFit.cxx:452
 AliFMDCorrELossFit.cxx:453
 AliFMDCorrELossFit.cxx:454
 AliFMDCorrELossFit.cxx:455
 AliFMDCorrELossFit.cxx:456
 AliFMDCorrELossFit.cxx:457
 AliFMDCorrELossFit.cxx:458
 AliFMDCorrELossFit.cxx:459
 AliFMDCorrELossFit.cxx:460
 AliFMDCorrELossFit.cxx:461
 AliFMDCorrELossFit.cxx:462
 AliFMDCorrELossFit.cxx:463
 AliFMDCorrELossFit.cxx:464
 AliFMDCorrELossFit.cxx:465
 AliFMDCorrELossFit.cxx:466
 AliFMDCorrELossFit.cxx:467
 AliFMDCorrELossFit.cxx:468
 AliFMDCorrELossFit.cxx:469
 AliFMDCorrELossFit.cxx:470
 AliFMDCorrELossFit.cxx:471
 AliFMDCorrELossFit.cxx:472
 AliFMDCorrELossFit.cxx:473
 AliFMDCorrELossFit.cxx:474
 AliFMDCorrELossFit.cxx:475
 AliFMDCorrELossFit.cxx:476
 AliFMDCorrELossFit.cxx:477
 AliFMDCorrELossFit.cxx:478
 AliFMDCorrELossFit.cxx:479
 AliFMDCorrELossFit.cxx:480
 AliFMDCorrELossFit.cxx:481
 AliFMDCorrELossFit.cxx:482
 AliFMDCorrELossFit.cxx:483
 AliFMDCorrELossFit.cxx:484
 AliFMDCorrELossFit.cxx:485
 AliFMDCorrELossFit.cxx:486
 AliFMDCorrELossFit.cxx:487
 AliFMDCorrELossFit.cxx:488
 AliFMDCorrELossFit.cxx:489
 AliFMDCorrELossFit.cxx:490
 AliFMDCorrELossFit.cxx:491
 AliFMDCorrELossFit.cxx:492
 AliFMDCorrELossFit.cxx:493
 AliFMDCorrELossFit.cxx:494
 AliFMDCorrELossFit.cxx:495
 AliFMDCorrELossFit.cxx:496
 AliFMDCorrELossFit.cxx:497
 AliFMDCorrELossFit.cxx:498
 AliFMDCorrELossFit.cxx:499
 AliFMDCorrELossFit.cxx:500
 AliFMDCorrELossFit.cxx:501
 AliFMDCorrELossFit.cxx:502
 AliFMDCorrELossFit.cxx:503
 AliFMDCorrELossFit.cxx:504
 AliFMDCorrELossFit.cxx:505
 AliFMDCorrELossFit.cxx:506
 AliFMDCorrELossFit.cxx:507
 AliFMDCorrELossFit.cxx:508
 AliFMDCorrELossFit.cxx:509
 AliFMDCorrELossFit.cxx:510
 AliFMDCorrELossFit.cxx:511
 AliFMDCorrELossFit.cxx:512
 AliFMDCorrELossFit.cxx:513
 AliFMDCorrELossFit.cxx:514
 AliFMDCorrELossFit.cxx:515
 AliFMDCorrELossFit.cxx:516
 AliFMDCorrELossFit.cxx:517
 AliFMDCorrELossFit.cxx:518
 AliFMDCorrELossFit.cxx:519
 AliFMDCorrELossFit.cxx:520
 AliFMDCorrELossFit.cxx:521
 AliFMDCorrELossFit.cxx:522
 AliFMDCorrELossFit.cxx:523
 AliFMDCorrELossFit.cxx:524
 AliFMDCorrELossFit.cxx:525
 AliFMDCorrELossFit.cxx:526
 AliFMDCorrELossFit.cxx:527
 AliFMDCorrELossFit.cxx:528
 AliFMDCorrELossFit.cxx:529
 AliFMDCorrELossFit.cxx:530
 AliFMDCorrELossFit.cxx:531
 AliFMDCorrELossFit.cxx:532
 AliFMDCorrELossFit.cxx:533
 AliFMDCorrELossFit.cxx:534
 AliFMDCorrELossFit.cxx:535
 AliFMDCorrELossFit.cxx:536
 AliFMDCorrELossFit.cxx:537
 AliFMDCorrELossFit.cxx:538
 AliFMDCorrELossFit.cxx:539
 AliFMDCorrELossFit.cxx:540
 AliFMDCorrELossFit.cxx:541
 AliFMDCorrELossFit.cxx:542
 AliFMDCorrELossFit.cxx:543
 AliFMDCorrELossFit.cxx:544
 AliFMDCorrELossFit.cxx:545
 AliFMDCorrELossFit.cxx:546
 AliFMDCorrELossFit.cxx:547
 AliFMDCorrELossFit.cxx:548
 AliFMDCorrELossFit.cxx:549
 AliFMDCorrELossFit.cxx:550
 AliFMDCorrELossFit.cxx:551
 AliFMDCorrELossFit.cxx:552
 AliFMDCorrELossFit.cxx:553
 AliFMDCorrELossFit.cxx:554
 AliFMDCorrELossFit.cxx:555
 AliFMDCorrELossFit.cxx:556
 AliFMDCorrELossFit.cxx:557
 AliFMDCorrELossFit.cxx:558
 AliFMDCorrELossFit.cxx:559
 AliFMDCorrELossFit.cxx:560
 AliFMDCorrELossFit.cxx:561
 AliFMDCorrELossFit.cxx:562
 AliFMDCorrELossFit.cxx:563
 AliFMDCorrELossFit.cxx:564
 AliFMDCorrELossFit.cxx:565
 AliFMDCorrELossFit.cxx:566
 AliFMDCorrELossFit.cxx:567
 AliFMDCorrELossFit.cxx:568
 AliFMDCorrELossFit.cxx:569
 AliFMDCorrELossFit.cxx:570
 AliFMDCorrELossFit.cxx:571
 AliFMDCorrELossFit.cxx:572
 AliFMDCorrELossFit.cxx:573
 AliFMDCorrELossFit.cxx:574
 AliFMDCorrELossFit.cxx:575
 AliFMDCorrELossFit.cxx:576
 AliFMDCorrELossFit.cxx:577
 AliFMDCorrELossFit.cxx:578
 AliFMDCorrELossFit.cxx:579
 AliFMDCorrELossFit.cxx:580
 AliFMDCorrELossFit.cxx:581
 AliFMDCorrELossFit.cxx:582
 AliFMDCorrELossFit.cxx:583
 AliFMDCorrELossFit.cxx:584
 AliFMDCorrELossFit.cxx:585
 AliFMDCorrELossFit.cxx:586
 AliFMDCorrELossFit.cxx:587
 AliFMDCorrELossFit.cxx:588
 AliFMDCorrELossFit.cxx:589
 AliFMDCorrELossFit.cxx:590
 AliFMDCorrELossFit.cxx:591
 AliFMDCorrELossFit.cxx:592
 AliFMDCorrELossFit.cxx:593
 AliFMDCorrELossFit.cxx:594
 AliFMDCorrELossFit.cxx:595
 AliFMDCorrELossFit.cxx:596
 AliFMDCorrELossFit.cxx:597
 AliFMDCorrELossFit.cxx:598
 AliFMDCorrELossFit.cxx:599
 AliFMDCorrELossFit.cxx:600
 AliFMDCorrELossFit.cxx:601
 AliFMDCorrELossFit.cxx:602
 AliFMDCorrELossFit.cxx:603
 AliFMDCorrELossFit.cxx:604
 AliFMDCorrELossFit.cxx:605
 AliFMDCorrELossFit.cxx:606
 AliFMDCorrELossFit.cxx:607
 AliFMDCorrELossFit.cxx:608
 AliFMDCorrELossFit.cxx:609
 AliFMDCorrELossFit.cxx:610
 AliFMDCorrELossFit.cxx:611
 AliFMDCorrELossFit.cxx:612
 AliFMDCorrELossFit.cxx:613
 AliFMDCorrELossFit.cxx:614
 AliFMDCorrELossFit.cxx:615
 AliFMDCorrELossFit.cxx:616
 AliFMDCorrELossFit.cxx:617
 AliFMDCorrELossFit.cxx:618
 AliFMDCorrELossFit.cxx:619
 AliFMDCorrELossFit.cxx:620
 AliFMDCorrELossFit.cxx:621
 AliFMDCorrELossFit.cxx:622
 AliFMDCorrELossFit.cxx:623
 AliFMDCorrELossFit.cxx:624
 AliFMDCorrELossFit.cxx:625
 AliFMDCorrELossFit.cxx:626
 AliFMDCorrELossFit.cxx:627
 AliFMDCorrELossFit.cxx:628
 AliFMDCorrELossFit.cxx:629
 AliFMDCorrELossFit.cxx:630
 AliFMDCorrELossFit.cxx:631
 AliFMDCorrELossFit.cxx:632
 AliFMDCorrELossFit.cxx:633
 AliFMDCorrELossFit.cxx:634
 AliFMDCorrELossFit.cxx:635
 AliFMDCorrELossFit.cxx:636
 AliFMDCorrELossFit.cxx:637
 AliFMDCorrELossFit.cxx:638
 AliFMDCorrELossFit.cxx:639
 AliFMDCorrELossFit.cxx:640
 AliFMDCorrELossFit.cxx:641
 AliFMDCorrELossFit.cxx:642
 AliFMDCorrELossFit.cxx:643
 AliFMDCorrELossFit.cxx:644
 AliFMDCorrELossFit.cxx:645
 AliFMDCorrELossFit.cxx:646
 AliFMDCorrELossFit.cxx:647
 AliFMDCorrELossFit.cxx:648
 AliFMDCorrELossFit.cxx:649
 AliFMDCorrELossFit.cxx:650
 AliFMDCorrELossFit.cxx:651
 AliFMDCorrELossFit.cxx:652
 AliFMDCorrELossFit.cxx:653
 AliFMDCorrELossFit.cxx:654
 AliFMDCorrELossFit.cxx:655
 AliFMDCorrELossFit.cxx:656
 AliFMDCorrELossFit.cxx:657
 AliFMDCorrELossFit.cxx:658
 AliFMDCorrELossFit.cxx:659
 AliFMDCorrELossFit.cxx:660
 AliFMDCorrELossFit.cxx:661
 AliFMDCorrELossFit.cxx:662
 AliFMDCorrELossFit.cxx:663
 AliFMDCorrELossFit.cxx:664
 AliFMDCorrELossFit.cxx:665
 AliFMDCorrELossFit.cxx:666
 AliFMDCorrELossFit.cxx:667
 AliFMDCorrELossFit.cxx:668
 AliFMDCorrELossFit.cxx:669
 AliFMDCorrELossFit.cxx:670
 AliFMDCorrELossFit.cxx:671
 AliFMDCorrELossFit.cxx:672
 AliFMDCorrELossFit.cxx:673
 AliFMDCorrELossFit.cxx:674
 AliFMDCorrELossFit.cxx:675
 AliFMDCorrELossFit.cxx:676
 AliFMDCorrELossFit.cxx:677
 AliFMDCorrELossFit.cxx:678
 AliFMDCorrELossFit.cxx:679
 AliFMDCorrELossFit.cxx:680
 AliFMDCorrELossFit.cxx:681
 AliFMDCorrELossFit.cxx:682
 AliFMDCorrELossFit.cxx:683
 AliFMDCorrELossFit.cxx:684
 AliFMDCorrELossFit.cxx:685
 AliFMDCorrELossFit.cxx:686
 AliFMDCorrELossFit.cxx:687
 AliFMDCorrELossFit.cxx:688
 AliFMDCorrELossFit.cxx:689
 AliFMDCorrELossFit.cxx:690
 AliFMDCorrELossFit.cxx:691
 AliFMDCorrELossFit.cxx:692
 AliFMDCorrELossFit.cxx:693
 AliFMDCorrELossFit.cxx:694
 AliFMDCorrELossFit.cxx:695
 AliFMDCorrELossFit.cxx:696
 AliFMDCorrELossFit.cxx:697
 AliFMDCorrELossFit.cxx:698
 AliFMDCorrELossFit.cxx:699
 AliFMDCorrELossFit.cxx:700
 AliFMDCorrELossFit.cxx:701
 AliFMDCorrELossFit.cxx:702
 AliFMDCorrELossFit.cxx:703
 AliFMDCorrELossFit.cxx:704
 AliFMDCorrELossFit.cxx:705
 AliFMDCorrELossFit.cxx:706
 AliFMDCorrELossFit.cxx:707
 AliFMDCorrELossFit.cxx:708
 AliFMDCorrELossFit.cxx:709
 AliFMDCorrELossFit.cxx:710
 AliFMDCorrELossFit.cxx:711
 AliFMDCorrELossFit.cxx:712
 AliFMDCorrELossFit.cxx:713
 AliFMDCorrELossFit.cxx:714
 AliFMDCorrELossFit.cxx:715
 AliFMDCorrELossFit.cxx:716
 AliFMDCorrELossFit.cxx:717
 AliFMDCorrELossFit.cxx:718
 AliFMDCorrELossFit.cxx:719
 AliFMDCorrELossFit.cxx:720
 AliFMDCorrELossFit.cxx:721
 AliFMDCorrELossFit.cxx:722
 AliFMDCorrELossFit.cxx:723
 AliFMDCorrELossFit.cxx:724
 AliFMDCorrELossFit.cxx:725
 AliFMDCorrELossFit.cxx:726
 AliFMDCorrELossFit.cxx:727
 AliFMDCorrELossFit.cxx:728
 AliFMDCorrELossFit.cxx:729
 AliFMDCorrELossFit.cxx:730
 AliFMDCorrELossFit.cxx:731
 AliFMDCorrELossFit.cxx:732
 AliFMDCorrELossFit.cxx:733
 AliFMDCorrELossFit.cxx:734
 AliFMDCorrELossFit.cxx:735
 AliFMDCorrELossFit.cxx:736
 AliFMDCorrELossFit.cxx:737
 AliFMDCorrELossFit.cxx:738
 AliFMDCorrELossFit.cxx:739
 AliFMDCorrELossFit.cxx:740
 AliFMDCorrELossFit.cxx:741
 AliFMDCorrELossFit.cxx:742
 AliFMDCorrELossFit.cxx:743
 AliFMDCorrELossFit.cxx:744
 AliFMDCorrELossFit.cxx:745
 AliFMDCorrELossFit.cxx:746
 AliFMDCorrELossFit.cxx:747
 AliFMDCorrELossFit.cxx:748
 AliFMDCorrELossFit.cxx:749
 AliFMDCorrELossFit.cxx:750
 AliFMDCorrELossFit.cxx:751
 AliFMDCorrELossFit.cxx:752
 AliFMDCorrELossFit.cxx:753
 AliFMDCorrELossFit.cxx:754
 AliFMDCorrELossFit.cxx:755
 AliFMDCorrELossFit.cxx:756
 AliFMDCorrELossFit.cxx:757
 AliFMDCorrELossFit.cxx:758
 AliFMDCorrELossFit.cxx:759
 AliFMDCorrELossFit.cxx:760
 AliFMDCorrELossFit.cxx:761
 AliFMDCorrELossFit.cxx:762
 AliFMDCorrELossFit.cxx:763
 AliFMDCorrELossFit.cxx:764
 AliFMDCorrELossFit.cxx:765
 AliFMDCorrELossFit.cxx:766
 AliFMDCorrELossFit.cxx:767
 AliFMDCorrELossFit.cxx:768
 AliFMDCorrELossFit.cxx:769
 AliFMDCorrELossFit.cxx:770
 AliFMDCorrELossFit.cxx:771
 AliFMDCorrELossFit.cxx:772
 AliFMDCorrELossFit.cxx:773
 AliFMDCorrELossFit.cxx:774
 AliFMDCorrELossFit.cxx:775
 AliFMDCorrELossFit.cxx:776
 AliFMDCorrELossFit.cxx:777
 AliFMDCorrELossFit.cxx:778
 AliFMDCorrELossFit.cxx:779
 AliFMDCorrELossFit.cxx:780
 AliFMDCorrELossFit.cxx:781
 AliFMDCorrELossFit.cxx:782
 AliFMDCorrELossFit.cxx:783
 AliFMDCorrELossFit.cxx:784
 AliFMDCorrELossFit.cxx:785
 AliFMDCorrELossFit.cxx:786
 AliFMDCorrELossFit.cxx:787
 AliFMDCorrELossFit.cxx:788
 AliFMDCorrELossFit.cxx:789
 AliFMDCorrELossFit.cxx:790
 AliFMDCorrELossFit.cxx:791
 AliFMDCorrELossFit.cxx:792
 AliFMDCorrELossFit.cxx:793
 AliFMDCorrELossFit.cxx:794
 AliFMDCorrELossFit.cxx:795
 AliFMDCorrELossFit.cxx:796
 AliFMDCorrELossFit.cxx:797
 AliFMDCorrELossFit.cxx:798
 AliFMDCorrELossFit.cxx:799
 AliFMDCorrELossFit.cxx:800
 AliFMDCorrELossFit.cxx:801
 AliFMDCorrELossFit.cxx:802
 AliFMDCorrELossFit.cxx:803
 AliFMDCorrELossFit.cxx:804
 AliFMDCorrELossFit.cxx:805
 AliFMDCorrELossFit.cxx:806
 AliFMDCorrELossFit.cxx:807
 AliFMDCorrELossFit.cxx:808
 AliFMDCorrELossFit.cxx:809
 AliFMDCorrELossFit.cxx:810
 AliFMDCorrELossFit.cxx:811
 AliFMDCorrELossFit.cxx:812
 AliFMDCorrELossFit.cxx:813
 AliFMDCorrELossFit.cxx:814
 AliFMDCorrELossFit.cxx:815
 AliFMDCorrELossFit.cxx:816
 AliFMDCorrELossFit.cxx:817
 AliFMDCorrELossFit.cxx:818
 AliFMDCorrELossFit.cxx:819
 AliFMDCorrELossFit.cxx:820
 AliFMDCorrELossFit.cxx:821
 AliFMDCorrELossFit.cxx:822
 AliFMDCorrELossFit.cxx:823
 AliFMDCorrELossFit.cxx:824
 AliFMDCorrELossFit.cxx:825
 AliFMDCorrELossFit.cxx:826
 AliFMDCorrELossFit.cxx:827
 AliFMDCorrELossFit.cxx:828
 AliFMDCorrELossFit.cxx:829
 AliFMDCorrELossFit.cxx:830
 AliFMDCorrELossFit.cxx:831
 AliFMDCorrELossFit.cxx:832
 AliFMDCorrELossFit.cxx:833
 AliFMDCorrELossFit.cxx:834
 AliFMDCorrELossFit.cxx:835
 AliFMDCorrELossFit.cxx:836
 AliFMDCorrELossFit.cxx:837
 AliFMDCorrELossFit.cxx:838
 AliFMDCorrELossFit.cxx:839
 AliFMDCorrELossFit.cxx:840
 AliFMDCorrELossFit.cxx:841
 AliFMDCorrELossFit.cxx:842
 AliFMDCorrELossFit.cxx:843
 AliFMDCorrELossFit.cxx:844
 AliFMDCorrELossFit.cxx:845
 AliFMDCorrELossFit.cxx:846
 AliFMDCorrELossFit.cxx:847
 AliFMDCorrELossFit.cxx:848
 AliFMDCorrELossFit.cxx:849
 AliFMDCorrELossFit.cxx:850
 AliFMDCorrELossFit.cxx:851
 AliFMDCorrELossFit.cxx:852
 AliFMDCorrELossFit.cxx:853
 AliFMDCorrELossFit.cxx:854
 AliFMDCorrELossFit.cxx:855
 AliFMDCorrELossFit.cxx:856
 AliFMDCorrELossFit.cxx:857
 AliFMDCorrELossFit.cxx:858
 AliFMDCorrELossFit.cxx:859
 AliFMDCorrELossFit.cxx:860
 AliFMDCorrELossFit.cxx:861
 AliFMDCorrELossFit.cxx:862
 AliFMDCorrELossFit.cxx:863
 AliFMDCorrELossFit.cxx:864
 AliFMDCorrELossFit.cxx:865
 AliFMDCorrELossFit.cxx:866
 AliFMDCorrELossFit.cxx:867
 AliFMDCorrELossFit.cxx:868
 AliFMDCorrELossFit.cxx:869
 AliFMDCorrELossFit.cxx:870
 AliFMDCorrELossFit.cxx:871
 AliFMDCorrELossFit.cxx:872
 AliFMDCorrELossFit.cxx:873
 AliFMDCorrELossFit.cxx:874
 AliFMDCorrELossFit.cxx:875
 AliFMDCorrELossFit.cxx:876
 AliFMDCorrELossFit.cxx:877
 AliFMDCorrELossFit.cxx:878
 AliFMDCorrELossFit.cxx:879
 AliFMDCorrELossFit.cxx:880
 AliFMDCorrELossFit.cxx:881
 AliFMDCorrELossFit.cxx:882
 AliFMDCorrELossFit.cxx:883
 AliFMDCorrELossFit.cxx:884
 AliFMDCorrELossFit.cxx:885
 AliFMDCorrELossFit.cxx:886
 AliFMDCorrELossFit.cxx:887
 AliFMDCorrELossFit.cxx:888
 AliFMDCorrELossFit.cxx:889
 AliFMDCorrELossFit.cxx:890
 AliFMDCorrELossFit.cxx:891
 AliFMDCorrELossFit.cxx:892
 AliFMDCorrELossFit.cxx:893
 AliFMDCorrELossFit.cxx:894
 AliFMDCorrELossFit.cxx:895
 AliFMDCorrELossFit.cxx:896
 AliFMDCorrELossFit.cxx:897
 AliFMDCorrELossFit.cxx:898
 AliFMDCorrELossFit.cxx:899
 AliFMDCorrELossFit.cxx:900
 AliFMDCorrELossFit.cxx:901
 AliFMDCorrELossFit.cxx:902
 AliFMDCorrELossFit.cxx:903
 AliFMDCorrELossFit.cxx:904
 AliFMDCorrELossFit.cxx:905
 AliFMDCorrELossFit.cxx:906
 AliFMDCorrELossFit.cxx:907
 AliFMDCorrELossFit.cxx:908
 AliFMDCorrELossFit.cxx:909
 AliFMDCorrELossFit.cxx:910
 AliFMDCorrELossFit.cxx:911
 AliFMDCorrELossFit.cxx:912
 AliFMDCorrELossFit.cxx:913
 AliFMDCorrELossFit.cxx:914
 AliFMDCorrELossFit.cxx:915
 AliFMDCorrELossFit.cxx:916
 AliFMDCorrELossFit.cxx:917
 AliFMDCorrELossFit.cxx:918
 AliFMDCorrELossFit.cxx:919
 AliFMDCorrELossFit.cxx:920
 AliFMDCorrELossFit.cxx:921
 AliFMDCorrELossFit.cxx:922
 AliFMDCorrELossFit.cxx:923
 AliFMDCorrELossFit.cxx:924
 AliFMDCorrELossFit.cxx:925
 AliFMDCorrELossFit.cxx:926
 AliFMDCorrELossFit.cxx:927
 AliFMDCorrELossFit.cxx:928
 AliFMDCorrELossFit.cxx:929
 AliFMDCorrELossFit.cxx:930
 AliFMDCorrELossFit.cxx:931
 AliFMDCorrELossFit.cxx:932
 AliFMDCorrELossFit.cxx:933
 AliFMDCorrELossFit.cxx:934
 AliFMDCorrELossFit.cxx:935
 AliFMDCorrELossFit.cxx:936
 AliFMDCorrELossFit.cxx:937
 AliFMDCorrELossFit.cxx:938
 AliFMDCorrELossFit.cxx:939
 AliFMDCorrELossFit.cxx:940
 AliFMDCorrELossFit.cxx:941
 AliFMDCorrELossFit.cxx:942
 AliFMDCorrELossFit.cxx:943
 AliFMDCorrELossFit.cxx:944
 AliFMDCorrELossFit.cxx:945
 AliFMDCorrELossFit.cxx:946
 AliFMDCorrELossFit.cxx:947
 AliFMDCorrELossFit.cxx:948
 AliFMDCorrELossFit.cxx:949
 AliFMDCorrELossFit.cxx:950
 AliFMDCorrELossFit.cxx:951
 AliFMDCorrELossFit.cxx:952
 AliFMDCorrELossFit.cxx:953
 AliFMDCorrELossFit.cxx:954
 AliFMDCorrELossFit.cxx:955
 AliFMDCorrELossFit.cxx:956
 AliFMDCorrELossFit.cxx:957
 AliFMDCorrELossFit.cxx:958
 AliFMDCorrELossFit.cxx:959
 AliFMDCorrELossFit.cxx:960
 AliFMDCorrELossFit.cxx:961
 AliFMDCorrELossFit.cxx:962
 AliFMDCorrELossFit.cxx:963
 AliFMDCorrELossFit.cxx:964
 AliFMDCorrELossFit.cxx:965
 AliFMDCorrELossFit.cxx:966
 AliFMDCorrELossFit.cxx:967
 AliFMDCorrELossFit.cxx:968
 AliFMDCorrELossFit.cxx:969
 AliFMDCorrELossFit.cxx:970
 AliFMDCorrELossFit.cxx:971
 AliFMDCorrELossFit.cxx:972
 AliFMDCorrELossFit.cxx:973
 AliFMDCorrELossFit.cxx:974
 AliFMDCorrELossFit.cxx:975
 AliFMDCorrELossFit.cxx:976
 AliFMDCorrELossFit.cxx:977
 AliFMDCorrELossFit.cxx:978
 AliFMDCorrELossFit.cxx:979
 AliFMDCorrELossFit.cxx:980
 AliFMDCorrELossFit.cxx:981
 AliFMDCorrELossFit.cxx:982
 AliFMDCorrELossFit.cxx:983
 AliFMDCorrELossFit.cxx:984
 AliFMDCorrELossFit.cxx:985
 AliFMDCorrELossFit.cxx:986
 AliFMDCorrELossFit.cxx:987
 AliFMDCorrELossFit.cxx:988
 AliFMDCorrELossFit.cxx:989
 AliFMDCorrELossFit.cxx:990
 AliFMDCorrELossFit.cxx:991
 AliFMDCorrELossFit.cxx:992
 AliFMDCorrELossFit.cxx:993
 AliFMDCorrELossFit.cxx:994
 AliFMDCorrELossFit.cxx:995
 AliFMDCorrELossFit.cxx:996
 AliFMDCorrELossFit.cxx:997
 AliFMDCorrELossFit.cxx:998
 AliFMDCorrELossFit.cxx:999
 AliFMDCorrELossFit.cxx:1000
 AliFMDCorrELossFit.cxx:1001
 AliFMDCorrELossFit.cxx:1002
 AliFMDCorrELossFit.cxx:1003
 AliFMDCorrELossFit.cxx:1004
 AliFMDCorrELossFit.cxx:1005
 AliFMDCorrELossFit.cxx:1006
 AliFMDCorrELossFit.cxx:1007
 AliFMDCorrELossFit.cxx:1008
 AliFMDCorrELossFit.cxx:1009
 AliFMDCorrELossFit.cxx:1010
 AliFMDCorrELossFit.cxx:1011
 AliFMDCorrELossFit.cxx:1012
 AliFMDCorrELossFit.cxx:1013
 AliFMDCorrELossFit.cxx:1014
 AliFMDCorrELossFit.cxx:1015
 AliFMDCorrELossFit.cxx:1016
 AliFMDCorrELossFit.cxx:1017
 AliFMDCorrELossFit.cxx:1018
 AliFMDCorrELossFit.cxx:1019
 AliFMDCorrELossFit.cxx:1020
 AliFMDCorrELossFit.cxx:1021
 AliFMDCorrELossFit.cxx:1022
 AliFMDCorrELossFit.cxx:1023
 AliFMDCorrELossFit.cxx:1024
 AliFMDCorrELossFit.cxx:1025
 AliFMDCorrELossFit.cxx:1026
 AliFMDCorrELossFit.cxx:1027
 AliFMDCorrELossFit.cxx:1028
 AliFMDCorrELossFit.cxx:1029
 AliFMDCorrELossFit.cxx:1030
 AliFMDCorrELossFit.cxx:1031
 AliFMDCorrELossFit.cxx:1032
 AliFMDCorrELossFit.cxx:1033
 AliFMDCorrELossFit.cxx:1034
 AliFMDCorrELossFit.cxx:1035
 AliFMDCorrELossFit.cxx:1036
 AliFMDCorrELossFit.cxx:1037
 AliFMDCorrELossFit.cxx:1038
 AliFMDCorrELossFit.cxx:1039
 AliFMDCorrELossFit.cxx:1040
 AliFMDCorrELossFit.cxx:1041
 AliFMDCorrELossFit.cxx:1042
 AliFMDCorrELossFit.cxx:1043
 AliFMDCorrELossFit.cxx:1044
 AliFMDCorrELossFit.cxx:1045
 AliFMDCorrELossFit.cxx:1046
 AliFMDCorrELossFit.cxx:1047
 AliFMDCorrELossFit.cxx:1048
 AliFMDCorrELossFit.cxx:1049
 AliFMDCorrELossFit.cxx:1050
 AliFMDCorrELossFit.cxx:1051
 AliFMDCorrELossFit.cxx:1052
 AliFMDCorrELossFit.cxx:1053
 AliFMDCorrELossFit.cxx:1054
 AliFMDCorrELossFit.cxx:1055
 AliFMDCorrELossFit.cxx:1056
 AliFMDCorrELossFit.cxx:1057
 AliFMDCorrELossFit.cxx:1058
 AliFMDCorrELossFit.cxx:1059
 AliFMDCorrELossFit.cxx:1060
 AliFMDCorrELossFit.cxx:1061
 AliFMDCorrELossFit.cxx:1062
 AliFMDCorrELossFit.cxx:1063
 AliFMDCorrELossFit.cxx:1064
 AliFMDCorrELossFit.cxx:1065
 AliFMDCorrELossFit.cxx:1066
 AliFMDCorrELossFit.cxx:1067
 AliFMDCorrELossFit.cxx:1068
 AliFMDCorrELossFit.cxx:1069
 AliFMDCorrELossFit.cxx:1070
 AliFMDCorrELossFit.cxx:1071
 AliFMDCorrELossFit.cxx:1072
 AliFMDCorrELossFit.cxx:1073
 AliFMDCorrELossFit.cxx:1074
 AliFMDCorrELossFit.cxx:1075
 AliFMDCorrELossFit.cxx:1076
 AliFMDCorrELossFit.cxx:1077
 AliFMDCorrELossFit.cxx:1078
 AliFMDCorrELossFit.cxx:1079
 AliFMDCorrELossFit.cxx:1080
 AliFMDCorrELossFit.cxx:1081
 AliFMDCorrELossFit.cxx:1082
 AliFMDCorrELossFit.cxx:1083
 AliFMDCorrELossFit.cxx:1084
 AliFMDCorrELossFit.cxx:1085
 AliFMDCorrELossFit.cxx:1086
 AliFMDCorrELossFit.cxx:1087
 AliFMDCorrELossFit.cxx:1088
 AliFMDCorrELossFit.cxx:1089
 AliFMDCorrELossFit.cxx:1090
 AliFMDCorrELossFit.cxx:1091
 AliFMDCorrELossFit.cxx:1092
 AliFMDCorrELossFit.cxx:1093
 AliFMDCorrELossFit.cxx:1094
 AliFMDCorrELossFit.cxx:1095
 AliFMDCorrELossFit.cxx:1096
 AliFMDCorrELossFit.cxx:1097
 AliFMDCorrELossFit.cxx:1098
 AliFMDCorrELossFit.cxx:1099
 AliFMDCorrELossFit.cxx:1100
 AliFMDCorrELossFit.cxx:1101
 AliFMDCorrELossFit.cxx:1102
 AliFMDCorrELossFit.cxx:1103
 AliFMDCorrELossFit.cxx:1104
 AliFMDCorrELossFit.cxx:1105
 AliFMDCorrELossFit.cxx:1106
 AliFMDCorrELossFit.cxx:1107
 AliFMDCorrELossFit.cxx:1108
 AliFMDCorrELossFit.cxx:1109
 AliFMDCorrELossFit.cxx:1110
 AliFMDCorrELossFit.cxx:1111
 AliFMDCorrELossFit.cxx:1112
 AliFMDCorrELossFit.cxx:1113
 AliFMDCorrELossFit.cxx:1114
 AliFMDCorrELossFit.cxx:1115
 AliFMDCorrELossFit.cxx:1116
 AliFMDCorrELossFit.cxx:1117
 AliFMDCorrELossFit.cxx:1118
 AliFMDCorrELossFit.cxx:1119
 AliFMDCorrELossFit.cxx:1120
 AliFMDCorrELossFit.cxx:1121
 AliFMDCorrELossFit.cxx:1122
 AliFMDCorrELossFit.cxx:1123
 AliFMDCorrELossFit.cxx:1124
 AliFMDCorrELossFit.cxx:1125
 AliFMDCorrELossFit.cxx:1126
 AliFMDCorrELossFit.cxx:1127
 AliFMDCorrELossFit.cxx:1128
 AliFMDCorrELossFit.cxx:1129
 AliFMDCorrELossFit.cxx:1130
 AliFMDCorrELossFit.cxx:1131
 AliFMDCorrELossFit.cxx:1132
 AliFMDCorrELossFit.cxx:1133
 AliFMDCorrELossFit.cxx:1134
 AliFMDCorrELossFit.cxx:1135
 AliFMDCorrELossFit.cxx:1136
 AliFMDCorrELossFit.cxx:1137
 AliFMDCorrELossFit.cxx:1138
 AliFMDCorrELossFit.cxx:1139
 AliFMDCorrELossFit.cxx:1140
 AliFMDCorrELossFit.cxx:1141
 AliFMDCorrELossFit.cxx:1142
 AliFMDCorrELossFit.cxx:1143
 AliFMDCorrELossFit.cxx:1144
 AliFMDCorrELossFit.cxx:1145
 AliFMDCorrELossFit.cxx:1146
 AliFMDCorrELossFit.cxx:1147
 AliFMDCorrELossFit.cxx:1148
 AliFMDCorrELossFit.cxx:1149
 AliFMDCorrELossFit.cxx:1150
 AliFMDCorrELossFit.cxx:1151
 AliFMDCorrELossFit.cxx:1152
 AliFMDCorrELossFit.cxx:1153
 AliFMDCorrELossFit.cxx:1154
 AliFMDCorrELossFit.cxx:1155
 AliFMDCorrELossFit.cxx:1156
 AliFMDCorrELossFit.cxx:1157
 AliFMDCorrELossFit.cxx:1158
 AliFMDCorrELossFit.cxx:1159
 AliFMDCorrELossFit.cxx:1160
 AliFMDCorrELossFit.cxx:1161
 AliFMDCorrELossFit.cxx:1162
 AliFMDCorrELossFit.cxx:1163
 AliFMDCorrELossFit.cxx:1164
 AliFMDCorrELossFit.cxx:1165
 AliFMDCorrELossFit.cxx:1166
 AliFMDCorrELossFit.cxx:1167
 AliFMDCorrELossFit.cxx:1168
 AliFMDCorrELossFit.cxx:1169
 AliFMDCorrELossFit.cxx:1170
 AliFMDCorrELossFit.cxx:1171
 AliFMDCorrELossFit.cxx:1172
 AliFMDCorrELossFit.cxx:1173
 AliFMDCorrELossFit.cxx:1174
 AliFMDCorrELossFit.cxx:1175
 AliFMDCorrELossFit.cxx:1176
 AliFMDCorrELossFit.cxx:1177
 AliFMDCorrELossFit.cxx:1178
 AliFMDCorrELossFit.cxx:1179
 AliFMDCorrELossFit.cxx:1180
 AliFMDCorrELossFit.cxx:1181
 AliFMDCorrELossFit.cxx:1182
 AliFMDCorrELossFit.cxx:1183
 AliFMDCorrELossFit.cxx:1184
 AliFMDCorrELossFit.cxx:1185
 AliFMDCorrELossFit.cxx:1186
 AliFMDCorrELossFit.cxx:1187
 AliFMDCorrELossFit.cxx:1188
 AliFMDCorrELossFit.cxx:1189
 AliFMDCorrELossFit.cxx:1190
 AliFMDCorrELossFit.cxx:1191
 AliFMDCorrELossFit.cxx:1192
 AliFMDCorrELossFit.cxx:1193
 AliFMDCorrELossFit.cxx:1194
 AliFMDCorrELossFit.cxx:1195
 AliFMDCorrELossFit.cxx:1196
 AliFMDCorrELossFit.cxx:1197
 AliFMDCorrELossFit.cxx:1198
 AliFMDCorrELossFit.cxx:1199
 AliFMDCorrELossFit.cxx:1200
 AliFMDCorrELossFit.cxx:1201
 AliFMDCorrELossFit.cxx:1202
 AliFMDCorrELossFit.cxx:1203
 AliFMDCorrELossFit.cxx:1204
 AliFMDCorrELossFit.cxx:1205
 AliFMDCorrELossFit.cxx:1206
 AliFMDCorrELossFit.cxx:1207
 AliFMDCorrELossFit.cxx:1208
 AliFMDCorrELossFit.cxx:1209
 AliFMDCorrELossFit.cxx:1210
 AliFMDCorrELossFit.cxx:1211
 AliFMDCorrELossFit.cxx:1212
 AliFMDCorrELossFit.cxx:1213
 AliFMDCorrELossFit.cxx:1214
 AliFMDCorrELossFit.cxx:1215
 AliFMDCorrELossFit.cxx:1216
 AliFMDCorrELossFit.cxx:1217
 AliFMDCorrELossFit.cxx:1218
 AliFMDCorrELossFit.cxx:1219
 AliFMDCorrELossFit.cxx:1220
 AliFMDCorrELossFit.cxx:1221
 AliFMDCorrELossFit.cxx:1222
 AliFMDCorrELossFit.cxx:1223
 AliFMDCorrELossFit.cxx:1224
 AliFMDCorrELossFit.cxx:1225
 AliFMDCorrELossFit.cxx:1226
 AliFMDCorrELossFit.cxx:1227
 AliFMDCorrELossFit.cxx:1228
 AliFMDCorrELossFit.cxx:1229
 AliFMDCorrELossFit.cxx:1230
 AliFMDCorrELossFit.cxx:1231
 AliFMDCorrELossFit.cxx:1232
 AliFMDCorrELossFit.cxx:1233
 AliFMDCorrELossFit.cxx:1234
 AliFMDCorrELossFit.cxx:1235
 AliFMDCorrELossFit.cxx:1236
 AliFMDCorrELossFit.cxx:1237
 AliFMDCorrELossFit.cxx:1238
 AliFMDCorrELossFit.cxx:1239
 AliFMDCorrELossFit.cxx:1240
 AliFMDCorrELossFit.cxx:1241
 AliFMDCorrELossFit.cxx:1242
 AliFMDCorrELossFit.cxx:1243
 AliFMDCorrELossFit.cxx:1244
 AliFMDCorrELossFit.cxx:1245
 AliFMDCorrELossFit.cxx:1246
 AliFMDCorrELossFit.cxx:1247
 AliFMDCorrELossFit.cxx:1248
 AliFMDCorrELossFit.cxx:1249
 AliFMDCorrELossFit.cxx:1250
 AliFMDCorrELossFit.cxx:1251
 AliFMDCorrELossFit.cxx:1252
 AliFMDCorrELossFit.cxx:1253
 AliFMDCorrELossFit.cxx:1254
 AliFMDCorrELossFit.cxx:1255
 AliFMDCorrELossFit.cxx:1256
 AliFMDCorrELossFit.cxx:1257
 AliFMDCorrELossFit.cxx:1258
 AliFMDCorrELossFit.cxx:1259
 AliFMDCorrELossFit.cxx:1260
 AliFMDCorrELossFit.cxx:1261
 AliFMDCorrELossFit.cxx:1262
 AliFMDCorrELossFit.cxx:1263
 AliFMDCorrELossFit.cxx:1264
 AliFMDCorrELossFit.cxx:1265
 AliFMDCorrELossFit.cxx:1266
 AliFMDCorrELossFit.cxx:1267
 AliFMDCorrELossFit.cxx:1268
 AliFMDCorrELossFit.cxx:1269
 AliFMDCorrELossFit.cxx:1270
 AliFMDCorrELossFit.cxx:1271
 AliFMDCorrELossFit.cxx:1272
 AliFMDCorrELossFit.cxx:1273
 AliFMDCorrELossFit.cxx:1274
 AliFMDCorrELossFit.cxx:1275
 AliFMDCorrELossFit.cxx:1276
 AliFMDCorrELossFit.cxx:1277
 AliFMDCorrELossFit.cxx:1278
 AliFMDCorrELossFit.cxx:1279
 AliFMDCorrELossFit.cxx:1280
 AliFMDCorrELossFit.cxx:1281
 AliFMDCorrELossFit.cxx:1282
 AliFMDCorrELossFit.cxx:1283
 AliFMDCorrELossFit.cxx:1284
 AliFMDCorrELossFit.cxx:1285
 AliFMDCorrELossFit.cxx:1286
 AliFMDCorrELossFit.cxx:1287
 AliFMDCorrELossFit.cxx:1288
 AliFMDCorrELossFit.cxx:1289
 AliFMDCorrELossFit.cxx:1290
 AliFMDCorrELossFit.cxx:1291
 AliFMDCorrELossFit.cxx:1292
 AliFMDCorrELossFit.cxx:1293
 AliFMDCorrELossFit.cxx:1294
 AliFMDCorrELossFit.cxx:1295
 AliFMDCorrELossFit.cxx:1296
 AliFMDCorrELossFit.cxx:1297
 AliFMDCorrELossFit.cxx:1298
 AliFMDCorrELossFit.cxx:1299
 AliFMDCorrELossFit.cxx:1300
 AliFMDCorrELossFit.cxx:1301
 AliFMDCorrELossFit.cxx:1302
 AliFMDCorrELossFit.cxx:1303
 AliFMDCorrELossFit.cxx:1304
 AliFMDCorrELossFit.cxx:1305
 AliFMDCorrELossFit.cxx:1306
 AliFMDCorrELossFit.cxx:1307
 AliFMDCorrELossFit.cxx:1308
 AliFMDCorrELossFit.cxx:1309
 AliFMDCorrELossFit.cxx:1310
 AliFMDCorrELossFit.cxx:1311
 AliFMDCorrELossFit.cxx:1312
 AliFMDCorrELossFit.cxx:1313
 AliFMDCorrELossFit.cxx:1314
 AliFMDCorrELossFit.cxx:1315
 AliFMDCorrELossFit.cxx:1316
 AliFMDCorrELossFit.cxx:1317
 AliFMDCorrELossFit.cxx:1318
 AliFMDCorrELossFit.cxx:1319
 AliFMDCorrELossFit.cxx:1320
 AliFMDCorrELossFit.cxx:1321
 AliFMDCorrELossFit.cxx:1322
 AliFMDCorrELossFit.cxx:1323
 AliFMDCorrELossFit.cxx:1324
 AliFMDCorrELossFit.cxx:1325
 AliFMDCorrELossFit.cxx:1326
 AliFMDCorrELossFit.cxx:1327
 AliFMDCorrELossFit.cxx:1328
 AliFMDCorrELossFit.cxx:1329
 AliFMDCorrELossFit.cxx:1330
 AliFMDCorrELossFit.cxx:1331
 AliFMDCorrELossFit.cxx:1332
 AliFMDCorrELossFit.cxx:1333
 AliFMDCorrELossFit.cxx:1334
 AliFMDCorrELossFit.cxx:1335
 AliFMDCorrELossFit.cxx:1336
 AliFMDCorrELossFit.cxx:1337
 AliFMDCorrELossFit.cxx:1338
 AliFMDCorrELossFit.cxx:1339
 AliFMDCorrELossFit.cxx:1340
 AliFMDCorrELossFit.cxx:1341
 AliFMDCorrELossFit.cxx:1342
 AliFMDCorrELossFit.cxx:1343
 AliFMDCorrELossFit.cxx:1344
 AliFMDCorrELossFit.cxx:1345
 AliFMDCorrELossFit.cxx:1346
 AliFMDCorrELossFit.cxx:1347
 AliFMDCorrELossFit.cxx:1348
 AliFMDCorrELossFit.cxx:1349
 AliFMDCorrELossFit.cxx:1350
 AliFMDCorrELossFit.cxx:1351
 AliFMDCorrELossFit.cxx:1352
 AliFMDCorrELossFit.cxx:1353
 AliFMDCorrELossFit.cxx:1354
 AliFMDCorrELossFit.cxx:1355
 AliFMDCorrELossFit.cxx:1356
 AliFMDCorrELossFit.cxx:1357
 AliFMDCorrELossFit.cxx:1358
 AliFMDCorrELossFit.cxx:1359
 AliFMDCorrELossFit.cxx:1360
 AliFMDCorrELossFit.cxx:1361
 AliFMDCorrELossFit.cxx:1362
 AliFMDCorrELossFit.cxx:1363
 AliFMDCorrELossFit.cxx:1364
 AliFMDCorrELossFit.cxx:1365
 AliFMDCorrELossFit.cxx:1366
 AliFMDCorrELossFit.cxx:1367
 AliFMDCorrELossFit.cxx:1368
 AliFMDCorrELossFit.cxx:1369
 AliFMDCorrELossFit.cxx:1370
 AliFMDCorrELossFit.cxx:1371
 AliFMDCorrELossFit.cxx:1372
 AliFMDCorrELossFit.cxx:1373
 AliFMDCorrELossFit.cxx:1374
 AliFMDCorrELossFit.cxx:1375
 AliFMDCorrELossFit.cxx:1376
 AliFMDCorrELossFit.cxx:1377
 AliFMDCorrELossFit.cxx:1378
 AliFMDCorrELossFit.cxx:1379
 AliFMDCorrELossFit.cxx:1380
 AliFMDCorrELossFit.cxx:1381
 AliFMDCorrELossFit.cxx:1382
 AliFMDCorrELossFit.cxx:1383
 AliFMDCorrELossFit.cxx:1384
 AliFMDCorrELossFit.cxx:1385
 AliFMDCorrELossFit.cxx:1386
 AliFMDCorrELossFit.cxx:1387
 AliFMDCorrELossFit.cxx:1388
 AliFMDCorrELossFit.cxx:1389
 AliFMDCorrELossFit.cxx:1390
 AliFMDCorrELossFit.cxx:1391
 AliFMDCorrELossFit.cxx:1392
 AliFMDCorrELossFit.cxx:1393
 AliFMDCorrELossFit.cxx:1394
 AliFMDCorrELossFit.cxx:1395
 AliFMDCorrELossFit.cxx:1396
 AliFMDCorrELossFit.cxx:1397
 AliFMDCorrELossFit.cxx:1398
 AliFMDCorrELossFit.cxx:1399
 AliFMDCorrELossFit.cxx:1400
 AliFMDCorrELossFit.cxx:1401
 AliFMDCorrELossFit.cxx:1402
 AliFMDCorrELossFit.cxx:1403
 AliFMDCorrELossFit.cxx:1404
 AliFMDCorrELossFit.cxx:1405
 AliFMDCorrELossFit.cxx:1406
 AliFMDCorrELossFit.cxx:1407
 AliFMDCorrELossFit.cxx:1408
 AliFMDCorrELossFit.cxx:1409
 AliFMDCorrELossFit.cxx:1410
 AliFMDCorrELossFit.cxx:1411
 AliFMDCorrELossFit.cxx:1412
 AliFMDCorrELossFit.cxx:1413
 AliFMDCorrELossFit.cxx:1414
 AliFMDCorrELossFit.cxx:1415
 AliFMDCorrELossFit.cxx:1416
 AliFMDCorrELossFit.cxx:1417
 AliFMDCorrELossFit.cxx:1418
 AliFMDCorrELossFit.cxx:1419
 AliFMDCorrELossFit.cxx:1420
 AliFMDCorrELossFit.cxx:1421
 AliFMDCorrELossFit.cxx:1422
 AliFMDCorrELossFit.cxx:1423
 AliFMDCorrELossFit.cxx:1424
 AliFMDCorrELossFit.cxx:1425
 AliFMDCorrELossFit.cxx:1426
 AliFMDCorrELossFit.cxx:1427
 AliFMDCorrELossFit.cxx:1428
 AliFMDCorrELossFit.cxx:1429
 AliFMDCorrELossFit.cxx:1430
 AliFMDCorrELossFit.cxx:1431
 AliFMDCorrELossFit.cxx:1432
 AliFMDCorrELossFit.cxx:1433
 AliFMDCorrELossFit.cxx:1434
 AliFMDCorrELossFit.cxx:1435
 AliFMDCorrELossFit.cxx:1436
 AliFMDCorrELossFit.cxx:1437
 AliFMDCorrELossFit.cxx:1438
 AliFMDCorrELossFit.cxx:1439
 AliFMDCorrELossFit.cxx:1440
 AliFMDCorrELossFit.cxx:1441
 AliFMDCorrELossFit.cxx:1442
 AliFMDCorrELossFit.cxx:1443
 AliFMDCorrELossFit.cxx:1444
 AliFMDCorrELossFit.cxx:1445
 AliFMDCorrELossFit.cxx:1446
 AliFMDCorrELossFit.cxx:1447
 AliFMDCorrELossFit.cxx:1448
 AliFMDCorrELossFit.cxx:1449
 AliFMDCorrELossFit.cxx:1450
 AliFMDCorrELossFit.cxx:1451
 AliFMDCorrELossFit.cxx:1452
 AliFMDCorrELossFit.cxx:1453
 AliFMDCorrELossFit.cxx:1454
 AliFMDCorrELossFit.cxx:1455
 AliFMDCorrELossFit.cxx:1456
 AliFMDCorrELossFit.cxx:1457
 AliFMDCorrELossFit.cxx:1458
 AliFMDCorrELossFit.cxx:1459
 AliFMDCorrELossFit.cxx:1460
 AliFMDCorrELossFit.cxx:1461
 AliFMDCorrELossFit.cxx:1462
 AliFMDCorrELossFit.cxx:1463
 AliFMDCorrELossFit.cxx:1464
 AliFMDCorrELossFit.cxx:1465
 AliFMDCorrELossFit.cxx:1466
 AliFMDCorrELossFit.cxx:1467
 AliFMDCorrELossFit.cxx:1468
 AliFMDCorrELossFit.cxx:1469
 AliFMDCorrELossFit.cxx:1470
 AliFMDCorrELossFit.cxx:1471
 AliFMDCorrELossFit.cxx:1472
 AliFMDCorrELossFit.cxx:1473
 AliFMDCorrELossFit.cxx:1474
 AliFMDCorrELossFit.cxx:1475
 AliFMDCorrELossFit.cxx:1476
 AliFMDCorrELossFit.cxx:1477
 AliFMDCorrELossFit.cxx:1478
 AliFMDCorrELossFit.cxx:1479
 AliFMDCorrELossFit.cxx:1480
 AliFMDCorrELossFit.cxx:1481
 AliFMDCorrELossFit.cxx:1482
 AliFMDCorrELossFit.cxx:1483
 AliFMDCorrELossFit.cxx:1484
 AliFMDCorrELossFit.cxx:1485
 AliFMDCorrELossFit.cxx:1486
 AliFMDCorrELossFit.cxx:1487
 AliFMDCorrELossFit.cxx:1488
 AliFMDCorrELossFit.cxx:1489
 AliFMDCorrELossFit.cxx:1490
 AliFMDCorrELossFit.cxx:1491
 AliFMDCorrELossFit.cxx:1492
 AliFMDCorrELossFit.cxx:1493
 AliFMDCorrELossFit.cxx:1494
 AliFMDCorrELossFit.cxx:1495
 AliFMDCorrELossFit.cxx:1496
 AliFMDCorrELossFit.cxx:1497
 AliFMDCorrELossFit.cxx:1498
 AliFMDCorrELossFit.cxx:1499
 AliFMDCorrELossFit.cxx:1500
 AliFMDCorrELossFit.cxx:1501
 AliFMDCorrELossFit.cxx:1502
 AliFMDCorrELossFit.cxx:1503
 AliFMDCorrELossFit.cxx:1504
 AliFMDCorrELossFit.cxx:1505
 AliFMDCorrELossFit.cxx:1506
 AliFMDCorrELossFit.cxx:1507
 AliFMDCorrELossFit.cxx:1508
 AliFMDCorrELossFit.cxx:1509
 AliFMDCorrELossFit.cxx:1510
 AliFMDCorrELossFit.cxx:1511
 AliFMDCorrELossFit.cxx:1512
 AliFMDCorrELossFit.cxx:1513
 AliFMDCorrELossFit.cxx:1514
 AliFMDCorrELossFit.cxx:1515
 AliFMDCorrELossFit.cxx:1516
 AliFMDCorrELossFit.cxx:1517
 AliFMDCorrELossFit.cxx:1518
 AliFMDCorrELossFit.cxx:1519
 AliFMDCorrELossFit.cxx:1520
 AliFMDCorrELossFit.cxx:1521
 AliFMDCorrELossFit.cxx:1522
 AliFMDCorrELossFit.cxx:1523
 AliFMDCorrELossFit.cxx:1524
 AliFMDCorrELossFit.cxx:1525
 AliFMDCorrELossFit.cxx:1526
 AliFMDCorrELossFit.cxx:1527
 AliFMDCorrELossFit.cxx:1528
 AliFMDCorrELossFit.cxx:1529
 AliFMDCorrELossFit.cxx:1530
 AliFMDCorrELossFit.cxx:1531
 AliFMDCorrELossFit.cxx:1532
 AliFMDCorrELossFit.cxx:1533
 AliFMDCorrELossFit.cxx:1534
 AliFMDCorrELossFit.cxx:1535
 AliFMDCorrELossFit.cxx:1536
 AliFMDCorrELossFit.cxx:1537
 AliFMDCorrELossFit.cxx:1538
 AliFMDCorrELossFit.cxx:1539
 AliFMDCorrELossFit.cxx:1540
 AliFMDCorrELossFit.cxx:1541
 AliFMDCorrELossFit.cxx:1542
 AliFMDCorrELossFit.cxx:1543
 AliFMDCorrELossFit.cxx:1544
 AliFMDCorrELossFit.cxx:1545
 AliFMDCorrELossFit.cxx:1546
 AliFMDCorrELossFit.cxx:1547
 AliFMDCorrELossFit.cxx:1548
 AliFMDCorrELossFit.cxx:1549
 AliFMDCorrELossFit.cxx:1550
 AliFMDCorrELossFit.cxx:1551
 AliFMDCorrELossFit.cxx:1552
 AliFMDCorrELossFit.cxx:1553
 AliFMDCorrELossFit.cxx:1554
 AliFMDCorrELossFit.cxx:1555
 AliFMDCorrELossFit.cxx:1556
 AliFMDCorrELossFit.cxx:1557
 AliFMDCorrELossFit.cxx:1558
 AliFMDCorrELossFit.cxx:1559
 AliFMDCorrELossFit.cxx:1560
 AliFMDCorrELossFit.cxx:1561
 AliFMDCorrELossFit.cxx:1562
 AliFMDCorrELossFit.cxx:1563
 AliFMDCorrELossFit.cxx:1564
 AliFMDCorrELossFit.cxx:1565
 AliFMDCorrELossFit.cxx:1566
 AliFMDCorrELossFit.cxx:1567
 AliFMDCorrELossFit.cxx:1568
 AliFMDCorrELossFit.cxx:1569
 AliFMDCorrELossFit.cxx:1570
 AliFMDCorrELossFit.cxx:1571
 AliFMDCorrELossFit.cxx:1572
 AliFMDCorrELossFit.cxx:1573
 AliFMDCorrELossFit.cxx:1574
 AliFMDCorrELossFit.cxx:1575
 AliFMDCorrELossFit.cxx:1576
 AliFMDCorrELossFit.cxx:1577
 AliFMDCorrELossFit.cxx:1578
 AliFMDCorrELossFit.cxx:1579
 AliFMDCorrELossFit.cxx:1580
 AliFMDCorrELossFit.cxx:1581
 AliFMDCorrELossFit.cxx:1582
 AliFMDCorrELossFit.cxx:1583
 AliFMDCorrELossFit.cxx:1584
 AliFMDCorrELossFit.cxx:1585
 AliFMDCorrELossFit.cxx:1586
 AliFMDCorrELossFit.cxx:1587
 AliFMDCorrELossFit.cxx:1588
 AliFMDCorrELossFit.cxx:1589
 AliFMDCorrELossFit.cxx:1590
 AliFMDCorrELossFit.cxx:1591
 AliFMDCorrELossFit.cxx:1592
 AliFMDCorrELossFit.cxx:1593
 AliFMDCorrELossFit.cxx:1594
 AliFMDCorrELossFit.cxx:1595
 AliFMDCorrELossFit.cxx:1596
 AliFMDCorrELossFit.cxx:1597
 AliFMDCorrELossFit.cxx:1598
 AliFMDCorrELossFit.cxx:1599
 AliFMDCorrELossFit.cxx:1600