]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FLOW/blastwave/AliBlastwaveFitter.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FLOW / blastwave / AliBlastwaveFitter.h
1 #ifndef ALIBLASTWAVEFITTER_H
2 #define ALIBLASTWAVEFITTER_H
3
4
5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6  * See cxx source for full Copyright notice                               */
7
8 /* $Id: AliBlastwaveFitter.h 49869 2012-05-17 04:49:51Z fnoferin $ */
9
10 /////////////////////////////////////////////////
11 //                                             //
12 //          Blastwave Fitter Class             //
13 //           noferini@bo.infn.it               //
14 /////////////////////////////////////////////////
15
16 #include "TF1.h"
17 #include "TF2.h"
18 #include "TGraph.h"
19 #include "TMinuit.h"
20
21 #include "AliBlastwaveFit.h"
22
23 class AliBlastwaveFitter : public TNamed
24 {
25 public:
26     AliBlastwaveFitter(const char *name);
27     AliBlastwaveFitter();
28     ~AliBlastwaveFitter();
29     
30     Int_t AddFitFunction(AliBlastwaveFit *fitf){if(fNfunction < fgNmaxFunction){fFunc[fNfunction]=fitf;fNfunction++;return 0;} else return 1;};
31
32     void ResetFunctions(){fNfunction=0; for(Int_t i=0;i<fgNmaxFunction;i++) fFunc[i] = NULL;};
33
34     Int_t CheckAvailability();
35     Int_t PrepareToFit();
36     Int_t Fit();
37
38     static void FCN(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t /*iflag*/);
39     static Double_t GetChi2(){return fgChi2;};
40     static Int_t GetNDGF(){return fgNDGF;};
41
42     TMinuit *GetMinuit(){return fMinuit;};
43
44     Int_t GetNFunctions(){return fNfunction;};
45     AliBlastwaveFit *GetFunction(Int_t i){if(i>= 0 && i < fNfunction) return fFunc[i]; else return NULL;};
46
47     void SetMinos(Bool_t flag=kTRUE){fMinos=flag;};
48
49     TGraph* DoContour(Int_t np,Int_t ip1,Int_t ip2,Float_t nsigma=1);
50
51     TGraph* DoContourBetaT(Int_t np,Int_t iBoostOrBeta,Int_t iT,Float_t nsigma=1);
52     TGraph* ConvertContourFromBoostToBeta(TGraph *g,Int_t iBoostOrBeta,Int_t iT);
53
54 private:
55     AliBlastwaveFitter(const AliBlastwaveFitter & old); 
56     AliBlastwaveFitter& operator=(const AliBlastwaveFitter & source); // ass. op. 
57
58     static const Int_t fgNmaxFunction = 20;   // max number of function allowed
59     Int_t fNfunction;                         // number of functions to be fitted
60     AliBlastwaveFit *fFunc[fgNmaxFunction];   // functions to be fitted
61
62     Int_t fSpectraFlag[fgNmaxFunction];       // availability for spectra fit (1=TH1, 2=TGraphErrors)
63     Int_t fV2Flag[fgNmaxFunction];       // availability for v2 fit (1=TH1, 2=TGraphErrors)
64
65     TMinuit *fMinuit;                    // minuit object
66
67     // information copied in the static variable to perform the fit
68     static Int_t fgNparReal;
69     static Int_t fgNDGF;
70     static Int_t fgNfunctionCurrent;
71     static AliBlastwaveFit *fgFuncC[50];   // functions to be fitted
72     static Int_t fgSpectraFlagC[50];       // availability for spectra fit (1=TH1, 2=TGraphErrors)
73     static Int_t fgV2FlagC[50];       // availability for v2 fit (1=TH1, 2=TGraphErrors)
74     static Double_t fgChi2;            // Chi2
75
76     Bool_t fMinos;                   // switch to try also minos
77
78   ClassDef(AliBlastwaveFitter,1)  // fitter bases on minuit for blastwave
79 };
80
81 #endif
82
83