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
9#include "AFP_GeoModelManager.h" //covariant return type, needs defined inheritance
11#include "GeoModelKernel/GeoIntrusivePtr.h"
12#include "GeoModelKernel/GeoVDetectorFactory.h"
14#include <string>
15#include <map>
16
17class AFP_Geometry;
18class StoreGateSvc;
21class StatusCode;
22
23
24#define SLIMCUT (0.01*CLHEP::mm)
25
27 float fBpmMRRX, fBpmMRRY; //BPMR.6R1.B1 (231.535 m from IP)
28 float fBpmMRLX, fBpmMRLY; //BPMR.6L1.B2 (225.245 m from IP)
29 float fBpmSARX, fBpmSARY; //BPMSA.7R1.B1 (on ALFA station A7R1 237.7505 m from IP)
30 float fBpmSALX, fBpmSALY; //BPMSA.7L1.B2 (on ALFA station A7L1 237.7505 m from IP)
31
32 float fBpmWBRX, fBpmWBRY; //BPMWB.4R1.B1 (151.0945 m from IP)
33 float fBpmYALX, fBpmYALY; //BPMYA.4L1.B2 (172.227 m from the IP)
34};
35
36
37
38class AFP_GeoModelFactory : public GeoVDetectorFactory
39{
40
41public:
42 AFP_GeoModelFactory(StoreGateSvc *pDetStore, AFP_Geometry* pGeometry);
44
45 // Creation of geometry:
46 virtual void create(GeoPhysVol *world);
47
48 // Access to the results:
49 virtual const AFP_GeoModelManager * getDetectorManager() const;
50 void updatePositions(AFP_BPMCOOLPARAMS* pBpmParams);
51
52private:
53 std::map<std::string, GeoRef<const GeoMaterial> > m_MapMaterials;
54
55 void defineMaterials();
56
57 // Illegal operations:
60
61 // The manager:
64
65 //common auxiliary map of solid shapes
66 std::map<std::string,const GeoShape*> m_MapShape;
70
71 //Si detector part
72 GeoShape* createSolidSIDPlate();
73 void addSiDetector(GeoPhysVol* pPhysMotherVol, const char* pszStationName, HepGeom::Transform3D& TransInMotherVolume);
74 void addRomanPot(GeoPhysVol* pPhysMotherVol, const char* pszStationName, HepGeom::Transform3D& TransInMotherVolume);
75
76 //TOF part
77 GeoIntrusivePtr<GeoOpticalSurface> m_pOpticalSurface{};
78 GeoIntrusivePtr<GeoOpticalSurface> m_pReflectionOptSurface{};
80 StatusCode addTimingDetector(const char* pszStationName, GeoOpticalPhysVol* pPhysMotherVol, HepGeom::Transform3D& TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
81 void addLQBarSegment(const char* pszStationName, const int nQuarticID, const int nLQBarID,AFPTOF_LBARDIMENSIONS& LQBarDims, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D& TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
82 void addSepRadLBar(const char* pszStationName, const int nQuarticID, const int nBarID, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D& TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
83 HepGeom::Vector3D<double> getBarShift(AFPTOF_LBARDIMENSIONS& LQBarDims, eLBarType eSpecType=ELBT_UNDEFINED);
84 void addHorizontalArm(const char* pszStationName, const int nQuarticID, const int nLQBarID, AFPTOF_LBARDIMENSIONS& LQBarDims, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D& PartialTransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
85 void addSensor(const char* pszStationName, const int nQuarticID, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
86 void addLBarSensorSeparationWindow(const char* pszStationName, const int nQuarticID, GeoOpticalPhysVol* pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer* bsContainer);
87 void getLQBarDimensions(const int nRowID, const int nColID, AFPTOF_LBARDIMENSIONS* pLQBarDims);
88};
89
90// Class AFP_GeoModelFactory
91#endif
92
93
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.