// $Id: DetectorGeometry.hh,v 1.11 2005/11/03 12:01:33 moreggia Exp $ // Author: Alessandro Thea 2005/03/10 /***************************************************************************** * ESAF: Euso Simulation and Analysis Framework * * * * Id: DetectorGeometry * * Package: Optics * * Coordinator: Alessandro.Thea * * * *****************************************************************************/ #ifndef __DETECTORGEOMETRY_HH__ #define __DETECTORGEOMETRY_HH__ #include "euso.hh" #include "EsafRefFrame.hh" class EarthVector; //////////////////////////////////////////////////////////////////////////////// // // // DetectorGeometry // // // // Contains the fundamental information of the detector seen from "outside": // // Position, orientation in the space, external radius and field of view. // // // //////////////////////////////////////////////////////////////////////////////// class DetectorGeometry : public EsafRefFrame { public: DetectorGeometry(); virtual ~DetectorGeometry(); virtual Double_t GetRadius() const { return fRadius; } virtual Double_t GetFoV() const { return fFoV; } virtual Double_t GetTargetZ() const { return fTargetZ; } // Returns the solid angle made by Euso pupil as seen from a position in the atmosphere virtual Double_t SolidAngle(const EarthVector&) const; virtual Double_t MaxSolidAngle(const EarthVector&) const; virtual inline TVector3 OpticalAxis() const { return -fZaxis; } virtual inline void SetRadius( Double_t r ) { fRadius = r; } virtual inline void SetFoV( Double_t fov ) { fFoV = fov; } virtual inline void SetTargetZ( Double_t z ) { fTargetZ = z; } // tell if incoming direction is in FoV or not Bool_t IsInFoV(const TVector3&) const; protected: Double_t fRadius; Double_t fFoV; Double_t fTargetZ; ClassDef(DetectorGeometry,0) }; #endif /* __DETECTORGEOMETRY_HH__ */