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