//////////////////////////////////////////////////////////////////////// /// \class RAT::GeoCerenkovSourceFactory /// /// \brief Geometry for the Cerenkov source /// /// \author Olivia Wasalski /// \author Benjamin Land -- contact person /// /// REVISION HISTORY:\n /// 29/04/2011 : O. Wasalski - First version. \n /// 11/05/2011 : O. Wasalski - Second Version. \n /// 22/08/2012 : O. Wasalski - Changed parameter to move source. \n /// /// \details Constructs a possible geometry for a Cerenkov source. /// The geometry resembles that of the Li8 source used for SNO, /// with the change from a stainless steel sphere to one made /// from acrylic. To load this geometry into the simulation, use: /// /// /rat/db/load geo/CerenkovSource.geo /// /// All of the layers and components scale according to the values /// found in data/geo/CerenkovSource.geo. Any of these values can /// be changed in the RAT macro using: /// /// /rat/db/set GEO[CerenkovSource] acrylic_ball_thickness 60.0 /// /rat/db/set GEO[CerenkovSource] window_material "acrylic_sno" /// ect... /// /// You can shift the position of the source by using the following /// commands in your RAT macro: /// /// /rat/db/set GEO[CerenkovSource] position [x, y, z] /// /// Where x, y and z are the distances from the AV center in mm. /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_GeoCerenkovSourceFactory__ #define __RAT_GeoCerenkovSourceFactory__ #include #include #include #include namespace RAT { class GeoCerenkovSourceFactory : public GeoFactory { public: // Constructor - index of factory is "CerenkovSource" GeoCerenkovSourceFactory() : GeoFactory("CerenkovSource") {}; // Return the cerenkov source physical volume /// @param[in] checkOverlaps when placing virtual void Construct(DBLinkPtr table, const bool checkOverlaps); protected: G4VisAttributes* getColour(std::vector colour); void checkFieldDoesNotExist(DBLinkPtr table, std::string field); }; } // namespace RAT #endif // __RAT_GeoCerenkovSourceFactory__