#ifndef _evt_ShowerRecData_h_ #define _evt_ShowerRecData_h_ #include #include #include #include namespace evt { class Event; class ShowerFRecData; class ShowerSRecData; class ShowerUnivRecData; class ShowerRRecData; class ShowerMRecData; class LaserData; /** \class ShowerRecData ShowerRecData.h "evt/ShowerRecData.h" \brief Interface class to access Shower Reconstructed parameters \author Stefano Argiro' \author Troy Porter \date 30 Jan 2003 \date 07 May 2003 \version $Id$ \ingroup shower */ class ShowerRecData { public: ShowerFRecData& GetFRecShower(); const ShowerFRecData& GetFRecShower() const; void MakeFRecShower(); bool HasFRecShower() const; ShowerSRecData& GetSRecShower(); const ShowerSRecData& GetSRecShower() const; void MakeSRecShower(); bool HasSRecShower() const; ShowerUnivRecData& GetUnivRecShower(); const ShowerUnivRecData& GetUnivRecShower() const; void MakeUnivRecShower(); bool HasUnivRecShower() const; ShowerRRecData& GetRRecShower(); const ShowerRRecData& GetRRecShower() const; void MakeRRecShower(); bool HasRRecShower() const; ShowerMRecData& GetMRecShower(); const ShowerMRecData& GetMRecShower() const; void MakeMRecShower(); bool HasMRecShower() const; /* Returns the shower azimuthal angle between 0 and 2pi degrees for downgoing showers as if the shower direction was a vector centered at the origin of the reference frame and pointing toward the source */ // double GetZenith() const; // double GetAzimuth() const; double GetEnergy() const; double GetEnergyError() const; const utl::Point& GetCorePosition() const; /** By convention the vector is parallel to the Primary Particle momentum. This should be taken into account when Accessing Theta and Phi. Functions GetZenithAngle() and GetAzimuthAngle() return zenith and azimuth as if the vector was pointing toward the source. */ const utl::Vector& GetAxis() const; // void SetAzimuthAngle(const double azimuth); // void SetZenithAngle(const double zenith); void SetEnergy(const double energy, const double error); void SetCorePosition(const utl::Point& theCore); void SetAxis(const utl::Vector& theAxis); /// Get the LaserData LaserData& GetLaserData() { return *fLaserData; } const LaserData& GetLaserData() const { return *fLaserData; } /// Check initialization of the LaserData bool HasLaserData() const { return fLaserData; } /// Make the LaserData void MakeLaserData(); private: ShowerRecData(); ~ShowerRecData() { } double fEnergy; double fEnergyError; utl::Vector fShowerAxis; utl::Point fCorePosition; utl::LameShadowPtr fShowerFRecData; utl::LameShadowPtr fShowerSRecData; utl::LameShadowPtr fShowerUnivRecData; utl::LameShadowPtr fShowerRRecData; utl::LameShadowPtr fShowerMRecData; utl::LameShadowPtr fLaserData; friend class evt::Event; friend class utl::LameShadowPtr; }; } #endif // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // End: