/** \file Declaration of class VCherenkovModel \author Luis Prado Jr \version $Id: VCherenkovModel.h 20705 2012-03-28 16:20:59Z javierg $ \date 27 Jan 2004 */ #ifndef _atm_VCherenkovModel_h_ #define _atm_VCherenkovModel_h_ static const char CVSId_atm_VCherenkovModel[] = "$Id: VCherenkovModel.h 20705 2012-03-28 16:20:59Z javierg $"; #include #include namespace utl {class Point; class TabulatedFunction;} namespace atm { /** \class VCherenkovModel \brief Base class for a Cherenkov Model \author Luis Prado Jr \date 27 Jan 2004 \ingroup atm_models */ class VCherenkovModel : public atm::VModel { public: VCherenkovModel(){}; virtual ~VCherenkovModel(){}; virtual utl::TabulatedFunction& EvaluateCherenkovPhotons(const utl::Point& xA, const utl::Point& xB, const double ShowerAge) const = 0; virtual utl::TabulatedFunction& EvaluateCherenkovDirect(const utl::Point& xA, const utl::Point& xB, const utl::Point& xEye, const double ShowerAge) const = 0; virtual double EvaluateDirectCherenkovProbability(const utl::Point& xA, const utl::Point& xB, const utl::Point& xEye, const double ShowerAge) const = 0; virtual const std::vector& GetWavelengths() const=0 ; virtual double AngularCDF(const double theta, const double verticalDepth, const double showerAge) const = 0; virtual double AngularPDF(const double theta, const double verticalDepth, const double showerAge) const = 0; virtual void SetEnergyCutoff (double ecut) const = 0; virtual double GetEnergyCutoff() const { return fEcut;} protected: /// electron energy-cutoff mutable double fEcut; }; typedef utl::ObjectFactory VCherenkovModelFactory; } // atm #endif // _atm_VCherenkovModel_h_ // Configure (x)emacs for this file ... // Local Variables: // mode:c++ // compile-command: "make -C .. -k" // End: