Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

AlgAdapt.h

Go to the documentation of this file.
00001 #ifndef ANP_ALGADAPT_H
00002 #define ANP_ALGADAPT_H
00003 
00004 //
00005 // ABC for algorithm that changes true or reco quantities in a fit
00006 
00007 // Inheriting algorithms have access to 5 base vectors:
00008 //    fCurErr:  current error vector<double>
00009 //    fCurPar:  current parameter vector<double>
00010 //    fDefErr:  default error vector<double>
00011 //    fDefPar:  default parameter vector<double>
00012 //    fParName: optional names of parameters
00013 
00014 // C++
00015 #include <iostream>
00016 #include <string>
00017 #include <vector>
00018 
00019 // Local
00020 #include "Handle.h"
00021 #include "RecoNu.h"
00022 #include "TrueNu.h"
00023 
00024 class Registry;
00025 class TDirectory;
00026 
00027 namespace Anp
00028 {
00029    class AlgAdapt: public virtual Base
00030    {      
00031    public:      
00032       
00033       AlgAdapt();
00034       virtual ~AlgAdapt();
00035 
00036       virtual bool Init() = 0;
00037       
00038       virtual long double GetPT() const;
00039 
00040       virtual unsigned int GetNPar() const = 0;
00041 
00042       virtual void InitReco(RecoNu &) const;
00043       virtual void InitTrue(TrueNu &) const;
00044 
00045       virtual double GetWeight(RecoNu &, const TrueNu &) const;
00046 
00047       virtual double GetReco(RecoNu &) const = 0;
00048       virtual double GetTrue(const TrueNu &) const = 0;
00049 
00050       virtual const std::vector<double>& Get(const std::string &key) const;
00051 
00052       virtual void Set(const std::vector<double> &dvec, const std::string &key);
00053 
00054       virtual const std::vector<std::string>& GetParName() const;
00055 
00056       virtual void Config(const Registry &) = 0;
00057      
00058       virtual void Print(std::ostream &os = std::cout) const;
00059 
00060       const std::string& GetName() const;
00061       void SetName(const std::string &name);
00062 
00063    protected:
00064 
00065       void ReadVec(const std::string &prefix, const Registry &reg);
00066 
00067       const std::vector<double> GetVec(const std::string &key, const Registry &reg) const;
00068 
00069       void PrintVec(std::ostream &o, int w=7, int p=5) const;
00070 
00071       void PrintVec(const std::vector<double> &v, std::ostream &o, int w=7, int p=5) const;
00072 
00073    protected:
00074 
00075       //
00076       // !!!Derived classes must not redefine variables defined below!!!
00077       //
00078       std::vector<double> fCurErr;
00079       std::vector<double> fCurPar;
00080       std::vector<double> fDefErr;
00081       std::vector<double> fDefPar;
00082       
00083       std::vector<std::string> fParName;
00084 
00085       std::string fName;
00086    };
00087 
00088    typedef Anp::Handle<Anp::AlgAdapt> AlgAdaptPtr;
00089 
00090    //
00091    // Inlined member functions
00092    //
00093    inline const std::vector<std::string>& AlgAdapt::GetParName() const
00094    {
00095       return fParName;
00096    }
00097 
00098    inline void AlgAdapt::InitReco(RecoNu &) const {}
00099    inline void AlgAdapt::InitTrue(TrueNu &) const {}
00100 
00101    inline double AlgAdapt::GetWeight(RecoNu &, const TrueNu &) const { return 1.0; }
00102 
00103    inline const std::string& AlgAdapt::GetName() const { return fName; }
00104    inline void AlgAdapt::SetName(const std::string &name) { fName = name; }
00105 }
00106 
00107 #endif

Generated on Fri Mar 28 15:26:45 2008 for loon by  doxygen 1.3.9.1