ATLAS Offline Software
Loading...
Searching...
No Matches
VP1RawDataHandle_LUCID::Imp Class Reference
Collaboration diagram for VP1RawDataHandle_LUCID::Imp:

Classes

class  TubeInfo

Static Public Member Functions

static void ensureInitTubeInfo ()

Static Public Attributes

static std::map< int, TubeInfo * > * tubeID2TubeInfo = 0

Detailed Description

Definition at line 46 of file VP1RawDataHandle_LUCID.cxx.

Member Function Documentation

◆ ensureInitTubeInfo()

void VP1RawDataHandle_LUCID::Imp::ensureInitTubeInfo ( )
static

Definition at line 105 of file VP1RawDataHandle_LUCID.cxx.

106{
107 if (tubeID2TubeInfo)
108 return;
109
110 Imp::tubeID2TubeInfo = new std::map<int,TubeInfo*>;//Fixme: Gives valgrind problems!
111 const GeoPVConstLink * world = VP1JobConfigInfo::geoModelWorld();
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 //Decode tube-id:
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);
143 if (VP1Msg::verbose())
144 VP1Msg::messageVerbose("VP1RawDataHandle_LUCID Added TubeInfo for tubeID = "+QString::number(tubeID));
145 } else {
146 VP1Msg::message("VP1RawDataHandle_LUCID ERROR: Can't decode tube id from PMT volume name");
147 }
148 }
149 av4.next();
150 }//end lvVesselGas loop
151 }
152 av3.next();
153 }//end lvVessel loop
154 }
155 av2.next();
156 }//end lucid-topvol loop
157 }
158 av.next();
159 }//end world loop
160 }
161}
static const GeoPVConstLink * geoModelWorld()
static void messageVerbose(const QString &)
Definition VP1Msg.cxx:84
static bool verbose()
Definition VP1Msg.h:31
static void message(const QString &, IVP1System *sys=0)
Definition VP1Msg.cxx:30
static std::map< int, TubeInfo * > * tubeID2TubeInfo
Eigen::Affine3d Transform3D
unsigned int constexpr sideA
Definition RPDUtils.h:16

Member Data Documentation

◆ tubeID2TubeInfo

std::map< int, VP1RawDataHandle_LUCID::Imp::TubeInfo * > * VP1RawDataHandle_LUCID::Imp::tubeID2TubeInfo = 0
static

Definition at line 98 of file VP1RawDataHandle_LUCID.cxx.


The documentation for this class was generated from the following file: