ROOT logo
//
// Class to do the energy correction of FMD ESD data
//
#include "AliFMDEnergyFitter.h"
#include "AliForwardUtil.h"
#include "AliLandauGausFitter.h"
#include <AliESDFMD.h>
#include <TAxis.h>
#include <TList.h>
#include <TH1.h>
#include <TH2.h>
#include <TF1.h>
#include <TMath.h>
#include <AliLog.h>
#include <TClonesArray.h>
#include <TFitResult.h>
#include <THStack.h>
#include <TROOT.h>
#include <iostream>
#include <iomanip>

ClassImp(AliFMDEnergyFitter)
#if 0
; // This is for Emacs
#endif 
namespace {
  const char* fgkEDistFormat = "%s_etabin%03d";
}


//____________________________________________________________________
AliFMDEnergyFitter::AliFMDEnergyFitter()
  : TNamed(), 
    fRingHistos(),
    fLowCut(0.4),
    fNParticles(5),
    fMinEntries(1000),
    fFitRangeBinWidth(4),
    fDoFits(false),
    fDoMakeObject(false),
    fEtaAxis(),
    fCentralityAxis(),
    fMaxE(10),
    fNEbins(300), 
    fUseIncreasingBins(true),
    fMaxRelParError(AliFMDCorrELossFit::ELossFit::fgMaxRelError),
    fMaxChi2PerNDF(AliFMDCorrELossFit::ELossFit::fgMaxChi2nu), 
    fMinWeight(AliFMDCorrELossFit::ELossFit::fgLeastWeight),
    fDebug(0),
    fResidualMethod(kNoResiduals),
    fSkips(0),
    fRegularizationCut(3e6)
{
  // 
  // Default Constructor - do not use 
  //
  // DGUARD(fDebug, 1, "Default CTOR of AliFMDEnergyFitter");
  fRingHistos.SetOwner();
}

//____________________________________________________________________
AliFMDEnergyFitter::AliFMDEnergyFitter(const char* title)
  : TNamed("fmdEnergyFitter", title), 
    fRingHistos(), 
    fLowCut(0.4),
    fNParticles(5),
    fMinEntries(1000),
    fFitRangeBinWidth(4),
    fDoFits(false),
    fDoMakeObject(false),
    fEtaAxis(0,0,0),
    fCentralityAxis(0,0,0),
    fMaxE(10),
    fNEbins(300), 
    fUseIncreasingBins(true),
    fMaxRelParError(AliFMDCorrELossFit::ELossFit::fgMaxRelError),
    fMaxChi2PerNDF(AliFMDCorrELossFit::ELossFit::fgMaxChi2nu), 
    fMinWeight(AliFMDCorrELossFit::ELossFit::fgLeastWeight),
    fDebug(3),
    fResidualMethod(kNoResiduals),
    fSkips(0),
    fRegularizationCut(3e6)
{
  // 
  // Constructor 
  // 
  // Parameters:
  //    title Title of object  - not significant 
  //
  // DGUARD(fDebug, 1, "Named CTOR of AliFMDEnergyFitter: %s", title);
  fEtaAxis.SetName("etaAxis");
  fEtaAxis.SetTitle("#eta");
  fCentralityAxis.SetName("centralityAxis");
  fCentralityAxis.SetTitle("Centrality [%]");
}

//____________________________________________________________________
AliFMDEnergyFitter::~AliFMDEnergyFitter()
{
  // 
  // Destructor
  //
  DGUARD(fDebug, 1, "DTOR of AliFMDEnergyFitter");
  // fRingHistos.Delete();
}

//____________________________________________________________________
AliFMDEnergyFitter::RingHistos*
AliFMDEnergyFitter::CreateRingHistos(UShort_t d, Char_t r) const
{
  return new RingHistos(d,r);
}

//____________________________________________________________________
AliFMDEnergyFitter::RingHistos*
AliFMDEnergyFitter::GetRingHistos(UShort_t d, Char_t r) const
{
  // 
  // Get the ring histogram container 
  // 
  // Parameters:
  //    d Detector
  //    r Ring 
  // 
  // Return:
  //    Ring histogram container 
  //
  Int_t idx = -1;
  switch (d) { 
  case 1: idx = 0; break;
  case 2: idx = 1 + (r == 'I' || r == 'i' ? 0 : 1); break;
  case 3: idx = 3 + (r == 'I' || r == 'i' ? 0 : 1); break;
  }
  if (idx < 0 || idx >= fRingHistos.GetEntries()) return 0;
  
  return static_cast<RingHistos*>(fRingHistos.At(idx));
}

//____________________________________________________________________
void
AliFMDEnergyFitter::Init()
{
  // Create the ring histograms.  
  // 
  // Should be called from task initialization. 
  DGUARD(1,fDebug, "Creating histogram caches for each ring");
  fRingHistos.Add(CreateRingHistos(1, 'I'));
  fRingHistos.Add(CreateRingHistos(2, 'I'));
  fRingHistos.Add(CreateRingHistos(2, 'O'));
  fRingHistos.Add(CreateRingHistos(3, 'I'));
  fRingHistos.Add(CreateRingHistos(3, 'O'));
  TIter    next(&fRingHistos);
  RingHistos* o = 0;
  while ((o = static_cast<RingHistos*>(next()))) {
    o->fDebug = fDebug;
  }
}

//____________________________________________________________________
void
AliFMDEnergyFitter::CreateOutputObjects(TList* dir)
{
  // 
  // Define the output histograms.  These are put in a sub list of the
  // passed list.   The histograms are merged before the parent task calls 
  // AliAnalysisTaskSE::Terminate.  Called on task initialization on slaves.  
  // 
  // Parameters:
  //    dir Directory to add to 
  //
  DGUARD(fDebug, 1, "Define output in AliFMDEnergyFitter");
  TList* d = new TList;
  d->SetName(GetName());
  d->SetOwner(true);
  dir->Add(d);

  // Store eta axis as a histogram, since that can be merged!
  TH1* hEta = 0;
  if (fEtaAxis.GetXbins()->GetArray()) 
    hEta = new TH1I(fEtaAxis.GetName(), fEtaAxis.GetTitle(), 
		    fEtaAxis.GetNbins(), fEtaAxis.GetXbins()->GetArray());
  else 
    hEta = new TH1I(fEtaAxis.GetName(), fEtaAxis.GetTitle(), 
		    fEtaAxis.GetNbins(),fEtaAxis.GetXmin(),fEtaAxis.GetXmax());
  hEta->SetXTitle("#eta");
  hEta->SetYTitle("Nothing");
  hEta->SetDirectory(0);

  d->Add(hEta);
  d->Add(AliForwardUtil::MakeParameter("lowCut",        fLowCut));
  d->Add(AliForwardUtil::MakeParameter("nParticles",    fNParticles));
  d->Add(AliForwardUtil::MakeParameter("minEntries",    fMinEntries));
  d->Add(AliForwardUtil::MakeParameter("subtractBins",  fFitRangeBinWidth));
  d->Add(AliForwardUtil::MakeParameter("doFits",        fDoFits));
  d->Add(AliForwardUtil::MakeParameter("doObject",      fDoMakeObject));
  d->Add(AliForwardUtil::MakeParameter("maxE",          fMaxE));
  d->Add(AliForwardUtil::MakeParameter("nEbins",        fNEbins));
  d->Add(AliForwardUtil::MakeParameter("increasingBins",fUseIncreasingBins));
  d->Add(AliForwardUtil::MakeParameter("maxRelPerError",fMaxRelParError));
  d->Add(AliForwardUtil::MakeParameter("maxChi2PerNDF", fMaxChi2PerNDF));
  d->Add(AliForwardUtil::MakeParameter("minWeight",     fMinWeight));
  d->Add(AliForwardUtil::MakeParameter("regCut",        fRegularizationCut));
  d->Add(AliForwardUtil::MakeParameter("deltaShift", 
				       AliLandauGaus::EnableSigmaShift()));

  if (fRingHistos.GetEntries() <= 0) { 
    AliFatal("No ring histograms where defined - giving up!");
    return;
  }
  TIter    next(&fRingHistos);
  RingHistos* o = 0;
  while ((o = static_cast<RingHistos*>(next()))) {
    o->fDebug = fDebug;
    o->CreateOutputObjects(d);
  }
}

//____________________________________________________________________
void
AliFMDEnergyFitter::SetupForData(const TAxis& eAxis)
{
  // 
  // Initialise the task - called at first event 
  // 
  // Parameters:
  //    etaAxis The eta axis to use.  Note, that if the eta axis
  // has already been set (using SetEtaAxis), then this parameter will be 
  // ignored
  //
  DGUARD(fDebug, 1, "Initialize of AliFMDEnergyFitter");
  if (fEtaAxis.GetNbins() == 0 || 
      TMath::Abs(fEtaAxis.GetXmax() - fEtaAxis.GetXmin()) < 1e-7) 
    SetEtaAxis(eAxis);
  if (fCentralityAxis.GetNbins() == 0) {
    UShort_t n = 12;
    Double_t bins[] = {  0.,  5., 10., 15., 20., 30., 
			 40., 50., 60., 70., 80., 100. };
    SetCentralityAxis(n, bins);
  }
  TIter    next(&fRingHistos);
  RingHistos* o = 0;
  while ((o = static_cast<RingHistos*>(next())))
    o->SetupForData(fEtaAxis, fCentralityAxis, fMaxE, 
		    fNEbins, fUseIncreasingBins);
}  
//____________________________________________________________________
void
AliFMDEnergyFitter::SetEtaAxis(const TAxis& eAxis)
{
  // 
  // Set the eta axis to use.  This will force the code to use this
  // eta axis definition - irrespective of whatever axis is passed to
  // the Init member function.  Therefore, this member function can be
  // used to force another eta axis than one found in the correction
  // objects. 
  // 
  // Parameters:
  //    etaAxis Eta axis to use 
  //
  SetEtaAxis(eAxis.GetNbins(),eAxis.GetXmin(),eAxis.GetXmax());
}
//____________________________________________________________________
void
AliFMDEnergyFitter::SetEtaAxis(Int_t nBins, Double_t etaMin, Double_t etaMax)
{
  // 
  // Set the eta axis to use.  This will force the code to use this
  // eta axis definition - irrespective of whatever axis is passed to
  // the Init member function.  Therefore, this member function can be
  // used to force another eta axis than one found in the correction
  // objects. 
  // 
  // Parameters:
  //    nBins  Number of bins 
  //    etaMin Minimum of the eta axis 
  //    etaMax Maximum of the eta axis 
  //
  fEtaAxis.Set(nBins,etaMin,etaMax);
}
//____________________________________________________________________
void
AliFMDEnergyFitter::SetCentralityAxis(UShort_t n, Double_t* bins)
{
  fCentralityAxis.Set(n-1, bins);
}
//____________________________________________________________________
void
AliFMDEnergyFitter::SetEnableDeltaShift(Bool_t use) 
{
  AliLandauGaus::EnableSigmaShift(use ? 1 : 0);
}

//____________________________________________________________________
Bool_t
AliFMDEnergyFitter::Accumulate(const AliESDFMD& input,
			       Double_t         cent,
			       Bool_t           empty)
{
  // 
  // Fitter the input AliESDFMD object
  // 
  // Parameters:
  //    input     Input 
  //    cent      Centrality 
  //    empty     Whether the event is 'empty'
  // 
  // Return:
  //    True on success, false otherwise 
  DGUARD(fDebug, 5, "Accumulate statistics in AliFMDEnergyFitter - cholm");
  Int_t icent = fCentralityAxis.FindBin(cent);
  if (icent < 1 || icent > fCentralityAxis.GetNbins()) icent = 0;

  UShort_t nFills = 0;
  for(UShort_t d = 1; d <= 3; d++) {
    Int_t nRings = (d == 1 ? 1 : 2);
    for (UShort_t q = 0; q < nRings; q++) {
      Char_t      r    = (q == 0 ? 'I' : 'O');
      UShort_t    nsec = (q == 0 ?  20 :  40);
      UShort_t    nstr = (q == 0 ? 512 : 256);

      RingHistos* histos = GetRingHistos(d, r);
      if (!histos) continue;
      
      for(UShort_t s = 0; s < nsec;  s++) {
	for(UShort_t t = 0; t < nstr; t++) {
	  Float_t mult = input.Multiplicity(d,r,s,t);
	  
	  // Keep dead-channel information. 
	  if (mult == AliESDFMD::kInvalidMult || mult > 10 || mult <= 0) 
	    continue;

	  // Get the pseudo-rapidity 
	  Double_t eta1 = input.Eta(d,r,s,t);

	  // Int_t ieta = fEtaAxis.FindBin(eta1);
	  // if (ieta < 1 || ieta >  fEtaAxis.GetNbins()) continue; 

	  // histos->Fill(empty, ieta-1, icent, mult);
	  histos->Fill(empty, eta1, icent, mult);
	  nFills++;
	} // for strip
      } // for sector
    } // for ring 
  } // for detector

  DMSG(fDebug, 3, "Found a total of %d signals for c=%f, and %sempty event", 
       nFills, cent, (empty ? "" : "non-"));
  return kTRUE;
}

//____________________________________________________________________
void
AliFMDEnergyFitter::Fit(const TList* dir)
{
  // 
  // Scale the histograms to the total number of events 
  // 
  // Parameters:
  //    dir Where the histograms are  
  //
  DGUARD(fDebug, 1, "Fit distributions in AliFMDEnergyFitter");
  if (!fDoFits) {
    AliInfo("Not asked to do fits, returning");
    return;
  }

  TList* d = static_cast<TList*>(dir->FindObject(GetName()));
  if (!d) {
    AliWarningF("No list named %s found in %s", GetName(), dir->GetName());
    return;
  }    

  // +1          for chi^2
  // +3          for 1 landau 
  // +1          for N 
  // +fNParticles-1 for weights 
  Int_t nStack = kN+fNParticles;
  THStack* stack[nStack]; 
  stack[0]         = new THStack("chi2",   "#chi^{2}/#nu");
  stack[kC     +1] = new THStack("c",      "Constant");
  stack[kDelta +1] = new THStack("delta",  "#Delta_{p}");
  stack[kXi    +1] = new THStack("xi",     "#xi");
  stack[kSigma +1] = new THStack("sigma",  "#sigma");
  stack[kSigmaN+1] = new THStack("sigman", "#sigma_{n}");
  stack[kN     +1] = new THStack("n",      "# Particles");
  for (Int_t i = 2; i <= fNParticles; i++) 
    stack[kN+i] = new THStack(Form("a%d", i), Form("a_{%d}", i));
  for (Int_t i = 0; i < nStack; i++) 
    d->Add(stack[i]);

  // If we have no ring histograms, re-init. 
  if (fRingHistos.GetEntries() <= 0) Init();

  AliInfoF("Will do fits for %d rings", fRingHistos.GetEntries());
  TIter    next(&fRingHistos);
  RingHistos* o = 0;
  while ((o = static_cast<RingHistos*>(next()))) {
    AliInfoF("Fill fit for FMD%d%c", o->fDet, o->fRing);
    if (CheckSkip(o->fDet, o->fRing, fSkips)) {
      AliWarningF("Skipping FMD%d%c for fitting", o->fDet, o->fRing);
      continue;
    }
    
    TObjArray* l = o->Fit(d, fLowCut, fNParticles,
			  fMinEntries, fFitRangeBinWidth,
			  fMaxRelParError, fMaxChi2PerNDF,
			  fMinWeight, fRegularizationCut,
			  fResidualMethod);
    if (!l) continue;
    for (Int_t i = 0; i < l->GetEntriesFast()-1; i++) { // Last is status 
      stack[i % nStack]->Add(static_cast<TH1*>(l->At(i))); 
    }
  }

  if (!fDoMakeObject) return;

  MakeCorrectionsObject(d);
}

//____________________________________________________________________
void
AliFMDEnergyFitter::MakeCorrectionsObject(TList* d)
{
  // 
  // Generate the corrections object 
  // 
  // Parameters:
  //    dir List to analyse 
  //
  DGUARD(fDebug, 1, "Make the correction objec in AliFMDEnergyFitter");
    
  AliFMDCorrELossFit* obj = new AliFMDCorrELossFit;
  obj->SetEtaAxis(fEtaAxis);
  obj->SetLowCut(fLowCut);
  if (AliLandauGaus::EnableSigmaShift()) 
    obj->SetBit(AliFMDCorrELossFit::kHasShift);

  TIter    next(&fRingHistos);
  RingHistos* o = 0;
  while ((o = static_cast<RingHistos*>(next()))) {
    if (CheckSkip(o->fDet, o->fRing, fSkips)) {
      AliWarningF("Skipping FMD%d%c for correction object", o->fDet, o->fRing);
      continue;
    }
    
    o->FindBestFits(d, *obj, fEtaAxis);
  }
  d->Add(obj, "elossFits");
}

//____________________________________________________________________
void
AliFMDEnergyFitter::SetDebug(Int_t dbg)
{
  // 
  // Set the debug level.  The higher the value the more output 
  // 
  // Parameters:
  //    dbg Debug level 
  //
  fDebug = dbg;
  TIter    next(&fRingHistos);
  RingHistos* o = 0;
  while ((o = static_cast<RingHistos*>(next())))
    o->fDebug = dbg;
}  

//____________________________________________________________________
namespace {
  template <typename T>
  void GetParam(Bool_t& ret, const TCollection* col, 
		const TString& name, T& var)
  {
    TObject* o = col->FindObject(name);	      
    if (o) AliForwardUtil::GetParameter(o,var); 
    else   ret = false;				
  }
}

//____________________________________________________________________
Bool_t
AliFMDEnergyFitter::ReadParameters(const TCollection* col)
{
  // Read parameters of this object from a collection
  //
  // Parameters:
  //    col   Collection to read parameters from 
  // 
  // Return value:
  //   true on success, false otherwise 
  //
  if (!col) return false;
  Bool_t ret  = true;
  TH1*   hist = static_cast<TH1*>(col->FindObject("etaAxis"));
  if (!hist) ret = false;
  else {
    TAxis* axis = hist->GetXaxis();
    if (axis->GetXbins()->GetArray()) 
      fEtaAxis.Set(axis->GetNbins(), axis->GetXbins()->GetArray());
   else 
      fEtaAxis.Set(axis->GetNbins(), axis->GetXmin(), axis->GetXmax());
  } 
  GetParam(ret,col,"lowCut",        fLowCut);
  GetParam(ret,col,"nParticles",    fNParticles);
  GetParam(ret,col,"minEntries",    fMinEntries);
  GetParam(ret,col,"subtractBins",  fFitRangeBinWidth);
  GetParam(ret,col,"doFits",        fDoFits);
  GetParam(ret,col,"doObject",      fDoMakeObject);
  GetParam(ret,col,"maxE",          fMaxE);
  GetParam(ret,col,"nEbins",        fNEbins);
  GetParam(ret,col,"increasingBins",fUseIncreasingBins);
  GetParam(ret,col,"maxRelPerError",fMaxRelParError);
  GetParam(ret,col,"maxChi2PerNDF", fMaxChi2PerNDF);
  GetParam(ret,col,"minWeight",     fMinWeight);
  Bool_t dummy;
  GetParam(dummy,col,"regCut",      fRegularizationCut);

  return ret;
}

//____________________________________________________________________
Bool_t
AliFMDEnergyFitter::CheckSkip(UShort_t d, Char_t r, UShort_t skips) 
{
  UShort_t q  = (r == 'I' || r == 'i' ? 0 : 1);
  UShort_t c = 1 << (d-1);
  UShort_t t = 1 << (c+q-1);

  return (t & skips) == t;
}

#define PF(N,V,...)					\
  AliForwardUtil::PrintField(N,V, ## __VA_ARGS__)
#define PFB(N,FLAG)				\
  do {									\
    AliForwardUtil::PrintName(N);					\
    std::cout << std::boolalpha << (FLAG) << std::noboolalpha << std::endl; \
  } while(false)
#define PFV(N,VALUE)					\
  do {							\
    AliForwardUtil::PrintName(N);			\
    std::cout << (VALUE) << std::endl; } while(false)

//____________________________________________________________________
void
AliFMDEnergyFitter::Print(Option_t*) const
{
  // 
  // Print information
  // 
  // Parameters:
  //    option Not used 
  //
  AliForwardUtil::PrintTask(*this);

  gROOT->IncreaseDirLevel();
  PFV("Low cut [E/E_mip]",	fLowCut);
  PFV("Max(particles)",	        fNParticles);
  PFV("Min(entries)",	        fMinEntries);
  PFV("Fit range [bins]",       fFitRangeBinWidth);
  PFB("Make fits",              fDoFits);
  PFB("Make object",            fDoMakeObject);
  PFV("Max E/E_mip",	        fMaxE);
  PFV("N bins",	                fNEbins);
  PFB("Increasing bins",        fUseIncreasingBins);
  PFV("max(delta p/p)",    	fMaxRelParError);
  PFV("max(chi^2/nu)",	        fMaxChi2PerNDF);
  PFV("min(a_i)",	        fMinWeight);
  PFV("Regularization cut",     fRegularizationCut);
  TString r = "";
  switch (fResidualMethod) { 
  case kNoResiduals:              r = "None";       break;
  case kResidualDifference:       r = "Difference"; break;
  case kResidualScaledDifference: r = "Scaled difference"; break;
  case kResidualSquareDifference: r = "Square difference"; break;
  }
  PFV("Residuals", r);
  gROOT->DecreaseDirLevel();
}
  
//====================================================================
AliFMDEnergyFitter::RingHistos::RingHistos()
  : AliForwardUtil::RingHistos(), 
    fEDist(0), 
    fEmpty(0),
    // fEtaEDists(0), 
    fHist(0),
    fList(0),
    fBest(0),
    fFits("AliFMDCorrELossFit::ELossFit", 200),
    fDebug(0)
{
  // 
  // Default CTOR
  //
  DGUARD(fDebug, 3, "Default CTOR AliFMDEnergyFitter::RingHistos");
  fBest.Expand(0);
}

//____________________________________________________________________
AliFMDEnergyFitter::RingHistos::RingHistos(UShort_t d, Char_t r)
  : AliForwardUtil::RingHistos(d,r), 
    fEDist(0), 
    fEmpty(0),
    // fEtaEDists(0), 
    fHist(0),
    fList(0),
    fBest(0),
    fFits("AliFMDCorrELossFit::ELossFit", 200),
    fDebug(0)
{
  // 
  // Constructor
  // 
  // Parameters:
  //    d detector
  //    r ring 
  //
  DGUARD(fDebug, 3, "Named CTOR AliFMDEnergyFitter::RingHistos: FMD%d%c",
	 d, r);
  fBest.Expand(0);
}
//____________________________________________________________________
AliFMDEnergyFitter::RingHistos::~RingHistos()
{
  // 
  // Destructor 
  //
  DGUARD(fDebug, 3, "DTOR of AliFMDEnergyFitter::RingHistos");
  // if (fEDist) delete fEDist;
  // fEtaEDists.Delete();
}
//__________________________________________________________________
TArrayD
AliFMDEnergyFitter::RingHistos::MakeIncreasingAxis(Int_t n, Double_t min, 
						   Double_t max) const
{
  // 
  // Make an axis with increasing bins 
  // 
  // Parameters:
  //    n    Number of bins 
  //    min  Minimum 
  //    max  Maximum
  // 
  // Return:
  //    An axis with quadratically increasing bin size 
  //

  TArrayD bins(n+1);
  Double_t dx = (max-min) / n;
  bins[0]     = min;
  Int_t    i  = 1;
  for (i = 1; i < n+1; i++) {
    Double_t dI   = float(i)/n;
    Double_t next = bins[i-1] + dx + dI * dI * dx;
    bins[i]       = next;
    if (next > max) break;
  }
  bins.Set(i+1);
  return bins;
}

//____________________________________________________________________
TH2*
AliFMDEnergyFitter::RingHistos::Make(const char*  name, 
				     const char*  title, 
				     const TAxis& eAxis, 
				     Double_t     deMax, 
				     Int_t        nDeBins, 
				     Bool_t       incr)
{
  // 
  // Make E/E_mip histogram 
  // 
  // Parameters:
  //    deMax   Maximum energy loss 
  //    nDeBins Number energy loss bins 
  //    incr    Whether to make bins of increasing size
  //
  TH2* h = 0;
  TAxis mAxis;
  if (incr) {
    TArrayD deAxis = MakeIncreasingAxis(nDeBins, 0, deMax);
    mAxis.Set(deAxis.GetSize()-1, deAxis.GetArray());
  }
  else 
    mAxis.Set(nDeBins, 0, deMax);
  
  if (mAxis.GetXbins()->GetArray()) {
    // Variable bin since in Delta 
    if (eAxis.GetXbins()->GetArray()) {
      // Variadic bin size in eta 
      h = new TH2D(name, title, 
		   eAxis.GetNbins(), eAxis.GetXbins()->GetArray(),
		   mAxis.GetNbins(), mAxis.GetXbins()->GetArray());
    }
    else { 
      // Evenly spaced bins in eta
      h = new TH2D(name, title, 
		   eAxis.GetNbins(), eAxis.GetXmin(), eAxis.GetXmax(), 
		   mAxis.GetNbins(), mAxis.GetXbins()->GetArray());
    }
  }
  else { 
    // Make increasing bins axis 
    if (eAxis.GetXbins()->GetArray()) {
      // Variable size eta bins 
      h = new TH2D(name, title, 
		   eAxis.GetNbins(), eAxis.GetXbins()->GetArray(),
		   mAxis.GetNbins(), mAxis.GetXmin(), mAxis.GetXmax());
    }
    else {
      // Fixed size eta bins 
      h = new TH2D(name, title, 
		   eAxis.GetNbins(), eAxis.GetXmin(), eAxis.GetXmax(), 
		   mAxis.GetNbins(), mAxis.GetXmin(), mAxis.GetXmax());
    }
  }
  h->SetDirectory(0);
  h->SetYTitle("#sum#DeltaE/#DeltaE_{mip}");	
  h->SetXTitle("#eta");	
  h->SetFillColor(Color());
  h->SetMarkerColor(Color());
  h->SetLineColor(Color());
  h->SetFillStyle(3001);
  h->SetMarkerStyle(20);
  h->Sumw2();

  return h;
}
//____________________________________________________________________
void
AliFMDEnergyFitter::RingHistos::CreateOutputObjects(TList* dir)
{
  // 
  // Define outputs
  // 
  // Parameters:
  //    dir 
  //
  DGUARD(fDebug, 2, "Define output in AliFMDEnergyFitter::RingHistos");
  fList = DefineOutputList(dir);
  
  // fEtaEDists = new TList;
  // fEtaEDists->SetOwner();
  // fEtaEDists->SetName("EDists");
  // 
  // fList->Add(fEtaEDists);
}
//____________________________________________________________________
void
AliFMDEnergyFitter::RingHistos::SetupForData(const TAxis& eAxis, 
					     const TAxis& /* cAxis */,
					     Double_t     maxDE, 
					     Int_t        nDEbins, 
					     Bool_t       useIncrBin)
{
  // 
  // Initialise object 
  // 
  // Parameters:
  //    eAxis      Eta axis
  //    maxDE      Max energy loss to consider 
  //    nDEbins    Number of bins 
  //    useIncrBin Whether to use an increasing bin size 
  //
  DGUARD(fDebug, 2, "Initialize in AliFMDEnergyFitter::RingHistos");
  fEDist = new TH1D(Form("%s_edist", fName.Data()), 
		    Form("#sum#DeltaE/#DeltaE_{mip} for %s", fName.Data()), 
		    200, 0, 6);
  fEDist->SetXTitle("#sum#Delta/#Delta_{mip}");
  fEDist->SetFillColor(Color());
  fEDist->SetLineColor(Color());
  fEDist->SetMarkerColor(Color());
  fEDist->SetFillStyle(3001);
  fEDist->SetMarkerStyle(20);
  fEDist->Sumw2();
  fEDist->SetDirectory(0);

  fEmpty = static_cast<TH1D*>(fEDist->Clone(Form("%s_empty", fName.Data())));
  fEmpty->SetTitle(Form("#sum#DeltaE/#DeltaE_{mip} for %s (empty events)", 
			fName.Data()));
  fEmpty->SetDirectory(0);

  fList->Add(fEDist);
  fList->Add(fEmpty);
  fHist = Make("eloss", "#sum#Delta/#Delta_{mip}", eAxis, 
	       maxDE, nDEbins, useIncrBin);
  fList->Add(fHist);
  // fList->ls();
  // fEtaEDists.ls();
}

//____________________________________________________________________
void
AliFMDEnergyFitter::RingHistos::Fill(Bool_t   empty, 
				     Double_t eta, 
				     Int_t /* icent */,  
				     Double_t mult)
{
  // 
  // Fill histogram 
  // 
  // Parameters:
  //    empty  True if event is empty
  //    ieta   Eta bin (0-based)
  //    icent  Centrality bin (1-based)
  //    mult   Signal 
  //
  DGUARD(fDebug, 10, "Filling in AliFMDEnergyFitter::RingHistos");
  if (empty) { 
    fEmpty->Fill(mult);
    return;
  }
  fEDist->Fill(mult);

  // if (!fEtaEDists) { 
  if (!fHist) {
    Warning("Fill", "No list of E dists defined");
    return;
  }
  fHist->Fill(eta, mult);
  // Here, we should first look up in a centrality array, and then in
  // that array look up the eta bin - or perhaps we should do it the
  // other way around?
  // if (ieta < 0 || ieta >= fEtaEDists->GetEntries()) return;
  
  // TH1D* h = static_cast<TH1D*>(fEtaEDists->At(ieta));
  // if (!h) return;

  // h->Fill(mult);
}

//____________________________________________________________________
TH1* 
AliFMDEnergyFitter::RingHistos::MakePar(const char* name, 
					const char* title, 
					const TAxis& eta) const
{
  // 
  // Make a parameter histogram
  // 
  // Parameters:
  //    name   Name of histogram.
  //    title  Title of histogram. 
  //    eta    Eta axis 
  // 
  // Return:
  //    
  //
  TH1D* h = new TH1D(Form("%s_%s", fName.Data(), name), 
		     Form("%s for %s", title, fName.Data()), 
		     eta.GetNbins(), eta.GetXmin(), eta.GetXmax());
  h->SetXTitle("#eta");
  h->SetYTitle(title);
  h->SetDirectory(0);
  h->SetFillColor(Color());
  h->SetMarkerColor(Color());
  h->SetLineColor(Color());
  h->SetFillStyle(3001);
  h->Sumw2();

  return h;
}
//____________________________________________________________________
TH1*
AliFMDEnergyFitter::RingHistos::MakeTotal(const char* name, 
					  const char* title, 
					  const TAxis& eta, 
					  Int_t low, 
					  Int_t high, 
					  Double_t val, 
					  Double_t err) const
{
  // 
  // Make a histogram that contains the results of the fit over the full ring 
  // 
  // Parameters:
  //    name  Name 
  //    title Title
  //    eta   Eta axis 
  //    low   Least bin
  //    high  Largest bin
  //    val   Value of parameter 
  //    err   Error on parameter 
  // 
  // Return:
  //    The newly allocated histogram 
  //
  Double_t xlow  = eta.GetBinLowEdge(low);
  Double_t xhigh = eta.GetBinUpEdge(high);
  TH1D* h = new TH1D(Form("%s_%s", fName.Data(), name), 
		     Form("%s for %s", title, fName.Data()), 
		     1, xlow, xhigh);
  h->SetBinContent(1, val);
  h->SetBinError(1, err);
  h->SetXTitle("#eta");
  h->SetYTitle(title);
  h->SetDirectory(0);
  h->SetFillColor(0);
  h->SetMarkerColor(Color());
  h->SetLineColor(Color());
  h->SetFillStyle(0);
  h->SetLineStyle(2);
  h->SetLineWidth(2);

  return h;
}
		     
//____________________________________________________________________
TObjArray*
AliFMDEnergyFitter::RingHistos::Fit(TList*           dir, 
				    Double_t         lowCut, 
				    UShort_t         nParticles,
				    UShort_t         minEntries,
				    UShort_t         minusBins, 
				    Double_t         relErrorCut, 
				    Double_t         chi2nuCut,
				    Double_t         minWeight,
				    Double_t         regCut,
				    EResidualMethod  residuals) const
{
  return FitSlices(dir, "eloss", lowCut, nParticles, minEntries, 
		   minusBins, relErrorCut, chi2nuCut, minWeight, regCut, 
		   residuals, true, &fBest);
}

//____________________________________________________________________
TObjArray*
AliFMDEnergyFitter::RingHistos::FitSlices(TList*           dir, 
					  const char*      name, 
					  Double_t         lowCut, 
					  UShort_t         nParticles,
					  UShort_t         minEntries,
					  UShort_t         minusBins, 
					  Double_t         relErrorCut, 
					  Double_t         chi2nuCut,
					  Double_t         minWeight,
					  Double_t         regCut,
					  EResidualMethod  residuals,
					  Bool_t           scaleToPeak,
					  TObjArray*       best) const
{
  // 
  // Fit each histogram to up to @a nParticles particle responses.
  // 
  // Parameters:
  //    dir         Output list 
  //    eta         Eta axis 
  //    lowCut      Lower cut 
  //    nParticles  Max number of convolved landaus to fit
  //    minEntries  Minimum number of entries 
  //    minusBins   Number of bins from peak to subtract to 
  //                    get the fit range 
  //    relErrorCut Cut applied to relative error of parameter. 
  //                    Note, for multi-particle weights, the cut 
  //                    is loosend by a factor of 2 
  //    chi2nuCut   Cut on @f$ \chi^2/\nu@f$ - 
  //                    the reduced @f$\chi^2@f$ 
  //
  DGUARD(fDebug, 2, "Fit in AliFMDEnergyFitter::RingHistos");

  // Get our ring list from the output container 
  TList* l = GetOutputList(dir);
  if (!l) return 0; 

  TList* dists = 0;
  // Get the 2D histogram 
  TH2* h = static_cast<TH2*>(l->FindObject(name));
  if (!h) { 
    AliWarningF("Didn't find 2D histogram '%s' in %s", name, l->GetName());
    // Get the energy distributions from the output container 
    dists = static_cast<TList*>(l->FindObject("EDists"));
    if (!dists) { 
      AliWarningF("Didn't find EtaEDists (%s) in %s", 
		  fName.Data(), l->GetName());
      l->ls();
      return 0;
    }
  }
  if (!h && !dists) return 0;

  const TAxis* pEta = (h ? h->GetXaxis() : 
			    static_cast<TAxis*>(dir->FindObject("etaAxis")));
  if (!pEta) { 
    AliWarningF("Didn't find the eta axis - either from histogram %p or "
		"list %p (%s)", h, dir, (dir ? dir->GetName() : "-"));
    return 0;
  }
  const TAxis& eta = *pEta;

  // Create an output list for the fitted distributions 
  TList* out = new TList;
  out->SetOwner();
  out->SetName(Form("%sDists", name));
  l->Add(out);

  // Optional container for residuals 
  TList* resi = 0;
  if (residuals != kNoResiduals) {
    resi = new TList();
    resi->SetName(Form("%sResiduals", name));
    resi->SetOwner();
    l->Add(resi);
  }

  // Container of the fit results histograms 
  TObjArray* pars  = new TObjArray(3+nParticles+1);
  pars->SetName(Form("%sResults", name));
  l->Add(pars);

  // Result objects stored in separate list on the output 
  TH1* hChi2   = 0;
  TH1* hC      = 0;
  TH1* hDelta  = 0;
  TH1* hXi     = 0;
  TH1* hSigma  = 0;
  TH1* hSigmaN = 0;
  TH1* hN      = 0;
  TH1* hA[nParticles-1];
  pars->Add(hChi2   = MakePar("chi2",   "#chi^{2}/#nu", eta));
  pars->Add(hC      = MakePar("c",      "Constant",     eta));
  pars->Add(hDelta  = MakePar("delta",  "#Delta_{p}",   eta));
  pars->Add(hXi     = MakePar("xi",     "#xi",          eta));
  pars->Add(hSigma  = MakePar("sigma",  "#sigma",       eta));
  pars->Add(hSigmaN = MakePar("sigman", "#sigma_{n}",   eta));
  pars->Add(hN      = MakePar("n",      "N", eta));
  for (UShort_t i = 1; i < nParticles; i++) 
    pars->Add(hA[i-1] = MakePar(Form("a%d",i+1), Form("a_{%d}",i+1), eta));

  
  Int_t nDists = h ? h->GetNbinsX() : dists->GetEntries();
  Int_t low    = nDists;
  Int_t high   = 0;
  Int_t nEmpty = 0;
  Int_t nLow   = 0;
  Int_t nFitted= 0;
  if (best) {
    best->Expand(nDists+1);
    best->Clear();
    best->SetOwner(false);
  }
  for (Int_t i = 0; i < nDists; i++) { 
    // Ignore empty histograms altoghether 
    Int_t b    = i+1;
    TH1D* dist = (h ? h->ProjectionY(Form(fgkEDistFormat,GetName(),b),b,b,"e") 
		  : static_cast<TH1D*>(dists->At(i)));
    if (!dist) { 
      // If we got the null pointer, return 0
      nEmpty++;
      continue;
    }
    // Then releasing the histogram from the it's directory
    dist->SetDirectory(0);
    // Set a meaningful title
    dist->SetTitle(Form("#Delta/#Delta_{mip} for %s in %6.2f<#eta<%6.2f",
			GetName(), eta.GetBinLowEdge(b),
			eta.GetBinUpEdge(b)));

    // Now fit 
    UShort_t    status1 = 0;
    ELossFit_t* res     = FitHist(dist,
				  lowCut, 
				  nParticles,
				  minEntries,
				  minusBins,   
				  relErrorCut,
				  chi2nuCut,
				  minWeight,
				  regCut,
				  scaleToPeak,
				  status1);
    if (!res) {
      switch (status1) { 
      case 1: nEmpty++; break;
      case 2: nLow++;   break;
      }
      // Only clean up if we have no input list 
      if (h) delete dist;
      continue;
    }
      
    // Now count as fitted, store as best fits, and add distribution
    // to the dedicated output list
    nFitted++;
    res->fBin = b; // We only have the bin information here 
    if (best) best->AddAt(res, b);
    out->Add(dist);
    // dist->GetListOfFunctions()->Add(res);
    
    // If asked to calculate residuals, do so, and store result on the
    // dedicated output list
    if (residuals != kNoResiduals && resi) 
      CalculateResiduals(residuals, lowCut, dist, res, resi);

    // Store eta limits 
    low   = TMath::Min(low,b);
    high  = TMath::Max(high,b);

    // Get the reduced chi square
    Double_t chi2 = res->fChi2; // GetChisquare();
    Int_t    ndf  = res->fNu;   // GetNDF();
    
    // Store results of best fit in output histograms 
    // res->SetLineWidth(4);
    hChi2   ->SetBinContent(b, ndf > 0 ? chi2 / ndf : 0);
    hC      ->SetBinContent(b, res->fC); 
    hDelta  ->SetBinContent(b, res->fDelta); 
    hXi     ->SetBinContent(b, res->fXi); 
    hSigma  ->SetBinContent(b, res->fSigma); 
    hSigmaN ->SetBinContent(b, res->fSigmaN); 
    hN      ->SetBinContent(b, res->fN); 

    hC     ->SetBinError(b, res->fEC); 
    hDelta ->SetBinError(b, res->fEDelta);
    hXi    ->SetBinError(b, res->fEXi); 
    hSigma ->SetBinError(b, res->fESigma); 
    hSigmaN->SetBinError(b, res->fESigmaN); 
    // hN     ->SetBinError(b, res->fGetParError(kN));

    for (UShort_t j = 0; j < nParticles-1; j++) {
      hA[j]->SetBinContent(b, res->fA[j]); 
      hA[j]->SetBinError(b, res->fEA[j]); 
    }
  }
  printf("%s: Out of %d histograms, %d where empty, %d had too little data,"
	 "leaving %d to be fitted, of which %d succeeded\n",  
	 GetName(), nDists, nEmpty, nLow, nDists-nEmpty-nLow, nFitted);

  // Fit the full-ring histogram 
  TH1*        total   = GetOutputHist(l, Form("%s_edist", fName.Data()));
  if (total) {
    UShort_t    statusT = 0;
    ELossFit_t* resT    = FitHist(total,
				  lowCut, 
				  nParticles,
				  minEntries, 
				  minusBins,
				  relErrorCut,
				  chi2nuCut,
				  minWeight,
				  regCut,
				  scaleToPeak,
				  statusT);
    if (resT) { 
      // Make histograms for the result of this fit 
      Double_t chi2 = resT->GetChi2();
      Int_t    ndf  = resT->GetNu();
      pars->Add(MakeTotal("t_chi2",   "#chi^{2}/#nu", eta, low, high,
			  ndf > 0 ? chi2/ndf : 0, 0));
      pars->Add(MakeTotal("t_c",      "Constant",     eta, low, high,
			  resT->GetC(), resT->GetEC()));
      pars->Add(MakeTotal("t_delta",  "#Delta_{p}",   eta, low, high,
			  resT->GetDelta(), resT->GetEDelta()));
      pars->Add(MakeTotal("t_xi",     "#xi",          eta, low, high,
			  resT->GetXi(), resT->GetEXi()));
      pars->Add(MakeTotal("t_sigma",  "#sigma",       eta, low, high,
			  resT->GetSigma(), resT->GetESigma()));
      pars->Add(MakeTotal("t_sigman", "#sigma_{n}",   eta, low, high,
			  resT->GetSigmaN(), resT->GetESigmaN()));
      pars->Add(MakeTotal("t_n",    "N",              eta, low, high,
			  resT->GetN(), 0));
      for (UShort_t j = 0; j < nParticles-1; j++) 
	pars->Add(MakeTotal(Form("t_a%d",j+2), 
			    Form("a_{%d}",j+2), eta, low, high,
			    resT->GetA(j), resT->GetEA(j)));
    }
  }

  TH1* status = new TH1I(Form("%sStatus",name), "Status of Fits", 5, 0, 5);
  status->GetXaxis()->SetBinLabel(1, "Total");
  status->GetXaxis()->SetBinLabel(2, "Empty");
  status->GetXaxis()->SetBinLabel(3, Form("<%d", minEntries));
  status->GetXaxis()->SetBinLabel(4, "Candidates");
  status->GetXaxis()->SetBinLabel(5, "Fitted");
  status->SetXTitle("Status");
  status->SetYTitle("# of #Delta distributions");
  status->SetBinContent(1, nDists);
  status->SetBinContent(2, nEmpty);
  status->SetBinContent(3, nLow);
  status->SetBinContent(4, nDists-nLow-nEmpty);
  status->SetBinContent(5, nFitted);
  status->SetFillColor(Color());
  status->SetFillStyle(3001);
  status->SetLineColor(Color());
  status->SetDirectory(0);
  status->SetStats(0);
  pars->Add(status);
  return pars;
}


//____________________________________________________________________
void
AliFMDEnergyFitter::RingHistos::Scale(TH1* dist) const
{
  // Scale to the bin-width
  dist->Scale(1., "width");
}  


//____________________________________________________________________
AliFMDEnergyFitter::RingHistos::ELossFit_t*
AliFMDEnergyFitter::RingHistos::FitHist(TH1*      dist,
					Double_t  lowCut, 
					UShort_t  nParticles, 
					UShort_t  minEntries,
					UShort_t  minusBins, 
					Double_t  relErrorCut, 
					Double_t  chi2nuCut,
					Double_t  minWeight,
					Double_t  regCut,
					Bool_t    scaleToPeak,
					UShort_t& status) const
{
  // 
  // Fit a signal histogram.  First, the bin @f$ b_{min}@f$ with
  // maximum bin content in the range @f$ [E_{min},\infty]@f$ is
  // found.  Then the fit range is set to the bin range 
  // @f$ [b_{min}-\Delta b,b_{min}+2\Delta b]@f$, and a 1 
  // particle signal is fitted to that.  The parameters of that fit 
  // is then used as seeds for a fit of the @f$ N@f$ particle response 
  // to the data in the range 
  // @f$ [b_{min}-\Delta b,N(\Delta_1+\xi_1\log(N))+2N\xi@f$
  // 
  // Parameters:
  //    dist        Histogram to fit 
  //    lowCut      Lower cut @f$ E_{min}@f$ on signal 
  //    nParticles  Max number @f$ N@f$ of convolved landaus to fit
  //    minusBins   Number of bins @f$ \Delta b@f$ from peak to 
  //                    subtract to get the fit range 
  //    relErrorCut Cut applied to relative error of parameter. 
  //                    Note, for multi-particle weights, the cut 
  //                    is loosend by a factor of 2 
  //    chi2nuCut   Cut on @f$ \chi^2/\nu@f$ - 
  //                    the reduced @f$\chi^2@f$ 
  // 
  // Return:
  //    The best fit function 
  //
  DGUARD(fDebug, 2, "Fit histogram in AliFMDEnergyFitter::RingHistos: %s",
	 dist->GetName());
  Double_t maxRange = 10;


  if (dist->GetEntries() <= 0) { 
    status = 1; // `empty'
    return 0;
  }
  Scale(dist);
  
  // Narrow search window for the peak 
  Int_t    cutBin  = TMath::Max(dist->GetXaxis()->FindBin(lowCut),3);
  Int_t    maxBin  = TMath::Min(dist->GetXaxis()->FindBin(10),
				dist->GetNbinsX());
  dist->GetXaxis()->SetRange(cutBin, maxBin);
    
  // Get the bin with maximum 
  Int_t    peakBin = dist->GetMaximumBin();
    
  // Normalize peak to 1 
  // Double_t max = dist->GetMaximum(); 
  Double_t max = dist->GetBinContent(peakBin); // Maximum(); 
  if (max <= 0) {
    status = 1; // `empty'
    return 0;
  }
  if (scaleToPeak) dist->Scale(1/max);
  DMSG(fDebug,5,"max(%s) -> %f", dist->GetName(), max);

  // Check that we have enough entries 
  Double_t nEntries = dist->GetEntries();
  if (nEntries <= minEntries) { 
    AliWarning(Form("Histogram at %s has too few entries (%f <= %d)",
		    dist->GetName(), nEntries, minEntries));
    status = 2;
    return 0;
  }

  // Create a fitter object 
  AliLandauGausFitter f(lowCut, maxRange, minusBins); 
  f.Clear();
  f.SetDebug(fDebug > 2); 

  // regularization cut - should be a parameter of the class 
  if (dist->GetEntries() > regCut) { 
    // We should rescale the errors 
    Double_t s = TMath::Sqrt(dist->GetEntries() / regCut);
    if (fDebug > 0) printf("Error scale: %f ", s);
    for (Int_t i = 1; i <= dist->GetNbinsX(); i++) {
      Double_t e = dist->GetBinError(i);
      dist->SetBinError(i, e * s);
    }
  }
  // If we are only asked to fit a single particle, return this fit, 
  // no matter what. 
  if (nParticles == 1) {
    TF1* r = f.Fit1Particle(dist, 0);
    if (!r) {
      status = 3; // No-fit
      return 0;
    }
    TF1* ff = new TF1(*r);
    dist->GetListOfFunctions()->Add(ff);
    ELossFit_t* ret = new ELossFit_t(0, *ff);
    ret->CalculateQuality(chi2nuCut, relErrorCut, minWeight);
    status = 0; // OK
    return ret;
  }

  // Fit from 2 upto n particles  
  for (Int_t i = 2; i <= nParticles; i++) f.FitNParticle(dist, i, 0);

  // Now, we need to select the best fit 
  Int_t nFits = f.GetFitResults().GetEntriesFast();
  for (Int_t i = nFits-1; i >= 0; i--) { 
    TF1* ff = static_cast<TF1*>(f.GetFunctions().At(i));
    // ff->SetRange(0, maxRange);
    dist->GetListOfFunctions()->Add(new TF1(*ff));
  }
  status = 0; // OK

  // Here, we use the real quality assesor instead of the old
  // `CheckResult' to ensure consitency in all output.
  ELossFit_t* ret = FindBestFit(dist, relErrorCut, chi2nuCut, minWeight);
  if (!ret) status = 3;
  return ret;
}

//__________________________________________________________________
AliFMDEnergyFitter::RingHistos::ELossFit_t* 
AliFMDEnergyFitter::RingHistos::FindBestFit(const TH1* dist,
					    Double_t   relErrorCut, 
					    Double_t   chi2nuCut,
					    Double_t   minWeightCut)  const
{
  // 
  // Find the best fit 
  // 
  // Parameters:
  //    dist           Histogram 
  //    relErrorCut    Cut applied to relative error of parameter. 
  //                       Note, for multi-particle weights, the cut 
  //                       is loosend by a factor of 2 
  //    chi2nuCut      Cut on @f$ \chi^2/\nu@f$ - 
  //                       the reduced @f$\chi^2@f$ 
  //    minWeightCut   Least valid @f$ a_i@f$ 
  // 
  // Return:
  //    Best fit or null
  //
  TList* funcs = dist->GetListOfFunctions();
  TF1*   func  = 0;
  Int_t  i     = 0;
  TIter  next(funcs);
  fFits.Clear(); // This is only ever used here

  if (fDebug) printf("Find best fit for %s ... ", dist->GetName());
  if (fDebug > 2) printf("\n");

  // Loop over all functions stored in distribution, 
  // and calculate the quality 
  while ((func = static_cast<TF1*>(next()))) { 
    ELossFit_t* fit = new(fFits[i++]) ELossFit_t(0,*func);
    fit->fDet  = fDet;
    fit->fRing = fRing;
    // fit->fBin  = b;
    fit->CalculateQuality(chi2nuCut, relErrorCut, minWeightCut);
    if (fDebug > 2) 
      Printf("%10s: %3d (chi^2/nu: %6.3f)", 
	     func->GetName(), fit->fQuality, 
	     (fit->fNu > 0 ? fit->fChi2 / fit->fNu : 999));
  }

  // Sort all the found fit objects in increasing quality 
  fFits.Sort();
  if (fDebug > 1) fFits.Print("s");

  // Get the top-most fit
  ELossFit_t* ret = static_cast<ELossFit_t*>(fFits.At(i-1));
  if (!ret) {
    AliWarningF("No fit found for %s", GetName());
    return 0;
  }
  if (ret && fDebug > 0) {
    if (fDebug > 1) printf(" %d: ", i-1);
    ret->Print("s");
  }
  // We have to make a copy here, because other wise the clones array
  // will overwrite the address
  return new ELossFit_t(*ret);
}

//____________________________________________________________________
void
AliFMDEnergyFitter::RingHistos::CalculateResiduals(EResidualMethod mode, 
						   Double_t        lowCut,
						   TH1*            dist, 
						   ELossFit_t*     fit, 
						   TCollection*    out) const
{

  // Clone the input, and reset
  TH1*    resi = static_cast<TH1*>(dist->Clone());
  TString tit(resi->GetTitle());
  tit.ReplaceAll("#DeltaE/#DeltaE_{mip}", "Residuals");
  resi->SetTitle(tit);
  resi->SetDirectory(0);

  // Set title on Y axis
  switch (mode) { 
  case kResidualDifference:       
    resi->SetYTitle("h_{i}-f(#Delta_{i}) #pm #delta_{i}");
    break;
  case kResidualScaledDifference:  
    resi->SetYTitle("[h_{i}-f(#Delta_{i})]/#delta_{i}"); break;
  case kResidualSquareDifference:  
    resi->SetYTitle("#chi_{i}^{2}=[h_{i}-f(#Delta_{i})]^{2}/#delta^{2}_{i}");
    break;
  default: 
    resi->SetYTitle("Unknown");
    break;
  }
  out->Add(resi);

  // Try to find the function 
  Double_t highCut = dist->GetXaxis()->GetXmax();
  TString funcName("landau1");
  if (fit->GetN() > 1) 
    funcName = Form("nlandau%d", fit->GetN());
  TF1* func = dist->GetFunction(funcName);
  if (func) func->GetRange(lowCut, highCut);
  resi->Reset("ICES");
  resi->GetListOfFunctions()->Clear();
  resi->SetUniqueID(mode);

    // Reset histogram
  Int_t nX = resi->GetNbinsX();
  for (Int_t i  = 1; i <= nX; i++) { 
    Double_t x  = dist->GetBinCenter(i);
    if (x < lowCut)  continue;
    if (x > highCut) break;

    Double_t h  = dist->GetBinContent(i);
    Double_t e  = dist->GetBinError(i);
    Double_t r  = 0;
    Double_t er = 0;
    if (h > 0 && e > 0) { 
      Double_t f = fit->GetC() * fit->Evaluate(x);
      if (f > 0) { 
	r  = h-f;
	switch (mode) { 
	case kResidualDifference: er = e; break;
	case kResidualScaledDifference:  r /= e; break;
	case kResidualSquareDifference:  r *= r; r /= (e*e); break;
	default: r = 0; break;
	}
      }
    }
    resi->SetBinContent(i, r);
    resi->SetBinError(i, er);
  }  
}

//__________________________________________________________________
void
AliFMDEnergyFitter::RingHistos::FindBestFits(const TList*        d, 
					     AliFMDCorrELossFit& obj,
					     const TAxis&        eta)
{
  // 
  // Find the best fits 
  // 
  // Parameters:
  //    d              Parent list
  //    obj            Object to add fits to
  //    eta            Eta axis 
  //    relErrorCut    Cut applied to relative error of parameter. 
  //                       Note, for multi-particle weights, the cut 
  //                       is loosend by a factor of 2 
  //    chi2nuCut      Cut on @f$ \chi^2/\nu@f$ - 
  //                       the reduced @f$\chi^2@f$ 
  //    minWeightCut   Least valid @f$ a_i@f$ 
  //

  // Get our ring list from the output container 
  TList* l = GetOutputList(d);
  if (!l) return; 

  // Get the energy distributions from the output container 
  TList* dists = static_cast<TList*>(l->FindObject("elossDists"));
  if (!dists) { 
    AliWarningF("Didn't find elossDists in %s", l->GetName());
    l->ls();
    return;
  }
  Int_t nBin = eta.GetNbins();
  if (fBest.GetEntriesFast() <= 0) { 
    AliWarningF("No fits found for %s", GetName());
    return;
  }
  
  for (Int_t b = 1; b <= nBin; b++) { 
    ELossFit_t* best = static_cast<ELossFit_t*>(fBest.At(b));
    if (!best) { 
      // AliErrorF("No best fit found @ %d for %s", b, GetName());
      continue;
    }
    // FindBestFit(b, dist, relErrorCut, chi2nuCut, minWeightCut);
    best->fDet  = fDet; 
    best->fRing = fRing;
    best->fBin  = b; // 
    if (fDebug > 0) {
      printf("Bin # %3d: ", b); 
      best->Print("s");
    }
    // Double_t eta = fAxis->GetBinCenter(b);
    obj.SetFit(fDet, fRing, b, best); 
    // new ELossFit_t(*best));
  }
}



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