AliPhysics  97344c9 (97344c9)
 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  fSecondPeak=kTRUE; fSecMass=mass; fSecWidth=width;
72  fFixSecMass=fixm; fFixSecWidth=fixw;
73  }
74  Double_t GetRawYield()const {return fRawYield;}
76  Double_t GetMean() const {return fMass;}
78  Double_t GetSigma()const {return fSigmaSgn;}
82  TF1* GetMassFunc(){return fTotFunc;}
84  if(fTotFunc) return fTotFunc->GetChisquare();
85  else return -1;
86  }
88  if(fTotFunc) return fTotFunc->GetChisquare()/fTotFunc->GetNDF();
89  else return -1;
90  }
92  if(fTotFunc) return fTotFunc->GetProb();
93  else return -1;
94  }
95 
103  virtual void Signal(Double_t nOfSigma,Double_t &signal,Double_t &errsignal) const;
104  virtual void Signal(Double_t min,Double_t max,Double_t &signal,Double_t &errsignal) const;
105  void Background(Double_t nOfSigma, Double_t &background,Double_t &errbackground) const;
106  void Background(Double_t min, Double_t max, Double_t &background,Double_t &errbackground) const;
107  void DrawHere(TVirtualPad* c);
108  void Significance(Double_t nOfSigma, Double_t &significance,Double_t &errsignificance) const;
109  void Significance(Double_t min, Double_t max, Double_t &significance,Double_t &errsignificance) const;
110  void PrintFunctions();
111  private:
112  AliHFInvMassFitter(const AliHFInvMassFitter &source);
114 
115  void SetNumberOfParams();
117  TF1* CreateBackgroundFitFunction(TString fname, Double_t integral);
118  TF1* CreateSignalFitFunction(TString fname, Double_t integral);
119  TF1* CreateSecondPeakFunction(TString fname, Double_t integral);
120  TF1* CreateReflectionFunction(TString fname);
122  TF1* CreateTotalFitFunction(TString fname);
123  Bool_t PrepareHighPolFit(TF1 *fback);
125 
126  void DrawFit();
127 
150  TF1* fSigFunc;
151  TF1* fBkgFuncSb;
152  TF1* fBkgFunc;
161  TF1* fRflFunc;
162  TF1* fBkRFunc;
169  TF1* fSecFunc;
170  TF1* fTotFunc;
171 
173  ClassDef(AliHFInvMassFitter,3);
174 };
176 
177 #endif
Int_t fTypeOfFit4Sgn
pdg value of particle mass
Double_t GetMeanUncertainty() const
Double_t fSigmaSgnErr
signal gaussian sigma
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 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 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)
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)
void SetParticlePdgMass(Double_t mass)
TH1F * SetTemplateReflections(const TH1 *h, TString opt, Double_t minRange, Double_t maxRange)
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
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 MassFitter(Bool_t draw=kTRUE)
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)
void SetRangeFit(Double_t minvalue, Double_t maxvalue)
Double_t FitFunction4Sgn(Double_t *x, Double_t *par)
Int_t fPolDegreeBkg
background fit func
void SetUseLikelihoodWithWeightsFit()
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)
void DrawHere(TVirtualPad *c)
Bool_t fSmoothRfl
histogram with reflection template
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