/** \file Declaration of SimShowerProfileModel \author Javier Gonzalez \version $Id$ \date 23 Feb 2012 */ #ifndef _atm_SimShowerProfileModel_h_ #define _atm_SimShowerProfileModel_h_ static const char CVSId_atm_SimShowerProfileModel[] = "$Id$"; #include #include #include namespace atm { class ProfileResult; /** \class SimShowerProfileModel SimShowerProfileModel.h "atm/SimShowerProfileModel.h" \brief Molecular profile using a parametric model stored in a shower file. This model is meant to be used together when reading simulated air showers that store the atmosphere parameters in a standard way, usually a piecewise function of the form a+b*exp(-h/c). Currently only CORSIKA files support this. It provides a very simple picture of the atmosphere, only density- and depth-related data is provided. It will raise an exception if vapor pressure, pressure or temperature data is requested. To use this manager, make sure the following line appears in the atmosphere configuration: \verbatim SimShower \endverbatim In order to use this with other file types, the file-reading class must set the atmosphere parameters inside ShowerSimData. \author Javier Gonzalez \date 23 Feb 2012 \ingroup atm_models */ class SimShowerProfileModel :public atm::VProfileModel { public: SimShowerProfileModel(); /// Destructor - should be virtual for base classes virtual ~SimShowerProfileModel(); void Init(){} /// Table of depth as a function of height const atm::ProfileResult& EvaluateDepthVsHeight() const; /// Table of height as a function of depth const atm::ProfileResult& EvaluateHeightVsDepth() const; /// Table of air pressure as a function of height const atm::ProfileResult& EvaluatePressureVsHeight() const; /// Table of H2O vapor pressure as a function of height const ProfileResult& EvaluateVaporPressureVsHeight() const; /// Table of temperature as a function of height const atm::ProfileResult& EvaluateTemperatureVsHeight() const; /// Table of density as a function of height const atm::ProfileResult& EvaluateDensityVsHeight() const; /// Tabl of refraction index as a function of height const atm::ProfileResult& EvaluateRefractionIndexVsHeight() const; bool HasData() const {return true;}; private: void LazyInit(); double GetDensityVsHeight(double height) const; double GetDepthVsHeight(double height) const; std::string fCurrentEvent; bool fInitialized; std::vector fHlay; std::vector fAatm; std::vector fBatm; std::vector fCatm; REGISTER_MODEL(atm::VProfileModel, "SimShower",SimShowerProfileModel); }; } // #endif // _atm_SimShowerProfileModel_h_ // Configure (x)emacs for this file ... // Local Variables: // mode:c++ // compile-command: "make -C .. -k" // End: