ATLAS Offline Software
Loading...
Searching...
No Matches
AFP_GeoModelFactory.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef AFP_GeoModelFactory_h
6#define AFP_GeoModelFactory_h 1
7
11#include "AFP_GeoModelManager.h" //covariant return type, needs defined inheritance
13#include "GeoModelKernel/GeoIntrusivePtr.h"
14#include "GeoModelKernel/GeoVDetectorFactory.h"
16#include <string>
17#include <map>
18
19class AFP_Geometry;
20class StoreGateSvc;
23class StatusCode;
24
25
26#define SLIMCUT (0.01*CLHEP::mm)
27
29 float fBpmMRRX, fBpmMRRY; //BPMR.6R1.B1 (231.535 m from IP)
30 float fBpmMRLX, fBpmMRLY; //BPMR.6L1.B2 (225.245 m from IP)
31 float fBpmSARX, fBpmSARY; //BPMSA.7R1.B1 (on ALFA station A7R1 237.7505 m from IP)
32 float fBpmSALX, fBpmSALY; //BPMSA.7L1.B2 (on ALFA station A7L1 237.7505 m from IP)
33
34 float fBpmWBRX, fBpmWBRY; //BPMWB.4R1.B1 (151.0945 m from IP)
35 float fBpmYALX, fBpmYALY; //BPMYA.4L1.B2 (172.227 m from the IP)
36};
37
38
39
40class AFP_GeoModelFactory : public GeoVDetectorFactory
41{
42
43public:
44 AFP_GeoModelFactory(StoreGateSvc *pDetStore, AFP_Geometry* pGeometry);
46
47 // Creation of geometry:
48 virtual void create(GeoPhysVol *world);
49
50 // Access to the results:
51 virtual const AFP_GeoModelManager * getDetectorManager() const;
52 void updatePositions(AFP_BPMCOOLPARAMS* pBpmParams);
53
54private:
55 std::map<std::string, GeoRef<const GeoMaterial> > m_MapMaterials;
56
57 void defineMaterials();
58
59 // Illegal operations:
62
63 // The manager:
66
67 //common auxiliary map of solid shapes
68 std::map<std::string,const GeoShape*> m_MapShape;
72
73 //Si detector part
74 GeoShape* createSolidSIDPlate();
75 void addSiDetector(GeoPhysVol* pPhysMotherVol, const char* pszStationName, HepGeom::Transform3D& TransInMotherVolume);
76 void addRomanPot(GeoPhysVol* pPhysMotherVol, const char* pszStationName, HepGeom::Transform3D& TransInMotherVolume);
77
78 //TOF part
79 GeoIntrusivePtr<GeoOpticalSurface> m_pOpticalSurface{};
80 GeoIntrusivePtr<GeoOpticalSurface> m_pReflectionOptSurface{};
82 StatusCode addTimingDetector(const char* pszStationName, GeoOpticalPhysVol* pPhysMotherVol, HepGeom::Transform3D& TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
83 void addLQBarSegment(const char* pszStationName, const int nQuarticID, const int nLQBarID,AFPTOF_LBARDIMENSIONS& LQBarDims, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D& TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
84 void addSepRadLBar(const char* pszStationName, const int nQuarticID, const int nBarID, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D& TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
85 HepGeom::Vector3D<double> getBarShift(AFPTOF_LBARDIMENSIONS& LQBarDims, eLBarType eSpecType=ELBT_UNDEFINED);
86 void addHorizontalArm(const char* pszStationName, const int nQuarticID, const int nLQBarID, AFPTOF_LBARDIMENSIONS& LQBarDims, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D& PartialTransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
87 void addSensor(const char* pszStationName, const int nQuarticID, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
88 void addLBarSensorSeparationWindow(const char* pszStationName, const int nQuarticID, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
89 void getLQBarDimensions(const int nRowID, const int nColID, AFPTOF_LBARDIMENSIONS* pLQBarDims);
90};
91
92// Class AFP_GeoModelFactory
93#endif
94
95
eLBarType
@ ELBT_UNDEFINED
std::vector< GeoBorderSurface > GeoBorderSurfaceContainer
Simple smart-pointer class for GeoModel objects.
std::map< std::string, GeoRef< const GeoMaterial > > m_MapMaterials
void addSiDetector(GeoPhysVol *pPhysMotherVol, const char *pszStationName, HepGeom::Transform3D &TransInMotherVolume)
AFP_GeoModelFactory(const AFP_GeoModelFactory &right)
void addLBarSensorSeparationWindow(const char *pszStationName, const int nQuarticID, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
GeoIntrusivePtr< GeoOpticalSurface > m_pOpticalSurface
void addRomanPot(GeoPhysVol *pPhysMotherVol, const char *pszStationName, HepGeom::Transform3D &TransInMotherVolume)
void getLQBarDimensions(const int nRowID, const int nColID, AFPTOF_LBARDIMENSIONS *pLQBarDims)
AFP_GeoModelFactory(StoreGateSvc *pDetStore, AFP_Geometry *pGeometry)
HepGeom::Vector3D< double > getBarShift(AFPTOF_LBARDIMENSIONS &LQBarDims, eLBarType eSpecType=ELBT_UNDEFINED)
void addLQBarSegment(const char *pszStationName, const int nQuarticID, const int nLQBarID, AFPTOF_LBARDIMENSIONS &LQBarDims, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
void addHorizontalArm(const char *pszStationName, const int nQuarticID, const int nLQBarID, AFPTOF_LBARDIMENSIONS &LQBarDims, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &PartialTransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
void addSepRadLBar(const char *pszStationName, const int nQuarticID, const int nBarID, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
void addSensor(const char *pszStationName, const int nQuarticID, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
void updatePositions(AFP_BPMCOOLPARAMS *pBpmParams)
StatusCode addTimingDetector(const char *pszStationName, GeoOpticalPhysVol *pPhysMotherVol, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
GeoIntrusivePtr< GeoOpticalSurface > m_pReflectionOptSurface
AFP_CONFIGURATION m_CfgParams
virtual const AFP_GeoModelManager * getDetectorManager() const
virtual void create(GeoPhysVol *world)
std::map< std::string, const GeoShape * > m_MapShape
AFP_GeoModelManager * m_pDetectorManager
const AFP_GeoModelFactory & operator=(const AFP_GeoModelFactory &right)
StoreGateSvc * m_pDetectorStore
GeoShape * createSolidSIDPlate()
Ensure that the extensions for the Vector3D are properly loaded.
Ensure that the extensions for the Vector3D are properly loaded.
The Athena Transient Store API.
::StatusCode StatusCode
StatusCode definition for legacy code.