13 #ifndef ROOT_Fit_BasicFCN 
   14 #define ROOT_Fit_BasicFCN 
   39 template<
class DerivFunType, 
class ModelFunType, 
class DataType>
 
   40 class BasicFCN : 
public ::ROOT::Math::BasicFitMethodFunction<DerivFunType> {
 
   44    typedef typename ModelFunType::BackendType T;
 
   46    typedef  ::ROOT::Math::BasicFitMethodFunction<DerivFunType> BaseObjFunction;
 
   47    typedef typename  BaseObjFunction::BaseFunction BaseFunction;
 
   49    typedef  ::ROOT::Math::IParamMultiFunctionTempl<T> IModelFunction;
 
   54    BasicFCN (
const std::shared_ptr<DataType> & data, 
const std::shared_ptr<IModelFunction> & func) :
 
   55       BaseObjFunction(func->NPar(), data->Size() ),
 
   65    virtual ~BasicFCN ()  {}
 
   71    virtual const DataType & Data()
 const { 
return *fData; }
 
   74    std::shared_ptr<DataType> DataPtr()
 const { 
return fData; }
 
   77    virtual const IModelFunction & ModelFunction()
 const { 
return *fFunc; }
 
   80    std::shared_ptr<IModelFunction> ModelFunctionPtr()
 const { 
return fFunc; }
 
   88    void SetData(
const std::shared_ptr<DataType> & data) { fData = data; }
 
   91    void SetModelFunction(
const std::shared_ptr<IModelFunction> & func) { fFunc = func; }
 
   94    std::shared_ptr<DataType>  fData;
 
   95    std::shared_ptr<IModelFunction>  fFunc;