5#ifndef ForwardRegionGeoModelFactory_h
6#define ForwardRegionGeoModelFactory_h 1
7#include "GeoModelKernel/GeoVDetectorFactory.h"
10#include "GaudiKernel/ToolHandle.h"
60 virtual void create(GeoPhysVol *world);
82 void constructElements(GeoPhysVol *fwrPhys, std::vector<std::vector<std::string> > loadedDataFile,
int beam);
85 GeoPhysVol*
insertMagnetEnvelope(
const std::string& name,
double x,
double y,
double z,
double rotationAngle,
double diameter,
double halfL,
double dL, GeoPhysVol* fwrPhys);
86 void insertCircularElement(
const std::string& name,
double x,
double y,
double z,
double rotationAngle,
double xAperture,
double yAperture,
double halfL,
double dL,
double tubeThickness, GeoPhysVol* fwrPhys);
87 void insertEllipticalElement(
const std::string& name,
double x,
double y,
double z,
double rotationAngle,
double xAperture,
double yAperture,
double halfL,
double dL,
double tubeThickness, GeoPhysVol* fwrPhys);
88 void insertXRecticircularElement(
const std::string& name,
double x,
double y,
double z,
double rotationAngle,
double xAperture,
double yAperture,
double halfL,
double dL,
double tubeThickness, GeoPhysVol* fwrPhys);
89 void insertYRecticircularElement(
const std::string& name,
double x,
double y,
double z,
double rotationAngle,
double xAperture,
double yAperture,
double halfL,
double dL,
double tubeThickness, GeoPhysVol* fwrPhys);
90 void insertTrousersElement(
const std::string& name,
double x,
double y,
double z,
double rotationAngle, GeoPhysVol* fwrPhys);
91 void insertTCLElement(
const std::string& name,
double x,
double y,
double z, GeoPhysVol* fwrPhys,
double TCLJawDistO,
double TCLJawDistI,
bool tungstenInsteadOfCopper =
false);
94 std::vector<std::vector<std::string> >
loadDataFile(
const std::string& fileName,
int cols);
101 template <
typename T>
int sgn(T val);
struct _FWD_CONFIGURATION * PFWD_CONFIGURATION
struct _FWD_CONFIGURATION FWD_CONFIGURATION
struct _FWDMg_CONFIGURATION FWDMg_CONFIGURATION
void insertTrousersElement(const std::string &name, double x, double y, double z, double rotationAngle, GeoPhysVol *fwrPhys)
ToolHandle< IForwardRegionProperties > m_properties
GeoPhysVol * insertMagnetEnvelope(const std::string &name, double x, double y, double z, double rotationAngle, double diameter, double halfL, double dL, GeoPhysVol *fwrPhys)
void insertEllipticalElement(const std::string &name, double x, double y, double z, double rotationAngle, double xAperture, double yAperture, double halfL, double dL, double tubeThickness, GeoPhysVol *fwrPhys)
FWD_CONFIGURATION m_Config
const ForwardRegionGeoModelFactory & operator=(const ForwardRegionGeoModelFactory &right)
~ForwardRegionGeoModelFactory()
void insertYRecticircularElement(const std::string &name, double x, double y, double z, double rotationAngle, double xAperture, double yAperture, double halfL, double dL, double tubeThickness, GeoPhysVol *fwrPhys)
void constructElements(GeoPhysVol *fwrPhys, std::vector< std::vector< std::string > > loadedDataFile, int beam)
void insertTCLElement(const std::string &name, double x, double y, double z, GeoPhysVol *fwrPhys, double TCLJawDistO, double TCLJawDistI, bool tungstenInsteadOfCopper=false)
StoreGateSvc * m_detectorStore
ForwardRegionGeoModelFactory(const ForwardRegionGeoModelFactory &right)
void insertCircularElement(const std::string &name, double x, double y, double z, double rotationAngle, double xAperture, double yAperture, double halfL, double dL, double tubeThickness, GeoPhysVol *fwrPhys)
std::map< std::string, const GeoMaterial * > m_MapMaterials
virtual void create(GeoPhysVol *world)
virtual const ForwardRegionGeoModelManager * getDetectorManager() const
FWDMg_CONFIGURATION m_MagConfig
std::vector< std::vector< std::string > > loadDataFile(const std::string &fileName, int cols)
void insertXRecticircularElement(const std::string &name, double x, double y, double z, double rotationAngle, double xAperture, double yAperture, double halfL, double dL, double tubeThickness, GeoPhysVol *fwrPhys)
ForwardRegionGeoModelManager * m_detectorManager
ForwardRegionGeoModelFactory(StoreGateSvc *pDetStore, const PFWD_CONFIGURATION pConfig)
The Athena Transient Store API.