ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
VP1GeometrySystem::Imp Class Reference
Collaboration diagram for VP1GeometrySystem::Imp:

Classes

class  SubSystemInfo
 

Public Member Functions

 Imp (VP1GeometrySystem *gs, const VP1GeoFlags::SubSystemFlags &ssf)
 
void addSubSystem (const VP1GeoFlags::SubSystemFlag &, const QString &treetopregexp, const QString &childrenregexp="", const std::string &matname="", bool negatetreetopregexp=false, bool negatechildrenregexp=false, const QString &grandchildrenregexp="", bool negategrandchildrenregexp=false)
 
SubSystemInfochamberPVToMuonSubSystemInfo (const GeoPVConstLink &chamberPV)
 
void ensureInitVisAttributes ()
 
void buildSystem (SubSystemInfo *)
 
void updateTouchedMuonChamber (VolumeHandle *chamberhandle)
 
std::pair< SbVec3f, SbVec3f > getClosestMuonDriftTubeDirections (const SbVec3f &cameraDirection, const SbVec3f &cameraUpDirection, VolumeHandle *chamberhandle)
 
std::pair< SbVec3f, SbVec3f > getClosestCSCOrTGCEdgeDirections (const SbVec3f &cameraDirection, VolumeHandle *chamberhandle)
 
void changeStateOfVisibleNonStandardVolumesRecursively (VolumeHandle *, VP1GeoFlags::VOLSTATE)
 
void expandVisibleVolumesRecursively (VolumeHandle *, const QRegExp &, bool bymatname)
 
void iconifyVisibleVolumesRecursively (VolumeHandle *, const QRegExp &, bool bymatname)
 
void ensureInitPV2MuonStationMap ()
 
void updatePV2MuonStationMap (const MuonGM::MuonReadoutElement *elem)
 
QStringList stationInfo (const MuonGM::MuonStation *)
 
void expandAllChildren (VolumeHandle *, bool isPixel, bool brl, bool ecA, bool ecC)
 
void showPixelModules (VolumeHandle *)
 
void showITkPixelModules (VolumeHandle *, bool brl, bool ecA, bool ecC)
 
void showITkStripModules (VolumeHandle *, bool brl, bool ecA, bool ecC)
 
void showSCTBarrelModules (VolumeHandle *)
 
void showSCTEndcapModules (VolumeHandle *)
 
void applyTopVolStates (const QMap< quint32, QByteArray > &, bool disablenotif=false)
 
void createPathExtras (const VolumeHandle *, QString &, QStack< QString > &)
 

Static Public Member Functions

static double exclusiveMass (const PVConstLink &pv)
 
static double inclusiveMass (const PVConstLink &pv)
 
static double volume (const PVConstLink &pv)
 
static void catchKbdState (void *userData, SoEventCallback *CB)
 

Public Attributes

VP1GeometrySystemtheclass
 
SoSeparator * sceneroot
 
std::map< SoSeparator *, VolumeHandle * > sonodesep2volhandle
 
QList< SubSystemInfo * > subsysInfoList
 
DetVisAttributesdetVisAttributes
 
MatVisAttributesmatVisAttributes
 
VolVisAttributesvolVisAttributes
 
VP1GeoFlags::SubSystemFlags initialSubSystemsTurnedOn
 
GeoSysControllercontroller
 
PhiSectorManagerphisectormanager
 
VolumeTreeModelvolumetreemodel
 
const SoKeyboardEvent * kbEvent
 
std::map< PVConstLink, VolumeHandle * > muonchambers_pv2handles
 
std::map< QObject *, std::set< GeoPVConstLink > > sender2ChamberList
 
VolumeHandlepreviousAlignedChamberHandle
 
int last_appropriatemdtprojections
 
SoSeparator * m_textSep
 Separator used to hold all visible labels. More...
 
std::map< GeoPVConstLink, const MuonGM::MuonStation * > pv2MuonStation
 
bool pv2MuonStationInit
 
QMap< quint32, QByteArray > restoredTopvolstates
 
QList< const std::map< GeoPVConstLink, float > * > chamberT0s
 

Detailed Description

Definition at line 94 of file VP1GeometrySystem.cxx.

Constructor & Destructor Documentation

◆ Imp()

VP1GeometrySystem::Imp::Imp ( VP1GeometrySystem gs,
const VP1GeoFlags::SubSystemFlags &  ssf 
)
inline

Definition at line 96 of file VP1GeometrySystem.cxx.

97  : theclass(gs), sceneroot(0),
102  #ifndef BUILDVP1LIGHT
103  ,pv2MuonStationInit(false)
104  #endif
105  {
106  const unsigned n_chamber_t0_sources=2;
107  for (unsigned i=0;i<n_chamber_t0_sources;++i)
108  chamberT0s.append(0);
109  }

Member Function Documentation

◆ addSubSystem()

void VP1GeometrySystem::Imp::addSubSystem ( const VP1GeoFlags::SubSystemFlag f,
const QString &  treetopregexp,
const QString &  childrenregexp = "",
const std::string &  matname = "",
bool  negatetreetopregexp = false,
bool  negatechildrenregexp = false,
const QString &  grandchildrenregexp = "",
bool  negategrandchildrenregexp = false 
)

Definition at line 365 of file VP1GeometrySystem.cxx.

369 {
370  theclass->messageDebug("VP1GeometrySystem::Imp::addSubSystem - flag: '" + QString(f) + "' - matName: '" + str(matname.c_str()) + "'." );
371 
372  QCheckBox * cb = controller->subSystemCheckBox(f);
373  if (!cb) {
374  theclass->message("Error: Problems retrieving checkbox for subsystem "+str(f));
375  return;
376  }
377  subsysInfoList << new SubSystemInfo(cb,QRegExp(treetopregexp),negatetreetopregexp,
378  QRegExp(childrenregexp),negatechildrenregexp,f,matname,
379  QRegExp(grandchildrenregexp), negategrandchildrenregexp);
380  //FIXME: DELETE!!!
381 }

◆ applyTopVolStates()

void VP1GeometrySystem::Imp::applyTopVolStates ( const QMap< quint32, QByteArray > &  topvolstates,
bool  disablenotif = false 
)

Definition at line 1386 of file VP1GeometrySystem.cxx.

1387 {
1388  if (disablenotif)
1390  QMap<quint32,QByteArray>::const_iterator topvolstatesItr;
1391  for (Imp::SubSystemInfo * subsys : subsysInfoList) {
1392  VolumeHandle::VolumeHandleListItr it(subsys->vollist.begin()),itE(subsys->vollist.end());
1393  for (;it!=itE;++it) {
1394  topvolstatesItr = topvolstates.find((*it)->hashID());
1395  if (topvolstatesItr!=topvolstates.end())
1396  (*it)->applyPersistifiableState(topvolstatesItr.value());
1397  }
1398  }
1399  if (disablenotif) {
1402  }
1403 }

◆ buildSystem()

void VP1GeometrySystem::Imp::buildSystem ( SubSystemInfo si)

Definition at line 1098 of file VP1GeometrySystem.cxx.

1099 {
1100  VP1Msg::messageDebug("VP1GeometrySystem::Imp::buildSystem()" );
1101 
1102  if (!si||si->isbuilt)
1103  return;
1104  si->isbuilt = true;
1105  int ichild(0);
1106 
1108  #ifndef BUILDVP1LIGHT
1109  ensureInitPV2MuonStationMap(); // Needed for Muon Station names.
1110  #endif
1111 
1112 // // DEBUG
1113 // for (Imp::SubSystemInfo*si : m_d->subsysInfoList) {
1114 // VP1Msg::messageDebug("vol: " + QString((si->flag).str_c()) );
1115 // }
1116 
1117  assert(si->soswitch);
1118  SoSeparator * subsystemsep = new SoSeparator;
1119  phisectormanager->registerSubSystemSeparator(si->flag,subsystemsep);
1121 
1122  SbBool save = si->soswitch->enableNotify(false);
1123 
1124  if (si->geomodelchildrenregexp.isEmpty()) {
1125  //Loop over the treetop's that we previously selected:
1126  std::vector<SubSystemInfo::TreetopInfo>::const_iterator it, itE = si->treetopinfo.end();
1127  for (it=si->treetopinfo.begin();it!=itE;++it)
1128  {
1129  VP1Msg::messageDebug("toptree vol: " + QString(it->volname.c_str()) );
1130 
1131  //Find material:
1132  SoMaterial*m = detVisAttributes->get(it->volname);
1133  if (!m) {
1134  theclass->message("Warning: Did not find a predefined material for volume: "+QString(it->volname.c_str()));
1135  }
1139  SbMatrix matr;
1141  VolumeHandle * vh = new VolumeHandle(volhandle_subsysdata,0,it->pV,ichild++,VolumeHandle::NONMUONCHAMBER,matr);
1142  si->vollist.push_back(vh);
1143  // std::cout<<"Non muon chamber VH="<<vh<<std::endl;
1144  }
1145  } else {
1146  //Loop over the children of the physical volumes of the treetops that we previously selected:
1147  std::vector<SubSystemInfo::TreetopInfo>::const_iterator it, itE = si->treetopinfo.end();
1148  for (it=si->treetopinfo.begin();it!=itE;++it) {
1149 
1150  VP1Msg::messageDebug("group name: " + QString(si->matname.c_str()) );
1151 
1152  //NB: Here we use the si->matname. Above we use the si->volname. Historical reasons!
1153 
1154  //Find material for top-nodes:
1155  SoMaterial*mat_top(0);
1156  if (si->matname!="")
1157  mat_top = detVisAttributes->get(si->matname);
1158 
1162  volhandle_subsysdata->ref();
1163 
1164  const bool hasMuonChambers=si->hasMuonChambers();
1165 
1166  GeoVolumeCursor av(it->pV);
1167  //unsigned int count=0;
1168  while (!av.atEnd()) {
1169 
1170  // DEBUG
1171 // VP1Msg::messageDebug("child vol: " + QString(av.getName().c_str()) );
1172 
1173  //Use the childrenregexp to select the correct child volumes:
1174  if (si->childrenRegExpNameCompatible(av.getName().c_str())) {
1175  PVConstLink pVD = av.getVolume();
1176  SbMatrix matr;
1178  VolumeHandle * vh=0;
1179  // std::cout<<count++<<": dump SubSystemInfo\n"<<"---"<<std::endl;
1180  // si->dump();
1181  // std::cout<<"---"<<std::endl;
1182  if (hasMuonChambers){
1183  #ifndef BUILDVP1LIGHT
1184  vh = new MuonVolumeHandle(volhandle_subsysdata,0,pVD,ichild++,VolumeHandle::MUONCHAMBER_DIRTY,matr,pv2MuonStation[pVD],chamberT0s);
1185  #endif
1186  #ifdef BUILDVP1LIGHT
1187  vh = new VolumeHandle(volhandle_subsysdata,0,pVD,ichild++,VolumeHandle::MUONCHAMBER_DIRTY,matr);
1188  #endif
1189  muonchambers_pv2handles[pVD] = vh;
1190  if(VP1Msg::debug()){
1191  std::cout<<"Has muon chamber VH="<<vh<<std::endl;
1192  }
1193 
1194  } else {
1195 
1196  vh = new VolumeHandle(volhandle_subsysdata,0,pVD,ichild++,
1198  // std::cout<<"Does not have muon chamber (weird one) VH="<<vh<<std::endl;
1199  }
1200 
1201  // DEBUG
1202 // VP1Msg::messageDebug("granchild vol: " + vh->getName() + " - " + vh->getDescriptiveName() );
1203 
1204  if (si->geomodelgrandchildrenregexp.isEmpty()) {
1205  // append the volume to the current list
1206  theclass->messageDebug("grandchild inserted : " + vh->getDescriptiveName() + " - " + vh->getName() );
1207  si->vollist.push_back(vh);
1208 
1209  } else {
1210  VP1Msg::messageDebug("filtering at grandchild level...");
1211  if (si->grandchildrenRegExpNameCompatible(vh->getName().toStdString() ) ) {
1212  VP1Msg::messageDebug("filtered grandchild inserted : " + vh->getDescriptiveName() + " - " + vh->getName() );
1213  // append the volume to the current list
1214  si->vollist.push_back(vh);
1215  } else {
1216  theclass->message("Zapping this volumehandle because it's probably junk."+vh->getDescriptiveName() + " - " + vh->getName());
1217  vh->setState(VP1GeoFlags::ZAPPED); // FIXME - better solution for this? Maybe just don't create them?
1218 
1219  // std::cout<<"Not adding "<<vh->getName().toStdString()<<"["<<vh<<"] to vollist"<<std::endl;
1220  }
1221  }
1222  }
1223  av.next(); // increment volume cursor.
1224  }
1225  volhandle_subsysdata->unref();//To ensure it is deleted if it was not used.
1226  }
1227  }
1228 
1229  if (VP1Msg::debug()) si->dump();
1230 
1231  VP1Msg::messageDebug("volumetreemodel->addSubSystem...");
1232  volumetreemodel->addSubSystem( si->flag, si->vollist );
1233 
1234  //NB: We let the destructor of volumetreemodel take care of deleting
1235  //our (top) volume handles, since it has to keep a list of them
1236  //anyway.
1237 
1238 
1239  //Perform auto expansion of all ether volumes (needed for muon dead material):
1240  VP1Msg::messageDebug("Perform auto expansion of all ether volumes (needed for muon dead material)");
1241  VolumeHandle::VolumeHandleListItr it, itE(si->vollist.end());
1242  //int idx=0; // for debug
1243  for (it = si->vollist.begin(); it!=itE; ++it){
1244  //VP1Msg::messageDebug("\nexpanding idx: " + QString::number(++idx));
1245  (*it)->expandMothersRecursivelyToNonEther();
1246  //VP1Msg::messageDebug("expand DONE.");
1247  }
1248 
1249 
1250  VP1Msg::messageDebug("addChild...");
1253  si->soswitch->addChild(subsystemsep);
1254  si->soswitch->enableNotify(save);
1255  if (save)
1256  si->soswitch->touch();
1257  VP1Msg::messageDebug("END of VP1GeometrySystem::Imp::buildSystem() " );
1258 }

◆ catchKbdState()

void VP1GeometrySystem::Imp::catchKbdState ( void *  userData,
SoEventCallback *  CB 
)
static

Definition at line 505 of file VP1GeometrySystem.cxx.

505  {
507  if (This)
508  This->kbEvent = static_cast<const SoKeyboardEvent *>(CB->getEvent());
509 }

◆ chamberPVToMuonSubSystemInfo()

VP1GeometrySystem::Imp::SubSystemInfo * VP1GeometrySystem::Imp::chamberPVToMuonSubSystemInfo ( const GeoPVConstLink &  chamberPV)

Definition at line 1746 of file VP1GeometrySystem.cxx.

1747 {
1748  VP1Msg::messageDebug("VP1GeometrySystem::Imp::chamberPVToMuonSubSystemInfo()");
1749 
1750  std::string name = chamberPV->getLogVol()->getName();
1751 
1752  VP1Msg::messageDebug("name: " + QString::fromStdString(name) );
1753 
1754  for (SubSystemInfo * subsys : subsysInfoList) {
1755  if (!subsys->hasMuonChambers())
1756  continue;
1757  if (subsys->childrenRegExpNameCompatible(name)) {
1758  //NB: We assume once again that all muon chambers are to be
1759  //compared with childrenRegExp.
1760  return subsys;
1761  }
1762  }
1763  return 0;
1764 }

◆ changeStateOfVisibleNonStandardVolumesRecursively()

void VP1GeometrySystem::Imp::changeStateOfVisibleNonStandardVolumesRecursively ( VolumeHandle handle,
VP1GeoFlags::VOLSTATE  target 
)

Definition at line 2005 of file VP1GeometrySystem.cxx.

2006 {
2008  if (handle->isAttached()) {
2009  //The volume is visible, so ignore daughters
2010  if (handle->isInitialisedAndHasNonStandardShape()) {
2011  if (target!=VP1GeoFlags::EXPANDED||handle->nChildren()>0)
2012  handle->setState(target);
2013  }
2014  return;
2015  } else if (handle->state()==VP1GeoFlags::ZAPPED)
2016  return;
2017  //Must be expanded: Let us call on any (initialised) children instead.
2018  if (handle->nChildren()==0||!handle->childrenAreInitialised())
2019  return;
2021  for(;it!=itE;++it)
2023 
2024 }

◆ createPathExtras()

void VP1GeometrySystem::Imp::createPathExtras ( const VolumeHandle volhandle,
QString &  prefix,
QStack< QString > &  entries 
)

Definition at line 1406 of file VP1GeometrySystem.cxx.

1407 {
1408  switch(volhandle->subsystem()){
1409  case VP1GeoFlags::Pixel: {
1410  prefix = QString("Pixel::");
1411  entries.push("IDET::IDET");
1413  entries.push("ITkPixel::ITkPixel");
1414  else
1415  entries.push("Pixel::Pixel");
1416  return;
1417  }
1418  case VP1GeoFlags::SCT:{
1419  prefix = QString("SCT::");
1420  entries.push("IDET::IDET");
1422  entries.push("ITkStrip::ITkStrip");
1423  else
1424  entries.push("SCT::SCT");
1425  return;
1426  }
1427  case VP1GeoFlags::TRT:{
1428  prefix = QString("TRT::");
1429  entries.push("IDET::IDET");
1430  entries.push("TRT::TRT");
1431  return;
1432  }
1434  prefix = QString("InDetServMat::");
1435  entries.push("IDET::IDET");
1436  return;
1437  }
1438  case VP1GeoFlags::LAr:{
1439  prefix = QString("LArMgr::");
1440  entries.push("CALO::CALO");
1441  entries.push("LArMgr::LArMgr");
1442  return;
1443  }
1444  case VP1GeoFlags::Tile:{
1445  prefix = QString("Tile::");
1446  entries.push("CALO::CALO");
1447  entries.push("Tile::Tile");
1448  return;
1449  }
1454  case VP1GeoFlags::MuonFeet:
1463  prefix = QString("Muon::");
1464  entries.push("MUONQ02::MUONQ02");
1465  entries.push("Muon::MuonSys");
1466  return;
1467  }
1468  case VP1GeoFlags::BeamPipe:{
1469  prefix = QString("BeamPipe::");
1470  entries.push("BeamPipe::BeamPipe");
1471  return;
1472  }
1473  case VP1GeoFlags::None:
1475  case VP1GeoFlags::LUCID:
1476  case VP1GeoFlags::ZDC:
1477  case VP1GeoFlags::ALFA:
1478  case VP1GeoFlags::AFP:
1481  default:{
1482  return;
1483  }
1484  }
1485 }

◆ ensureInitPV2MuonStationMap()

void VP1GeometrySystem::Imp::ensureInitPV2MuonStationMap ( )

Definition at line 2189 of file VP1GeometrySystem.cxx.

2190 {
2191  if (pv2MuonStationInit) {
2192  VP1Msg::messageDebug("MuonStation map already initialized.");
2193  return;
2194  }
2195  pv2MuonStationInit = true;
2196  theclass->messageVerbose("Initializing physical volume link -> MuonStation map.");
2197 
2199  if (!mgr) {
2200  VP1Msg::message("WARNING: Could not get muon detector manager to construct volume -> muon station map!");
2201  return;
2202  }
2203  if (mgr->nMdtRE()) {
2204  for (auto det_el = mgr->mdtIdHelper()->detectorElement_begin();
2205  det_el != mgr->mdtIdHelper()->detectorElement_end(); ++det_el) {
2206  updatePV2MuonStationMap(mgr->getMdtReadoutElement(*det_el));
2207  }
2208  }
2209  if (mgr->nRpcRE()) {
2210  for (auto det_el = mgr->rpcIdHelper()->detectorElement_begin();
2211  det_el != mgr->rpcIdHelper()->detectorElement_end(); ++det_el) {
2212  updatePV2MuonStationMap(mgr->getRpcReadoutElement(*det_el));
2213  }
2214  }
2215  if (mgr->nCscRE()) {
2216  for (auto det_el = mgr->cscIdHelper()->detectorElement_begin();
2217  det_el != mgr->cscIdHelper()->detectorElement_end(); ++det_el) {
2218  updatePV2MuonStationMap(mgr->getCscReadoutElement(*det_el));
2219  }
2220  }
2221  if (mgr->nTgcRE()) {
2222  for (auto det_el = mgr->tgcIdHelper()->detectorElement_begin();
2223  det_el != mgr->tgcIdHelper()->detectorElement_end(); ++det_el) {
2224  updatePV2MuonStationMap(mgr->getTgcReadoutElement(*det_el));
2225  }
2226  }
2227 
2228  VP1Msg::messageDebug("Initialised physical volume link -> MuonStation map. Found "+str(pv2MuonStation.size())+" stations.");
2229 
2230 }

◆ ensureInitVisAttributes()

void VP1GeometrySystem::Imp::ensureInitVisAttributes ( )
inline

Definition at line 236 of file VP1GeometrySystem.cxx.

◆ exclusiveMass()

double VP1GeometrySystem::Imp::exclusiveMass ( const PVConstLink &  pv)
static

Definition at line 1261 of file VP1GeometrySystem.cxx.

1261  {
1262  const GeoLogVol* lv = pv->getLogVol();
1263  const GeoMaterial *material = lv->getMaterial();
1264  double density = material->getDensity();
1265  return density*volume(pv);
1266 }

◆ expandAllChildren()

void VP1GeometrySystem::Imp::expandAllChildren ( VolumeHandle h,
bool  isPixel,
bool  brl,
bool  ecA,
bool  ecC 
)

Definition at line 2478 of file VP1GeometrySystem.cxx.

2478  {
2479 
2480  if (h->nChildren()==0) {
2481  if (isPixel and (ecA or ecC)) {
2482  float translation_x, translation_y, translation_z, rotaxis_x, rotaxis_y, rotaxis_z, rotangle_radians;
2483  VP1LinAlgUtils::decodeTransformation( h->getGlobalTransformToVolume(),
2484  translation_x, translation_y, translation_z,
2485  rotaxis_x, rotaxis_y, rotaxis_z, rotangle_radians );
2486  if ((!ecA || !ecC) && ((ecA and (translation_z<0.)) or (ecC and (translation_z>0.) ))) {
2487  h->setState(VP1GeoFlags::ZAPPED);
2488  return;
2489  }
2490  }
2491 
2492  // check if you have to select it
2493  std::vector< std::string > selected_volumes = {};
2494  if (brl) {
2495  if (isPixel) {
2496  selected_volumes.push_back("InnerBarrelSingleMod_Sensor");
2497  selected_volumes.push_back("InnerBarrelQuadMod_Sensor");
2498  selected_volumes.push_back("OuterBarrelQuadMod_Sensor");
2499  selected_volumes.push_back("LongeronCoolingTube");
2500  selected_volumes.push_back("InnerPixBarrelSupport_Stave");
2501  selected_volumes.push_back("InnerPixBarrelSupport_Stave1");
2502  selected_volumes.push_back("LongeronCornerBase");
2503  selected_volumes.push_back("LongeronCornerEnd");
2504  selected_volumes.push_back("LongeronTrussWall");
2505  selected_volumes.push_back("LongeronCapBase");
2506  selected_volumes.push_back("LongeronTopCap");
2507 
2508  } else {
2509  selected_volumes.push_back("BRLSensorSS");
2510  selected_volumes.push_back("BRLSensorMS");
2511  selected_volumes.push_back("B_HybridPCB");
2512  selected_volumes.push_back("DCDC_PCB");
2513  selected_volumes.push_back("DCDC_Box");
2514  selected_volumes.push_back("Bex_HybridPCB_near");
2515  selected_volumes.push_back("Bex_HybridPCB_far");
2516  }
2517  }
2518  if (ecA or ecC) {
2519  if (isPixel) {
2520  selected_volumes.push_back("InclinedQuadMod_Sensor");
2521  selected_volumes.push_back("InnerRingSingleMod_Sensor");
2522  selected_volumes.push_back("InnerEndcapQuadMod_Sensor");
2523  selected_volumes.push_back("OuterEndcapQuadMod_Sensor");
2524  selected_volumes.push_back("L2HalfRingCoolingPipe");
2525  selected_volumes.push_back("L3HalfRingCoolingPipe");
2526  selected_volumes.push_back("L4endcapcoolingpipe");
2527  selected_volumes.push_back("InclL2HalfShell");
2528  selected_volumes.push_back("InclL2Support");
2529  selected_volumes.push_back("InclL3HalfShell");
2530  selected_volumes.push_back("InclL3Support");
2531  selected_volumes.push_back("InclL4HalfShell");
2532  selected_volumes.push_back("InclL4Support");
2533  selected_volumes.push_back("InnerPixEndcap_CoupledRingSupport");
2534  selected_volumes.push_back("InnerPixEndcap_IntermediateRingSupport");
2535  selected_volumes.push_back("InnerPixEndcap_L1RingSupport");
2536  selected_volumes.push_back("L2HalfRingCarbonFoamInner");
2537  selected_volumes.push_back("L2HalfRingCarbonFoamOuter");
2538  selected_volumes.push_back("L2HalfRingFaceSheet");
2539  selected_volumes.push_back("L3HalfRingCarbonFoamInner");
2540  selected_volumes.push_back("L3HalfRingCarbonFoamOuter");
2541  selected_volumes.push_back("L3HalfRingFaceSheet");
2542  selected_volumes.push_back("L4endcapinnerCarbonFoam");
2543  selected_volumes.push_back("L4endcapouterCarbonFoam");
2544  selected_volumes.push_back("L4endcapFaceSheet");
2545  selected_volumes.push_back("L2HalfShell");
2546  selected_volumes.push_back("L3HalfShell");
2547  selected_volumes.push_back("L4HalfShell");
2548  } else {
2549  selected_volumes.push_back("ECSensor0");
2550  selected_volumes.push_back("ECSensor1");
2551  selected_volumes.push_back("ECSensor2");
2552  selected_volumes.push_back("ECSensor3");
2553  selected_volumes.push_back("ECSensor4");
2554  selected_volumes.push_back("ECSensor5");
2555  selected_volumes.push_back("ECSensorBack0");
2556  selected_volumes.push_back("ECSensorBack1");
2557  selected_volumes.push_back("ECSensorBack2");
2558  selected_volumes.push_back("ECSensorBack3");
2559  selected_volumes.push_back("ECSensorBack4");
2560  selected_volumes.push_back("ECSensorBack5");
2561  }
2562  }
2563 
2564  std::string name = h->getName().toStdString();
2565 
2566  if (not isPixel and (ecA or ecC)) {
2567  // check servises in the endcap
2568  if (name.starts_with("ECHybrid") or name.starts_with("DCDC_EC"))
2569  return;
2570  }
2571 
2572  if (std::find(selected_volumes.begin(), selected_volumes.end(), name) == selected_volumes.end()) {
2573  h->setState(VP1GeoFlags::ZAPPED);
2574  return;
2575  }
2576  return;
2577  } else if (not isPixel and (h->getName().toStdString()=="PetalCore" or
2578  h->getName().toStdString()=="StaveCoreSS" or
2579  h->getName().toStdString() =="StaveCoreMS")) {
2580  return;
2581  }
2582  h->initialiseChildren();
2583 
2584  h->setState(VP1GeoFlags::EXPANDED);
2585  VolumeHandle::VolumeHandleListItr it(h->childrenBegin()),itE(h->childrenEnd());
2586  for (;it!=itE;++it) {
2587  expandAllChildren(*it, isPixel, brl, ecA, ecC);
2588  }
2589 }

◆ expandVisibleVolumesRecursively()

void VP1GeometrySystem::Imp::expandVisibleVolumesRecursively ( VolumeHandle handle,
const QRegExp &  selregexp,
bool  bymatname 
)

Definition at line 2095 of file VP1GeometrySystem.cxx.

2096 {
2097  if (handle->state()==VP1GeoFlags::ZAPPED)
2098  return;
2099  if (handle->state()==VP1GeoFlags::CONTRACTED) {
2100  //See if we match (and have children) - if so, update state.
2101  if (handle->nChildren()>0
2102  && selregexp.exactMatch(bymatname?QString(handle->geoMaterial()->getName().c_str()):handle->getName())) {
2104  }
2105  return;
2106  }
2107  //Must be expanded: Let us call on any (initialised) children instead.
2108  if (handle->nChildren()==0||!handle->childrenAreInitialised())
2109  return;
2111  for(;it!=itE;++it)
2112  expandVisibleVolumesRecursively(*it,selregexp,bymatname);
2113 }

◆ getClosestCSCOrTGCEdgeDirections()

std::pair< SbVec3f, SbVec3f > VP1GeometrySystem::Imp::getClosestCSCOrTGCEdgeDirections ( const SbVec3f &  cameraDirection,
VolumeHandle chamberhandle 
)

Definition at line 1957 of file VP1GeometrySystem.cxx.

1959 {
1960  // It turns out that the correct chamber directions for CSC/TGC chambers is the y and z axes.
1961  std::vector<SbVec3f> directions;
1962  directions.push_back(SbVec3f(0.0f,1.0f,0.0f));
1963  directions.push_back(SbVec3f(0.0f,-1.0f,0.0f));
1964  directions.push_back(SbVec3f(0.0f,0.0f,1.0f));
1965  directions.push_back(SbVec3f(0.0f,0.0f,-1.0f));
1966 
1967  directions.push_back(SbVec3f(1.0f,0.0f,0.0f));
1968  directions.push_back(SbVec3f(-1.0f,0.0f,0.0f));
1969 
1970  //Get local->global transformation for chamber:
1971  SbVec3f translation, scale;
1972  SbRotation rotation, scalerotation;
1973  chamberhandle->getGlobalTransformToVolume().getTransform(translation,rotation,scale,scalerotation);
1974 
1975  //Put directions into global coordinates:
1976  for (unsigned i = 0; i<directions.size();++i)
1977  rotation.multVec(directions[i],directions[i]);
1978 
1979  //Find the one closest to the camera:
1980  SbVec3f chamberDir(-cameraDirection);
1981  float smallestcosangle(1.1);
1982  for (unsigned i = 0; i<directions.size();++i) {
1983  if (directions.at(i).dot(cameraDirection)<smallestcosangle) {
1984  smallestcosangle = directions.at(i).dot(cameraDirection);
1985  chamberDir = directions.at(i);
1986  }
1987  }
1988 
1989  //cameraUpDirection should always (0,1,0) transformed to global
1990  //coordinates:
1991  SbVec3f chamberUp;
1992  float x,y,z;
1993  chamberDir.getValue(x,y,z);
1994  if (x!=0.0f) {
1995  rotation.multVec(SbVec3f(0.0f,1.0f,0.0f),chamberUp);
1996  } else {
1997  rotation.multVec(SbVec3f(1.0f,0.0f,0.0f),chamberUp);
1998  }
1999 
2000  //Done:
2001  return std::pair<SbVec3f,SbVec3f>(chamberDir,chamberUp);
2002 }

◆ getClosestMuonDriftTubeDirections()

std::pair< SbVec3f, SbVec3f > VP1GeometrySystem::Imp::getClosestMuonDriftTubeDirections ( const SbVec3f &  cameraDirection,
const SbVec3f &  cameraUpDirection,
VolumeHandle chamberhandle 
)

Definition at line 1906 of file VP1GeometrySystem.cxx.

1909 {
1910  //We assume chamberhandle is to an MDT station (barrel or endcap).
1911  SbVec3f closesttubedir(cameraDirection);
1912  SbVec3f closesttubeupvec(cameraUpDirection);
1913  float smallestcosangle(1.1);
1914 
1915  //Barrel/Endcap MDT. Expand two levels and then check the individual tubes.
1916  chamberhandle->initialiseChildren();
1917  VolumeHandle::VolumeHandleListItr itch(chamberhandle->childrenBegin()), itchE(chamberhandle->childrenEnd());
1918  for (;itch!=itchE;++itch) {
1919  //Any daughter with the name "Ded..." should be ignored
1920  std::string name1 = (*itch)->getNameStdString();
1921  if (name1.size()>2&&name1[0]=='D'&&name1[1]=='e'&&name1[2]=='d')
1922  continue;
1923 
1924  (*itch)->initialiseChildren();
1925  VolumeHandle::VolumeHandleListItr itch2((*itch)->childrenBegin()), itch2E((*itch)->childrenEnd());
1926  //Various variables needed to deal with each tube:
1927  const SbVec3f unitz(0.0f,0.0f,1.0f);
1928  const SbVec3f unity(0.0f,1.0f,0.0f);
1929  SbVec3f tubeglob;
1930  SbVec3f translation, scale;
1931  SbRotation rotation, scalerotation;
1932 
1933  for (;itch2!=itch2E;++itch2) {
1934  if ((*itch2)->getNameStdString()=="MDTDriftWall") {
1935  //OK, we got the handle of a tube (wall). Lets find its direction!
1936  //->We assume that the tube, in its local coordinate system, is aligned with the z axis.
1937  //Get global rotation of tube:
1938  (*itch2)->getGlobalTransformToVolume().getTransform(translation,rotation,scale,scalerotation);
1939  rotation.multVec (unitz, tubeglob);
1940  if (tubeglob.dot(cameraDirection)<smallestcosangle) {
1941  smallestcosangle = tubeglob.dot(cameraDirection);
1942  closesttubedir = tubeglob;
1943  rotation.multVec(unity, closesttubeupvec);
1944  }
1945  if (tubeglob.dot(-cameraDirection)<smallestcosangle) {
1946  smallestcosangle = tubeglob.dot(-cameraDirection);
1947  closesttubedir = -tubeglob;
1948  rotation.multVec(unity, closesttubeupvec);
1949  }
1950  }
1951  }
1952  }
1953  return std::pair<SbVec3f,SbVec3f>(closesttubedir,closesttubeupvec);
1954 }

◆ iconifyVisibleVolumesRecursively()

void VP1GeometrySystem::Imp::iconifyVisibleVolumesRecursively ( VolumeHandle handle,
const QRegExp &  selregexp,
bool  bymatname 
)

Definition at line 2116 of file VP1GeometrySystem.cxx.

2117 {
2118  if (handle->state()==VP1GeoFlags::ZAPPED)
2119  return;
2120 
2121  if (handle->state()==VP1GeoFlags::CONTRACTED) {
2122  //See if we match -- if so, update state.
2123  if( selregexp.exactMatch(bymatname?QString(handle->geoMaterial()->getName().c_str()):handle->getName())) {
2124  handle->setState(VP1GeoFlags::ZAPPED);
2125  }
2126  return;
2127  }
2128  //Must be expanded: Let us call on any (initialised) children instead.
2129  if (handle->nChildren()==0||!handle->childrenAreInitialised())
2130  return;
2132  for(;it!=itE;++it)
2133  iconifyVisibleVolumesRecursively(*it,selregexp,bymatname);
2134 }

◆ inclusiveMass()

double VP1GeometrySystem::Imp::inclusiveMass ( const PVConstLink &  pv)
static

Definition at line 1278 of file VP1GeometrySystem.cxx.

1278  {
1279 
1280  const GeoLogVol* lv = pv->getLogVol();
1281  const GeoMaterial *material = lv->getMaterial();
1282  double density = material->getDensity();
1283 
1284  double mass = exclusiveMass(pv);
1285 
1286  GeoVolumeCursor av(pv);
1287  while (!av.atEnd()) {
1288  mass += inclusiveMass(av.getVolume());
1289  mass -= volume(av.getVolume())*density;
1290  av.next();
1291  }
1292 
1293  return mass;
1294 }

◆ showITkPixelModules()

void VP1GeometrySystem::Imp::showITkPixelModules ( VolumeHandle h,
bool  brl,
bool  ecA,
bool  ecC 
)

Definition at line 2591 of file VP1GeometrySystem.cxx.

2592 {
2593  VP1Msg::messageDebug("VP1GeometrySystem::Imp::showITkPixelModules()");
2594  h->initialiseChildren();
2595  VolumeHandle::VolumeHandleListItr it(h->childrenBegin()),itE(h->childrenEnd());
2596  // std::cout << "Processing volume with name = " << h->getName().toStdString() << " and " << h->nChildren() << " children..." << std::endl;
2597  for (;it!=itE;++it) {
2598  expandAllChildren(*it, true, brl, ecA, ecC);
2599  }
2600 }

◆ showITkStripModules()

void VP1GeometrySystem::Imp::showITkStripModules ( VolumeHandle h,
bool  brl,
bool  ecA,
bool  ecC 
)

Definition at line 2603 of file VP1GeometrySystem.cxx.

2604 {
2605  VP1Msg::messageDebug("VP1GeometrySystem::Imp::showITkStripModules()");
2606  h->initialiseChildren();
2607  VolumeHandle::VolumeHandleListItr it(h->childrenBegin()),itE(h->childrenEnd());
2608  // std::cout << "Processing volume with name = " << h->getName().toStdString() << " and " << h->nChildren() << " children..." << std::endl;
2609  for (;it!=itE;++it) {
2610  if (brl and (*it)->hasName("ITkStrip_Barrel")) {
2611  expandAllChildren(*it, false, brl, ecA, ecC);
2612  }
2613  else if (ecA and (*it)->hasName("ITkStrip_ForwardPlus")) {
2614  expandAllChildren(*it, false, brl, ecA, ecC);
2615  }
2616  else if (ecC and (*it)->hasName("ITkStrip_ForwardMinus")) {
2617  expandAllChildren(*it, false, brl, ecA, ecC);
2618  } else
2619  (*it)->setState(VP1GeoFlags::ZAPPED);
2620  }
2621 }

◆ showPixelModules()

void VP1GeometrySystem::Imp::showPixelModules ( VolumeHandle h)

Definition at line 2443 of file VP1GeometrySystem.cxx.

2444 {
2445  VP1Msg::messageDebug("VP1GeometrySystem::Imp::showPixelModules()");
2446  h->initialiseChildren();
2447  VolumeHandle::VolumeHandleListItr it(h->childrenBegin()),itE(h->childrenEnd());
2448  for (;it!=itE;++it) {
2449  if ((*it)->hasName("moduleLog")) {
2450  (*it)->setState(VP1GeoFlags::ZAPPED);
2451  (*it)->contractDaughtersRecursively();
2452  (*it)->initialiseChildren();
2453  VolumeHandle::VolumeHandleListItr itMod((*it)->childrenBegin()),itModE((*it)->childrenEnd());
2454  for (;itMod!=itModE;++itMod) {
2455  if ((*itMod)->getName().startsWith("si"))
2456  (*itMod)->setState(VP1GeoFlags::CONTRACTED);
2457  else
2458  (*itMod)->setState(VP1GeoFlags::ZAPPED);
2459  }
2460  (*it)->setState(VP1GeoFlags::EXPANDED);
2461  continue;
2462  }
2463  if ((*it)->hasName("pigtailLog")||(*it)->hasName("omegaLog")) {
2464  (*it)->setState(VP1GeoFlags::ZAPPED);
2465  (*it)->contractDaughtersRecursively();
2466  continue;
2467  }
2468  if ((*it)->nChildren()<1) {
2469  (*it)->setState(VP1GeoFlags::ZAPPED);
2470  continue;
2471  }
2472  (*it)->setState(VP1GeoFlags::ZAPPED);
2473  showPixelModules(*it);
2474  (*it)->setState(VP1GeoFlags::EXPANDED);
2475  }
2476 }

◆ showSCTBarrelModules()

void VP1GeometrySystem::Imp::showSCTBarrelModules ( VolumeHandle h)

Definition at line 2624 of file VP1GeometrySystem.cxx.

2625 {
2626  VP1Msg::messageDebug("VP1GeometrySystem::Imp::showSCTBarrelModules()");
2627  h->initialiseChildren();
2628  VolumeHandle::VolumeHandleListItr it(h->childrenBegin()),itE(h->childrenEnd());
2629  for (;it!=itE;++it) {
2630  if ((*it)->getName().startsWith("Layer")) {
2631  (*it)->setState(VP1GeoFlags::ZAPPED);
2632  (*it)->initialiseChildren();
2633  VolumeHandle::VolumeHandleListItr itLay((*it)->childrenBegin()),itLayE((*it)->childrenEnd());
2634  for (;itLay!=itLayE;++itLay) {
2635  if ((*itLay)->getName().endsWith("Active")&&(*itLay)->getName().startsWith("Layer")) {
2636  (*itLay)->setState(VP1GeoFlags::ZAPPED);
2637  (*itLay)->initialiseChildren();
2638  VolumeHandle::VolumeHandleListItr itActLay((*itLay)->childrenBegin()),itActLayE((*itLay)->childrenEnd());
2639  for (;itActLay!=itActLayE;++itActLay) {
2640  if ((*itActLay)->getName().startsWith("Ski")) {
2641  (*itActLay)->setState(VP1GeoFlags::ZAPPED);
2642  (*itActLay)->initialiseChildren();
2643  VolumeHandle::VolumeHandleListItr itSki((*itActLay)->childrenBegin()),itSkiE((*itActLay)->childrenEnd());
2644  for (;itSki!=itSkiE;++itSki) {
2645  //Ends with "Envelope": open, otherwise zap. Of those, zap all without "Sensor" in the name.
2646  if ((*itSki)->hasName("Module")) {
2647  //Open and zap those without "Sensor" in the name:
2648  (*itSki)->setState(VP1GeoFlags::ZAPPED);
2649  (*itSki)->initialiseChildren();
2650  VolumeHandle::VolumeHandleListItr itMod((*itSki)->childrenBegin()),itModE((*itSki)->childrenEnd());
2651  for (;itMod!=itModE;++itMod) {
2652  if ((*itMod)->getName().contains("Envelope")) {
2653  (*itMod)->setState(VP1GeoFlags::ZAPPED);
2654  (*itMod)->initialiseChildren();
2655  VolumeHandle::VolumeHandleListItr itEnv((*itMod)->childrenBegin()),itEnvE((*itMod)->childrenEnd());
2656  for(;itEnv!=itEnvE;++itEnv) {
2657  if ((*itEnv)->getName().contains("Sensor"))
2658  (*itEnv)->reset();
2659  else
2660  (*itEnv)->setState(VP1GeoFlags::ZAPPED);
2661  }
2662  (*itMod)->setState(VP1GeoFlags::EXPANDED);
2663  } else {
2664  (*itMod)->setState(VP1GeoFlags::ZAPPED);
2665  }
2666  }
2667  (*itSki)->setState(VP1GeoFlags::EXPANDED);
2668  } else {
2669  (*itSki)->setState(VP1GeoFlags::ZAPPED);
2670  }//end if-elsi "Envelope"
2671  }//endfor itSki
2672  (*itActLay)->setState(VP1GeoFlags::EXPANDED);
2673  } else {
2674  (*itActLay)->setState(VP1GeoFlags::ZAPPED);
2675  }//end if-else "Ski"
2676  }
2677  (*itLay)->setState(VP1GeoFlags::EXPANDED);
2678  } else {
2679  (*itLay)->setState(VP1GeoFlags::ZAPPED);
2680  (*itLay)->contractDaughtersRecursively();
2681  }
2682  }
2683  (*it)->setState(VP1GeoFlags::EXPANDED);
2684  } else {
2685  (*it)->setState(VP1GeoFlags::ZAPPED);
2686  (*it)->contractDaughtersRecursively();
2687  }
2688  }
2689 }

◆ showSCTEndcapModules()

void VP1GeometrySystem::Imp::showSCTEndcapModules ( VolumeHandle h)

Definition at line 2692 of file VP1GeometrySystem.cxx.

2693 {
2694  VP1Msg::messageDebug("VP1GeometrySystem::Imp::showSCTEndcapModules()");
2695  h->initialiseChildren();
2696  VolumeHandle::VolumeHandleListItr it(h->childrenBegin()),itE(h->childrenEnd());
2697  for (;it!=itE;++it) {
2698  if ((*it)->getName().startsWith("Wheel")) {
2699  (*it)->setState(VP1GeoFlags::ZAPPED);
2700  (*it)->initialiseChildren();
2701  VolumeHandle::VolumeHandleListItr itWhl((*it)->childrenBegin()),itWhlE((*it)->childrenEnd());
2702  for (;itWhl!=itWhlE;++itWhl) {
2703  if ((*itWhl)->getName().startsWith("Ring")) {
2704  (*itWhl)->setState(VP1GeoFlags::ZAPPED);
2705  (*itWhl)->initialiseChildren();
2706  VolumeHandle::VolumeHandleListItr itRng((*itWhl)->childrenBegin()),itRngE((*itWhl)->childrenEnd());
2707  for (;itRng!=itRngE;++itRng) {
2708  if ((*itRng)->getName().startsWith("FwdModule")) {
2709  (*itRng)->setState(VP1GeoFlags::ZAPPED);
2710  (*itRng)->initialiseChildren();
2711  VolumeHandle::VolumeHandleListItr itMod((*itRng)->childrenBegin()),itModE((*itRng)->childrenEnd());
2712  for(;itMod!=itModE;++itMod) {
2713  if ((*itMod)->getName().startsWith("ECSensor")) {
2714  (*itMod)->reset();
2715  } else {
2716  (*itMod)->setState(VP1GeoFlags::ZAPPED);
2717  }
2718  }
2719  (*itRng)->setState(VP1GeoFlags::EXPANDED);
2720  } else {
2721  (*itRng)->setState(VP1GeoFlags::ZAPPED);
2722  }
2723  }
2724  (*itWhl)->setState(VP1GeoFlags::EXPANDED);
2725  } else {
2726  (*itWhl)->setState(VP1GeoFlags::ZAPPED);
2727  (*itWhl)->contractDaughtersRecursively();
2728  }
2729  }
2730  (*it)->setState(VP1GeoFlags::EXPANDED);
2731  } else {
2732  (*it)->setState(VP1GeoFlags::ZAPPED);
2733  (*it)->contractDaughtersRecursively();
2734  }
2735  }
2736 }

◆ stationInfo()

QStringList VP1GeometrySystem::Imp::stationInfo ( const MuonGM::MuonStation station)

Definition at line 2233 of file VP1GeometrySystem.cxx.

2234 {
2235  QStringList l;
2236  if (!station) {
2237  l <<"Null ptr!";
2238  return l;
2239  }
2240  l << "Name: "+str(station->getStationName().c_str());
2241  l << "(Eta,Phi) index: ("+str(station->getEtaIndex())+", "+str(station->getPhiIndex())+")";
2242  return l;
2243 }

◆ updatePV2MuonStationMap()

void VP1GeometrySystem::Imp::updatePV2MuonStationMap ( const MuonGM::MuonReadoutElement elem)

Definition at line 2175 of file VP1GeometrySystem.cxx.

2176 {
2177  if (!elem)
2178  return;
2179  GeoPVConstLink pvlink = elem->parentStationPV();
2180  const MuonGM::MuonStation * station = elem->parentMuonStation();
2181  if (!station) {
2182  theclass->message("WARNING: Ignored null station pointer");
2183  return;
2184  }
2185  pv2MuonStation[pvlink] = station;
2186 }

◆ updateTouchedMuonChamber()

void VP1GeometrySystem::Imp::updateTouchedMuonChamber ( VolumeHandle chamberhandle)

Definition at line 1621 of file VP1GeometrySystem.cxx.

1622 {
1623  std::string stationname = chamberhandle->getNameStdString();
1624  if (stationname.empty()) {
1625  theclass->message("Warning: Asked to handle muon chamber (station) with empty name!");
1626  return;
1627  }
1628  //NB: For efficiency we make sure that mothers are ZAPPED while
1629  //changing state of their children.
1630 
1631  //options:
1632 
1633  VP1GeoFlags::MuonChamberAdaptionStyleFlags f(controller->muonChamberAdaptionStyle());
1634  bool option_openmdtchambers = f & VP1GeoFlags::OpenMDTChambers;
1635  bool option_hidetubes = f & VP1GeoFlags::HideMDTTubes;
1636  bool option_hiderpcvolumes = f & VP1GeoFlags::HideRPCVolumes;
1637  bool option_opencscchambers = f & VP1GeoFlags::OpenCSCChambers;
1638  bool option_opentgcchambers = f & VP1GeoFlags::OpenTGCChambers;
1639 
1640  char firstletter = stationname[0];
1641  std::string name1,name2;
1642  if (firstletter=='E' || firstletter =='B') {
1643  //Barrel/Endcap MDT.
1644  // If we are to open it, we expand two levels.
1645  // -> and possibly zap the tubes/rpc volumes also according to options.
1646  if (option_openmdtchambers) {
1647  chamberhandle->setState(VP1GeoFlags::ZAPPED);
1648  chamberhandle->contractDaughtersRecursively();
1649  chamberhandle->initialiseChildren();
1650  VolumeHandle::VolumeHandleListItr itch(chamberhandle->childrenBegin()), itchE(chamberhandle->childrenEnd());
1651  for (;itch!=itchE;++itch) {
1652  //Any daughter with the name "Ded..." should be zapped,
1653  //otherwise we loop over the children to zap tubes/rpc vols.
1654  (*itch)->setState(VP1GeoFlags::ZAPPED);
1655  name1 = (*itch)->getNameStdString();
1656  if (name1.size()>2&&name1[0]=='D'&&name1[1]=='e'&&name1[2]=='d')
1657  continue;
1658 
1659  (*itch)->initialiseChildren();
1660  VolumeHandle::VolumeHandleListItr itch2((*itch)->childrenBegin()), itch2E((*itch)->childrenEnd());
1661  for (;itch2!=itch2E;++itch2) {
1662  //Any of these daughters with the name
1663  //"MDTDriftWall"/"Rpc..."/"RPC..."/"Ded..." should be
1664  //zapped (according to options). Others should be contracted.
1665  name2 = (*itch2)->getNameStdString();
1666  bool zap = false;
1667  if (option_hidetubes&&name2=="MDTDriftWall") {
1668  zap = true;
1669  } else if (name2.size()>2&&name2[0]=='R'&&((name2[1]=='p'&&name2[2]=='c')||(name2[1]=='P'&&name2[2]=='C'))) {
1670  zap = (option_hiderpcvolumes||name2!="Rpclayer");
1671  } else if (name2.size()>2&&name2[0]=='D'&&name2[1]=='e'&&name2[2]=='d') {
1672  zap = true;
1673  }
1674  (*itch2)->setState(zap?VP1GeoFlags::ZAPPED:VP1GeoFlags::CONTRACTED);
1675  }
1676  (*itch)->setState(VP1GeoFlags::EXPANDED);
1677  }
1678  chamberhandle->setState(VP1GeoFlags::EXPANDED);
1679  } else {
1680  chamberhandle->reset();
1681  }
1682  } else {
1683  if (firstletter=='C') {
1684  //CSC: We either contract completely or expand once + zap "CscArCO2" + zap spacers
1685  chamberhandle->setState(VP1GeoFlags::ZAPPED);
1686  chamberhandle->contractDaughtersRecursively();//To put into default state
1687  if (option_opencscchambers) {
1688  //We must zap spacers, and otherwise expand down three levels and zap all "CscArCO2":
1689  chamberhandle->initialiseChildren();
1690  VolumeHandle::VolumeHandleListItr itch(chamberhandle->childrenBegin()), itchE(chamberhandle->childrenEnd());
1691  for (;itch!=itchE;++itch) {
1692  if ((*itch)->hasName("CSCspacer")) {
1693  (*itch)->setState(VP1GeoFlags::ZAPPED);
1694  continue;
1695  }
1696  if ((*itch)->nChildren()<1)
1697  continue;
1698  (*itch)->initialiseChildren();
1699  VolumeHandle::VolumeHandleListItr itch2((*itch)->childrenBegin()), itch2E((*itch)->childrenEnd());
1700  for (;itch2!=itch2E;++itch2) {
1701  if ((*itch2)->nChildren()<1)
1702  continue;
1703  (*itch2)->initialiseChildren();
1704  VolumeHandle::VolumeHandleListItr itch3((*itch2)->childrenBegin()), itch3E((*itch2)->childrenEnd());
1705  for (;itch3!=itch3E;++itch3) {
1706  if ((*itch3)->getNameStdString()=="CscArCO2")
1707  (*itch3)->setState(VP1GeoFlags::ZAPPED);
1708  }
1709  (*itch2)->setState(VP1GeoFlags::EXPANDED);
1710  }
1711  (*itch)->setState(VP1GeoFlags::EXPANDED);
1712  }
1713  chamberhandle->setState(VP1GeoFlags::EXPANDED);
1714  } else {
1715  chamberhandle->setState(VP1GeoFlags::CONTRACTED);
1716  }
1717  } else {
1718  //TGC: If 'open' we expand two levels and zap all gas volumes.
1719  chamberhandle->setState(VP1GeoFlags::ZAPPED);
1720  chamberhandle->contractDaughtersRecursively();//To put into default state
1721  if (option_opentgcchambers) {
1722  //Expand once more and then zap daughters called "muo::TGCGas"
1723  chamberhandle->initialiseChildren();
1724  VolumeHandle::VolumeHandleListItr itch(chamberhandle->childrenBegin()), itchE(chamberhandle->childrenEnd());
1725  for (;itch!=itchE;++itch) {
1726  if ((*itch)->nChildren()<1)
1727  continue;
1728  (*itch)->initialiseChildren();
1729  VolumeHandle::VolumeHandleListItr itch2((*itch)->childrenBegin()), itch2E((*itch)->childrenEnd());
1730  for (;itch2!=itch2E;++itch2) {
1731  if ((*itch2)->getNameStdString()=="muo::TGCGas")
1732  (*itch2)->setState(VP1GeoFlags::ZAPPED);
1733  }
1734  (*itch)->setState(VP1GeoFlags::EXPANDED);
1735  }
1736  chamberhandle->setState(VP1GeoFlags::EXPANDED);
1737  } else {
1738  chamberhandle->setState(VP1GeoFlags::CONTRACTED);
1739  }
1740  }
1741  }
1742  chamberhandle->setMuonChamberDirty(false);
1743 }

◆ volume()

double VP1GeometrySystem::Imp::volume ( const PVConstLink &  pv)
static

Definition at line 1270 of file VP1GeometrySystem.cxx.

1270  {
1271  const GeoLogVol * lv = pv->getLogVol();
1272  const GeoShape *shape = lv->getShape();
1273  return shape->volume();
1274 }

Member Data Documentation

◆ chamberT0s

QList<const std::map<GeoPVConstLink, float>*> VP1GeometrySystem::Imp::chamberT0s

Definition at line 299 of file VP1GeometrySystem.cxx.

◆ controller

GeoSysController* VP1GeometrySystem::Imp::controller

Definition at line 244 of file VP1GeometrySystem.cxx.

◆ detVisAttributes

DetVisAttributes* VP1GeometrySystem::Imp::detVisAttributes

Definition at line 233 of file VP1GeometrySystem.cxx.

◆ initialSubSystemsTurnedOn

VP1GeoFlags::SubSystemFlags VP1GeometrySystem::Imp::initialSubSystemsTurnedOn

Definition at line 242 of file VP1GeometrySystem.cxx.

◆ kbEvent

const SoKeyboardEvent* VP1GeometrySystem::Imp::kbEvent

Definition at line 255 of file VP1GeometrySystem.cxx.

◆ last_appropriatemdtprojections

int VP1GeometrySystem::Imp::last_appropriatemdtprojections

Definition at line 268 of file VP1GeometrySystem.cxx.

◆ m_textSep

SoSeparator* VP1GeometrySystem::Imp::m_textSep

Separator used to hold all visible labels.

Definition at line 274 of file VP1GeometrySystem.cxx.

◆ matVisAttributes

MatVisAttributes* VP1GeometrySystem::Imp::matVisAttributes

Definition at line 234 of file VP1GeometrySystem.cxx.

◆ muonchambers_pv2handles

std::map<PVConstLink,VolumeHandle*> VP1GeometrySystem::Imp::muonchambers_pv2handles

Definition at line 258 of file VP1GeometrySystem.cxx.

◆ phisectormanager

PhiSectorManager* VP1GeometrySystem::Imp::phisectormanager

Definition at line 245 of file VP1GeometrySystem.cxx.

◆ previousAlignedChamberHandle

VolumeHandle* VP1GeometrySystem::Imp::previousAlignedChamberHandle

Definition at line 265 of file VP1GeometrySystem.cxx.

◆ pv2MuonStation

std::map<GeoPVConstLink,const MuonGM::MuonStation*> VP1GeometrySystem::Imp::pv2MuonStation

Definition at line 277 of file VP1GeometrySystem.cxx.

◆ pv2MuonStationInit

bool VP1GeometrySystem::Imp::pv2MuonStationInit

Definition at line 278 of file VP1GeometrySystem.cxx.

◆ restoredTopvolstates

QMap<quint32,QByteArray> VP1GeometrySystem::Imp::restoredTopvolstates

Definition at line 291 of file VP1GeometrySystem.cxx.

◆ sceneroot

SoSeparator* VP1GeometrySystem::Imp::sceneroot

Definition at line 112 of file VP1GeometrySystem.cxx.

◆ sender2ChamberList

std::map<QObject*,std::set<GeoPVConstLink> > VP1GeometrySystem::Imp::sender2ChamberList

Definition at line 260 of file VP1GeometrySystem.cxx.

◆ sonodesep2volhandle

std::map<SoSeparator*,VolumeHandle*> VP1GeometrySystem::Imp::sonodesep2volhandle

Definition at line 114 of file VP1GeometrySystem.cxx.

◆ subsysInfoList

QList<SubSystemInfo*> VP1GeometrySystem::Imp::subsysInfoList

Definition at line 225 of file VP1GeometrySystem.cxx.

◆ theclass

VP1GeometrySystem* VP1GeometrySystem::Imp::theclass

Definition at line 111 of file VP1GeometrySystem.cxx.

◆ volumetreemodel

VolumeTreeModel* VP1GeometrySystem::Imp::volumetreemodel

Definition at line 246 of file VP1GeometrySystem.cxx.

◆ volVisAttributes

VolVisAttributes* VP1GeometrySystem::Imp::volVisAttributes

Definition at line 235 of file VP1GeometrySystem.cxx.


The documentation for this class was generated from the following file:
VP1GeoFlags::MuonBarrelStationInner
@ MuonBarrelStationInner
Definition: VP1GeoFlags.h:42
VP1GeometrySystem::Imp::initialSubSystemsTurnedOn
VP1GeoFlags::SubSystemFlags initialSubSystemsTurnedOn
Definition: VP1GeometrySystem.cxx:242
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
VolumeHandle::isInitialisedAndHasNonStandardShape
bool isInitialisedAndHasNonStandardShape() const
Definition: VolumeHandle.cxx:656
VP1GeometrySystem::Imp::sceneroot
SoSeparator * sceneroot
Definition: VP1GeometrySystem.cxx:112
VP1GeoFlags::ToroidECA
@ ToroidECA
Definition: VP1GeoFlags.h:58
VolumeHandle::reset
void reset()
Definition: VolumeHandle.h:158
VP1GeometrySystem::Imp::chamberT0s
QList< const std::map< GeoPVConstLink, float > * > chamberT0s
Definition: VP1GeometrySystem.cxx:299
VolumeHandle::setMuonChamberDirty
void setMuonChamberDirty(bool)
Definition: VolumeHandle.h:156
ReadCellNoiseFromCool.name1
name1
Definition: ReadCellNoiseFromCool.py:233
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
VP1GeometrySystem::Imp::muonchambers_pv2handles
std::map< PVConstLink, VolumeHandle * > muonchambers_pv2handles
Definition: VP1GeometrySystem.cxx:258
VolumeHandle::subsystem
VP1GeoFlags::SubSystemFlag subsystem() const
Definition: VolumeHandle.cxx:585
VP1GeoFlags::MuonShielding
@ MuonShielding
Definition: VP1GeoFlags.h:62
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
VP1GeoFlags::ALFA
@ ALFA
Definition: VP1GeoFlags.h:57
VP1GeometrySystem::Imp::controller
GeoSysController * controller
Definition: VP1GeometrySystem.cxx:244
VP1GeoFlags::EXPANDED
@ EXPANDED
Definition: VP1GeoFlags.h:88
VP1GeometrySystem::Imp
Definition: VP1GeometrySystem.cxx:94
VolVisAttributes
Definition: VisAttributes.h:71
PhiSectorManager::largeChangesBegin
void largeChangesBegin()
Definition: PhiSectorManager.cxx:492
VP1GeometrySystem::Imp::m_textSep
SoSeparator * m_textSep
Separator used to hold all visible labels.
Definition: VP1GeometrySystem.cxx:274
VolumeHandle::setState
void setState(const VP1GeoFlags::VOLSTATE &state)
Definition: VolumeHandle.cxx:350
VP1GeoFlags::InDetServMat
@ InDetServMat
Definition: VP1GeoFlags.h:37
VP1GeoFlags::ToroidECC
@ ToroidECC
Definition: VP1GeoFlags.h:60
VolumeHandle::geoMaterial
const GeoMaterial * geoMaterial() const
Definition: VolumeHandle.cxx:507
VP1GeoFlags::Pixel
@ Pixel
Definition: VP1GeoFlags.h:34
VP1GeometrySystem::Imp::inclusiveMass
static double inclusiveMass(const PVConstLink &pv)
Definition: VP1GeometrySystem.cxx:1278
VP1GeoFlags::AllMuonChambers
@ AllMuonChambers
Definition: VP1GeoFlags.h:50
VP1GeometrySystem::Imp::phisectormanager
PhiSectorManager * phisectormanager
Definition: VP1GeometrySystem.cxx:245
skel.it
it
Definition: skel.GENtoEVGEN.py:423
VP1GeoFlags::BeamPipe
@ BeamPipe
Definition: VP1GeoFlags.h:52
VolumeHandle::MUONCHAMBER_DIRTY
@ MUONCHAMBER_DIRTY
Definition: VolumeHandle.h:27
VP1Msg::debug
static bool debug()
Definition: VP1Msg.h:32
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
VP1GeometrySystem::Imp::iconifyVisibleVolumesRecursively
void iconifyVisibleVolumesRecursively(VolumeHandle *, const QRegExp &, bool bymatname)
Definition: VP1GeometrySystem.cxx:2116
MCP::DetectorType::CB
@ CB
Definition: EnumDef.h:37
VP1LinAlgUtils::decodeTransformation
static void decodeTransformation(const SbMatrix &, float &translation_x, float &translation_y, float &translation_z, float &rotaxis_x, float &rotaxis_y, float &rotaxis_z, float &rotangle_radians)
Definition: VP1LinAlgUtils.cxx:162
VP1GeometrySystem::Imp::detVisAttributes
DetVisAttributes * detVisAttributes
Definition: VP1GeometrySystem.cxx:233
VolumeHandle::childrenBegin
VolumeHandleListItr childrenBegin()
Definition: VolumeHandle.h:147
MuonGM::MuonStation::getStationName
const std::string & getStationName() const
like BMS5, T1F1, CSL1
Definition: MuonStation.h:165
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
PhiSectorManager::largeChangesEnd
void largeChangesEnd()
Definition: PhiSectorManager.cxx:510
VP1GeoFlags::HideRPCVolumes
@ HideRPCVolumes
Definition: VP1GeoFlags.h:82
x
#define x
VP1String::str
static QString str(const QString &s)
Definition: VP1String.h:49
VP1GeoFlags::MuonFeet
@ MuonFeet
Definition: VP1GeoFlags.h:61
VolumeHandle::childrenAreInitialised
bool childrenAreInitialised() const
Definition: VolumeHandle.h:146
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
VolumeHandle::getNameStdString
std::string getNameStdString() const
Definition: VolumeHandle.cxx:175
TruthTest.itE
itE
Definition: TruthTest.py:25
VP1GeoFlags::MuonToroidsEtc
@ MuonToroidsEtc
Definition: VP1GeoFlags.h:63
VP1GeometrySystem::Imp::volVisAttributes
VolVisAttributes * volVisAttributes
Definition: VP1GeometrySystem.cxx:235
VolumeHandleSharedData::unref
void unref()
Definition: VolumeHandleSharedData.cxx:85
GeoSysController::subSystemCheckBox
QCheckBox * subSystemCheckBox(VP1GeoFlags::SubSystemFlag) const
Definition: GeoSysController.cxx:351
VP1GeometrySystem::Imp::pv2MuonStationInit
bool pv2MuonStationInit
Definition: VP1GeometrySystem.cxx:278
VP1GeoFlags::MuonEndcapStationCSC
@ MuonEndcapStationCSC
Definition: VP1GeoFlags.h:46
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
VP1GeoFlags::ForwardRegion
@ ForwardRegion
Definition: VP1GeoFlags.h:66
DetVisAttributes
Definition: VisAttributes.h:57
VP1GeometrySystem::Imp::updatePV2MuonStationMap
void updatePV2MuonStationMap(const MuonGM::MuonReadoutElement *elem)
Definition: VP1GeometrySystem.cxx:2175
MuonGM::MuonStation::getPhiIndex
int getPhiIndex() const
a la AMDB
Definition: MuonStation.h:162
checkTP.save
def save(self, fileName="./columbo.out")
Definition: checkTP.py:178
GeoSysController::muonChamberAdaptionStyle
VP1GeoFlags::MuonChamberAdaptionStyleFlags muonChamberAdaptionStyle() const
Definition: GeoSysController.cxx:468
VP1GeometrySystem::Imp::previousAlignedChamberHandle
VolumeHandle * previousAlignedChamberHandle
Definition: VP1GeometrySystem.cxx:265
VP1GeometrySystem::Imp::changeStateOfVisibleNonStandardVolumesRecursively
void changeStateOfVisibleNonStandardVolumesRecursively(VolumeHandle *, VP1GeoFlags::VOLSTATE)
Definition: VP1GeometrySystem.cxx:2005
VP1GeoFlags::OpenCSCChambers
@ OpenCSCChambers
Definition: VP1GeoFlags.h:79
lumiFormat.i
int i
Definition: lumiFormat.py:92
z
#define z
VP1GeoFlags::MuonEndcapStationMDT
@ MuonEndcapStationMDT
Definition: VP1GeoFlags.h:49
xAOD::rotation
rotation
Definition: TrackSurface_v1.cxx:15
MuonGM::MuonReadoutElement::parentMuonStation
const MuonStation * parentMuonStation() const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:135
MuonGM::MuonStation
Definition: MuonStation.h:51
VP1GeometrySystem::Imp::sonodesep2volhandle
std::map< SoSeparator *, VolumeHandle * > sonodesep2volhandle
Definition: VP1GeometrySystem.cxx:114
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
VP1GeoFlags::LAr
@ LAr
Definition: VP1GeoFlags.h:39
VP1GeoFlags::MuonEndcapStationTGC
@ MuonEndcapStationTGC
Definition: VP1GeoFlags.h:47
IVP1System::name
const QString & name() const
Definition: IVP1System.cxx:50
VP1GeometrySystem::Imp::showPixelModules
void showPixelModules(VolumeHandle *)
Definition: VP1GeometrySystem.cxx:2443
VP1GeoFlags::OpenMDTChambers
@ OpenMDTChambers
Definition: VP1GeoFlags.h:78
VP1GeometrySystem::Imp::subsysInfoList
QList< SubSystemInfo * > subsysInfoList
Definition: VP1GeometrySystem.cxx:225
VolumeHandle::initialiseChildren
void initialiseChildren()
Definition: VolumeHandle.cxx:136
VolumeHandleSharedData
Definition: VolumeHandleSharedData.h:25
VP1GeometrySystem::Imp::expandVisibleVolumesRecursively
void expandVisibleVolumesRecursively(VolumeHandle *, const QRegExp &, bool bymatname)
Definition: VP1GeometrySystem.cxx:2095
VolumeHandle::nChildren
unsigned nChildren() const
Definition: VolumeHandle.h:149
VP1GeoFlags::AllUnrecognisedVolumes
@ AllUnrecognisedVolumes
Definition: VP1GeoFlags.h:73
VolumeTreeModel::addSubSystem
void addSubSystem(VP1GeoFlags::SubSystemFlag flag, const VolumeHandle::VolumeHandleList &roothandles)
Definition: VolumeTreeModel.cxx:172
VolumeHandle
Definition: VolumeHandle.h:21
VP1GeoFlags::None
@ None
Definition: VP1GeoFlags.h:32
GeoSysController::zappedVolumeListModel
ZappedVolumeListModel * zappedVolumeListModel() const
Definition: GeoSysController.cxx:382
PhiSectorManager::registerSubSystemSeparator
void registerSubSystemSeparator(VP1GeoFlags::SubSystemFlag flag, SoSeparator *subsystemsep)
Definition: PhiSectorManager.cxx:78
VP1GeometrySystem::Imp::volumetreemodel
VolumeTreeModel * volumetreemodel
Definition: VP1GeometrySystem.cxx:246
IVP1System::messageDebug
void messageDebug(const QString &) const
Definition: IVP1System.cxx:347
VP1LinAlgUtils::transformToMatrix
static void transformToMatrix(SoTransform *xf, SbMatrix &result)
Definition: VP1LinAlgUtils.cxx:101
VP1GeometrySystem::Imp::kbEvent
const SoKeyboardEvent * kbEvent
Definition: VP1GeometrySystem.cxx:255
VolumeHandle::getName
QString getName() const
Definition: VolumeHandle.cxx:169
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
GeoSysController::volumeTreeBrowser
VP1GeoTreeView * volumeTreeBrowser() const
Definition: GeoSysController.cxx:370
VolumeHandleSharedData::ref
void ref()
Definition: VolumeHandleSharedData.cxx:79
VP1GeoFlags::LUCID
@ LUCID
Definition: VP1GeoFlags.h:55
VP1GeometrySystem::Imp::expandAllChildren
void expandAllChildren(VolumeHandle *, bool isPixel, bool brl, bool ecA, bool ecC)
Definition: VP1GeometrySystem.cxx:2478
VP1GeoFlags::ZAPPED
@ ZAPPED
Definition: VP1GeoFlags.h:89
VP1GeoFlags::MuonBarrelStationMiddle
@ MuonBarrelStationMiddle
Definition: VP1GeoFlags.h:44
MuonVolumeHandle
Definition: MuonVolumeHandle.h:23
VP1GeometrySystem::Imp::pv2MuonStation
std::map< GeoPVConstLink, const MuonGM::MuonStation * > pv2MuonStation
Definition: VP1GeometrySystem.cxx:277
VP1DetInfo::muonDetMgr
static const MuonGM::MuonDetectorManager * muonDetMgr()
Definition: VP1DetInfo.cxx:148
VP1Msg::messageDebug
static void messageDebug(const QString &)
Definition: VP1Msg.cxx:39
y
#define y
h
VP1GeometrySystem::Imp::exclusiveMass
static double exclusiveMass(const PVConstLink &pv)
Definition: VP1GeometrySystem.cxx:1261
VolumeHandle::isAttached
bool isAttached() const
Definition: VolumeHandle.cxx:501
VP1Msg::message
static void message(const QString &, IVP1System *sys=0)
Definition: VP1Msg.cxx:30
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:49
MatVisAttributes
Definition: VisAttributes.h:64
MuonGM::MuonStation::getEtaIndex
int getEtaIndex() const
a la AMDB
Definition: MuonStation.h:163
Amg::EigenTransformToCLHEP
HepGeom::Transform3D EigenTransformToCLHEP(const Amg::Transform3D &eigenTransf)
Converts an Eigen-based Amg::Transform3D into a CLHEP-based HepGeom::Transform3D.
Definition: CLHEPtoEigenConverter.h:120
VP1GeometrySystem::Imp::theclass
VP1GeometrySystem * theclass
Definition: VP1GeometrySystem.cxx:111
python.changerun.pv
pv
Definition: changerun.py:81
VolumeHandle::VolumeHandleListItr
VolumeHandleList::iterator VolumeHandleListItr
Definition: VolumeHandle.h:65
VolumeHandle::state
VP1GeoFlags::VOLSTATE state() const
Definition: VolumeHandle.h:152
VP1GeoFlags::HideMDTTubes
@ HideMDTTubes
Definition: VP1GeoFlags.h:81
VP1GeoFlags::MuonBarrelStationOuter
@ MuonBarrelStationOuter
Definition: VP1GeoFlags.h:45
entries
double entries
Definition: listroot.cxx:49
VP1GeometrySystem::Imp::ensureInitVisAttributes
void ensureInitVisAttributes()
Definition: VP1GeometrySystem.cxx:236
PhiSectorManager::updateRepresentationsOfVolsAroundZAxis
void updateRepresentationsOfVolsAroundZAxis()
Definition: PhiSectorManager.cxx:483
VP1GeoFlags::OpenTGCChambers
@ OpenTGCChambers
Definition: VP1GeoFlags.h:80
VP1JobConfigInfo::hasITkGeometry
static bool hasITkGeometry()
Definition: VP1JobConfigInfo.cxx:126
VP1GeoFlags::BarrelToroid
@ BarrelToroid
Definition: VP1GeoFlags.h:41
COOLRates.target
target
Definition: COOLRates.py:1106
VolumeHandle::NONMUONCHAMBER
@ NONMUONCHAMBER
Definition: VolumeHandle.h:24
VP1GeometrySystem::Imp::matVisAttributes
MatVisAttributes * matVisAttributes
Definition: VP1GeometrySystem.cxx:234
VP1GeoFlags::SCT
@ SCT
Definition: VP1GeoFlags.h:35
VisAttributes::get
SoMaterial * get(const std::string &name) const
Definition: VisAttributes.cxx:113
VP1GeometrySystem::Imp::volume
static double volume(const PVConstLink &pv)
Definition: VP1GeometrySystem.cxx:1270
VP1GeoFlags::CavernInfra
@ CavernInfra
Definition: VP1GeoFlags.h:51
MuonGM::MuonReadoutElement::parentStationPV
PVConstLink parentStationPV() const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:100
IVP1System::message
void message(const QString &) const
Definition: IVP1System.cxx:336
VolumeHandle::getGlobalTransformToVolume
const SbMatrix & getGlobalTransformToVolume() const
Definition: VolumeHandle.cxx:489
VP1GeoFlags::ZDC
@ ZDC
Definition: VP1GeoFlags.h:56
VP1GeometrySystem::Imp::last_appropriatemdtprojections
int last_appropriatemdtprojections
Definition: VP1GeometrySystem.cxx:268
VolumeHandle::getDescriptiveName
virtual QString getDescriptiveName() const
Definition: VolumeHandle.h:162
IVP1System::messageVerbose
void messageVerbose(const QString &) const
Definition: IVP1System.cxx:354
VP1GeoFlags::TRT
@ TRT
Definition: VP1GeoFlags.h:36
VP1GeoFlags::CONTRACTED
@ CONTRACTED
Definition: VP1GeoFlags.h:87
VolumeHandle::contractDaughtersRecursively
void contractDaughtersRecursively()
Definition: VolumeHandle.cxx:403
VolumeHandle::childrenEnd
VolumeHandleListItr childrenEnd()
Definition: VolumeHandle.h:148
VP1GeometrySystem::Imp::ensureInitPV2MuonStationMap
void ensureInitPV2MuonStationMap()
Definition: VP1GeometrySystem.cxx:2189
VP1GeoFlags::Tile
@ Tile
Definition: VP1GeoFlags.h:40
VP1GeoFlags::AFP
@ AFP
Definition: VP1GeoFlags.h:67