]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/vertexingHF/AliHFMassFitter.h
Minor changes (Chiara B)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliHFMassFitter.h
1 #ifndef ALIHFMASSFITTER_H
2 #define ALIHFMASSFITTER_H
3 /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /////////////////////////////////////////////////////////////
7 //
8 // AliHFMassFitter for the fit of invariant mass distribution
9 // of charmed mesons
10 //
11 // Author: C.Bianchin, chiara.bianchin@pd.infn.it
12 /////////////////////////////////////////////////////////////
13
14 #include <TNamed.h>
15 #include <Riostream.h>
16 #include <TH1F.h>
17 #include <TF1.h>
18 #include <TMath.h>
19 #include <TNtuple.h>
20 #include <TFile.h>
21 #include <TString.h>
22 #include <TList.h>
23
24
25 class AliHFMassFitter : public TNamed {
26
27  public:
28   AliHFMassFitter();
29   AliHFMassFitter(TH1F* histoToFit, Double_t minvalue, Double_t maxvalue, Int_t rebin=1,Int_t fittypeb=0,Int_t fittypes=0);
30   virtual ~AliHFMassFitter();
31
32   AliHFMassFitter(const AliHFMassFitter &mfit);
33   AliHFMassFitter& operator=(const AliHFMassFitter &mfit);
34
35   //setters
36   void     SetHisto(TH1F *histoToFit);
37   void     SetRangeFit(Double_t minvalue, Double_t maxvalue){fminMass=minvalue; fmaxMass=maxvalue;}
38   void     SetMinRangeFit(Double_t minvalue){fminMass=minvalue;}
39   void     SetMaxRangeFit(Double_t maxvalue){fmaxMass=maxvalue;}
40   void     SetBinN(Int_t newbinN){fNbin=newbinN;}
41   void     SetType(Int_t fittypeb, Int_t fittypes);
42   void     SetReflectionSigmaFactor(Int_t constant) {ffactor=constant;}
43   void     SetInitialGaussianMean(Double_t mean) {fMass=mean;}
44   void     SetInitialGaussianSigma(Double_t sigma) {fSigmaSgn=sigma;}
45   void     SetSideBands(Bool_t onlysidebands=kTRUE) {fSideBands=onlysidebands;}
46
47   //getters
48   TH1F*    GetHistoClone() const;
49   Double_t GetMinRangeFit()const {return fminMass;}
50   Double_t GetMaxRangeFit()const {return fmaxMass;}
51   Int_t    GetBinN()       const {return fNbin;}
52   void     GetFitPars(Float_t*) const;
53   void     GetTypeOfFit(Bool_t &background, Int_t &typeb) const {background = fWithBkg; typeb = ftypeOfFit4Bkg;}
54   Int_t    GetReflectionSigmaFactor() const {return ffactor;} 
55   Double_t GetMean() const {return fMass;}
56   Double_t GetSigma()const {return fSigmaSgn;}
57   Double_t GetChiSquare() const;
58
59   void     InitNtuParam(char *ntuname="ntupar");
60   void     FillNtuParam();
61   TNtuple* GetNtuParam() const {return fntuParam;}
62   TNtuple* NtuParamOneShot(char *ntuname="ntupar");
63
64   void     WriteHisto(TString path="./");
65   void     WriteNtuple(TString path="./") const;
66   void     Reset();
67
68   void     Signal(Double_t nOfSigma,Double_t &signal,Double_t &errsignal) const; 
69   void     Background(Double_t nOfSigma,Double_t &background,Double_t &errbackground) const; 
70   void     Significance(Double_t nOfSigma,Double_t &significance,Double_t &errsignificance) const;
71
72   Double_t FitFunction4MassDistr (Double_t*, Double_t*);
73   Double_t FitFunction4Sgn (Double_t*, Double_t*);
74   Double_t FitFunction4Bkg (Double_t*, Double_t*);
75   Bool_t   MassFitter(Bool_t draw=kTRUE);
76   void     RebinMass(Int_t binground=1);
77   
78
79  private:
80
81   void     ComputeParSize();
82
83   TH1F    *fhistoInvMass;  // histogram to fit
84   Double_t fminMass;       // lower mass limit
85   Double_t fmaxMass;       // upper mass limit
86   Int_t    fNbin;          // number of bins
87   Int_t    fParsSize;      // size of fFitPars array
88   Float_t *fFitPars;       //[fParsSize] array of fit parameters
89   Bool_t   fWithBkg;       // signal+background (kTRUE) or signal only (kFALSE)
90   Int_t    ftypeOfFit4Bkg; // 0 = exponential; 1 = linear; 2 = pol2
91   Int_t    ftypeOfFit4Sgn; // 0 = gaus; 1 = gaus+gaus broadened
92   Int_t    ffactor;         // number to multiply to the sigma of the signal to obtain the reflected gaussian
93   TNtuple *fntuParam;      // contains fit parameters
94   Double_t fMass;          // signal gaussian mean value
95   Double_t fSigmaSgn;      // signal gaussian sigma
96   Bool_t   fSideBands;     // kTRUE = only side bands considered
97   Int_t    fcounter;       // internal counter
98
99   ClassDef(AliHFMassFitter,1); // class for invariant mass fit
100 };
101
102 #endif
103
104