83 return StatusCode::SUCCESS;
88 GeoFullPhysVol* Phys =
dynamic_cast<GeoFullPhysVol *
>(
pv);
90 ATH_MSG_ERROR(
"Parent volume is not a GeoFullPhysVol as expected.");
91 return StatusCode::FAILURE;
97 if (StatusCode::SUCCESS !=
detStore()->
retrieve(materialManager, std::string(
"MATERIALS"))) {
99 return StatusCode::FAILURE;
112 if (versionKey.tag() ==
"AUTO")
114 ATH_MSG_ERROR(
"AUTO Atlas version. Please select a version.");
117 ATH_MSG_INFO(
"Building BCM with Version Tag: " << versionKey.tag() <<
" at Node: " << versionKey.node());
120 sc = service(
"RDBAccessSvc",accessSvc);
125 return StatusCode::FAILURE;
129 std::string BCMVersionTag;
130 BCMVersionTag = accessSvc->
getChildTag(
"BCM", versionKey.tag(), versionKey.node());
134 if (BCMVersionTag.empty())
138 return StatusCode::SUCCESS;
144 ATH_MSG_DEBUG(
" --> Number of records fetched = " << DBmodul->size());
149 for(
ind = 0;
ind < DBmodul->size();
ind++)
153 moduleNo = rec->
getLong(
"MODULE_ID");
156 unsigned int mask = (1 << moduleNo);
163 std::vector<double> module_property;
164 module_property.push_back(rec->
getFloat(
"TRANS_X"));
165 module_property.push_back(rec->
getFloat(
"TRANS_Y"));
166 module_property.push_back(rec->
getFloat(
"TRANS_Z"));
167 module_property.push_back(rec->
getFloat(
"ROT_X"));
168 module_property.push_back(rec->
getFloat(
"ROT_Y"));
169 module_property.push_back(rec->
getFloat(
"ROT_Z"));
170 module_property.push_back(rec->
getFloat(
"DIMESION_Z"));
171 module_property.push_back(rec->
getFloat(
"DIAM_TRANS_Y"));
172 module_property.push_back(rec->
getFloat(
"DIAM_TRANS_Z"));
173 module_property.push_back(rec->
getFloat(
"DIAM_DIAM_X"));
174 module_property.push_back(rec->
getFloat(
"DIAM_DAIM_Y"));
175 module_property.push_back(rec->
getFloat(
"DIAM_DIAM_Z"));
176 module_property.push_back(rec->
getFloat(
"OFF_H"));
177 module_property.push_back(rec->
getFloat(
"OFF_I"));
178 module_property.push_back(rec->
getFloat(
"OFF_J"));
182 manager->Module(moduleNo)->Set(moduleNo, &module_property);
190 const std::vector<double>* module_property =
nullptr;
191 for(moduleNo = 0; moduleNo < 8; moduleNo++)
193 unsigned int mask = (1 << moduleNo);
199 if(moduleNo == 0) module_property = &
m_module0;
200 else if(moduleNo == 1) module_property = &
m_moduleI;
201 else if(moduleNo == 2) module_property = &
m_moduleII;
202 else if(moduleNo == 3) module_property = &
m_moduleIII;
203 else if(moduleNo == 4) module_property = &
m_moduleIV;
204 else if(moduleNo == 5) module_property = &
m_moduleV;
205 else if(moduleNo == 6) module_property = &
m_moduleVI;
206 else if(moduleNo == 7) module_property = &
m_moduleVII;
210 if (module_property){
211 manager->Module(moduleNo)->Set(moduleNo, module_property);
213 ATH_MSG_ERROR(
"module_property pointer is null in BCM_Builder.cxx");
221 for(
int i=0;
i<8;
i++)
243 GeoIntrusivePtr<GeoNameTag>
tag{
new GeoNameTag(
"BCM Module")};
244 if (materialManager){
245 GeoVPhysVol* bcmModPhys = bcm.
Build(materialManager,
parameters, (msgLvl(MSG::INFO) ? &
msg(MSG::INFO) :
nullptr));
247 Phys->add(
new GeoIdentifierTag(
k));
249 Phys->add(bcmModPhys);
259 return StatusCode::FAILURE ;
261 return StatusCode::SUCCESS;