/////////////////////////////////////////////////////////////////////////////// /// \class RAT::GeoCanSourceFactory /// /// \brief Geometry for the can source /// /// \author Logan Sibley -- contact person /// /// REVISION HISTORY:\n /// 26/07/2010 : L. Sibley - First version \n /// 11/08/2010 : L. Sibley - New pmt model \n /// 28/07/2011 : L. Sibley - Added light guide \n /// 11 Nov 2014: Matthew Strait - Removed unsed variable /// /// \details Construct the can source, consisting of two can layers surrounding a /// PMT and small plastic scintillator disk (button). To load this /// geometry into the simulation, use: /// /// /rat/db/load geo/CanSource.geo /// /// All of the layers scale according to the PMT and PMT base radius and /// height, the light guide height, and the button thickness (in mm). /// These dimensions, as well as the thickness and material of each can /// layer (G4_POLYOXYMETHYLENE by default (Delrin)), may be changed in a /// RAT macro using: /// /// /rat/db/set GEO[canSource] outerCanMaterial "stainless_steel" /// /rat/db/set GEO[canSource] pmtHeight 95.0 /// etc... /// /// This geometry is intended to be used to study calibration of SNO+ /// using a gamma-emitting source placed at the centre of the /// scintillating disk. Either a decaychain or decay0 generator is used /// to generate an event, for example: /// /// /generator/add decaychain 60Co:point:poisson::screen /// /// The centre of the scintillating button is, by default, placed at the /// centre of the liquid scintillator volume (scint). Thus, to run the /// can source at the centre of the detector, use: /// /// /generator/pos/set 0 0 0 /// /// If you want to shift the position of the can source from the centre /// of the detector, then specify it in the data/geo/CanSource.geo file: /// /// canPosition: [x, y, z], /// /// The dimensions and materials, as above, may also be changed in this /// file. The can position cannot be changed inside the RAT macro. If /// the can position is shifted, note that the position generator should /// then also be shifted to the same x and y as the can source, and z /// shifted down by 1/2 the pmt height plus 1/2 the pmt base height plus /// 1/2 the light guide height. /// /// Note that all volumes are completely flush. Also, if the light guide /// height is set to 0.0, then it is not built. /// /////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_GeoCanSourceFactory__ #define __RAT_GeoCanSourceFactory__ #include #include namespace RAT { class GeoCanSourceFactory : public GeoFactory { public: GeoCanSourceFactory() : GeoFactory("CanSource") {}; // Return the can source physical volume /// @param[in] checkOverlaps when placing virtual void Construct(DBLinkPtr table, const bool checkOverlaps ); private: bool fbuildLightGuide; float fpmtRadius, fpmtHeight; float fpmtBaseRadius, fpmtBaseHeight; float flightGuideButtonRadius, flightGuidePmtRadius, flightGuideHeight; float finnerCanThickness, fouterCanThickness, fbuttonThickness; float finnerCanHalfHeight, fouterCanHalfHeight; float finnerCanRadius, fouterCanRadius, fbuttonRadius; }; } // namespace RAT #endif