ATLAS Offline Software
Classes | Static Public Member Functions | Static Public Attributes | List of all members
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 }

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:
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
VP1JobConfigInfo::geoModelWorld
static const GeoPVConstLink * geoModelWorld()
Definition: VP1JobConfigInfo.cxx:240
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
RPDUtils::sideA
unsigned constexpr int sideA
Definition: RPDUtils.h:16
python.selection.number
number
Definition: selection.py:20
VP1Msg::messageVerbose
static void messageVerbose(const QString &)
Definition: VP1Msg.cxx:84
VP1Msg::message
static void message(const QString &, IVP1System *sys=0)
Definition: VP1Msg.cxx:30
VP1RawDataHandle_LUCID::Imp::tubeID2TubeInfo
static std::map< int, TubeInfo * > * tubeID2TubeInfo
Definition: VP1RawDataHandle_LUCID.cxx:98
VP1Msg::verbose
static bool verbose()
Definition: VP1Msg.h:31