ROOT logo
#ifndef ALIHFPTSPECTRUM_H
#define ALIHFPTSPECTRUM_H

/* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */ 

//***********************************************************************
// Class AliHFPtSpectrum
// Base class for feed-down corrections on heavy-flavour decays
// computes the cross-section via one of the three implemented methods:
//   0) Consider no feed-down prediction 
//   1) Subtract the feed-down with the "fc" method 
//       Yield = Reco * fc;  where fc = 1 / ( 1 + (eff_b/eff_c)*(N_b/N_c) ) ;
//   2) Subtract the feed-down with the "Nb" method
//       Yield = Reco - Feed-down (exact formula on the function implementation)
//
//  (the corrected yields per bin are divided by the bin-width)
//
//
//  In HIC you can also evaluate how the feed-down correction is influenced by an energy loss hypothesis: 
//      Raa(c-->D) / Raa(b-->D) defined here as Rcb for the "fc" method
//      Raa(b-->D) defined here as Rb for the "Nb" method
//
// Author: Z.Conesa, zconesa@in2p3.fr
//***********************************************************************

#include "TNamed.h"
#include "TMath.h"

#include "AliLog.h"

class TH1;
class TH2;
class TNtuple;
class TGraphAsymmErrors;


class AliHFPtSpectrum: public TNamed
{

 public:
  
  // Constructor
  AliHFPtSpectrum(const char* name="AliHFPtSpectrum", const char* title="HF feed down correction class", Int_t option=1);
  // Copy constructor
  AliHFPtSpectrum(const AliHFPtSpectrum &rhs);
  // Assignment operator
  AliHFPtSpectrum& operator=(const AliHFPtSpectrum &source);
  // Destructor
  virtual ~AliHFPtSpectrum();

  //
  // Setters
  //
  // Set the theoretical direct & feeddown pt spectrum
  void SetMCptSpectra(TH1D *hDirect, TH1D *hFeedDown);
  // Set the theoretical feeddown pt spectrum
  void SetFeedDownMCptSpectra(TH1D *hFeedDown);
  // Set the theoretical direct & feeddown pt spectrum upper and lower bounds
  void SetMCptDistributionsBounds(TH1D *hDirectMax, TH1D *hDirectMin, TH1D *hFeedDownMax, TH1D *hFeedDownMin);
  // Set the theoretical feeddown pt spectrum upper and lower bounds
  void SetFeedDownMCptDistributionsBounds(TH1D *hFeedDownMax, TH1D *hFeedDownMin);
  // Set the acceptance and efficiency corrections for direct  
  void SetDirectAccEffCorrection(TH1D *hDirectEff);
  // Set the acceptance and efficiency corrections for direct & feeddown 
  void SetAccEffCorrection(TH1D *hDirectEff, TH1D *hFeedDownEff);
  // Set the reconstructed spectrum
  void SetReconstructedSpectrum(TH1D *hRec);
  void SetReconstructedSpectrumSystematics(TGraphAsymmErrors *gRec); 
  // Set the calculation option flag for feed-down correction: 0=none, 1=fc , 2=Nb 
  void SetFeedDownCalculationOption(Int_t option){ fFeedDownOption = option; }
  // Set if the calculation has to consider asymmetric uncertaInt_ties or not
  void SetComputeAsymmetricUncertainties(Bool_t flag){ fAsymUncertainties = flag; }
  // Set if the yield is for particle plus anti-particle or not
  void SetIsParticlePlusAntiParticleYield(Bool_t flag){
    if (flag) { fParticleAntiParticle = 2; AliInfo(" Setting for particle + anti-particle yields"); }
    else { fParticleAntiParticle = 1; AliInfo(" Setting for only (anti)particle yields, not the sum of both"); }
  }
  void SetIsEventPlaneAnalysis(Bool_t flag){ fIsEventPlane = flag; }
  //
  void SetfIsStatUncEff(Bool_t flag){ fIsStatUncEff = flag; }
  // Set if the calculation has to consider Ratio(c/b eloss) hypothesis 
  void SetComputeElossHypothesis(Bool_t flag){ fPbPbElossHypothesis = flag; }
  // Set the luminosity and its uncertainty
  void SetLuminosity(Double_t luminosity, Double_t unc){
    fLuminosity[0]=luminosity;  fLuminosity[1]=unc;
  }
  // Set the trigger efficiency and its uncertainty
  void SetTriggerEfficiency(Double_t efficiency, Double_t unc){
    fTrigEfficiency[0]=efficiency; fTrigEfficiency[1]=unc;
  }
  // Set global acceptance x efficiency correction uncertainty (in percentages)
  void SetAccEffPercentageUncertainty(Double_t globalEffUnc, Double_t globalBCEffRatioUnc){
    fGlobalEfficiencyUncertainties[0] = globalEffUnc;
    fGlobalEfficiencyUncertainties[1] = globalBCEffRatioUnc;
  }
  // Set the normalization factors
  void SetNormalization(Double_t normalization){
    fLuminosity[0]=normalization;
  }
  void SetNormalization(Int_t nevents, Double_t sigma){
    fLuminosity[0]=nevents/sigma;
    fNevts = nevents;
  }
  void SetNormalization(Int_t nevents, Double_t sigma, Double_t sigmaunc){
    fLuminosity[0] = nevents/sigma; 
    fLuminosity[1] = fLuminosity[0] * TMath::Sqrt( (1/nevents) + (sigmaunc/sigma)*(sigmaunc/sigma) );
    fNevts = nevents;
  }
  //
  // Set the Tab parameter and its uncertainty
  void SetTabParameter(Double_t tabvalue, Double_t uncertainty){
    fTab[0] = tabvalue;
    fTab[1] = uncertainty;
  }


  //
  // Getters
  //
  // Return the theoretical predictions used for the calculation (rebinned if needed)
  TH1D * GetDirectTheoreticalSpectrum() const { return (fhDirectMCpt ? (TH1D*)fhDirectMCpt : NULL); }
  TH1D * GetDirectTheoreticalUpperLimitSpectrum() const { return (fhDirectMCptMax ? (TH1D*)fhDirectMCptMax : NULL); }
  TH1D * GetDirectTheoreticalLowerLimitSpectrum() const { return (fhDirectMCptMin ? (TH1D*)fhDirectMCptMin : NULL); }
  TH1D * GetFeedDownTheoreticalSpectrum() const { return (fhFeedDownMCpt ? (TH1D*)fhFeedDownMCpt : NULL); }
  TH1D * GetFeedDownTheoreticalUpperLimitSpectrum() const { return (fhFeedDownMCptMax ? (TH1D*)fhFeedDownMCptMax : NULL); }
  TH1D * GetFeedDownTheoreticalLowerLimitSpectrum() const { return (fhFeedDownMCptMin ? (TH1D*)fhFeedDownMCptMin : NULL); }
  // Return the acceptance and efficiency corrections (rebinned if needed)
  TH1D * GetDirectAccEffCorrection() const { return (fhDirectEffpt ? (TH1D*)fhDirectEffpt : NULL); }
  TH1D * GetFeedDownAccEffCorrection() const { return (fhFeedDownEffpt ? (TH1D*)fhFeedDownEffpt : NULL); }
  // Return whether the Ratio(c/b eloss) hypothesis has been considered
  Bool_t IsElossHypothesisCalculated(){ return fPbPbElossHypothesis; }
  // Return the TGraphAsymmErrors of the feed-down correction (extreme systematics)
  TGraphAsymmErrors * GetFeedDownCorrectionFcExtreme() const { return (fgFcExtreme ?  fgFcExtreme : NULL); }
  // Return the TGraphAsymmErrors of the feed-down correction (conservative systematics)
  TGraphAsymmErrors * GetFeedDownCorrectionFcConservative() const { return (fgFcConservative ?  fgFcConservative : NULL); }
  // Return the histogram of the feed-down correction
  TH1D * GetHistoFeedDownCorrectionFc() const { return (fhFc ?  (TH1D*)fhFc : NULL); }
  // Return the histograms of the feed-down correction bounds
  TH1D * GetHistoUpperLimitFeedDownCorrectionFc() const { return (fhFcMax ? (TH1D*)fhFcMax : NULL); }
  TH1D * GetHistoLowerLimitFeedDownCorrectionFc() const { return (fhFcMin ? (TH1D*)fhFcMin : NULL); }
  // Return the histogram of the feed-down correction times the Ratio(c/b eloss)
  TH2D * GetHistoFeedDownCorrectionFcVsEloss() const { return (fhFcRcb ?  (TH2D*)fhFcRcb : NULL); }
  // Return the TGraphAsymmErrors of the yield after feed-down correction (systematics but feed-down) 
  TGraphAsymmErrors * GetFeedDownCorrectedSpectrum() const { return (fgYieldCorr ? fgYieldCorr : NULL); }
  // Return the TGraphAsymmErrors of the yield after feed-down correction (feed-down extreme systematics)
  TGraphAsymmErrors * GetFeedDownCorrectedSpectrumExtreme() const { return (fgYieldCorrExtreme ? fgYieldCorrExtreme : NULL); }
  // Return the TGraphAsymmErrors of the yield after feed-down correction (feed-down conservative systematics)
  TGraphAsymmErrors * GetFeedDownCorrectedSpectrumConservative() const { return (fgYieldCorrConservative ? fgYieldCorrConservative : NULL); }
  // Return the histogram of the yield after feed-down correction 
  TH1D * GetHistoFeedDownCorrectedSpectrum() const { return (fhYieldCorr ? (TH1D*)fhYieldCorr : NULL); }
  // Return the histogram of the yield after feed-down correction bounds
  TH1D * GetHistoUpperLimitFeedDownCorrectedSpectrum() const { return (fhYieldCorrMax ? (TH1D*)fhYieldCorrMax : NULL); }
  TH1D * GetHistoLowerLimitFeedDownCorrectedSpectrum() const { return (fhYieldCorrMin ? (TH1D*)fhYieldCorrMin : NULL); }
  // Return the histogram of the yield after feed-down correction vs the Ratio(c/b eloss)
  TH2D * GetHistoFeedDownCorrectedSpectrumVsEloss() const { return (fhYieldCorrRcb ? (TH2D*)fhYieldCorrRcb : NULL); }
  // Return the equivalent invariant cross-section TGraphAsymmErrors (systematics but feed-down) 
  TGraphAsymmErrors * GetCrossSectionFromYieldSpectrum() const { return (fgSigmaCorr ? fgSigmaCorr : NULL); }
  // Return the equivalent invariant cross-section TGraphAsymmErrors (feed-down extreme systematics)
  TGraphAsymmErrors * GetCrossSectionFromYieldSpectrumExtreme() const { return (fgSigmaCorrExtreme ? fgSigmaCorrExtreme : NULL); }
  // Return the equivalent invariant cross-section TGraphAsymmErrors (feed-down conservative systematics)
  TGraphAsymmErrors * GetCrossSectionFromYieldSpectrumConservative() const { return (fgSigmaCorrConservative ? fgSigmaCorrConservative : NULL); }
  // Return the equivalent invariant cross-section histogram
  TH1D * GetHistoCrossSectionFromYieldSpectrum() const { return (fhSigmaCorr ? (TH1D*)fhSigmaCorr : NULL); }
  // Return the equivalent invariant cross-section histogram bounds
  TH1D * GetHistoUpperLimitCrossSectionFromYieldSpectrum() const { return (fhSigmaCorrMax ? (TH1D*)fhSigmaCorrMax : NULL); }
  TH1D * GetHistoLowerLimitCrossSectionFromYieldSpectrum() const { return (fhSigmaCorrMin ? (TH1D*)fhSigmaCorrMin : NULL); }
  // Return the cross section systematics from data systematics
  TH1D * GetHistoCrossSectionDataSystematics() const { return (fhSigmaCorrDataSyst ? (TH1D*)fhSigmaCorrDataSyst : NULL); }
  //
  // PbPb special calculations 
  // Return the equivalent invariant cross-section histogram vs the Ratio(c/b eloss)
  TH2D * GetHistoCrossSectionFromYieldSpectrumVsEloss() const { return (fhSigmaCorrRcb ? (TH2D*)fhSigmaCorrRcb : NULL); }
  // Return the ntuple of the calculation vs the Ratio(c/b eloss)
  TNtuple * GetNtupleCrossSectionVsEloss() { return (fnSigma ? (TNtuple*)fnSigma : NULL); }
  //
  //
  // Histograms to keep track of the influence of the efficiencies statistical uncertainty on the cross-section
  TH1D * GetDirectStatEffUncOnSigma() const { return (TH1D*)fhStatUncEffcSigma; }
  TH1D * GetFeedDownStatEffUncOnSigma() const { return (TH1D*)fhStatUncEffbSigma; }
  // Histograms to keep track of the influence of the efficiencies statistical uncertainty on the feed-down correction factor
  TH1D * GetDirectStatEffUncOnFc() const { return (TH1D*)fhStatUncEffcFD; }
  TH1D * GetFeedDownStatEffUncOnFc() const { return (TH1D*)fhStatUncEffbFD; }


  //
  // Main function:
  //    Compute the invariant cross-section from the yield (correct it)
  // variables : analysed delta_y, BR for the final correction, BR b --> decay (relative to the input theoretical prediction)
  void ComputeHFPtSpectrum(Double_t deltaY=1.0, Double_t branchingRatioC=1.0, Double_t branchingRatioBintoFinalDecay=1.0);

  // Compute the systematic uncertainties
  //   taking as input the AliHFSystErr uncertainties
  void ComputeSystUncertainties(AliHFSystErr *systematics, Bool_t combineFeedDown);
  //
  // Drawing the corrected spectrum comparing to theoretical prediction
  void DrawSpectrum(TGraphAsymmErrors *gPrediction);

  //
  // Basic functions
  // 
  void EstimateAndSetDirectEfficiencyRecoBin(TH1D *hSimu, TH1D *hReco);
  void EstimateAndSetFeedDownEfficiencyRecoBin(TH1D *hSimu, TH1D *hReco);
  
  //
  // Functions to  reweight histograms for testing purposes: 
  //   to reweight the simulation: hToReweight is reweighted as hReference/hToReweight
  TH1D * ReweightHisto(TH1D *hToReweight, TH1D *hReference);
  //   to reweight the reco-histos: hRecToReweight is reweighted as hReference/hMCToReweight
  TH1D * ReweightRecHisto(TH1D *hRecToReweight, TH1D *hMCToReweight, TH1D *hMCReference);
  // Functionality to find the y-axis bin of a TH2 for a given y-value
  Int_t FindTH2YBin(TH2D *histo, Float_t yvalue);


 protected:

  // Initialization 
  Bool_t Initialize();
  
  // Basic functions
  //
  // Correct the yield for feed-down correction via fc-method
  void CalculateCorrectedSpectrumNoFeedDown();
  // Compute the feed-down correction via fc-method
  void CalculateFeedDownCorrectionFc();
  // Correct the yield for feed-down correction via fc-method
  void CalculateFeedDownCorrectedSpectrumFc();
  // Correct the yield for feed-down correction via Nb-method
  void CalculateFeedDownCorrectedSpectrumNb(Double_t deltaY, Double_t branchingRatioBintoFinalDecay); 

  // Check histograms consistency function
  Bool_t CheckHistosConsistency(TH1D *h1, TH1D *h2);
  // Function to rebin the theoretical spectra in the data-reconstructed spectra binning
  TH1D * RebinTheoreticalSpectra(TH1D *hTheory, const char *name);
  // Function to estimate the efficiency in the data-reconstructed spectra binning
  TH1D * EstimateEfficiencyRecoBin(TH1D *hSimu, TH1D *hReco, const char *name);
  // Reset stat unc on the efficiencies
  void ResetStatUncEff();


  //
  // Input spectra
  //
  TH1D *fhDirectMCpt;            // Input MC c-->D spectra
  TH1D *fhFeedDownMCpt;          // Input MC b-->D spectra
  TH1D *fhDirectMCptMax;         // Input MC maximum c-->D spectra
  TH1D *fhDirectMCptMin;         // Input MC minimum c-->D spectra
  TH1D *fhFeedDownMCptMax;       // Input MC maximum b-->D spectra
  TH1D *fhFeedDownMCptMin;       // Input MC minimum b-->D spectra
  TH1D *fhDirectEffpt;           // c-->D Acceptance and efficiency correction
  TH1D *fhFeedDownEffpt;         // b-->D Acceptance and efficiency correction
  TH1D *fhRECpt;                 // all reconstructed D
  //
  TGraphAsymmErrors *fgRECSystematics; // all reconstructed D Systematic uncertainties
  //
  // Normalization factors
  Int_t fNevts;                      // nb of analyzed events
  Double_t fLuminosity[2];           // analyzed luminosity & uncertainty
  Double_t fTrigEfficiency[2];       // trigger efficiency & uncertainty
  Double_t fGlobalEfficiencyUncertainties[2]; // uncertainties on the efficiency [0]=c, b, [1]=b/c
  Double_t fTab[2];                   // Tab parameter and its uncertainty

  //
  // Output spectra
  //
  TH1D *fhFc;                            // Correction histo fc = 1 / ( 1 + (eff_b/eff_c)*(N_b/N_c) ) 
  TH1D *fhFcMax;                         // Maximum fc histo
  TH1D *fhFcMin;                         // Minimum fc histo
  TH2D *fhFcRcb;                         // Correction histo fc vs the Ratio(c/b eloss)
  TGraphAsymmErrors * fgFcExtreme;       // Extreme correction as TGraphAsymmErrors
  TGraphAsymmErrors * fgFcConservative;  // Extreme correction as TGraphAsymmErrors
  TH1D *fhYieldCorr;                     // Corrected yield (stat unc. only)
  TH1D *fhYieldCorrMax;                  // Maximum corrected yield  
  TH1D *fhYieldCorrMin;                  // Minimum corrected yield  
  TH2D *fhYieldCorrRcb;                  // Corrected yield (stat unc. only) vs the Ratio(c/b eloss)
  TGraphAsymmErrors * fgYieldCorr;              // Corrected yield as TGraphAsymmErrors  (syst but feed-down)
  TGraphAsymmErrors * fgYieldCorrExtreme;       // Extreme corrected yield as TGraphAsymmErrors  (syst from feed-down)
  TGraphAsymmErrors * fgYieldCorrConservative;  // Conservative corrected yield as TGraphAsymmErrors  (syst from feed-down) 
  TH1D *fhSigmaCorr;                     // Corrected cross-section (stat unc. only)
  TH1D *fhSigmaCorrMax;                  // Maximum corrected cross-section  
  TH1D *fhSigmaCorrMin;                  // Minimum corrected cross-section
  TH1D *fhSigmaCorrDataSyst;             // Corrected cross-section (syst. unc. from data only)
  TH2D *fhSigmaCorrRcb;                  // Corrected cross-section (stat unc. only) vs the Ratio(c/b eloss)
  TGraphAsymmErrors * fgSigmaCorr;              // Corrected cross-section as TGraphAsymmErrors (syst but feed-down)
  TGraphAsymmErrors * fgSigmaCorrExtreme;       // Extreme corrected cross-section as TGraphAsymmErrors (syst from feed-down)
  TGraphAsymmErrors * fgSigmaCorrConservative;  // Conservative corrected cross-section as TGraphAsymmErrors  (syst from feed-down)
  //
  TNtuple *fnSigma;          // Ntuple of the calculation vs the Ratio(c/b eloss)
  TNtuple *fnHypothesis;     // Ntuple of the calculation vs the Ratio(c/b eloss)

  //
  Int_t fFeedDownOption;            // feed-down correction flag: 0=none, 1=fc, 2=Nb 
  Bool_t fAsymUncertainties;        // flag: asymmetric uncertainties are (1) or not (0) considered
  Bool_t fPbPbElossHypothesis;      // flag: whether to do estimates vs Ratio(c/b eloss) hypothesis
  Bool_t fIsStatUncEff;             // flag : consider (1) or not (0) the stat unc on the efficiencies
  Int_t fParticleAntiParticle;      // 1: only one sign, 2: yield is for particle+anti-particle
  Bool_t fIsEventPlane;             // flag : when the analysis is done for In/Out of plane, divide the B-prediction by two

  Int_t     fnPtBins;      // number of pt bins
  Double_t *fPtBinLimits;  //[fnPtBins+1] limits of the pt intervals
  Double_t *fPtBinWidths;  //[fnPtBins] width of the pt intervals

  //
  TH1D *fhStatUncEffcSigma;       // Uncertainty on the cross-section due to the prompt efficiency statistical uncertainty
  TH1D *fhStatUncEffbSigma;       // Uncertainty on the cross-section due to the feed-down efficiency statistical uncertainty
  TH1D *fhStatUncEffcFD;          // Uncertainty on the feed-down correction due to the prompt efficiency statistical uncertainty
  TH1D *fhStatUncEffbFD;          // Uncertainty on the feed-down correction due to the feed-down efficiency statistical uncertainty

  ClassDef(AliHFPtSpectrum,5) // Class for Heavy Flavor spectra corrections
};

#endif
 AliHFPtSpectrum.h:1
 AliHFPtSpectrum.h:2
 AliHFPtSpectrum.h:3
 AliHFPtSpectrum.h:4
 AliHFPtSpectrum.h:5
 AliHFPtSpectrum.h:6
 AliHFPtSpectrum.h:7
 AliHFPtSpectrum.h:8
 AliHFPtSpectrum.h:9
 AliHFPtSpectrum.h:10
 AliHFPtSpectrum.h:11
 AliHFPtSpectrum.h:12
 AliHFPtSpectrum.h:13
 AliHFPtSpectrum.h:14
 AliHFPtSpectrum.h:15
 AliHFPtSpectrum.h:16
 AliHFPtSpectrum.h:17
 AliHFPtSpectrum.h:18
 AliHFPtSpectrum.h:19
 AliHFPtSpectrum.h:20
 AliHFPtSpectrum.h:21
 AliHFPtSpectrum.h:22
 AliHFPtSpectrum.h:23
 AliHFPtSpectrum.h:24
 AliHFPtSpectrum.h:25
 AliHFPtSpectrum.h:26
 AliHFPtSpectrum.h:27
 AliHFPtSpectrum.h:28
 AliHFPtSpectrum.h:29
 AliHFPtSpectrum.h:30
 AliHFPtSpectrum.h:31
 AliHFPtSpectrum.h:32
 AliHFPtSpectrum.h:33
 AliHFPtSpectrum.h:34
 AliHFPtSpectrum.h:35
 AliHFPtSpectrum.h:36
 AliHFPtSpectrum.h:37
 AliHFPtSpectrum.h:38
 AliHFPtSpectrum.h:39
 AliHFPtSpectrum.h:40
 AliHFPtSpectrum.h:41
 AliHFPtSpectrum.h:42
 AliHFPtSpectrum.h:43
 AliHFPtSpectrum.h:44
 AliHFPtSpectrum.h:45
 AliHFPtSpectrum.h:46
 AliHFPtSpectrum.h:47
 AliHFPtSpectrum.h:48
 AliHFPtSpectrum.h:49
 AliHFPtSpectrum.h:50
 AliHFPtSpectrum.h:51
 AliHFPtSpectrum.h:52
 AliHFPtSpectrum.h:53
 AliHFPtSpectrum.h:54
 AliHFPtSpectrum.h:55
 AliHFPtSpectrum.h:56
 AliHFPtSpectrum.h:57
 AliHFPtSpectrum.h:58
 AliHFPtSpectrum.h:59
 AliHFPtSpectrum.h:60
 AliHFPtSpectrum.h:61
 AliHFPtSpectrum.h:62
 AliHFPtSpectrum.h:63
 AliHFPtSpectrum.h:64
 AliHFPtSpectrum.h:65
 AliHFPtSpectrum.h:66
 AliHFPtSpectrum.h:67
 AliHFPtSpectrum.h:68
 AliHFPtSpectrum.h:69
 AliHFPtSpectrum.h:70
 AliHFPtSpectrum.h:71
 AliHFPtSpectrum.h:72
 AliHFPtSpectrum.h:73
 AliHFPtSpectrum.h:74
 AliHFPtSpectrum.h:75
 AliHFPtSpectrum.h:76
 AliHFPtSpectrum.h:77
 AliHFPtSpectrum.h:78
 AliHFPtSpectrum.h:79
 AliHFPtSpectrum.h:80
 AliHFPtSpectrum.h:81
 AliHFPtSpectrum.h:82
 AliHFPtSpectrum.h:83
 AliHFPtSpectrum.h:84
 AliHFPtSpectrum.h:85
 AliHFPtSpectrum.h:86
 AliHFPtSpectrum.h:87
 AliHFPtSpectrum.h:88
 AliHFPtSpectrum.h:89
 AliHFPtSpectrum.h:90
 AliHFPtSpectrum.h:91
 AliHFPtSpectrum.h:92
 AliHFPtSpectrum.h:93
 AliHFPtSpectrum.h:94
 AliHFPtSpectrum.h:95
 AliHFPtSpectrum.h:96
 AliHFPtSpectrum.h:97
 AliHFPtSpectrum.h:98
 AliHFPtSpectrum.h:99
 AliHFPtSpectrum.h:100
 AliHFPtSpectrum.h:101
 AliHFPtSpectrum.h:102
 AliHFPtSpectrum.h:103
 AliHFPtSpectrum.h:104
 AliHFPtSpectrum.h:105
 AliHFPtSpectrum.h:106
 AliHFPtSpectrum.h:107
 AliHFPtSpectrum.h:108
 AliHFPtSpectrum.h:109
 AliHFPtSpectrum.h:110
 AliHFPtSpectrum.h:111
 AliHFPtSpectrum.h:112
 AliHFPtSpectrum.h:113
 AliHFPtSpectrum.h:114
 AliHFPtSpectrum.h:115
 AliHFPtSpectrum.h:116
 AliHFPtSpectrum.h:117
 AliHFPtSpectrum.h:118
 AliHFPtSpectrum.h:119
 AliHFPtSpectrum.h:120
 AliHFPtSpectrum.h:121
 AliHFPtSpectrum.h:122
 AliHFPtSpectrum.h:123
 AliHFPtSpectrum.h:124
 AliHFPtSpectrum.h:125
 AliHFPtSpectrum.h:126
 AliHFPtSpectrum.h:127
 AliHFPtSpectrum.h:128
 AliHFPtSpectrum.h:129
 AliHFPtSpectrum.h:130
 AliHFPtSpectrum.h:131
 AliHFPtSpectrum.h:132
 AliHFPtSpectrum.h:133
 AliHFPtSpectrum.h:134
 AliHFPtSpectrum.h:135
 AliHFPtSpectrum.h:136
 AliHFPtSpectrum.h:137
 AliHFPtSpectrum.h:138
 AliHFPtSpectrum.h:139
 AliHFPtSpectrum.h:140
 AliHFPtSpectrum.h:141
 AliHFPtSpectrum.h:142
 AliHFPtSpectrum.h:143
 AliHFPtSpectrum.h:144
 AliHFPtSpectrum.h:145
 AliHFPtSpectrum.h:146
 AliHFPtSpectrum.h:147
 AliHFPtSpectrum.h:148
 AliHFPtSpectrum.h:149
 AliHFPtSpectrum.h:150
 AliHFPtSpectrum.h:151
 AliHFPtSpectrum.h:152
 AliHFPtSpectrum.h:153
 AliHFPtSpectrum.h:154
 AliHFPtSpectrum.h:155
 AliHFPtSpectrum.h:156
 AliHFPtSpectrum.h:157
 AliHFPtSpectrum.h:158
 AliHFPtSpectrum.h:159
 AliHFPtSpectrum.h:160
 AliHFPtSpectrum.h:161
 AliHFPtSpectrum.h:162
 AliHFPtSpectrum.h:163
 AliHFPtSpectrum.h:164
 AliHFPtSpectrum.h:165
 AliHFPtSpectrum.h:166
 AliHFPtSpectrum.h:167
 AliHFPtSpectrum.h:168
 AliHFPtSpectrum.h:169
 AliHFPtSpectrum.h:170
 AliHFPtSpectrum.h:171
 AliHFPtSpectrum.h:172
 AliHFPtSpectrum.h:173
 AliHFPtSpectrum.h:174
 AliHFPtSpectrum.h:175
 AliHFPtSpectrum.h:176
 AliHFPtSpectrum.h:177
 AliHFPtSpectrum.h:178
 AliHFPtSpectrum.h:179
 AliHFPtSpectrum.h:180
 AliHFPtSpectrum.h:181
 AliHFPtSpectrum.h:182
 AliHFPtSpectrum.h:183
 AliHFPtSpectrum.h:184
 AliHFPtSpectrum.h:185
 AliHFPtSpectrum.h:186
 AliHFPtSpectrum.h:187
 AliHFPtSpectrum.h:188
 AliHFPtSpectrum.h:189
 AliHFPtSpectrum.h:190
 AliHFPtSpectrum.h:191
 AliHFPtSpectrum.h:192
 AliHFPtSpectrum.h:193
 AliHFPtSpectrum.h:194
 AliHFPtSpectrum.h:195
 AliHFPtSpectrum.h:196
 AliHFPtSpectrum.h:197
 AliHFPtSpectrum.h:198
 AliHFPtSpectrum.h:199
 AliHFPtSpectrum.h:200
 AliHFPtSpectrum.h:201
 AliHFPtSpectrum.h:202
 AliHFPtSpectrum.h:203
 AliHFPtSpectrum.h:204
 AliHFPtSpectrum.h:205
 AliHFPtSpectrum.h:206
 AliHFPtSpectrum.h:207
 AliHFPtSpectrum.h:208
 AliHFPtSpectrum.h:209
 AliHFPtSpectrum.h:210
 AliHFPtSpectrum.h:211
 AliHFPtSpectrum.h:212
 AliHFPtSpectrum.h:213
 AliHFPtSpectrum.h:214
 AliHFPtSpectrum.h:215
 AliHFPtSpectrum.h:216
 AliHFPtSpectrum.h:217
 AliHFPtSpectrum.h:218
 AliHFPtSpectrum.h:219
 AliHFPtSpectrum.h:220
 AliHFPtSpectrum.h:221
 AliHFPtSpectrum.h:222
 AliHFPtSpectrum.h:223
 AliHFPtSpectrum.h:224
 AliHFPtSpectrum.h:225
 AliHFPtSpectrum.h:226
 AliHFPtSpectrum.h:227
 AliHFPtSpectrum.h:228
 AliHFPtSpectrum.h:229
 AliHFPtSpectrum.h:230
 AliHFPtSpectrum.h:231
 AliHFPtSpectrum.h:232
 AliHFPtSpectrum.h:233
 AliHFPtSpectrum.h:234
 AliHFPtSpectrum.h:235
 AliHFPtSpectrum.h:236
 AliHFPtSpectrum.h:237
 AliHFPtSpectrum.h:238
 AliHFPtSpectrum.h:239
 AliHFPtSpectrum.h:240
 AliHFPtSpectrum.h:241
 AliHFPtSpectrum.h:242
 AliHFPtSpectrum.h:243
 AliHFPtSpectrum.h:244
 AliHFPtSpectrum.h:245
 AliHFPtSpectrum.h:246
 AliHFPtSpectrum.h:247
 AliHFPtSpectrum.h:248
 AliHFPtSpectrum.h:249
 AliHFPtSpectrum.h:250
 AliHFPtSpectrum.h:251
 AliHFPtSpectrum.h:252
 AliHFPtSpectrum.h:253
 AliHFPtSpectrum.h:254
 AliHFPtSpectrum.h:255
 AliHFPtSpectrum.h:256
 AliHFPtSpectrum.h:257
 AliHFPtSpectrum.h:258
 AliHFPtSpectrum.h:259
 AliHFPtSpectrum.h:260
 AliHFPtSpectrum.h:261
 AliHFPtSpectrum.h:262
 AliHFPtSpectrum.h:263
 AliHFPtSpectrum.h:264
 AliHFPtSpectrum.h:265
 AliHFPtSpectrum.h:266
 AliHFPtSpectrum.h:267
 AliHFPtSpectrum.h:268
 AliHFPtSpectrum.h:269
 AliHFPtSpectrum.h:270
 AliHFPtSpectrum.h:271
 AliHFPtSpectrum.h:272
 AliHFPtSpectrum.h:273
 AliHFPtSpectrum.h:274
 AliHFPtSpectrum.h:275
 AliHFPtSpectrum.h:276
 AliHFPtSpectrum.h:277
 AliHFPtSpectrum.h:278
 AliHFPtSpectrum.h:279
 AliHFPtSpectrum.h:280
 AliHFPtSpectrum.h:281
 AliHFPtSpectrum.h:282
 AliHFPtSpectrum.h:283
 AliHFPtSpectrum.h:284
 AliHFPtSpectrum.h:285
 AliHFPtSpectrum.h:286
 AliHFPtSpectrum.h:287
 AliHFPtSpectrum.h:288
 AliHFPtSpectrum.h:289
 AliHFPtSpectrum.h:290
 AliHFPtSpectrum.h:291
 AliHFPtSpectrum.h:292
 AliHFPtSpectrum.h:293
 AliHFPtSpectrum.h:294
 AliHFPtSpectrum.h:295
 AliHFPtSpectrum.h:296
 AliHFPtSpectrum.h:297
 AliHFPtSpectrum.h:298
 AliHFPtSpectrum.h:299
 AliHFPtSpectrum.h:300
 AliHFPtSpectrum.h:301
 AliHFPtSpectrum.h:302
 AliHFPtSpectrum.h:303
 AliHFPtSpectrum.h:304
 AliHFPtSpectrum.h:305
 AliHFPtSpectrum.h:306
 AliHFPtSpectrum.h:307
 AliHFPtSpectrum.h:308
 AliHFPtSpectrum.h:309
 AliHFPtSpectrum.h:310
 AliHFPtSpectrum.h:311
 AliHFPtSpectrum.h:312
 AliHFPtSpectrum.h:313
 AliHFPtSpectrum.h:314