From 574e039254a4ddd42e699f1501f95b5475f8daab Mon Sep 17 00:00:00 2001 From: Dave Casper <dcasper@uci.edu> Date: Thu, 12 May 2022 06:31:43 -0700 Subject: [PATCH] Trench, vetonu and FaserNu support --- .../CalypsoConfiguration/python/DetectorConfigFlags.py | 2 +- .../GeoModel/FaserGeoModel/python/GeoModelInit.py | 5 +++++ .../TrenchGeoModel/src/TrenchDetectorFactory.cxx | 8 +++++++- .../TrenchGeoModel/src/TrenchDetectorFactory.h | 2 +- .../G4Faser/G4FaserTools/python/G4GeometryToolConfig.py | 2 +- graphics/VTI12/VTI12Algs/share/vti12.py | 3 ++- .../VTI12GeometrySystems/VP1GeoFlags.h | 1 + .../VTI12GeometrySystems/src/GeoSysController.cxx | 3 +++ .../VTI12GeometrySystems/src/VP1GeometrySystem.cxx | 8 ++++++++ .../VTI12GeometrySystems/src/VolumeTreeModel.cxx | 5 ++++- graphics/VTI12/VTI12Utils/VTI12Utils/VP1JobConfigInfo.h | 2 ++ graphics/VTI12/VTI12Utils/src/VP1JobConfigInfo.cxx | 4 ++++ 12 files changed, 39 insertions(+), 6 deletions(-) diff --git a/Control/CalypsoConfiguration/python/DetectorConfigFlags.py b/Control/CalypsoConfiguration/python/DetectorConfigFlags.py index 8ffa4ccd..b2588ba8 100644 --- a/Control/CalypsoConfiguration/python/DetectorConfigFlags.py +++ b/Control/CalypsoConfiguration/python/DetectorConfigFlags.py @@ -46,7 +46,7 @@ def createDetectorConfigFlags(): # Trench (disabled by default) dcf.addFlag('Detector.GeometryTrench',False) - dcf.addFlag('Detector.GeometryCavern', lambda prevFlags : (prevFlags.Detector.GeometryTrench )) + dcf.addFlag('Detector.GeometryFaserCavern', lambda prevFlags : (prevFlags.Detector.GeometryTrench )) # dcf.addFlag('Detector.GeometryFaser', lambda prevFlags : (prevFlags.Detector.GeometryDecayVolume or # prevFlags.Detector.GeometryScintillator or diff --git a/DetectorDescription/GeoModel/FaserGeoModel/python/GeoModelInit.py b/DetectorDescription/GeoModel/FaserGeoModel/python/GeoModelInit.py index 5e47a915..af1ed16d 100644 --- a/DetectorDescription/GeoModel/FaserGeoModel/python/GeoModelInit.py +++ b/DetectorDescription/GeoModel/FaserGeoModel/python/GeoModelInit.py @@ -122,6 +122,11 @@ def _setupGeoModel(): geoModelSvc.DetectorTools += [ ecalDetectorTool ] + if "FASERNU-03" in DDversion: + from TrenchGeoModel.TrenchGeoModelConf import TrenchDetectorTool + trenchDetectorTool = TrenchDetectorTool( ) + + geoModelSvc.DetectorTools += [ trenchDetectorTool ] pass diff --git a/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.cxx b/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.cxx index 668af4a0..3862cc8c 100644 --- a/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.cxx +++ b/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.cxx @@ -60,13 +60,19 @@ void TrenchDetectorFactory::create(GeoPhysVol *world) } std::string resolvedFile = PathResolver::find_file(gdmlFile, "XMLPATH", PathResolver::RecursiveSearch); + + XMLHandlerStore::GetHandlerStore()->clear(); + + GDMLController controller {"TrenchGDMLController"}; + std::cout << "creating parser" << std::endl; XercesParser xercesParser; + std::cout << "parsing " << resolvedFile << std::endl; xercesParser.ParseFileAndNavigate(resolvedFile); std::cout << "done parsing " << resolvedFile << std::endl; - const GeoLogVol* trenchLog = m_controller.retrieveLogicalVolume("Trench").first; + const GeoLogVol* trenchLog = controller.retrieveLogicalVolume("Trench").first; GeoPhysVol* trenchPhys = new GeoPhysVol(trenchLog); GeoNameTag *tag = new GeoNameTag("Trench"); world->add(tag); diff --git a/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.h b/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.h index 07dcad5c..14cdbaa1 100644 --- a/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.h +++ b/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.h @@ -49,7 +49,7 @@ class TrenchDetectorFactory : public GeoVDetectorFactory std::string m_versionTag; std::string m_versionNode; - GDMLController m_controller {"TrenchGDMLController"}; +// GDMLController m_controller {"TrenchGDMLController"}; }; diff --git a/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py b/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py index 8e9bb2aa..4e6f5949 100644 --- a/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py +++ b/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py @@ -228,7 +228,7 @@ def getFASER_RegionCreatorList(ConfigFlags): if ConfigFlags.Detector.GeometryFaserCalo: regionCreatorList += [EcalPhysicsRegionToolCfg(ConfigFlags)] - if ConfigFlags.Detector.GeometryCavern: + if ConfigFlags.Detector.GeometryFaserCavern: regionCreatorList += [CavernPhysicsRegionToolCfg(ConfigFlags)] return regionCreatorList diff --git a/graphics/VTI12/VTI12Algs/share/vti12.py b/graphics/VTI12/VTI12Algs/share/vti12.py index 3878899d..07a3a97a 100644 --- a/graphics/VTI12/VTI12Algs/share/vti12.py +++ b/graphics/VTI12/VTI12Algs/share/vti12.py @@ -32,7 +32,8 @@ if not 'vp1NoSortDBReplicas' in dir(): vp1NoSortDBReplicas=False if not 'vp1FilterEvents' in dir(): vp1FilterEvents="" if not 'vp1NoGui' in dir(): vp1NoGui=False if not 'vp1SpacePoints' in dir(): vp1SpacePoints=False -if not 'vp1Cavern' in dir(): vp1Cavern=False +# if not 'vp1Cavern' in dir(): vp1Cavern=False +vp1Cavern=True if not 'vp1NoAutoConf' in dir(): vp1NoAutoConf=False if not 'vp1Trig' in dir(): vp1Trig=False if not 'vp1NSW' in dir(): vp1NSW=False diff --git a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/VTI12GeometrySystems/VP1GeoFlags.h b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/VTI12GeometrySystems/VP1GeoFlags.h index 0ec7c0ef..8aefd8e4 100644 --- a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/VTI12GeometrySystems/VP1GeoFlags.h +++ b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/VTI12GeometrySystems/VP1GeoFlags.h @@ -36,6 +36,7 @@ public: Dipole = 0x00000040, Ecal = 0x00000080, + CavernInfra = 0x00000100, // Pixel = 0x00000001, // bit 0 // SCT = 0x00000002, // 1 // TRT = 0x00000004, // 2 diff --git a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/GeoSysController.cxx b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/GeoSysController.cxx index dd4c44c1..fbb27a25 100644 --- a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/GeoSysController.cxx +++ b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/GeoSysController.cxx @@ -162,6 +162,9 @@ GeoSysController::GeoSysController(IVP1System * sys) // Calorimeter m_d->subSysCheckBoxMap[VP1GeoFlags::Ecal] = m_d->ui.checkBox_Ecal; + // Cavern + m_d->subSysCheckBoxMap[VP1GeoFlags::CavernInfra] = m_d->ui.checkBox_CavernInfra; + // MISCELLANEOUS // OTHER m_d->subSysCheckBoxMap[VP1GeoFlags::AllUnrecognisedVolumes] = m_d->ui.checkBox_other; diff --git a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VP1GeometrySystem.cxx b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VP1GeometrySystem.cxx index dfcff299..e5c0eed5 100644 --- a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VP1GeometrySystem.cxx +++ b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VP1GeometrySystem.cxx @@ -336,6 +336,7 @@ QWidget * VP1GeometrySystem::buildController() m_d->addSubSystem( VP1GeoFlags::SCT, "SCT"); m_d->addSubSystem( VP1GeoFlags::Dipole, "Dipole"); m_d->addSubSystem( VP1GeoFlags::Ecal, "Ecal"); + m_d->addSubSystem( VP1GeoFlags::CavernInfra, "Cavern"); @@ -1146,6 +1147,13 @@ void VP1GeometrySystem::Imp::createPathExtras(const VolumeHandle* volhandle, QSt entries.push("Ecal::Ecal"); return; } + case VP1GeoFlags::CavernInfra:{ + prefix = QString("Cavern::"); + entries.push("CAVERN::CAVERN"); + entries.push("Trench::Trench"); + return; + } + case VP1GeoFlags::None: case VP1GeoFlags::AllUnrecognisedVolumes: default:{ diff --git a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VolumeTreeModel.cxx b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VolumeTreeModel.cxx index eae1d4d8..ea681cdd 100644 --- a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VolumeTreeModel.cxx +++ b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VolumeTreeModel.cxx @@ -31,7 +31,7 @@ class VolumeTreeModel::Imp { public: //Static definitions of sections and which subsystems goes in which sections: - enum SECTION { UNKNOWN, NEUTRINO, SCINT, TRACKER, CALO, MISC }; + enum SECTION { UNKNOWN, NEUTRINO, SCINT, TRACKER, CALO, MISC, CAVERN }; static std::map<SECTION,QString> section2string; static std::map<VP1GeoFlags::SubSystemFlag,SECTION> subsysflag2section; static std::map<VP1GeoFlags::SubSystemFlag,QString> subsysflag2string; @@ -108,6 +108,7 @@ VolumeTreeModel::VolumeTreeModel( QObject * parent ) Imp::section2string[Imp::SCINT] = "Scintillators"; Imp::section2string[Imp::TRACKER] = "Tracker"; Imp::section2string[Imp::CALO] = "Calorimeter"; + Imp::section2string[Imp::CAVERN] = "Cavern"; Imp::section2string[Imp::MISC] = "Miscellaneous"; } if (Imp::subsysflag2section.empty()) { @@ -124,6 +125,8 @@ VolumeTreeModel::VolumeTreeModel( QObject * parent ) Imp::defineSubSystem(VP1GeoFlags::Dipole, "Dipole", Imp::TRACKER); // Calorimeter Imp::defineSubSystem(VP1GeoFlags::Ecal, "Ecal", Imp::CALO); + // Cavern + Imp::defineSubSystem(VP1GeoFlags::CavernInfra, "Cavern", Imp::CAVERN); } } diff --git a/graphics/VTI12/VTI12Utils/VTI12Utils/VP1JobConfigInfo.h b/graphics/VTI12/VTI12Utils/VTI12Utils/VP1JobConfigInfo.h index 97ae89cc..96c80ac4 100644 --- a/graphics/VTI12/VTI12Utils/VTI12Utils/VP1JobConfigInfo.h +++ b/graphics/VTI12/VTI12Utils/VTI12Utils/VP1JobConfigInfo.h @@ -43,6 +43,8 @@ public: static bool hasEcalGeometry(); + static bool hasCavernInfraGeometry(); + //Top geomodel volume link (not strictly "JobConfig", but here it is): static const GeoPVConstLink * geoModelWorld();//might return 0 diff --git a/graphics/VTI12/VTI12Utils/src/VP1JobConfigInfo.cxx b/graphics/VTI12/VTI12Utils/src/VP1JobConfigInfo.cxx index f5723561..bd325e0d 100644 --- a/graphics/VTI12/VTI12Utils/src/VP1JobConfigInfo.cxx +++ b/graphics/VTI12/VTI12Utils/src/VP1JobConfigInfo.cxx @@ -99,6 +99,8 @@ void VP1JobConfigInfo::Imp::ensureInit() VP1Msg::messageVerbose("VTI12JobConfigInfo => hasSCTGeometry = "+QString(hasSCTGeometry?"On":"Off")); VP1Msg::messageVerbose("VTI12JobConfigInfo => hasEcalGeometry = "+QString(hasEcalGeometry?"On":"Off")); + VP1Msg::messageVerbose("VTI12JobConfigInfo => hasCavernInfraGeometry = "+QString(hasCavernInfraGeometry?"On":"Off")); + } } @@ -114,6 +116,7 @@ bool VP1JobConfigInfo::hasPreshowerGeometry() { if (!Imp::initialised) Imp::ensu bool VP1JobConfigInfo::hasSCTGeometry() { if (!Imp::initialised) Imp::ensureInit(); return Imp::hasSCTGeometry; } bool VP1JobConfigInfo::hasEcalGeometry() { if (!Imp::initialised) Imp::ensureInit(); return Imp::hasEcalGeometry; } +bool VP1JobConfigInfo::hasCavernInfraGeometry() { if (!Imp::initialised) Imp::ensureInit(); return Imp::hasCavernInfraGeometry; } //____________________________________________________________________ bool VP1JobConfigInfo::Imp::actualInit( StoreGateSvc* detStore ) @@ -169,6 +172,7 @@ bool VP1JobConfigInfo::Imp::actualInit( StoreGateSvc* detStore ) if ( !hasPreshowerGeometry && name=="Preshower") hasPreshowerGeometry = true; if ( !hasSCTGeometry && name=="SCT") hasSCTGeometry = true; if ( !hasEcalGeometry && name=="Ecal") hasEcalGeometry = true; + if ( !hasCavernInfraGeometry && name == "Trench") hasCavernInfraGeometry = true; //FIXME: Look for CavernInfra as well!!! -- GitLab