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