ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TInterpreter.h>
#include <TString.h>
#include <TObjString.h>
#include <TObjArray.h>
#include <TMath.h>
#include <TFile.h>
#include <TCanvas.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH1D.h>
#include <TF1.h>
#include <TStyle.h>
#include <TLegend.h>
#include <TLegendEntry.h>
#include <TDatabasePDG.h>
#include <TGraph.h>

#include "AliAODRecoDecayHF.h"
#include "AliRDHFCuts.h"
#include "AliRDHFCutsDplustoKpipi.h"
#include "AliRDHFCutsDStartoKpipi.h"
#include "AliRDHFCutsDstoKKpi.h"
#include "AliRDHFCutsD0toKpi.h"
#include "AliHFMassFitter.h"
#include "AliNormalizationCounter.h"
#endif


// MACRO to perform fits to D meson invariant mass spectra
// and store raw yields and cut object into a root output file
// Origin: F. Prino (prino@to.infn.it)
// D0: C. Bianchin (cbianchi@pd.infn.it)



//
enum {kD0toKpi, kDplusKpipi, kDStarD0pi, kDsKKpi};
enum {kBoth, kParticleOnly, kAntiParticleOnly};
enum {kExpo=0, kThrExpo=5, kLinear, kPol2};
enum {kGaus=0, kDoubleGaus};


// Common variables: to be configured by the user
const Int_t nPtBins=6;
Double_t ptlims[nPtBins+1]={2.,3.,4.,5.,6.,8.,12.};
Int_t rebin[nPtBins]={2,4,4,4,4,4};
Int_t firstUsedBin[nPtBins]={-1,-1,-1,-1,-1,-1}; // -1 uses all bins, >=1 to set the lower bin to be accepted from original histo

TString suffix="Loose_SecondSet1236_ForCF08";


//const Int_t nPtBins=7;//6;
//Double_t ptlims[nPtBins+1]={1.,2.,3.,4.,5.,6.,8.,12.};
//Int_t rebin[nPtBins+1]={8,6,10,10,10,10,10,10}; //for looser cuts
//Int_t rebin[nPtBins+1]={10,10,10,10,10,10,10,10}; //for Chiara's cuts
Int_t typeb=kExpo;
Int_t types=kGaus;
Int_t optPartAntiPart=kBoth;
Int_t factor4refl=0;
Double_t minMassForFit=1.7;
Double_t maxMassForFit=2.1;
Float_t massRangeForCounting=0.05; // GeV
TH2F* hPtMass=0x0;
Double_t nEventsForNorm=0.;

//for D0only
Bool_t cutsappliedondistr=kTRUE;
const Int_t nsamples=2;//3;
//Int_t nevents[nsamples]={8.5635859e+07 /*LHC10b+cpart*/,8.9700624e+07/*LHC10dpart*/};
//Int_t nevents[nsamples]={9.0374946e+07 /*LHC10b+c*/,9.7593785e+07/*LHC10d*/};
//Int_t nevents[nsamples]={1.1777812e+08 /*LHC10dnewTPCpid*/,9.7593785e+07/*LHC10d*/};
//Int_t nevents[nsamples]={1.1777812e+08 /*LHC10dnewTPCpid*/,9.7593785e+07/*LHC10d*/,9.0374946e+07 /*LHC10b+c*/};
Int_t nevents[nsamples]={1.18860695e+08 /*LHC10dnewTPCpid*/,9.0374946e+07 /*LHC10b+c*/};
//Int_t nevents[nsamples]={1. /*LHC10dnewTPCpid*/,1 /*LHC10dnewTPCpidrescale*/};
// Functions

Bool_t LoadDplusHistos(TObjArray* listFiles, TH1F** hMass);
Bool_t LoadDsHistos(TObjArray* listFiles, TH1F** hMass);
Bool_t LoadD0toKpiHistos(TObjArray* listFiles, TH1F** hMass);
Bool_t LoadDstarD0piHistos(TObjArray* listFiles, TH1F** hMass);

TH1F* RebinHisto(TH1F* hOrig, Int_t reb, Int_t firstUse=-1);




void FitMassSpectra(Int_t analysisType=kDplusKpipi,
		    TString fileNameb="",
		    TString fileNamec="",
		    TString fileNamed="",
		    TString fileNamee=""
	       ){
  //

  gInterpreter->ExecuteMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/LoadLibraries.C");
  gStyle->SetOptTitle(0);

  TObjArray* listFiles=new TObjArray();
  if(fileNameb!="") listFiles->AddLast(new TObjString(fileNameb.Data()));
  if(fileNamec!="") listFiles->AddLast(new TObjString(fileNamec.Data()));
  if(fileNamed!="") listFiles->AddLast(new TObjString(fileNamed.Data()));
  if(fileNamee!="") listFiles->AddLast(new TObjString(fileNamee.Data()));
  if(listFiles->GetEntries()==0){
    printf("Missing file names in input\n");
    return;
  }

  TH1F** hmass=new TH1F*[nPtBins];
  for(Int_t i=0;i<nPtBins;i++) hmass[i]=0x0;

  Float_t massD, massD0_fDstar;
  Bool_t retCode;
  if(analysisType==kD0toKpi){
    retCode=LoadD0toKpiHistos(listFiles,hmass);
    massD=TDatabasePDG::Instance()->GetParticle(421)->Mass();
  }
  else if(analysisType==kDplusKpipi){
    retCode=LoadDplusHistos(listFiles,hmass);
    massD=TDatabasePDG::Instance()->GetParticle(411)->Mass();
  }
 else if(analysisType==kDStarD0pi){
    retCode=LoadDstarD0piHistos(listFiles,hmass);
    massD=TDatabasePDG::Instance()->GetParticle(413)->Mass();
    massD0_fDstar=TDatabasePDG::Instance()->GetParticle(421)->Mass();
    massD =massD-massD0_fDstar;
  }
  else if(analysisType==kDsKKpi){
    retCode=LoadDsHistos(listFiles,hmass);
    massD=TDatabasePDG::Instance()->GetParticle(431)->Mass();
  }
  else{
    printf("Wrong analysis type parameter\n");
    return;
  }
  if(!retCode){
    printf("ERROR in reading input files\n");
    return;
  } 
  


  TH1D* hCntSig1=new TH1D("hCntSig1","hCntSig1",nPtBins,ptlims);
  TH1D* hCntSig2=new TH1D("hCntSig2","hCntSig2",nPtBins,ptlims);
  TH1D* hNDiffCntSig1=new TH1D("hNDiffCntSig1","hNDiffCntSig1",nPtBins,ptlims);
  TH1D* hNDiffCntSig2=new TH1D("hNDiffCntSig2","hNDiffCntSig2",nPtBins,ptlims);
  TH1D* hSignal=new TH1D("hSignal","hSignal",nPtBins,ptlims);
  TH1D* hRelErrSig=new TH1D("hRelErrSig","hRelErrSig",nPtBins,ptlims);
  TH1D* hInvSignif=new TH1D("hInvSignif","hInvSignif",nPtBins,ptlims);
  TH1D* hBackground=new TH1D("hBackground","hBackground",nPtBins,ptlims);
  TH1D* hBackgroundNormSigma=new TH1D("hBackgroundNormSigma","hBackgroundNormSigma",nPtBins,ptlims);
  TH1D* hSignificance=new TH1D("hSignificance","hSignificance",nPtBins,ptlims);
  TH1D* hMass=new TH1D("hMass","hMass",nPtBins,ptlims);
  TH1D* hSigma=new TH1D("hSigma","hSigma",nPtBins,ptlims);


  Int_t nMassBins=hmass[0]->GetNbinsX();
  Double_t hmin=TMath::Max(minMassForFit,hmass[0]->GetBinLowEdge(2));
  Double_t hmax=TMath::Min(maxMassForFit,hmass[0]->GetBinLowEdge(nMassBins-2)+hmass[0]->GetBinWidth(nMassBins-2));
  Float_t minBinSum=hmass[0]->FindBin(massD-massRangeForCounting);
  Float_t maxBinSum=hmass[0]->FindBin(massD+massRangeForCounting);
  Int_t iPad=1;

  TF1* funBckStore1=0x0;
  TF1* funBckStore2=0x0;
  TF1* funBckStore3=0x0;

  AliHFMassFitter** fitter=new AliHFMassFitter*[nPtBins];
  Double_t arrchisquare[nPtBins];
  TCanvas* c1= new TCanvas("c1","MassSpectra",1000,800);
  Int_t nx=3, ny=2;
  if(nPtBins>6){
    nx=4;
    ny=3;
  }
  if(nPtBins>12){
    nx=5;
    ny=4;
  }
  c1->Divide(nx,ny);

  Double_t sig,errsig,s,errs,b,errb;
  for(Int_t iBin=0; iBin<nPtBins; iBin++){
    c1->cd(iPad++);
    Int_t origNbins=hmass[iBin]->GetNbinsX();
    TH1F* hRebinned=RebinHisto(hmass[iBin],rebin[iBin],firstUsedBin[iBin]);
    hmin=TMath::Max(minMassForFit,hRebinned->GetBinLowEdge(2));
    hmax=TMath::Min(maxMassForFit,hRebinned->GetBinLowEdge(hRebinned->GetNbinsX()));
    fitter[iBin]=new AliHFMassFitter(hRebinned,hmin, hmax,1,typeb,types);
    rebin[iBin]=origNbins/fitter[iBin]->GetBinN();
    fitter[iBin]->SetReflectionSigmaFactor(factor4refl);
    fitter[iBin]->SetInitialGaussianMean(massD);
    if(analysisType==kDStarD0pi) fitter[iBin]->SetInitialGaussianSigma(0.00065);
    Bool_t out=fitter[iBin]->MassFitter(0);
    if(!out) {
      fitter[iBin]->GetHistoClone()->Draw();
      continue;
    }
    Double_t mass=fitter[iBin]->GetMean();
    Double_t sigma=fitter[iBin]->GetSigma();
    arrchisquare[iBin]=fitter[iBin]->GetReducedChiSquare();
    TF1* fB1=fitter[iBin]->GetBackgroundFullRangeFunc();
    TF1* fB2=fitter[iBin]->GetBackgroundRecalcFunc();
    TF1* fM=fitter[iBin]->GetMassFunc();
    if(iBin==0 && fB1) funBckStore1=new TF1(*fB1);
    if(iBin==0 && fB2) funBckStore2=new TF1(*fB2);
    if(iBin==0 && fM) funBckStore3=new TF1(*fM);

    fitter[iBin]->DrawHere(gPad);    
    fitter[iBin]->Signal(3,s,errs);
    fitter[iBin]->Background(3,b,errb);
    fitter[iBin]->Significance(3,sig,errsig);
    Double_t ry=fitter[iBin]->GetRawYield();
    Double_t ery=fitter[iBin]->GetRawYieldError();
    Float_t cntSig1=0.;
    Float_t cntSig2=0.;
    Float_t cntErr=0.;
    for(Int_t iMB=minBinSum; iMB<=maxBinSum; iMB++){
      Float_t bkg1=fB1 ? fB1->Eval(hmass[iBin]->GetBinCenter(iMB))/rebin[iBin] : 0;
      Float_t bkg2=fB2 ? fB2->Eval(hmass[iBin]->GetBinCenter(iMB))/rebin[iBin] : 0;
      cntSig1+=(hmass[iBin]->GetBinContent(iMB)-bkg1);
      cntSig2+=(hmass[iBin]->GetBinContent(iMB)-bkg2);
      cntErr+=(hmass[iBin]->GetBinContent(iMB));
    }
    hCntSig1->SetBinContent(iBin+1,cntSig1);
    hCntSig1->SetBinError(iBin+1,TMath::Sqrt(cntErr));
    hNDiffCntSig1->SetBinContent(iBin+1,(s-cntSig1)/s);
    hNDiffCntSig1->SetBinError(iBin+1,TMath::Sqrt(cntErr)/s);
    hCntSig2->SetBinContent(iBin+1,cntSig2);
    hNDiffCntSig2->SetBinContent(iBin+1,(s-cntSig2)/s);
    hNDiffCntSig2->SetBinError(iBin+1,TMath::Sqrt(cntErr)/s);
    hCntSig2->SetBinError(iBin+1,TMath::Sqrt(cntErr));
    hSignal->SetBinContent(iBin+1,ry);
    hSignal->SetBinError(iBin+1,ery);
    hRelErrSig->SetBinContent(iBin+1,errs/s);
    hInvSignif->SetBinContent(iBin+1,1/sig);
    hInvSignif->SetBinError(iBin+1,errsig/(sig*sig));
    hBackground->SetBinContent(iBin+1,b); //consider sigma
    hBackground->SetBinError(iBin+1,errb);
    hBackgroundNormSigma->SetBinContent(iBin+1,b/(3*fitter[iBin]->GetSigma())*(3*0.012)); //consider sigma
    hBackgroundNormSigma->SetBinError(iBin+1,errb);
    hSignificance->SetBinContent(iBin+1,sig);
    hSignificance->SetBinError(iBin+1,errsig);
    hMass->SetBinContent(iBin+1,mass);
    hMass->SetBinError(iBin+1,0.0001);
    hSigma->SetBinContent(iBin+1,sigma);
    hSigma->SetBinError(iBin+1,0.0001);
    
  }

  /*
  c1->cd(1); // is some cases the fitting function of 1st bin get lost
  funBckStore1->Draw("same");
  funBckStore2->Draw("same");
  funBckStore3->Draw("same");
  */

  TCanvas *cpar=new TCanvas("cpar","Fit params",1200,600);
  cpar->Divide(2,1);
  cpar->cd(1);
  hMass->SetMarkerStyle(20);
  hMass->Draw("PE");
  hMass->GetXaxis()->SetTitle("Pt (GeV/c)");
  hMass->GetXaxis()->SetTitle("Mass (GeV/c^{2})");
  cpar->cd(2);
  hSigma->SetMarkerStyle(20);
  hSigma->Draw("PE");
  hSigma->GetXaxis()->SetTitle("Pt (GeV/c)");
  hSigma->GetXaxis()->SetTitle("Sigma (GeV/c^{2})");

  TCanvas* csig=new TCanvas("csig","Results",1200,600);
  csig->Divide(3,1);
  csig->cd(1);
  hSignal->SetMarkerStyle(20);
  hSignal->SetMarkerColor(4);
  hSignal->SetLineColor(4);
  hSignal->GetXaxis()->SetTitle("Pt (GeV/c)");
  hSignal->GetYaxis()->SetTitle("Signal");
  hSignal->Draw("P");
  hCntSig1->SetMarkerStyle(26);
  hCntSig1->SetMarkerColor(2);
  hCntSig1->SetLineColor(2);
  hCntSig1->Draw("PSAME");
  hCntSig2->SetMarkerStyle(29);
  hCntSig2->SetMarkerColor(kGray+1);
  hCntSig2->SetLineColor(kGray+1);
  hCntSig2->Draw("PSAME");
  TLegend* leg=new TLegend(0.4,0.7,0.89,0.89);
  leg->SetFillColor(0);
  TLegendEntry* ent=leg->AddEntry(hSignal,"From Fit","PL");
  ent->SetTextColor(hSignal->GetMarkerColor());
  ent=leg->AddEntry(hCntSig1,"From Counting1","PL");
  ent->SetTextColor(hCntSig1->GetMarkerColor());
  ent=leg->AddEntry(hCntSig2,"From Counting2","PL");
  ent->SetTextColor(hCntSig2->GetMarkerColor());
  leg->Draw();
  csig->cd(2);
  hBackground->SetMarkerStyle(20);
  hBackground->Draw("P");
  hBackground->GetXaxis()->SetTitle("Pt (GeV/c)");
  hBackground->GetYaxis()->SetTitle("Background");
  csig->cd(3);
  hSignificance->SetMarkerStyle(20);
  hSignificance->Draw("P");
  hSignificance->GetXaxis()->SetTitle("Pt (GeV/c)");
  hSignificance->GetYaxis()->SetTitle("Significance");

  TCanvas* cDiffS=new TCanvas("cDiffS","Difference",1200,600);
  cDiffS->Divide(2,1);
  cDiffS->cd(1);
  hRelErrSig->SetMarkerStyle(20); //fullcircle
  hRelErrSig->SetTitleOffset(1.2);  
  hRelErrSig->SetTitle("Rel Error from Fit;p_{t} (GeV/c);Signal Relative Error");
  hRelErrSig->Draw("P");
  hInvSignif->SetMarkerStyle(21); //fullsquare
  hInvSignif->SetMarkerColor(kMagenta+1);
  hInvSignif->SetLineColor(kMagenta+1);
  hInvSignif->Draw("PSAMES");
  TLegend* leg2=new TLegend(0.4,0.7,0.89,0.89);
  leg2->SetFillColor(0);
  TLegendEntry* ent2=leg2->AddEntry(hRelErrSig,"From Fit","P");
  ent2->SetTextColor(hRelErrSig->GetMarkerColor());
  ent2=leg2->AddEntry(hInvSignif,"1/Significance","PL");
  ent2->SetTextColor(hInvSignif->GetMarkerColor());
  leg2->Draw();

  cDiffS->cd(2);
  hNDiffCntSig1->SetMarkerStyle(26);
  hNDiffCntSig1->SetMarkerColor(2);
  hNDiffCntSig1->SetLineColor(2);
  hNDiffCntSig1->SetTitle("Cmp Fit-Count;p_{t} (GeV/c);(S_{fit}-S_{count})/S_{fit}");
  hNDiffCntSig1->Draw("P");
  hNDiffCntSig2->SetMarkerStyle(29);
  hNDiffCntSig2->SetMarkerColor(kGray+1);
  hNDiffCntSig2->SetLineColor(kGray+1);
  hNDiffCntSig2->Draw("PSAME");
  TLegend* leg1=new TLegend(0.4,0.7,0.89,0.89);
  leg1->SetFillColor(0);
  TLegendEntry* ent1=leg1->AddEntry(hNDiffCntSig1,"From Counting1","PL");
  ent1->SetTextColor(hNDiffCntSig1->GetMarkerColor());
  ent1=leg1->AddEntry(hNDiffCntSig2,"From Counting2","PL");
  ent1->SetTextColor(hNDiffCntSig2->GetMarkerColor());
  leg1->Draw();

  TGraph* grReducedChiSquare=new TGraph(nPtBins,ptlims,arrchisquare);
  grReducedChiSquare->SetName("grReducedChiSquare");
  grReducedChiSquare->SetTitle("Reduced Chi2;p_{t} (GeV/c);#tilde{#chi}^{2}");
  TCanvas *cChi2=new TCanvas("cChi2","reduced chi square",600,600);
  cChi2->cd();
  grReducedChiSquare->SetMarkerStyle(21);
  grReducedChiSquare->Draw("AP");

  TCanvas* cbkgNormSigma=new TCanvas("cbkgNormSigma","Background normalized to sigma",400,600);
  cbkgNormSigma->cd();
  hBackgroundNormSigma->SetMarkerStyle(20);
  hBackgroundNormSigma->Draw("P");
  hBackgroundNormSigma->GetXaxis()->SetTitle("Pt (GeV/c)");
  hBackgroundNormSigma->GetYaxis()->SetTitle("Background #times 3 #times 0.012/ (3 #times #sigma)");
  hBackgroundNormSigma->Draw();


  TString partname="Both";
  if(optPartAntiPart==kParticleOnly) {
    if(analysisType==kD0toKpi) partname="D0";
    if(analysisType==kDplusKpipi) partname="Dplus";
    if(analysisType==kDsKKpi) partname="Dsplus";
  }
  if(optPartAntiPart==kAntiParticleOnly) {
    if(analysisType==kD0toKpi) partname="D0bar";
    if(analysisType==kDplusKpipi) partname="Dminus";
    if(analysisType==kDsKKpi) partname="Dsminus";
  }

  printf("Events for norm = %f\n",nEventsForNorm);
  TH1F* hNEvents=new TH1F("hNEvents","",1,0.,1.);
  hNEvents->SetBinContent(1,nEventsForNorm);

  TFile* outf=new TFile(Form("RawYield%s.root",partname.Data()),"update");
  outf->cd();
  hNEvents->Write();
  hMass->Write();
  hSigma->Write();
  hCntSig1->Write();
  hCntSig2->Write();
  hNDiffCntSig1->Write();
  hNDiffCntSig2->Write();
  hSignal->Write();
  hRelErrSig->Write();
  hInvSignif->Write();
  hBackground->Write();
  hBackgroundNormSigma->Write();
  hSignificance->Write();
  grReducedChiSquare->Write();
  hPtMass->Write();
  outf->Close();
}


Bool_t LoadDplusHistos(TObjArray* listFiles, TH1F** hMass){

  Int_t nFiles=listFiles->GetEntries();
  TList **hlist=new TList*[nFiles];
  AliRDHFCutsDplustoKpipi** dcuts=new AliRDHFCutsDplustoKpipi*[nFiles];

  Int_t nReadFiles=0;
  for(Int_t iFile=0; iFile<nFiles; iFile++){
    TString fName=((TObjString*)listFiles->At(iFile))->GetString();    
    TFile *f=TFile::Open(fName.Data());
    if(!f){
      printf("ERROR: file %s does not exist\n",fName.Data());
      continue;
    }
    printf("Open File %s\n",f->GetName()); 
    TDirectory *dir = (TDirectory*)f->Get("PWG3_D2H_InvMassDplus");
    if(!dir){
      printf("ERROR: directory PWG3_D2H_InvMassDplus not found in %s\n",fName.Data());
      continue;
    }
    hlist[nReadFiles]=(TList*)dir->Get(Form("coutputDplus%s",suffix.Data()));
    TList *listcut = (TList*)dir->Get(Form("coutputDplusCuts%s",suffix.Data()));
    dcuts[nReadFiles]=(AliRDHFCutsDplustoKpipi*)listcut->At(0);
    if(nReadFiles>0){
      Bool_t sameCuts=dcuts[nReadFiles]->CompareCuts(dcuts[0]);
      if(!sameCuts){
	printf("ERROR: Cut objects do not match\n");
	return kFALSE;
      }
    }
    AliNormalizationCounter* c=(AliNormalizationCounter*)dir->Get(Form("coutputDplusNorm%s",suffix.Data()));
    printf("Events for normalization = %f\n",c->GetNEventsForNorm());
    nEventsForNorm+=c->GetNEventsForNorm();
    nReadFiles++;
  }
  if(nReadFiles<nFiles){
    printf("WARNING: not all requested files have been found\n");
  }

  Int_t nPtBinsCuts=dcuts[0]->GetNPtBins();
  printf("Number of pt bins for cut object = %d\n",nPtBins);
  Float_t *ptlimsCuts=dcuts[0]->GetPtBinLimits();
  ptlimsCuts[nPtBinsCuts]=ptlimsCuts[nPtBinsCuts-1]+4.;

  Int_t iFinBin=0;
  for(Int_t i=0;i<nPtBinsCuts;i++){
    if(ptlimsCuts[i]>=ptlims[iFinBin+1]) iFinBin+=1; 
    if(iFinBin>nPtBins) break;
    if(ptlimsCuts[i]>=ptlims[iFinBin] && 
       ptlimsCuts[i+1]<=ptlims[iFinBin+1]){
      for(Int_t iFile=0; iFile<nReadFiles; iFile++){
	TString histoName;
	if(optPartAntiPart==kBoth) histoName.Form("hMassPt%dTC",i);
	else if(optPartAntiPart==kParticleOnly) histoName.Form("hMassPt%dTCPlus",i);
	else if(optPartAntiPart==kAntiParticleOnly) histoName.Form("hMassPt%dTCMinus",i);
	TH1F* htemp=(TH1F*)hlist[iFile]->FindObject(histoName.Data());
	if(!htemp){
	  printf("ERROR: Histogram %s not found\n",histoName.Data());
	  return kFALSE;
	}
	if(!hMass[iFinBin]){
	  hMass[iFinBin]=new TH1F(*htemp);
	}else{
	  hMass[iFinBin]->Add(htemp);
	}
      }
    }
  }
  TString partname="Both";
  if(optPartAntiPart==kParticleOnly) partname="Dplus";
  if(optPartAntiPart==kAntiParticleOnly) partname="Dminus";

  for(Int_t iFile=0; iFile<nReadFiles; iFile++){
    TH2F* htemp2=(TH2F*)hlist[iFile]->FindObject("hPtVsMassTC");
    if(iFile==0){
      hPtMass=new TH2F(*htemp2);
    }else{
      hPtMass->Add(htemp2);
    }
  }

  TFile* outf=new TFile(Form("RawYield%s.root",partname.Data()),"recreate");
  outf->cd();
  dcuts[0]->Write();
  outf->Close();

  return kTRUE;

}


Bool_t LoadDsHistos(TObjArray* listFiles, TH1F** hMass){

  Int_t nFiles=listFiles->GetEntries();
  TList **hlist=new TList*[nFiles];
  AliRDHFCutsDstoKKpi** dcuts=new AliRDHFCutsDstoKKpi*[nFiles];

  Int_t nReadFiles=0;
  for(Int_t iFile=0; iFile<nFiles; iFile++){
    TString fName=((TObjString*)listFiles->At(iFile))->GetString();    
    TFile *f=TFile::Open(fName.Data());
    if(!f){
      printf("ERROR: file %s does not exist\n",fName.Data());
      continue;
    }
    printf("Open File %s\n",f->GetName()); 
    TDirectory *dir = (TDirectory*)f->Get("PWG3_D2H_InvMassDs");
    if(!dir){
      printf("ERROR: directory PWG3_D2H_InvMassDs not found in %s\n",fName.Data());
      continue;
    }
    hlist[nReadFiles]=(TList*)dir->Get("coutputDs");
    TList *listcut = (TList*)dir->Get("coutputDsCuts");
    dcuts[nReadFiles]=(AliRDHFCutsDstoKKpi*)listcut->At(0);
    cout<< dcuts[nReadFiles]<<endl;
    if(nReadFiles>0){
      Bool_t sameCuts=dcuts[nReadFiles]->CompareCuts(dcuts[0]);
      if(!sameCuts){
	printf("ERROR: Cut objects do not match\n");
	return kFALSE;
      }
    }
    nReadFiles++;
  }
  if(nReadFiles<nFiles){
    printf("WARNING: not all requested files have been found\n");
  }

  Int_t nPtBinsCuts=dcuts[0]->GetNPtBins();
  printf("Number of pt bins for cut object = %d\n",nPtBins);
  Float_t *ptlimsCuts=dcuts[0]->GetPtBinLimits();
  ptlimsCuts[nPtBinsCuts]=ptlimsCuts[nPtBinsCuts-1]+4.;

  Int_t iFinBin=0;
  for(Int_t i=0;i<nPtBinsCuts;i++){
    if(ptlimsCuts[i]>=ptlims[iFinBin+1]) iFinBin+=1; 
    if(iFinBin>nPtBins) break;
    if(ptlimsCuts[i]>=ptlims[iFinBin] && 
       ptlimsCuts[i+1]<=ptlims[iFinBin+1]){
      for(Int_t iFile=0; iFile<nReadFiles; iFile++){
	TString histoName;
	if(optPartAntiPart==kBoth) histoName.Form("hMassAllPt%dphi",i);
	else if(optPartAntiPart==kParticleOnly){
	  printf("Particle/Antiparticle not yet enabled for Ds");
	  histoName.Form("hMassAllPt%dphi",i);
	}
	else if(optPartAntiPart==kAntiParticleOnly){
	  printf("Particle/Antiparticle not yet enabled for Ds");
	  histoName.Form("hMassAllPt%dphi",i);
	}
	TH1F* htemp=(TH1F*)hlist[iFile]->FindObject(histoName.Data());
	if(!htemp){
	  printf("ERROR: Histogram %s not found\n",histoName.Data());
	  return kFALSE;
	}
	if(!hMass[iFinBin]){
	  hMass[iFinBin]=new TH1F(*htemp);
	}else{
	  hMass[iFinBin]->Add(htemp);
	}
      }
    }
  }
  TString partname="Both";
  if(optPartAntiPart==kParticleOnly) partname="Both";
  if(optPartAntiPart==kAntiParticleOnly) partname="Both";

  for(Int_t iFile=0; iFile<nReadFiles; iFile++){
    TH2F* htemp2=(TH2F*)hlist[iFile]->FindObject("hPtVsMassPhi");
    if(iFile==0){
      hPtMass=new TH2F(*htemp2);
    }else{
      hPtMass->Add(htemp2);
    }
  }

  TFile* outf=new TFile(Form("RawYield%s.root",partname.Data()),"recreate");
  outf->cd();
  dcuts[0]->Write();
  outf->Close();

  return kTRUE;

}


Bool_t LoadD0toKpiHistos(TObjArray* listFiles, TH1F** hMass){
  //
  Int_t nFiles=listFiles->GetEntries();
  TList **hlist=new TList*[nFiles];
  AliRDHFCutsD0toKpi** dcuts=new AliRDHFCutsD0toKpi*[nFiles];

  Int_t nReadFiles=0;
  for(Int_t iFile=0; iFile<nFiles; iFile++){
    TString fName=((TObjString*)listFiles->At(iFile))->GetString();    
    TFile *f=TFile::Open(fName.Data());
    if(!f){
      printf("ERROR: file %s does not exist\n",fName.Data());
      continue;
    }
    printf("Open File %s\n",f->GetName());

    TString dirname="PWG3_D2H_D0InvMass";
    if(optPartAntiPart==kParticleOnly) dirname+="D0";
    else if(optPartAntiPart==kAntiParticleOnly) dirname+="D0bar";
    if(cutsappliedondistr) dirname+="C";
    TDirectory *dir = (TDirectory*)f->Get(dirname);
    if(!dir){
      printf("ERROR: directory %s not found in %s\n",dirname.Data(),fName.Data());
      continue;
    }
    TString listmassname="coutputmassD0Mass";
    if(optPartAntiPart==kParticleOnly) listmassname+="D0";
    else if(optPartAntiPart==kAntiParticleOnly) listmassname+="D0bar";
    if(cutsappliedondistr) listmassname+="C";

    hlist[nReadFiles]=(TList*)dir->Get(listmassname);

    TString cutsobjname="cutsD0";
    if(optPartAntiPart==kParticleOnly) cutsobjname+="D0";
    else if(optPartAntiPart==kAntiParticleOnly) cutsobjname+="D0bar";
    if(cutsappliedondistr) cutsobjname+="C";

    dcuts[nReadFiles]=(AliRDHFCutsD0toKpi*)dir->Get(cutsobjname);
    if(nReadFiles>0){
      Bool_t sameCuts=dcuts[nReadFiles]->CompareCuts(dcuts[0]);
      if(!sameCuts){
	printf("ERROR: Cut objects do not match\n");
	return kFALSE;
      }
    }
    nReadFiles++;
  }
  if(nReadFiles<nFiles){
    printf("WARNING: not all requested files have been found\n");
    if (nReadFiles==0) {
      printf("ERROR: Any file/dir found\n");
      return kFALSE;
    }
  }

  Int_t nPtBinsCuts=dcuts[0]->GetNPtBins();
  printf("Number of pt bins for cut object = %d\n",nPtBins);
  Float_t *ptlimsCuts=dcuts[0]->GetPtBinLimits();
  ptlimsCuts[nPtBinsCuts]=ptlimsCuts[nPtBinsCuts-1]+4.;

  Int_t iFinBin=0;
  for(Int_t i=0;i<nPtBinsCuts;i++){
    if(ptlimsCuts[i]>=ptlims[iFinBin+1]) iFinBin+=1; 
    if(iFinBin>nPtBins) break;
    if(ptlimsCuts[i]>=ptlims[iFinBin] && 
       ptlimsCuts[i+1]<=ptlims[iFinBin+1]){
      for(Int_t iFile=0; iFile<nReadFiles; iFile++){
	TH1F* htemp=(TH1F*)hlist[iFile]->FindObject(Form("histMass_%d",i));
	if(!hMass[iFinBin]){
	  hMass[iFinBin]=new TH1F(*htemp);
	}else{
	  hMass[iFinBin]->Add(htemp);
	}
      }
    }
  }
  TString partname="Both";
  if(optPartAntiPart==kParticleOnly) partname="D0";
  if(optPartAntiPart==kAntiParticleOnly) partname="D0bar";

  TFile* outf=new TFile(Form("RawYield%s.root",partname.Data()),"recreate");
  outf->cd();
  dcuts[0]->Write();
  outf->Close();
  return kTRUE;
}

Bool_t LoadDstarD0piHistos(TObjArray* listFiles, TH1F** hMass){
  //
  Int_t nFiles=listFiles->GetEntries();
  TList **hlist=new TList*[nFiles];
  AliRDHFCutsDStartoKpipi** dcuts=new AliRDHFCutsDStartoKpipi*[nFiles];
  Int_t nReadFiles=0;
  for(Int_t iFile=0; iFile<nFiles; iFile++){
    TString fName=((TObjString*)listFiles->At(iFile))->GetString();    
    TFile *f=TFile::Open(fName.Data());
    if(!f){
      printf("ERROR: file %s does not exist\n",fName.Data());
      continue;
    }
    printf("Open File %s\n",f->GetName());
    TString dirname="PWG3_D2H_DStarSpectra";
    TDirectory *dir = (TDirectory*)f->Get(dirname);
    if(!dir){
      printf("ERROR: directory %s not found in %s\n",dirname.Data(),fName.Data());
      continue;
    }
    TString listmassname="DStarPID00";

    hlist[nReadFiles]=(TList*)dir->Get(listmassname);
    TString cutsobjname="DStartoKpipiCuts";
    dcuts[nReadFiles]=(AliRDHFCutsDStartoKpipi*)dir->Get(cutsobjname);
    if(nReadFiles>0){
      Bool_t sameCuts=dcuts[nReadFiles]->CompareCuts(dcuts[0]);
      if(!sameCuts){
	printf("ERROR: Cut objects do not match\n");
	return kFALSE;
      }
    }
    nReadFiles++;
  }
  if(nReadFiles<nFiles){
    printf("WARNING: not all requested files have been found\n");
    if (nReadFiles==0) {
      printf("ERROR: Any file/dir found\n");
      return kFALSE;
    }
  }
  Int_t nPtBinsCuts=dcuts[0]->GetNPtBins();
  printf("Number of pt bins for cut object = %d\n",nPtBins);
  Float_t *ptlimsCuts=dcuts[0]->GetPtBinLimits();
  ptlimsCuts[nPtBinsCuts]=ptlimsCuts[nPtBinsCuts-1]+4.;




  Int_t iFinBin=0;
  for(Int_t i=0;i<nPtBinsCuts;i++){
    if(ptlimsCuts[i]>=ptlims[iFinBin+1]) iFinBin+=1; 
    if(iFinBin>nPtBins) break;
    if(ptlimsCuts[i]>=ptlims[iFinBin] && 
       ptlimsCuts[i+1]<=ptlims[iFinBin+1]){
      for(Int_t iFile=0; iFile<nReadFiles; iFile++){
	TH1F* htemp=(TH1F*)hlist[iFile]->FindObject(Form("histDeltaMass_%d",i));
	if(!hMass[iFinBin]){
	  hMass[iFinBin]=new TH1F(*htemp);
	}else{
	  hMass[iFinBin]->Add(htemp);
	}
      }
    }
  }
  TString partname="Both";
  if(optPartAntiPart==kParticleOnly) partname="DStar";
  if(optPartAntiPart==kAntiParticleOnly) partname="DStarbar";

  TFile* outf=new TFile(Form("RawYield%s.root",partname.Data()),"recreate");
  outf->cd();
  dcuts[0]->Write();
  outf->Close();
  return kTRUE;
}

void CompareFitTypes(TString* paths, TString* legtext,Int_t ncmp=3,TString* filenameYield=0x0){
  //read ncmp RawYield.roots and draw them together
  //set the global variable nevents before running
  //arguments:
  // - paths= vector of ncmp dimension with the paths of the file RawYield.root
  // - legtext= vector of ncmp dimension with the label for the legend
  // - ncmp= number of files to compare (default is 3)
  // - filenameYield= optional ncmp-dimensional array with the difference between the names of the files to be compared (useful if the 2 files are in the same directory but have different names)

  gStyle->SetOptStat(0);
  gStyle->SetOptTitle(0);
  gStyle->SetCanvasColor(0);
  gStyle->SetFrameFillColor(0);
  gStyle->SetTitleFillColor(0);
  gStyle->SetFrameBorderMode(0);

  if(!filenameYield) filenameYield=new TString[ncmp];

  for(Int_t k=0;k<ncmp;k++){
    if(!filenameYield) filenameYield[k]="RawYield.root";
    filenameYield[k].Prepend(paths[k]);
  }
  
  TCanvas* cSig=new TCanvas("cSig","Results",1200,600);
  cSig->Divide(3,1);
  TCanvas* cBkgN=new TCanvas("cBkgN","Background normalized to sigma",400,600);
  TCanvas* cDiffS=new TCanvas("cDiffS","Difference",1200,600);
  cDiffS->Divide(2,1);
  TCanvas *cChi2=new TCanvas("cChi2","reduced chi square",600,600);

  TLegend* leg1=new TLegend(0.4,0.7,0.89,0.89);
  leg1->SetFillColor(0);
  TLegend* leg2=(TLegend*)leg1->Clone();
  TLegend* leg3=(TLegend*)leg1->Clone();
  TLegend* leg4=new TLegend(0.4,0.6,0.8,0.89);
  leg4->SetFillColor(0);

  for(Int_t iTypes=0;iTypes<ncmp;iTypes++){
    TFile* fin=new TFile(filenameYield[iTypes]);
    if(!fin){
      printf("WARNING: %s not found",filenameYield[iTypes].Data());
      continue;
    }

    TH1F* hSignal=(TH1F*)fin->Get("hSignal");
    TH1F* hBackground=(TH1F*)fin->Get("hBackground");
    TH1F* hBackgroundNormSigma=(TH1F*)fin->Get("hBackgroundNormSigma");
    TH1F* hSignificance=(TH1F*)fin->Get("hSignificance");
    hSignal->SetName(Form("%s%d",hSignal->GetName(),iTypes));
    hBackground->SetName(Form("%s%d",hBackground->GetName(),iTypes));
    hBackgroundNormSigma->SetName(Form("%s%d",hBackgroundNormSigma->GetName(),iTypes));
    hSignificance->SetName(Form("%s%d",hSignificance->GetName(),iTypes));

    hSignal->SetMarkerColor(iTypes+2);
    hSignal->SetLineColor(iTypes+2);
    hBackground->SetMarkerColor(iTypes+2);
    hBackground->SetLineColor(iTypes+2);
    hBackgroundNormSigma->SetMarkerColor(iTypes+2);
    hBackgroundNormSigma->SetLineColor(iTypes+2);
    hSignificance->SetMarkerColor(iTypes+2);
    hSignificance->SetLineColor(iTypes+2);

    TLegendEntry* ent4=leg4->AddEntry(hSignal,Form("%s",legtext[iTypes].Data()),"PL");
    ent4->SetTextColor(hSignal->GetMarkerColor());

    if(ncmp==nsamples){
      printf("Info: Normalizing signal, background and significance to the number of events\n");
      hSignal->Scale(1./nevents[iTypes]);
      hBackground->Scale(1./nevents[iTypes]);
      hBackgroundNormSigma->Scale(1./nevents[iTypes]);
      hSignificance->Scale(1./TMath::Sqrt(nevents[iTypes]));
    }

    if(iTypes==0){
      cSig->cd(1);
      hSignal->DrawClone("P");
      cSig->cd(2);
      hBackground->DrawClone("P");
      cSig->cd(3);
      hSignificance->DrawClone("P");
      cBkgN->cd();
      hBackgroundNormSigma->DrawClone("P");
    } else{
      cSig->cd(1);
      hSignal->DrawClone("Psames");
      cSig->cd(2);
      hBackground->DrawClone("Psames");
      cSig->cd(3);
      hSignificance->DrawClone("Psames");
      cBkgN->cd();
      hBackgroundNormSigma->DrawClone("Psames");
    }

    TH1F* hRelErrSig=(TH1F*)fin->Get("hRelErrSig");
    TH1F* hInvSignif=(TH1F*)fin->Get("hInvSignif");
    hRelErrSig->SetName(Form("%s%d",hRelErrSig->GetName(),iTypes));
    hInvSignif->SetName(Form("%s%d",hInvSignif->GetName(),iTypes));

    hRelErrSig->SetMarkerColor(iTypes+2);
    hRelErrSig->SetLineColor(iTypes+2);
    hInvSignif->SetMarkerColor(iTypes+2);
    hInvSignif->SetLineColor(iTypes+2);

    TLegendEntry* ent1=leg1->AddEntry(hRelErrSig,Form("From Fit (%s)",legtext[iTypes].Data()),"P");
    ent1->SetTextColor(hRelErrSig->GetMarkerColor());
    ent1=leg1->AddEntry(hInvSignif,Form("1/Significance (%s)",legtext[iTypes].Data()),"PL");
    ent1->SetTextColor(hInvSignif->GetMarkerColor());

    cDiffS->cd(1);
    if(iTypes==0){
      hRelErrSig->DrawClone("P");
      hInvSignif->DrawClone();
    } else{
      hRelErrSig->DrawClone("Psames");
      hInvSignif->DrawClone("sames");
    }

    TH1F* hNDiffCntSig1=(TH1F*)fin->Get("hNDiffCntSig1");
    TH1F* hNDiffCntSig2=(TH1F*)fin->Get("hNDiffCntSig2");
    hNDiffCntSig1->SetName(Form("%s%d",hNDiffCntSig1->GetName(),iTypes));
    hNDiffCntSig2->SetName(Form("%s%d",hNDiffCntSig2->GetName(),iTypes));

    hNDiffCntSig1->SetMarkerColor(iTypes+2);
    hNDiffCntSig1->SetLineColor(iTypes+2);
    hNDiffCntSig2->SetMarkerColor(iTypes+2);
    hNDiffCntSig2->SetLineColor(iTypes+2);
    TLegendEntry* ent2=leg2->AddEntry(hNDiffCntSig1,Form("From Counting1 (%s)",legtext[iTypes].Data()),"PL");
    ent2->SetTextColor(hNDiffCntSig1->GetMarkerColor());
    ent2=leg2->AddEntry(hNDiffCntSig2,Form("From Counting2 (%s)",legtext[iTypes].Data()),"PL");
    ent2->SetTextColor(hNDiffCntSig2->GetMarkerColor());

    cDiffS->cd(2);
    if(iTypes==0){
      hNDiffCntSig1->DrawClone();
      hNDiffCntSig2->DrawClone();
    }else{
     hNDiffCntSig1->DrawClone("sames");
     hNDiffCntSig2->DrawClone("sames");
    }

    TGraph* grReducedChiSquare=(TGraph*)fin->Get("grReducedChiSquare");
    grReducedChiSquare->SetName(Form("%s%d",grReducedChiSquare->GetName(),iTypes));

    grReducedChiSquare->SetMarkerColor(iTypes+2);
    grReducedChiSquare->SetLineColor(iTypes+2);
    TLegendEntry* ent3=leg3->AddEntry(grReducedChiSquare,Form("%s",legtext[iTypes].Data()),"PL");
    ent3->SetTextColor(grReducedChiSquare->GetMarkerColor());

    cChi2->cd();
    if(iTypes==0) grReducedChiSquare->DrawClone("AP");
    else grReducedChiSquare->DrawClone("P");
  }

  cSig->cd(1);
  leg4->Draw();

  cDiffS->cd(1);
  leg1->Draw();

  cDiffS->cd(2);
  leg2->Draw();

  cChi2->cd();
  leg3->Draw();

  TFile* fout=new TFile("ComparisonRawYield.root","RECREATE");
  fout->cd();
  cDiffS->Write();
  cChi2->Write();
  fout->Close();
}


TH1F* RebinHisto(TH1F* hOrig, Int_t reb, Int_t firstUse){
  // Rebin histogram, from bin firstUse to lastUse
  // Use all bins if firstUse=-1

  Int_t nBinOrig=hOrig->GetNbinsX();
  Int_t firstBinOrig=1;
  Int_t lastBinOrig=nBinOrig;
  Int_t nBinOrigUsed=nBinOrig;
  Int_t nBinFinal=nBinOrig/reb;
  if(firstUse>=1){ 
    firstBinOrig=firstUse;
    nBinFinal=(nBinOrig-firstUse+1)/reb;
    nBinOrigUsed=nBinFinal*reb;
    lastBinOrig=firstBinOrig+nBinOrigUsed-1;
  }else{
    Int_t exc=nBinOrigUsed%reb;
    if(exc!=0){
      nBinOrigUsed-=exc;
      firstBinOrig+=exc/2;
      lastBinOrig=firstBinOrig+nBinOrigUsed-1;
    }
  }

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