AliPhysics  958ad07 (958ad07)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliHFInvMassFitter.h
Go to the documentation of this file.
1 #ifndef ALIHFINVMASSFITTER_H
2 #define ALIHFINVMASSFITTER_H
3 
4 /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice */
6 
7 
16 
17 
18 #include <TNamed.h>
19 #include "AliLog.h"
20 
21 class TF1;
22 class TH1F;
23 
24 class AliHFInvMassFitter : public TNamed {
25  public:
26 
27  enum ETypeOfBkg{ kExpo=0, kLin=1, kPol2=2, kNoBk=3, kPow=4, kPowEx=5};
28  enum ETypeOfSgn{ kGaus=0, k2Gaus=1 };
30  AliHFInvMassFitter(const TH1F* histoToFit, Double_t minvalue, Double_t maxvalue, Int_t fittypeb=kExpo, Int_t fittypes=kGaus);
32 
33  void SetRangeFit(Double_t minvalue, Double_t maxvalue){
34  fMinMass=minvalue; fMaxMass=maxvalue;
35  }
36 
40  void SetFitOption(TString opt){fFitOption=opt.Data();};
44  if(fTypeOfFit4Bkg!=6) AliFatal("fTypeOfFit4Bkg should be set to 6 to use higher order polynomials\n");
45  fPolDegreeBkg=deg;
47  }
52  fFixedMean=kTRUE;
53  }
56  fFixedSigma=kTRUE;
57  }
59  fFixedRawYield=yield;
60  }
63  }
64  TH1F* SetTemplateReflections(const TH1 *h, TString opt,Double_t minRange,Double_t maxRange);
66  void SetFixReflOverS(Double_t rovers){
67  SetInitialReflOverS(rovers);
68  fFixRflOverSig=kTRUE;
69  }
71 
73  fSecondPeak=kTRUE; fSecMass=mass; fSecWidth=width;
74  fFixSecMass=fixm; fFixSecWidth=fixw;
75  }
76  Double_t GetRawYield()const {return fRawYield;}
78  Double_t GetMean() const {return fMass;}
80  Double_t GetSigma()const {return fSigmaSgn;}
83  if(fRflFunc) return fRflFunc->GetParameter(0);
84  else return 0;
85  }
87  if(fRflFunc) return fRflFunc->GetParError(0);
88  else return 0;
89  }
92  TF1* GetMassFunc(){return fTotFunc;}
94  if(fTotFunc) return fTotFunc->GetChisquare();
95  else return -1;
96  }
98  if(fTotFunc) return fTotFunc->GetChisquare()/fTotFunc->GetNDF();
99  else return -1;
100  }
102  if(fTotFunc) return fTotFunc->GetProb();
103  else return -1;
104  }
105  TH1F* GetHistoClone() const{
106  TH1F* hout=(TH1F*)fHistoInvMass->Clone(Form("%scloned",fHistoInvMass->GetName()));
107  return hout;
108  }
109  Double_t GetRawYieldBinCounting(Double_t& errRyBC, Double_t nSigma=3., Int_t option=0, Int_t pdgCode=0) const;
111  Int_t MassFitter(Bool_t draw=kTRUE);
118  virtual void Signal(Double_t nOfSigma,Double_t &signal,Double_t &errsignal) const;
119  virtual void Signal(Double_t min,Double_t max,Double_t &signal,Double_t &errsignal) const;
120  void Background(Double_t nOfSigma, Double_t &background,Double_t &errbackground) const;
121  void Background(Double_t min, Double_t max, Double_t &background,Double_t &errbackground) const;
122  void DrawHere(TVirtualPad* c, Double_t nsigma=3,Int_t writeFitInfo=1);
123  void Significance(Double_t nOfSigma, Double_t &significance,Double_t &errsignificance) const;
124  void Significance(Double_t min, Double_t max, Double_t &significance,Double_t &errsignificance) const;
125  TH1F* GetResidualsAndPulls(TH1 *hPulls=0x0,TH1 *hResidualTrend=0x0,TH1 *hPullsTrend=0x0,Double_t minrange=0,Double_t maxrange=-1);
126  void PrintFunctions();
127 
128  private:
129  AliHFInvMassFitter(const AliHFInvMassFitter &source);
131 
132  void SetNumberOfParams();
134  TF1* CreateBackgroundFitFunction(TString fname, Double_t integral);
135  TF1* CreateSignalFitFunction(TString fname, Double_t integral);
136  TF1* CreateSecondPeakFunction(TString fname, Double_t integral);
137  TF1* CreateReflectionFunction(TString fname);
139  TF1* CreateTotalFitFunction(TString fname);
140  Bool_t PrepareHighPolFit(TF1 *fback);
142 
143  void DrawFit();
144 
167  TF1* fSigFunc;
168  TF1* fBkgFuncSb;
169  TF1* fBkgFunc;
178  TF1* fRflFunc;
179  TF1* fBkRFunc;
186  TF1* fSecFunc;
187  TF1* fTotFunc;
188 
190  ClassDef(AliHFInvMassFitter,3);
191 };
193 
194 #endif
Int_t fTypeOfFit4Sgn
pdg value of particle mass
Double_t GetMeanUncertainty() const
Double_t fSigmaSgnErr
signal gaussian sigma
Double_t GetReflOverSig() const
Bool_t fFixSecWidth
flag to fix the position of the 2nd peak
Double_t GetChiSquare() const
Double_t GetFitProbability() const
Double_t fRawYieldHelp
switch for smoothing of reflection template
double Double_t
Definition: External.C:58
void SetFixReflOverS(Double_t rovers)
Double_t fRawYield
L, LW or Chi2.
void DrawHere(TVirtualPad *c, Double_t nsigma=3, Int_t writeFitInfo=1)
void IncludeSecondGausPeak(Double_t mass, Bool_t fixm, Double_t width, Bool_t fixw)
TF1 * CreateReflectionFunction(TString fname)
Int_t fCurPolDegreeBkg
degree of polynomial expansion for back fit (option 6 for back)
Bool_t PrepareHighPolFit(TF1 *fback)
Bool_t fOnlySideBands
fit parameters in background fit function
virtual void Signal(Double_t nOfSigma, Double_t &signal, Double_t &errsignal) const
Double_t FitFunction4SecPeak(Double_t *x, Double_t *par)
Double_t fMass
signal fit func
TF1 * CreateTotalFitFunction(TString fname)
Double_t mass
Double_t fRawYieldErr
signal gaussian integral
Int_t MassFitter(Bool_t draw=kTRUE)
Int_t fNParsBkg
fit parameters in signal fit function
AliHFInvMassFitter class for the fit of invariant mass distribution of charm hadrons.
void SetFitOption(TString opt)
Int_t fNParsRfl
flag use/not use reflections
TCanvas * c
Definition: TestFitELoss.C:172
TF1 * CreateSecondPeakFunction(TString fname, Double_t integral)
TF1 * fTotFunc
fit function for second peak
Double_t fFixedRawYield
switch for fix Sigma of gaussian
Double_t GetSigma() const
Double_t FitFunction4Bkg(Double_t *x, Double_t *par)
Double_t fSigmaSgn
unc on signal gaussian mean value
void SetPolDegreeForBackgroundFit(Int_t deg)
Double_t fSecMass
fit parameters in 2nd peak fit function
Double_t GetParticlePdgMass()
void SetFixGaussianSigma(Double_t sigma)
Bool_t fFixSecMass
width of the 2nd peak
TF1 * fSecFunc
flag to fix the width of the 2nd peak
Double_t * sigma
void SetFixGaussianMean(Double_t mean)
TH1F * GetResidualsAndPulls(TH1 *hPulls=0x0, TH1 *hResidualTrend=0x0, TH1 *hPullsTrend=0x0, Double_t minrange=0, Double_t maxrange=-1)
int Int_t
Definition: External.C:63
Double_t fSecWidth
position of the 2nd peak
Double_t GetMean() const
TString fFitOption
number of sigmas to veto the signal peak
TF1 * fBkRFunc
fit function for reflections
Int_t fNParsSec
switch off/on second peak (for D+->KKpi in Ds)
TF1 * CreateSignalFitFunction(TString fname, Double_t integral)
Bool_t fFixedMean
unc on signal gaussian sigma
Double_t GetReducedChiSquare() const
Double_t fMassParticle
help variable
void SetFixSignalYield(Double_t yield)
Double_t FitFunction4Refl(Double_t *x, Double_t *par)
Double_t GetRawYieldBinCounting(Double_t &errRyBC, Double_t nSigma=3., Int_t option=0, Int_t pdgCode=0) const
void SetParticlePdgMass(Double_t mass)
TH1F * SetTemplateReflections(const TH1 *h, TString opt, Double_t minRange, Double_t maxRange)
Double_t nsigma
Int_t fTypeOfFit4Bkg
upper mass limit
TH1F * fHistoTemplRfl
switch for fix refl/signal
TF1 * fBkgFunc
background fit function (1st step, side bands only)
Double_t fMassErr
signal gaussian mean value
Double_t fRflOverSig
fit parameters in reflection fit function
Double_t fMinMass
histogram to fit
Double_t GetReflOverSigUncertainty() const
Bool_t fFixRflOverSig
reflection/signal
Double_t FitFunction4Mass(Double_t *x, Double_t *par)
Double_t GetSigmaUncertainty() const
void Significance(Double_t nOfSigma, Double_t &significance, Double_t &errsignificance) const
Double_t BackFitFuncPolHelper(Double_t *x, Double_t *par)
Bool_t draw[nPtBins]
void SetInitialReflOverS(Double_t rovers)
Double_t fMaxMass
lower mass limit
TF1 * CreateBackgroundFitFunction(TString fname, Double_t integral)
TF1 * fRflFunc
internal variable for fit with reflections
Double_t GetRawYieldError() const
Double_t fNSigma4SideBands
kTRUE = only side bands considered
void Background(Double_t nOfSigma, Double_t &background, Double_t &errbackground) const
void SetInitialGaussianSigma(Double_t sigma)
void SetInitialGaussianMean(Double_t mean)
Double_t minMass
void SetRangeFit(Double_t minvalue, Double_t maxvalue)
Double_t FitFunction4Sgn(Double_t *x, Double_t *par)
Int_t fPolDegreeBkg
background fit func
void SetSmoothReflectionTemplate(Bool_t opt)
void SetUseLikelihoodWithWeightsFit()
Double_t maxMass
bool Bool_t
Definition: External.C:53
TF1 * fBkgFuncRefit
background fit function (1st step, extended in peak region)
Double_t CheckForSignal(Double_t mean, Double_t sigma)
TF1 * fSigFunc
err on signal gaussian integral
TF1 * fBkgFuncSb
Signal fit function.
TF1 * GetBackgroundFullRangeFunc()
void SetNSigma4SideBands(Double_t ns=4.)
Bool_t fSecondPeak
fit function for reflections
AliHFInvMassFitter & operator=(const AliHFInvMassFitter &source)
Bool_t fSmoothRfl
histogram with reflection template
TH1F * GetHistoClone() const
TF1 * CreateBackgroundPlusReflectionFunction(TString fname)
Definition: External.C:196
Double_t FitFunction4BkgAndRefl(Double_t *x, Double_t *par)
Int_t fNParsSig
initialization for wa yield
Double_t GetRawYield() const
Bool_t fReflections
background fit function (2nd step)
Bool_t fFixedSigma
switch for fix mean of gaussian