ATLAS Offline Software
Loading...
Searching...
No Matches
GeoPixelIBLFwdServices.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5
6// Build IBL fwd services (wavy shape)
7// This is built one time per layer.
8
10
13
14#include "GeoModelKernel/GeoPhysVol.h"
15#include "GeoModelKernel/GeoMaterial.h"
16
17
18#include <algorithm>
19#include <iomanip>
20#include <iostream>
21#include <utility>
22using std::max;
23
26 GeoModelIO::ReadGeoModel* sqliteReader,
27 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
28 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX,
29 int section)
30 : GeoVPixelFactory(ddmgr, mgr, sqliteReader, std::move(mapFPV), std::move(mapAX)),
34 m_supportPhysA(nullptr),
35 m_supportPhysC(nullptr),
36 m_xformSupportA(nullptr),
37 m_xformSupportC(nullptr)
38{
39}
40
41
43{
44 // check if the wavy shape option is defined in the DB (based on the definition of the material)
45
46 bool bFwd02Defined=false;
47 int nbBarrelSvc = m_gmt_mgr->PixelServiceElements("barrel");
48 for(int i=0; i<nbBarrelSvc; i++){
49 std::string volName = m_gmt_mgr->PixelServiceName("barrel",i);
50 if(volName.substr(0,9)=="IBL_Fwd02")bFwd02Defined=true;
51 }
52 int nbSimpleSvc = m_gmt_mgr->PixelServiceElements("simple");
53 for(int i=0; i<nbSimpleSvc; i++){
54 std::string volName = m_gmt_mgr->PixelServiceName("simple",i);
55 if(volName.substr(0,9)=="IBL_Fwd02")bFwd02Defined=true;
56 }
57
58 if(m_mat_mgr->hasMaterial("pix::IBL_Fwd02_Cable_Wvy") &&!bFwd02Defined) m_bFwdComplexGeometry_CAD = true;
59 if(m_mat_mgr->hasMaterial("pix::IBL_Fwd02_Cable_Wvy_M1") && !bFwd02Defined) m_bFwdComplexGeometry_Mod1 = true;
60
61 m_gmt_mgr->msg(MSG::INFO) <<"Build IBL fwd services - CAD tool design / S. model1 : "<< m_bFwdComplexGeometry_CAD<<"/"<<m_bFwdComplexGeometry_Mod1<<endmsg;
62
63
65
66}
67
68
70{
71
72 m_gmt_mgr->msg(MSG::INFO) <<"GeoPixelIBLFwdService - CAD tool design / S. model1 : "<< m_bFwdComplexGeometry_CAD<<"/"<<m_bFwdComplexGeometry_Mod1<<endmsg;
73
75
76 m_gmt_mgr->msg(MSG::INFO) <<"Build IBL fwd services - CAD tool design"<<endmsg;
78
79 fwdSvc.Build();
80 m_supportPhysA = fwdSvc.getSupportA();
81 m_supportPhysC = fwdSvc.getSupportC();
84
85 if(m_supportPhysA==nullptr) {
86 m_gmt_mgr->msg(MSG::ERROR) <<"Build IBL fwd services - CAD tool design : the PixelGeoModel package is not meant to be used to build this design"<<endmsg;
87 m_gmt_mgr->msg(MSG::ERROR) <<" : check that the GeoTorus object is defined in GeoModelKernel/GeoModel"<<endmsg;
88 }
89 return nullptr;
90 }
91
92
94
95 m_gmt_mgr->msg(MSG::INFO) <<"Build IBL fwd services - S. Menke design"<<endmsg;
97
98 fwdSvc.Build();
99 m_supportPhysA = fwdSvc.getSupportA();
100 m_supportPhysC = fwdSvc.getSupportC();
103
104 return nullptr;
105 }
106
107 return nullptr;
108
109}
#define endmsg
void section(const std::string &sec)
GeoPixelIBLFwdServices(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX, int)
virtual GeoVPhysVol * Build() override
virtual GeoVPhysVol * Build() override
virtual GeoVPhysVol * Build() override
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
PixelGeometryManager * m_gmt_mgr
InDetDD::PixelDetectorManager * m_DDmgr
InDetMaterialManager * m_mat_mgr
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated pixel ...
STL namespace.