#ifndef MATERIALGEOMETER_HPP #define MATERIALGEOMETER_HPP // // $Id: MaterialGeometer.hpp,v 1.5 2000/12/05 16:52:16 hobbs Exp $ // // File: MaterialGeometer.hpp // Purpose: Provides user access to the Material geometry // Created: 02-MAR-1999 Abid Patwa, John Hobbs // // $Revision: 1.5 $ // // // Follows logic of Harry's CftMaterialGeometer.hpp // Include files #include #include // Forward class declarations class CylindricalShell; class BareCylindricalSurface; class BaseGeometry; namespace dgs { class CylindricalSurface; } #ifndef RCP_RCP namespace edm {class RCP;} #endif // Provides user access to the Material geometry. class MaterialGeometer: public dgs::absRcpGeometer { public: // Returns a pointer to the MaterialGeometer. static MaterialGeometer* get_instance(); /// Build the material void build(edm::RCP* rcp, BaseGeometry *d0det); /// Get the beampipe material const CylindricalShell* get_beampipe(); /// Get the solenoid material const CylindricalShell* get_solenoid(); /** Refresh the material geometry. Refreshes the material geometry by updating Handle's pointing to Base Geometry surfaces. This method should be called when a new Base Geometry has been supplied to the MaterialGeometer. */ void refresh() {} /// Prints the geometry. void print_geometry(); private: /// Complete the version control interface required by the absRcpGeometer bool refresh( const edm::RCP *rcp ); /// Private constructor used to manage singleton MaterialGeometer(); /// Private destructor used to manage singleton ~MaterialGeometer(); /// The actual geometer. static MaterialGeometer* d_theGeometer; /// Cache of surface handles. dgs::HandleCache d_cache; /// For speed, hold pointers to the bp and solenoid permanently. const CylindricalShell* _bpshell; const CylindricalShell* _solndshell; /// Temporarily used. Will be fixed up later BaseGeometry* _d0det; }; #endif //MATERIALGEOMETER_HPP