#ifndef _atm_AirflyFluorescenceModel_h_ #define _atm_AirflyFluorescenceModel_h_ /** \file Declaration of AirFlyFluorescenceModel \author Pedro Facal \date Jan 2007 */ #include <atm/VFluorescenceModel.h> #include <utl/TabulatedFunction.h> static const char CVSId_atm_AirflyFluorescenceModel[] = "$Id$"; namespace utl { class TabulatedFunction; } namespace atm { /** \class AirflyFluorescenceModel AirflyFluorescenceModel.h "atm/AirflyFluorescenceModel.h" \brief Fluorescence yields from AIRFLY This model uses AIRFLY data (see .xml) \author Pedro Facal \date Jan 2007 \version $Id$ \ingroup atm_models */ class AirflyFluorescenceModel :public atm::VFluorescenceModel { public: AirflyFluorescenceModel() { } virtual ~AirflyFluorescenceModel() { } void Init(); const utl::TabulatedFunction& EvaluateFluorescenceYield(const double heightAboveSeaLevel) const; const std::vector<double>& GetWavelengths() const { return fWavelength; } double GetdEdX0() const; bool HasData() const { return true; } private: /* Extension of module from B. Keilhauer, Sep. 2009 according to NIM A597 (2008) 50 and presentation from M. Bohacova at 6th Fl. Workshop in L'Aquila: */ enum TemperatureParameterization { eAIRFLYtemp, eNoTempParam }; enum HumidityParameterization { eAIRFLYhum, eNoHumParam }; TemperatureParameterization fTempParam; HumidityParameterization fHumParam; //end of Extension mutable utl::TabulatedFunction fFluorescenceSpectrum; std::vector<double> fWavelength; std::vector<double> fRelativeIntensity; std::vector<double> fPPrime; std::vector<double> fRelativeIntensityError; std::vector<double> fPPrimeErrorUncorrelated; std::vector<double> fPPrimeErrorCorrelated; double fTemperature0; double fPressure0; double fYield337; REGISTER_MODEL(atm::VFluorescenceModel, "Airfly", AirflyFluorescenceModel); }; } #endif // _atm_AirflyFluorescenceModel_h_ // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // compile-command: "make -C .. -k" // End: