/** \file This class is a 'mediator' between the clients and the muon map implementations. It will be implemented by delegating the work to a data member of the right type. \author Javier Gonzalez \version $Id: MuonProfile.h 21526 2012-08-01 12:26:58Z javierg $ \date 20 Nov 2005 */ #ifndef _MuonProfile_MuonProfile_h_ #define _MuonProfile_MuonProfile_h_ static const char CVSId_MuonProfile_MuonProfile[] = "$Id: MuonProfile.h 21526 2012-08-01 12:26:58Z javierg $"; #include namespace utl { class Branch; } namespace tls { /*! \brief Class to handle average muon profiles. This class provides an interface to access average muon profiles. It does not implement any particular algorithm. It delegates that to the right implementation class. The implementation to use is specified by the name of the utl::Branch passed in the constructor. The currently available models are: \author Javier Gonzalez \date 20 Nov 2005 \ingroup has_tools */ class MuonProfile { public: enum Model { eUSC, eParametric }; MuonProfile(utl::Branch branch); ~MuonProfile(){} /*! This returns the muon number per tank at point (xpos,ypos) in the ground plane, for the given profile parameters of theta (zenith), phi (azimuth) and energy. */ inline double NMuon(double xpos, double ypos, double theta, double phi, double energy) { return fMuonProfile->NMuon(xpos,ypos,theta,phi,energy); } /*! This returns the local muon inclination angle at point (xpos,ypos) in the ground plane, for the given profile parameters of theta (zenith), phi (azimuth) and energy. */ inline double ThetaMuon(double xpos, double ypos, double theta, double phi, double energy) { return fMuonProfile->ThetaMuon(xpos,ypos,theta,phi,energy); } /*! This returns the local muon energy at point (xpos,ypos) in the ground plane, for the given profile parameters of theta (zenith), phi (azimuth) and energy. */ inline double EnergyMuon(double xpos, double ypos, double theta, double phi, double energy) { return fMuonProfile->EnergyMuon(xpos,ypos,theta,phi,energy); } /// Returns the muon profile model, which the object represents. inline Model GetModel() { return fModel; } /// Smallest zenith angle, at which the muon profile is defined. inline double GetThetaMin() { return fMuonProfile->GetThetaMin(); } /// Largest zenith angle, at which the muon profile is defined. inline double GetThetaMax() { return fMuonProfile->GetThetaMax(); } private: tls::VMuonProfile * fMuonProfile; Model fModel; }; // MuonProfile } // tls #endif // _MuonProfile_MuonProfile_h_ // Configure (x)emacs for this file ... // Local Variables: // mode:c++ // compile-command: "make -C .. -k" // End: