00001
00002
00003
00004
00005 #ifndef DETDESC_LASSEMBLY_H
00006 #define DETDESC_LASSEMBLY_H 1
00007
00008
00009 #include "DetDesc/LogVolBase.h"
00010 #include "DetDesc/CLIDLAssembly.h"
00011 #include "DetDesc/DetDesc.h"
00012
00013 template <class TYPE>
00014 class DataObjectFactory;
00015
00016 static const std::string EmptyString("");
00017
00028 class LAssembly :
00029 public LogVolBase
00030 {
00032 friend class DataObjectFactory<LAssembly>;
00033
00034 public:
00035
00042 LAssembly
00043 ( const std::string& name ,
00044 const std::string& sensitivity = "" ,
00045 const std::string& magnetic = "" );
00046
00048 virtual ~LAssembly();
00049
00050 public:
00051
00060 inline virtual bool
00061 isAssembly () const { return true ; }
00062
00067 inline virtual const ISolid*
00068 solid () const { return 0 ; }
00069
00076 inline virtual const Material*
00077 material () const { return 0 ; };
00078
00083 inline virtual const std::string&
00084 materialName () const { return EmptyString; }
00085
00092 inline virtual bool isInside
00093 ( const Gaudi::XYZPoint& LocalPoint ) const
00094 { return isInsideDaughter( LocalPoint ) ; };
00095
00105 virtual StatusCode belongsTo
00106 ( const Gaudi::XYZPoint& LocalPoint ,
00107 const int Level ,
00108 ILVolume::PVolumePath& pVolumePath ) const ;
00109
00119 virtual StatusCode belongsTo
00120 ( const Gaudi::XYZPoint& LocalPoint ,
00121 const int Level ,
00122 ILVolume::ReplicaPath& replicaPath ) const ;
00123
00144 virtual unsigned int intersectLine
00145 ( const Gaudi::XYZPoint & Point ,
00146 const Gaudi::XYZVector & Vector ,
00147 ILVolume::Intersections & intersections ,
00148 const double threshold ) const ;
00149
00172 virtual unsigned int intersectLine
00173 ( const Gaudi::XYZPoint & Point ,
00174 const Gaudi::XYZVector & Vector ,
00175 ILVolume::Intersections & intersections ,
00176 const ISolid::Tick tickMin ,
00177 const ISolid::Tick tickMax ,
00178 const double Threshold ) const ;
00179
00180
00184 static const CLID& classID () ;
00185
00189 virtual const CLID& clID () const ;
00190
00196 virtual std::ostream& printOut
00197 ( std::ostream & os = std::cout ) const ;
00198
00204 virtual MsgStream& printOut
00205 ( MsgStream & os ) const;
00206
00207 double xMin() const { return m_xMin; }
00208 double xMax() const { return m_xMax; }
00209 double yMin() const { return m_yMin; }
00210 double yMax() const { return m_yMax; }
00211 double zMin() const { return m_zMin; }
00212 double zMax() const { return m_zMax; }
00213
00214 void computeCover ();
00215
00216
00219 LAssembly();
00220
00221 private:
00222 double m_xMin;
00223 double m_xMax;
00224 double m_yMin;
00225 double m_yMax;
00226 double m_zMin;
00227 double m_zMax;
00228 bool m_coverComputed;
00229
00230 };
00231
00232
00233
00234
00235 #endif // DETDESC_LASSEMBLY_H
00236