#ifndef SIL0_HPP #define SIL0_HPP // // // File: SiL0.hpp // Purpose: Add Layer0 to SMT // Created: 01-FEB-2005 Shaohua Fu // // // Include files #include #include #include #include #include // Constructors/Destructors /** SMT Layer0 detector (one layer, eight barrels) */ class SiL0: public dgs::ReferencePoint { public: /// Default constructor (empty layer0). SiL0() {} /** Instantiate a layer0 unit with $nb$ barrels. The ideal positions are given in $barrel \_pos$. */ SiL0(int nb, std::vector barrels_zpos, const SiBarrel* proto_barrel); /** Instantiate a layer0 unit with $nb$ barrels. Construct a layer0 with the barrels specified in the vectors ${\it const std::vector \&barrels}$. */ SiL0(int nb, std::vector barrels_zpos, const std::vector& barrels); /** Return the address of the children. Used within dgs::GeometryElement and ReferencePoint to do positioning. */ const std::list get_children(); /// Return the number of barrels. int get_barrel_count() const; /// Return a constant reference to the ibarrel-th ibarrel. const SiBarrel* get_barrel(int ib) const; /// Return a modifiable reference to the ibarrel-th ibarrel. SiBarrel* get_mutable_barrel(int ib); /// Text dump a layer0 unit. friend std::ostream& operator <<(std::ostream& os, const SiL0& me); friend bool operator <<(const SiL0& lhs, const SiL0 &rhs); friend bool operator ==(const SiL0& lhs, const SiL0 &rhs); friend bool operator !=(const SiL0& lhs, const SiL0 &rhs); private: /// Vector to hold the barrels. std::vector _barrels; public: D0_OBJECT_SETUP(SiL0); }; // Inlines #include #endif //SIL0_HPP