00001 #ifndef ANP_ALGADAPT_H
00002 #define ANP_ALGADAPT_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <iostream>
00015 #include <string>
00016 #include <vector>
00017
00018
00019 #include "Handle.h"
00020 #include "RecoNu.h"
00021 #include "Truth.h"
00022
00023 class Registry;
00024 class TDirectory;
00025
00026 namespace Anp
00027 {
00028 class AlgAdapt: public virtual Base
00029 {
00030 public:
00031
00032 AlgAdapt();
00033 virtual ~AlgAdapt();
00034
00035 virtual bool Init() = 0;
00036
00037 virtual void InitReco(RecoNu &) const;
00038 virtual void InitTrue(Truth &) const;
00039
00040 virtual double GetPT() const = 0;
00041
00042 virtual double GetReco(RecoNu &) const = 0;
00043 virtual double GetTrue(const Truth &) const = 0;
00044
00045 virtual const std::vector<double>& GetCurErr() const = 0;
00046 virtual const std::vector<double>& GetCurPar() const = 0;
00047 virtual const std::vector<double>& GetDefErr() const = 0;
00048 virtual const std::vector<double>& GetDefPar() const = 0;
00049
00050 virtual void SetCurErr(const std::vector<double> &) = 0;
00051 virtual void SetCurPar(const std::vector<double> &) = 0;
00052 virtual void SetDefErr(const std::vector<double> &) = 0;
00053 virtual void SetDefPar(const std::vector<double> &) = 0;
00054
00055 virtual void Config(const Registry &) = 0;
00056
00057 virtual void Set(TDirectory *);
00058
00059 void Name(const std::string &value);
00060 const std::string& Name() const;
00061
00062 protected:
00063
00064 const std::vector<double> GetVec(const std::string &key, const Registry ®) const;
00065
00066 void PrintVec(const std::vector<double> &v, std::ostream &o, unsigned int w = 7, unsigned int p = 5) const;
00067
00068 private:
00069
00070 std::string fName;
00071 };
00072
00073 typedef Anp::Handle<Anp::AlgAdapt> AlgAdaptPtr;
00074
00075
00076
00077
00078 inline void AlgAdapt::Name(const std::string &value) { fName = value; }
00079 inline const std::string& AlgAdapt::Name() const { return fName; }
00080
00081 inline void AlgAdapt::InitReco(RecoNu &) const {}
00082 inline void AlgAdapt::InitTrue(Truth &) const {}
00083
00084 inline void AlgAdapt::Set(TDirectory *) {}
00085 }
00086
00087 #endif