185{
187 theclass->messageDebug(
"Warning: Can't init since muon geometry information is not present." );
188 return false;
189 }
190
191 VP1SGAccessHelper * sgaccess(0);
193 sgaccess =
new VP1SGAccessHelper(
theclass->systemBase());
194 else
196
197
198 const GeoModelExperiment * theExpt;
199 if (!sgaccess->retrieve( theExpt, "ATLAS" )) {
200 theclass->message(
"MuonChamberProjectionHelper Error: Can't retrieve"
201 " the ATLAS GeoModelExperiment from detector store.");
202 delete sgaccess;
203 return false;
204 }
205 delete sgaccess;
206
208 GeoVolumeCursor av(world);
209 const GeoLogVol * logvol(0);
210 const GeoShape * shape(0);
211 while (!av.atEnd()) {
212
213 if (av.getName()!="Muon") {
214 av.next();
215 continue;
216 }
218 GeoVolumeCursor av2(av.getVolume());
219 while (!av2.atEnd()) {
221 logvol = av2.getVolume()->getLogVol();
222 if (!logvol) {
223 theclass->message(
"MuonChamberProjectionHelper Error: Chamber has null logvol");
224 av2.next();
225 continue;
226 }
227 shape = logvol->getShape();
228 if (!shape) {
229 theclass->message(
"MuonChamberProjectionHelper Error: Chamber has null shape");
230 av2.next();
231 continue;
232 }
234 if (trd) {
235
236 if ( trd->getZHalfLength()>0.0
237 && trd->getXHalfLength1() > 0.0
238 && trd->getXHalfLength2() > 0.0
239 && trd->getYHalfLength1() > 0.0
240 && trd->getYHalfLength2() > 0.0 ) {
241 trd->ref();
243 mdtchambervolinfo.insert(std::pair<const GeoPVConstLink,MDTChamberInfo>( av2.getVolume(), Imp::MDTChamberInfo(toptransform * geovolume_transf, trd) ));
244 } else {
245 theclass->message(
"MuonChamberProjectionHelper Error: Chamber trd has non-positive shape parameters!");
246 }
247 } else {
248 theclass->message(
"MuonChamberProjectionHelper Error: Chamber shape is not a GeoTrd, and is not a boolean with a Trd somewhere");
249 }
250 }
251 av2.next();
252 }
253 av.next();
254 }
255
257 theclass->message(
"MuonChamberProjectionHelper Error: Found no MDT chambers");
258 return false;
259 }
260
262
263 return true;
264}
GeoPhysVol * getPhysVol()
Destructor.
bool nameIsMDTChamber(const std::string &n)
static bool hasMuonGeometry()
Eigen::Affine3d Transform3D