ROOT logo
#ifndef ALIDIELECTRONBTOJPSITOELECDFFITHANDLER_H
#define ALIDIELECTRONBTOJPSITOELECDFFITHANDLER_H
/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//___________________________________________________________________________
//                  Class AliDielectronBtoJPSItoEleCDFfitHandler
//            Class to perform unbinned log-likelihood fit
//      
//                         Origin: C. Di Giglio
//     Contact: Carmelo.Digiglio@ba.infn.it; Giuseppe.Bruno@ba.infn.it
//____________________________________________________________________________

#include <TNamed.h>
#include <TBits.h>
#include <TGraph.h>
#include <TFitter.h>

class AliDielectronBtoJPSItoEleCDFfitFCN ;

class AliDielectronBtoJPSItoEleCDFfitHandler : public TNamed {
	public:
		//
		AliDielectronBtoJPSItoEleCDFfitHandler();
		AliDielectronBtoJPSItoEleCDFfitHandler& operator= (const  AliDielectronBtoJPSItoEleCDFfitHandler& c);
		AliDielectronBtoJPSItoEleCDFfitHandler(const AliDielectronBtoJPSItoEleCDFfitHandler& c);
		AliDielectronBtoJPSItoEleCDFfitHandler(Double_t* decaytime, Double_t* invariantmass, Double_t *pt, Int_t *type, Int_t ncand);
		~AliDielectronBtoJPSItoEleCDFfitHandler(); 
		Double_t Up() const { return fUp; }
		void SetErrorDef(Double_t up) {fUp = up;}
		void SetPrintStatus(Bool_t okPrintStatus) { fPrintStatus = okPrintStatus; } 
		Bool_t GetPrintStatus() const { return fPrintStatus ; }
		void SetParamStartValues (Double_t*);
		Double_t* GetStartParamValues() { return fParamStartValues; }
		TBits GetFixedParamList() const { return fIsParamFixed; }
		TFitter *GetFitter() const {return fitter;}
                Double_t GetParameter(Int_t numPar) const {return fitter->GetParameter(numPar);}
                Double_t GetParameterError(Int_t numPar) const {return fitter->GetParError(numPar);}   

                void FixParam(UInt_t param, Bool_t value) { fIsParamFixed.SetBitNumber(param,value); }
		void FixAllParam(Bool_t value) { for(UInt_t par=0;par<49;par++) fIsParamFixed.SetBitNumber(par,value); }
		Bool_t IsParamFixed(UInt_t param) { return fIsParamFixed.TestBitNumber(param); }
		void SetResolutionConstants(Double_t* resolutionConst, Int_t type);
		void SetCrystalBallFunction(Bool_t okCB);
		void SetExponentialFunction(Bool_t okEpx);
		void SetMassWndHigh(Double_t limit);
		void SetMassWndLow(Double_t limit);

		Double_t operator()(const Double_t* par) const ;
		void CdfFCN(Int_t & /* npar */, Double_t * /* gin */, Double_t &f, Double_t *par, Int_t /* iflag */);

		Double_t* Decaytime() const         { return fX; }
		Double_t* InvariantMass() const     { return fM; }
		Double_t* TransverseMom() const     { return fPt; }
                Int_t*    TypeCand() const          { return fType;}
 		AliDielectronBtoJPSItoEleCDFfitFCN* LikelihoodPointer() const { return fLikely; }
		Int_t DoMinimization(Int_t step = 0);
                

	private:
		//
		TBits fIsParamFixed;                               //array of bits: 0 = param free; 1 = param fixed;
		Bool_t fPrintStatus;                               //flag to enable the prit out of the algorithm at each step
		Double_t fParamStartValues[49];                    //array of parameters input value
		Double_t fUp;                                      //error definition 
		Double_t* fX; 	                     	           //pseudo-proper decay time X
		Double_t* fM;                                      //invariant mass M
		Double_t* fPt;                                     //invariant mass M
                Int_t* fType;                                      //candidate type
		AliDielectronBtoJPSItoEleCDFfitFCN* fLikely;       //Log likelihood function
		Int_t fNcand;                                      //number of candidates
		TGraph* fContPlot1;                                //contour plot       
		TGraph* fContPlot2;                                //contour plot       
		TGraph* fContPlot3;                                //contour plot       
		TFitter *fitter;                                   //pointer to TFitter object	
		//
		ClassDef(AliDielectronBtoJPSItoEleCDFfitHandler,1);

}; 
#endif
 AliDielectronBtoJPSItoEleCDFfitHandler.h:1
 AliDielectronBtoJPSItoEleCDFfitHandler.h:2
 AliDielectronBtoJPSItoEleCDFfitHandler.h:3
 AliDielectronBtoJPSItoEleCDFfitHandler.h:4
 AliDielectronBtoJPSItoEleCDFfitHandler.h:5
 AliDielectronBtoJPSItoEleCDFfitHandler.h:6
 AliDielectronBtoJPSItoEleCDFfitHandler.h:7
 AliDielectronBtoJPSItoEleCDFfitHandler.h:8
 AliDielectronBtoJPSItoEleCDFfitHandler.h:9
 AliDielectronBtoJPSItoEleCDFfitHandler.h:10
 AliDielectronBtoJPSItoEleCDFfitHandler.h:11
 AliDielectronBtoJPSItoEleCDFfitHandler.h:12
 AliDielectronBtoJPSItoEleCDFfitHandler.h:13
 AliDielectronBtoJPSItoEleCDFfitHandler.h:14
 AliDielectronBtoJPSItoEleCDFfitHandler.h:15
 AliDielectronBtoJPSItoEleCDFfitHandler.h:16
 AliDielectronBtoJPSItoEleCDFfitHandler.h:17
 AliDielectronBtoJPSItoEleCDFfitHandler.h:18
 AliDielectronBtoJPSItoEleCDFfitHandler.h:19
 AliDielectronBtoJPSItoEleCDFfitHandler.h:20
 AliDielectronBtoJPSItoEleCDFfitHandler.h:21
 AliDielectronBtoJPSItoEleCDFfitHandler.h:22
 AliDielectronBtoJPSItoEleCDFfitHandler.h:23
 AliDielectronBtoJPSItoEleCDFfitHandler.h:24
 AliDielectronBtoJPSItoEleCDFfitHandler.h:25
 AliDielectronBtoJPSItoEleCDFfitHandler.h:26
 AliDielectronBtoJPSItoEleCDFfitHandler.h:27
 AliDielectronBtoJPSItoEleCDFfitHandler.h:28
 AliDielectronBtoJPSItoEleCDFfitHandler.h:29
 AliDielectronBtoJPSItoEleCDFfitHandler.h:30
 AliDielectronBtoJPSItoEleCDFfitHandler.h:31
 AliDielectronBtoJPSItoEleCDFfitHandler.h:32
 AliDielectronBtoJPSItoEleCDFfitHandler.h:33
 AliDielectronBtoJPSItoEleCDFfitHandler.h:34
 AliDielectronBtoJPSItoEleCDFfitHandler.h:35
 AliDielectronBtoJPSItoEleCDFfitHandler.h:36
 AliDielectronBtoJPSItoEleCDFfitHandler.h:37
 AliDielectronBtoJPSItoEleCDFfitHandler.h:38
 AliDielectronBtoJPSItoEleCDFfitHandler.h:39
 AliDielectronBtoJPSItoEleCDFfitHandler.h:40
 AliDielectronBtoJPSItoEleCDFfitHandler.h:41
 AliDielectronBtoJPSItoEleCDFfitHandler.h:42
 AliDielectronBtoJPSItoEleCDFfitHandler.h:43
 AliDielectronBtoJPSItoEleCDFfitHandler.h:44
 AliDielectronBtoJPSItoEleCDFfitHandler.h:45
 AliDielectronBtoJPSItoEleCDFfitHandler.h:46
 AliDielectronBtoJPSItoEleCDFfitHandler.h:47
 AliDielectronBtoJPSItoEleCDFfitHandler.h:48
 AliDielectronBtoJPSItoEleCDFfitHandler.h:49
 AliDielectronBtoJPSItoEleCDFfitHandler.h:50
 AliDielectronBtoJPSItoEleCDFfitHandler.h:51
 AliDielectronBtoJPSItoEleCDFfitHandler.h:52
 AliDielectronBtoJPSItoEleCDFfitHandler.h:53
 AliDielectronBtoJPSItoEleCDFfitHandler.h:54
 AliDielectronBtoJPSItoEleCDFfitHandler.h:55
 AliDielectronBtoJPSItoEleCDFfitHandler.h:56
 AliDielectronBtoJPSItoEleCDFfitHandler.h:57
 AliDielectronBtoJPSItoEleCDFfitHandler.h:58
 AliDielectronBtoJPSItoEleCDFfitHandler.h:59
 AliDielectronBtoJPSItoEleCDFfitHandler.h:60
 AliDielectronBtoJPSItoEleCDFfitHandler.h:61
 AliDielectronBtoJPSItoEleCDFfitHandler.h:62
 AliDielectronBtoJPSItoEleCDFfitHandler.h:63
 AliDielectronBtoJPSItoEleCDFfitHandler.h:64
 AliDielectronBtoJPSItoEleCDFfitHandler.h:65
 AliDielectronBtoJPSItoEleCDFfitHandler.h:66
 AliDielectronBtoJPSItoEleCDFfitHandler.h:67
 AliDielectronBtoJPSItoEleCDFfitHandler.h:68
 AliDielectronBtoJPSItoEleCDFfitHandler.h:69
 AliDielectronBtoJPSItoEleCDFfitHandler.h:70
 AliDielectronBtoJPSItoEleCDFfitHandler.h:71
 AliDielectronBtoJPSItoEleCDFfitHandler.h:72
 AliDielectronBtoJPSItoEleCDFfitHandler.h:73
 AliDielectronBtoJPSItoEleCDFfitHandler.h:74
 AliDielectronBtoJPSItoEleCDFfitHandler.h:75
 AliDielectronBtoJPSItoEleCDFfitHandler.h:76
 AliDielectronBtoJPSItoEleCDFfitHandler.h:77
 AliDielectronBtoJPSItoEleCDFfitHandler.h:78
 AliDielectronBtoJPSItoEleCDFfitHandler.h:79
 AliDielectronBtoJPSItoEleCDFfitHandler.h:80