106{
108 return;
109
112 if (world) {
113 GeoVolumeCursor av(*world);
114 while (!av.atEnd()) {
115 QString topvolname(av.getName().c_str());
116 if (topvolname.startsWith("LucidSide")) {
117 const bool sideA(topvolname.contains(
"SideA"));
118 GeoVolumeCursor av2(av.getVolume());
119 while (!av2.atEnd()) {
120 if (av2.getVolume()->getLogVol()->getName()=="lvVessel") {
121 GeoVolumeCursor av3(av2.getVolume());
122 while (!av3.atEnd()) {
123 if (av3.getVolume()->getLogVol()->getName()=="lvVesselGas") {
124 GeoVolumeCursor av4(av3.getVolume());
125 while (!av4.atEnd()) {
126 if (av4.getVolume()->getLogVol()->getName()=="lvTubeGas") {
127
128 int tubeID = -1;
129 QString tubegasname(av4.getName().c_str());
130 if (tubegasname.startsWith("LucidTubeGas")) {
131 tubegasname.remove(0,12);
132 bool ok;
133 int t(tubegasname.toInt(&ok));
134 if (ok) {
135 tubeID =
t + (
sideA?0:20);
136 }
137 }
138 if (tubeID>=0) {
139 const GeoTube * geotube = av4.getVolume()->getLogVol()->getShape()->typeID()==GeoTube::getClassTypeID() ?
140 static_cast<const GeoTube*>(av4.getVolume()->getLogVol()->getShape()) : 0;
141 Amg::Transform3D tr( av.getTransform()*av2.getTransform()*av3.getTransform()*av4.getTransform() );
142 (*tubeID2TubeInfo)[tubeID] =
new TubeInfo(tubeID,tr,geotube);
145 } else {
146 VP1Msg::message(
"VP1RawDataHandle_LUCID ERROR: Can't decode tube id from PMT volume name");
147 }
148 }
149 av4.next();
150 }
151 }
152 av3.next();
153 }
154 }
155 av2.next();
156 }
157 }
158 av.next();
159 }
160 }
161}
static const GeoPVConstLink * geoModelWorld()
static void messageVerbose(const QString &)
static void message(const QString &, IVP1System *sys=0)
static std::map< int, TubeInfo * > * tubeID2TubeInfo
Eigen::Affine3d Transform3D
unsigned int constexpr sideA