ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

/////////////////////////////////////////////////////////////
//
// AliHFMassFitter for the fit of invariant mass distribution
// of charmed mesons
//
// Author: C.Bianchin, chiara.bianchin@pd.infn.it
/////////////////////////////////////////////////////////////

#include <Riostream.h>
#include <TMath.h>
#include <TNtuple.h>
#include <TH1F.h>
#include <TF1.h>
#include <TList.h>
#include <TFile.h>
#include <TCanvas.h>
#include <TVirtualPad.h>
#include <TGraph.h>
#include <TVirtualFitter.h>
#include <TMinuit.h>
#include <TStyle.h>
#include <TPaveText.h>
#include <TDatabasePDG.h>

#include "AliHFMassFitter.h"
#include "AliVertexingHFUtils.h"


using std::cout;
using std::endl;

ClassImp(AliHFMassFitter)

 //************** constructors
AliHFMassFitter::AliHFMassFitter() : 
  TNamed(),
  fhistoInvMass(0),
  fminMass(0),
  fmaxMass(0),
  fminBinMass(0),
  fmaxBinMass(0),
  fNbin(0),
  fParsSize(1),
  fNFinalPars(1),
  fFitPars(0),
  fWithBkg(0),
  ftypeOfFit4Bkg(kExpo),
  ftypeOfFit4Sgn(kGaus),
  ffactor(1),
  fntuParam(0),
  fMass(1.865),
  fMassErr(0.01),
  fSigmaSgn(0.012),
  fSigmaSgnErr(0.001),
  fRawYield(0.),
  fRawYieldErr(0.),
  fSideBands(0),
  fFixPar(0),
  fSideBandl(0),
  fSideBandr(0),
  fcounter(0),
  fFitOption("L,"),
  fContourGraph(0)
{
  // default constructor
 
  cout<<"Default constructor:"<<endl;
  cout<<"Remember to set the Histo, the Type, the FixPar"<<endl;

}

//___________________________________________________________________________

AliHFMassFitter::AliHFMassFitter (const TH1F *histoToFit, Double_t minvalue, Double_t maxvalue, Int_t rebin, Int_t fittypeb, Int_t fittypes):
 TNamed(),
 fhistoInvMass(0),
 fminMass(0),
 fmaxMass(0),
 fminBinMass(0),
 fmaxBinMass(0),
 fNbin(0),
 fParsSize(1),
 fNFinalPars(1),
 fFitPars(0),
 fWithBkg(0),
 ftypeOfFit4Bkg(kExpo),
 ftypeOfFit4Sgn(kGaus),
 ffactor(1),
 fntuParam(0),
 fMass(1.865),
 fMassErr(0.01),
 fSigmaSgn(0.012),
 fSigmaSgnErr(0.001),
 fRawYield(0.),
 fRawYieldErr(0.),
 fSideBands(0),
 fFixPar(0),
 fSideBandl(0),
 fSideBandr(0),
 fcounter(0),
 fFitOption("L,"),
 fContourGraph(0)
{
  // standard constructor

  fhistoInvMass= (TH1F*)histoToFit->Clone("fhistoInvMass");
  fhistoInvMass->SetDirectory(0);
  fminMass=minvalue; 
  fmaxMass=maxvalue;
  if(rebin!=1) RebinMass(rebin); 
  else fNbin=(Int_t)fhistoInvMass->GetNbinsX();
  CheckRangeFit();
  ftypeOfFit4Bkg=fittypeb;
  ftypeOfFit4Sgn=fittypes;
  if(ftypeOfFit4Bkg!=0 && ftypeOfFit4Bkg!=1 && ftypeOfFit4Bkg!=2 && ftypeOfFit4Bkg!=4 && ftypeOfFit4Bkg!=5) fWithBkg=kFALSE;
  else fWithBkg=kTRUE;
  if (!fWithBkg) cout<<"Fit Histogram of Signal only"<<endl;
  else  cout<<"Type of fit For Background = "<<ftypeOfFit4Bkg<<endl;

  ComputeParSize();
  fFitPars=new Float_t[fParsSize];

  SetDefaultFixParam();

  fContourGraph=new TList();
  fContourGraph->SetOwner();

}


AliHFMassFitter::AliHFMassFitter(const AliHFMassFitter &mfit):
  TNamed(),
  fhistoInvMass(mfit.fhistoInvMass),
  fminMass(mfit.fminMass),
  fmaxMass(mfit.fmaxMass),
  fminBinMass(mfit.fminBinMass),
  fmaxBinMass(mfit.fmaxBinMass),
  fNbin(mfit.fNbin),
  fParsSize(mfit.fParsSize),
  fNFinalPars(mfit.fNFinalPars),
  fFitPars(0),
  fWithBkg(mfit.fWithBkg),
  ftypeOfFit4Bkg(mfit.ftypeOfFit4Bkg),
  ftypeOfFit4Sgn(mfit.ftypeOfFit4Sgn),
  ffactor(mfit.ffactor),
  fntuParam(mfit.fntuParam),
  fMass(mfit.fMass),
  fMassErr(mfit.fMassErr),
  fSigmaSgn(mfit.fSigmaSgn),
  fSigmaSgnErr(mfit.fSigmaSgnErr),
  fRawYield(mfit.fRawYield),
  fRawYieldErr(mfit.fRawYieldErr),
  fSideBands(mfit.fSideBands),
  fFixPar(0),
  fSideBandl(mfit.fSideBandl),
  fSideBandr(mfit.fSideBandr),
  fcounter(mfit.fcounter),
  fFitOption(mfit.fFitOption),
  fContourGraph(mfit.fContourGraph)
{
  //copy constructor
  
  if(mfit.fParsSize > 0){
    fFitPars=new Float_t[fParsSize];
    fFixPar=new Bool_t[fNFinalPars];
    memcpy(fFitPars,mfit.fFitPars,mfit.fParsSize*sizeof(Float_t));
    memcpy(fFixPar,mfit.fFixPar,mfit.fNFinalPars*sizeof(Bool_t));
  }

}

//_________________________________________________________________________

AliHFMassFitter::~AliHFMassFitter() {

  //destructor

  cout<<"AliHFMassFitter destructor called"<<endl;

  delete fhistoInvMass;

  delete fntuParam;

  delete[] fFitPars;
  
  delete[] fFixPar;
  
  fcounter = 0;
}

//_________________________________________________________________________

AliHFMassFitter& AliHFMassFitter::operator=(const AliHFMassFitter &mfit){

  //assignment operator

  if(&mfit == this) return *this;
  fhistoInvMass= mfit.fhistoInvMass;
  fminMass= mfit.fminMass;
  fmaxMass= mfit.fmaxMass;
  fNbin= mfit.fNbin;
  fParsSize= mfit.fParsSize;
  fWithBkg= mfit.fWithBkg;
  ftypeOfFit4Bkg= mfit.ftypeOfFit4Bkg;
  ftypeOfFit4Sgn= mfit.ftypeOfFit4Sgn;
  ffactor= mfit.ffactor;
  fntuParam= mfit.fntuParam;
  fMass= mfit.fMass;
  fMassErr= mfit.fMassErr;
  fSigmaSgn= mfit.fSigmaSgn;
  fSigmaSgnErr= mfit.fSigmaSgnErr;
  fRawYield= mfit.fRawYield;
  fRawYieldErr= mfit.fRawYieldErr;
  fSideBands= mfit.fSideBands;
  fSideBandl= mfit.fSideBandl;
  fSideBandr= mfit.fSideBandr;
  fFitOption= mfit.fFitOption;
  fcounter= mfit.fcounter;
  fContourGraph= mfit.fContourGraph;

  if(mfit.fParsSize > 0){
    delete[] fFitPars;
    
    fFitPars=new Float_t[fParsSize];
    memcpy(fFitPars,mfit.fFitPars,mfit.fParsSize*sizeof(Float_t));

    delete[] fFixPar;
    
    fFixPar=new Bool_t[fNFinalPars];
    memcpy(fFixPar,mfit.fFixPar,mfit.fNFinalPars*sizeof(Float_t));
  }

  return *this;
}

//************ tools & settings

//__________________________________________________________________________

void AliHFMassFitter::ComputeNFinalPars() {

  //compute the number of parameters of the total (signal+bgk) function
  cout<<"Info:ComputeNFinalPars... ";
  switch (ftypeOfFit4Bkg) {//npar background func
  case 0:
    fNFinalPars=2;
    break;
  case 1:
    fNFinalPars=2;
    break;
  case 2:
    fNFinalPars=3;
    break;
  case 3:
    fNFinalPars=1;
    break;
  case 4:
    fNFinalPars=2;	
    break;
  case 5:
    fNFinalPars=3;	
    break;
  default:
    cout<<"Error in computing fNFinalPars: check ftypeOfFit4Bkg"<<endl;
    break;
  }

  fNFinalPars+=3; //gaussian signal
  cout<<": "<<fNFinalPars<<endl;
}
//__________________________________________________________________________

void AliHFMassFitter::ComputeParSize() {

  //compute the size of the parameter array and set the data member

  switch (ftypeOfFit4Bkg) {//npar background func
  case 0:
    fParsSize = 2*3;
    break;
  case 1:
    fParsSize = 2*3;
    break;
  case 2:
    fParsSize = 3*3;
    break;
  case 3:
    fParsSize = 1*3;
    break;
  case 4:
    fParsSize = 2*3; 
    break;
  case 5:
    fParsSize = 3*3; 
    break;
  default:
    cout<<"Error in computing fParsSize: check ftypeOfFit4Bkg"<<endl;
    break;
  }

  fParsSize += 3; // npar refl
  fParsSize += 3; // npar signal gaus

  fParsSize*=2;   // add errors
  cout<<"Parameters array size "<<fParsSize<<endl;
}

//___________________________________________________________________________
void AliHFMassFitter::SetDefaultFixParam(){

  //Set default values for fFixPar (only total integral fixed)

  ComputeNFinalPars();
  fFixPar=new Bool_t[fNFinalPars];

  fFixPar[0]=kTRUE; //default: IntTot fixed
  cout<<"Parameter 0 is fixed"<<endl;
  for(Int_t i=1;i<fNFinalPars;i++){
    fFixPar[i]=kFALSE;
  }

}

//___________________________________________________________________________
Bool_t AliHFMassFitter::SetFixThisParam(Int_t thispar,Bool_t fixpar){

  //set the value (kFALSE or kTRUE) of one element of fFixPar
  //return kFALSE if something wrong

  if(thispar>=fNFinalPars) {
    AliError(Form("Error! Parameter out of bounds! Max is %d\n",fNFinalPars-1));
    return kFALSE;
  }
  if(!fFixPar){
    cout<<"Initializing fFixPar...";
    SetDefaultFixParam();
    cout<<" done."<<endl;
  }

  fFixPar[thispar]=fixpar;
  if(fixpar)cout<<"Parameter "<<thispar<<" is now fixed"<<endl;
  else cout<<"Parameter "<<thispar<<" is now free"<<endl;
  return kTRUE;
}

//___________________________________________________________________________
Bool_t AliHFMassFitter::GetFixThisParam(Int_t thispar)const{
  //return the value of fFixPar[thispar]
  if(thispar>=fNFinalPars) {
    AliError(Form("Error! Parameter out of bounds! Max is %d\n",fNFinalPars-1));
    return kFALSE;
  }
  if(!fFixPar) {
    AliError("Error! Parameters to be fixed still not set");
    return kFALSE;

  }
  return fFixPar[thispar];
 
}

//___________________________________________________________________________
void AliHFMassFitter::SetHisto(const TH1F *histoToFit){

  fhistoInvMass = new TH1F(*histoToFit);
  fhistoInvMass->SetDirectory(0);
  //cout<<"SetHisto pointer "<<fhistoInvMass<<endl;
}

//___________________________________________________________________________

void AliHFMassFitter::SetType(Int_t fittypeb, Int_t fittypes) {
  
  //set the type of fit to perform for signal and background
  
  ftypeOfFit4Bkg = fittypeb; 
  ftypeOfFit4Sgn = fittypes; 
  
  ComputeParSize();
  fFitPars = new Float_t[fParsSize];
  
  SetDefaultFixParam();
}

//___________________________________________________________________________

void AliHFMassFitter::Reset() {

  //delete the histogram and reset the mean and sigma to default

  cout<<"Reset called: delete histogram, set mean value to 1.85 and sigma to 0.012"<<endl;
  fMass=1.85;
  fSigmaSgn=0.012;
  cout<<"Reset "<<fhistoInvMass<<endl;
  delete fhistoInvMass;
}

//_________________________________________________________________________

void AliHFMassFitter::InitNtuParam(TString ntuname) {

  // Create ntuple to keep fit parameters

  fntuParam=0;
  fntuParam=new TNtuple(ntuname.Data(),"Contains fit parameters","intbkg1:slope1:conc1:intGB:meanGB:sigmaGB:intbkg2:slope2:conc2:inttot:slope3:conc3:intsgn:meansgn:sigmasgn:intbkg1Err:slope1Err:conc1Err:intGBErr:meanGBErr:sigmaGBErr:intbkg2Err:slope2Err:conc2Err:inttotErr:slope3Err:conc3Err:intsgnErr:meansgnErr:sigmasgnErr");
  
}

//_________________________________________________________________________

void AliHFMassFitter::FillNtuParam() {
  // Fill ntuple with fit parameters

  Float_t nothing=0.;

  if (ftypeOfFit4Bkg==2) {
      fntuParam->SetBranchAddress("intbkg1",&fFitPars[0]);
      fntuParam->SetBranchAddress("slope1",&fFitPars[1]);
      fntuParam->SetBranchAddress("conc1",&fFitPars[2]);
      fntuParam->SetBranchAddress("intGB",&fFitPars[3]);
      fntuParam->SetBranchAddress("meanGB",&fFitPars[4]);
      fntuParam->SetBranchAddress("sigmaGB",&fFitPars[5]);
      fntuParam->SetBranchAddress("intbkg2",&fFitPars[6]);
      fntuParam->SetBranchAddress("slope2",&fFitPars[7]);
      fntuParam->SetBranchAddress("conc2",&fFitPars[8]);
      fntuParam->SetBranchAddress("inttot",&fFitPars[9]);
      fntuParam->SetBranchAddress("slope3",&fFitPars[10]);
      fntuParam->SetBranchAddress("conc3",&fFitPars[11]);
      fntuParam->SetBranchAddress("intsgn",&fFitPars[12]);
      fntuParam->SetBranchAddress("meansgn",&fFitPars[13]);
      fntuParam->SetBranchAddress("sigmasgn",&fFitPars[14]);

      fntuParam->SetBranchAddress("intbkg1Err",&fFitPars[15]);
      fntuParam->SetBranchAddress("slope1Err",&fFitPars[16]);
      fntuParam->SetBranchAddress("conc1Err",&fFitPars[17]);
      fntuParam->SetBranchAddress("intGBErr",&fFitPars[18]);
      fntuParam->SetBranchAddress("meanGBErr",&fFitPars[19]);
      fntuParam->SetBranchAddress("sigmaGBErr",&fFitPars[20]);
      fntuParam->SetBranchAddress("intbkg2Err",&fFitPars[21]);
      fntuParam->SetBranchAddress("slope2Err",&fFitPars[22]);
      fntuParam->SetBranchAddress("conc2Err",&fFitPars[23]);
      fntuParam->SetBranchAddress("inttotErr",&fFitPars[24]);
      fntuParam->SetBranchAddress("slope3Err",&fFitPars[25]);
      fntuParam->SetBranchAddress("conc3Err",&fFitPars[26]);
      fntuParam->SetBranchAddress("intsgnErr",&fFitPars[27]);
      fntuParam->SetBranchAddress("meansgnErr",&fFitPars[28]);
      fntuParam->SetBranchAddress("sigmasgnErr",&fFitPars[29]);
    
  } else {
    
    if(ftypeOfFit4Bkg==3){
      fntuParam->SetBranchAddress("intbkg1",&fFitPars[0]);
      fntuParam->SetBranchAddress("slope1",&nothing);
      fntuParam->SetBranchAddress("conc1",&nothing);
      fntuParam->SetBranchAddress("intGB",&fFitPars[1]);
      fntuParam->SetBranchAddress("meanGB",&fFitPars[2]);
      fntuParam->SetBranchAddress("sigmaGB",&fFitPars[3]);
      fntuParam->SetBranchAddress("intbkg2",&fFitPars[4]);
      fntuParam->SetBranchAddress("slope2",&nothing);
      fntuParam->SetBranchAddress("conc2",&nothing);
      fntuParam->SetBranchAddress("inttot",&fFitPars[6]);
      fntuParam->SetBranchAddress("slope3",&nothing);
      fntuParam->SetBranchAddress("conc3",&nothing);
      fntuParam->SetBranchAddress("intsgn",&fFitPars[6]);
      fntuParam->SetBranchAddress("meansgn",&fFitPars[7]);
      fntuParam->SetBranchAddress("sigmasgn",&fFitPars[8]);

      fntuParam->SetBranchAddress("intbkg1Err",&fFitPars[9]);
      fntuParam->SetBranchAddress("slope1Err",&nothing);
      fntuParam->SetBranchAddress("conc1Err",&nothing);
      fntuParam->SetBranchAddress("intGBErr",&fFitPars[10]);
      fntuParam->SetBranchAddress("meanGBErr",&fFitPars[11]);
      fntuParam->SetBranchAddress("sigmaGBErr",&fFitPars[12]);
      fntuParam->SetBranchAddress("intbkg2Err",&fFitPars[13]);
      fntuParam->SetBranchAddress("slope2Err",&nothing);
      fntuParam->SetBranchAddress("conc2Err",&nothing);
      fntuParam->SetBranchAddress("inttotErr",&fFitPars[15]);
      fntuParam->SetBranchAddress("slope3Err",&nothing);
      fntuParam->SetBranchAddress("conc3Err",&nothing);
      fntuParam->SetBranchAddress("intsgnErr",&fFitPars[15]);
      fntuParam->SetBranchAddress("meansgnErr",&fFitPars[16]);
      fntuParam->SetBranchAddress("sigmasgnErr",&fFitPars[17]);

    }
    else{
      fntuParam->SetBranchAddress("intbkg1",&fFitPars[0]);
      fntuParam->SetBranchAddress("slope1",&fFitPars[1]);
      fntuParam->SetBranchAddress("conc1",&nothing);
      fntuParam->SetBranchAddress("intGB",&fFitPars[2]);
      fntuParam->SetBranchAddress("meanGB",&fFitPars[3]);
      fntuParam->SetBranchAddress("sigmaGB",&fFitPars[4]);
      fntuParam->SetBranchAddress("intbkg2",&fFitPars[5]);
      fntuParam->SetBranchAddress("slope2",&fFitPars[6]);
      fntuParam->SetBranchAddress("conc2",&nothing);
      fntuParam->SetBranchAddress("inttot",&fFitPars[7]);
      fntuParam->SetBranchAddress("slope3",&fFitPars[8]);
      fntuParam->SetBranchAddress("conc3",&nothing);
      fntuParam->SetBranchAddress("intsgn",&fFitPars[9]);
      fntuParam->SetBranchAddress("meansgn",&fFitPars[10]);
      fntuParam->SetBranchAddress("sigmasgn",&fFitPars[11]);

      fntuParam->SetBranchAddress("intbkg1Err",&fFitPars[12]);
      fntuParam->SetBranchAddress("slope1Err",&fFitPars[13]);
      fntuParam->SetBranchAddress("conc1Err",&nothing);
      fntuParam->SetBranchAddress("intGBErr",&fFitPars[14]);
      fntuParam->SetBranchAddress("meanGBErr",&fFitPars[15]);
      fntuParam->SetBranchAddress("sigmaGBErr",&fFitPars[16]);
      fntuParam->SetBranchAddress("intbkg2Err",&fFitPars[17]);
      fntuParam->SetBranchAddress("slope2Err",&fFitPars[18]);
      fntuParam->SetBranchAddress("conc2Err",&nothing);
      fntuParam->SetBranchAddress("inttotErr",&fFitPars[19]);
      fntuParam->SetBranchAddress("slope3Err",&fFitPars[20]);
      fntuParam->SetBranchAddress("conc3Err",&nothing);
      fntuParam->SetBranchAddress("intsgnErr",&fFitPars[21]);
      fntuParam->SetBranchAddress("meansgnErr",&fFitPars[22]);
      fntuParam->SetBranchAddress("sigmasgnErr",&fFitPars[23]);
    }
     
  }
  fntuParam->TTree::Fill();
}

//_________________________________________________________________________

TNtuple* AliHFMassFitter::NtuParamOneShot(TString ntuname){
  // Create, fill and return ntuple with fit parameters

  InitNtuParam(ntuname.Data());
  FillNtuParam();
  return fntuParam;
}
//_________________________________________________________________________

void AliHFMassFitter::RebinMass(Int_t bingroup){
  // Rebin invariant mass histogram

  if(!fhistoInvMass){
    AliError("Histogram not set!!");
    return;
  }
  Int_t nbinshisto=fhistoInvMass->GetNbinsX();
  if(bingroup<1){
    cout<<"Error! Cannot group "<<bingroup<<" bins\n";
    fNbin=nbinshisto;
    cout<<"Kept original number of bins: "<<fNbin<<endl;
  } else{
   
    while(nbinshisto%bingroup != 0) {
      bingroup--;
    }
    cout<<"Group "<<bingroup<<" bins"<<endl;
    fhistoInvMass->Rebin(bingroup);
    fNbin = fhistoInvMass->GetNbinsX();
    cout<<"New number of bins: "<<fNbin<<endl;
  } 
       
}

//************* fit

//___________________________________________________________________________

Double_t AliHFMassFitter::FitFunction4MassDistr (Double_t *x, Double_t *par){
  // Fit function for signal+background


  //exponential or linear fit
  //
  // par[0] = tot integral
  // par[1] = slope
  // par[2] = gaussian integral
  // par[3] = gaussian mean
  // par[4] = gaussian sigma
  
  Double_t total,bkg=0,sgn=0;
  
  if (ftypeOfFit4Bkg==0 || ftypeOfFit4Bkg==1) {
    if(ftypeOfFit4Sgn == 0) {

      Double_t parbkg[2] = {par[0]-par[2], par[1]};
      bkg = FitFunction4Bkg(x,parbkg);
    }
    if(ftypeOfFit4Sgn == 1) {
      Double_t parbkg[5] = {par[2],par[3],ffactor*par[4],par[0]-2*par[2], par[1]};
      bkg = FitFunction4Bkg(x,parbkg);
    }

    sgn = FitFunction4Sgn(x,&par[2]);  

  }

  //polynomial fit

    // par[0] = tot integral
    // par[1] = coef1
    // par[2] = coef2
    // par[3] = gaussian integral
    // par[4] = gaussian mean
    // par[5] = gaussian sigma

  if (ftypeOfFit4Bkg==2) {
    
    if(ftypeOfFit4Sgn == 0) {
      
      Double_t parbkg[3] = {par[0]-par[3], par[1], par[2]};
      bkg = FitFunction4Bkg(x,parbkg);
    }
    if(ftypeOfFit4Sgn == 1) {
      
      Double_t parbkg[6] = {par[3],par[4],ffactor*par[5],par[0]-2*par[3], par[1], par[2]};
     bkg = FitFunction4Bkg(x,parbkg);
    }
    
    sgn = FitFunction4Sgn(x,&par[3]);
  }

  if (ftypeOfFit4Bkg==3) {
   
    if(ftypeOfFit4Sgn == 0) {
	bkg=FitFunction4Bkg(x,par);
	sgn=FitFunction4Sgn(x,&par[1]);
    }
    if(ftypeOfFit4Sgn == 1) {
      Double_t parbkg[4]={par[1],par[2],ffactor*par[3],par[0]};
      bkg=FitFunction4Bkg(x,parbkg);
      sgn=FitFunction4Sgn(x,&par[1]);
    }
  }

  //Power fit

    // par[0] = tot integral
    // par[1] = coef1
    // par[2] = gaussian integral
    // par[3] = gaussian mean
    // par[4] = gaussian sigma

  if (ftypeOfFit4Bkg==4) {
    
    if(ftypeOfFit4Sgn == 0) {
      
      Double_t parbkg[2] = {par[0]-par[2], par[1]}; 
      bkg = FitFunction4Bkg(x,parbkg);
    }
    if(ftypeOfFit4Sgn == 1) {
      
      Double_t parbkg[5] = {par[2],par[3],ffactor*par[4],par[0]-par[2], par[1]}; 
      bkg = FitFunction4Bkg(x,parbkg);
    }
    sgn = FitFunction4Sgn(x,&par[2]);
  }


  //Power and exponential fit

    // par[0] = tot integral
    // par[1] = coef1
    // par[2] = coef2
    // par[3] = gaussian integral
    // par[4] = gaussian mean
    // par[5] = gaussian sigma

  if (ftypeOfFit4Bkg==5) {      
   
    if(ftypeOfFit4Sgn == 0) {
	Double_t parbkg[3] = {par[0]-par[3],par[1],par[2]}; 
	bkg = FitFunction4Bkg(x,parbkg); 
    }
    if(ftypeOfFit4Sgn == 1) {
     Double_t parbkg[6] = {par[3],par[4],ffactor*par[5],par[0]-par[3], par[1], par[2]}; 
     bkg = FitFunction4Bkg(x,parbkg);
    }
    sgn = FitFunction4Sgn(x,&par[3]);
  }                            

  total = bkg + sgn;
  
  return  total;
}

//_________________________________________________________________________
Double_t AliHFMassFitter::FitFunction4Sgn (Double_t *x, Double_t *par){
  // Fit function for the signal

  //gaussian = A/(sigma*sqrt(2*pi))*exp(-(x-mean)^2/2/sigma^2)
  //Par:
  // * [0] = integralSgn
  // * [1] = mean
  // * [2] = sigma
  //gaussian = [0]/TMath::Sqrt(2.*TMath::Pi())/[2]*exp[-(x-[1])*(x-[1])/(2*[2]*[2])]

  //  AliInfo("Signal function set to: Gaussian");
  return par[0]/TMath::Sqrt(2.*TMath::Pi())/par[2]*TMath::Exp(-(x[0]-par[1])*(x[0]-par[1])/2./par[2]/par[2]);

}

//__________________________________________________________________________

Double_t AliHFMassFitter::FitFunction4Bkg (Double_t *x, Double_t *par){
  // Fit function for the background

  Double_t maxDeltaM = 4.*fSigmaSgn;
  if(fSideBands && TMath::Abs(x[0]-fMass) < maxDeltaM) {
    TF1::RejectPoint();
    return 0;
  }
  Int_t firstPar=0;
  Double_t gaus2=0,total=-1;
  if(ftypeOfFit4Sgn == 1){
    firstPar=3;
    //gaussian = A/(sigma*sqrt(2*pi))*exp(-(x-mean)^2/2/sigma^2)
    //Par:
    // * [0] = integralSgn
    // * [1] = mean
    // * [2] = sigma
    //gaussian = [0]/TMath::Sqrt(2.*TMath::Pi())/[2]*exp[-(x-[1])*(x-[1])/(2*[2]*[2])]
    gaus2 = FitFunction4Sgn(x,par);
  }

  switch (ftypeOfFit4Bkg){
  case 0:
    //exponential
    //exponential = A*exp(B*x) -> integral(exponential)=A/B*exp(B*x)](min,max)
    //-> A = B*integral/(exp(B*max)-exp(B*min)) where integral can be written
    //as integralTot- integralGaus (=par [2])
    //Par:
    // * [0] = integralBkg;
    // * [1] = B;
    //exponential = [1]*[0]/(exp([1]*max)-exp([1]*min))*exp([1]*x)
    total = par[0+firstPar]*par[1+firstPar]/(TMath::Exp(par[1+firstPar]*fmaxMass)-TMath::Exp(par[1+firstPar]*fminMass))*TMath::Exp(par[1+firstPar]*x[0]);
    //    AliInfo("Background function set to: exponential");
    break;
  case 1:
    //linear
    //y=a+b*x -> integral = a(max-min)+1/2*b*(max^2-min^2) -> a = (integral-1/2*b*(max^2-min^2))/(max-min)=integral/(max-min)-1/2*b*(max+min)
    // * [0] = integralBkg;
    // * [1] = b;
    total= par[0+firstPar]/(fmaxMass-fminMass)+par[1+firstPar]*(x[0]-0.5*(fmaxMass+fminMass));
    //    AliInfo("Background function set to: linear");
    break;
  case 2:
    //polynomial
    //y=a+b*x+c*x**2 -> integral = a(max-min) + 1/2*b*(max^2-min^2) +
    //+ 1/3*c*(max^3-min^3) -> 
    //a = (integral-1/2*b*(max^2-min^2)-1/3*c*(max^3-min^3))/(max-min)
    // * [0] = integralBkg;
    // * [1] = b;
    // * [2] = c;
    total = par[0+firstPar]/(fmaxMass-fminMass)+par[1]*(x[0]-0.5*(fmaxMass+fminMass))+par[2+firstPar]*(x[0]*x[0]-1/3.*(fmaxMass*fmaxMass*fmaxMass-fminMass*fminMass*fminMass)/(fmaxMass-fminMass));
    //    AliInfo("Background function set to: polynomial");
    break;
  case 3:
    total=par[0+firstPar];
    break;
  case 4:  
    //power function 
    //y=a(x-m_pi)^b -> integral = a/(b+1)*((max-m_pi)^(b+1)-(min-m_pi)^(b+1))
    //
    //a = integral*(b+1)/((max-m_pi)^(b+1)-(min-m_pi)^(b+1))
    // * [0] = integralBkg;
    // * [1] = b;
    // a(power function) = [0]*([1]+1)/((max-m_pi)^([1]+1)-(min-m_pi)^([1]+1))*(x-m_pi)^[1]
    {
    Double_t mpi = TDatabasePDG::Instance()->GetParticle(211)->Mass();

    total = par[0+firstPar]*(par[1+firstPar]+1.)/(TMath::Power(fmaxMass-mpi,par[1+firstPar]+1.)-TMath::Power(fminMass-mpi,par[1+firstPar]+1.))*TMath::Power(x[0]-mpi,par[1+firstPar]);
    //    AliInfo("Background function set to: powerlaw");
    }
    break;
  case 5:
   //power function wit exponential
    //y=a*Sqrt(x-m_pi)*exp(-b*(x-m_pi))  
    { 
    Double_t mpi = TDatabasePDG::Instance()->GetParticle(211)->Mass();

    total = par[1+firstPar]*TMath::Sqrt(x[0] - mpi)*TMath::Exp(-1.*par[2+firstPar]*(x[0]-mpi));
    //    AliInfo("Background function set to: wit exponential");
    } 
    break;
//   default:
//     Types of Fit Functions for Background:
//     * 0 = exponential;
//     * 1 = linear;
//     * 2 = polynomial 2nd order
//     * 3 = no background"<<endl;
//     * 4 = Power function 
//     * 5 = Power function with exponential 

  }
  return total+gaus2;
}

//__________________________________________________________________________
Bool_t AliHFMassFitter::SideBandsBounds(){

  //determines the ranges of the side bands

  if (fNbin==0) fNbin=fhistoInvMass->GetNbinsX();
  Double_t minHisto=fhistoInvMass->GetBinLowEdge(1);
  Double_t maxHisto=fhistoInvMass->GetBinLowEdge(fNbin+1);

  Double_t sidebandldouble=0.,sidebandrdouble=0.;

  if(fMass-fminMass < 0 || fmaxMass-fMass <0) {
    AliError("Left limit of range > mean or right limit of range < mean: change left/right limit or initial mean value");
    return kFALSE;
  } 
  
  //histo limit = fit function limit
  if((TMath::Abs(fminMass-minHisto) < 1e-6 || TMath::Abs(fmaxMass - maxHisto) < 1e-6) && (fMass-4.*fSigmaSgn-fminMass) < 1e-6){
    Double_t coeff = (fMass-fminMass)/fSigmaSgn;
    sidebandldouble=(fMass-0.5*coeff*fSigmaSgn);
    sidebandrdouble=(fMass+0.5*coeff*fSigmaSgn);
    cout<<"Changed number of sigma from 4 to "<<0.5*coeff<<" for the estimation of the side bands"<<endl;
    if (coeff<3) cout<<"Side bands inside 3 sigma, may be better use ftypeOfFit4Bkg = 3 (only signal)"<<endl;
    if (coeff<2) {
      cout<<"Side bands inside 2 sigma. Change mode: ftypeOfFit4Bkg = 3"<<endl;
      ftypeOfFit4Bkg=3;
      //set binleft and right without considering SetRangeFit- anyway no bkg!
      sidebandldouble=(fMass-4.*fSigmaSgn);
      sidebandrdouble=(fMass+4.*fSigmaSgn);
    }
  }
  else {
    sidebandldouble=(fMass-4.*fSigmaSgn);
    sidebandrdouble=(fMass+4.*fSigmaSgn);
  }

  cout<<"Left side band ";
  Double_t tmp=0.;
  tmp=sidebandldouble;
  //calculate bin corresponding to fSideBandl
  fSideBandl=fhistoInvMass->FindBin(sidebandldouble);
  if (sidebandldouble >= fhistoInvMass->GetBinCenter(fSideBandl)) fSideBandl++;
  sidebandldouble=fhistoInvMass->GetBinLowEdge(fSideBandl);
  
  if(TMath::Abs(tmp-sidebandldouble) > 1e-6){
    cout<<tmp<<" is not allowed, changing it to the nearest value allowed: ";
  }
  cout<<sidebandldouble<<" (bin "<<fSideBandl<<")"<<endl;

  cout<<"Right side band ";
  tmp=sidebandrdouble;
  //calculate bin corresponding to fSideBandr
  fSideBandr=fhistoInvMass->FindBin(sidebandrdouble);
  if (sidebandrdouble < fhistoInvMass->GetBinCenter(fSideBandr)) fSideBandr--;
  sidebandrdouble=fhistoInvMass->GetBinLowEdge(fSideBandr+1);

  if(TMath::Abs(tmp-sidebandrdouble) > 1e-6){
    AliWarning(Form("%f is not allowed, changing it to the nearest value allowed: \n",tmp));
  }
  cout<<sidebandrdouble<<" (bin "<<fSideBandr<<")"<<endl;
  if (fSideBandl==0 || fSideBandr==fNbin) {
    AliError("Error! Range too little");
    return kFALSE;
  }
  return kTRUE;
}

//__________________________________________________________________________

void AliHFMassFitter::GetSideBandsBounds(Int_t &left, Int_t &right) const{
  
  // get the range of the side bands

  if (fSideBandl==0 && fSideBandr==0){
    cout<<"Use MassFitter method first"<<endl;
    return;
  }
  left=fSideBandl;
  right=fSideBandr;
}

//__________________________________________________________________________
Bool_t AliHFMassFitter::CheckRangeFit(){
  //check if the limit of the range correspond to the limit of bins. If not reset the limit to the nearer value which satisfy this condition

  if (!fhistoInvMass) {
    cout<<"No histogram to fit! SetHisto(TH1F* h) before! "<<endl;
    return kFALSE;
  }
  Bool_t leftok=kFALSE, rightok=kFALSE;
  Int_t nbins=fhistoInvMass->GetNbinsX();
  Double_t minhisto=fhistoInvMass->GetBinLowEdge(1), maxhisto=fhistoInvMass->GetBinLowEdge(nbins+1);

  //check if limits are inside histogram range

  if( fminMass-minhisto < 0. ) {
    cout<<"Out of histogram left bound! Setting to "<<minhisto<<endl;
    fminMass=minhisto;
  }
  if( fmaxMass-maxhisto > 0. ) {
    cout<<"Out of histogram right bound! Setting to"<<maxhisto<<endl;
    fmaxMass=maxhisto;
  }

  Double_t tmp=0.;
  tmp=fminMass;
  //calculate bin corresponding to fminMass
  fminBinMass=fhistoInvMass->FindBin(fminMass);
  if (fminMass >= fhistoInvMass->GetBinCenter(fminBinMass)) fminBinMass++;
  fminMass=fhistoInvMass->GetBinLowEdge(fminBinMass);
  if(TMath::Abs(tmp-fminMass) > 1e-6){
    cout<<"Left bound "<<tmp<<" is not allowed, changing it to the nearest value allowed: "<<fminMass<<endl;
    leftok=kTRUE;
  }
 
  tmp=fmaxMass;
  //calculate bin corresponding to fmaxMass
  fmaxBinMass=fhistoInvMass->FindBin(fmaxMass);
  if (fmaxMass < fhistoInvMass->GetBinCenter(fmaxBinMass)) fmaxBinMass--;
  fmaxMass=fhistoInvMass->GetBinLowEdge(fmaxBinMass+1);
  if(TMath::Abs(tmp-fmaxMass) > 1e-6){
    cout<<"Right bound "<<tmp<<" is not allowed, changing it to the nearest value allowed: "<<fmaxMass<<endl;
    rightok=kTRUE;
  }

  return (leftok && rightok);
 
}

//__________________________________________________________________________

Bool_t AliHFMassFitter::MassFitter(Bool_t draw){  
  // Main method of the class: performs the fit of the histogram
  
  //Set default fitter Minuit in order to use gMinuit in the contour plots    
  TVirtualFitter::SetDefaultFitter("Minuit");


  Bool_t isBkgOnly=kFALSE;

  Int_t fit1status=RefitWithBkgOnly(kFALSE);
  if(fit1status){
    Int_t checkinnsigma=4;
    Double_t range[2]={fMass-checkinnsigma*fSigmaSgn,fMass+checkinnsigma*fSigmaSgn};
    TF1* func=GetHistoClone()->GetFunction("funcbkgonly");
    Double_t intUnderFunc=func->Integral(range[0],range[1]);
    Double_t intUnderHisto=fhistoInvMass->Integral(fhistoInvMass->FindBin(range[0]),fhistoInvMass->FindBin(range[1]),"width");
    cout<<"Pick zone: IntFunc = "<<intUnderFunc<<"; IntHist = "<<intUnderHisto<<"\tDiff = "<<intUnderHisto-intUnderFunc<<"\tRelDiff = "<<(intUnderHisto-intUnderFunc)/intUnderFunc<<endl;
    Double_t diffUnderPick=(intUnderHisto-intUnderFunc);
    intUnderFunc=func->Integral(fminMass,fminMass+checkinnsigma*fSigmaSgn);
    intUnderHisto=fhistoInvMass->Integral(fhistoInvMass->FindBin(fminMass),fhistoInvMass->FindBin(fminMass+checkinnsigma*fSigmaSgn),"width");
    cout<<"Band (l) zone: IntFunc = "<<intUnderFunc<<"; IntHist = "<<intUnderHisto<<"\tDiff = "<<intUnderHisto-intUnderFunc<<"\tRelDiff = "<<(intUnderHisto-intUnderFunc)/intUnderFunc<<endl;
    Double_t diffUnderBands=(intUnderHisto-intUnderFunc);
    Double_t relDiff=diffUnderPick/diffUnderBands;
    cout<<"Relative difference = "<<relDiff<<endl;
    if(TMath::Abs(relDiff) < 0.25) isBkgOnly=kTRUE;
    else{
      cout<<"Relative difference = "<<relDiff<<": I suppose there is some signal, continue with total fit!"<<endl;
    }
  }
  if(isBkgOnly) {
    cout<<"INFO!! The histogram contains only background"<<endl;
    if(draw)DrawFit();

    //increase counter of number of fits done
    fcounter++;

    return kTRUE;
  }

  Int_t bkgPar = fNFinalPars-3; //background function's number of parameters

  cout<<"fNFinalPars = "<<fNFinalPars<<"\tbkgPar = "<<bkgPar<<endl;


  TString listname="contourplot";
  listname+=fcounter;
  if(!fContourGraph){  
    fContourGraph=new TList();
    fContourGraph->SetOwner();
  }

  fContourGraph->SetName(listname);


  //function names
  TString bkgname="funcbkg";
  TString bkg1name="funcbkg1";
  TString massname="funcmass";

  //Total integral
  Double_t totInt = fhistoInvMass->Integral(fminBinMass,fmaxBinMass, "width");
  //cout<<"Here tot integral is = "<<totInt<<"; integral in whole range is "<<fhistoInvMass->Integral("width")<<endl;
  fSideBands = kTRUE;
  Double_t width=fhistoInvMass->GetBinWidth(1);
  //cout<<"fNbin = "<<fNbin<<endl;
  if (fNbin==0) fNbin=fhistoInvMass->GetNbinsX();

  Bool_t ok=SideBandsBounds();
  if(!ok) return kFALSE;
  
  //sidebands integral - first approx (from histo)
  Double_t sideBandsInt=(Double_t)fhistoInvMass->Integral(1,fSideBandl,"width") + (Double_t)fhistoInvMass->Integral(fSideBandr,fNbin,"width");
  cout<<"------nbin = "<<fNbin<<"\twidth = "<<width<<"\tbinleft = "<<fSideBandl<<"\tbinright = "<<fSideBandr<<endl;
  cout<<"------sideBandsInt - first approx = "<<sideBandsInt<<endl;
  if (sideBandsInt<=0) {
    cout<<"! sideBandsInt <=0. There's a problem, cannot start the fit"<<endl;
    return kFALSE;
  }
  
  /*Fit Bkg*/


  TF1 *funcbkg = new TF1(bkgname.Data(),this,&AliHFMassFitter::FitFunction4Bkg,fminMass,fmaxMass,bkgPar,"AliHFMassFitter","FitFunction4Bkg");
  cout<<"Function name = "<<funcbkg->GetName()<<endl<<endl;

  funcbkg->SetLineColor(2); //red

  //first fit for bkg: approx bkgint
 
  switch (ftypeOfFit4Bkg) {
  case 0: //gaus+expo
    funcbkg->SetParNames("BkgInt","Slope"); 
    funcbkg->SetParameters(sideBandsInt,-2.); 
    break;
  case 1:
    funcbkg->SetParNames("BkgInt","Slope");
    funcbkg->SetParameters(sideBandsInt,-100.); 
    break;
  case 2:
    funcbkg->SetParNames("BkgInt","Coef1","Coef2");
    funcbkg->SetParameters(sideBandsInt,-10.,5);
    break;
  case 3:
    if(ftypeOfFit4Sgn==0){
      funcbkg->SetParNames("Const");
      funcbkg->SetParameter(0,0.);
      funcbkg->FixParameter(0,0.);
    }
    break;
  case 4:
    funcbkg->SetParNames("BkgInt","Coef2");  
    funcbkg->SetParameters(sideBandsInt,0.5);
    break;
 case 5:
    funcbkg->SetParNames("BkgInt","Coef1","Coef2");
    funcbkg->SetParameters(sideBandsInt, -10., 5.);
    break;
  default:
    cout<<"Wrong choise of ftypeOfFit4Bkg ("<<ftypeOfFit4Bkg<<")"<<endl;
    return kFALSE;
    break;
  }
  cout<<"\nBACKGROUND FIT - only combinatorial"<<endl;
  Int_t ftypeOfFit4SgnBkp=ftypeOfFit4Sgn;
  
  Double_t intbkg1=0,slope1=0,conc1=0;
  //if only signal and reflection: skip
  if (!(ftypeOfFit4Bkg==3 && ftypeOfFit4Sgn==1)) {
    ftypeOfFit4Sgn=0;
    fhistoInvMass->Fit(bkgname.Data(),Form("R,%sE,0",fFitOption.Data()));
   
    for(Int_t i=0;i<bkgPar;i++){
      fFitPars[i]=funcbkg->GetParameter(i);
      //cout<<i<<"\t"<<funcbkg->GetParameter(i)<<"\t";
      fFitPars[fNFinalPars+2*bkgPar+3+i]= funcbkg->GetParError(i);
      //cout<<fNFinalPars+2*bkgPar+3+i<<"\t"<< funcbkg->GetParError(i)<<endl;
    }
    fSideBands = kFALSE;
    //intbkg1 = funcbkg->GetParameter(0);

    intbkg1 = funcbkg->Integral(fminMass,fmaxMass);
    if(ftypeOfFit4Bkg!=3) slope1 = funcbkg->GetParameter(1);
    if(ftypeOfFit4Bkg==2) conc1 = funcbkg->GetParameter(2);
    if(ftypeOfFit4Bkg==5) conc1 = funcbkg->GetParameter(2); 
 

    //cout<<"First fit: \nintbkg1 = "<<intbkg1<<"\t(Compare with par0 = "<<funcbkg->GetParameter(0)<<")\nslope1= "<<slope1<<"\nconc1 = "<<conc1<<endl;
  } 
  else cout<<"\t\t//"<<endl;
  
  ftypeOfFit4Sgn=ftypeOfFit4SgnBkp;
  TF1 *funcbkg1=0;
  if (ftypeOfFit4Sgn == 1) {
    cout<<"\nBACKGROUND FIT WITH REFLECTION"<<endl;
    bkgPar+=3;
    
    //cout<<"fNFinalPars = "<<fNFinalPars<<"\tbkgPar = "<<bkgPar<<endl;

    funcbkg1 = new TF1(bkg1name.Data(),this,&AliHFMassFitter::FitFunction4Bkg,fminMass,fmaxMass,bkgPar,"AliHFMassFitter","FitFunction4Bkg");
    cout<<"Function name = "<<funcbkg1->GetName()<<endl;

    funcbkg1->SetLineColor(2); //red

    switch (ftypeOfFit4Bkg) {
    case 0:
	{
        cout<<"*** Exponential Fit ***"<<endl;
        funcbkg1->SetParNames("IntGB","MeanGB","SigmaGB","BkgInt","Slope");
	funcbkg1->SetParameters(0.5*(totInt-intbkg1),fMass,ffactor*fSigmaSgn,intbkg1,slope1);
	}
        break;
     case 1: 
	{
	cout<<"*** Linear Fit ***"<<endl;
        funcbkg1->SetParNames("IntGB","MeanGB","SigmaGB","BkgInt","Slope");
	funcbkg1->SetParameters(0.5*(totInt-intbkg1),fMass,ffactor*fSigmaSgn,intbkg1,slope1);
	}
        break;    
     case 2:
        {
        cout<<"*** Polynomial Fit ***"<<endl;
        funcbkg1->SetParNames("IntGB","MeanGB","SigmaGB","BkgInt","Coef1","Coef2");
        funcbkg1->SetParameters(0.5*(totInt-intbkg1),fMass,ffactor*fSigmaSgn,intbkg1,slope1,conc1);
        }
        break;
    case 3:
       //no background: gaus sign+ gaus broadened
	{
	cout<<"*** No background Fit ***"<<endl;
	funcbkg1->SetParNames("IntGB","MeanGB","SigmaGB","Const");
	funcbkg1->SetParameters(0.5*totInt,fMass,ffactor*fSigmaSgn,0.); 
	funcbkg1->FixParameter(3,0.);
	} 
        break;
     case 4:
	{	
 	cout<<"*** Power function Fit ***"<<endl;
	funcbkg1->SetParNames("IntGB","MeanGB","SigmaGB","BkgInt","Coef2");
        funcbkg1->SetParameters(0.5*(totInt-intbkg1),fMass,ffactor*fSigmaSgn,intbkg1,slope1);
       	}
        break;
      case 5:
	{ 
	cout<<"*** Power function conv. with exponential Fit ***"<<endl;
        funcbkg1->SetParNames("IntGB","MeanGB","SigmaGB","BkgInt","Coef1","Coef2");
        funcbkg1->SetParameters(0.5*(totInt-intbkg1),fMass,ffactor*fSigmaSgn,intbkg1,slope1,conc1);
	}
        break;
    }
    //cout<<"Parameters set to: "<<0.5*(totInt-intbkg1)<<"\t"<<fMass<<"\t"<<ffactor*fSigmaSgn<<"\t"<<intbkg1<<"\t"<<slope1<<"\t"<<conc1<<"\t"<<endl;
    //cout<<"Limits: ("<<fminMass<<","<<fmaxMass<<")\tnPar = "<<bkgPar<<"\tgsidebands = "<<fSideBands<<endl;

    Int_t status=fhistoInvMass->Fit(bkg1name.Data(),Form("R,%sE,+,0",fFitOption.Data()));
    if (status != 0){
      cout<<"Minuit returned "<<status<<endl;
      return kFALSE;
    }

    for(Int_t i=0;i<bkgPar;i++){
      fFitPars[bkgPar-3+i]=funcbkg1->GetParameter(i);
      //cout<<bkgPar-3+i<<"\t"<<funcbkg1->GetParameter(i);
      fFitPars[fNFinalPars+3*bkgPar-6+i]= funcbkg1->GetParError(i);
      //cout<<"\t"<<fNFinalPars+3*bkgPar-6+i<<"\t"<<funcbkg1->GetParError(i)<<endl; 
    }

    intbkg1=funcbkg1->GetParameter(3);
    if(ftypeOfFit4Bkg!=3) slope1 = funcbkg1->GetParameter(4);
    if(ftypeOfFit4Bkg==2) conc1 = funcbkg1->GetParameter(5);
    if(ftypeOfFit4Bkg==5) conc1 = funcbkg1->GetParameter(5); 


  } else {
    bkgPar+=3;

    for(Int_t i=0;i<3;i++){
      fFitPars[bkgPar-3+i]=0.;
      cout<<bkgPar-3+i<<"\t"<<0.<<"\t";
      fFitPars[fNFinalPars+3*bkgPar-6+i]= 0.;
      cout<<fNFinalPars+3*bkgPar-6+i<<"\t"<<0.<<endl;
    }
  
    for(Int_t i=0;i<bkgPar-3;i++){
      fFitPars[bkgPar+i]=funcbkg->GetParameter(i);
      cout<<bkgPar+i<<"\t"<<funcbkg->GetParameter(i)<<"\t";
      fFitPars[fNFinalPars+3*bkgPar-3+i]= funcbkg->GetParError(i);
      cout<<fNFinalPars+3*bkgPar-3+i<<"\t"<< funcbkg->GetParError(i)<<endl;
    }

   
  }

  //sidebands integral - second approx (from fit)
  fSideBands = kFALSE;
  Double_t bkgInt;
  //cout<<"Compare intbkg1 = "<<intbkg1<<" and integral = ";
  if(ftypeOfFit4Sgn == 1) bkgInt=funcbkg1->Integral(fminMass,fmaxMass);
  else bkgInt=funcbkg->Integral(fminMass,fmaxMass);
  //cout<</*"------BkgInt(Fit) = "<<*/bkgInt<<endl;

  //Signal integral - first approx
  Double_t sgnInt;
  sgnInt = totInt-bkgInt;
  //cout<<"------TotInt = "<<totInt<<"\tsgnInt = "<<sgnInt<<endl;
  if (sgnInt <= 0){
    cout<<"Setting sgnInt = - sgnInt"<<endl;
    sgnInt=(-1)*sgnInt;
  }
  /*Fit All Mass distribution with exponential + gaussian (+gaussian braodened) */
  TF1 *funcmass = new TF1(massname.Data(),this,&AliHFMassFitter::FitFunction4MassDistr,fminMass,fmaxMass,fNFinalPars,"AliHFMassFitter","FitFunction4MassDistr");
  cout<<"Function name = "<<funcmass->GetName()<<endl<<endl;
  funcmass->SetLineColor(4); //blue

  //Set parameters
  cout<<"\nTOTAL FIT"<<endl;

  if(fNFinalPars==5){
    funcmass->SetParNames("TotInt","Slope","SgnInt","Mean","Sigma");
    funcmass->SetParameters(totInt,slope1,sgnInt,fMass,fSigmaSgn);

    //cout<<"Parameters set to: "<<totInt<<"\t"<<slope1<<"\t"<<sgnInt<<"\t"<<fMass<<"\t"<<fSigmaSgn<<"\t"<<endl;
    //cout<<"Limits: ("<<fminMass<<","<<fmaxMass<<")\tnPar = "<<fNFinalPars<<"\tgsidebands = "<<fSideBands<<endl;
    if(fFixPar[0]){
      funcmass->FixParameter(0,totInt);
    }
    if(fFixPar[1]){
      funcmass->FixParameter(1,slope1);
    }
    if(fFixPar[2]){
      funcmass->FixParameter(2,sgnInt);
    }
    if(fFixPar[3]){
      funcmass->FixParameter(3,fMass);
    }
    if(fFixPar[4]){
      funcmass->FixParameter(4,fSigmaSgn);
    }
  }
  if (fNFinalPars==6){
    funcmass->SetParNames("TotInt","Coef1","Coef2","SgnInt","Mean","Sigma");
    funcmass->SetParameters(totInt,slope1,conc1,sgnInt,fMass,fSigmaSgn);
 
    //cout<<"Parameters set to: "<<totInt<<"\t"<<slope1<<"\t"<<conc1<<"\t"<<sgnInt<<"\t"<<fMass<<"\t"<<fSigmaSgn<<"\t"<<endl;
    //cout<<"Limits: ("<<fminMass<<","<<fmaxMass<<")\tnPar = "<<fNFinalPars<<"\tgsidebands = "<<fSideBands<<endl;
    if(fFixPar[0])funcmass->FixParameter(0,totInt);
    if(fFixPar[1])funcmass->FixParameter(1,slope1);
    if(fFixPar[2])funcmass->FixParameter(2,conc1);
    if(fFixPar[3])funcmass->FixParameter(3,sgnInt);
    if(fFixPar[4])funcmass->FixParameter(4,fMass);
    if(fFixPar[5])funcmass->FixParameter(5,fSigmaSgn); 
    //
    //funcmass->FixParameter(2,sgnInt);
  }
  if(fNFinalPars==4){
    funcmass->SetParNames("Const","SgnInt","Mean","Sigma");
    if(ftypeOfFit4Sgn == 1) funcmass->SetParameters(0.,0.5*totInt,fMass,fSigmaSgn);
    else funcmass->SetParameters(0.,totInt,fMass,fSigmaSgn);
    if(fFixPar[0]) funcmass->FixParameter(0,0.);
    if(fFixPar[1])funcmass->FixParameter(1,sgnInt);
    if(fFixPar[2])funcmass->FixParameter(2,fMass);
    if(fFixPar[3])funcmass->FixParameter(3,fSigmaSgn);
   //cout<<"Parameters set to: "<<0.5*totInt<<"\t"<<fMass<<"\t"<<fSigmaSgn<<"\t"<<endl;
    //cout<<"Limits: ("<<fminMass<<","<<fmaxMass<<")\tnPar = "<<fNFinalPars<<"\tgsidebands = "<<fSideBands<<endl;

  }

  Int_t status;

  status = fhistoInvMass->Fit(massname.Data(),Form("R,%sE,+,0",fFitOption.Data()));
  if (status != 0){
    cout<<"Minuit returned "<<status<<endl;
    return kFALSE;
  }

  cout<<"fit done"<<endl;
  //reset value of fMass and fSigmaSgn to those found from fit
  fMass=funcmass->GetParameter(fNFinalPars-2);
  fMassErr=funcmass->GetParError(fNFinalPars-2);
  fSigmaSgn=funcmass->GetParameter(fNFinalPars-1);
  fSigmaSgnErr=funcmass->GetParError(fNFinalPars-1);
  fRawYield=funcmass->GetParameter(fNFinalPars-3)/fhistoInvMass->GetBinWidth(1);
  fRawYieldErr=funcmass->GetParError(fNFinalPars-3)/fhistoInvMass->GetBinWidth(1);

  for(Int_t i=0;i<fNFinalPars;i++){
    fFitPars[i+2*bkgPar-3]=funcmass->GetParameter(i);
    fFitPars[fNFinalPars+4*bkgPar-6+i]= funcmass->GetParError(i);
    //cout<<i+2*bkgPar-3<<"\t"<<funcmass->GetParameter(i)<<"\t\t"<<fNFinalPars+4*bkgPar-6+i<<"\t"<<funcmass->GetParError(i)<<endl;
  }
  /*
  //check: cout parameters  
  for(Int_t i=0;i<2*(fNFinalPars+2*bkgPar-3);i++){
    cout<<i<<"\t"<<fFitPars[i]<<endl;
    }
  */
  
  if(funcmass->GetParameter(fNFinalPars-1) <0 || funcmass->GetParameter(fNFinalPars-2) <0 || funcmass->GetParameter(fNFinalPars-3) <0 ) {
    cout<<"IntS or mean or sigma negative. You may tray to SetInitialGaussianSigma(..) and SetInitialGaussianMean(..)"<<endl;
    return kFALSE;
  }

  //increase counter of number of fits done
  fcounter++;

  //contour plots
  if(draw){

    for (Int_t kpar=1; kpar<fNFinalPars;kpar++){

      for(Int_t jpar=kpar+1;jpar<fNFinalPars;jpar++){
	cout<<"Par "<<kpar<<" and "<<jpar<<endl;
	
	// produce 2 contours per couple of parameters
	TGraph* cont[2] = {0x0, 0x0};
	const Double_t errDef[2] = {1., 4.}; 
	for (Int_t i=0; i<2; i++) {
	  gMinuit->SetErrorDef(errDef[i]);
	  cont[i] = (TGraph*)gMinuit->Contour(80,kpar,jpar);
	  cout<<"Minuit Status = "<<gMinuit->GetStatus()<<endl;
	}
	
	if(!cont[0] || !cont[1]){
	  cout<<"Skipping par "<<kpar<<" vs par "<<jpar<<endl;
	  continue;
	}
	  
	// set graph titles and add them to the list
	TString title = "Contour plot";
	TString titleX = funcmass->GetParName(kpar);
	TString titleY = funcmass->GetParName(jpar);
	for (Int_t i=0; i<2; i++) {
	  cont[i]->SetName( Form("cperr%d_%d%d", i, kpar, jpar) );
	  cont[i]->SetTitle(title);
	  cont[i]->GetXaxis()->SetTitle(titleX);
	  cont[i]->GetYaxis()->SetTitle(titleY);
	  cont[i]->GetYaxis()->SetLabelSize(0.033);
	  cont[i]->GetYaxis()->SetTitleSize(0.033);
	  cont[i]->GetYaxis()->SetTitleOffset(1.67);
	  
	  fContourGraph->Add(cont[i]);
	}
	
	// plot them
	TString cvname = Form("c%d%d", kpar, jpar);
	TCanvas *c4=new TCanvas(cvname,cvname,600,600);
	c4->cd();
	cont[1]->SetFillColor(38);
	cont[1]->Draw("alf");
	cont[0]->SetFillColor(9);
	cont[0]->Draw("lf");
        
      }
      
    }
    
  }

  if (ftypeOfFit4Sgn == 1) {
    delete funcbkg1;
  }
  delete funcbkg;
  delete funcmass;
  
  AddFunctionsToHisto();
  if (draw) DrawFit();
 

  return kTRUE;
}

//______________________________________________________________________________

Bool_t AliHFMassFitter::RefitWithBkgOnly(Bool_t draw){

  //perform a fit with background function only. Can be useful to try when fit fails to understand if it is because there's no signal
  //If you want to change the backgroud function or range use SetType or SetRangeFit before

  TString bkgname="funcbkgonly";
  fSideBands = kFALSE;

  TF1* funcbkg = new TF1(bkgname.Data(),this,&AliHFMassFitter::FitFunction4Bkg,fminMass,fmaxMass,fNFinalPars-3,"AliHFMassFitter","FitFunction4Bkg");

  funcbkg->SetLineColor(kBlue+3); //dark blue

  Double_t integral=fhistoInvMass->Integral(fhistoInvMass->FindBin(fminMass),fhistoInvMass->FindBin(fmaxMass),"width");

  switch (ftypeOfFit4Bkg) {
  case 0: //gaus+expo
    funcbkg->SetParNames("BkgInt","Slope"); 
    funcbkg->SetParameters(integral,-2.); 
    break;
  case 1:
    funcbkg->SetParNames("BkgInt","Slope");
    funcbkg->SetParameters(integral,-100.); 
    break;
  case 2:
    funcbkg->SetParNames("BkgInt","Coef1","Coef2");
    funcbkg->SetParameters(integral,-10.,5);
    break;
  case 3:
    cout<<"Warning! This choice does not make a lot of sense..."<<endl;
    if(ftypeOfFit4Sgn==0){
      funcbkg->SetParNames("Const");
      funcbkg->SetParameter(0,0.);
      funcbkg->FixParameter(0,0.);
    }
    break;
  case 4:     
    funcbkg->SetParNames("BkgInt","Coef1");
    funcbkg->SetParameters(integral,0.5);
    break;
  case 5:    
    funcbkg->SetParNames("BkgInt","Coef1","Coef2");
    funcbkg->SetParameters(integral,-10.,5.);
    break;
  default:
    cout<<"Wrong choise of ftypeOfFit4Bkg ("<<ftypeOfFit4Bkg<<")"<<endl;
    return kFALSE;
    break;
  }


  Int_t status=fhistoInvMass->Fit(bkgname.Data(),Form("R,%sE,+,0",fFitOption.Data()));
  if (status != 0){
    cout<<"Minuit returned "<<status<<endl;
    return kFALSE;
  }
  AddFunctionsToHisto();

  if(draw) DrawFit();

  return kTRUE;

}
//_________________________________________________________________________
Double_t AliHFMassFitter::GetChiSquare() const{
  //Get Chi^2 method
  TF1 *funcmass=(TF1*)fhistoInvMass->GetFunction("funcmass");
  if(!funcmass) {
    cout<<"funcmass not found"<<endl;
    return -1;
  }
  return funcmass->GetChisquare();
}

//_________________________________________________________________________
Double_t AliHFMassFitter::GetReducedChiSquare() const{
  //Get reduced Chi^2 method
  TF1 *funcmass=(TF1*)fhistoInvMass->GetFunction("funcmass");
  if(!funcmass) {
    cout<<"funcmass not found"<<endl;
    return -1;
  }
  return funcmass->GetChisquare()/funcmass->GetNDF();
}

//*********output

//_________________________________________________________________________
void  AliHFMassFitter::GetFitPars(Float_t *vector) const {
  // Return fit parameters
  
  for(Int_t i=0;i<fParsSize;i++){
    vector[i]=fFitPars[i];
  }
}


//_________________________________________________________________________
void AliHFMassFitter::IntS(Float_t *valuewitherror) const {

  //gives the integral of signal obtained from fit parameters
  if(!valuewitherror) {
    printf("AliHFMassFitter::IntS: got a null pointer\n");
    return;
  }

  Int_t index=fParsSize/2 - 3;
  valuewitherror[0]=fFitPars[index];
  index=fParsSize - 3;
  valuewitherror[1]=fFitPars[index];
}


//_________________________________________________________________________
void AliHFMassFitter::AddFunctionsToHisto(){

  //Add the background function in the complete range to the list of functions attached to the histogram

  //cout<<"AddFunctionsToHisto called"<<endl;
  TString bkgname = "funcbkg";

  Bool_t done1=kFALSE,done2=kFALSE;

  TString bkgnamesave=bkgname;
  TString testname=bkgname;
  testname += "FullRange";
  TF1 *testfunc=(TF1*)fhistoInvMass->FindObject(testname.Data());
  if(testfunc){
    done1=kTRUE;
    testfunc=0x0;
  }
  testname="funcbkgonly";
  testfunc=(TF1*)fhistoInvMass->FindObject(testname.Data());
  if(testfunc){
    done2=kTRUE;
    testfunc=0x0;
  }

  if(done1 && done2){
    cout<<"AddFunctionsToHisto already used: exiting...."<<endl;
    return;
  }

  TList *hlist=fhistoInvMass->GetListOfFunctions();
  hlist->ls();

  if(!done2){
    TF1 *bonly=(TF1*)hlist->FindObject(testname.Data());
    if(!bonly){
      cout<<testname.Data()<<" not found looking for complete fit"<<endl;
    }else{
      bonly->SetLineColor(kBlue+3);
      hlist->Add((TF1*)bonly->Clone());
      delete bonly;
    }

  }

  if(!done1){
    TF1 *b=(TF1*)hlist->FindObject(bkgname.Data());
    if(!b){
      cout<<bkgname<<" not found, cannot produce "<<bkgname<<"FullRange and "<<bkgname<<"Recalc"<<endl;
      return;
    }

    bkgname += "FullRange";
    TF1 *bfullrange=new TF1(bkgname.Data(),this,&AliHFMassFitter::FitFunction4Bkg,fminMass,fmaxMass,fNFinalPars-3,"AliHFMassFitter","FitFunction4Bkg");
    //cout<<bfullrange->GetName()<<endl;
    for(Int_t i=0;i<fNFinalPars-3;i++){
      bfullrange->SetParName(i,b->GetParName(i));
      bfullrange->SetParameter(i,b->GetParameter(i));
      bfullrange->SetParError(i,b->GetParError(i));
    }
    bfullrange->SetLineStyle(4);
    bfullrange->SetLineColor(14);

    bkgnamesave += "Recalc";

    TF1 *blastpar=new TF1(bkgnamesave.Data(),this,&AliHFMassFitter::FitFunction4Bkg,fminMass,fmaxMass,fNFinalPars-3,"AliHFMassFitter","FitFunction4Bkg");

    TF1 *mass=fhistoInvMass->GetFunction("funcmass");

    if (!mass){
      cout<<"funcmass doesn't exist "<<endl;
      return;
    }

    //intBkg=intTot-intS
    blastpar->SetParameter(0,mass->GetParameter(0)-mass->GetParameter(fNFinalPars-3));
    blastpar->SetParError(0,mass->GetParError(fNFinalPars-3));
    if (fNFinalPars>=5) {
      blastpar->SetParameter(1,mass->GetParameter(1));
      blastpar->SetParError(1,mass->GetParError(1));
    }
    if (fNFinalPars==6) {
      blastpar->SetParameter(2,mass->GetParameter(2));
      blastpar->SetParError(2,mass->GetParError(2));
    }

    blastpar->SetLineStyle(1);
    blastpar->SetLineColor(2);

    hlist->Add((TF1*)bfullrange->Clone());
    hlist->Add((TF1*)blastpar->Clone());
    hlist->ls();
  
    delete bfullrange;
    delete blastpar;
    
  }


}

//_________________________________________________________________________

TH1F* AliHFMassFitter::GetHistoClone() const{

  TH1F* hout=(TH1F*)fhistoInvMass->Clone(fhistoInvMass->GetName());
  return hout;
}
//_________________________________________________________________________

void AliHFMassFitter::WriteHisto(TString path) const {

  //Write the histogram in the default file HFMassFitterOutput.root

  if (fcounter == 0) {
    cout<<"Use MassFitter method before WriteHisto"<<endl;
    return;
  }
  TH1F* hget=(TH1F*)fhistoInvMass->Clone();

  path += "HFMassFitterOutput.root";
  TFile *output;
 
  if (fcounter == 1) output = new TFile(path.Data(),"recreate");
  else output = new TFile(path.Data(),"update");
  output->cd();
  hget->Write();
  fContourGraph->Write();


  output->Close();

  cout<<fcounter<<" "<<hget->GetName()<<" written in "<<path<<endl;

  delete output;
  
}

//_________________________________________________________________________

void AliHFMassFitter::WriteNtuple(TString path) const{
  //TNtuple* nget=(TNtuple*)fntuParam->Clone();
  path += "HFMassFitterOutput.root";
  TFile *output = new TFile(path.Data(),"update");
  output->cd();
  fntuParam->Write();
  //nget->Write();
  output->Close();
  //cout<<nget->GetName()<<" written in "<<path<<endl;
  cout<<fntuParam->GetName()<<" written in "<<path<<endl;
  /*
  if(nget) {
    //delete nget;
    nget=NULL;
  }
  */

  delete output;
}

//_________________________________________________________________________
void AliHFMassFitter::WriteCanvas(TString userIDstring,TString path,Double_t nsigma,Int_t writeFitInfo,Bool_t draw) const{

 //write the canvas in a root file

  gStyle->SetOptStat(0);
  gStyle->SetCanvasColor(0);
  gStyle->SetFrameFillColor(0);

  TString type="";

  switch (ftypeOfFit4Bkg){
  case 0:
    type="Exp"; //3+2
    break;
  case 1:
    type="Lin"; //3+2
    break;
  case 2:
    type="Pl2"; //3+3
    break;
  case 3:
    type="noB"; //3+1
    break;
  case 4:  
    type="Pow"; //3+3
    break;
  case 5:
    type="PowExp"; //3+3
    break;
  }

  TString filename=Form("%sMassFit.root",type.Data());
  filename.Prepend(userIDstring);
  path.Append(filename);

  TFile* outputcv=new TFile(path.Data(),"update");

  TCanvas* c=(TCanvas*)GetPad(nsigma,writeFitInfo);
  c->SetName(Form("%s%s%s",c->GetName(),userIDstring.Data(),type.Data()));
  if(draw)c->DrawClone();
  outputcv->cd();
  c->Write();
  outputcv->Close();
}

//_________________________________________________________________________

TVirtualPad* AliHFMassFitter::GetPad(Double_t nsigma,Int_t writeFitInfo)const{
  //return a TVirtualPad with the fitted histograms and info

  TString cvtitle="fit of ";
  cvtitle+=fhistoInvMass->GetName();
  TString cvname="c";
  cvname+=fcounter;

  TCanvas *c=new TCanvas(cvname,cvtitle);
  PlotFit(c->cd(),nsigma,writeFitInfo);
  return c->cd();
}
//_________________________________________________________________________

void AliHFMassFitter::PlotFit(TVirtualPad* pd,Double_t nsigma,Int_t writeFitInfo)const{
  //plot histogram, fit functions and write parameters according to verbosity level (0,1,>1)
  gStyle->SetOptStat(0);
  gStyle->SetCanvasColor(0);
  gStyle->SetFrameFillColor(0);

  cout<<"nsigma = "<<nsigma<<endl;
  cout<<"Verbosity = "<<writeFitInfo<<endl;

  TH1F* hdraw=GetHistoClone();
  
  if(!hdraw->GetFunction("funcmass") && !hdraw->GetFunction("funcbkgFullRange") && !hdraw->GetFunction("funcbkgRecalc")&& !hdraw->GetFunction("funcbkgonly")){
    cout<<"Probably fit failed and you didn't try to refit with background only, there's no function to be drawn"<<endl;
    return;
  }
 
  if(hdraw->GetFunction("funcbkgonly")){ //Warning! if this function is present, no chance to draw the other!
    cout<<"Drawing background fit only"<<endl;
    hdraw->SetMinimum(0);
    hdraw->GetXaxis()->SetRangeUser(fminMass,fmaxMass);
    pd->cd();
    hdraw->SetMarkerStyle(20);
    hdraw->DrawClone("PE");
    hdraw->GetFunction("funcbkgonly")->DrawClone("sames");

    if(writeFitInfo > 0){
      TPaveText *pinfo=new TPaveText(0.6,0.86,1.,1.,"NDC");     
      pinfo->SetBorderSize(0);
      pinfo->SetFillStyle(0);
      TF1* f=hdraw->GetFunction("funcbkgonly");
      for (Int_t i=0;i<fNFinalPars-3;i++){
	pinfo->SetTextColor(kBlue+3);
	TString str=Form("%s = %.3f #pm %.3f",f->GetParName(i),f->GetParameter(i),f->GetParError(i));
	pinfo->AddText(str);
      }

      pinfo->AddText(Form("Reduced #chi^{2} = %.3f",f->GetChisquare()/f->GetNDF()));
      pd->cd();
      pinfo->DrawClone();

 
    }

    return;
  }
  
  hdraw->SetMinimum(0);
  hdraw->GetXaxis()->SetRangeUser(fminMass,fmaxMass);
  pd->cd();
  hdraw->SetMarkerStyle(20);
  hdraw->DrawClone("PE");
//   if(hdraw->GetFunction("funcbkgFullRange")) hdraw->GetFunction("funcbkgFullRange")->DrawClone("same");
//   if(hdraw->GetFunction("funcbkgRecalc")) hdraw->GetFunction("funcbkgRecalc")->DrawClone("same");
  if(hdraw->GetFunction("funcmass")) hdraw->GetFunction("funcmass")->DrawClone("same");

  if(writeFitInfo > 0){
    TPaveText *pinfob=new TPaveText(0.6,0.86,1.,1.,"NDC");
    TPaveText *pinfom=new TPaveText(0.6,0.7,1.,.87,"NDC");
    pinfob->SetBorderSize(0);
    pinfob->SetFillStyle(0);
    pinfom->SetBorderSize(0);
    pinfom->SetFillStyle(0);
    TF1* ff=fhistoInvMass->GetFunction("funcmass");

    for (Int_t i=fNFinalPars-3;i<fNFinalPars;i++){
      pinfom->SetTextColor(kBlue);
      TString str=Form("%s = %.3f #pm %.3f",ff->GetParName(i),ff->GetParameter(i),ff->GetParError(i));
      if(!(writeFitInfo==1 && i==fNFinalPars-3)) pinfom->AddText(str);
    }
    pd->cd();
    pinfom->DrawClone();

    TPaveText *pinfo2=new TPaveText(0.1,0.1,0.6,0.4,"NDC");
    pinfo2->SetBorderSize(0);
    pinfo2->SetFillStyle(0);

    Double_t signif, signal, bkg, errsignif, errsignal, errbkg;

    Significance(nsigma,signif,errsignif);
    Signal(nsigma,signal,errsignal);
    Background(nsigma,bkg, errbkg);
    /* 
      Significance(1.828,1.892,signif,errsignif);
      Signal(1.828,1.892,signal,errsignal);
      Background(1.828,1.892,bkg, errbkg);
    */
    TString str=Form("Significance (%.0f#sigma) %.1f #pm %.1f ",nsigma,signif,errsignif);
    pinfo2->AddText(str);
    str=Form("S (%.0f#sigma) %.0f #pm %.0f ",nsigma,signal,errsignal);
    pinfo2->AddText(str);
    str=Form("B (%.0f#sigma) %.0f #pm %.0f",nsigma,bkg,errbkg);
    pinfo2->AddText(str);
    if(bkg>0) str=Form("S/B (%.0f#sigma) %.4f ",nsigma,signal/bkg); 
    pinfo2->AddText(str);

    pd->cd();
    pinfo2->Draw();

    if(writeFitInfo > 1){
      for (Int_t i=0;i<fNFinalPars-3;i++){
	pinfob->SetTextColor(kRed);
	str=Form("%s = %f #pm %f",ff->GetParName(i),ff->GetParameter(i),ff->GetParError(i));
	pinfob->AddText(str);
      }
      pd->cd();
      pinfob->DrawClone();
    }


  }
  return;
}

//_________________________________________________________________________

void AliHFMassFitter::DrawHere(TVirtualPad* pd,Double_t nsigma,Int_t writeFitInfo) const {
  //draws histogram together with fit functions with default nice colors in user canvas
  PlotFit(pd,nsigma,writeFitInfo);

  pd->Draw();
 
}
//_________________________________________________________________________
void AliHFMassFitter::DrawFit(Double_t nsigma) const{

  //draws histogram together with fit functions with default nice colors
  gStyle->SetOptStat(0);
  gStyle->SetCanvasColor(0);
  gStyle->SetFrameFillColor(0);


  TCanvas* c=(TCanvas*)GetPad(nsigma,1);
  c->Draw();
  
}


//_________________________________________________________________________

void AliHFMassFitter::PrintParTitles() const{

  //prints to screen the parameters names

  TF1 *f=fhistoInvMass->GetFunction("funcmass");
  if(!f) {
    cout<<"Fit function not found"<<endl;
    return;
  }

  cout<<"Parameter Titles \n";
  for(Int_t i=0;i<fNFinalPars;i++){
    cout<<"Par "<<i<<": "<<f->GetParName(i)<<endl;
  }
  cout<<endl;

}

//************ significance

//_________________________________________________________________________

void AliHFMassFitter::Signal(Double_t nOfSigma,Double_t &signal,Double_t &errsignal) const {
  // Return signal integral in mean+- n sigma

  if(fcounter==0) {
    cout<<"Use MassFitter method before Signal"<<endl;
    return;
  }

  Double_t min=fMass-nOfSigma*fSigmaSgn;
  Double_t max=fMass+nOfSigma*fSigmaSgn;

  Signal(min,max,signal,errsignal);


  return;

}

//_________________________________________________________________________

void AliHFMassFitter::Signal(Double_t min, Double_t max, Double_t &signal,Double_t &errsignal) const {

  // Return signal integral in a range
  
  if(fcounter==0) {
    cout<<"Use MassFitter method before Signal"<<endl;
    return;
  }

  //functions names
  TString bkgname="funcbkgRecalc";
  TString bkg1name="funcbkg1Recalc";
  TString massname="funcmass";


  TF1 *funcbkg=0;
  TF1 *funcmass=fhistoInvMass->GetFunction(massname.Data());
  if(!funcmass){
    cout<<"AliHFMassFitter::Signal() ERROR -> Mass distr function not found!"<<endl;
    return;
  }

  if(ftypeOfFit4Sgn == 0) funcbkg=fhistoInvMass->GetFunction(bkgname.Data());
  else funcbkg=fhistoInvMass->GetFunction(bkg1name.Data());

  if(!funcbkg){
    cout<<"AliHFMassFitter::Signal() ERROR -> Bkg function not found!"<<endl;
    return;
  }

  Int_t np=fNFinalPars-3;

  Double_t intS,intSerr;

 //relative error evaluation
  intS=funcmass->GetParameter(np);
  intSerr=funcmass->GetParError(np);

  cout<<"Sgn relative error evaluation from fit: "<<intSerr/intS<<endl;
  Double_t background,errbackground;
  Background(min,max,background,errbackground);

  //signal +/- error in the range

  Double_t mass=funcmass->Integral(min, max)/fhistoInvMass->GetBinWidth(4);
  signal=mass - background;
  errsignal=(intSerr/intS)*signal;/*assume relative error is the same as for total integral*/

}

//_________________________________________________________________________

void AliHFMassFitter::Background(Double_t nOfSigma,Double_t &background,Double_t &errbackground) const {
  // Return background integral in mean+- n sigma

  if(fcounter==0) {
    cout<<"Use MassFitter method before Background"<<endl;
    return;
  }
  Double_t min=fMass-nOfSigma*fSigmaSgn;
  Double_t max=fMass+nOfSigma*fSigmaSgn;

  Background(min,max,background,errbackground);

  return;
  
}
//___________________________________________________________________________

void AliHFMassFitter::Background(Double_t min, Double_t max, Double_t &background,Double_t &errbackground) const {
  // Return background integral in a range

  if(fcounter==0) {
    cout<<"Use MassFitter method before Background"<<endl;
    return;
  }

  //functions names
  TString bkgname="funcbkgRecalc";
  TString bkg1name="funcbkg1Recalc";

  TF1 *funcbkg=0;
  if(ftypeOfFit4Sgn == 0) funcbkg=fhistoInvMass->GetFunction(bkgname.Data());
  else funcbkg=fhistoInvMass->GetFunction(bkg1name.Data());
  if(!funcbkg){
    cout<<"AliHFMassFitter::Background() ERROR -> Bkg function not found!"<<endl;
    return;
  }


  Double_t intB,intBerr;

  //relative error evaluation: from final parameters of the fit
  if(ftypeOfFit4Bkg==3 && ftypeOfFit4Sgn == 0) cout<<"No background fit: Bkg relative error evaluation put to zero"<<endl;
  else{
    intB=funcbkg->GetParameter(0);
    intBerr=funcbkg->GetParError(0);
    cout<<"Bkg relative error evaluation: from final parameters of the fit: "<<intBerr/intB<<endl;
  }

  //relative error evaluation: from histo
   
  intB=fhistoInvMass->Integral(1,fSideBandl)+fhistoInvMass->Integral(fSideBandr,fNbin);
  Double_t sum2=0;
  for(Int_t i=1;i<=fSideBandl;i++){
    sum2+=fhistoInvMass->GetBinError(i)*fhistoInvMass->GetBinError(i);
  }
  for(Int_t i=fSideBandr;i<=fNbin;i++){
    sum2+=fhistoInvMass->GetBinError(i)*fhistoInvMass->GetBinError(i);
  }

  intBerr=TMath::Sqrt(sum2);
  cout<<"Bkg relative error evaluation: from histo: "<<intBerr/intB<<endl;
  
  cout<<"Last estimation of bkg error is used"<<endl;

  //backround +/- error in the range
  if (ftypeOfFit4Bkg == 3 && ftypeOfFit4Sgn == 0) {
    background = 0;
    errbackground = 0;
  }
  else{
    background=funcbkg->Integral(min,max)/(Double_t)fhistoInvMass->GetBinWidth(2);
    errbackground=intBerr/intB*background; // assume relative error is the same as for total integral
    //cout<<"integral = "<<funcbkg->Integral(min, max)<<"\tbinW = "<<fhistoInvMass->GetBinWidth(2)<<endl;
  }
  return;

}


//__________________________________________________________________________

void AliHFMassFitter::Significance(Double_t nOfSigma,Double_t &significance,Double_t &errsignificance) const  {
  // Return significance in mean+- n sigma
 
  Double_t min=fMass-nOfSigma*fSigmaSgn;
  Double_t max=fMass+nOfSigma*fSigmaSgn;
  Significance(min, max, significance, errsignificance);

  return;
}

//__________________________________________________________________________

void AliHFMassFitter::Significance(Double_t min, Double_t max, Double_t &significance,Double_t &errsignificance) const {
  // Return significance integral in a range

  if(fcounter==0){
    AliError("Number of fits is zero, check whether you made the fit before computing the significance!\n");
    return;
  }

  Double_t signal,errsignal,background,errbackground;
  Signal(min, max,signal,errsignal);
  Background(min, max,background,errbackground);

  if (signal+background <= 0.){
    cout<<"Cannot calculate significance because of div by 0!"<<endl;
    significance=-1;
    errsignificance=0;
    return;
  }

  AliVertexingHFUtils::ComputeSignificance(signal,errsignal,background,errbackground,significance,errsignificance);
  
  return;
}


 AliHFMassFitter.cxx:1
 AliHFMassFitter.cxx:2
 AliHFMassFitter.cxx:3
 AliHFMassFitter.cxx:4
 AliHFMassFitter.cxx:5
 AliHFMassFitter.cxx:6
 AliHFMassFitter.cxx:7
 AliHFMassFitter.cxx:8
 AliHFMassFitter.cxx:9
 AliHFMassFitter.cxx:10
 AliHFMassFitter.cxx:11
 AliHFMassFitter.cxx:12
 AliHFMassFitter.cxx:13
 AliHFMassFitter.cxx:14
 AliHFMassFitter.cxx:15
 AliHFMassFitter.cxx:16
 AliHFMassFitter.cxx:17
 AliHFMassFitter.cxx:18
 AliHFMassFitter.cxx:19
 AliHFMassFitter.cxx:20
 AliHFMassFitter.cxx:21
 AliHFMassFitter.cxx:22
 AliHFMassFitter.cxx:23
 AliHFMassFitter.cxx:24
 AliHFMassFitter.cxx:25
 AliHFMassFitter.cxx:26
 AliHFMassFitter.cxx:27
 AliHFMassFitter.cxx:28
 AliHFMassFitter.cxx:29
 AliHFMassFitter.cxx:30
 AliHFMassFitter.cxx:31
 AliHFMassFitter.cxx:32
 AliHFMassFitter.cxx:33
 AliHFMassFitter.cxx:34
 AliHFMassFitter.cxx:35
 AliHFMassFitter.cxx:36
 AliHFMassFitter.cxx:37
 AliHFMassFitter.cxx:38
 AliHFMassFitter.cxx:39
 AliHFMassFitter.cxx:40
 AliHFMassFitter.cxx:41
 AliHFMassFitter.cxx:42
 AliHFMassFitter.cxx:43
 AliHFMassFitter.cxx:44
 AliHFMassFitter.cxx:45
 AliHFMassFitter.cxx:46
 AliHFMassFitter.cxx:47
 AliHFMassFitter.cxx:48
 AliHFMassFitter.cxx:49
 AliHFMassFitter.cxx:50
 AliHFMassFitter.cxx:51
 AliHFMassFitter.cxx:52
 AliHFMassFitter.cxx:53
 AliHFMassFitter.cxx:54
 AliHFMassFitter.cxx:55
 AliHFMassFitter.cxx:56
 AliHFMassFitter.cxx:57
 AliHFMassFitter.cxx:58
 AliHFMassFitter.cxx:59
 AliHFMassFitter.cxx:60
 AliHFMassFitter.cxx:61
 AliHFMassFitter.cxx:62
 AliHFMassFitter.cxx:63
 AliHFMassFitter.cxx:64
 AliHFMassFitter.cxx:65
 AliHFMassFitter.cxx:66
 AliHFMassFitter.cxx:67
 AliHFMassFitter.cxx:68
 AliHFMassFitter.cxx:69
 AliHFMassFitter.cxx:70
 AliHFMassFitter.cxx:71
 AliHFMassFitter.cxx:72
 AliHFMassFitter.cxx:73
 AliHFMassFitter.cxx:74
 AliHFMassFitter.cxx:75
 AliHFMassFitter.cxx:76
 AliHFMassFitter.cxx:77
 AliHFMassFitter.cxx:78
 AliHFMassFitter.cxx:79
 AliHFMassFitter.cxx:80
 AliHFMassFitter.cxx:81
 AliHFMassFitter.cxx:82
 AliHFMassFitter.cxx:83
 AliHFMassFitter.cxx:84
 AliHFMassFitter.cxx:85
 AliHFMassFitter.cxx:86
 AliHFMassFitter.cxx:87
 AliHFMassFitter.cxx:88
 AliHFMassFitter.cxx:89
 AliHFMassFitter.cxx:90
 AliHFMassFitter.cxx:91
 AliHFMassFitter.cxx:92
 AliHFMassFitter.cxx:93
 AliHFMassFitter.cxx:94
 AliHFMassFitter.cxx:95
 AliHFMassFitter.cxx:96
 AliHFMassFitter.cxx:97
 AliHFMassFitter.cxx:98
 AliHFMassFitter.cxx:99
 AliHFMassFitter.cxx:100
 AliHFMassFitter.cxx:101
 AliHFMassFitter.cxx:102
 AliHFMassFitter.cxx:103
 AliHFMassFitter.cxx:104
 AliHFMassFitter.cxx:105
 AliHFMassFitter.cxx:106
 AliHFMassFitter.cxx:107
 AliHFMassFitter.cxx:108
 AliHFMassFitter.cxx:109
 AliHFMassFitter.cxx:110
 AliHFMassFitter.cxx:111
 AliHFMassFitter.cxx:112
 AliHFMassFitter.cxx:113
 AliHFMassFitter.cxx:114
 AliHFMassFitter.cxx:115
 AliHFMassFitter.cxx:116
 AliHFMassFitter.cxx:117
 AliHFMassFitter.cxx:118
 AliHFMassFitter.cxx:119
 AliHFMassFitter.cxx:120
 AliHFMassFitter.cxx:121
 AliHFMassFitter.cxx:122
 AliHFMassFitter.cxx:123
 AliHFMassFitter.cxx:124
 AliHFMassFitter.cxx:125
 AliHFMassFitter.cxx:126
 AliHFMassFitter.cxx:127
 AliHFMassFitter.cxx:128
 AliHFMassFitter.cxx:129
 AliHFMassFitter.cxx:130
 AliHFMassFitter.cxx:131
 AliHFMassFitter.cxx:132
 AliHFMassFitter.cxx:133
 AliHFMassFitter.cxx:134
 AliHFMassFitter.cxx:135
 AliHFMassFitter.cxx:136
 AliHFMassFitter.cxx:137
 AliHFMassFitter.cxx:138
 AliHFMassFitter.cxx:139
 AliHFMassFitter.cxx:140
 AliHFMassFitter.cxx:141
 AliHFMassFitter.cxx:142
 AliHFMassFitter.cxx:143
 AliHFMassFitter.cxx:144
 AliHFMassFitter.cxx:145
 AliHFMassFitter.cxx:146
 AliHFMassFitter.cxx:147
 AliHFMassFitter.cxx:148
 AliHFMassFitter.cxx:149
 AliHFMassFitter.cxx:150
 AliHFMassFitter.cxx:151
 AliHFMassFitter.cxx:152
 AliHFMassFitter.cxx:153
 AliHFMassFitter.cxx:154
 AliHFMassFitter.cxx:155
 AliHFMassFitter.cxx:156
 AliHFMassFitter.cxx:157
 AliHFMassFitter.cxx:158
 AliHFMassFitter.cxx:159
 AliHFMassFitter.cxx:160
 AliHFMassFitter.cxx:161
 AliHFMassFitter.cxx:162
 AliHFMassFitter.cxx:163
 AliHFMassFitter.cxx:164
 AliHFMassFitter.cxx:165
 AliHFMassFitter.cxx:166
 AliHFMassFitter.cxx:167
 AliHFMassFitter.cxx:168
 AliHFMassFitter.cxx:169
 AliHFMassFitter.cxx:170
 AliHFMassFitter.cxx:171
 AliHFMassFitter.cxx:172
 AliHFMassFitter.cxx:173
 AliHFMassFitter.cxx:174
 AliHFMassFitter.cxx:175
 AliHFMassFitter.cxx:176
 AliHFMassFitter.cxx:177
 AliHFMassFitter.cxx:178
 AliHFMassFitter.cxx:179
 AliHFMassFitter.cxx:180
 AliHFMassFitter.cxx:181
 AliHFMassFitter.cxx:182
 AliHFMassFitter.cxx:183
 AliHFMassFitter.cxx:184
 AliHFMassFitter.cxx:185
 AliHFMassFitter.cxx:186
 AliHFMassFitter.cxx:187
 AliHFMassFitter.cxx:188
 AliHFMassFitter.cxx:189
 AliHFMassFitter.cxx:190
 AliHFMassFitter.cxx:191
 AliHFMassFitter.cxx:192
 AliHFMassFitter.cxx:193
 AliHFMassFitter.cxx:194
 AliHFMassFitter.cxx:195
 AliHFMassFitter.cxx:196
 AliHFMassFitter.cxx:197
 AliHFMassFitter.cxx:198
 AliHFMassFitter.cxx:199
 AliHFMassFitter.cxx:200
 AliHFMassFitter.cxx:201
 AliHFMassFitter.cxx:202
 AliHFMassFitter.cxx:203
 AliHFMassFitter.cxx:204
 AliHFMassFitter.cxx:205
 AliHFMassFitter.cxx:206
 AliHFMassFitter.cxx:207
 AliHFMassFitter.cxx:208
 AliHFMassFitter.cxx:209
 AliHFMassFitter.cxx:210
 AliHFMassFitter.cxx:211
 AliHFMassFitter.cxx:212
 AliHFMassFitter.cxx:213
 AliHFMassFitter.cxx:214
 AliHFMassFitter.cxx:215
 AliHFMassFitter.cxx:216
 AliHFMassFitter.cxx:217
 AliHFMassFitter.cxx:218
 AliHFMassFitter.cxx:219
 AliHFMassFitter.cxx:220
 AliHFMassFitter.cxx:221
 AliHFMassFitter.cxx:222
 AliHFMassFitter.cxx:223
 AliHFMassFitter.cxx:224
 AliHFMassFitter.cxx:225
 AliHFMassFitter.cxx:226
 AliHFMassFitter.cxx:227
 AliHFMassFitter.cxx:228
 AliHFMassFitter.cxx:229
 AliHFMassFitter.cxx:230
 AliHFMassFitter.cxx:231
 AliHFMassFitter.cxx:232
 AliHFMassFitter.cxx:233
 AliHFMassFitter.cxx:234
 AliHFMassFitter.cxx:235
 AliHFMassFitter.cxx:236
 AliHFMassFitter.cxx:237
 AliHFMassFitter.cxx:238
 AliHFMassFitter.cxx:239
 AliHFMassFitter.cxx:240
 AliHFMassFitter.cxx:241
 AliHFMassFitter.cxx:242
 AliHFMassFitter.cxx:243
 AliHFMassFitter.cxx:244
 AliHFMassFitter.cxx:245
 AliHFMassFitter.cxx:246
 AliHFMassFitter.cxx:247
 AliHFMassFitter.cxx:248
 AliHFMassFitter.cxx:249
 AliHFMassFitter.cxx:250
 AliHFMassFitter.cxx:251
 AliHFMassFitter.cxx:252
 AliHFMassFitter.cxx:253
 AliHFMassFitter.cxx:254
 AliHFMassFitter.cxx:255
 AliHFMassFitter.cxx:256
 AliHFMassFitter.cxx:257
 AliHFMassFitter.cxx:258
 AliHFMassFitter.cxx:259
 AliHFMassFitter.cxx:260
 AliHFMassFitter.cxx:261
 AliHFMassFitter.cxx:262
 AliHFMassFitter.cxx:263
 AliHFMassFitter.cxx:264
 AliHFMassFitter.cxx:265
 AliHFMassFitter.cxx:266
 AliHFMassFitter.cxx:267
 AliHFMassFitter.cxx:268
 AliHFMassFitter.cxx:269
 AliHFMassFitter.cxx:270
 AliHFMassFitter.cxx:271
 AliHFMassFitter.cxx:272
 AliHFMassFitter.cxx:273
 AliHFMassFitter.cxx:274
 AliHFMassFitter.cxx:275
 AliHFMassFitter.cxx:276
 AliHFMassFitter.cxx:277
 AliHFMassFitter.cxx:278
 AliHFMassFitter.cxx:279
 AliHFMassFitter.cxx:280
 AliHFMassFitter.cxx:281
 AliHFMassFitter.cxx:282
 AliHFMassFitter.cxx:283
 AliHFMassFitter.cxx:284
 AliHFMassFitter.cxx:285
 AliHFMassFitter.cxx:286
 AliHFMassFitter.cxx:287
 AliHFMassFitter.cxx:288
 AliHFMassFitter.cxx:289
 AliHFMassFitter.cxx:290
 AliHFMassFitter.cxx:291
 AliHFMassFitter.cxx:292
 AliHFMassFitter.cxx:293
 AliHFMassFitter.cxx:294
 AliHFMassFitter.cxx:295
 AliHFMassFitter.cxx:296
 AliHFMassFitter.cxx:297
 AliHFMassFitter.cxx:298
 AliHFMassFitter.cxx:299
 AliHFMassFitter.cxx:300
 AliHFMassFitter.cxx:301
 AliHFMassFitter.cxx:302
 AliHFMassFitter.cxx:303
 AliHFMassFitter.cxx:304
 AliHFMassFitter.cxx:305
 AliHFMassFitter.cxx:306
 AliHFMassFitter.cxx:307
 AliHFMassFitter.cxx:308
 AliHFMassFitter.cxx:309
 AliHFMassFitter.cxx:310
 AliHFMassFitter.cxx:311
 AliHFMassFitter.cxx:312
 AliHFMassFitter.cxx:313
 AliHFMassFitter.cxx:314
 AliHFMassFitter.cxx:315
 AliHFMassFitter.cxx:316
 AliHFMassFitter.cxx:317
 AliHFMassFitter.cxx:318
 AliHFMassFitter.cxx:319
 AliHFMassFitter.cxx:320
 AliHFMassFitter.cxx:321
 AliHFMassFitter.cxx:322
 AliHFMassFitter.cxx:323
 AliHFMassFitter.cxx:324
 AliHFMassFitter.cxx:325
 AliHFMassFitter.cxx:326
 AliHFMassFitter.cxx:327
 AliHFMassFitter.cxx:328
 AliHFMassFitter.cxx:329
 AliHFMassFitter.cxx:330
 AliHFMassFitter.cxx:331
 AliHFMassFitter.cxx:332
 AliHFMassFitter.cxx:333
 AliHFMassFitter.cxx:334
 AliHFMassFitter.cxx:335
 AliHFMassFitter.cxx:336
 AliHFMassFitter.cxx:337
 AliHFMassFitter.cxx:338
 AliHFMassFitter.cxx:339
 AliHFMassFitter.cxx:340
 AliHFMassFitter.cxx:341
 AliHFMassFitter.cxx:342
 AliHFMassFitter.cxx:343
 AliHFMassFitter.cxx:344
 AliHFMassFitter.cxx:345
 AliHFMassFitter.cxx:346
 AliHFMassFitter.cxx:347
 AliHFMassFitter.cxx:348
 AliHFMassFitter.cxx:349
 AliHFMassFitter.cxx:350
 AliHFMassFitter.cxx:351
 AliHFMassFitter.cxx:352
 AliHFMassFitter.cxx:353
 AliHFMassFitter.cxx:354
 AliHFMassFitter.cxx:355
 AliHFMassFitter.cxx:356
 AliHFMassFitter.cxx:357
 AliHFMassFitter.cxx:358
 AliHFMassFitter.cxx:359
 AliHFMassFitter.cxx:360
 AliHFMassFitter.cxx:361
 AliHFMassFitter.cxx:362
 AliHFMassFitter.cxx:363
 AliHFMassFitter.cxx:364
 AliHFMassFitter.cxx:365
 AliHFMassFitter.cxx:366
 AliHFMassFitter.cxx:367
 AliHFMassFitter.cxx:368
 AliHFMassFitter.cxx:369
 AliHFMassFitter.cxx:370
 AliHFMassFitter.cxx:371
 AliHFMassFitter.cxx:372
 AliHFMassFitter.cxx:373
 AliHFMassFitter.cxx:374
 AliHFMassFitter.cxx:375
 AliHFMassFitter.cxx:376
 AliHFMassFitter.cxx:377
 AliHFMassFitter.cxx:378
 AliHFMassFitter.cxx:379
 AliHFMassFitter.cxx:380
 AliHFMassFitter.cxx:381
 AliHFMassFitter.cxx:382
 AliHFMassFitter.cxx:383
 AliHFMassFitter.cxx:384
 AliHFMassFitter.cxx:385
 AliHFMassFitter.cxx:386
 AliHFMassFitter.cxx:387
 AliHFMassFitter.cxx:388
 AliHFMassFitter.cxx:389
 AliHFMassFitter.cxx:390
 AliHFMassFitter.cxx:391
 AliHFMassFitter.cxx:392
 AliHFMassFitter.cxx:393
 AliHFMassFitter.cxx:394
 AliHFMassFitter.cxx:395
 AliHFMassFitter.cxx:396
 AliHFMassFitter.cxx:397
 AliHFMassFitter.cxx:398
 AliHFMassFitter.cxx:399
 AliHFMassFitter.cxx:400
 AliHFMassFitter.cxx:401
 AliHFMassFitter.cxx:402
 AliHFMassFitter.cxx:403
 AliHFMassFitter.cxx:404
 AliHFMassFitter.cxx:405
 AliHFMassFitter.cxx:406
 AliHFMassFitter.cxx:407
 AliHFMassFitter.cxx:408
 AliHFMassFitter.cxx:409
 AliHFMassFitter.cxx:410
 AliHFMassFitter.cxx:411
 AliHFMassFitter.cxx:412
 AliHFMassFitter.cxx:413
 AliHFMassFitter.cxx:414
 AliHFMassFitter.cxx:415
 AliHFMassFitter.cxx:416
 AliHFMassFitter.cxx:417
 AliHFMassFitter.cxx:418
 AliHFMassFitter.cxx:419
 AliHFMassFitter.cxx:420
 AliHFMassFitter.cxx:421
 AliHFMassFitter.cxx:422
 AliHFMassFitter.cxx:423
 AliHFMassFitter.cxx:424
 AliHFMassFitter.cxx:425
 AliHFMassFitter.cxx:426
 AliHFMassFitter.cxx:427
 AliHFMassFitter.cxx:428
 AliHFMassFitter.cxx:429
 AliHFMassFitter.cxx:430
 AliHFMassFitter.cxx:431
 AliHFMassFitter.cxx:432
 AliHFMassFitter.cxx:433
 AliHFMassFitter.cxx:434
 AliHFMassFitter.cxx:435
 AliHFMassFitter.cxx:436
 AliHFMassFitter.cxx:437
 AliHFMassFitter.cxx:438
 AliHFMassFitter.cxx:439
 AliHFMassFitter.cxx:440
 AliHFMassFitter.cxx:441
 AliHFMassFitter.cxx:442
 AliHFMassFitter.cxx:443
 AliHFMassFitter.cxx:444
 AliHFMassFitter.cxx:445
 AliHFMassFitter.cxx:446
 AliHFMassFitter.cxx:447
 AliHFMassFitter.cxx:448
 AliHFMassFitter.cxx:449
 AliHFMassFitter.cxx:450
 AliHFMassFitter.cxx:451
 AliHFMassFitter.cxx:452
 AliHFMassFitter.cxx:453
 AliHFMassFitter.cxx:454
 AliHFMassFitter.cxx:455
 AliHFMassFitter.cxx:456
 AliHFMassFitter.cxx:457
 AliHFMassFitter.cxx:458
 AliHFMassFitter.cxx:459
 AliHFMassFitter.cxx:460
 AliHFMassFitter.cxx:461
 AliHFMassFitter.cxx:462
 AliHFMassFitter.cxx:463
 AliHFMassFitter.cxx:464
 AliHFMassFitter.cxx:465
 AliHFMassFitter.cxx:466
 AliHFMassFitter.cxx:467
 AliHFMassFitter.cxx:468
 AliHFMassFitter.cxx:469
 AliHFMassFitter.cxx:470
 AliHFMassFitter.cxx:471
 AliHFMassFitter.cxx:472
 AliHFMassFitter.cxx:473
 AliHFMassFitter.cxx:474
 AliHFMassFitter.cxx:475
 AliHFMassFitter.cxx:476
 AliHFMassFitter.cxx:477
 AliHFMassFitter.cxx:478
 AliHFMassFitter.cxx:479
 AliHFMassFitter.cxx:480
 AliHFMassFitter.cxx:481
 AliHFMassFitter.cxx:482
 AliHFMassFitter.cxx:483
 AliHFMassFitter.cxx:484
 AliHFMassFitter.cxx:485
 AliHFMassFitter.cxx:486
 AliHFMassFitter.cxx:487
 AliHFMassFitter.cxx:488
 AliHFMassFitter.cxx:489
 AliHFMassFitter.cxx:490
 AliHFMassFitter.cxx:491
 AliHFMassFitter.cxx:492
 AliHFMassFitter.cxx:493
 AliHFMassFitter.cxx:494
 AliHFMassFitter.cxx:495
 AliHFMassFitter.cxx:496
 AliHFMassFitter.cxx:497
 AliHFMassFitter.cxx:498
 AliHFMassFitter.cxx:499
 AliHFMassFitter.cxx:500
 AliHFMassFitter.cxx:501
 AliHFMassFitter.cxx:502
 AliHFMassFitter.cxx:503
 AliHFMassFitter.cxx:504
 AliHFMassFitter.cxx:505
 AliHFMassFitter.cxx:506
 AliHFMassFitter.cxx:507
 AliHFMassFitter.cxx:508
 AliHFMassFitter.cxx:509
 AliHFMassFitter.cxx:510
 AliHFMassFitter.cxx:511
 AliHFMassFitter.cxx:512
 AliHFMassFitter.cxx:513
 AliHFMassFitter.cxx:514
 AliHFMassFitter.cxx:515
 AliHFMassFitter.cxx:516
 AliHFMassFitter.cxx:517
 AliHFMassFitter.cxx:518
 AliHFMassFitter.cxx:519
 AliHFMassFitter.cxx:520
 AliHFMassFitter.cxx:521
 AliHFMassFitter.cxx:522
 AliHFMassFitter.cxx:523
 AliHFMassFitter.cxx:524
 AliHFMassFitter.cxx:525
 AliHFMassFitter.cxx:526
 AliHFMassFitter.cxx:527
 AliHFMassFitter.cxx:528
 AliHFMassFitter.cxx:529
 AliHFMassFitter.cxx:530
 AliHFMassFitter.cxx:531
 AliHFMassFitter.cxx:532
 AliHFMassFitter.cxx:533
 AliHFMassFitter.cxx:534
 AliHFMassFitter.cxx:535
 AliHFMassFitter.cxx:536
 AliHFMassFitter.cxx:537
 AliHFMassFitter.cxx:538
 AliHFMassFitter.cxx:539
 AliHFMassFitter.cxx:540
 AliHFMassFitter.cxx:541
 AliHFMassFitter.cxx:542
 AliHFMassFitter.cxx:543
 AliHFMassFitter.cxx:544
 AliHFMassFitter.cxx:545
 AliHFMassFitter.cxx:546
 AliHFMassFitter.cxx:547
 AliHFMassFitter.cxx:548
 AliHFMassFitter.cxx:549
 AliHFMassFitter.cxx:550
 AliHFMassFitter.cxx:551
 AliHFMassFitter.cxx:552
 AliHFMassFitter.cxx:553
 AliHFMassFitter.cxx:554
 AliHFMassFitter.cxx:555
 AliHFMassFitter.cxx:556
 AliHFMassFitter.cxx:557
 AliHFMassFitter.cxx:558
 AliHFMassFitter.cxx:559
 AliHFMassFitter.cxx:560
 AliHFMassFitter.cxx:561
 AliHFMassFitter.cxx:562
 AliHFMassFitter.cxx:563
 AliHFMassFitter.cxx:564
 AliHFMassFitter.cxx:565
 AliHFMassFitter.cxx:566
 AliHFMassFitter.cxx:567
 AliHFMassFitter.cxx:568
 AliHFMassFitter.cxx:569
 AliHFMassFitter.cxx:570
 AliHFMassFitter.cxx:571
 AliHFMassFitter.cxx:572
 AliHFMassFitter.cxx:573
 AliHFMassFitter.cxx:574
 AliHFMassFitter.cxx:575
 AliHFMassFitter.cxx:576
 AliHFMassFitter.cxx:577
 AliHFMassFitter.cxx:578
 AliHFMassFitter.cxx:579
 AliHFMassFitter.cxx:580
 AliHFMassFitter.cxx:581
 AliHFMassFitter.cxx:582
 AliHFMassFitter.cxx:583
 AliHFMassFitter.cxx:584
 AliHFMassFitter.cxx:585
 AliHFMassFitter.cxx:586
 AliHFMassFitter.cxx:587
 AliHFMassFitter.cxx:588
 AliHFMassFitter.cxx:589
 AliHFMassFitter.cxx:590
 AliHFMassFitter.cxx:591
 AliHFMassFitter.cxx:592
 AliHFMassFitter.cxx:593
 AliHFMassFitter.cxx:594
 AliHFMassFitter.cxx:595
 AliHFMassFitter.cxx:596
 AliHFMassFitter.cxx:597
 AliHFMassFitter.cxx:598
 AliHFMassFitter.cxx:599
 AliHFMassFitter.cxx:600
 AliHFMassFitter.cxx:601
 AliHFMassFitter.cxx:602
 AliHFMassFitter.cxx:603
 AliHFMassFitter.cxx:604
 AliHFMassFitter.cxx:605
 AliHFMassFitter.cxx:606
 AliHFMassFitter.cxx:607
 AliHFMassFitter.cxx:608
 AliHFMassFitter.cxx:609
 AliHFMassFitter.cxx:610
 AliHFMassFitter.cxx:611
 AliHFMassFitter.cxx:612
 AliHFMassFitter.cxx:613
 AliHFMassFitter.cxx:614
 AliHFMassFitter.cxx:615
 AliHFMassFitter.cxx:616
 AliHFMassFitter.cxx:617
 AliHFMassFitter.cxx:618
 AliHFMassFitter.cxx:619
 AliHFMassFitter.cxx:620
 AliHFMassFitter.cxx:621
 AliHFMassFitter.cxx:622
 AliHFMassFitter.cxx:623
 AliHFMassFitter.cxx:624
 AliHFMassFitter.cxx:625
 AliHFMassFitter.cxx:626
 AliHFMassFitter.cxx:627
 AliHFMassFitter.cxx:628
 AliHFMassFitter.cxx:629
 AliHFMassFitter.cxx:630
 AliHFMassFitter.cxx:631
 AliHFMassFitter.cxx:632
 AliHFMassFitter.cxx:633
 AliHFMassFitter.cxx:634
 AliHFMassFitter.cxx:635
 AliHFMassFitter.cxx:636
 AliHFMassFitter.cxx:637
 AliHFMassFitter.cxx:638
 AliHFMassFitter.cxx:639
 AliHFMassFitter.cxx:640
 AliHFMassFitter.cxx:641
 AliHFMassFitter.cxx:642
 AliHFMassFitter.cxx:643
 AliHFMassFitter.cxx:644
 AliHFMassFitter.cxx:645
 AliHFMassFitter.cxx:646
 AliHFMassFitter.cxx:647
 AliHFMassFitter.cxx:648
 AliHFMassFitter.cxx:649
 AliHFMassFitter.cxx:650
 AliHFMassFitter.cxx:651
 AliHFMassFitter.cxx:652
 AliHFMassFitter.cxx:653
 AliHFMassFitter.cxx:654
 AliHFMassFitter.cxx:655
 AliHFMassFitter.cxx:656
 AliHFMassFitter.cxx:657
 AliHFMassFitter.cxx:658
 AliHFMassFitter.cxx:659
 AliHFMassFitter.cxx:660
 AliHFMassFitter.cxx:661
 AliHFMassFitter.cxx:662
 AliHFMassFitter.cxx:663
 AliHFMassFitter.cxx:664
 AliHFMassFitter.cxx:665
 AliHFMassFitter.cxx:666
 AliHFMassFitter.cxx:667
 AliHFMassFitter.cxx:668
 AliHFMassFitter.cxx:669
 AliHFMassFitter.cxx:670
 AliHFMassFitter.cxx:671
 AliHFMassFitter.cxx:672
 AliHFMassFitter.cxx:673
 AliHFMassFitter.cxx:674
 AliHFMassFitter.cxx:675
 AliHFMassFitter.cxx:676
 AliHFMassFitter.cxx:677
 AliHFMassFitter.cxx:678
 AliHFMassFitter.cxx:679
 AliHFMassFitter.cxx:680
 AliHFMassFitter.cxx:681
 AliHFMassFitter.cxx:682
 AliHFMassFitter.cxx:683
 AliHFMassFitter.cxx:684
 AliHFMassFitter.cxx:685
 AliHFMassFitter.cxx:686
 AliHFMassFitter.cxx:687
 AliHFMassFitter.cxx:688
 AliHFMassFitter.cxx:689
 AliHFMassFitter.cxx:690
 AliHFMassFitter.cxx:691
 AliHFMassFitter.cxx:692
 AliHFMassFitter.cxx:693
 AliHFMassFitter.cxx:694
 AliHFMassFitter.cxx:695
 AliHFMassFitter.cxx:696
 AliHFMassFitter.cxx:697
 AliHFMassFitter.cxx:698
 AliHFMassFitter.cxx:699
 AliHFMassFitter.cxx:700
 AliHFMassFitter.cxx:701
 AliHFMassFitter.cxx:702
 AliHFMassFitter.cxx:703
 AliHFMassFitter.cxx:704
 AliHFMassFitter.cxx:705
 AliHFMassFitter.cxx:706
 AliHFMassFitter.cxx:707
 AliHFMassFitter.cxx:708
 AliHFMassFitter.cxx:709
 AliHFMassFitter.cxx:710
 AliHFMassFitter.cxx:711
 AliHFMassFitter.cxx:712
 AliHFMassFitter.cxx:713
 AliHFMassFitter.cxx:714
 AliHFMassFitter.cxx:715
 AliHFMassFitter.cxx:716
 AliHFMassFitter.cxx:717
 AliHFMassFitter.cxx:718
 AliHFMassFitter.cxx:719
 AliHFMassFitter.cxx:720
 AliHFMassFitter.cxx:721
 AliHFMassFitter.cxx:722
 AliHFMassFitter.cxx:723
 AliHFMassFitter.cxx:724
 AliHFMassFitter.cxx:725
 AliHFMassFitter.cxx:726
 AliHFMassFitter.cxx:727
 AliHFMassFitter.cxx:728
 AliHFMassFitter.cxx:729
 AliHFMassFitter.cxx:730
 AliHFMassFitter.cxx:731
 AliHFMassFitter.cxx:732
 AliHFMassFitter.cxx:733
 AliHFMassFitter.cxx:734
 AliHFMassFitter.cxx:735
 AliHFMassFitter.cxx:736
 AliHFMassFitter.cxx:737
 AliHFMassFitter.cxx:738
 AliHFMassFitter.cxx:739
 AliHFMassFitter.cxx:740
 AliHFMassFitter.cxx:741
 AliHFMassFitter.cxx:742
 AliHFMassFitter.cxx:743
 AliHFMassFitter.cxx:744
 AliHFMassFitter.cxx:745
 AliHFMassFitter.cxx:746
 AliHFMassFitter.cxx:747
 AliHFMassFitter.cxx:748
 AliHFMassFitter.cxx:749
 AliHFMassFitter.cxx:750
 AliHFMassFitter.cxx:751
 AliHFMassFitter.cxx:752
 AliHFMassFitter.cxx:753
 AliHFMassFitter.cxx:754
 AliHFMassFitter.cxx:755
 AliHFMassFitter.cxx:756
 AliHFMassFitter.cxx:757
 AliHFMassFitter.cxx:758
 AliHFMassFitter.cxx:759
 AliHFMassFitter.cxx:760
 AliHFMassFitter.cxx:761
 AliHFMassFitter.cxx:762
 AliHFMassFitter.cxx:763
 AliHFMassFitter.cxx:764
 AliHFMassFitter.cxx:765
 AliHFMassFitter.cxx:766
 AliHFMassFitter.cxx:767
 AliHFMassFitter.cxx:768
 AliHFMassFitter.cxx:769
 AliHFMassFitter.cxx:770
 AliHFMassFitter.cxx:771
 AliHFMassFitter.cxx:772
 AliHFMassFitter.cxx:773
 AliHFMassFitter.cxx:774
 AliHFMassFitter.cxx:775
 AliHFMassFitter.cxx:776
 AliHFMassFitter.cxx:777
 AliHFMassFitter.cxx:778
 AliHFMassFitter.cxx:779
 AliHFMassFitter.cxx:780
 AliHFMassFitter.cxx:781
 AliHFMassFitter.cxx:782
 AliHFMassFitter.cxx:783
 AliHFMassFitter.cxx:784
 AliHFMassFitter.cxx:785
 AliHFMassFitter.cxx:786
 AliHFMassFitter.cxx:787
 AliHFMassFitter.cxx:788
 AliHFMassFitter.cxx:789
 AliHFMassFitter.cxx:790
 AliHFMassFitter.cxx:791
 AliHFMassFitter.cxx:792
 AliHFMassFitter.cxx:793
 AliHFMassFitter.cxx:794
 AliHFMassFitter.cxx:795
 AliHFMassFitter.cxx:796
 AliHFMassFitter.cxx:797
 AliHFMassFitter.cxx:798
 AliHFMassFitter.cxx:799
 AliHFMassFitter.cxx:800
 AliHFMassFitter.cxx:801
 AliHFMassFitter.cxx:802
 AliHFMassFitter.cxx:803
 AliHFMassFitter.cxx:804
 AliHFMassFitter.cxx:805
 AliHFMassFitter.cxx:806
 AliHFMassFitter.cxx:807
 AliHFMassFitter.cxx:808
 AliHFMassFitter.cxx:809
 AliHFMassFitter.cxx:810
 AliHFMassFitter.cxx:811
 AliHFMassFitter.cxx:812
 AliHFMassFitter.cxx:813
 AliHFMassFitter.cxx:814
 AliHFMassFitter.cxx:815
 AliHFMassFitter.cxx:816
 AliHFMassFitter.cxx:817
 AliHFMassFitter.cxx:818
 AliHFMassFitter.cxx:819
 AliHFMassFitter.cxx:820
 AliHFMassFitter.cxx:821
 AliHFMassFitter.cxx:822
 AliHFMassFitter.cxx:823
 AliHFMassFitter.cxx:824
 AliHFMassFitter.cxx:825
 AliHFMassFitter.cxx:826
 AliHFMassFitter.cxx:827
 AliHFMassFitter.cxx:828
 AliHFMassFitter.cxx:829
 AliHFMassFitter.cxx:830
 AliHFMassFitter.cxx:831
 AliHFMassFitter.cxx:832
 AliHFMassFitter.cxx:833
 AliHFMassFitter.cxx:834
 AliHFMassFitter.cxx:835
 AliHFMassFitter.cxx:836
 AliHFMassFitter.cxx:837
 AliHFMassFitter.cxx:838
 AliHFMassFitter.cxx:839
 AliHFMassFitter.cxx:840
 AliHFMassFitter.cxx:841
 AliHFMassFitter.cxx:842
 AliHFMassFitter.cxx:843
 AliHFMassFitter.cxx:844
 AliHFMassFitter.cxx:845
 AliHFMassFitter.cxx:846
 AliHFMassFitter.cxx:847
 AliHFMassFitter.cxx:848
 AliHFMassFitter.cxx:849
 AliHFMassFitter.cxx:850
 AliHFMassFitter.cxx:851
 AliHFMassFitter.cxx:852
 AliHFMassFitter.cxx:853
 AliHFMassFitter.cxx:854
 AliHFMassFitter.cxx:855
 AliHFMassFitter.cxx:856
 AliHFMassFitter.cxx:857
 AliHFMassFitter.cxx:858
 AliHFMassFitter.cxx:859
 AliHFMassFitter.cxx:860
 AliHFMassFitter.cxx:861
 AliHFMassFitter.cxx:862
 AliHFMassFitter.cxx:863
 AliHFMassFitter.cxx:864
 AliHFMassFitter.cxx:865
 AliHFMassFitter.cxx:866
 AliHFMassFitter.cxx:867
 AliHFMassFitter.cxx:868
 AliHFMassFitter.cxx:869
 AliHFMassFitter.cxx:870
 AliHFMassFitter.cxx:871
 AliHFMassFitter.cxx:872
 AliHFMassFitter.cxx:873
 AliHFMassFitter.cxx:874
 AliHFMassFitter.cxx:875
 AliHFMassFitter.cxx:876
 AliHFMassFitter.cxx:877
 AliHFMassFitter.cxx:878
 AliHFMassFitter.cxx:879
 AliHFMassFitter.cxx:880
 AliHFMassFitter.cxx:881
 AliHFMassFitter.cxx:882
 AliHFMassFitter.cxx:883
 AliHFMassFitter.cxx:884
 AliHFMassFitter.cxx:885
 AliHFMassFitter.cxx:886
 AliHFMassFitter.cxx:887
 AliHFMassFitter.cxx:888
 AliHFMassFitter.cxx:889
 AliHFMassFitter.cxx:890
 AliHFMassFitter.cxx:891
 AliHFMassFitter.cxx:892
 AliHFMassFitter.cxx:893
 AliHFMassFitter.cxx:894
 AliHFMassFitter.cxx:895
 AliHFMassFitter.cxx:896
 AliHFMassFitter.cxx:897
 AliHFMassFitter.cxx:898
 AliHFMassFitter.cxx:899
 AliHFMassFitter.cxx:900
 AliHFMassFitter.cxx:901
 AliHFMassFitter.cxx:902
 AliHFMassFitter.cxx:903
 AliHFMassFitter.cxx:904
 AliHFMassFitter.cxx:905
 AliHFMassFitter.cxx:906
 AliHFMassFitter.cxx:907
 AliHFMassFitter.cxx:908
 AliHFMassFitter.cxx:909
 AliHFMassFitter.cxx:910
 AliHFMassFitter.cxx:911
 AliHFMassFitter.cxx:912
 AliHFMassFitter.cxx:913
 AliHFMassFitter.cxx:914
 AliHFMassFitter.cxx:915
 AliHFMassFitter.cxx:916
 AliHFMassFitter.cxx:917
 AliHFMassFitter.cxx:918
 AliHFMassFitter.cxx:919
 AliHFMassFitter.cxx:920
 AliHFMassFitter.cxx:921
 AliHFMassFitter.cxx:922
 AliHFMassFitter.cxx:923
 AliHFMassFitter.cxx:924
 AliHFMassFitter.cxx:925
 AliHFMassFitter.cxx:926
 AliHFMassFitter.cxx:927
 AliHFMassFitter.cxx:928
 AliHFMassFitter.cxx:929
 AliHFMassFitter.cxx:930
 AliHFMassFitter.cxx:931
 AliHFMassFitter.cxx:932
 AliHFMassFitter.cxx:933
 AliHFMassFitter.cxx:934
 AliHFMassFitter.cxx:935
 AliHFMassFitter.cxx:936
 AliHFMassFitter.cxx:937
 AliHFMassFitter.cxx:938
 AliHFMassFitter.cxx:939
 AliHFMassFitter.cxx:940
 AliHFMassFitter.cxx:941
 AliHFMassFitter.cxx:942
 AliHFMassFitter.cxx:943
 AliHFMassFitter.cxx:944
 AliHFMassFitter.cxx:945
 AliHFMassFitter.cxx:946
 AliHFMassFitter.cxx:947
 AliHFMassFitter.cxx:948
 AliHFMassFitter.cxx:949
 AliHFMassFitter.cxx:950
 AliHFMassFitter.cxx:951
 AliHFMassFitter.cxx:952
 AliHFMassFitter.cxx:953
 AliHFMassFitter.cxx:954
 AliHFMassFitter.cxx:955
 AliHFMassFitter.cxx:956
 AliHFMassFitter.cxx:957
 AliHFMassFitter.cxx:958
 AliHFMassFitter.cxx:959
 AliHFMassFitter.cxx:960
 AliHFMassFitter.cxx:961
 AliHFMassFitter.cxx:962
 AliHFMassFitter.cxx:963
 AliHFMassFitter.cxx:964
 AliHFMassFitter.cxx:965
 AliHFMassFitter.cxx:966
 AliHFMassFitter.cxx:967
 AliHFMassFitter.cxx:968
 AliHFMassFitter.cxx:969
 AliHFMassFitter.cxx:970
 AliHFMassFitter.cxx:971
 AliHFMassFitter.cxx:972
 AliHFMassFitter.cxx:973
 AliHFMassFitter.cxx:974
 AliHFMassFitter.cxx:975
 AliHFMassFitter.cxx:976
 AliHFMassFitter.cxx:977
 AliHFMassFitter.cxx:978
 AliHFMassFitter.cxx:979
 AliHFMassFitter.cxx:980
 AliHFMassFitter.cxx:981
 AliHFMassFitter.cxx:982
 AliHFMassFitter.cxx:983
 AliHFMassFitter.cxx:984
 AliHFMassFitter.cxx:985
 AliHFMassFitter.cxx:986
 AliHFMassFitter.cxx:987
 AliHFMassFitter.cxx:988
 AliHFMassFitter.cxx:989
 AliHFMassFitter.cxx:990
 AliHFMassFitter.cxx:991
 AliHFMassFitter.cxx:992
 AliHFMassFitter.cxx:993
 AliHFMassFitter.cxx:994
 AliHFMassFitter.cxx:995
 AliHFMassFitter.cxx:996
 AliHFMassFitter.cxx:997
 AliHFMassFitter.cxx:998
 AliHFMassFitter.cxx:999
 AliHFMassFitter.cxx:1000
 AliHFMassFitter.cxx:1001
 AliHFMassFitter.cxx:1002
 AliHFMassFitter.cxx:1003
 AliHFMassFitter.cxx:1004
 AliHFMassFitter.cxx:1005
 AliHFMassFitter.cxx:1006
 AliHFMassFitter.cxx:1007
 AliHFMassFitter.cxx:1008
 AliHFMassFitter.cxx:1009
 AliHFMassFitter.cxx:1010
 AliHFMassFitter.cxx:1011
 AliHFMassFitter.cxx:1012
 AliHFMassFitter.cxx:1013
 AliHFMassFitter.cxx:1014
 AliHFMassFitter.cxx:1015
 AliHFMassFitter.cxx:1016
 AliHFMassFitter.cxx:1017
 AliHFMassFitter.cxx:1018
 AliHFMassFitter.cxx:1019
 AliHFMassFitter.cxx:1020
 AliHFMassFitter.cxx:1021
 AliHFMassFitter.cxx:1022
 AliHFMassFitter.cxx:1023
 AliHFMassFitter.cxx:1024
 AliHFMassFitter.cxx:1025
 AliHFMassFitter.cxx:1026
 AliHFMassFitter.cxx:1027
 AliHFMassFitter.cxx:1028
 AliHFMassFitter.cxx:1029
 AliHFMassFitter.cxx:1030
 AliHFMassFitter.cxx:1031
 AliHFMassFitter.cxx:1032
 AliHFMassFitter.cxx:1033
 AliHFMassFitter.cxx:1034
 AliHFMassFitter.cxx:1035
 AliHFMassFitter.cxx:1036
 AliHFMassFitter.cxx:1037
 AliHFMassFitter.cxx:1038
 AliHFMassFitter.cxx:1039
 AliHFMassFitter.cxx:1040
 AliHFMassFitter.cxx:1041
 AliHFMassFitter.cxx:1042
 AliHFMassFitter.cxx:1043
 AliHFMassFitter.cxx:1044
 AliHFMassFitter.cxx:1045
 AliHFMassFitter.cxx:1046
 AliHFMassFitter.cxx:1047
 AliHFMassFitter.cxx:1048
 AliHFMassFitter.cxx:1049
 AliHFMassFitter.cxx:1050
 AliHFMassFitter.cxx:1051
 AliHFMassFitter.cxx:1052
 AliHFMassFitter.cxx:1053
 AliHFMassFitter.cxx:1054
 AliHFMassFitter.cxx:1055
 AliHFMassFitter.cxx:1056
 AliHFMassFitter.cxx:1057
 AliHFMassFitter.cxx:1058
 AliHFMassFitter.cxx:1059
 AliHFMassFitter.cxx:1060
 AliHFMassFitter.cxx:1061
 AliHFMassFitter.cxx:1062
 AliHFMassFitter.cxx:1063
 AliHFMassFitter.cxx:1064
 AliHFMassFitter.cxx:1065
 AliHFMassFitter.cxx:1066
 AliHFMassFitter.cxx:1067
 AliHFMassFitter.cxx:1068
 AliHFMassFitter.cxx:1069
 AliHFMassFitter.cxx:1070
 AliHFMassFitter.cxx:1071
 AliHFMassFitter.cxx:1072
 AliHFMassFitter.cxx:1073
 AliHFMassFitter.cxx:1074
 AliHFMassFitter.cxx:1075
 AliHFMassFitter.cxx:1076
 AliHFMassFitter.cxx:1077
 AliHFMassFitter.cxx:1078
 AliHFMassFitter.cxx:1079
 AliHFMassFitter.cxx:1080
 AliHFMassFitter.cxx:1081
 AliHFMassFitter.cxx:1082
 AliHFMassFitter.cxx:1083
 AliHFMassFitter.cxx:1084
 AliHFMassFitter.cxx:1085
 AliHFMassFitter.cxx:1086
 AliHFMassFitter.cxx:1087
 AliHFMassFitter.cxx:1088
 AliHFMassFitter.cxx:1089
 AliHFMassFitter.cxx:1090
 AliHFMassFitter.cxx:1091
 AliHFMassFitter.cxx:1092
 AliHFMassFitter.cxx:1093
 AliHFMassFitter.cxx:1094
 AliHFMassFitter.cxx:1095
 AliHFMassFitter.cxx:1096
 AliHFMassFitter.cxx:1097
 AliHFMassFitter.cxx:1098
 AliHFMassFitter.cxx:1099
 AliHFMassFitter.cxx:1100
 AliHFMassFitter.cxx:1101
 AliHFMassFitter.cxx:1102
 AliHFMassFitter.cxx:1103
 AliHFMassFitter.cxx:1104
 AliHFMassFitter.cxx:1105
 AliHFMassFitter.cxx:1106
 AliHFMassFitter.cxx:1107
 AliHFMassFitter.cxx:1108
 AliHFMassFitter.cxx:1109
 AliHFMassFitter.cxx:1110
 AliHFMassFitter.cxx:1111
 AliHFMassFitter.cxx:1112
 AliHFMassFitter.cxx:1113
 AliHFMassFitter.cxx:1114
 AliHFMassFitter.cxx:1115
 AliHFMassFitter.cxx:1116
 AliHFMassFitter.cxx:1117
 AliHFMassFitter.cxx:1118
 AliHFMassFitter.cxx:1119
 AliHFMassFitter.cxx:1120
 AliHFMassFitter.cxx:1121
 AliHFMassFitter.cxx:1122
 AliHFMassFitter.cxx:1123
 AliHFMassFitter.cxx:1124
 AliHFMassFitter.cxx:1125
 AliHFMassFitter.cxx:1126
 AliHFMassFitter.cxx:1127
 AliHFMassFitter.cxx:1128
 AliHFMassFitter.cxx:1129
 AliHFMassFitter.cxx:1130
 AliHFMassFitter.cxx:1131
 AliHFMassFitter.cxx:1132
 AliHFMassFitter.cxx:1133
 AliHFMassFitter.cxx:1134
 AliHFMassFitter.cxx:1135
 AliHFMassFitter.cxx:1136
 AliHFMassFitter.cxx:1137
 AliHFMassFitter.cxx:1138
 AliHFMassFitter.cxx:1139
 AliHFMassFitter.cxx:1140
 AliHFMassFitter.cxx:1141
 AliHFMassFitter.cxx:1142
 AliHFMassFitter.cxx:1143
 AliHFMassFitter.cxx:1144
 AliHFMassFitter.cxx:1145
 AliHFMassFitter.cxx:1146
 AliHFMassFitter.cxx:1147
 AliHFMassFitter.cxx:1148
 AliHFMassFitter.cxx:1149
 AliHFMassFitter.cxx:1150
 AliHFMassFitter.cxx:1151
 AliHFMassFitter.cxx:1152
 AliHFMassFitter.cxx:1153
 AliHFMassFitter.cxx:1154
 AliHFMassFitter.cxx:1155
 AliHFMassFitter.cxx:1156
 AliHFMassFitter.cxx:1157
 AliHFMassFitter.cxx:1158
 AliHFMassFitter.cxx:1159
 AliHFMassFitter.cxx:1160
 AliHFMassFitter.cxx:1161
 AliHFMassFitter.cxx:1162
 AliHFMassFitter.cxx:1163
 AliHFMassFitter.cxx:1164
 AliHFMassFitter.cxx:1165
 AliHFMassFitter.cxx:1166
 AliHFMassFitter.cxx:1167
 AliHFMassFitter.cxx:1168
 AliHFMassFitter.cxx:1169
 AliHFMassFitter.cxx:1170
 AliHFMassFitter.cxx:1171
 AliHFMassFitter.cxx:1172
 AliHFMassFitter.cxx:1173
 AliHFMassFitter.cxx:1174
 AliHFMassFitter.cxx:1175
 AliHFMassFitter.cxx:1176
 AliHFMassFitter.cxx:1177
 AliHFMassFitter.cxx:1178
 AliHFMassFitter.cxx:1179
 AliHFMassFitter.cxx:1180
 AliHFMassFitter.cxx:1181
 AliHFMassFitter.cxx:1182
 AliHFMassFitter.cxx:1183
 AliHFMassFitter.cxx:1184
 AliHFMassFitter.cxx:1185
 AliHFMassFitter.cxx:1186
 AliHFMassFitter.cxx:1187
 AliHFMassFitter.cxx:1188
 AliHFMassFitter.cxx:1189
 AliHFMassFitter.cxx:1190
 AliHFMassFitter.cxx:1191
 AliHFMassFitter.cxx:1192
 AliHFMassFitter.cxx:1193
 AliHFMassFitter.cxx:1194
 AliHFMassFitter.cxx:1195
 AliHFMassFitter.cxx:1196
 AliHFMassFitter.cxx:1197
 AliHFMassFitter.cxx:1198
 AliHFMassFitter.cxx:1199
 AliHFMassFitter.cxx:1200
 AliHFMassFitter.cxx:1201
 AliHFMassFitter.cxx:1202
 AliHFMassFitter.cxx:1203
 AliHFMassFitter.cxx:1204
 AliHFMassFitter.cxx:1205
 AliHFMassFitter.cxx:1206
 AliHFMassFitter.cxx:1207
 AliHFMassFitter.cxx:1208
 AliHFMassFitter.cxx:1209
 AliHFMassFitter.cxx:1210
 AliHFMassFitter.cxx:1211
 AliHFMassFitter.cxx:1212
 AliHFMassFitter.cxx:1213
 AliHFMassFitter.cxx:1214
 AliHFMassFitter.cxx:1215
 AliHFMassFitter.cxx:1216
 AliHFMassFitter.cxx:1217
 AliHFMassFitter.cxx:1218
 AliHFMassFitter.cxx:1219
 AliHFMassFitter.cxx:1220
 AliHFMassFitter.cxx:1221
 AliHFMassFitter.cxx:1222
 AliHFMassFitter.cxx:1223
 AliHFMassFitter.cxx:1224
 AliHFMassFitter.cxx:1225
 AliHFMassFitter.cxx:1226
 AliHFMassFitter.cxx:1227
 AliHFMassFitter.cxx:1228
 AliHFMassFitter.cxx:1229
 AliHFMassFitter.cxx:1230
 AliHFMassFitter.cxx:1231
 AliHFMassFitter.cxx:1232
 AliHFMassFitter.cxx:1233
 AliHFMassFitter.cxx:1234
 AliHFMassFitter.cxx:1235
 AliHFMassFitter.cxx:1236
 AliHFMassFitter.cxx:1237
 AliHFMassFitter.cxx:1238
 AliHFMassFitter.cxx:1239
 AliHFMassFitter.cxx:1240
 AliHFMassFitter.cxx:1241
 AliHFMassFitter.cxx:1242
 AliHFMassFitter.cxx:1243
 AliHFMassFitter.cxx:1244
 AliHFMassFitter.cxx:1245
 AliHFMassFitter.cxx:1246
 AliHFMassFitter.cxx:1247
 AliHFMassFitter.cxx:1248
 AliHFMassFitter.cxx:1249
 AliHFMassFitter.cxx:1250
 AliHFMassFitter.cxx:1251
 AliHFMassFitter.cxx:1252
 AliHFMassFitter.cxx:1253
 AliHFMassFitter.cxx:1254
 AliHFMassFitter.cxx:1255
 AliHFMassFitter.cxx:1256
 AliHFMassFitter.cxx:1257
 AliHFMassFitter.cxx:1258
 AliHFMassFitter.cxx:1259
 AliHFMassFitter.cxx:1260
 AliHFMassFitter.cxx:1261
 AliHFMassFitter.cxx:1262
 AliHFMassFitter.cxx:1263
 AliHFMassFitter.cxx:1264
 AliHFMassFitter.cxx:1265
 AliHFMassFitter.cxx:1266
 AliHFMassFitter.cxx:1267
 AliHFMassFitter.cxx:1268
 AliHFMassFitter.cxx:1269
 AliHFMassFitter.cxx:1270
 AliHFMassFitter.cxx:1271
 AliHFMassFitter.cxx:1272
 AliHFMassFitter.cxx:1273
 AliHFMassFitter.cxx:1274
 AliHFMassFitter.cxx:1275
 AliHFMassFitter.cxx:1276
 AliHFMassFitter.cxx:1277
 AliHFMassFitter.cxx:1278
 AliHFMassFitter.cxx:1279
 AliHFMassFitter.cxx:1280
 AliHFMassFitter.cxx:1281
 AliHFMassFitter.cxx:1282
 AliHFMassFitter.cxx:1283
 AliHFMassFitter.cxx:1284
 AliHFMassFitter.cxx:1285
 AliHFMassFitter.cxx:1286
 AliHFMassFitter.cxx:1287
 AliHFMassFitter.cxx:1288
 AliHFMassFitter.cxx:1289
 AliHFMassFitter.cxx:1290
 AliHFMassFitter.cxx:1291
 AliHFMassFitter.cxx:1292
 AliHFMassFitter.cxx:1293
 AliHFMassFitter.cxx:1294
 AliHFMassFitter.cxx:1295
 AliHFMassFitter.cxx:1296
 AliHFMassFitter.cxx:1297
 AliHFMassFitter.cxx:1298
 AliHFMassFitter.cxx:1299
 AliHFMassFitter.cxx:1300
 AliHFMassFitter.cxx:1301
 AliHFMassFitter.cxx:1302
 AliHFMassFitter.cxx:1303
 AliHFMassFitter.cxx:1304
 AliHFMassFitter.cxx:1305
 AliHFMassFitter.cxx:1306
 AliHFMassFitter.cxx:1307
 AliHFMassFitter.cxx:1308
 AliHFMassFitter.cxx:1309
 AliHFMassFitter.cxx:1310
 AliHFMassFitter.cxx:1311
 AliHFMassFitter.cxx:1312
 AliHFMassFitter.cxx:1313
 AliHFMassFitter.cxx:1314
 AliHFMassFitter.cxx:1315
 AliHFMassFitter.cxx:1316
 AliHFMassFitter.cxx:1317
 AliHFMassFitter.cxx:1318
 AliHFMassFitter.cxx:1319
 AliHFMassFitter.cxx:1320
 AliHFMassFitter.cxx:1321
 AliHFMassFitter.cxx:1322
 AliHFMassFitter.cxx:1323
 AliHFMassFitter.cxx:1324
 AliHFMassFitter.cxx:1325
 AliHFMassFitter.cxx:1326
 AliHFMassFitter.cxx:1327
 AliHFMassFitter.cxx:1328
 AliHFMassFitter.cxx:1329
 AliHFMassFitter.cxx:1330
 AliHFMassFitter.cxx:1331
 AliHFMassFitter.cxx:1332
 AliHFMassFitter.cxx:1333
 AliHFMassFitter.cxx:1334
 AliHFMassFitter.cxx:1335
 AliHFMassFitter.cxx:1336
 AliHFMassFitter.cxx:1337
 AliHFMassFitter.cxx:1338
 AliHFMassFitter.cxx:1339
 AliHFMassFitter.cxx:1340
 AliHFMassFitter.cxx:1341
 AliHFMassFitter.cxx:1342
 AliHFMassFitter.cxx:1343
 AliHFMassFitter.cxx:1344
 AliHFMassFitter.cxx:1345
 AliHFMassFitter.cxx:1346
 AliHFMassFitter.cxx:1347
 AliHFMassFitter.cxx:1348
 AliHFMassFitter.cxx:1349
 AliHFMassFitter.cxx:1350
 AliHFMassFitter.cxx:1351
 AliHFMassFitter.cxx:1352
 AliHFMassFitter.cxx:1353
 AliHFMassFitter.cxx:1354
 AliHFMassFitter.cxx:1355
 AliHFMassFitter.cxx:1356
 AliHFMassFitter.cxx:1357
 AliHFMassFitter.cxx:1358
 AliHFMassFitter.cxx:1359
 AliHFMassFitter.cxx:1360
 AliHFMassFitter.cxx:1361
 AliHFMassFitter.cxx:1362
 AliHFMassFitter.cxx:1363
 AliHFMassFitter.cxx:1364
 AliHFMassFitter.cxx:1365
 AliHFMassFitter.cxx:1366
 AliHFMassFitter.cxx:1367
 AliHFMassFitter.cxx:1368
 AliHFMassFitter.cxx:1369
 AliHFMassFitter.cxx:1370
 AliHFMassFitter.cxx:1371
 AliHFMassFitter.cxx:1372
 AliHFMassFitter.cxx:1373
 AliHFMassFitter.cxx:1374
 AliHFMassFitter.cxx:1375
 AliHFMassFitter.cxx:1376
 AliHFMassFitter.cxx:1377
 AliHFMassFitter.cxx:1378
 AliHFMassFitter.cxx:1379
 AliHFMassFitter.cxx:1380
 AliHFMassFitter.cxx:1381
 AliHFMassFitter.cxx:1382
 AliHFMassFitter.cxx:1383
 AliHFMassFitter.cxx:1384
 AliHFMassFitter.cxx:1385
 AliHFMassFitter.cxx:1386
 AliHFMassFitter.cxx:1387
 AliHFMassFitter.cxx:1388
 AliHFMassFitter.cxx:1389
 AliHFMassFitter.cxx:1390
 AliHFMassFitter.cxx:1391
 AliHFMassFitter.cxx:1392
 AliHFMassFitter.cxx:1393
 AliHFMassFitter.cxx:1394
 AliHFMassFitter.cxx:1395
 AliHFMassFitter.cxx:1396
 AliHFMassFitter.cxx:1397
 AliHFMassFitter.cxx:1398
 AliHFMassFitter.cxx:1399
 AliHFMassFitter.cxx:1400
 AliHFMassFitter.cxx:1401
 AliHFMassFitter.cxx:1402
 AliHFMassFitter.cxx:1403
 AliHFMassFitter.cxx:1404
 AliHFMassFitter.cxx:1405
 AliHFMassFitter.cxx:1406
 AliHFMassFitter.cxx:1407
 AliHFMassFitter.cxx:1408
 AliHFMassFitter.cxx:1409
 AliHFMassFitter.cxx:1410
 AliHFMassFitter.cxx:1411
 AliHFMassFitter.cxx:1412
 AliHFMassFitter.cxx:1413
 AliHFMassFitter.cxx:1414
 AliHFMassFitter.cxx:1415
 AliHFMassFitter.cxx:1416
 AliHFMassFitter.cxx:1417
 AliHFMassFitter.cxx:1418
 AliHFMassFitter.cxx:1419
 AliHFMassFitter.cxx:1420
 AliHFMassFitter.cxx:1421
 AliHFMassFitter.cxx:1422
 AliHFMassFitter.cxx:1423
 AliHFMassFitter.cxx:1424
 AliHFMassFitter.cxx:1425
 AliHFMassFitter.cxx:1426
 AliHFMassFitter.cxx:1427
 AliHFMassFitter.cxx:1428
 AliHFMassFitter.cxx:1429
 AliHFMassFitter.cxx:1430
 AliHFMassFitter.cxx:1431
 AliHFMassFitter.cxx:1432
 AliHFMassFitter.cxx:1433
 AliHFMassFitter.cxx:1434
 AliHFMassFitter.cxx:1435
 AliHFMassFitter.cxx:1436
 AliHFMassFitter.cxx:1437
 AliHFMassFitter.cxx:1438
 AliHFMassFitter.cxx:1439
 AliHFMassFitter.cxx:1440
 AliHFMassFitter.cxx:1441
 AliHFMassFitter.cxx:1442
 AliHFMassFitter.cxx:1443
 AliHFMassFitter.cxx:1444
 AliHFMassFitter.cxx:1445
 AliHFMassFitter.cxx:1446
 AliHFMassFitter.cxx:1447
 AliHFMassFitter.cxx:1448
 AliHFMassFitter.cxx:1449
 AliHFMassFitter.cxx:1450
 AliHFMassFitter.cxx:1451
 AliHFMassFitter.cxx:1452
 AliHFMassFitter.cxx:1453
 AliHFMassFitter.cxx:1454
 AliHFMassFitter.cxx:1455
 AliHFMassFitter.cxx:1456
 AliHFMassFitter.cxx:1457
 AliHFMassFitter.cxx:1458
 AliHFMassFitter.cxx:1459
 AliHFMassFitter.cxx:1460
 AliHFMassFitter.cxx:1461
 AliHFMassFitter.cxx:1462
 AliHFMassFitter.cxx:1463
 AliHFMassFitter.cxx:1464
 AliHFMassFitter.cxx:1465
 AliHFMassFitter.cxx:1466
 AliHFMassFitter.cxx:1467
 AliHFMassFitter.cxx:1468
 AliHFMassFitter.cxx:1469
 AliHFMassFitter.cxx:1470
 AliHFMassFitter.cxx:1471
 AliHFMassFitter.cxx:1472
 AliHFMassFitter.cxx:1473
 AliHFMassFitter.cxx:1474
 AliHFMassFitter.cxx:1475
 AliHFMassFitter.cxx:1476
 AliHFMassFitter.cxx:1477
 AliHFMassFitter.cxx:1478
 AliHFMassFitter.cxx:1479
 AliHFMassFitter.cxx:1480
 AliHFMassFitter.cxx:1481
 AliHFMassFitter.cxx:1482
 AliHFMassFitter.cxx:1483
 AliHFMassFitter.cxx:1484
 AliHFMassFitter.cxx:1485
 AliHFMassFitter.cxx:1486
 AliHFMassFitter.cxx:1487
 AliHFMassFitter.cxx:1488
 AliHFMassFitter.cxx:1489
 AliHFMassFitter.cxx:1490
 AliHFMassFitter.cxx:1491
 AliHFMassFitter.cxx:1492
 AliHFMassFitter.cxx:1493
 AliHFMassFitter.cxx:1494
 AliHFMassFitter.cxx:1495
 AliHFMassFitter.cxx:1496
 AliHFMassFitter.cxx:1497
 AliHFMassFitter.cxx:1498
 AliHFMassFitter.cxx:1499
 AliHFMassFitter.cxx:1500
 AliHFMassFitter.cxx:1501
 AliHFMassFitter.cxx:1502
 AliHFMassFitter.cxx:1503
 AliHFMassFitter.cxx:1504
 AliHFMassFitter.cxx:1505
 AliHFMassFitter.cxx:1506
 AliHFMassFitter.cxx:1507
 AliHFMassFitter.cxx:1508
 AliHFMassFitter.cxx:1509
 AliHFMassFitter.cxx:1510
 AliHFMassFitter.cxx:1511
 AliHFMassFitter.cxx:1512
 AliHFMassFitter.cxx:1513
 AliHFMassFitter.cxx:1514
 AliHFMassFitter.cxx:1515
 AliHFMassFitter.cxx:1516
 AliHFMassFitter.cxx:1517
 AliHFMassFitter.cxx:1518
 AliHFMassFitter.cxx:1519
 AliHFMassFitter.cxx:1520
 AliHFMassFitter.cxx:1521
 AliHFMassFitter.cxx:1522
 AliHFMassFitter.cxx:1523
 AliHFMassFitter.cxx:1524
 AliHFMassFitter.cxx:1525
 AliHFMassFitter.cxx:1526
 AliHFMassFitter.cxx:1527
 AliHFMassFitter.cxx:1528
 AliHFMassFitter.cxx:1529
 AliHFMassFitter.cxx:1530
 AliHFMassFitter.cxx:1531
 AliHFMassFitter.cxx:1532
 AliHFMassFitter.cxx:1533
 AliHFMassFitter.cxx:1534
 AliHFMassFitter.cxx:1535
 AliHFMassFitter.cxx:1536
 AliHFMassFitter.cxx:1537
 AliHFMassFitter.cxx:1538
 AliHFMassFitter.cxx:1539
 AliHFMassFitter.cxx:1540
 AliHFMassFitter.cxx:1541
 AliHFMassFitter.cxx:1542
 AliHFMassFitter.cxx:1543
 AliHFMassFitter.cxx:1544
 AliHFMassFitter.cxx:1545
 AliHFMassFitter.cxx:1546
 AliHFMassFitter.cxx:1547
 AliHFMassFitter.cxx:1548
 AliHFMassFitter.cxx:1549
 AliHFMassFitter.cxx:1550
 AliHFMassFitter.cxx:1551
 AliHFMassFitter.cxx:1552
 AliHFMassFitter.cxx:1553
 AliHFMassFitter.cxx:1554
 AliHFMassFitter.cxx:1555
 AliHFMassFitter.cxx:1556
 AliHFMassFitter.cxx:1557
 AliHFMassFitter.cxx:1558
 AliHFMassFitter.cxx:1559
 AliHFMassFitter.cxx:1560
 AliHFMassFitter.cxx:1561
 AliHFMassFitter.cxx:1562
 AliHFMassFitter.cxx:1563
 AliHFMassFitter.cxx:1564
 AliHFMassFitter.cxx:1565
 AliHFMassFitter.cxx:1566
 AliHFMassFitter.cxx:1567
 AliHFMassFitter.cxx:1568
 AliHFMassFitter.cxx:1569
 AliHFMassFitter.cxx:1570
 AliHFMassFitter.cxx:1571
 AliHFMassFitter.cxx:1572
 AliHFMassFitter.cxx:1573
 AliHFMassFitter.cxx:1574
 AliHFMassFitter.cxx:1575
 AliHFMassFitter.cxx:1576
 AliHFMassFitter.cxx:1577
 AliHFMassFitter.cxx:1578
 AliHFMassFitter.cxx:1579
 AliHFMassFitter.cxx:1580
 AliHFMassFitter.cxx:1581
 AliHFMassFitter.cxx:1582
 AliHFMassFitter.cxx:1583
 AliHFMassFitter.cxx:1584
 AliHFMassFitter.cxx:1585
 AliHFMassFitter.cxx:1586
 AliHFMassFitter.cxx:1587
 AliHFMassFitter.cxx:1588
 AliHFMassFitter.cxx:1589
 AliHFMassFitter.cxx:1590
 AliHFMassFitter.cxx:1591
 AliHFMassFitter.cxx:1592
 AliHFMassFitter.cxx:1593
 AliHFMassFitter.cxx:1594
 AliHFMassFitter.cxx:1595
 AliHFMassFitter.cxx:1596
 AliHFMassFitter.cxx:1597
 AliHFMassFitter.cxx:1598
 AliHFMassFitter.cxx:1599
 AliHFMassFitter.cxx:1600
 AliHFMassFitter.cxx:1601
 AliHFMassFitter.cxx:1602
 AliHFMassFitter.cxx:1603
 AliHFMassFitter.cxx:1604
 AliHFMassFitter.cxx:1605
 AliHFMassFitter.cxx:1606
 AliHFMassFitter.cxx:1607
 AliHFMassFitter.cxx:1608
 AliHFMassFitter.cxx:1609
 AliHFMassFitter.cxx:1610
 AliHFMassFitter.cxx:1611
 AliHFMassFitter.cxx:1612
 AliHFMassFitter.cxx:1613
 AliHFMassFitter.cxx:1614
 AliHFMassFitter.cxx:1615
 AliHFMassFitter.cxx:1616
 AliHFMassFitter.cxx:1617
 AliHFMassFitter.cxx:1618
 AliHFMassFitter.cxx:1619
 AliHFMassFitter.cxx:1620
 AliHFMassFitter.cxx:1621
 AliHFMassFitter.cxx:1622
 AliHFMassFitter.cxx:1623
 AliHFMassFitter.cxx:1624
 AliHFMassFitter.cxx:1625
 AliHFMassFitter.cxx:1626
 AliHFMassFitter.cxx:1627
 AliHFMassFitter.cxx:1628
 AliHFMassFitter.cxx:1629
 AliHFMassFitter.cxx:1630
 AliHFMassFitter.cxx:1631
 AliHFMassFitter.cxx:1632
 AliHFMassFitter.cxx:1633
 AliHFMassFitter.cxx:1634
 AliHFMassFitter.cxx:1635
 AliHFMassFitter.cxx:1636
 AliHFMassFitter.cxx:1637
 AliHFMassFitter.cxx:1638
 AliHFMassFitter.cxx:1639
 AliHFMassFitter.cxx:1640
 AliHFMassFitter.cxx:1641
 AliHFMassFitter.cxx:1642
 AliHFMassFitter.cxx:1643
 AliHFMassFitter.cxx:1644
 AliHFMassFitter.cxx:1645
 AliHFMassFitter.cxx:1646
 AliHFMassFitter.cxx:1647
 AliHFMassFitter.cxx:1648
 AliHFMassFitter.cxx:1649
 AliHFMassFitter.cxx:1650
 AliHFMassFitter.cxx:1651
 AliHFMassFitter.cxx:1652
 AliHFMassFitter.cxx:1653
 AliHFMassFitter.cxx:1654
 AliHFMassFitter.cxx:1655
 AliHFMassFitter.cxx:1656
 AliHFMassFitter.cxx:1657
 AliHFMassFitter.cxx:1658
 AliHFMassFitter.cxx:1659
 AliHFMassFitter.cxx:1660
 AliHFMassFitter.cxx:1661
 AliHFMassFitter.cxx:1662
 AliHFMassFitter.cxx:1663
 AliHFMassFitter.cxx:1664
 AliHFMassFitter.cxx:1665
 AliHFMassFitter.cxx:1666
 AliHFMassFitter.cxx:1667
 AliHFMassFitter.cxx:1668
 AliHFMassFitter.cxx:1669
 AliHFMassFitter.cxx:1670
 AliHFMassFitter.cxx:1671
 AliHFMassFitter.cxx:1672
 AliHFMassFitter.cxx:1673
 AliHFMassFitter.cxx:1674
 AliHFMassFitter.cxx:1675
 AliHFMassFitter.cxx:1676
 AliHFMassFitter.cxx:1677
 AliHFMassFitter.cxx:1678
 AliHFMassFitter.cxx:1679
 AliHFMassFitter.cxx:1680
 AliHFMassFitter.cxx:1681
 AliHFMassFitter.cxx:1682
 AliHFMassFitter.cxx:1683
 AliHFMassFitter.cxx:1684
 AliHFMassFitter.cxx:1685
 AliHFMassFitter.cxx:1686
 AliHFMassFitter.cxx:1687
 AliHFMassFitter.cxx:1688
 AliHFMassFitter.cxx:1689
 AliHFMassFitter.cxx:1690
 AliHFMassFitter.cxx:1691
 AliHFMassFitter.cxx:1692
 AliHFMassFitter.cxx:1693
 AliHFMassFitter.cxx:1694
 AliHFMassFitter.cxx:1695
 AliHFMassFitter.cxx:1696
 AliHFMassFitter.cxx:1697
 AliHFMassFitter.cxx:1698
 AliHFMassFitter.cxx:1699
 AliHFMassFitter.cxx:1700
 AliHFMassFitter.cxx:1701
 AliHFMassFitter.cxx:1702
 AliHFMassFitter.cxx:1703
 AliHFMassFitter.cxx:1704
 AliHFMassFitter.cxx:1705
 AliHFMassFitter.cxx:1706
 AliHFMassFitter.cxx:1707
 AliHFMassFitter.cxx:1708
 AliHFMassFitter.cxx:1709
 AliHFMassFitter.cxx:1710
 AliHFMassFitter.cxx:1711
 AliHFMassFitter.cxx:1712
 AliHFMassFitter.cxx:1713
 AliHFMassFitter.cxx:1714
 AliHFMassFitter.cxx:1715
 AliHFMassFitter.cxx:1716
 AliHFMassFitter.cxx:1717
 AliHFMassFitter.cxx:1718
 AliHFMassFitter.cxx:1719
 AliHFMassFitter.cxx:1720
 AliHFMassFitter.cxx:1721
 AliHFMassFitter.cxx:1722
 AliHFMassFitter.cxx:1723
 AliHFMassFitter.cxx:1724
 AliHFMassFitter.cxx:1725
 AliHFMassFitter.cxx:1726
 AliHFMassFitter.cxx:1727
 AliHFMassFitter.cxx:1728
 AliHFMassFitter.cxx:1729
 AliHFMassFitter.cxx:1730
 AliHFMassFitter.cxx:1731
 AliHFMassFitter.cxx:1732
 AliHFMassFitter.cxx:1733
 AliHFMassFitter.cxx:1734
 AliHFMassFitter.cxx:1735
 AliHFMassFitter.cxx:1736
 AliHFMassFitter.cxx:1737
 AliHFMassFitter.cxx:1738
 AliHFMassFitter.cxx:1739
 AliHFMassFitter.cxx:1740
 AliHFMassFitter.cxx:1741
 AliHFMassFitter.cxx:1742
 AliHFMassFitter.cxx:1743
 AliHFMassFitter.cxx:1744
 AliHFMassFitter.cxx:1745
 AliHFMassFitter.cxx:1746
 AliHFMassFitter.cxx:1747
 AliHFMassFitter.cxx:1748
 AliHFMassFitter.cxx:1749
 AliHFMassFitter.cxx:1750
 AliHFMassFitter.cxx:1751
 AliHFMassFitter.cxx:1752
 AliHFMassFitter.cxx:1753
 AliHFMassFitter.cxx:1754
 AliHFMassFitter.cxx:1755
 AliHFMassFitter.cxx:1756
 AliHFMassFitter.cxx:1757
 AliHFMassFitter.cxx:1758
 AliHFMassFitter.cxx:1759
 AliHFMassFitter.cxx:1760
 AliHFMassFitter.cxx:1761
 AliHFMassFitter.cxx:1762
 AliHFMassFitter.cxx:1763
 AliHFMassFitter.cxx:1764
 AliHFMassFitter.cxx:1765
 AliHFMassFitter.cxx:1766
 AliHFMassFitter.cxx:1767
 AliHFMassFitter.cxx:1768
 AliHFMassFitter.cxx:1769
 AliHFMassFitter.cxx:1770
 AliHFMassFitter.cxx:1771
 AliHFMassFitter.cxx:1772
 AliHFMassFitter.cxx:1773
 AliHFMassFitter.cxx:1774
 AliHFMassFitter.cxx:1775
 AliHFMassFitter.cxx:1776
 AliHFMassFitter.cxx:1777
 AliHFMassFitter.cxx:1778
 AliHFMassFitter.cxx:1779
 AliHFMassFitter.cxx:1780
 AliHFMassFitter.cxx:1781
 AliHFMassFitter.cxx:1782
 AliHFMassFitter.cxx:1783
 AliHFMassFitter.cxx:1784
 AliHFMassFitter.cxx:1785
 AliHFMassFitter.cxx:1786
 AliHFMassFitter.cxx:1787
 AliHFMassFitter.cxx:1788
 AliHFMassFitter.cxx:1789
 AliHFMassFitter.cxx:1790
 AliHFMassFitter.cxx:1791
 AliHFMassFitter.cxx:1792
 AliHFMassFitter.cxx:1793
 AliHFMassFitter.cxx:1794
 AliHFMassFitter.cxx:1795
 AliHFMassFitter.cxx:1796
 AliHFMassFitter.cxx:1797
 AliHFMassFitter.cxx:1798
 AliHFMassFitter.cxx:1799
 AliHFMassFitter.cxx:1800
 AliHFMassFitter.cxx:1801
 AliHFMassFitter.cxx:1802
 AliHFMassFitter.cxx:1803
 AliHFMassFitter.cxx:1804
 AliHFMassFitter.cxx:1805
 AliHFMassFitter.cxx:1806
 AliHFMassFitter.cxx:1807
 AliHFMassFitter.cxx:1808
 AliHFMassFitter.cxx:1809
 AliHFMassFitter.cxx:1810
 AliHFMassFitter.cxx:1811
 AliHFMassFitter.cxx:1812
 AliHFMassFitter.cxx:1813
 AliHFMassFitter.cxx:1814
 AliHFMassFitter.cxx:1815
 AliHFMassFitter.cxx:1816
 AliHFMassFitter.cxx:1817
 AliHFMassFitter.cxx:1818
 AliHFMassFitter.cxx:1819
 AliHFMassFitter.cxx:1820
 AliHFMassFitter.cxx:1821
 AliHFMassFitter.cxx:1822
 AliHFMassFitter.cxx:1823
 AliHFMassFitter.cxx:1824
 AliHFMassFitter.cxx:1825
 AliHFMassFitter.cxx:1826
 AliHFMassFitter.cxx:1827
 AliHFMassFitter.cxx:1828
 AliHFMassFitter.cxx:1829
 AliHFMassFitter.cxx:1830
 AliHFMassFitter.cxx:1831
 AliHFMassFitter.cxx:1832
 AliHFMassFitter.cxx:1833
 AliHFMassFitter.cxx:1834
 AliHFMassFitter.cxx:1835
 AliHFMassFitter.cxx:1836
 AliHFMassFitter.cxx:1837
 AliHFMassFitter.cxx:1838
 AliHFMassFitter.cxx:1839
 AliHFMassFitter.cxx:1840
 AliHFMassFitter.cxx:1841
 AliHFMassFitter.cxx:1842
 AliHFMassFitter.cxx:1843
 AliHFMassFitter.cxx:1844
 AliHFMassFitter.cxx:1845
 AliHFMassFitter.cxx:1846
 AliHFMassFitter.cxx:1847
 AliHFMassFitter.cxx:1848
 AliHFMassFitter.cxx:1849
 AliHFMassFitter.cxx:1850
 AliHFMassFitter.cxx:1851
 AliHFMassFitter.cxx:1852
 AliHFMassFitter.cxx:1853
 AliHFMassFitter.cxx:1854
 AliHFMassFitter.cxx:1855
 AliHFMassFitter.cxx:1856
 AliHFMassFitter.cxx:1857
 AliHFMassFitter.cxx:1858
 AliHFMassFitter.cxx:1859
 AliHFMassFitter.cxx:1860
 AliHFMassFitter.cxx:1861
 AliHFMassFitter.cxx:1862
 AliHFMassFitter.cxx:1863
 AliHFMassFitter.cxx:1864
 AliHFMassFitter.cxx:1865
 AliHFMassFitter.cxx:1866
 AliHFMassFitter.cxx:1867
 AliHFMassFitter.cxx:1868
 AliHFMassFitter.cxx:1869
 AliHFMassFitter.cxx:1870
 AliHFMassFitter.cxx:1871
 AliHFMassFitter.cxx:1872
 AliHFMassFitter.cxx:1873
 AliHFMassFitter.cxx:1874
 AliHFMassFitter.cxx:1875
 AliHFMassFitter.cxx:1876
 AliHFMassFitter.cxx:1877
 AliHFMassFitter.cxx:1878
 AliHFMassFitter.cxx:1879
 AliHFMassFitter.cxx:1880
 AliHFMassFitter.cxx:1881
 AliHFMassFitter.cxx:1882
 AliHFMassFitter.cxx:1883
 AliHFMassFitter.cxx:1884
 AliHFMassFitter.cxx:1885
 AliHFMassFitter.cxx:1886
 AliHFMassFitter.cxx:1887
 AliHFMassFitter.cxx:1888
 AliHFMassFitter.cxx:1889
 AliHFMassFitter.cxx:1890
 AliHFMassFitter.cxx:1891
 AliHFMassFitter.cxx:1892
 AliHFMassFitter.cxx:1893
 AliHFMassFitter.cxx:1894
 AliHFMassFitter.cxx:1895
 AliHFMassFitter.cxx:1896
 AliHFMassFitter.cxx:1897
 AliHFMassFitter.cxx:1898
 AliHFMassFitter.cxx:1899
 AliHFMassFitter.cxx:1900
 AliHFMassFitter.cxx:1901
 AliHFMassFitter.cxx:1902
 AliHFMassFitter.cxx:1903
 AliHFMassFitter.cxx:1904
 AliHFMassFitter.cxx:1905
 AliHFMassFitter.cxx:1906
 AliHFMassFitter.cxx:1907
 AliHFMassFitter.cxx:1908
 AliHFMassFitter.cxx:1909
 AliHFMassFitter.cxx:1910
 AliHFMassFitter.cxx:1911
 AliHFMassFitter.cxx:1912
 AliHFMassFitter.cxx:1913
 AliHFMassFitter.cxx:1914
 AliHFMassFitter.cxx:1915
 AliHFMassFitter.cxx:1916
 AliHFMassFitter.cxx:1917
 AliHFMassFitter.cxx:1918
 AliHFMassFitter.cxx:1919
 AliHFMassFitter.cxx:1920
 AliHFMassFitter.cxx:1921
 AliHFMassFitter.cxx:1922
 AliHFMassFitter.cxx:1923
 AliHFMassFitter.cxx:1924
 AliHFMassFitter.cxx:1925
 AliHFMassFitter.cxx:1926
 AliHFMassFitter.cxx:1927
 AliHFMassFitter.cxx:1928
 AliHFMassFitter.cxx:1929
 AliHFMassFitter.cxx:1930
 AliHFMassFitter.cxx:1931
 AliHFMassFitter.cxx:1932
 AliHFMassFitter.cxx:1933
 AliHFMassFitter.cxx:1934
 AliHFMassFitter.cxx:1935
 AliHFMassFitter.cxx:1936
 AliHFMassFitter.cxx:1937
 AliHFMassFitter.cxx:1938
 AliHFMassFitter.cxx:1939
 AliHFMassFitter.cxx:1940
 AliHFMassFitter.cxx:1941
 AliHFMassFitter.cxx:1942
 AliHFMassFitter.cxx:1943
 AliHFMassFitter.cxx:1944
 AliHFMassFitter.cxx:1945
 AliHFMassFitter.cxx:1946
 AliHFMassFitter.cxx:1947
 AliHFMassFitter.cxx:1948
 AliHFMassFitter.cxx:1949
 AliHFMassFitter.cxx:1950
 AliHFMassFitter.cxx:1951
 AliHFMassFitter.cxx:1952
 AliHFMassFitter.cxx:1953
 AliHFMassFitter.cxx:1954
 AliHFMassFitter.cxx:1955
 AliHFMassFitter.cxx:1956
 AliHFMassFitter.cxx:1957
 AliHFMassFitter.cxx:1958
 AliHFMassFitter.cxx:1959
 AliHFMassFitter.cxx:1960
 AliHFMassFitter.cxx:1961
 AliHFMassFitter.cxx:1962
 AliHFMassFitter.cxx:1963
 AliHFMassFitter.cxx:1964
 AliHFMassFitter.cxx:1965
 AliHFMassFitter.cxx:1966
 AliHFMassFitter.cxx:1967
 AliHFMassFitter.cxx:1968
 AliHFMassFitter.cxx:1969
 AliHFMassFitter.cxx:1970
 AliHFMassFitter.cxx:1971
 AliHFMassFitter.cxx:1972
 AliHFMassFitter.cxx:1973
 AliHFMassFitter.cxx:1974
 AliHFMassFitter.cxx:1975
 AliHFMassFitter.cxx:1976
 AliHFMassFitter.cxx:1977
 AliHFMassFitter.cxx:1978
 AliHFMassFitter.cxx:1979
 AliHFMassFitter.cxx:1980
 AliHFMassFitter.cxx:1981
 AliHFMassFitter.cxx:1982
 AliHFMassFitter.cxx:1983
 AliHFMassFitter.cxx:1984
 AliHFMassFitter.cxx:1985
 AliHFMassFitter.cxx:1986
 AliHFMassFitter.cxx:1987
 AliHFMassFitter.cxx:1988
 AliHFMassFitter.cxx:1989
 AliHFMassFitter.cxx:1990
 AliHFMassFitter.cxx:1991
 AliHFMassFitter.cxx:1992
 AliHFMassFitter.cxx:1993
 AliHFMassFitter.cxx:1994
 AliHFMassFitter.cxx:1995
 AliHFMassFitter.cxx:1996
 AliHFMassFitter.cxx:1997
 AliHFMassFitter.cxx:1998
 AliHFMassFitter.cxx:1999
 AliHFMassFitter.cxx:2000
 AliHFMassFitter.cxx:2001
 AliHFMassFitter.cxx:2002
 AliHFMassFitter.cxx:2003
 AliHFMassFitter.cxx:2004
 AliHFMassFitter.cxx:2005
 AliHFMassFitter.cxx:2006
 AliHFMassFitter.cxx:2007
 AliHFMassFitter.cxx:2008
 AliHFMassFitter.cxx:2009
 AliHFMassFitter.cxx:2010
 AliHFMassFitter.cxx:2011
 AliHFMassFitter.cxx:2012
 AliHFMassFitter.cxx:2013
 AliHFMassFitter.cxx:2014
 AliHFMassFitter.cxx:2015
 AliHFMassFitter.cxx:2016
 AliHFMassFitter.cxx:2017
 AliHFMassFitter.cxx:2018
 AliHFMassFitter.cxx:2019
 AliHFMassFitter.cxx:2020
 AliHFMassFitter.cxx:2021
 AliHFMassFitter.cxx:2022
 AliHFMassFitter.cxx:2023
 AliHFMassFitter.cxx:2024
 AliHFMassFitter.cxx:2025
 AliHFMassFitter.cxx:2026
 AliHFMassFitter.cxx:2027
 AliHFMassFitter.cxx:2028
 AliHFMassFitter.cxx:2029
 AliHFMassFitter.cxx:2030
 AliHFMassFitter.cxx:2031
 AliHFMassFitter.cxx:2032
 AliHFMassFitter.cxx:2033
 AliHFMassFitter.cxx:2034
 AliHFMassFitter.cxx:2035
 AliHFMassFitter.cxx:2036
 AliHFMassFitter.cxx:2037
 AliHFMassFitter.cxx:2038
 AliHFMassFitter.cxx:2039
 AliHFMassFitter.cxx:2040
 AliHFMassFitter.cxx:2041
 AliHFMassFitter.cxx:2042
 AliHFMassFitter.cxx:2043
 AliHFMassFitter.cxx:2044
 AliHFMassFitter.cxx:2045
 AliHFMassFitter.cxx:2046
 AliHFMassFitter.cxx:2047
 AliHFMassFitter.cxx:2048
 AliHFMassFitter.cxx:2049
 AliHFMassFitter.cxx:2050
 AliHFMassFitter.cxx:2051
 AliHFMassFitter.cxx:2052
 AliHFMassFitter.cxx:2053
 AliHFMassFitter.cxx:2054
 AliHFMassFitter.cxx:2055