/* * CrossSectionBase.hh * * Created on: Sep 13, 2019 * Author: Nuno Barros * * * Revision history: * * 11-Dec-2019 : N. Barros * - Initial revision */ #ifndef SRC_UTIL_CROSSSECTIONBASE_HH_ #define SRC_UTIL_CROSSSECTIONBASE_HH_ #include namespace RAT { class CrossSectionBase { public: CrossSectionBase() : fStrategy(-1) {} virtual ~CrossSectionBase() {} // There isn't really much to be implemented besides the strategy //virtual double dSigmadCosTh virtual void SetStrategy(const short int strat) = 0; short int GetStrategy() const {return fStrategy;} // -- Supersede to set any double parameter // Each individual cross section class implements their own // These are not pure virtual as they could not be fully implemented // in the derived classes virtual void SetDPar(const std::string /*name*/, const double /*val*/) {} virtual void SetSPar(const std::string /*name*/, const std::string /*val*/) {} virtual void SetIPar(const std::string /*name*/, const int /*val*/) {} virtual double Sigma(const double E) const = 0; protected: virtual void LoadTablesDB() = 0; short int fStrategy; // -- the messenger is attached to the manager, not to the individual // cross section object }; } /* namespace RAT */ #endif /* SRC_UTIL_CROSSSECTIONBASE_HH_ */