#ifndef ROOMODELPDF #define ROOMODELPDF #include "RooAbsPdf.h" #include "RooRealProxy.h" #include "RooCategoryProxy.h" #include "RooAbsReal.h" #include "RooAbsCategory.h" #include "RooWorkspace.h" //#include "RooDataSet.h" #include "RooArgList.h" #include "InputParser.h" #include "Observable.h" #include "Observable2D.h" #include "CorrelatedGaussianObservables.h" #include "CorrelatedGaussianParameters.h" #include "ModelParameter.h" #include "ModelFactory.h" #include "ThObsFactory.h" class RooModelPdf : public RooAbsPdf { public: RooModelPdf(){} RooModelPdf(const char *name, const char *title, RooArgList& _axes); RooModelPdf(const RooModelPdf& other, const char* name=0); /* virtual TObject* clone(const char* newname) const { return new RooModelPdf(*this,newname); } */ inline virtual ~RooModelPdf() { obsbuffsize = 0; ObsComputed = NULL; } void setHEPfitModelConf(const std::string& ModelConf_i){ ModelConf = ModelConf_i; } void setModelFactory(ModelFactory& ModelF_i){ ModelF = ModelF_i; } void setThObsFactory(ThObsFactory& ThObsF_i){ ThObsF = ThObsF_i; } RooWorkspace getWorkSpace(void){ return wSpace; } double* getObsComputed(void){ return ObsComputed; } double LogLikelihood(void); protected: RooArgList axes; // Double_t evaluate() const ; Double_t evaluate(); private: std::string ModelName; ///< The name of the model ThObsFactory ThObsF; ModelFactory ModelF; InputParser myInputParser; ///< An object of the InputParser class. std::string ModelConf; ///< String for the name of the SomeModel.conf file. std::vector& ModPars; ///< Vector for the model parameters defined in SomeModel.conf. std::map DPars; ///< A map between parameter names and their values. boost::ptr_vector& Obs; ///< Vector for the observables defined in SomeModel.conf. std::vector& Obs2D; ///< Vector for the Observables2D defined in SomeModel.conf. boost::ptr_vector& Obs_ALL; ///< A vector of all observables. std::vector& Obs2D_ALL; ///< A vector of all pairs of observable for Observable2D. std::vector& CGO; ///< Vector for the Correlated Gaussian Observables defined in SomeModel.conf. std::vector& CGP; ///< Vector for the Correlated Gaussian Parameters defined in SomeModel.conf. Int_t obsbuffsize; // total number of observables to be computed Double_t* ObsComputed; RooWorkspace wSpace; // Workspace to store objects ClassDef(RooModelPdf,1) }; #endif