diff --git a/Control/AthenaConfiguration/python/AutoConfigFlags.py b/Control/AthenaConfiguration/python/AutoConfigFlags.py index 6666583286822383d4f525cf87ccebd201dde401..458b16c6dc50466eae9261c69f26ecf9f9e17776 100644 --- a/Control/AthenaConfiguration/python/AutoConfigFlags.py +++ b/Control/AthenaConfiguration/python/AutoConfigFlags.py @@ -67,7 +67,7 @@ def GetFileMD(filenames): msg.info("No file with events found, returning anyways metadata associated to the first file %s", filenames[0]) return _fileMetaData[filenames[0]] -def _initializeGeometryParameters(geoTag,sqliteDB): +def _initializeGeometryParameters(geoTag,sqliteDB,sqliteDBFullPath): """Read geometry database for all detectors""" from AtlasGeoModel import CommonGeoDB @@ -94,7 +94,7 @@ def _initializeGeometryParameters(geoTag,sqliteDB): else: # Read parameters from SQLite from AtlasGeoModel.AtlasGeoDBInterface import AtlasGeoDBInterface_SQLite - sqliteReader = AtlasGeoDBInterface_SQLite(geoTag) + sqliteReader = AtlasGeoDBInterface_SQLite(geoTag,sqliteDBFullPath) sqliteReader.ConnectToDB() params = { 'Common' : CommonGeoDB.InitializeGeometryParameters_SQLite(sqliteReader), @@ -112,7 +112,7 @@ def _initializeGeometryParameters(geoTag,sqliteDB): @lru_cache(maxsize=4) # maxsize=1 should be enough for most jobs -def DetDescrInfo(geoTag, sqliteDB): +def DetDescrInfo(geoTag, sqliteDB, sqliteDBFullPath): """Query geometry DB for detector description. Returns dictionary with detector description. Queries DB for each tag only once. @@ -121,13 +121,13 @@ def DetDescrInfo(geoTag, sqliteDB): if not geoTag: raise ValueError("No geometry tag specified") - detDescrInfo = _initializeGeometryParameters(geoTag,sqliteDB) + detDescrInfo = _initializeGeometryParameters(geoTag,sqliteDB,sqliteDBFullPath) detDescrInfo["geomTag"] = geoTag return detDescrInfo @lru_cache(maxsize=4) # maxsize=1 should be enough for most jobs -def getDefaultDetectors(geoTag, sqliteDB, includeForward=False): +def getDefaultDetectors(geoTag, sqliteDB, sqliteDBFullPath, includeForward=False): """Query geometry DB for detector description. Returns a set of detectors used in a geometry tag. @@ -136,12 +136,12 @@ def getDefaultDetectors(geoTag, sqliteDB, includeForward=False): detectors = set() detectors.add('Bpipe') - if DetDescrInfo(geoTag,sqliteDB)['Common']['Run'] not in ['RUN1', 'RUN2', 'RUN3']: # RUN4 and beyond + if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']['Run'] not in ['RUN1', 'RUN2', 'RUN3']: # RUN4 and beyond detectors.add('ITkPixel') detectors.add('ITkStrip') - if DetDescrInfo(geoTag,sqliteDB)['Luminosity']['BCMPrime']: + if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Luminosity']['BCMPrime']: pass # keep disabled for now - if DetDescrInfo(geoTag,sqliteDB)['Luminosity']['PLR']: + if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Luminosity']['PLR']: detectors.add('PLR') else: detectors.add('Pixel') @@ -152,27 +152,27 @@ def getDefaultDetectors(geoTag, sqliteDB, includeForward=False): # if DetDescrInfo(geoTag)['Common']['Run'] == 'RUN4': # detectors.add('BCMPrime') - if DetDescrInfo(geoTag,sqliteDB)['Common']['Run'] not in ['RUN1', 'RUN2', 'RUN3']: # RUN4 and beyond + if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']['Run'] not in ['RUN1', 'RUN2', 'RUN3']: # RUN4 and beyond detectors.add('HGTD') detectors.add('LAr') detectors.add('Tile') - if DetDescrInfo(geoTag,sqliteDB)['Common']['Run'] in ['RUN1', 'RUN2', 'RUN3']: + if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']['Run'] in ['RUN1', 'RUN2', 'RUN3']: detectors.add('MBTS') detectors.add('MDT') detectors.add('RPC') detectors.add('TGC') - if DetDescrInfo(geoTag,sqliteDB)['Muon']['HasCSC']: + if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Muon']['HasCSC']: detectors.add('CSC') - if DetDescrInfo(geoTag,sqliteDB)['Muon']['HasSTGC']: + if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Muon']['HasSTGC']: detectors.add('sTGC') - if DetDescrInfo(geoTag,sqliteDB)['Muon']['HasMM']: + if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Muon']['HasMM']: detectors.add('MM') if includeForward: detectors.add('Lucid') - if DetDescrInfo(geoTag,sqliteDB)['Common']['Run'] not in ['RUN1']: + if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']['Run'] not in ['RUN1']: detectors.add('AFP') detectors.add('ZDC') detectors.add('ALFA') diff --git a/Control/AthenaConfiguration/python/DetectorConfigFlags.py b/Control/AthenaConfiguration/python/DetectorConfigFlags.py index 99f9697c8f4474a027ca2cd2c5df50c26fe93200..a618877372633e7311d5ba7a8dfd48a208af5770 100644 --- a/Control/AthenaConfiguration/python/DetectorConfigFlags.py +++ b/Control/AthenaConfiguration/python/DetectorConfigFlags.py @@ -58,49 +58,49 @@ def createDetectorConfigFlags(): dcf.addFlag('Detector.GeometryBpipe', True) # always enabled by default # Inner Detector - dcf.addFlag('Detector.GeometryBCM', lambda prevFlags : 'BCM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryPixel', lambda prevFlags : 'Pixel' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometrySCT', lambda prevFlags : 'SCT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryTRT', lambda prevFlags : 'TRT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) + dcf.addFlag('Detector.GeometryBCM', lambda prevFlags : 'BCM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryPixel', lambda prevFlags : 'Pixel' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometrySCT', lambda prevFlags : 'SCT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryTRT', lambda prevFlags : 'TRT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) dcf.addFlag('Detector.GeometryID', lambda prevFlags : (prevFlags.Detector.GeometryBCM or prevFlags.Detector.GeometryPixel or prevFlags.Detector.GeometrySCT or prevFlags.Detector.GeometryTRT)) # Upgrade ITk Inner Tracker is a separate and parallel detector - dcf.addFlag('Detector.GeometryPLR', lambda prevFlags : 'PLR' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryBCMPrime', lambda prevFlags : 'BCMPrime' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryITkPixel', lambda prevFlags : 'ITkPixel' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryITkStrip', lambda prevFlags : 'ITkStrip' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) + dcf.addFlag('Detector.GeometryPLR', lambda prevFlags : 'PLR' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryBCMPrime', lambda prevFlags : 'BCMPrime' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryITkPixel', lambda prevFlags : 'ITkPixel' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryITkStrip', lambda prevFlags : 'ITkStrip' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) dcf.addFlag('Detector.GeometryITk', lambda prevFlags : (prevFlags.Detector.GeometryBCMPrime or prevFlags.Detector.GeometryITkPixel or prevFlags.Detector.GeometryITkStrip or prevFlags.Detector.GeometryPLR)) # HGTD - dcf.addFlag('Detector.GeometryHGTD', lambda prevFlags : 'HGTD' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) + dcf.addFlag('Detector.GeometryHGTD', lambda prevFlags : 'HGTD' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) # Calorimeters - dcf.addFlag('Detector.GeometryLAr', lambda prevFlags : 'LAr' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) # Add separate em HEC and FCAL flags? - dcf.addFlag('Detector.GeometryTile', lambda prevFlags : 'Tile' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryMBTS', lambda prevFlags : (prevFlags.Detector.GeometryLAr and 'MBTS' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB))) + dcf.addFlag('Detector.GeometryLAr', lambda prevFlags : 'LAr' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) # Add separate em HEC and FCAL flags? + dcf.addFlag('Detector.GeometryTile', lambda prevFlags : 'Tile' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryMBTS', lambda prevFlags : (prevFlags.Detector.GeometryLAr and 'MBTS' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath))) dcf.addFlag('Detector.GeometryCalo', lambda prevFlags : (prevFlags.Detector.GeometryLAr or prevFlags.Detector.GeometryTile)) # Muon Spectrometer - dcf.addFlag('Detector.GeometryCSC', lambda prevFlags : 'CSC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryMDT', lambda prevFlags : 'MDT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryRPC', lambda prevFlags : 'RPC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryTGC', lambda prevFlags : 'TGC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometrysTGC', lambda prevFlags : 'sTGC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) - dcf.addFlag('Detector.GeometryMM', lambda prevFlags : 'MM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)) + dcf.addFlag('Detector.GeometryCSC', lambda prevFlags : 'CSC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryMDT', lambda prevFlags : 'MDT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryRPC', lambda prevFlags : 'RPC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryTGC', lambda prevFlags : 'TGC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometrysTGC', lambda prevFlags : 'sTGC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) + dcf.addFlag('Detector.GeometryMM', lambda prevFlags : 'MM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)) dcf.addFlag('Detector.GeometryMuon', lambda prevFlags : (prevFlags.Detector.GeometryCSC or prevFlags.Detector.GeometryMDT or prevFlags.Detector.GeometryRPC or prevFlags.Detector.GeometryTGC or prevFlags.Detector.GeometrysTGC or prevFlags.Detector.GeometryMM)) # Forward detectors (disabled by default) - dcf.addFlag('Detector.GeometryLucid', lambda prevFlags : 'Lucid' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, includeForward=not prevFlags.Input.isMC)) - dcf.addFlag('Detector.GeometryZDC', lambda prevFlags : 'ZDC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, includeForward=not prevFlags.Input.isMC)) - dcf.addFlag('Detector.GeometryALFA', lambda prevFlags : 'ALFA' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, includeForward=not prevFlags.Input.isMC)) - dcf.addFlag('Detector.GeometryAFP', lambda prevFlags : 'AFP' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, includeForward=not prevFlags.Input.isMC)) - dcf.addFlag('Detector.GeometryFwdRegion', lambda prevFlags : 'FwdRegion' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, includeForward=not prevFlags.Input.isMC)) + dcf.addFlag('Detector.GeometryLucid', lambda prevFlags : 'Lucid' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, prevFlags.GeoModel.SQLiteDBFullPath, includeForward=not prevFlags.Input.isMC)) + dcf.addFlag('Detector.GeometryZDC', lambda prevFlags : 'ZDC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, prevFlags.GeoModel.SQLiteDBFullPath, includeForward=not prevFlags.Input.isMC)) + dcf.addFlag('Detector.GeometryALFA', lambda prevFlags : 'ALFA' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, prevFlags.GeoModel.SQLiteDBFullPath, includeForward=not prevFlags.Input.isMC)) + dcf.addFlag('Detector.GeometryAFP', lambda prevFlags : 'AFP' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, prevFlags.GeoModel.SQLiteDBFullPath, includeForward=not prevFlags.Input.isMC)) + dcf.addFlag('Detector.GeometryFwdRegion', lambda prevFlags : 'FwdRegion' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB, prevFlags.GeoModel.SQLiteDBFullPath, includeForward=not prevFlags.Input.isMC)) dcf.addFlag('Detector.GeometryForward', lambda prevFlags : (prevFlags.Detector.GeometryLucid or prevFlags.Detector.GeometryZDC or prevFlags.Detector.GeometryALFA or prevFlags.Detector.GeometryAFP or prevFlags.Detector.GeometryFwdRegion)) @@ -207,7 +207,7 @@ def _parseDetectorsList(flags, detectors): else: # in case of groups only enable defaults for d in allGroups[g]: - if d in getDefaultDetectors(flags.GeoModel.AtlasVersion,flags.GeoModel.SQLiteDB): + if d in getDefaultDetectors(flags.GeoModel.AtlasVersion,flags.GeoModel.SQLiteDB,flags.GeoModel.SQLiteDBFullPath): log.debug("Appending detector '%s'", d) detectors.add(d) diff --git a/Control/AthenaConfiguration/python/GeoModelConfigFlags.py b/Control/AthenaConfiguration/python/GeoModelConfigFlags.py index a4e40b0dbe3b48bdf968a21ebe63b432f54c89fd..b05e4a85a2f6bcd1e914fd84b08f44c5739d4a56 100644 --- a/Control/AthenaConfiguration/python/GeoModelConfigFlags.py +++ b/Control/AthenaConfiguration/python/GeoModelConfigFlags.py @@ -42,7 +42,7 @@ def createGeoModelConfigFlags(analysis=False): def _deduct_LHCPeriod(prevFlags): if prevFlags.GeoModel.AtlasVersion: - return LHCPeriod(DetDescrInfo(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)['Common']['Run']) + return LHCPeriod(DetDescrInfo(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)['Common']['Run']) if prevFlags.Input.isMC: raise ValueError('No geometry tag specified') @@ -70,16 +70,19 @@ def createGeoModelConfigFlags(analysis=False): # Mainly for G4 which still loads alignment on initialize gcf.addFlag("GeoModel.Type", - lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)['Common']['GeoType']) + lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)['Common']['GeoType']) # Geometry type in {ITKLoI, ITkLoI-VF, etc...} gcf.addFlag("GeoModel.IBLLayout", - lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB)['Pixel']['IBLlayout']) + lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion,prevFlags.GeoModel.SQLiteDB,prevFlags.GeoModel.SQLiteDBFullPath)['Pixel']['IBLlayout']) # IBL layer layout in {"planar", "3D", "noIBL"} gcf.addFlag('GeoModel.SQLiteDB',False) # Switch for activating GeoModel initialization from an SQLite Geometry DB + gcf.addFlag('GeoModel.SQLiteDBFullPath','') + # Override full path to the SQLite Geometry DB. For testing purposes only + gcf.addFlag('GeoModel.IgnoreTagDifference',False) return gcf diff --git a/DetectorDescription/GeoModel/AtlasGeoModel/python/AtlasGeoDBInterface.py b/DetectorDescription/GeoModel/AtlasGeoModel/python/AtlasGeoDBInterface.py index b336d622c5dfd04ed4e47d7c7c6257e72afc0658..4e6a35141e12e9657c65d2856b213522bd9e6d5f 100755 --- a/DetectorDescription/GeoModel/AtlasGeoModel/python/AtlasGeoDBInterface.py +++ b/DetectorDescription/GeoModel/AtlasGeoModel/python/AtlasGeoDBInterface.py @@ -234,14 +234,16 @@ import sqlite3 class AtlasGeoDBInterface_SQLite: - def __init__(self,geoTag,verbose=False): + def __init__(self,geoTag,sqliteDBFullPath,verbose=False): self.db=None self.bVerbose=verbose - from AthenaCommon.Utils.unixtools import find_datafile - fileName="Geometry/"+geoTag+".db" - self.dbFile=find_datafile(fileName) + if sqliteDBFullPath: + self.dbFile=sqliteDBFullPath + else: + from AthenaCommon.Utils.unixtools import find_datafile + self.dbFile=find_datafile("Geometry/"+geoTag+".db") def ConnectToDB(self): diff --git a/DetectorDescription/GeoModel/AtlasGeoModel/python/GeoModelConfig.py b/DetectorDescription/GeoModel/AtlasGeoModel/python/GeoModelConfig.py index 98148d79f65302ec4bb5e263a205774464c5d4ba..89e655bab7adf9e8c56fdcbe531aecba58e0629e 100644 --- a/DetectorDescription/GeoModel/AtlasGeoModel/python/GeoModelConfig.py +++ b/DetectorDescription/GeoModel/AtlasGeoModel/python/GeoModelConfig.py @@ -28,6 +28,7 @@ def GeoModelCfg(flags): gms=CompFactory.GeoModelSvc(AtlasVersion=flags.GeoModel.AtlasVersion, SQLiteDB=flags.GeoModel.SQLiteDB, + SQLiteDBFullPath=flags.GeoModel.SQLiteDBFullPath, IgnoreTagDifference=flags.GeoModel.IgnoreTagDifference, SupportedGeometry=int(relversion[0])) if flags.Common.ProductionStep == ProductionStep.Simulation: diff --git a/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.cxx b/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.cxx index 25ba8490b628e6ae3fbe87e384633ad837d8df0e..48532f48a68e95ddaf1fe97b6e0c22e1f770e7e4 100755 --- a/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.cxx +++ b/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.cxx @@ -36,6 +36,9 @@ GeoModelSvc::GeoModelSvc(const std::string& name,ISvcLocator* svc) StatusCode GeoModelSvc::initialize ATLAS_NOT_THREAD_SAFE() // ^ due to IGeoModelTool::registerCallback { + // Activate the initialization from SQLite if the overrider has been used + if(!m_sqliteDbFullPath.empty()) m_sqliteDb=true; + if(!m_sqliteDb && m_supportedGeometry==0) { ATH_MSG_FATAL("The Supported Geometry flag was not set in Job Options! Exiting ..."); return StatusCode::FAILURE; @@ -152,8 +155,10 @@ StatusCode GeoModelSvc::geoInit() // Build geometry from the SQLiteDB file if(m_sqliteDb) { std::string sqliteDbName = "Geometry/" + m_atlasVersion + ".db"; - std::string sqliteDbPath = PathResolver::find_file (sqliteDbName, "DATAPATH"); - if(sqliteDbPath.empty()) { + std::string sqliteDbPath = m_sqliteDbFullPath.empty() + ? PathResolver::find_file (sqliteDbName, "DATAPATH") + : m_sqliteDbFullPath.value(); + if(sqliteDbPath.empty() && m_sqliteDbFullPath.empty()) { ATH_MSG_FATAL("Filed to find SQLite database file " << sqliteDbName << " for reading in persistent GeoModel tree"); return StatusCode::FAILURE; } @@ -166,7 +171,7 @@ StatusCode GeoModelSvc::geoInit() ATH_MSG_INFO("Successfully opened SQLite DB file " << sqliteDbPath << " for reading in persistent GeoModel tree"); } else { - ATH_MSG_FATAL("Failed to open SQLite database for reading in persistent GeoModel tree"); + ATH_MSG_FATAL("Failed to open SQLite database " << sqliteDbPath << " for reading in persistent GeoModel tree"); return StatusCode::FAILURE; } m_sqliteReader = std::make_unique<GeoModelIO::ReadGeoModel>(m_sqliteDbManager.get()); diff --git a/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.h b/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.h index 579c841350abffc44070b28b1c2d9859fc4542ee..f9b5037fc08e5895886e0f69ad5ea22e4eed92fa 100755 --- a/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.h +++ b/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.h @@ -83,6 +83,7 @@ private: Gaudi::Property<bool> m_ignoreTagSupport{this,"IgnoreTagSupport",false,"Skip checking if the geometry tag is supported/obsolete"}; Gaudi::Property<bool> m_sqliteDb{this,"SQLiteDB",false,"Activate GeoModel initialization from SQLite"}; + Gaudi::Property<std::string> m_sqliteDbFullPath{this,"SQLiteDBFullPath","","Explicit setting of full path to SQLiteDB. For testing purposes only"}; std::unique_ptr<GeoModelIO::ReadGeoModel> m_sqliteReader{}; std::unique_ptr<GMDBManager> m_sqliteDbManager{}; diff --git a/Simulation/SimuJobTransforms/python/SimulationHelpers.py b/Simulation/SimuJobTransforms/python/SimulationHelpers.py index 32646e605939816e28b007fc3e873a3b372b9c3a..ab3c73d3bbe370cf0404d4ae914fa8b465c35188 100644 --- a/Simulation/SimuJobTransforms/python/SimulationHelpers.py +++ b/Simulation/SimuJobTransforms/python/SimulationHelpers.py @@ -8,7 +8,7 @@ def getDetectorsFromRunArgs(flags, runArgs): detectors = runArgs.detectors else: from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors - detectors = getDefaultDetectors(flags.GeoModel.AtlasVersion, flags.GeoModel.SQLiteDB, includeForward=False) + detectors = getDefaultDetectors(flags.GeoModel.AtlasVersion, flags.GeoModel.SQLiteDB, flags.GeoModel.SQLiteDBFullPath, includeForward=False) # Support switching on Forward Detectors if hasattr(runArgs, 'LucidOn'): diff --git a/Tools/PyJobTransforms/python/CommonRunArgsToFlags.py b/Tools/PyJobTransforms/python/CommonRunArgsToFlags.py index 3b999c740e3263fe3b818c62b16003b6f26ac4cb..a64c01c4e55c4664d7c520246226f5246bfa8e40 100644 --- a/Tools/PyJobTransforms/python/CommonRunArgsToFlags.py +++ b/Tools/PyJobTransforms/python/CommonRunArgsToFlags.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # Reset preload libs for proper execution of child-processes (ATR-26769). # We only put this here because this is executed by all CA transform skeletons: @@ -26,6 +26,10 @@ def commonRunArgsToFlags(runArgs,configFlags): if hasattr(runArgs,"geometrySQLite"): configFlags.GeoModel.SQLiteDB=runArgs.geometrySQLite + if hasattr(runArgs,"geometrySQLiteFullPath"): + configFlags.GeoModel.SQLiteDBFullPath=runArgs.geometrySQLiteFullPath + configFlags.GeoModel.SQLiteDB=True + if hasattr(runArgs,"triggerConfig"): configFlags.Trigger.triggerConfig=runArgs.triggerConfig diff --git a/Tools/PyJobTransforms/python/trfArgs.py b/Tools/PyJobTransforms/python/trfArgs.py index 4c45643a885ea2a74118e2fe56bf1dcdd2863bb5..91e8a876cadcfaa3ea3ffb75ea03ffbecfb9f94e 100644 --- a/Tools/PyJobTransforms/python/trfArgs.py +++ b/Tools/PyJobTransforms/python/trfArgs.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration ## @Package PyJobTransforms.trfArgs # @brief Standard arguments supported by trf infrastructure @@ -236,6 +236,8 @@ def addDetectorArguments(parser): help='ATLAS geometry version tag') parser.add_argument('--geometrySQLite', group='Detector', type=argFactory(trfArgClasses.argBool), help='Switch to SQLite Geometry DB') + parser.add_argument('--geometrySQLiteFullPath', group='Detector', type=argFactory(trfArgClasses.argString), + help='Manual setting of SQLite Geometry DB path. For testing purposes only') parser.add_argument('--beamType', group='Detector', type=argFactory(trfArgClasses.argString), help='Manual beam type setting') parser.add_argument('--runNumber', '--RunNumber', group='Detector', type=argFactory(trfArgClasses.argInt),