diff --git a/Calorimeter/CaloG4Sim/src/EscapedEnergyRegistry.cc b/Calorimeter/CaloG4Sim/src/EscapedEnergyRegistry.cc index 39457a4d9139719e7859c625730262fb6d9ff20c..06c097fae6ec448578276c7753bf2b148d8cda3b 100644 --- a/Calorimeter/CaloG4Sim/src/EscapedEnergyRegistry.cc +++ b/Calorimeter/CaloG4Sim/src/EscapedEnergyRegistry.cc @@ -10,6 +10,7 @@ #include "CaloG4Sim/VEscapedEnergyProcessing.h" #include "G4ios.hh" +#include "G4Version.hh" #include "globals.hh" #include <map> @@ -106,7 +107,11 @@ EscapedEnergyRegistry* EscapedEnergyRegistry::GetInstance() // m_processingMap = consists of pair< G4String, VEscapedEnergyProcessing* > for (auto& [key, storedProcess] : m_processingMap) { +#if G4VERSION_NUMBER < 1100 if ( volumeName.contains(key) ) +#else + if ( G4StrUtil::contains(volumeName, key) ) +#endif return storedProcess.get(); } diff --git a/Control/AthenaConfiguration/python/AllConfigFlags.py b/Control/AthenaConfiguration/python/AllConfigFlags.py index 956a50a8b0105da6b57f63bb042584de97db2a91..9b71ab42cd21c60b1d804cf044cc4b525f7e443d 100644 --- a/Control/AthenaConfiguration/python/AllConfigFlags.py +++ b/Control/AthenaConfiguration/python/AllConfigFlags.py @@ -231,6 +231,7 @@ def initConfigFlags(): acf.addFlag('Output.AODFileName', '') acf.addFlag('Output.HISTFileName', '') + acf.addFlag('Output.doWriteHITS', lambda prevFlags: bool(prevFlags.Output.HITSFileName)) # write out HITS file acf.addFlag('Output.doWriteRDO', lambda prevFlags: bool(prevFlags.Output.RDOFileName)) # write out RDO file acf.addFlag('Output.doWriteRDO_SGNL', lambda prevFlags: bool(prevFlags.Output.RDO_SGNLFileName)) # write out RDO_SGNL file acf.addFlag('Output.doWriteESD', lambda prevFlags: bool(prevFlags.Output.ESDFileName)) # write out ESD file diff --git a/Control/CxxUtils/CxxUtils/features.h b/Control/CxxUtils/CxxUtils/features.h index bfb24222a84df410666acadd982a8b4f4f1bdaca..cad1d49b09b939f399879b7e5d202c0fd28e6678 100644 --- a/Control/CxxUtils/CxxUtils/features.h +++ b/Control/CxxUtils/CxxUtils/features.h @@ -12,7 +12,7 @@ #ifndef CXXUTILS_FEATURES_H #define CXXUTILS_FEATURES_H -#if defined(__GLIBC__) +#if !defined(__APPLE__) #include <features.h> #endif diff --git a/Control/SGTools/CMakeLists.txt b/Control/SGTools/CMakeLists.txt index a1a4b519c05c730c1f869cd5ca33814ba8a08a41..829aa281779c4b788f7c721117e7cf49519c5c32 100644 --- a/Control/SGTools/CMakeLists.txt +++ b/Control/SGTools/CMakeLists.txt @@ -10,8 +10,7 @@ find_package( Boost ) atlas_add_library( SGTools src/*.cxx PUBLIC_HEADERS SGTools - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} AthenaKernel CxxUtils GaudiKernel + LINK_LIBRARIES AthenaKernel CxxUtils GaudiKernel PRIVATE_LINK_LIBRARIES SGAudCore ) atlas_add_dictionary( SGToolsDict @@ -38,12 +37,14 @@ atlas_add_test( StringPool_test atlas_add_test( DataProxy_test SOURCES test/DataProxy_test.cxx - LINK_LIBRARIES SGTools ) + INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + LINK_LIBRARIES SGTools ${Boost_LIBRARIES} ) atlas_add_test( DataStore_test SOURCES test/DataStore_test.cxx - LINK_LIBRARIES SGTools TestTools ) + INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + LINK_LIBRARIES SGTools TestTools ${Boost_LIBRARIES} ) atlas_add_test( TransientAddress_test SOURCES diff --git a/Control/SGTools/SGTools/DataStore.h b/Control/SGTools/SGTools/DataStore.h index 014ea88c708bf9d4637f1ec2947bb1ac8df3197d..8e8b94b452a2ae1ccc5f995012405123fda48a38 100755 --- a/Control/SGTools/SGTools/DataStore.h +++ b/Control/SGTools/SGTools/DataStore.h @@ -19,8 +19,7 @@ #include "CxxUtils/SimpleUpdater.h" #include "GaudiKernel/ClassID.h" #include "GaudiKernel/StatusCode.h" -#include <boost/array.hpp> -#include <boost/type_traits/transform_traits.hpp> + #include <exception> #include <list> #include <vector> diff --git a/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py b/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py index 4c4bf10bbc8838fc9a0fc494736afec71523dd0c..cbfda836a81da18a356a6bdc545558caede70c48 100644 --- a/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py +++ b/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py @@ -2,12 +2,13 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator, ConfigurationError from AthenaConfiguration.ComponentFactory import CompFactory -from AthenaConfiguration.Enums import Format, ProductionStep +from AthenaConfiguration.Enums import ProductionStep from AthenaCommon.Logging import logging def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], - disableEventTag=False, trigNavThinningSvc=None, AcceptAlgs=[]): + disableEventTag=False, trigNavThinningSvc=None, + AcceptAlgs=[], HelperTools=[]): eventInfoKey = "EventInfo" if flags.Common.ProductionStep == ProductionStep.PileUpPresampling: eventInfoKey = f"{flags.Overlay.BkgPrefix}EventInfo" @@ -62,6 +63,7 @@ def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], ItemList=finalItemList, MetadataItemList=MetadataItemList, OutputFile=fileName, + HelperTools=HelperTools, ) outputStream.AcceptAlgs += AcceptAlgs outputStream.ExtraOutputs += [("DataHeader", f"StoreGateSvc+{outputStreamName}")] @@ -90,55 +92,6 @@ def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], stream=outputStream, streamName=outputStreamName)) - # Setup FileMetaData - from xAODMetaDataCnv.FileMetaDataConfig import FileMetaDataCfg - result.merge(FileMetaDataCfg(flags, - stream=outputStream, - streamName=outputStreamName)) - - # Setup additional MetaData - - # ====================================================== - # TODO: - # ====================================================== - # For the time being we're adding common MetaData items - # and configure the necessary tools/services en masse. - # Ideally, we should introduce a self-sufficienct config - # for each item and merge them here. - # ====================================================== - if any([ x in streamName for x in ['AOD','ESD'] ]): - # LumiBlockMetaDataTool seems to cause crashes in MP derivation jobs - # As done in RecExCommon_topOptions.py use the algorithm in MP jobs - # This needs to be checked and confirmed... - mdToolNames = [] - # Propagate cutbookkeepers - if 'CutBookkeepers' in flags.Input.MetadataItems: - mdToolNames.append('BookkeeperTool') - - if flags.Input.Format == Format.BS and not flags.Common.isOnline: - from LumiBlockComps.CreateLumiBlockCollectionFromFileConfig import CreateLumiBlockCollectionFromFileCfg - result.merge(CreateLumiBlockCollectionFromFileCfg(flags)) - elif "LumiBlock" in flags.Input.MetadataItems: - mdToolNames.append('LumiBlockMetaDataTool') - - outputStream.MetadataItemList += ['xAOD::TriggerMenuContainer#*' - ,'xAOD::TriggerMenuAuxContainer#*' - ,'xAOD::TriggerMenuJsonContainer#*' - ,'xAOD::TriggerMenuJsonAuxContainer#*' - ,'xAOD::LumiBlockRangeContainer#*' - ,'xAOD::LumiBlockRangeAuxContainer#*' - ,'ByteStreamMetadataContainer#*' - ,'xAOD::TruthMetaDataContainer#TruthMetaData' - ,'xAOD::TruthMetaDataAuxContainer#TruthMetaDataAux.'] - # TODO: temporary - from EventBookkeeperTools.EventBookkeeperToolsConfig import CutFlowOutputList - outputStream.MetadataItemList += CutFlowOutputList(flags) - - from AthenaServices.MetaDataSvcConfig import MetaDataSvcCfg - result.merge(MetaDataSvcCfg(flags, - tools = [CompFactory.xAODMaker.TriggerMenuMetaDataTool('TriggerMenuMetaDataTool')], - toolNames = mdToolNames)) - # Support for MT thinning. thinningCacheTool = CompFactory.Athena.ThinningCacheTool(f"ThinningCacheTool_Stream{streamName}", StreamName=outputStreamName) @@ -197,3 +150,21 @@ def addToAOD(flags, itemOrList, **kwargs): return ComponentAccumulator() items = [itemOrList] if isinstance(itemOrList, str) else itemOrList return OutputStreamCfg(flags, "AOD", ItemList=items, **kwargs) + +def addToMetaData(flags, streamName, itemOrList, AcceptAlgs=[], HelperTools=[], **kwargs): + """ + Adds Metadata items to the stream named streamName + + Similar to addToESD/AOD, itemOrList can be either a list of items or just one time + The additional arguments, AcceptAlgs and HelperTools, are passed to the underlying stream + The former is needed when there are special kernels, e.g., simulation/derivation + The latter is needed primarily for the propagation of the FileMetaData tool + + Returns CA to be merged + """ + if not hasattr(flags.Output, f"doWrite{streamName}") or not getattr(flags.Output, f"doWrite{streamName}"): + return ComponentAccumulator() + items = [itemOrList] if isinstance(itemOrList, str) else itemOrList + acceptAlgs = [f"{streamName.strip('DAOD_')}Kernel"] if "DAOD" in streamName else AcceptAlgs + return OutputStreamCfg(flags, streamName, MetadataItemList=items, + AcceptAlgs=acceptAlgs, HelperTools=HelperTools, **kwargs) diff --git a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx index 3d4b2644fb26942b97db3bc1bef7d2076e529974..c0fdc9164c623446c78a6968fefef1e6ebe67d26 100644 --- a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx +++ b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx @@ -43,8 +43,6 @@ #include "DBReplicaSvc/IDBReplicaSvc.h" -#include <boost/algorithm/string.hpp> // for starts_with() - #include <cstdlib> // for getenv() #include <cstring> // for strcmp() #include <sys/stat.h> // for struct stat diff --git a/Event/xAOD/xAODMetaDataCnv/python/InfileMetaDataConfig.py b/Event/xAOD/xAODMetaDataCnv/python/InfileMetaDataConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..30d470bfd94d088f1740db08edeccc95882089b3 --- /dev/null +++ b/Event/xAOD/xAODMetaDataCnv/python/InfileMetaDataConfig.py @@ -0,0 +1,113 @@ +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.Enums import Format +from OutputStreamAthenaPool.OutputStreamConfig import addToMetaData + +def InfileMetaDataCfg(flags, streamName="", AcceptAlgs=[]): + """ + The main configuration for setting up Metadata for the stream named streamName + + Currently this is a single method that is used in all workflows + However, it would be more maintainable/preferable to split it into custom ones + For example, one for simulation/digitization/overlay, another for reco etc. + The additional argument, AcceptAlgs, is needed for workflows with custom kernels + + Returns CA to be merged + """ + + # Bare CA + result = ComponentAccumulator() + if not isinstance(streamName, str) or not streamName: + return result + + # Internal caches of tools + helperTools = [] + mdTools = [] + mdToolNames = [] + + # FileMetaData items + MetadataItemList = ["xAOD::FileMetaData#FileMetaData" + ,"xAOD::FileMetaDataAuxInfo#FileMetaDataAux."] + + # FileMetaDataCreatorTool and FileMetaDataTool work together + # Therefore, we want both of them configured + helperTools.append( + CompFactory.xAODMaker.FileMetaDataCreatorTool( + f"Stream{streamName}_FileMetaDataCreatorTool", + OutputKey="FileMetaData", + StreamName=f"Stream{streamName}", + ) + ) + + if "FileMetaData" in flags.Input.MetadataItems: + mdToolNames.append("xAODMaker::FileMetaDataTool") + + # Add MetaData that are relevant to downstream formats: ESD, AOD, and DAOD + if not flags.Output.doWriteHITS and not flags.Output.doWriteRDO: + + # Trigger MetaData items + mdTools.append(CompFactory.xAODMaker.TriggerMenuMetaDataTool("TriggerMenuMetaDataTool")) + MetadataItemList += ["xAOD::TriggerMenuContainer#*" + ,"xAOD::TriggerMenuAuxContainer#*" + ,"xAOD::TriggerMenuJsonContainer#*" + ,"xAOD::TriggerMenuJsonAuxContainer#*"] + + # Collision data specific MetaData items + if not flags.Input.isMC: + MetadataItemList += ["ByteStreamMetadataContainer#*" + ,"xAOD::LumiBlockRangeContainer#*" + ,"xAOD::LumiBlockRangeAuxContainer#*"] + # MC specific MetaData items + else: + MetadataItemList += ["xAOD::TruthMetaDataContainer#TruthMetaData" + ,"xAOD::TruthMetaDataAuxContainer#TruthMetaDataAux."] + + # CutFlow related MetaData items + # Now, I think this needs the CutFlowSvc to be set up + # For the time being this is done in the relevant skeleton, e.g. Derivations + # These should be reconciled, i.e. move that here and configure via flags + from EventBookkeeperTools.EventBookkeeperToolsConfig import CutFlowOutputList + MetadataItemList += CutFlowOutputList(flags) + + # Data specific MetaData components + if not flags.Input.isMC: + # Here we're running RAWtoALL so we're in creation mode + if flags.Input.Format == Format.BS and not flags.Common.isOnline: + # Configure ByteStream related components + from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg + result.merge(ByteStreamReadCfg(flags)) + # Configure LumiBlock Creation Algorithm + from LumiBlockComps.CreateLumiBlockCollectionFromFileConfig import CreateLumiBlockCollectionFromFileCfg + result.merge(CreateLumiBlockCollectionFromFileCfg(flags)) + elif "LumiBlock" in flags.Input.MetadataItems: + # Propagate LumiBlock data if it exists in the input + # Do we always want this tool instead? + mdToolNames.append("LumiBlockMetaDataTool") + # MC specific MetaData components + else: + # Configure TruthMetaDataTool + mdTools.append(CompFactory.xAODMaker.TruthMetaDataTool("TruthMetaDataTool")) + + # Propagate CutBookkeepers if it exists in the input + if "CutBookkeepers" in flags.Input.MetadataItems: + mdToolNames.append("BookkeeperTool") + + # Configure the relevant output stream + result.merge( + addToMetaData( + flags, + streamName=streamName, + itemOrList=MetadataItemList, + AcceptAlgs=AcceptAlgs, + HelperTools=helperTools, + ) + ) + + # Configure the MetaDataSvc and pass the relevant tools + from AthenaServices.MetaDataSvcConfig import MetaDataSvcCfg + result.merge(MetaDataSvcCfg(flags, tools = mdTools, toolNames = mdToolNames)) + + # Finally return the CA + return result diff --git a/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_SensitiveDetector.cxx b/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_SensitiveDetector.cxx index a94ca280f4b94a43c5cbc7226e55c33bf1d1a7b2..ab115b77e1ea0233c35e623b99d536d3566750e5 100644 --- a/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_SensitiveDetector.cxx +++ b/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_SensitiveDetector.cxx @@ -9,6 +9,7 @@ #include "AFP_Geometry/AFP_constants.h" // Geant4 headers +#include "G4Version.hh" #include "G4TouchableHistory.hh" #include "G4Step.hh" #include "G4Track.hh" @@ -162,8 +163,11 @@ bool AFP_SensitiveDetector::ProcessHits(G4Step* pStep, G4TouchableHistory*) m_nHitID++; - +#if G4VERSION_NUMBER < 1100 if ( (VolumeName.contains("TDSensor")) ) +#else + if ( (G4StrUtil::contains(VolumeName, "TDSensor")) ) +#endif { nQuarticID=szbuff[7]-0x30; if ( pStep->GetPostStepPoint()->GetProcessDefinedStep() == 0 ) return 1; @@ -178,7 +182,11 @@ bool AFP_SensitiveDetector::ProcessHits(G4Step* pStep, G4TouchableHistory*) } //////////////// Fast Cherenkov /////////////////// +#if G4VERSION_NUMBER < 1100 if ( (bRes=VolumeName.contains("TDQuarticBar[")) ) +#else + if ( (bRes=G4StrUtil::contains(VolumeName, "TDQuarticBar[")) ) +#endif { nQuarticID=szbuff[7]-0x30; @@ -229,9 +237,14 @@ bool AFP_SensitiveDetector::ProcessHits(G4Step* pStep, G4TouchableHistory*) //G4int Rsize = Rind->Entries() - 1; //G4double Pmin = Rind->GetMinPhotonEnergy(); // 800 nm +#if G4VERSION_NUMBER < 1100 G4double Pmin = Rind->GetMinLowEdgeEnergy(); //G4double Pmax = Rind->GetMaxPhotonEnergy(); // 200 nm G4double Pmax = Rind->GetMaxLowEdgeEnergy(); +#else + G4double Pmin = Rind->GetMinEnergy(); + G4double Pmax = Rind->GetMaxEnergy(); +#endif G4double dp = Pmax - Pmin; //G4double maxCosTheta = BetaInverse / Rind->GetMinProperty(); G4double maxCosTheta = BetaInverse / Rind->GetMinValue(); @@ -384,9 +397,11 @@ bool AFP_SensitiveDetector::ProcessHits(G4Step* pStep, G4TouchableHistory*) } } ///////////////////////////////////////////////////// - +#if G4VERSION_NUMBER < 1100 else if (VolumeName.contains("SIDSensor") || (bIsSIDAuxVSID=VolumeName.contains("SIDVacuumSensor"))){ - +#else + else if (G4StrUtil::contains(VolumeName, "SIDSensor") || (bIsSIDAuxVSID=G4StrUtil::contains(VolumeName, "SIDVacuumSensor"))){ +#endif if(!bIsSIDAuxVSID && !(fEnergyDeposit>0.0)) { //hit in SID sensor but with zero deposited energy (transportation) diff --git a/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_SiDSensitiveDetector.cxx b/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_SiDSensitiveDetector.cxx index 4776bbb65ef204482b81760983ba2f177a925d62..894696d6b2e77e137b4b0d5d6884e3f7765799b6 100644 --- a/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_SiDSensitiveDetector.cxx +++ b/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_SiDSensitiveDetector.cxx @@ -9,6 +9,7 @@ #include "AFP_Geometry/AFP_constants.h" // Geant4 headers +#include "G4Version.hh" #include "G4TouchableHistory.hh" #include "G4Step.hh" #include "G4Track.hh" @@ -147,8 +148,11 @@ bool AFP_SiDSensitiveDetector::ProcessHits(G4Step* pStep, G4TouchableHistory*) m_nHitID++; ///////////////////////////////////////////////////// - +#if G4VERSION_NUMBER < 1100 if (VolumeName.contains("SIDSensor") || (bIsSIDAuxVSID=VolumeName.contains("SIDVacuumSensor"))){ +#else + if (G4StrUtil::contains(VolumeName, "SIDSensor") || (bIsSIDAuxVSID=G4StrUtil::contains(VolumeName, "SIDVacuumSensor"))){ +#endif if(!bIsSIDAuxVSID && !(fEnergyDeposit>0.0)) { diff --git a/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_TDSensitiveDetector.cxx b/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_TDSensitiveDetector.cxx index 4f841973e8cb3a14502d893de9201d3a081581fc..9e44b578d42c0b9cb9ae8bb5a87fc5e40dcccfb1 100644 --- a/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_TDSensitiveDetector.cxx +++ b/ForwardDetectors/AFP/AFP_G4_SD/src/AFP_TDSensitiveDetector.cxx @@ -6,6 +6,7 @@ #include "AFP_TDSensitiveDetector.h" // Geant4 headers +#include "G4Version.hh" #include "G4TouchableHistory.hh" #include "G4Step.hh" #include "G4Track.hh" @@ -182,7 +183,11 @@ bool AFP_TDSensitiveDetector::ProcessHits(G4Step* pStep, G4TouchableHistory*) } */ +#if G4VERSION_NUMBER < 1100 if ( (VolumeName.contains("TDQuarticBarVacBorder")) && pParticleDefinition->GetPDGCharge() !=0 ) +#else + if ( (G4StrUtil::contains(VolumeName, "TDQuarticBarVacBorder")) && pParticleDefinition->GetPDGCharge() !=0 ) +#endif { nQuarticID=szbuff[7]-0x30; /* @@ -197,7 +202,11 @@ bool AFP_TDSensitiveDetector::ProcessHits(G4Step* pStep, G4TouchableHistory*) } //////////////// Fast Cherenkov /////////////////// +#if G4VERSION_NUMBER < 1100 if ( (bRes=VolumeName.contains("TDQuarticBar[")) ) +#else + if ( (bRes=G4StrUtil::contains(VolumeName, "TDQuarticBar[")) ) +#endif { nQuarticID=szbuff[7]-0x30; @@ -259,9 +268,14 @@ bool AFP_TDSensitiveDetector::ProcessHits(G4Step* pStep, G4TouchableHistory*) //G4int Rsize = Rind->Entries() - 1; //G4double Pmin = Rind->GetMinPhotonEnergy(); // 800 nm +#if G4VERSION_NUMBER < 1100 G4double Pmin = Rind->GetMinLowEdgeEnergy(); //G4double Pmax = Rind->GetMaxPhotonEnergy(); // 200 nm G4double Pmax = Rind->GetMaxLowEdgeEnergy(); +#else + G4double Pmin = Rind->GetMinEnergy(); + G4double Pmax = Rind->GetMaxEnergy(); +#endif G4double dp = Pmax - Pmin; //G4double maxCosTheta = BetaInverse / Rind->GetMinProperty(); G4double maxCosTheta = BetaInverse / Rind->GetMinValue(); diff --git a/ForwardDetectors/ALFA/ALFA_BeamTransport/CMakeLists.txt b/ForwardDetectors/ALFA/ALFA_BeamTransport/CMakeLists.txt index 832d178dc761443101d1b2a4ad5c37fa2cf7792e..84367134dbb448e9fee38d0e6fe5072ab309a0c3 100644 --- a/ForwardDetectors/ALFA/ALFA_BeamTransport/CMakeLists.txt +++ b/ForwardDetectors/ALFA/ALFA_BeamTransport/CMakeLists.txt @@ -4,15 +4,14 @@ atlas_subdir( ALFA_BeamTransport ) # External dependencies: -find_package( Boost COMPONENTS filesystem thread system ) find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) # Component(s) in the package: atlas_add_component( ALFA_BeamTransport src/*.cxx src/components/*.cxx - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} AtlasHepMCLib AthenaBaseComps FPTracker GaudiKernel StoreGateLib xAODEventInfo GeneratorObjects FPTracker ) + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AtlasHepMCLib AthenaBaseComps FPTracker GaudiKernel StoreGateLib xAODEventInfo GeneratorObjects FPTracker ) # Install files from the package: atlas_install_joboptions( share/*.py ) diff --git a/ForwardDetectors/ALFA/ALFA_BeamTransport/src/ALFA_BeamTrack.cxx b/ForwardDetectors/ALFA/ALFA_BeamTransport/src/ALFA_BeamTrack.cxx index 1a1c437570080b5783e4c02aeb302cf026dc241d..816772e5e6e58a0c93f58a18111aafe1bfb2e722 100644 --- a/ForwardDetectors/ALFA/ALFA_BeamTransport/src/ALFA_BeamTrack.cxx +++ b/ForwardDetectors/ALFA/ALFA_BeamTransport/src/ALFA_BeamTrack.cxx @@ -16,17 +16,11 @@ #include "FPTracker/getMagnetConfigFiles.h" #include "FPTracker/getAlfaMagnetConfigFiles.h" #include "FPTracker/ConfigData.h" -//#include "FPTracker/readConfigData.h" #include "FPTracker/FPTrackerConstants.h" #include "FPTracker/Point.h" -//Boost -#include "boost/program_options/cmdline.hpp" -#include "boost/program_options/options_description.hpp" -#include "boost/program_options/parsers.hpp" -#include "boost/program_options/variables_map.hpp" - +#include <memory> #include <iostream> #include <utility> diff --git a/ForwardDetectors/ALFA/ALFA_BeamTransport/src/ALFA_BeamTrack.h b/ForwardDetectors/ALFA/ALFA_BeamTransport/src/ALFA_BeamTrack.h index afbea6678f7b58b57a2a17ec65282afeec961d21..d6cf8f808a3bfb90ed9be3e63472818bf3b33526 100644 --- a/ForwardDetectors/ALFA/ALFA_BeamTransport/src/ALFA_BeamTrack.h +++ b/ForwardDetectors/ALFA/ALFA_BeamTransport/src/ALFA_BeamTrack.h @@ -23,11 +23,6 @@ //#include "FPTracker/readConfigData.h" #include "FPTracker/FPTrackerConstants.h" #include "FPTracker/Point.h" -//Boost -#include "boost/program_options/cmdline.hpp" -#include "boost/program_options/options_description.hpp" -#include "boost/program_options/parsers.hpp" -#include "boost/program_options/variables_map.hpp" #include <memory> class ALFA_BeamTrack diff --git a/ForwardDetectors/LUCID/LUCID_SimUtils/LUCID_OpProcess/src/LucidPhysicsTool.cxx b/ForwardDetectors/LUCID/LUCID_SimUtils/LUCID_OpProcess/src/LucidPhysicsTool.cxx index b8146c05f2cba60d3f74ed0bbd0bc2766b3e0a4a..cf010688e74a56ba581c8c0d0ed94bc0c3962966 100644 --- a/ForwardDetectors/LUCID/LUCID_SimUtils/LUCID_OpProcess/src/LucidPhysicsTool.cxx +++ b/ForwardDetectors/LUCID/LUCID_SimUtils/LUCID_OpProcess/src/LucidPhysicsTool.cxx @@ -92,8 +92,10 @@ void LucidPhysicsTool::ConstructProcess() theCerenkovProcess->SetMaxNumPhotonsPerStep(MaxNumPhotons); theScintillationProcess->SetTrackSecondariesFirst(true); +#if G4VERSION_NUMBER < 1100 + // This should be defaulted to 1. in 11.0 and newer theScintillationProcess->SetScintillationYieldFactor(1.); - +#endif PARTICLEITERATOR->reset(); diff --git a/Generators/Pythia8B_i/src/Pythia8B_i.cxx b/Generators/Pythia8B_i/src/Pythia8B_i.cxx index 520ae6ebe2c2999b851bbd840c96da0c75416f3e..62818d85e6c9c13f0c71270b0b57dc19cfe0d59f 100644 --- a/Generators/Pythia8B_i/src/Pythia8B_i.cxx +++ b/Generators/Pythia8B_i/src/Pythia8B_i.cxx @@ -15,7 +15,6 @@ #include "Pythia8B_i/UserSelections.h" #include "GeneratorObjects/McEventCollection.h" #include "AtlasHepMC/GenEvent.h" -#include <boost/algorithm/string.hpp> // calls to fortran routines #include "AthenaKernel/RNGWrapper.h" diff --git a/HLT/Event/ByteStreamEmonSvc/src/ByteStreamEmonInputSvc.cxx b/HLT/Event/ByteStreamEmonSvc/src/ByteStreamEmonInputSvc.cxx index fd8ca3ea734c1c9afd5a1663b807e271a70e191f..312921180645de9a846c17c0257ba34b3cac195d 100644 --- a/HLT/Event/ByteStreamEmonSvc/src/ByteStreamEmonInputSvc.cxx +++ b/HLT/Event/ByteStreamEmonSvc/src/ByteStreamEmonInputSvc.cxx @@ -34,9 +34,6 @@ #include <csignal> #include <sstream> -#include <boost/algorithm/string.hpp> -#include <boost/preprocessor/repetition.hpp> - #include <memory> namespace { diff --git a/HLT/Trigger/TrigControl/TrigServices/python/TrigServicesConfig.py b/HLT/Trigger/TrigControl/TrigServices/python/TrigServicesConfig.py index 9eb3163825aa9e04a176ca368354c01d5284beb3..0b644e1578b6055cbb9a90b4106605a51b52d453 100644 --- a/HLT/Trigger/TrigControl/TrigServices/python/TrigServicesConfig.py +++ b/HLT/Trigger/TrigControl/TrigServices/python/TrigServicesConfig.py @@ -194,4 +194,6 @@ if __name__=="__main__": flags = defaultOnlineFlags() flags.lock() - TrigServicesCfg(flags) + cfg = ComponentAccumulator() + cfg.merge( TrigServicesCfg(flags) ) + cfg.wasMerged() diff --git a/InnerDetector/InDetConfig/python/ITkConfigFlags.py b/InnerDetector/InDetConfig/python/ITkConfigFlags.py index 352b6b8d41be015cdab50d065f8d259938b68513..8bb00858e598edbc8e11f8ea6099073d4887ef4e 100644 --- a/InnerDetector/InDetConfig/python/ITkConfigFlags.py +++ b/InnerDetector/InDetConfig/python/ITkConfigFlags.py @@ -53,10 +53,6 @@ def createITkConfigFlags(): itkcf.addFlag("ITk.Tracking.doDigitalClustering", False) itkcf.addFlag("ITk.Tracking.doFastTracking", False) # Turn running of ITk FastTracking on and off itkcf.addFlag("ITk.Tracking.doConversionFinding",True) # Turn running of ConversionFinding second pass on and off - itkcf.addFlag("ITk.Tracking.doPixelClusterSplitting", True) # Try to split pixel clusters - itkcf.addFlag("ITk.Tracking.pixelClusterSplittingType", "Truth") # choose splitter type: NeuralNet, AnalogClus or Truth - itkcf.addFlag("ITk.Tracking.pixelClusterSplitProb1", 0.55) # Cut value for splitting clusters into two parts - itkcf.addFlag("ITk.Tracking.pixelClusterSplitProb2", 0.45) # Cut value for splitting clusters into three parts itkcf.addFlag("ITk.Tracking.writeSeedValNtuple", False) # Turn writing of seed validation ntuple on and off itkcf.addFlag("ITk.Tracking.writeExtendedPRDInfo", False) # Turn running of doLowPt second pass on and off diff --git a/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py b/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py index 04aaad855f144aabdefedfd5d6ec0e371835bb1d..6828778ceea9c7381dba11571f59a57498a1a613 100644 --- a/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py +++ b/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py @@ -6,7 +6,8 @@ from AthenaConfiguration.Enums import Format from InDetConfig.TrackRecoConfig import FTAG_AUXDATA -_flags_set = [] # For caching +_flags_set = [] # For caching + def CombinedTrackingPassFlagSets(flags): @@ -49,10 +50,11 @@ def CombinedTrackingPassFlagSets(flags): "ITk.Tracking.LowPt") flags_set += [flagsLowPt] - _flags_set = flags_set # Put into cache + _flags_set = flags_set # Put into cache return flags_set + def ITkClusterSplitProbabilityContainerName(flags): flags_set = CombinedTrackingPassFlagSets(flags) extension = flags_set[-1].ITk.Tracking.ActiveConfig.extension @@ -82,7 +84,7 @@ def ITkTrackRecoCfg(flags): # Includes also tracks which end in standalone TrackParticle collections InputExtendedITkTracks = [] ClusterSplitProbContainer = "" - StatTrackCollections = [] # To be passed to the InDetRecStatistics alg + StatTrackCollections = [] # To be passed to the InDetRecStatistics alg StatTrackTruthCollections = [] from InDetConfig.ITkTrackingSiPatternConfig import ITkTrackingSiPatternCfg @@ -97,10 +99,10 @@ def ITkTrackRecoCfg(flags): result.merge(ITkTrackingSiPatternCfg( current_flags, - InputCollections = InputExtendedITkTracks, - ResolvedTrackCollectionKey = TrackContainer, - SiSPSeededTrackCollectionKey = SiSPSeededTracks, - ClusterSplitProbContainer = ClusterSplitProbContainer)) + InputCollections=InputExtendedITkTracks, + ResolvedTrackCollectionKey=TrackContainer, + SiSPSeededTrackCollectionKey=SiSPSeededTracks, + ClusterSplitProbContainer=ClusterSplitProbContainer)) StatTrackCollections += [SiSPSeededTracks, TrackContainer] StatTrackTruthCollections += [SiSPSeededTracks+"TruthCollection", TrackContainer+"TruthCollection"] @@ -109,22 +111,22 @@ def ITkTrackRecoCfg(flags): if flags.Tracking.doTruth: result.merge(ITkTrackTruthCfg( current_flags, - Tracks = TrackContainer, - DetailedTruth = TrackContainer+"DetailedTruth", - TracksTruth = TrackContainer+"TruthCollection")) - + Tracks=TrackContainer, + DetailedTruth=TrackContainer+"DetailedTruth", + TracksTruth=TrackContainer+"TruthCollection")) + result.merge(ITkTrackParticleCnvAlgCfg( current_flags, - name = extension + "TrackParticleCnvAlg", - TrackContainerName = TrackContainer, - xAODTrackParticlesFromTracksContainerName = \ - "InDet" + extension + "TrackParticles", - ClusterSplitProbabilityName = ClusterSplitProbContainer, - AssociationMapName = "")) + name=extension + "TrackParticleCnvAlg", + TrackContainerName=TrackContainer, + xAODTrackParticlesFromTracksContainerName=( + "InDet" + extension + "TrackParticles"), + ClusterSplitProbabilityName=ClusterSplitProbContainer, + AssociationMapName="")) else: - ClusterSplitProbContainer = "ITkAmbiguityProcessorSplitProb" + \ - extension + ClusterSplitProbContainer = ( + "ITkAmbiguityProcessorSplitProb" + extension) InputCombinedITkTracks += [TrackContainer] InputExtendedITkTracks += [TrackContainer] @@ -133,18 +135,19 @@ def ITkTrackRecoCfg(flags): ITkTrackCollectionMergerAlgCfg) result.merge(ITkTrackCollectionMergerAlgCfg( flags, - InputCombinedTracks = InputCombinedITkTracks, + InputCombinedTracks=InputCombinedITkTracks, OutputCombinedTracks="CombinedITkTracks", - AssociationMapName = "PRDtoTrackMapCombinedITkTracks" \ - if not flags.ITk.Tracking.doFastTracking else "")) + AssociationMapName=( + "PRDtoTrackMapCombinedITkTracks" + if not flags.ITk.Tracking.doFastTracking else ""))) if flags.Tracking.doTruth: from InDetConfig.ITkTrackTruthConfig import ITkTrackTruthCfg result.merge(ITkTrackTruthCfg( flags, - Tracks = "CombinedITkTracks", - DetailedTruth = "CombinedITkTracksDetailedTruth", - TracksTruth = "CombinedITkTracksTruthCollection")) + Tracks="CombinedITkTracks", + DetailedTruth="CombinedITkTracksDetailedTruth", + TracksTruth="CombinedITkTracksTruthCollection")) StatTrackCollections += ["CombinedITkTracks"] StatTrackTruthCollections += ["CombinedITkTracksTruthCollection"] @@ -153,18 +156,19 @@ def ITkTrackRecoCfg(flags): from TrkConfig.TrkTrackSlimmerConfig import TrackSlimmerCfg result.merge(TrackSlimmerCfg( flags, - TrackLocation = ["CombinedITkTracks"])) + TrackLocation=["CombinedITkTracks"])) if flags.Tracking.doTruth: result.merge(ITkTrackTruthCfg(flags)) result.merge(ITkTrackParticleCnvAlgCfg( flags, - ClusterSplitProbabilityName = \ - ITkClusterSplitProbabilityContainerName(flags) \ - if not flags.ITk.Tracking.doFastTracking else "", - AssociationMapName = "PRDtoTrackMapCombinedITkTracks" \ - if not flags.ITk.Tracking.doFastTracking else "")) + ClusterSplitProbabilityName=( + ITkClusterSplitProbabilityContainerName(flags) + if not flags.ITk.Tracking.doFastTracking else ""), + AssociationMapName=( + "PRDtoTrackMapCombinedITkTracks" + if not flags.ITk.Tracking.doFastTracking else ""))) if flags.Tracking.doVertexFinding: from InDetConfig.InDetPriVxFinderConfig import primaryVertexFindingCfg @@ -175,24 +179,24 @@ def ITkTrackRecoCfg(flags): ITkRecStatisticsAlgCfg) result.merge(ITkRecStatisticsAlgCfg( flags, - TrackCollectionKeys = StatTrackCollections, - TrackTruthCollectionKeys = \ - StatTrackTruthCollections if flags.Tracking.doTruth else [])) + TrackCollectionKeys=StatTrackCollections, + TrackTruthCollectionKeys=( + StatTrackTruthCollections if flags.Tracking.doTruth else []))) if flags.Tracking.doTruth: from InDetConfig.InDetTrackClusterAssValidationConfig import ( ITkTrackClusterAssValidationCfg) result.merge(ITkTrackClusterAssValidationCfg( - flags_set[0], # Use cuts from primary pass - TracksLocation = StatTrackCollections)) + flags_set[0], # Use cuts from primary pass + TracksLocation=StatTrackCollections)) if flags.ITk.Tracking.writeExtendedPRDInfo: from InDetConfig.InDetPrepRawDataToxAODConfig import ( ITkPixelPrepDataToxAODCfg, ITkStripPrepDataToxAODCfg) result.merge(ITkPixelPrepDataToxAODCfg( flags, - ClusterSplitProbabilityName = \ - ITkClusterSplitProbabilityContainerName(flags))) + ClusterSplitProbabilityName=( + ITkClusterSplitProbabilityContainerName(flags)))) result.merge(ITkStripPrepDataToxAODCfg(flags)) from DerivationFrameworkInDet.InDetToolsConfig import ( @@ -205,35 +209,36 @@ def ITkTrackRecoCfg(flags): result.addEventAlgo( CompFactory.DerivationFramework.CommonAugmentation( "ITkCommonKernel", - AugmentationTools = [TrackStateOnSurfaceDecorator])) + AugmentationTools=[TrackStateOnSurfaceDecorator])) if flags.Input.isMC: from InDetPhysValMonitoring.InDetPhysValDecorationConfig import ( InDetPhysHitDecoratorAlgCfg) result.merge(InDetPhysHitDecoratorAlgCfg(flags)) - + if flags.Tracking.doStoreTrackSeeds: TrackContainer = "SiSPSeedSegments" result.merge(ITkTrackTruthCfg( flags, - Tracks = TrackContainer, - DetailedTruth = f"{TrackContainer}DetailedTruth", - TracksTruth = f"{TrackContainer}TruthCollection")) + Tracks=TrackContainer, + DetailedTruth=f"{TrackContainer}DetailedTruth", + TracksTruth=f"{TrackContainer}TruthCollection")) result.merge(ITkTrackParticleCnvAlgCfg( flags, - name = f"{TrackContainer}TrackParticleCnvAlg", - TrackContainerName = TrackContainer, - xAODTrackParticlesFromTracksContainerName = \ - f"{TrackContainer}TrackParticles")) + name=f"{TrackContainer}TrackParticleCnvAlg", + TrackContainerName=TrackContainer, + xAODTrackParticlesFromTracksContainerName=( + f"{TrackContainer}TrackParticles"))) # output result.merge(ITkTrackRecoOutputCfg(flags)) return result + def ITkTrackRecoOutputCfg(flags): - from OutputStreamAthenaPool.OutputStreamConfig import addToESD,addToAOD + from OutputStreamAthenaPool.OutputStreamConfig import addToESD, addToAOD toAOD = [] toESD = [] @@ -255,9 +260,10 @@ def ITkTrackRecoOutputCfg(flags): "InDet::SCT_ClusterContainer#ITkStripClusters", "InDet::PixelClusterContainer#ITkPixelClusters", "InDet::PixelGangedClusterAmbiguities#ITkPixelClusterAmbiguitiesMap", - "InDet::PixelGangedClusterAmbiguities#ITkSplitClusterAmbiguityMap" ] - toESD += ["Trk::ClusterSplitProbabilityContainer#" + \ + if flags.Tracking.doPixelClusterSplitting: + toESD += ["InDet::PixelGangedClusterAmbiguities#ITkSplitClusterAmbiguityMap"] + toESD += ["Trk::ClusterSplitProbabilityContainer#" + ITkClusterSplitProbabilityContainerName(flags)] # Save (Detailed) Track Truth @@ -273,7 +279,8 @@ def ITkTrackRecoOutputCfg(flags): ##### AOD ##### toAOD += ["xAOD::TrackParticleContainer#InDetTrackParticles"] - toAOD += [f"xAOD::TrackParticleAuxContainer#InDetTrackParticlesAux.{excludedAuxData}"] + toAOD += [ + f"xAOD::TrackParticleAuxContainer#InDetTrackParticlesAux.{excludedAuxData}"] if flags.ITk.Tracking.writeExtendedPRDInfo: toAOD += [ @@ -287,8 +294,8 @@ def ITkTrackRecoOutputCfg(flags): "xAOD::TrackStateValidationAuxContainer#ITkStripMSOSsAux." ] - if flags.Tracking.doLargeD0 and \ - flags.Tracking.storeSeparateLargeD0Container: + if (flags.Tracking.doLargeD0 and + flags.Tracking.storeSeparateLargeD0Container): toAOD += [ 'xAOD::TrackParticleContainer#InDet{}TrackParticles'.format( flags.ITk.Tracking.LargeD0Pass.extension @@ -334,7 +341,7 @@ if __name__ == "__main__": top_acc.merge(ITkTrackRecoCfg(flags)) from AthenaCommon.Constants import DEBUG - top_acc.foreach_component("AthEventSeq/*").OutputLevel=DEBUG + top_acc.foreach_component("AthEventSeq/*").OutputLevel = DEBUG top_acc.printConfig(withDetails=True, summariseProps=True) top_acc.store(open("ITkTrackReco.pkl", "wb")) diff --git a/InnerDetector/InDetConfig/python/InDetAmbiTrackSelectionToolConfig.py b/InnerDetector/InDetConfig/python/InDetAmbiTrackSelectionToolConfig.py index 1b1ee62398bd12f7dccd739f7feac3f0fb8ec4df..9bbbebeab4a44570b4bca9712c458d6a913345fc 100644 --- a/InnerDetector/InDetConfig/python/InDetAmbiTrackSelectionToolConfig.py +++ b/InnerDetector/InDetConfig/python/InDetAmbiTrackSelectionToolConfig.py @@ -33,13 +33,13 @@ def InDetAmbiTrackSelectionToolCfg(flags, name="InDetAmbiTrackSelectionTool", ** kwargs.setdefault("UseParameterization", False) kwargs.setdefault("Cosmics", flags.Beam.Type is BeamType.Cosmics) kwargs.setdefault("doPixelSplitting", - flags.InDet.Tracking.doPixelClusterSplitting) + flags.Tracking.doPixelClusterSplitting) if flags.InDet.Tracking.ActiveConfig.useTIDE_Ambi: kwargs.setdefault("sharedProbCut", - flags.InDet.Tracking.pixelClusterSplitProb1) + flags.Tracking.pixelClusterSplitProb1) kwargs.setdefault("sharedProbCut2", - flags.InDet.Tracking.pixelClusterSplitProb2) + flags.Tracking.pixelClusterSplitProb2) kwargs.setdefault("minSiHitsToAllowSplitting", 8 if flags.GeoModel.Run is LHCPeriod.Run1 else 9) kwargs.setdefault("minUniqueSCTHits", 4) @@ -134,7 +134,7 @@ def InDetTRTAmbiTrackSelectionToolCfg(flags, name='InDetTRT_SeededAmbiTrackSelec flags.InDet.Tracking.ActiveConfig.useParameterizedTRTCuts) kwargs.setdefault("Cosmics", flags.Beam.Type is BeamType.Cosmics) kwargs.setdefault("doPixelSplitting", - flags.InDet.Tracking.doPixelClusterSplitting) + flags.Tracking.doPixelClusterSplitting) acc.setPrivateTools( CompFactory.InDet.InDetAmbiTrackSelectionTool(name, **kwargs)) @@ -181,13 +181,13 @@ def ITkAmbiTrackSelectionToolCfg(flags, name="ITkAmbiTrackSelectionTool", **kwar kwargs.setdefault("UseParameterization", False) kwargs.setdefault("Cosmics", flags.Beam.Type is BeamType.Cosmics) kwargs.setdefault("doPixelSplitting", - flags.ITk.Tracking.doPixelClusterSplitting) + flags.Tracking.doPixelClusterSplitting) kwargs.setdefault("doITk", True) kwargs.setdefault("sharedProbCut", - flags.ITk.Tracking.pixelClusterSplitProb1) + flags.Tracking.pixelClusterSplitProb1) kwargs.setdefault("sharedProbCut2", - flags.ITk.Tracking.pixelClusterSplitProb2) + flags.Tracking.pixelClusterSplitProb2) kwargs.setdefault("minSiHitsToAllowSplitting", 9) kwargs.setdefault("minUniqueSCTHits", 4) kwargs.setdefault("minTrackChi2ForSharedHits", 3) diff --git a/InnerDetector/InDetConfig/python/InDetConfigFlags.py b/InnerDetector/InDetConfig/python/InDetConfigFlags.py index cb4ae545ccc4240f501606e1a853c8f6b72a558e..eba797309de28dc73d77a4bc5708cfc38121b8c7 100644 --- a/InnerDetector/InDetConfig/python/InDetConfigFlags.py +++ b/InnerDetector/InDetConfig/python/InDetConfigFlags.py @@ -1,7 +1,7 @@ # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags -from AthenaConfiguration.Enums import BeamType, LHCPeriod +from AthenaConfiguration.Enums import BeamType def createInDetConfigFlags(): icf = AthConfigFlags() @@ -41,17 +41,6 @@ def createInDetConfigFlags(): # Tracking parameters - # Try to split pixel clusters - icf.addFlag("InDet.Tracking.doPixelClusterSplitting", - lambda prevFlags: not(prevFlags.Beam.Type is BeamType.Cosmics)) - # choose splitter type: NeuralNet or AnalogClus - icf.addFlag("InDet.Tracking.pixelClusterSplittingType", "NeuralNet") - # Cut value for splitting clusters into two parts - icf.addFlag("InDet.Tracking.pixelClusterSplitProb1", - lambda prevFlags: (0.5 if prevFlags.GeoModel.Run is LHCPeriod.Run1 else 0.55)) - # Cut value for splitting clusters into three parts - icf.addFlag("InDet.Tracking.pixelClusterSplitProb2", - lambda prevFlags: (0.5 if prevFlags.GeoModel.Run is LHCPeriod.Run1 else 0.45)) # use beam spot position in pixel NN icf.addFlag("InDet.Tracking.useBeamSpotInfoNN", True) # Enable check for dead modules and FEs diff --git a/InnerDetector/InDetConfig/python/SiClusterOnTrackTool_PixelConfig.py b/InnerDetector/InDetConfig/python/SiClusterOnTrackTool_PixelConfig.py index 41cb137797fe2f0d8154427aeb8c1929ade016a3..949d6e9178542e138dc745fad336fbeb10469ec6 100644 --- a/InnerDetector/InDetConfig/python/SiClusterOnTrackTool_PixelConfig.py +++ b/InnerDetector/InDetConfig/python/SiClusterOnTrackTool_PixelConfig.py @@ -31,14 +31,12 @@ def InDetPixelClusterOnTrackToolBaseCfg(flags, name="PixelClusterOnTrackTool", * kwargs.setdefault("ErrorStrategy", 0) kwargs.setdefault("PositionStrategy", 0) - kwargs.setdefault( - "applyNNcorrection", - flags.InDet.Tracking.doPixelClusterSplitting and - flags.InDet.Tracking.pixelClusterSplittingType == "NeuralNet") - kwargs.setdefault( - "NNIBLcorrection", - flags.InDet.Tracking.doPixelClusterSplitting and - flags.InDet.Tracking.pixelClusterSplittingType == "NeuralNet") + kwargs.setdefault("applyNNcorrection", + flags.Tracking.doPixelClusterSplitting and + flags.Tracking.pixelClusterSplittingType == "NeuralNet") + kwargs.setdefault("NNIBLcorrection", + flags.Tracking.doPixelClusterSplitting and + flags.Tracking.pixelClusterSplittingType == "NeuralNet") split_cluster_map_extension = ( flags.InDet.Tracking.ActiveConfig.extension if flags.InDet.Tracking.ActiveConfig.useTIDE_Ambi else "") @@ -59,8 +57,8 @@ def InDetPixelClusterOnTrackToolDigitalCfg(flags, name="InDetPixelClusterOnTrack def InDetPixelClusterOnTrackToolNNSplittingCfg(flags, name="InDetPixelClusterOnTrackToolNNSplitting", **kwargs): acc = ComponentAccumulator() - if (flags.InDet.Tracking.doPixelClusterSplitting and - flags.InDet.Tracking.pixelClusterSplittingType == "NeuralNet" and + if (flags.Tracking.doPixelClusterSplitting and + flags.Tracking.pixelClusterSplittingType == "NeuralNet" and "NnClusterizationFactory" not in kwargs): from InDetConfig.SiClusterizationToolConfig import ( NnClusterizationFactoryCfg) @@ -154,8 +152,8 @@ def ITkPixelClusterOnTrackToolBaseCfg(flags, name="ITkPixelClusterOnTrackTool", def ITkPixelClusterOnTrackToolTruthSplittingCfg(flags, name='ITkPixelClusterOnTrackToolTruthSplitting', **kwargs): acc = ComponentAccumulator() - if (flags.ITk.Tracking.doPixelClusterSplitting and - flags.ITk.Tracking.pixelClusterSplittingType == "Truth"): + if (flags.Tracking.doPixelClusterSplitting and + flags.Tracking.pixelClusterSplittingType == "Truth"): if 'NnClusterizationFactory' not in kwargs: from InDetConfig.SiClusterizationToolConfig import ( ITkTruthClusterizationFactoryCfg) diff --git a/InnerDetector/InDetConfig/python/SiClusterizationToolConfig.py b/InnerDetector/InDetConfig/python/SiClusterizationToolConfig.py index b562336658ea9d1222856b8799d7460597ed0b06..893f46cc6237d68f021d9eaaf58ad29f77bc0568 100644 --- a/InnerDetector/InDetConfig/python/SiClusterizationToolConfig.py +++ b/InnerDetector/InDetConfig/python/SiClusterizationToolConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration # Configuration of SiClusterizationTool package from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator @@ -6,335 +6,427 @@ from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.Enums import BeamType, LHCPeriod from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline -def ClusterMakerToolCfg(flags, name="InDetClusterMakerTool", **kwargs) : + +def ClusterMakerToolCfg(flags, name="InDetClusterMakerTool"): acc = ComponentAccumulator() + kwargs = {} # This directly needs the following Conditions data: # PixelChargeCalibCondData & PixelOfflineCalibData - from PixelConditionsAlgorithms.PixelConditionsConfig import PixelChargeLUTCalibCondAlgCfg, PixelChargeCalibCondAlgCfg, PixelOfflineCalibCondAlgCfg + from PixelConditionsAlgorithms.PixelConditionsConfig import ( + PixelChargeLUTCalibCondAlgCfg, PixelChargeCalibCondAlgCfg, + PixelOfflineCalibCondAlgCfg) if flags.GeoModel.Run is LHCPeriod.Run3: acc.merge(PixelChargeLUTCalibCondAlgCfg(flags)) else: acc.merge(PixelChargeCalibCondAlgCfg(flags)) acc.merge(PixelOfflineCalibCondAlgCfg(flags)) - from PixelReadoutGeometry.PixelReadoutGeometryConfig import PixelReadoutManagerCfg + from PixelReadoutGeometry.PixelReadoutGeometryConfig import ( + PixelReadoutManagerCfg) acc.merge(PixelReadoutManagerCfg(flags)) - from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleToolCfg - PixelLorentzAngleTool = acc.popToolsAndMerge(PixelLorentzAngleToolCfg(flags)) - from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleToolCfg - SCTLorentzAngleTool = acc.popToolsAndMerge( SCT_LorentzAngleToolCfg(flags) ) + from SiLorentzAngleTool.PixelLorentzAngleConfig import ( + PixelLorentzAngleToolCfg) + kwargs["PixelLorentzAngleTool"] = acc.popToolsAndMerge( + PixelLorentzAngleToolCfg(flags)) - kwargs.setdefault("PixelLorentzAngleTool", PixelLorentzAngleTool) - kwargs.setdefault("SCTLorentzAngleTool", SCTLorentzAngleTool) + from SiLorentzAngleTool.SCT_LorentzAngleConfig import ( + SCT_LorentzAngleToolCfg) + kwargs["SCTLorentzAngleTool"] = acc.popToolsAndMerge( + SCT_LorentzAngleToolCfg(flags)) - InDetClusterMakerTool = CompFactory.InDet.ClusterMakerTool(name, **kwargs) - acc.setPrivateTools(InDetClusterMakerTool) + acc.setPrivateTools(CompFactory.InDet.ClusterMakerTool(name, **kwargs)) return acc -def ITkClusterMakerToolCfg(flags, name="ITkClusterMakerTool", **kwargs) : + +def ITkClusterMakerToolCfg(flags, name="ITkClusterMakerTool"): acc = ComponentAccumulator() + kwargs = {} - from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelChargeCalibCondAlgCfg - from PixelReadoutGeometry.PixelReadoutGeometryConfig import ITkPixelReadoutManagerCfg + from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ( + ITkPixelChargeCalibCondAlgCfg) + from PixelReadoutGeometry.PixelReadoutGeometryConfig import ( + ITkPixelReadoutManagerCfg) # This directly needs the following Conditions data: # PixelModuleData & PixelChargeCalibCondData acc.merge(ITkPixelChargeCalibCondAlgCfg(flags)) acc.merge(ITkPixelReadoutManagerCfg(flags)) + kwargs["PixelReadoutManager"] = acc.getService("ITkPixelReadoutManager") + + from SiLorentzAngleTool.ITkPixelLorentzAngleConfig import ( + ITkPixelLorentzAngleToolCfg) + kwargs["PixelLorentzAngleTool"] = acc.popToolsAndMerge( + ITkPixelLorentzAngleToolCfg(flags)) - from SiLorentzAngleTool.ITkPixelLorentzAngleConfig import ITkPixelLorentzAngleToolCfg - ITkPixelLorentzAngleTool = acc.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags)) - from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg - ITkStripLorentzAngleTool = acc.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags)) + from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ( + ITkStripLorentzAngleToolCfg) + kwargs["SCTLorentzAngleTool"] = acc.popToolsAndMerge( + ITkStripLorentzAngleToolCfg(flags)) - kwargs.setdefault("PixelChargeCalibCondData", "ITkPixelChargeCalibCondData") - kwargs.setdefault("PixelReadoutManager",acc.getService("ITkPixelReadoutManager")) - kwargs.setdefault("PixelLorentzAngleTool", ITkPixelLorentzAngleTool) - kwargs.setdefault("SCTLorentzAngleTool", ITkStripLorentzAngleTool) - kwargs.setdefault("PixelOfflineCalibData", "") + kwargs["PixelChargeCalibCondData"] = "ITkPixelChargeCalibCondData" + kwargs["PixelOfflineCalibData"] = "" - ITkClusterMakerTool = CompFactory.InDet.ClusterMakerTool(name, **kwargs) - acc.setPrivateTools(ITkClusterMakerTool) + acc.setPrivateTools(CompFactory.InDet.ClusterMakerTool(name, **kwargs)) return acc -def InDetPixelRDOToolCfg(flags, name="InDetPixelRDOTool", **kwargs): - acc = ComponentAccumulator() - from PixelConditionsTools.PixelConditionsSummaryConfig import PixelConditionsSummaryCfg - kwargs.setdefault("PixelConditionsSummaryTool", acc.popToolsAndMerge(PixelConditionsSummaryCfg(flags)) ) +def InDetPixelRDOToolCfg(flags, name="InDetPixelRDOTool", + PixelDetElStatus="PixelDetectorElementStatus"): + # To produce PixelDetectorElementCollection condition data + from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg + acc = PixelReadoutGeometryCfg(flags) + kwargs = {} + kwargs["PixelDetElStatus"] = PixelDetElStatus + + if PixelDetElStatus != "": + from PixelConditionsAlgorithms.PixelConditionsConfig import ( + PixelDetectorElementStatusAlgCfg) + acc.merge(PixelDetectorElementStatusAlgCfg(flags)) - if "PixelDetElStatus" not in kwargs : - from PixelConditionsAlgorithms.PixelConditionsConfig import PixelDetectorElementStatusAlgCfg - acc.merge( PixelDetectorElementStatusAlgCfg(flags) ) - kwargs.setdefault("PixelDetElStatus", "PixelDetectorElementStatus") + from PixelConditionsTools.PixelConditionsSummaryConfig import ( + PixelConditionsSummaryCfg) + kwargs["PixelConditionsSummaryTool"] = acc.popToolsAndMerge( + PixelConditionsSummaryCfg(flags)) - # Enable duplicated RDO check for data15 because duplication mechanism was used. - if len(flags.Input.ProjectName)>=6 and flags.Input.ProjectName[:6]=="data15": - kwargs.setdefault("CheckDuplicatedRDO", True ) + # Enable duplicated RDO check for data15 because duplication mechanism + # was used. + kwargs["CheckDuplicatedRDO"] = (len(flags.Input.ProjectName) >= 6 and + flags.Input.ProjectName[:6] == "data15") acc.setPrivateTools(CompFactory.InDet.PixelRDOTool(name, **kwargs)) return acc -def ITkPixelRDOToolCfg(flags, name="ITkPixelRDOTool", **kwargs): - acc = ComponentAccumulator() +def ITkPixelRDOToolCfg(flags, name="ITkPixelRDOTool"): + # To produce ITkPixelDetectorElementCollection condition data + from PixelGeoModelXml.ITkPixelGeoModelConfig import ( + ITkPixelReadoutGeometryCfg) + acc = ITkPixelReadoutGeometryCfg(flags) + kwargs = {} - from PixelConditionsTools.ITkPixelConditionsSummaryConfig import ITkPixelConditionsSummaryCfg - kwargs.setdefault( - "PixelConditionsSummaryTool", - acc.popToolsAndMerge(ITkPixelConditionsSummaryCfg(flags)) - ) - kwargs.setdefault("PixelDetEleCollKey","ITkPixelDetectorElementCollection") - kwargs.setdefault("CheckGanged", False) + from PixelConditionsTools.ITkPixelConditionsSummaryConfig import ( + ITkPixelConditionsSummaryCfg) + kwargs["PixelConditionsSummaryTool"] = acc.popToolsAndMerge( + ITkPixelConditionsSummaryCfg(flags)) + + kwargs["PixelDetEleCollKey"] = "ITkPixelDetectorElementCollection" + kwargs["CheckGanged"] = False acc.setPrivateTools(CompFactory.InDet.PixelRDOTool(name, **kwargs)) return acc -def TrigPixelRDOToolCfg(flags, name="InDetTrigPixelRDOTool", **kwargs): - kwargs.setdefault("PixelDetElStatus", "") - return InDetPixelRDOToolCfg(flags, name, **kwargs) +def TrigPixelRDOToolCfg(flags, name="InDetTrigPixelRDOTool"): + return InDetPixelRDOToolCfg(flags, name, PixelDetElStatus="") -def MergedPixelsToolCfg(flags, name="InDetMergedPixelsTool", **kwargs) : +def MergedPixelsToolCfg(flags, name="InDetMergedPixelsTool"): acc = ComponentAccumulator() - # --- now load the framework for the clustering - kwargs.setdefault("globalPosAlg", acc.popToolsAndMerge(ClusterMakerToolCfg(flags))) - kwargs.setdefault("PixelRDOTool", acc.popToolsAndMerge(InDetPixelRDOToolCfg(flags))) + kwargs = {} + + kwargs["globalPosAlg"] = acc.popToolsAndMerge(ClusterMakerToolCfg(flags)) + kwargs["PixelRDOTool"] = acc.popToolsAndMerge(InDetPixelRDOToolCfg(flags)) - InDetMergedPixelsTool = CompFactory.InDet.MergedPixelsTool(name, **kwargs) - acc.setPrivateTools(InDetMergedPixelsTool) + acc.setPrivateTools(CompFactory.InDet.MergedPixelsTool(name, **kwargs)) return acc -def TrigMergedPixelsToolCfg(flags, name="InDetTrigMergedPixelsTool", **kwargs) : +def TrigMergedPixelsToolCfg(flags, name="InDetTrigMergedPixelsTool"): acc = ComponentAccumulator() - kwargs.setdefault("globalPosAlg", acc.popToolsAndMerge(ClusterMakerToolCfg(flags))) - kwargs.setdefault("PixelRDOTool", acc.popToolsAndMerge(TrigPixelRDOToolCfg(flags))) + kwargs = {} + + kwargs["globalPosAlg"] = acc.popToolsAndMerge(ClusterMakerToolCfg(flags)) + kwargs["PixelRDOTool"] = acc.popToolsAndMerge(TrigPixelRDOToolCfg(flags)) + acc.setPrivateTools(CompFactory.InDet.MergedPixelsTool(name, **kwargs)) return acc -def ITkMergedPixelsToolCfg(flags, name="ITkMergedPixelsTool", **kwargs) : + +def ITkMergedPixelsToolCfg(flags, name="ITkMergedPixelsTool"): acc = ComponentAccumulator() - # --- now load the framework for the clustering - kwargs.setdefault("globalPosAlg", acc.popToolsAndMerge(ITkClusterMakerToolCfg(flags))) - kwargs.setdefault("PixelRDOTool", acc.popToolsAndMerge(ITkPixelRDOToolCfg(flags))) + kwargs = {} - ITkMergedPixelsTool = CompFactory.InDet.MergedPixelsTool(name, **kwargs) - acc.setPrivateTools(ITkMergedPixelsTool) + kwargs["globalPosAlg"] = acc.popToolsAndMerge( + ITkClusterMakerToolCfg(flags)) + kwargs["PixelRDOTool"] = acc.popToolsAndMerge(ITkPixelRDOToolCfg(flags)) + + acc.setPrivateTools(CompFactory.InDet.MergedPixelsTool(name, **kwargs)) return acc -def PixelClusterNnCondAlgCfg(flags, **kwargs): + +def PixelClusterNnCondAlgCfg(flags, name="PixelClusterNnCondAlg", + trackNetwork=False): acc = ComponentAccumulator() - track_nn = kwargs.pop('TrackNetwork',False) + kwargs = {} + nn_names = [ - "NumberParticles_NoTrack/", - "ImpactPoints1P_NoTrack/", - "ImpactPoints2P_NoTrack/", - "ImpactPoints3P_NoTrack/", - "ImpactPointErrorsX1_NoTrack/", - "ImpactPointErrorsX2_NoTrack/", - "ImpactPointErrorsX3_NoTrack/", - "ImpactPointErrorsY1_NoTrack/", - "ImpactPointErrorsY2_NoTrack/", - "ImpactPointErrorsY3_NoTrack/" ] - - if track_nn : - nn_names = [ elm.replace('_NoTrack', '') for elm in nn_names ] - - acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/PixelClustering/PixelClusNNCalib", "/PIXEL/PixelClustering/PixelClusNNCalib", className='CondAttrListCollection')) - kwargs.setdefault("NetworkNames", nn_names) - kwargs.setdefault("WriteKey", 'PixelClusterNN' if not track_nn else 'PixelClusterNNWithTrack') - - if 'NetworkToHistoTool' not in kwargs: - from TrkConfig.TrkNeuralNetworkUtilsConfig import NeuralNetworkToHistoToolCfg - NeuralNetworkToHistoTool = acc.popToolsAndMerge(NeuralNetworkToHistoToolCfg(flags)) - kwargs.setdefault("NetworkToHistoTool", NeuralNetworkToHistoTool) - - acc.addCondAlgo(CompFactory.InDet.TTrainedNetworkCondAlg(kwargs.pop("name", 'PixelClusterNnCondAlg'), **kwargs)) + "NumberParticles_NoTrack/", + "ImpactPoints1P_NoTrack/", + "ImpactPoints2P_NoTrack/", + "ImpactPoints3P_NoTrack/", + "ImpactPointErrorsX1_NoTrack/", + "ImpactPointErrorsX2_NoTrack/", + "ImpactPointErrorsX3_NoTrack/", + "ImpactPointErrorsY1_NoTrack/", + "ImpactPointErrorsY2_NoTrack/", + "ImpactPointErrorsY3_NoTrack/"] + + if trackNetwork: + nn_names = [elm.replace('_NoTrack', '') for elm in nn_names] + + kwargs["NetworkNames"] = nn_names + kwargs["GetInputsInfo"] = True + kwargs["WriteKey"] = ("PixelClusterNN" if not trackNetwork + else "PixelClusterNNWithTrack") + + acc.merge(addFoldersSplitOnline( + flags, "PIXEL", + "/PIXEL/Onl/PixelClustering/PixelClusNNCalib", + "/PIXEL/PixelClustering/PixelClusNNCalib", + className='CondAttrListCollection')) + + from TrkConfig.TrkNeuralNetworkUtilsConfig import ( + NeuralNetworkToHistoToolCfg) + kwargs["NetworkToHistoTool"] = acc.popToolsAndMerge( + NeuralNetworkToHistoToolCfg(flags)) + + acc.addCondAlgo(CompFactory.InDet.TTrainedNetworkCondAlg(name, **kwargs)) return acc -def PixelClusterNnWithTrackCondAlgCfg(flags, **kwargs): - kwargs.setdefault("TrackNetwork", True) - kwargs.setdefault("name", 'PixelClusterNnWithTrackCondAlg') - acc = PixelClusterNnCondAlgCfg(flags, **kwargs) - return acc +def PixelClusterNnWithTrackCondAlgCfg( + flags, name="PixelClusterNnWithTrackCondAlg"): + return PixelClusterNnCondAlgCfg(flags, name, trackNetwork=True) + -def LWTNNCondAlgCfg(flags, **kwargs): +def LWTNNCondAlgCfg(flags, name="LWTNNCondAlg"): acc = ComponentAccumulator() - # Check for the folder - acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/PixelClustering/PixelNNCalibJSON", "/PIXEL/PixelClustering/PixelNNCalibJSON", className="CondAttrListCollection")) - # What we'll store it as - kwargs.setdefault("WriteKey", 'PixelClusterNNJSON') + kwargs = {} - # Set up the algorithm - acc.addCondAlgo(CompFactory.InDet.LWTNNCondAlg(kwargs.pop("name", "LWTNNCondAlg"), **kwargs)) + acc.merge(addFoldersSplitOnline( + flags, "PIXEL", + "/PIXEL/Onl/PixelClustering/PixelNNCalibJSON", + "/PIXEL/PixelClustering/PixelNNCalibJSON", + className="CondAttrListCollection")) + + kwargs["WriteKey"] = "PixelClusterNNJSON" + + acc.addCondAlgo(CompFactory.InDet.LWTNNCondAlg(name, **kwargs)) return acc -def NnClusterizationFactoryCfg(flags, name="NnClusterizationFactory", **kwargs): + +def NnClusterizationFactoryCfg(flags, name="NnClusterizationFactory"): acc = ComponentAccumulator() + kwargs = {} - from PixelConditionsAlgorithms.PixelConditionsConfig import PixelChargeLUTCalibCondAlgCfg, PixelChargeCalibCondAlgCfg + from PixelConditionsAlgorithms.PixelConditionsConfig import ( + PixelChargeLUTCalibCondAlgCfg, PixelChargeCalibCondAlgCfg) if flags.GeoModel.Run is LHCPeriod.Run3: acc.merge(PixelChargeLUTCalibCondAlgCfg(flags)) else: acc.merge(PixelChargeCalibCondAlgCfg(flags)) - if "PixelLorentzAngleTool" not in kwargs: - from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleToolCfg - PixelLorentzAngleTool = acc.popToolsAndMerge(PixelLorentzAngleToolCfg(flags)) - kwargs.setdefault("PixelLorentzAngleTool", PixelLorentzAngleTool) - if flags.GeoModel.Run is LHCPeriod.Run1: - acc.merge(PixelClusterNnCondAlgCfg(flags, name="PixelClusterNnCondAlg", GetInputsInfo=True)) - acc.merge(PixelClusterNnWithTrackCondAlgCfg(flags, name="PixelClusterNnWithTrackCondAlg", GetInputsInfo=True)) + acc.merge(PixelClusterNnCondAlgCfg(flags)) + acc.merge(PixelClusterNnWithTrackCondAlgCfg(flags)) else: - acc.merge(LWTNNCondAlgCfg(flags, name="LWTNNCondAlg")) - - kwargs.setdefault("doRunI", flags.GeoModel.Run is LHCPeriod.Run1) - kwargs.setdefault("useToT", False) - kwargs.setdefault("useRecenteringNNWithoutTracks", flags.GeoModel.Run is LHCPeriod.Run1) - kwargs.setdefault("useRecenteringNNWithTracks", False) - kwargs.setdefault("correctLorShiftBarrelWithoutTracks", 0) - kwargs.setdefault("correctLorShiftBarrelWithTracks", 0.030 if flags.GeoModel.Run is LHCPeriod.Run1 else 0.000) - kwargs.setdefault("useTTrainedNetworks", flags.GeoModel.Run is LHCPeriod.Run1) - kwargs.setdefault("NnCollectionReadKey", "PixelClusterNN" if flags.GeoModel.Run is LHCPeriod.Run1 else "") - kwargs.setdefault("NnCollectionWithTrackReadKey", "PixelClusterNNWithTrack" if flags.GeoModel.Run is LHCPeriod.Run1 else "") - kwargs.setdefault("NnCollectionJSONReadKey", "" if flags.GeoModel.Run is LHCPeriod.Run1 else "PixelClusterNNJSON") - - acc.setPrivateTools(CompFactory.InDet.NnClusterizationFactory(name, **kwargs)) + acc.merge(LWTNNCondAlgCfg(flags)) + + from SiLorentzAngleTool.PixelLorentzAngleConfig import ( + PixelLorentzAngleToolCfg) + kwargs["PixelLorentzAngleTool"] = acc.popToolsAndMerge( + PixelLorentzAngleToolCfg(flags)) + + kwargs["doRunI"] = flags.GeoModel.Run is LHCPeriod.Run1 + kwargs["useToT"] = False + kwargs["useRecenteringNNWithoutTracks"] = ( + flags.GeoModel.Run is LHCPeriod.Run1) + kwargs["useRecenteringNNWithTracks"] = False + kwargs["correctLorShiftBarrelWithoutTracks"] = 0 + kwargs["correctLorShiftBarrelWithTracks"] = ( + 0.03 if flags.GeoModel.Run is LHCPeriod.Run1 else 0.) + kwargs["useTTrainedNetworks"] = flags.GeoModel.Run is LHCPeriod.Run1 + kwargs["NnCollectionReadKey"] = ( + "PixelClusterNN" if flags.GeoModel.Run is LHCPeriod.Run1 else "") + kwargs["NnCollectionWithTrackReadKey"] = ( + "PixelClusterNNWithTrack" if flags.GeoModel.Run is LHCPeriod.Run1 + else "") + kwargs["NnCollectionJSONReadKey"] = ( + "" if flags.GeoModel.Run is LHCPeriod.Run1 + else "PixelClusterNNJSON") + + acc.setPrivateTools( + CompFactory.InDet.NnClusterizationFactory(name, **kwargs)) return acc -def TrigNnClusterizationFactoryCfg(flags, name="TrigNnClusterizationFactory", **kwargs): + +def TrigNnClusterizationFactoryCfg(flags, name="TrigNnClusterizationFactory"): acc = ComponentAccumulator() + kwargs = {} - from PixelConditionsAlgorithms.PixelConditionsConfig import PixelChargeLUTCalibCondAlgCfg, PixelChargeCalibCondAlgCfg + from PixelConditionsAlgorithms.PixelConditionsConfig import ( + PixelChargeLUTCalibCondAlgCfg, PixelChargeCalibCondAlgCfg) if flags.GeoModel.Run is LHCPeriod.Run3: acc.merge(PixelChargeLUTCalibCondAlgCfg(flags)) else: acc.merge(PixelChargeCalibCondAlgCfg(flags)) - acc.merge(PixelClusterNnCondAlgCfg(flags, name="PixelClusterNnCondAlg", GetInputsInfo=True)) - acc.merge(PixelClusterNnWithTrackCondAlgCfg(flags, name="PixelClusterNnWithTrackCondAlg", GetInputsInfo=True)) + acc.merge(PixelClusterNnCondAlgCfg(flags)) + acc.merge(PixelClusterNnWithTrackCondAlgCfg(flags)) - if "PixelLorentzAngleTool" not in kwargs: - from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleToolCfg - PixelLorentzAngleTool = acc.popToolsAndMerge(PixelLorentzAngleToolCfg(flags)) - kwargs.setdefault("PixelLorentzAngleTool", PixelLorentzAngleTool) + from SiLorentzAngleTool.PixelLorentzAngleConfig import ( + PixelLorentzAngleToolCfg) + kwargs["PixelLorentzAngleTool"] = acc.popToolsAndMerge( + PixelLorentzAngleToolCfg(flags)) - kwargs.setdefault("useToT", False) - kwargs.setdefault("NnCollectionReadKey", "PixelClusterNN") - kwargs.setdefault("NnCollectionWithTrackReadKey", "PixelClusterNNWithTrack") + kwargs["useToT"] = False + kwargs["NnCollectionReadKey"] = "PixelClusterNN" + kwargs["NnCollectionWithTrackReadKey"] = "PixelClusterNNWithTrack" - acc.setPrivateTools(CompFactory.InDet.NnClusterizationFactory(name, **kwargs)) + acc.setPrivateTools( + CompFactory.InDet.NnClusterizationFactory(name, **kwargs)) return acc -def NnPixelClusterSplitProbToolCfg(flags, name="NnPixelClusterSplitProbTool", **kwargs): - acc = ComponentAccumulator() - # --- new NN prob tool - MultiplicityContent = [1 , 1 , 1] - NnClusterizationFactory = acc.popToolsAndMerge(NnClusterizationFactoryCfg(flags)) - kwargs.setdefault("PriorMultiplicityContent", MultiplicityContent) - kwargs.setdefault("NnClusterizationFactory", NnClusterizationFactory) - kwargs.setdefault("useBeamSpotInfo", flags.InDet.Tracking.useBeamSpotInfoNN) +def NnPixelClusterSplitProbToolCfg(flags, name="NnPixelClusterSplitProbTool"): + acc = ComponentAccumulator() + kwargs = {} - NnPixelClusterSplitProbTool = CompFactory.InDet.NnPixelClusterSplitProbTool(name,**kwargs) + kwargs["NnClusterizationFactory"] = acc.popToolsAndMerge( + NnClusterizationFactoryCfg(flags)) + kwargs["PriorMultiplicityContent"] = [1, 1, 1] + kwargs["useBeamSpotInfo"] = flags.InDet.Tracking.useBeamSpotInfoNN - acc.setPrivateTools(NnPixelClusterSplitProbTool) + acc.setPrivateTools( + CompFactory.InDet.NnPixelClusterSplitProbTool(name, **kwargs)) return acc -def PixelGangedAmbiguitiesFinderCfg(flags, name="InDetPixelGangedAmbiguitiesFinder", **kwargs) : + +def PixelGangedAmbiguitiesFinderCfg( + flags, name="InDetPixelGangedAmbiguitiesFinder"): + # To produce PixelDetectorElementCollection condition data from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg acc = PixelReadoutGeometryCfg(flags) - InDetPixelGangedAmbiguitiesFinder = CompFactory.InDet.PixelGangedAmbiguitiesFinder(name, **kwargs) - acc.setPrivateTools( InDetPixelGangedAmbiguitiesFinder ) + acc.setPrivateTools(CompFactory.InDet.PixelGangedAmbiguitiesFinder(name)) return acc -def ITkPixelGangedAmbiguitiesFinderCfg(flags, name="ITkPixelGangedAmbiguitiesFinder", **kwargs) : - from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg + +def ITkPixelGangedAmbiguitiesFinderCfg( + flags, name="ITkPixelGangedAmbiguitiesFinder"): + # To produce ITkPixelDetectorElementCollection condition data + from PixelGeoModelXml.ITkPixelGeoModelConfig import ( + ITkPixelReadoutGeometryCfg) acc = ITkPixelReadoutGeometryCfg(flags) - kwargs.setdefault("PixelDetEleCollKey", "ITkPixelDetectorElementCollection") - ITkPixelGangedAmbiguitiesFinder = CompFactory.InDet.PixelGangedAmbiguitiesFinder(name, **kwargs) - acc.setPrivateTools( ITkPixelGangedAmbiguitiesFinder ) + kwargs = {} + kwargs["PixelDetEleCollKey"] = "ITkPixelDetectorElementCollection" + + acc.setPrivateTools( + CompFactory.InDet.PixelGangedAmbiguitiesFinder(name, **kwargs)) return acc -def SCT_ClusteringToolCfg(flags, name="InDetSCT_ClusteringTool", **kwargs): + +def SCT_ClusteringToolCfg( + flags, name="InDetSCT_ClusteringTool", + conditionsTool=None, + SCTDetElStatus="SCTDetectorElementStatusWithoutFlagged"): + # To produce SCT_DetectorElementCollection from SCT_GeoModel.SCT_GeoModelConfig import SCT_ReadoutGeometryCfg - acc = SCT_ReadoutGeometryCfg(flags) # To produce SCT_DetectorElementCollection - from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_ConditionsSummaryToolCfg - InDetSCT_ConditionsSummaryToolWithoutFlagged = acc.popToolsAndMerge(SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=False)) - InDetClusterMakerTool = acc.popToolsAndMerge(ClusterMakerToolCfg(flags)) - from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleToolCfg - SCTLorentzAngleTool = acc.popToolsAndMerge(SCT_LorentzAngleToolCfg(flags)) - - kwargs.setdefault("conditionsTool", InDetSCT_ConditionsSummaryToolWithoutFlagged) - kwargs.setdefault("SCTDetElStatus","SCTDetectorElementStatusWithoutFlagged") - kwargs.setdefault("globalPosAlg", InDetClusterMakerTool) - kwargs.setdefault("LorentzAngleTool", SCTLorentzAngleTool) - if flags.InDet.selectSCTIntimeHits : - coll_25ns = flags.Beam.BunchSpacing<=25 and flags.Beam.Type is BeamType.Collisions - kwargs.setdefault("timeBins", "01X" if coll_25ns else "X1X") - - InDetSCT_ClusteringTool = CompFactory.InDet.SCT_ClusteringTool(name, **kwargs) - acc.setPrivateTools(InDetSCT_ClusteringTool) + acc = SCT_ReadoutGeometryCfg(flags) + kwargs = {} + kwargs["SCTDetElStatus"] = SCTDetElStatus + + if conditionsTool is None: + from SCT_ConditionsTools.SCT_ConditionsToolsConfig import ( + SCT_ConditionsSummaryToolCfg) + conditionsTool = acc.popToolsAndMerge( + SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=False)) + kwargs["conditionsTool"] = conditionsTool + + from SiLorentzAngleTool.SCT_LorentzAngleConfig import ( + SCT_LorentzAngleToolCfg) + kwargs["LorentzAngleTool"] = acc.popToolsAndMerge( + SCT_LorentzAngleToolCfg(flags)) + + kwargs["globalPosAlg"] = acc.popToolsAndMerge(ClusterMakerToolCfg(flags)) + + if flags.InDet.selectSCTIntimeHits: + coll_25ns = (flags.Beam.BunchSpacing <= 25 and + flags.Beam.Type is BeamType.Collisions) + kwargs["timeBins"] = "01X" if coll_25ns else "X1X" + + acc.setPrivateTools(CompFactory.InDet.SCT_ClusteringTool(name, **kwargs)) return acc -def Trig_SCT_ClusteringToolCfg(flags, name="Trig_SCT_ClusteringTool", **kwargs): - acc = ComponentAccumulator() - from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_ConditionsSummaryToolCfg - InDetSCT_ConditionsSummaryToolWithoutFlagged = acc.popToolsAndMerge(SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=False, withTdaqTool = False)) - - kwargs.setdefault("conditionsTool", InDetSCT_ConditionsSummaryToolWithoutFlagged) - kwargs.setdefault("SCTDetElStatus","") - - return SCT_ClusteringToolCfg(flags, name, **kwargs) - -def ITKStrip_SCT_ClusteringToolCfg(flags, name="ITkStripClusteringTool", **kwargs): - from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg - acc = ITkStripReadoutGeometryCfg(flags) # To produce ITkStripDetectorElementCollection - kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection") - - from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripConditionsSummaryToolCfg - ITkStripConditionsSummaryTool = acc.popToolsAndMerge(ITkStripConditionsSummaryToolCfg(flags)) - ITkClusterMakerTool = acc.popToolsAndMerge(ITkClusterMakerToolCfg(flags)) - from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg - ITkStripLorentzAngleTool = acc.popToolsAndMerge( ITkStripLorentzAngleToolCfg(flags) ) - - kwargs.setdefault("conditionsTool", ITkStripConditionsSummaryTool) - kwargs.setdefault("globalPosAlg", ITkClusterMakerTool) - kwargs.setdefault("LorentzAngleTool", ITkStripLorentzAngleTool) - kwargs.setdefault("useRowInformation", True) # ITk-specific clustering - if flags.ITk.selectStripIntimeHits : - coll_25ns = flags.Beam.BunchSpacing<=25 and flags.Beam.Type is BeamType.Collisions - kwargs.setdefault("timeBins", "01X" if coll_25ns else "X1X") - - InDetSCT_ClusteringTool = CompFactory.InDet.SCT_ClusteringTool(name, **kwargs) - acc.setPrivateTools(InDetSCT_ClusteringTool) - return acc -def ITkTruthClusterizationFactoryCfg(flags, name = 'ITkTruthClusterizationFactory', **kwargs): +def Trig_SCT_ClusteringToolCfg(flags, name="Trig_SCT_ClusteringTool"): acc = ComponentAccumulator() - kwargs.setdefault("InputSDOMap", 'ITkPixelSDO_Map') - ITkTruthClusterizationFactory = CompFactory.InDet.TruthClusterizationFactory( name, **kwargs ) - acc.setPrivateTools(ITkTruthClusterizationFactory) + + from SCT_ConditionsTools.SCT_ConditionsToolsConfig import ( + SCT_ConditionsSummaryToolCfg) + conditionsTool = acc.popToolsAndMerge(SCT_ConditionsSummaryToolCfg( + flags, withFlaggedCondTool=False, withTdaqTool=False)) + + acc.setPrivateTools(acc.popToolsAndMerge(SCT_ClusteringToolCfg( + flags, name, + conditionsTool=conditionsTool, + SCTDetElStatus="" + ))) return acc -def ITkTruthPixelClusterSplitProbToolCfg(flags, name="ITkTruthPixelClusterSplitProbTool", **kwargs): - acc = ComponentAccumulator() - # --- new NN prob tool - MultiplicityContent = [1 , 1 , 1] - ITkTruthClusterizationFactory = acc.popToolsAndMerge(ITkTruthClusterizationFactoryCfg(flags)) +def ITKStrip_SCT_ClusteringToolCfg(flags, name="ITkStripClusteringTool"): + # To produce ITkStripDetectorElementCollection + from StripGeoModelXml.ITkStripGeoModelConfig import ( + ITkStripReadoutGeometryCfg) + acc = ITkStripReadoutGeometryCfg(flags) + kwargs = {} + kwargs["SCTDetEleCollKey"] = "ITkStripDetectorElementCollection" + kwargs["useRowInformation"] = True # ITk-specific clustering + + from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ( + ITkStripConditionsSummaryToolCfg) + kwargs["conditionsTool"] = acc.popToolsAndMerge( + ITkStripConditionsSummaryToolCfg(flags)) + + from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ( + ITkStripLorentzAngleToolCfg) + kwargs["LorentzAngleTool"] = acc.popToolsAndMerge( + ITkStripLorentzAngleToolCfg(flags)) - kwargs.setdefault("PriorMultiplicityContent", MultiplicityContent) - kwargs.setdefault("NnClusterizationFactory", ITkTruthClusterizationFactory) #Truth-based for ITk for now + kwargs["globalPosAlg"] = acc.popToolsAndMerge( + ITkClusterMakerToolCfg(flags)) - ITkTruthPixelClusterSplitProbTool = CompFactory.InDet.TruthPixelClusterSplitProbTool(name,**kwargs) #Truth-based for ITk for now + if flags.ITk.selectStripIntimeHits: + coll_25ns = (flags.Beam.BunchSpacing <= 25 and + flags.Beam.Type is BeamType.Collisions) + kwargs["timeBins"] = "01X" if coll_25ns else "X1X" - acc.setPrivateTools(ITkTruthPixelClusterSplitProbTool) + acc.setPrivateTools(CompFactory.InDet.SCT_ClusteringTool(name, **kwargs)) return acc + +def ITkTruthClusterizationFactoryCfg( + flags, name='ITkTruthClusterizationFactory'): + acc = ComponentAccumulator() + kwargs = {} + kwargs["InputSDOMap"] = "ITkPixelSDO_Map" + + acc.setPrivateTools( + CompFactory.InDet.TruthClusterizationFactory(name, **kwargs)) + return acc + + +def ITkTruthPixelClusterSplitProbToolCfg( + flags, name="ITkTruthPixelClusterSplitProbTool"): + acc = ComponentAccumulator() + kwargs = {} + kwargs["PriorMultiplicityContent"] = [1, 1, 1] + kwargs["NnClusterizationFactory"] = acc.popToolsAndMerge( + ITkTruthClusterizationFactoryCfg(flags)) + + # Truth-based for ITk for now + acc.setPrivateTools( + CompFactory.InDet.TruthPixelClusterSplitProbTool(name, **kwargs)) + return acc diff --git a/InnerDetector/InDetConfig/python/SiliconPreProcessing.py b/InnerDetector/InDetConfig/python/SiliconPreProcessing.py index c6348282b7eabe2d6d4c57c2cd533eeea0b8c762..5da07742c2f7ebec13d1be8d29424b43de27012a 100644 --- a/InnerDetector/InDetConfig/python/SiliconPreProcessing.py +++ b/InnerDetector/InDetConfig/python/SiliconPreProcessing.py @@ -2,6 +2,7 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.Enums import Format + def InDetRecPreProcessingSiliconCfg(flags, **kwargs): acc = ComponentAccumulator() # ------------------------------------------------------------ @@ -15,65 +16,78 @@ def InDetRecPreProcessingSiliconCfg(flags, **kwargs): # # --- Slim BCM RDOs by zero-suppressing - # + # if flags.Detector.EnableBCM: if flags.Input.Format is Format.BS: - from BCM_RawDataByteStreamCnv.BCM_RawDataByteStreamCnvConfig import BCM_RawDataProviderAlgCfg + from BCM_RawDataByteStreamCnv.BCM_RawDataByteStreamCnvConfig import ( + BCM_RawDataProviderAlgCfg) acc.merge(BCM_RawDataProviderAlgCfg(flags)) from InDetConfig.BCM_ZeroSuppressionConfig import BCM_ZeroSuppressionCfg acc.merge(BCM_ZeroSuppressionCfg(flags)) - + # # -- Pixel Clusterization # - if flags.Detector.EnablePixel and ( flags.Input.Format is Format.BS - or 'PixelRDOs' in flags.Input.Collections): + if (flags.Detector.EnablePixel and + (flags.Input.Format is Format.BS + or 'PixelRDOs' in flags.Input.Collections)): # # --- PixelClusterization algorithm # - from InDetConfig.InDetPrepRawDataFormationConfig import PixelClusterizationCfg + from InDetConfig.InDetPrepRawDataFormationConfig import ( + PixelClusterizationCfg) acc.merge(PixelClusterizationCfg(flags)) - if flags.InDet.doSplitReco : - from InDetConfig.InDetPrepRawDataFormationConfig import PixelClusterizationPUCfg + if flags.InDet.doSplitReco: + from InDetConfig.InDetPrepRawDataFormationConfig import ( + PixelClusterizationPUCfg) acc.merge(PixelClusterizationPUCfg(flags)) # # --- SCT Clusterization # - if flags.Detector.EnableSCT and ( flags.Input.Format is Format.BS - or 'SCT_RDOs' in flags.Input.Collections): + if (flags.Detector.EnableSCT and + (flags.Input.Format is Format.BS + or 'SCT_RDOs' in flags.Input.Collections)): # # --- SCT_Clusterization algorithm # - from InDetConfig.InDetPrepRawDataFormationConfig import SCTClusterizationCfg + from InDetConfig.InDetPrepRawDataFormationConfig import ( + SCTClusterizationCfg) acc.merge(SCTClusterizationCfg(flags)) - if flags.InDet.doSplitReco : - from InDetConfig.InDetPrepRawDataFormationConfig import SCTClusterizationPUCfg + if flags.InDet.doSplitReco: + from InDetConfig.InDetPrepRawDataFormationConfig import ( + SCTClusterizationPUCfg) acc.merge(SCTClusterizationPUCfg(flags)) # # ----------- form SpacePoints from clusters in SCT and Pixels # # - from InDetConfig.SiSpacePointFormationConfig import InDetSiTrackerSpacePointFinderCfg + from InDetConfig.SiSpacePointFormationConfig import ( + InDetSiTrackerSpacePointFinderCfg) acc.merge(InDetSiTrackerSpacePointFinderCfg(flags)) # this truth must only be done if you do PRD and SpacePointformation # If you only do the latter (== running on ESD) then the needed input (simdata) # is not in ESD but the resulting truth (clustertruth) is already there ... - if (flags.InDet.doTruth - and (not flags.Detector.EnableSCT or 'SCT_SDO_Map' in flags.Input.Collections) - and (not flags.Detector.EnablePixel or 'PixelSDO_Map' in flags.Input.Collections)) : - - from InDetConfig.InDetTruthAlgsConfig import InDetPRD_MultiTruthMakerSiCfg + if (flags.InDet.doTruth and + (not flags.Detector.EnableSCT or + 'SCT_SDO_Map' in flags.Input.Collections) and + (not flags.Detector.EnablePixel or + 'PixelSDO_Map' in flags.Input.Collections)): + + from InDetConfig.InDetTruthAlgsConfig import ( + InDetPRD_MultiTruthMakerSiCfg) acc.merge(InDetPRD_MultiTruthMakerSiCfg(flags)) if flags.InDet.doSplitReco: - from InDetConfig.InDetTruthAlgsConfig import InDetPRD_MultiTruthMakerSiPUCfg + from InDetConfig.InDetTruthAlgsConfig import ( + InDetPRD_MultiTruthMakerSiPUCfg) acc.merge(InDetPRD_MultiTruthMakerSiPUCfg(flags)) return acc + def ITkRecPreProcessingSiliconCfg(flags, **kwargs): acc = ComponentAccumulator() # ------------------------------------------------------------ @@ -95,64 +109,76 @@ def ITkRecPreProcessingSiliconCfg(flags, **kwargs): # # --- Deducing configuration from the flags # - from ActsInterop.TrackingComponentConfigurer import TrackingComponentConfigurer + from ActsInterop.TrackingComponentConfigurer import ( + TrackingComponentConfigurer) configuration_settings = TrackingComponentConfigurer(flags) - + # # -- Clusterization Algorithms # if configuration_settings.doAthenaCluster: - from InDetConfig.InDetPrepRawDataFormationConfig import AthenaTrkClusterizationCfg + from InDetConfig.InDetPrepRawDataFormationConfig import ( + AthenaTrkClusterizationCfg) acc.merge(AthenaTrkClusterizationCfg(flags)) - + if configuration_settings.doActsCluster: - from ActsTrkClusterization.ActsTrkClusterizationConfig import ActsTrkClusterizationCfg + from ActsTrkClusterization.ActsTrkClusterizationConfig import ( + ActsTrkClusterizationCfg) acc.merge(ActsTrkClusterizationCfg(flags)) # # --- Cluster EDM converters # - if configuration_settings.doAthenaToActsCluster: - if not flags.Detector.EnableITkPixel or not flags.Detector.EnableITkStrip: - raise RuntimeError("Cluster EDM converter (InDet -> xAOD) must be activated for both Pixel and Strips") + if configuration_settings.doAthenaToActsCluster: + if (not flags.Detector.EnableITkPixel or + not flags.Detector.EnableITkStrip): + raise RuntimeError( + "Cluster EDM converter (InDet -> xAOD) must be activated for both Pixel and Strips") # # --- InDet -> xAOD Cluster EDM converter # - from InDetConfig.InDetPrepRawDataFormationConfig import ITkInDetToXAODClusterConversionCfg + from InDetConfig.InDetPrepRawDataFormationConfig import ( + ITkInDetToXAODClusterConversionCfg) acc.merge(ITkInDetToXAODClusterConversionCfg(flags)) if configuration_settings.doActsToAthenaCluster: - if not flags.Detector.EnableITkPixel or not flags.Detector.EnableITkStrip: - raise RuntimeError("Cluster EDM converter (xAOD -> InDet) must be activated for both Pixel and Strips") + if (not flags.Detector.EnableITkPixel or + not flags.Detector.EnableITkStrip): + raise RuntimeError( + "Cluster EDM converter (xAOD -> InDet) must be activated for both Pixel and Strips") # # --- xAOD -> InDet Cluster EDM converter # - from InDetConfig.InDetPrepRawDataFormationConfig import ITkXAODToInDetClusterConversionCfg + from InDetConfig.InDetPrepRawDataFormationConfig import ( + ITkXAODToInDetClusterConversionCfg) acc.merge(ITkXAODToInDetClusterConversionCfg(flags)) - # # ----------- form SpacePoints from clusters in SCT and Pixels # if configuration_settings.doAthenaSpacePoint: - from InDetConfig.SiSpacePointFormationConfig import ITkSiTrackerSpacePointFinderCfg + from InDetConfig.SiSpacePointFormationConfig import ( + ITkSiTrackerSpacePointFinderCfg) acc.merge(ITkSiTrackerSpacePointFinderCfg(flags)) if configuration_settings.doActsSpacePoint: - from TrkConfig.ActsTrkSpacePointFormationConfig import ActsTrkSpacePointFormationCfg + from TrkConfig.ActsTrkSpacePointFormationConfig import ( + ActsTrkSpacePointFormationCfg) acc.merge(ActsTrkSpacePointFormationCfg(flags)) - # # --- Space Point EDM converters # if configuration_settings.AthenaToActsSpacePointConverter: - if not flags.Detector.EnableITkPixel or not flags.Detector.EnableITkStrip: - raise RuntimeError("Space Point EDM converter (Trk -> xAOD) must be activated for both Pixel and Strips") + if (not flags.Detector.EnableITkPixel or + not flags.Detector.EnableITkStrip): + raise RuntimeError( + "Space Point EDM converter (Trk -> xAOD) must be activated for both Pixel and Strips") # # --- Trk -> xAOD Space Point EDM converter - from SiSpacePointFormation.SiSpacePointFormationConfig import TrkToXAODSpacePointConversionCfg + from SiSpacePointFormation.SiSpacePointFormationConfig import ( + TrkToXAODSpacePointConversionCfg) acc.merge(TrkToXAODSpacePointConversionCfg(flags)) # this truth must only be done if you do PRD and SpacePointformation @@ -172,16 +198,15 @@ if __name__ == "__main__": from AthenaConfiguration.TestDefaults import defaultTestFiles flags.Input.Files = defaultTestFiles.RDO_RUN2 - flags.InDet.Tracking.doPixelClusterSplitting = True - - numThreads=1 - flags.Concurrency.NumThreads=numThreads - flags.Concurrency.NumConcurrentEvents=numThreads + flags.Tracking.doPixelClusterSplitting = True + numThreads = 1 + flags.Concurrency.NumThreads = numThreads + flags.Concurrency.NumConcurrentEvents = numThreads flags.lock() flags.dump() - + from AthenaConfiguration.MainServicesConfig import MainServicesCfg top_acc = MainServicesCfg(flags) @@ -191,7 +216,7 @@ if __name__ == "__main__": top_acc.merge(InDetRecPreProcessingSiliconCfg(flags)) iovsvc = top_acc.getService('IOVDbSvc') - iovsvc.OutputLevel=5 + iovsvc.OutputLevel = 5 top_acc.printConfig() top_acc.run(25) diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py index 1581c1e9817474a34e0ac359da0bc5e8d78075bd..d9ed35b207537b0f5f6ab4d37b320c1cf758d015 100644 --- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py +++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py @@ -506,8 +506,9 @@ def InDetTrackRecoCfg(flags): InputCollections=InputCombinedInDetTracks, ClusterSplitProbContainer=ClusterSplitProbContainer)) - ClusterSplitProbContainer = "InDetTRT_SeededAmbiguityProcessorSplitProb" + \ - current_flags.InDet.Tracking.ActiveConfig.extension + ClusterSplitProbContainer = ( + "InDetTRT_SeededAmbiguityProcessorSplitProb" + + current_flags.InDet.Tracking.ActiveConfig.extension) TRTSeededTracks = "TRTSeededTracks" ResolvedTRTSeededTracks = "ResolvedTRTSeededTracks" InputCombinedInDetTracks += [ResolvedTRTSeededTracks] @@ -736,7 +737,7 @@ def InDetTrackRecoCfg(flags): result.addEventAlgo( CompFactory.DerivationFramework.CommonAugmentation( "SiSPInDetCommonKernel", - AugmentationTools = [SiSPTrackStateOnSurfaceDecorator])) + AugmentationTools=[SiSPTrackStateOnSurfaceDecorator])) if flags.Input.isMC: from InDetPhysValMonitoring.InDetPhysValDecorationConfig import ( @@ -824,7 +825,7 @@ def InDetTrackRecoOutputCfg(flags): "InDet::TRT_DriftCircleContainer#TRT_DriftCircles", "InDet::PixelGangedClusterAmbiguities#PixelClusterAmbiguitiesMap", ] - if flags.InDet.Tracking.doPixelClusterSplitting: + if flags.Tracking.doPixelClusterSplitting: toESD += ["InDet::PixelGangedClusterAmbiguities#SplitClusterAmbiguityMap"] toESD += ["IDCInDetBSErrContainer#SCT_FlaggedCondData"] toESD += ["Trk::ClusterSplitProbabilityContainer#" + @@ -947,7 +948,8 @@ def InDetTrackRecoOutputCfg(flags): toAOD += ["DetailedTrackTruthCollection#ObservedDetailedTracksTruth"] if flags.InDet.Tracking.doStoreSiSPSeededTracks: toAOD += ["xAOD::TrackParticleContainer#SiSPSeededTracksTrackParticles"] - toAOD += [f"xAOD::TrackParticleAuxContainer#SiSPSeededTracksTrackParticlesAux.{excludedAuxData}"] + toAOD += [ + f"xAOD::TrackParticleAuxContainer#SiSPSeededTracksTrackParticlesAux.{excludedAuxData}"] if flags.Tracking.doStoreTrackSeeds: toAOD += [ diff --git a/InnerDetector/InDetConfig/python/TrackTruthConfig.py b/InnerDetector/InDetConfig/python/TrackTruthConfig.py index 3f0dca9e7c06c9537e465d94781a73d5c8f41534..fb40aef2b10ad0c2dfba0e68018cc09401e4bdec 100644 --- a/InnerDetector/InDetConfig/python/TrackTruthConfig.py +++ b/InnerDetector/InDetConfig/python/TrackTruthConfig.py @@ -7,25 +7,28 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator # # ------------------------------------------------------------------------- + def InDetTrackTruthCfg(flags, - Tracks = "CombinedInDetTracks", - DetailedTruth = "DetailedTrackTruth", - TracksTruth = "TrackTruthCollection"): + Tracks="CombinedInDetTracks", + DetailedTruth="DetailedTrackTruth", + TracksTruth="TrackTruthCollection"): acc = ComponentAccumulator() # # --- Enable the detailed track truth # from InDetConfig.InDetTruthAlgsConfig import InDetDetailedTrackTruthMakerCfg - acc.merge(InDetDetailedTrackTruthMakerCfg(flags, - TrackCollectionName = Tracks, - DetailedTrackTruthName = DetailedTruth)) + acc.merge(InDetDetailedTrackTruthMakerCfg( + flags, + TrackCollectionName=Tracks, + DetailedTrackTruthName=DetailedTruth)) # # --- Detailed to old TrackTruth # from TrkConfig.TrkTruthAlgsConfig import TrackTruthSimilaritySelectorCfg - acc.merge(TrackTruthSimilaritySelectorCfg(flags, - DetailedTrackTruthName = DetailedTruth, - OutputName = TracksTruth)) + acc.merge(TrackTruthSimilaritySelectorCfg( + flags, + DetailedTrackTruthName=DetailedTruth, + OutputName=TracksTruth)) return acc @@ -34,15 +37,16 @@ if __name__ == "__main__": from AthenaConfiguration.AllConfigFlags import initConfigFlags flags = initConfigFlags() - numThreads=1 - flags.Concurrency.NumThreads=numThreads - flags.Concurrency.NumConcurrentEvents=numThreads # Might change this later, but good enough for the moment. + numThreads = 1 + flags.Concurrency.NumThreads = numThreads + # Might change this later, but good enough for the moment. + flags.Concurrency.NumConcurrentEvents = numThreads flags.Detector.GeometryPixel = True flags.Detector.GeometrySCT = True - flags.Detector.GeometryTRT = True + flags.Detector.GeometryTRT = True - flags.InDet.Tracking.doPixelClusterSplitting = True + flags.Tracking.doPixelClusterSplitting = True from AthenaConfiguration.TestDefaults import defaultTestFiles flags.Input.Files = defaultTestFiles.RDO_RUN2 @@ -61,8 +65,8 @@ if __name__ == "__main__": #################### TRTPreProcessing Configurations ##################### from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg top_acc.merge(TRTPreProcessingCfg(flags)) - - #//// TrackingSiPatternConfig configurations from Temporary location ///// + + # //// TrackingSiPatternConfig configurations from Temporary location ///// ################# SiSPSeededTrackFinder Configurations ################### InputCollections = [] @@ -70,20 +74,22 @@ if __name__ == "__main__": SiSPSeededTrackCollectionKey = 'SiSPSeededPixelTracks' ResolvedTrackCollectionKey = 'ResolvedPixelTracks' from InDetConfig.TrackingSiPatternConfig import SiSPSeededTrackFinderCfg - top_acc.merge(SiSPSeededTrackFinderCfg( flags, - InputCollections = InputCollections, - SiSPSeededTrackCollectionKey = SiSPSeededTrackCollectionKey)) + top_acc.merge(SiSPSeededTrackFinderCfg( + flags, + InputCollections=InputCollections, + SiSPSeededTrackCollectionKey=SiSPSeededTrackCollectionKey)) ########################################################################## #################### InDetTrackTruth Configurations ###################### InputTrackCollection = 'SiSPSeededPixelTracks' InputDetailedTrackTruth = 'DetailedTrackTruth' InputTrackCollectionTruth = 'TrackTruthCollection' - - top_acc.merge(InDetTrackTruthCfg(flags, - Tracks = InputTrackCollection, - DetailedTruth = InputDetailedTrackTruth, - TracksTruth = InputTrackCollectionTruth)) + + top_acc.merge(InDetTrackTruthCfg( + flags, + Tracks=InputTrackCollection, + DetailedTruth=InputDetailedTrackTruth, + TracksTruth=InputTrackCollectionTruth)) ################################################################# top_acc.printConfig() top_acc.run(25) diff --git a/InnerDetector/InDetEventCnv/InDetJiveXML/src/SiSpacePointRetriever.cxx b/InnerDetector/InDetEventCnv/InDetJiveXML/src/SiSpacePointRetriever.cxx index 82a40a95e5f69646a806537e9a594c22158e09b1..a5b7550e73e572411aefa1174074aab11af10a4a 100755 --- a/InnerDetector/InDetEventCnv/InDetJiveXML/src/SiSpacePointRetriever.cxx +++ b/InnerDetector/InDetEventCnv/InDetJiveXML/src/SiSpacePointRetriever.cxx @@ -9,6 +9,7 @@ #include "AthContainers/DataVector.h" #include "StoreGate/ReadHandle.h" +#include "InDetIdentifier/PixelID.h" #include "InDetIdentifier/SCT_ID.h" #include "TrkSpacePoint/SpacePoint.h" #include "TrkSpacePoint/SpacePointCollection.h" @@ -205,8 +206,14 @@ namespace JiveXML Identifier idSecond = (clusterList.second != NULL) ? clusterList.second->identify() : Identifier(); //Get phi and eta of the module in detector coordinates of the first cluster - phiModule.push_back(DataType(m_geo->SCTIDHelper()->phi_module(idFirst))); - etaModule.push_back(DataType(m_geo->SCTIDHelper()->eta_module(idFirst))); + if (clusterList.first->type(Trk::PrepRawDataType::SCT_Cluster)) { + phiModule.push_back(DataType(m_geo->SCTIDHelper()->phi_module(idFirst))); + etaModule.push_back(DataType(m_geo->SCTIDHelper()->eta_module(idFirst))); + } + else { + phiModule.push_back(DataType(m_geo->PixelIDHelper()->phi_module(idFirst))); + etaModule.push_back(DataType(m_geo->PixelIDHelper()->eta_module(idFirst))); + } // Store the cluster(s) identifier (pair) clusters.push_back(DataType(idFirst.get_compact())); diff --git a/InnerDetector/InDetG4/TRT_G4Utilities/src/TRTVisualization.cc b/InnerDetector/InDetG4/TRT_G4Utilities/src/TRTVisualization.cc index 4c127b19d57eee35aeaa63ec6baa0e0d93bb98ea..55f14e611952f6cd4a727300d65266a4206c9438 100644 --- a/InnerDetector/InDetG4/TRT_G4Utilities/src/TRTVisualization.cc +++ b/InnerDetector/InDetG4/TRT_G4Utilities/src/TRTVisualization.cc @@ -58,7 +58,7 @@ void TRTVisualization::Visualize(G4LogicalVolume* pLogicalVolume, switch(colourIndex) { case 0: - pLogicalVolume->SetVisAttributes(G4VisAttributes::Invisible); + pLogicalVolume->SetVisAttributes(G4VisAttributes::GetInvisible()); break; case 1: pLogicalVolume->SetVisAttributes(m_pVisAttributeRed); diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/CryostatCalibrationCalculator.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/CryostatCalibrationCalculator.cxx index a1a39100108a6e0f28ec17f8081631369d7422b7..dcb14ee06a067ba1db225354108b8d51bd81738d 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/CryostatCalibrationCalculator.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/CryostatCalibrationCalculator.cxx @@ -521,13 +521,13 @@ namespace LArG4 { << G4endl; #endif - if(volumeName.index("LArMgr::") == 0) volumeName.erase(0,8); - if(volumeName.index("LAr::Barrel::Cryostat::Sector")==0) { // ears, legs, Ti blocks + if(volumeName.find("LArMgr::") == 0) volumeName.erase(0,8); + if(volumeName.find("LAr::Barrel::Cryostat::Sector")==0) { // ears, legs, Ti blocks volumeName = "LAr::Barrel::Cryostat::Sector"; if(copyNumber != 7 && copyNumber !=12) copyNumber=1; // assignment arbitrary copyNumber to Ti block - }else if(volumeName.index("LAr::Barrel::Cryostat::Cylinder")==0){ + }else if(volumeName.find("LAr::Barrel::Cryostat::Cylinder")==0){ volumeName = "LAr::Barrel::Cryostat::Cylinder"; - }else if(volumeName.index("LAr::Barrel::Cryostat::InnerWall")==0){ + }else if(volumeName.find("LAr::Barrel::Cryostat::InnerWall")==0){ volumeName = "LAr::Barrel::Cryostat::InnerWall"; copyNumber = 1; // assignment arbitrary copyNumber } diff --git a/LArCalorimeter/LArG4/LArG4EC/src/CryostatCalibrationCalculator.cc b/LArCalorimeter/LArG4/LArG4EC/src/CryostatCalibrationCalculator.cc index 379b4dcbb6f4608d80c6a348d95d4c138f13376e..6ca5a76f1530187f357af74576ce085b759dbfc8 100644 --- a/LArCalorimeter/LArG4/LArG4EC/src/CryostatCalibrationCalculator.cc +++ b/LArCalorimeter/LArG4/LArG4EC/src/CryostatCalibrationCalculator.cc @@ -454,7 +454,7 @@ namespace LArG4 { const G4int copyNumber = physical->GetCopyNo(); G4String volumeName = physical->GetLogicalVolume()->GetName(); - if(volumeName.index("LArMgr::") == 0) volumeName.erase(0,8); + if(volumeName.find("LArMgr::") == 0) volumeName.erase(0,8); #ifdef DEBUG_HITS diff --git a/LArCalorimeter/LArG4/LArG4EC/src/EMECSupportCalibrationCalculator.cc b/LArCalorimeter/LArG4/LArG4EC/src/EMECSupportCalibrationCalculator.cc index b35f400fb51deb8f6e136182de0e4eb693b3a12c..ba05cc4c65ff6fb66046b0e6bdcadc17212df511 100644 --- a/LArCalorimeter/LArG4/LArG4EC/src/EMECSupportCalibrationCalculator.cc +++ b/LArCalorimeter/LArG4/LArG4EC/src/EMECSupportCalibrationCalculator.cc @@ -223,7 +223,7 @@ namespace LArG4 { G4String name = a_step->GetPreStepPoint()->GetPhysicalVolume()->GetName(); - if(name.index("LArMgr::") == 0) name.erase(0,8); + if(name.find("LArMgr::") == 0) name.erase(0,8); #if defined (DEBUG_VOLUMES) || defined (DEBUG_HITS) // The 'copy' variable is used only inside defines @@ -241,14 +241,14 @@ namespace LArG4 { << ", phi=" << phi << std::endl; #endif - if ( (name.index("LAr::EMEC::Front")==0) || - (name.index("LAr::EMEC::MotherBoard::")==0) || - (name.index("LAr::EMEC::Outer")==0) || - (name.index("LAr::EMEC::TopIndexing")==0) || - (name.index("LAr::EMEC::WideStretcher")==0) || - (name.index("LAr::EMEC::NarrowStretcher")==0) || - (name.index("LAr::EMEC::InnerAluCone")==0) || - (name.index("LAr::EMEC::ExtraCyl_afterPS")==0) || + if ( (name.find("LAr::EMEC::Front")==0) || + (name.find("LAr::EMEC::MotherBoard::")==0) || + (name.find("LAr::EMEC::Outer")==0) || + (name.find("LAr::EMEC::TopIndexing")==0) || + (name.find("LAr::EMEC::WideStretcher")==0) || + (name.find("LAr::EMEC::NarrowStretcher")==0) || + (name.find("LAr::EMEC::InnerAluCone")==0) || + (name.find("LAr::EMEC::ExtraCyl_afterPS")==0) || (name=="LAr::EMEC::Mother" && fabs(p.z()) < m_par->m_zInFrontOfSpanishFan) ) { // case 1 // Front + Outer + Inner of EMEC @@ -363,7 +363,7 @@ namespace LArG4 { } } - } else if ((name.index("LAr::EMEC::Back")==0) || + } else if ((name.find("LAr::EMEC::Back")==0) || (name=="LAr::EMEC::Mother" && fabs(p.z()) < m_par->m_zInFrontOfHEC) ) { // case 3 - between EMEC and HEC type = 1; diff --git a/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6BeamSD.cc b/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6BeamSD.cc index 2874b9485ec117bd7b5da2d0fef4d9c948441c92..e4f33df9aa2649a462d00cac5a11a51b53f76d9a 100644 --- a/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6BeamSD.cc +++ b/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6BeamSD.cc @@ -54,8 +54,8 @@ G4bool LArG4H6BeamSD::ProcessHits(G4Step* aStep, G4TouchableHistory* /*Touchable //dubina=theTouchable->GetHistoryDepth(); // G4String lname(ime1); - G4int kk = lname.last(':'); - lname.remove(0,kk+1); + G4int kk = lname.rfind(':'); + lname.erase(0,kk+1); #ifdef DEBUG_HITS std::cout<<"**** LArG4H6BeamSD: "<<SensitiveDetectorName.data()<<" :ProcessHits: lname: "<<lname.data()<<std::endl; #endif diff --git a/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6BeamSDTool.cc b/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6BeamSDTool.cc index 1844cef35d41fb22dfc79bd38e22c47f7a9ec491..29dc85681d0c600ac8defeecc66cdc2732b51271 100644 --- a/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6BeamSDTool.cc +++ b/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6BeamSDTool.cc @@ -5,6 +5,7 @@ #include "LArG4H6BeamSDTool.h" #include "LArG4H6BeamSD.h" +#include "G4Version.hh" #include "G4String.hh" LArG4H6BeamSDTool::LArG4H6BeamSDTool(const std::string& type, const std::string& name, const IInterface *parent) @@ -18,11 +19,16 @@ G4VSensitiveDetector* LArG4H6BeamSDTool::makeSD() const //FIXME better to use a configurable property here? // be smart, and take only last part of the name +#if G4VERSION_NUMBER < 1100 G4String colname = G4String(name()).strip(G4String::both,':'); if ( colname.contains(':') ) +#else + G4String colname = G4StrUtil::strip_copy(G4String(name()),':'); + if ( G4StrUtil::contains(colname, ':') ) +#endif { - G4int last = colname.last(':'); - colname.remove(0,last+1); + G4int last = colname.rfind(':'); + colname.erase(0,last+1); } colname += "::Hits"; return new LArG4H6BeamSD(name(),colname); diff --git a/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6COLDTCMod0Calculator.cc b/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6COLDTCMod0Calculator.cc index 6f8dd573566eaad67932b545a2038a77dd470b0b..267a38799cb240ec74ea26417123bd141fed0c71 100644 --- a/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6COLDTCMod0Calculator.cc +++ b/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4H6COLDTCMod0Calculator.cc @@ -9,6 +9,7 @@ #include "LArG4Code/LArG4Identifier.h" // Geant4 includes +#include "G4Version.hh" #include "G4NavigationHistory.hh" #include "G4LogicalVolume.hh" #include "G4VPhysicalVolume.hh" @@ -116,9 +117,13 @@ G4bool LArG4H6COLDTCMod0Calculator::Process(const G4Step* a_step, std::vector<LA ///////////////////////////////////// // Strip the name of the volume: G4String hitVolume = pre_step_point->GetTouchable()->GetVolume(0)->GetName(); +#if G4VERSION_NUMBER < 1100 if(hitVolume.contains("::") ) { - int last = hitVolume.last(':'); - hitVolume.remove(0,last+1); +#else + if(G4StrUtil::contains(hitVolume,"::") ) { +#endif + int last = hitVolume.rfind(':'); + hitVolume.erase(0,last+1); } int volnum = 0; if( hitVolume == "Gap") { diff --git a/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4TBECBeamChSensitiveDetector.cc b/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4TBECBeamChSensitiveDetector.cc index 71e51032f2594f5165fcb3b31b1bd935d4246d8c..4dddb4ff3f12deae10e32bb8ae529088a61254a7 100644 --- a/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4TBECBeamChSensitiveDetector.cc +++ b/LArCalorimeter/LArG4/LArG4H6SD/src/LArG4TBECBeamChSensitiveDetector.cc @@ -10,6 +10,7 @@ #include "LArG4TBECBeamChCalculator.h" #include "LArG4TBECBeamChHit.h" +#include "G4Version.hh" #include "G4Step.hh" #include "G4ios.hh" @@ -25,11 +26,16 @@ LArG4TBECBeamChSensitiveDetector::LArG4TBECBeamChSensitiveDetector(G4String a_na // a sensitive detector. Hit collection names can't have any // slashes ("/"), because that confuses the name with the sensitive // detector names. +#if G4VERSION_NUMBER < 1100 G4String HCname = m_detectorName.strip(G4String::both,'/'); if ( HCname.contains('/') ) +#else + G4String HCname = G4StrUtil::strip_copy(m_detectorName,'/'); + if ( G4StrUtil::contains(HCname, '/') ) +#endif { - G4int lastSlash = HCname.last('/'); - HCname.remove(0,lastSlash+1); + G4int lastSlash = HCname.rfind('/'); + HCname.erase(0,lastSlash+1); } // This is the name to search for in the hit-collection table. diff --git a/LArCalorimeter/LArG4/LArG4HEC/src/HECGeometry.cc b/LArCalorimeter/LArG4/LArG4HEC/src/HECGeometry.cc index 7281b7e57548228b5564b09385da853bf50b4054..092653c609111f7a70bffe784edcf760bb25afb3 100644 --- a/LArCalorimeter/LArG4/LArG4HEC/src/HECGeometry.cc +++ b/LArCalorimeter/LArG4/LArG4HEC/src/HECGeometry.cc @@ -6,6 +6,7 @@ #include "LArG4Code/LArG4Identifier.h" #include "LArG4HEC/HECGeometry.h" +#include "G4Version.hh" #include "G4ThreeVector.hh" #include "G4StepPoint.hh" #include "G4Step.hh" @@ -265,9 +266,11 @@ namespace LArG4 { // ------- ACTIVE and INACTIVE volumes ----------------------- // (They are all inside a Depth (and some DM, too)) - +#if G4VERSION_NUMBER < 1100 if ( volumeName.contains("LArMgr::LAr::HEC::Module::Depth") ) - +#else + if ( G4StrUtil::contains(volumeName, "LArMgr::LAr::HEC::Module::Depth") ) +#endif { const int depthVol= m_g4historyDepth+2 ; // geant depth of the HEC::Module::Depth @@ -379,7 +382,11 @@ namespace LArG4 { else // (has to be dead) { int itype = 2; +#if G4VERSION_NUMBER < 1100 if ( volumeName.contains("LArMgr::LAr::HEC::Module::Depth::FirstAbsorber") ) { +#else + if ( G4StrUtil::contains(volumeName, "LArMgr::LAr::HEC::Module::Depth::FirstAbsorber") ) { +#endif itype = 1; sampling = 2; iphi = moduleIndex; diff --git a/LArCalorimeter/LArG4/LArG4HEC/src/LocalCalibrationCalculator.cc b/LArCalorimeter/LArG4/LArG4HEC/src/LocalCalibrationCalculator.cc index 24c73ebab4541f8a8fc114ec11dbb181c68c331b..77586c31b6c033caed750c4d64d61b152c4730b7 100644 --- a/LArCalorimeter/LArG4/LArG4HEC/src/LocalCalibrationCalculator.cc +++ b/LArCalorimeter/LArG4/LArG4HEC/src/LocalCalibrationCalculator.cc @@ -4,6 +4,7 @@ #include "LocalCalibrationCalculator.h" +#include "G4Version.hh" #include "G4Step.hh" #include "G4TouchableHistory.hh" @@ -86,10 +87,17 @@ namespace LArG4 { const G4TouchableHistory* theTouchable = static_cast<const G4TouchableHistory*>(pre_step_point->GetTouchable()); // Volume name G4String hitVolume = theTouchable->GetVolume(0)->GetName(); +#if G4VERSION_NUMBER < 1100 if(hitVolume.contains("::") ) { const int last = hitVolume.last(':'); hitVolume.remove(0,last+1); } +#else + if(G4StrUtil::contains(hitVolume, "::") ) { + const int last = hitVolume.rfind(':'); + hitVolume.erase(0,last+1); + } +#endif static const G4String sliceVolume("Slice"); static const G4String absorberVolume("Absorber"); static const G4String electrodeVolume("Electrode"); diff --git a/LArCalorimeter/LArMonitoring/python/GlobalVariables.py b/LArCalorimeter/LArMonitoring/python/GlobalVariables.py index 1841882d8ee35dd0b1a6b3e8c05fc78d79a1e20c..aa1f533ce8e822d69412fb572f0053d820d6aed0 100644 --- a/LArCalorimeter/LArMonitoring/python/GlobalVariables.py +++ b/LArCalorimeter/LArMonitoring/python/GlobalVariables.py @@ -361,10 +361,7 @@ for sdet in lArDQGlobals.SubDet: lArDQGlobals.Cell_Variables["etaRange"][sdet]["A"][Lay]=currange #The C side is just the symmeteric of the A side - if sdet=="FCal": - lArDQGlobals.Cell_Variables["etaRange"][sdet]["C"][Lay] = lArDQGlobals.Cell_Variables["etaRange"][sdet]["A"][Lay] - else: #all other partitions - lArDQGlobals.Cell_Variables["etaRange"][sdet]["C"][Lay] =list(map(lambda x: x*-1,lArDQGlobals.Cell_Variables["etaRange"][sdet]["A"][Lay]))[::-1] + lArDQGlobals.Cell_Variables["etaRange"][sdet]["C"][Lay] =list(map(lambda x: x*-1,lArDQGlobals.Cell_Variables["etaRange"][sdet]["A"][Lay]))[::-1] #CNF lArDQGlobals.CNFN_tot = 80 diff --git a/LArCalorimeter/LArMonitoring/python/LArCosmicsMonAlg.py b/LArCalorimeter/LArMonitoring/python/LArCosmicsMonAlg.py index 1d4f2c4e0585981ebf1ecd581e661169238935a6..24779aac18aa6cded58381a3b4d39123e9a24313 100644 --- a/LArCalorimeter/LArMonitoring/python/LArCosmicsMonAlg.py +++ b/LArCalorimeter/LArMonitoring/python/LArCosmicsMonAlg.py @@ -52,7 +52,7 @@ def LArCosmicsMonConfigCore(helper, algoinstance,inputFlags): cosmic_path="Cosmics/" - EM_bins=lArDQGlobals.Cell_Variables["etaRange"]["EMEC"]["C"]["2"]+lArDQGlobals.Cell_Variables["etaRange"]["EMB"]["C"]["2"]+lArDQGlobals.Cell_Variables["etaRange"]["EMB"]["A"]["2"]+lArDQGlobals.Cell_Variables["etaRange"]["EMEC"]["A"]["2"] + EM_bins=sorted(list(set(lArDQGlobals.Cell_Variables["etaRange"]["EMEC"]["C"]["2"]+lArDQGlobals.Cell_Variables["etaRange"]["EMB"]["C"]["2"]+lArDQGlobals.Cell_Variables["etaRange"]["EMB"]["A"]["2"]+lArDQGlobals.Cell_Variables["etaRange"]["EMEC"]["A"]["2"]))) cosmicMonGroup.defineHistogram('mon_eta_EM,mon_phi;Muon2DHitsECAL', type='TH2F', path=cosmic_path, @@ -60,7 +60,7 @@ def LArCosmicsMonConfigCore(helper, algoinstance,inputFlags): xbins=EM_bins, ybins=lArDQGlobals.Cell_Variables["phiRange"]["EMB"]["A"]["2"]) - HEC_bins=lArDQGlobals.Cell_Variables["etaRange"]["HEC"]["C"]["1"]+lArDQGlobals.Cell_Variables["etaRange"]["HEC"]["A"]["1"] + HEC_bins=sorted(list(set(lArDQGlobals.Cell_Variables["etaRange"]["HEC"]["C"]["1"]+lArDQGlobals.Cell_Variables["etaRange"]["HEC"]["A"]["1"]))) cosmicMonGroup.defineHistogram('mon_eta_HEC,mon_phi;Muon2DHitsHCAL', type='TH2F', path=cosmic_path, @@ -68,7 +68,7 @@ def LArCosmicsMonConfigCore(helper, algoinstance,inputFlags): xbins=HEC_bins, ybins=lArDQGlobals.Cell_Variables["phiRange"]["HEC"]["A"]["1"]) - FCal_bins=lArDQGlobals.Cell_Variables["etaRange"]["FCal"]["C"]["2"]+lArDQGlobals.Cell_Variables["etaRange"]["FCal"]["A"]["2"] + FCal_bins=sorted(list(set(lArDQGlobals.Cell_Variables["etaRange"]["FCal"]["C"]["2"]+lArDQGlobals.Cell_Variables["etaRange"]["FCal"]["A"]["2"]))) cosmicMonGroup.defineHistogram('mon_eta_FCal,mon_phi;Muon2DHitsFCAL', type='TH2F', path=cosmic_path, diff --git a/LArCalorimeter/LArROD/src/LArLATOMEBuilderAlg.cxx b/LArCalorimeter/LArROD/src/LArLATOMEBuilderAlg.cxx index 2aba11397ff731f44546645626c0a3fa1663d7b1..cbdf5fab4ae106d47a16ecac532e623a3b971cac 100644 --- a/LArCalorimeter/LArROD/src/LArLATOMEBuilderAlg.cxx +++ b/LArCalorimeter/LArROD/src/LArLATOMEBuilderAlg.cxx @@ -280,7 +280,7 @@ StatusCode LArLATOMEBuilderAlg::execute(const EventContext& ctx) const { /// reproduce LDPB package computation in https://gitlab.cern.ch/atlas-lar-online/onlinelatomedb/-/blob/master/src/CondFloatDB.cpp bool LArLATOMEBuilderAlg::floatToInt(float val, int &newval, int hardpoint, int size) const{ - if( isnan(val) )return false; + if( std::isnan(val) )return false; int intVal = round(val*pow(2,hardpoint)); bool isNeg = (intVal<0); unsigned int posVal = abs(intVal); diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/CMakeLists.txt b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/CMakeLists.txt index 62216673033dca9890cb42c4530c6884edb0948a..a0b9114897d198df9b35d493520d828565369470 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/CMakeLists.txt +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/CMakeLists.txt @@ -26,6 +26,11 @@ atlas_add_test( MdtCabling_Run2Data PROPERTIES TIMEOUT 600 POST_EXEC_SCRIPT nopost.sh) +atlas_add_test( MdtCabling_Run2MC + SCRIPT python -m MuonCondTest.MdtCablingTester -i /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/WorkflowReferences/master/q443/v9/myESD.pool.root + PROPERTIES TIMEOUT 600 + POST_EXEC_SCRIPT nopost.sh) + atlas_add_test( MdtCabling_Run3MC SCRIPT python -m MuonCondTest.MdtCablingTester -i /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/WorkflowReferences/22.0/q445/v20/myESD.pool.root PROPERTIES TIMEOUT 600 diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/MdtCablingTester.py b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/MdtCablingTester.py index 5f32f0670eec9f6fd5c1d10a7cd4151cdb059742..9ab761177c1fac4bdbffd8ddb53246c8912a51eb 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/MdtCablingTester.py +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/MdtCablingTester.py @@ -24,6 +24,13 @@ def SetupArgParser(): def setupServicesCfg(flags): from AthenaConfiguration.MainServicesConfig import MainServicesCfg result = MainServicesCfg(flags) + ### Setup the file reading + from AthenaConfiguration.Enums import Format + if flags.Input.Format is Format.POOL: + from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg + result.merge(PoolReadCfg(flags)) + + from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg result.merge(MuonGeoModelCfg(flags)) from MuonConfig.MuonGeometryConfig import MuonIdHelperSvcCfg @@ -35,7 +42,12 @@ def MdtCablingTestAlgCfg(flags, name = "MdtCablingTestAlg"): from AthenaConfiguration.ComponentFactory import CompFactory result = setupServicesCfg(flags) from MuonConfig.MuonCablingConfig import MDTCablingConfigCfg - result.merge(MDTCablingConfigCfg(flags)) + from MuonConfig.MuonCondAlgConfig import MdtCondDbAlgCfg + result.merge(MdtCondDbAlgCfg(flags)) + result.merge(MDTCablingConfigCfg(flags, + #MezzanineJSON="MezzMapping.json", + #CablingJSON="MdtCabling.json" + )) event_algo = CompFactory.MdtCablingTestAlg(name) result.addEventAlgo(event_algo, primary = True) return result @@ -49,20 +61,13 @@ if __name__ == "__main__": flags.Concurrency.NumConcurrentEvents = args.threads # Might change this later, but good enough for the moment. flags.Output.ESDFileName = args.output flags.Input.Files = args.inputFile + flags.Input.RunNumber = 310000 flags.lock() cfg = MdtCablingTestAlgCfg(flags) - msgService = cfg.getService('MessageSvc') - msgService.Format = "S:%s E:%e % F%128W%S%7W%R%T %0W%M" - cfg.printConfig(withDetails=True, summariseProps=True) - flags.dump() - - f = open("MdtCablingTester.pkl", "wb") - cfg.store(f) - f.close() - + sc = cfg.run(1) if not sc.isSuccess(): import sys diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/MdtMezzExtraction.py b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/MdtMezzExtraction.py index e33996b38f36300b31c59afbc77f138519fd10a7..7938c75695d4a29062ddbb4a9edfeb530d8b2904 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/MdtMezzExtraction.py +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/MdtMezzExtraction.py @@ -1,38 +1,8 @@ # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration - -def SetupArgParser(): - from argparse import ArgumentParser - - parser = ArgumentParser() - parser.add_argument("-t", "--threads", dest="threads", type=int, help="number of threads", default=1) - - parser.add_argument("-o", "--output", dest="output", default='newESD.pool.root', help="write ESD to FILE", metavar="FILE") - - parser.add_argument("--run", - help="Run directly from the python. If false, just stop once the pickle is written.", - action="store_true", - default=True) - - parser.add_argument("--forceclone", - help="Override default cloneability of algorithms to force them to run in parallel", - action="store_true") - parser.add_argument("-d", "--debug", default=None, help="attach debugger (gdb) before run, <stage>: conf, init, exec, fini") - parser.add_argument("--inputFile", "-i", default=["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data17_13TeV.00330470.physics_Main.daq.RAW._lb0310._SFO-1._0001.data"], - help="Input file to run on ", nargs="+") - return parser - -def setupServicesCfg(flags): - from AthenaConfiguration.MainServicesConfig import MainServicesCfg - result = MainServicesCfg(flags) - from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg - result.merge(MuonGeoModelCfg(flags)) - from MuonConfig.MuonGeometryConfig import MuonIdHelperSvcCfg - result.merge(MuonIdHelperSvcCfg(flags)) - - return result - + def MdtCablMezzAlgCfg(flags, name = "MdtCablMezzAlg"): from AthenaConfiguration.ComponentFactory import CompFactory + from MuonCondTest.MdtCablingTester import setupServicesCfg result = setupServicesCfg(flags) from MuonConfig.MuonCablingConfig import MDTCablingConfigCfg result.merge(MDTCablingConfigCfg(flags)) @@ -42,6 +12,7 @@ def MdtCablMezzAlgCfg(flags, name = "MdtCablMezzAlg"): if __name__ == "__main__": from AthenaConfiguration.AllConfigFlags import initConfigFlags + from MuonCondTester.MdtCablingTester import SetupArgParser args = SetupArgParser().parse_args() flags = initConfigFlags() @@ -52,17 +23,10 @@ if __name__ == "__main__": flags.lock() cfg = MdtCablMezzAlgCfg(flags) - msgService = cfg.getService('MessageSvc') - msgService.Format = "S:%s E:%e % F%128W%S%7W%R%T %0W%M" - cfg.printConfig(withDetails=True, summariseProps=True) flags.dump() - f = open("MdtCablingTester.pkl", "wb") - cfg.store(f) - f.close() - sc = cfg.run(1) if not sc.isSuccess(): import sys diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/RpcCablingTester.py b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/RpcCablingTester.py index 7c8d5c285d524e02e7f62645b8f3f422c9580d68..6a973cd4dacf34013b3408a81222b3bd1b589e9a 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/RpcCablingTester.py +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/python/RpcCablingTester.py @@ -1,48 +1,22 @@ # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration -def SetupArgParser(): - from argparse import ArgumentParser - - parser = ArgumentParser() - parser.add_argument("-t", "--threads", dest="threads", type=int, help="number of threads", default=1) - - parser.add_argument("-o", "--output", dest="output", default='newESD.pool.root', help="write ESD to FILE", metavar="FILE") - - parser.add_argument("--run", - help="Run directly from the python. If false, just stop once the pickle is written.", - action="store_true", - default=True) - - parser.add_argument("--forceclone", - help="Override default cloneability of algorithms to force them to run in parallel", - action="store_true") - parser.add_argument("-d", "--debug", default=None, help="attach debugger (gdb) before run, <stage>: conf, init, exec, fini") - parser.add_argument("--inputFile", "-i", default=["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/WorkflowReferences/22.0/q445/v20/myESD.pool.root"], - help="Input file to run on ", nargs="+") - return parser - -def setupServicesCfg(flags): - from AthenaConfiguration.MainServicesConfig import MainServicesCfg - result = MainServicesCfg(flags) - from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg - result.merge(MuonGeoModelCfg(flags)) - from MuonConfig.MuonGeometryConfig import MuonIdHelperSvcCfg - result.merge(MuonIdHelperSvcCfg(flags)) - return result - def RpcCablingTestAlgCfg(flags, name = "RpcCablingTestAlg"): from AthenaConfiguration.ComponentFactory import CompFactory + from MuonCondTest.MdtCablingTester import setupServicesCfg result = setupServicesCfg(flags) from MuonConfig.MuonCablingConfig import NRPCCablingConfigCfg from AthenaCommon.Constants import DEBUG - result.getPrimaryAndMerge(NRPCCablingConfigCfg(flags, JSONFile = "CablingFile.json")).OutputLevel = DEBUG + result.merge(NRPCCablingConfigCfg(flags, JSONFile = "CablingFile.json", OutputLevel = DEBUG )) event_algo = CompFactory.RpcCablingTestAlg(name, OutputLevel = DEBUG) result.addEventAlgo(event_algo, primary = True) return result if __name__ == "__main__": from AthenaConfiguration.AllConfigFlags import initConfigFlags - args = SetupArgParser().parse_args() + from MuonCondTest.MdtCablingTester import SetupArgParser + parser = SetupArgParser() + parser.set_defaults(inputFile=["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/WorkflowReferences/22.0/q445/v20/myESD.pool.root"]) + args = parser.parse_args() flags = initConfigFlags() flags.Concurrency.NumThreads = args.threads @@ -51,18 +25,10 @@ if __name__ == "__main__": flags.Input.Files = args.inputFile flags.lock() - cfg = RpcCablingTestAlgCfg(flags) - msgService = cfg.getService('MessageSvc') - msgService.Format = "S:%s E:%e % F%128W%S%7W%R%T %0W%M" - + cfg = RpcCablingTestAlgCfg(flags) cfg.printConfig(withDetails=True, summariseProps=True) - flags.dump() - - f = open("RpcCablingTester.pkl", "wb") - cfg.store(f) - f.close() - + sc = cfg.run(1) if not sc.isSuccess(): import sys diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MdtCablingTestAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MdtCablingTestAlg.cxx index a3ff618c4f03e211eb504d4ee5b24d8794f85ebd..cba86a4aba3acb9fb2790e98ad444cfdeb10ccc2 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MdtCablingTestAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MdtCablingTestAlg.cxx @@ -16,6 +16,7 @@ StatusCode MdtCablingTestAlg::initialize(){ ATH_CHECK(m_idHelperSvc.retrieve()); ATH_CHECK(m_DetectorManagerKey.initialize()); ATH_CHECK(m_cablingKey.initialize()); + ATH_CHECK(m_deadChanKey.initialize(!m_deadChanKey.empty())); return StatusCode::SUCCESS; } @@ -79,11 +80,23 @@ StatusCode MdtCablingTestAlg::execute(){ ATH_MSG_ERROR("Failed to retrieve the Mdt cabling "<<m_cablingKey.fullKey()); return StatusCode::FAILURE; } - const MdtIdHelper& idHelper = m_idHelperSvc->mdtIdHelper(); - unsigned int n_elements{0}, n_success{0}; - bool failure{false}; - for (unsigned int hash = 0; hash < MuonGM::MuonDetectorManager::MdtRElMaxHash; ++hash){ - const IdentifierHash id_hash{hash}; + + const MdtCondDbData* deadChan{nullptr}; + if (!m_deadChanKey.empty()) { + SG::ReadCondHandle<MdtCondDbData> deadChanHandle{m_deadChanKey,ctx}; + if (!deadChanHandle.isValid()) { + ATH_MSG_FATAL("Failed to retrieve Mdt conditions "<<m_deadChanKey.fullKey()); + return StatusCode::FAILURE; + } + deadChan = deadChanHandle.cptr(); + + } + + const MdtIdHelper& idHelper = m_idHelperSvc->mdtIdHelper(); + unsigned int n_elements{0}, n_success{0}; + bool failure{false}; + for (unsigned int hash = 0; hash < MuonGM::MuonDetectorManager::MdtRElMaxHash; ++hash){ + const IdentifierHash id_hash{hash}; const MuonGM::MdtReadoutElement* readEle = detectorMgr->getMdtReadoutElement(id_hash); if (!readEle) { @@ -91,6 +104,11 @@ StatusCode MdtCablingTestAlg::execute(){ continue; } const Identifier station_id = idHelper.elementID(readEle->identify()); + + if (deadChan && !deadChan->isGoodStation(station_id)) { + ATH_MSG_ALWAYS("Dead station found "<<m_idHelperSvc->toString(station_id)); + continue; + } ATH_MSG_DEBUG("Check station "<<m_idHelperSvc->toString(station_id)); for (int layer = 1 ; layer <= readEle->getNLayers(); ++layer){ for (int tube = 1 ; tube <= readEle->getNtubesperlayer(); ++tube){ @@ -100,22 +118,28 @@ StatusCode MdtCablingTestAlg::execute(){ ATH_MSG_VERBOSE("Invalid element"); continue; } + if (deadChan && !deadChan->isGood(tube_id)) { + ATH_MSG_ALWAYS("Dead dube detected "<<m_idHelperSvc->toString(tube_id)); + continue; + } ++n_elements; /// Create the cabling object MdtCablingData cabling_data{}; cabling->convert(tube_id,cabling_data); /// Test if the online channel can be found if (!cabling->getOnlineId(cabling_data,msgStream())){ - ATH_MSG_ERROR("Could no retrieve a valid online channel for "<<m_idHelperSvc->toString(tube_id)); + ATH_MSG_ERROR("Could no retrieve a valid online channel for "<<m_idHelperSvc->toString(tube_id)<<" from station ID "<<m_idHelperSvc->toString(readEle->identify())); + failure = true; continue; } /// Test if the online channel can be transformed back /// Reset the offline cabling const MdtCablingOffData off_data{}; - cabling_data.MdtCablingOffData::operator=(off_data); + static_cast<MdtCablingOffData&> (cabling_data) = off_data; if (!cabling->getOfflineId(cabling_data, msgStream())){ ATH_MSG_ERROR("Could not convert the online cabling "<<cabling_data<<" to an offline identifier. Initial identifier "<<m_idHelperSvc->toString(tube_id)); + failure = true; continue; } @@ -128,12 +152,11 @@ StatusCode MdtCablingTestAlg::execute(){ if (test_id != tube_id){ ATH_MSG_ERROR("The forward -> backward conversion failed. Started with "<<m_idHelperSvc->toString(tube_id)<<" ended with "<<m_idHelperSvc->toString(test_id)); failure = true; - return StatusCode::FAILURE; continue; } /// Reset the offline cabling again - cabling_data.MdtCablingOffData::operator=(off_data); + static_cast<MdtCablingOffData&>(cabling_data) = off_data; /// Test whether the online module can be decoded successfully cabling_data.tdcId = 0xff; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MdtCablingTestAlg.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MdtCablingTestAlg.h index cb80040e21ca14812c5146692066311a92b9671a..65c6072ffec2c22b973578994bd3bc681533b370 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MdtCablingTestAlg.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MdtCablingTestAlg.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ /** @@ -15,7 +15,7 @@ #include "MuonIdHelpers/IMuonIdHelperSvc.h" #include "StoreGate/ReadCondHandleKey.h" #include "MuonReadoutGeometry/MuonDetectorManager.h" - +#include "MuonCondData/MdtCondDbData.h" class MdtCablingTestAlg : public AthAlgorithm { @@ -35,6 +35,8 @@ private: "Key of input MuonDetectorManager condition data"}; SG::ReadCondHandleKey<MuonMDT_CablingMap> m_cablingKey{this, "WriteKey", "MuonMDT_CablingMap", "Key of input MDT cabling map"}; + + SG::ReadCondHandleKey<MdtCondDbData> m_deadChanKey{this, "ReadKey", "MdtCondDbData", "Key of MdtCondDbData"}; }; diff --git a/MuonSpectrometer/MuonConfig/python/MuonReconstructionConfig.py b/MuonSpectrometer/MuonConfig/python/MuonReconstructionConfig.py index 8310352ccd7cc34711301c97b736b56c645074fa..3ae727e08ad10177068df2f6e1f532ea27f97844 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonReconstructionConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonReconstructionConfig.py @@ -254,3 +254,5 @@ if __name__ == "__main__": if not sc.isSuccess(): import sys sys.exit("Execution failed") + else: + cfg.wasMerged() diff --git a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py index ccd6c2f0b42cfb95528dd3ac9dbf8a22c07eaabc..0c369997e4724a5b1c3b82232c38c852bad37d85 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py @@ -875,3 +875,5 @@ if __name__=="__main__": if not sc.isSuccess(): import sys sys.exit("Execution failed") + else: + cfg.wasMerged() diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py index 6a60033248d25c730242f1d77f045f192a441dbd..7f27decea0739f5839c8ce99f1308f888c3961fe 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py @@ -3,7 +3,7 @@ Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration 2020 Matthias Schott - Uni Mainz """ -from AthenaConfiguration.Enums import BeamType, Format +from AthenaConfiguration.Enums import BeamType def MuonTrackConfig(flags, isOld=False, **kwargs): @@ -19,13 +19,8 @@ def MuonTrackConfig(flags, isOld=False, **kwargs): helper = AthMonitorCfgHelper(flags, "MuonTrackMonitoringConfig") if flags.Beam.Type != BeamType.Collisions: kwargs.setdefault("PrimaryVerticesKey", "") + if flags.Common.isOnline or flags.Beam.Type != BeamType.Collisions: kwargs.setdefault("RequireBeamSpot", False) - elif flags.Input.Format is Format.BS: - # TODO: not sure if this is needed at all, probably it was needed due to wrapping - # it has been agreed on that beamspot decoration is done once centrally during RAWtoALL - from xAODEventInfoCnv.EventInfoBeamSpotDecoratorAlgConfig import ( - EventInfoBeamSpotDecoratorAlgCfg) - helper.resobj.merge(EventInfoBeamSpotDecoratorAlgCfg(flags)) muonTrackAlg = helper.addAlgorithm(MuonTrackMonitorAlgorithm, "MuonTrackMonitorAlg", **kwargs) diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerReader/src/RootReaderD3PDBase.cxx b/PhysicsAnalysis/D3PDMaker/D3PDMakerReader/src/RootReaderD3PDBase.cxx index 1a8c6328ddeeeb3caa051146db1527bff9af5593..eb16f3fa8c3e93e4ce5cc74b93368e7e81fd64bf 100644 --- a/PhysicsAnalysis/D3PDMaker/D3PDMakerReader/src/RootReaderD3PDBase.cxx +++ b/PhysicsAnalysis/D3PDMaker/D3PDMakerReader/src/RootReaderD3PDBase.cxx @@ -7,9 +7,6 @@ // ROOT include(s): #include <Rtypes.h> -// Boost include(s): -#include <boost/algorithm/string.hpp> - // Gaudi/Athena include(s): #include "GaudiKernel/System.h" #include "AthenaKernel/errorcheck.h" diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationConfigList.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationConfigList.py index 33228a7ca609d1fba442447fffc445848bfa9ddf..72d062e89fe3deb321024f02daae939e783d12fc 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationConfigList.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationConfigList.py @@ -80,6 +80,7 @@ from DerivationFrameworkEGamma.EGAM10 import EGAM10Cfg # FTAG derivations from DerivationFrameworkFlavourTag.FTAG1 import FTAG1Cfg from DerivationFrameworkFlavourTag.FTAG2 import FTAG2Cfg +from DerivationFrameworkFlavourTag.FTAG3 import FTAG3Cfg # Jet/Etmiss derivations # JETM1: dijet for MC calibrations, JER, MJB, eta-intercalibration @@ -112,7 +113,7 @@ __all__ = ['TEST1Cfg','TEST2Cfg','TEST3Cfg','TEST4Cfg','TEST5Cfg','TEST6Cfg', 'TRUTH0Cfg','TRUTH1Cfg','TRUTH3Cfg', 'PHYSCfg','PHYSLITECfg', 'PHYSVALCfg', - 'FTAG1Cfg', 'FTAG2Cfg', + 'FTAG1Cfg', 'FTAG2Cfg', 'FTAG3Cfg', 'HIGG1D1Cfg', 'LLP1Cfg', 'IDTR2Cfg', diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationSkeleton.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationSkeleton.py index f86f4e44c7465d10de45bada0b01da90eecf15f2..1f5758b3c901216e75a441d5aa0660c4f66fc3a4 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationSkeleton.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkConfiguration/python/DerivationSkeleton.py @@ -69,10 +69,11 @@ def fromRunArgs(runArgs): # Output files for runArg in dir(runArgs): - if 'output' in runArg and 'File' in runArg and 'NTUP_PHYSVAL' not in runArg: + if 'output' in runArg and 'File' in runArg and 'Type' not in runArg and 'NTUP_PHYSVAL' not in runArg: outputFileName = getattr(runArgs, runArg) flagString = f'Output.{runArg.strip("output")}Name' flags.addFlag(flagString, outputFileName) + flags.addFlag(f'Output.doWrite{runArg.removeprefix("output").removesuffix("File")}', True) flags.Output.doWriteDAOD = True # Pre-include @@ -101,9 +102,12 @@ def fromRunArgs(runArgs): from EventBookkeeperTools.EventBookkeeperToolsConfig import CutFlowSvcCfg cfg.merge(CutFlowSvcCfg(flags)) + from xAODMetaDataCnv.InfileMetaDataConfig import InfileMetaDataCfg for formatName in formats: derivationConfig = getattr(DerivationConfigList, f'{formatName}Cfg') cfg.merge(derivationConfig(flags)) + # Needed for MetaData + cfg.merge(InfileMetaDataCfg(flags, f"DAOD_{formatName}")) # Pass-through mode (ignore skimming and accept all events) if hasattr(runArgs, 'passThrough'): diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/CMakeLists.txt b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/CMakeLists.txt index f58f53f93264cd3f817d3f9aea01c3ecc1a76b70..43ec2980ec791a27b476369dfa304214f0bd06b0 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/CMakeLists.txt +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/CMakeLists.txt @@ -14,4 +14,3 @@ atlas_add_component( DerivationFrameworkFlavourTag # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) -atlas_install_joboptions( share/*.py ) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/BTaggingContent.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/BTaggingContent.py index c508668ed281bf04218448be825e5be93d67b930..f10adb31e422088f03dce29c9639a71af63ed146 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/BTaggingContent.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/BTaggingContent.py @@ -33,6 +33,9 @@ BTaggingStandardRun3Aux = \ , "dipsLoose20220314v2_pu" , "dipsLoose20220314v2_pc" , "dipsLoose20220314v2_pb" + , "dipsLooseVR20230208_pu" + , "dipsLooseVR20230208_pc" + , "dipsLooseVR20230208_pb" , "SV1_NGTinSvx" , "SV1_masssvx" @@ -56,7 +59,9 @@ BTaggingStandardRun3Aux = \ , "GN120220509_pb" , "GN120220509_pc" , "GN120220509_pu" - + , "GN2v00_pb" + , "GN2v00_pc" + , "GN2v00_pu" ] BTaggingStandardRun4Aux = [ diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py index e2323194d95c4dcd6b43a7bf5319b8e309c8c2c6..d836ed7e3abe0ca9eba899b2a6626ca9ea01511a 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py @@ -35,19 +35,13 @@ def FTAG1KernelCfg(flags, name='FTAG1Kernel', **kwargs): return acc -def FTAG1Cfg(flags): +def FTAG1CoreCfg(flags, name_tag='FTAG1', extra_SmartCollections=None, extra_AllVariables=None, trigger_option=''): - acc = ComponentAccumulator() + if extra_SmartCollections is None: extra_SmartCollections = [] + if extra_AllVariables is None: extra_AllVariables = [] - # Get the lists of triggers needed for trigger matching. - # This is needed at this scope (for the slimming) and further down in the config chain - # for actually configuring the matching, so we create it here and pass it down - # TODO: this should ideally be called higher up to avoid it being run multiple times in a train - from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper - FTAG1TriggerListsHelper = TriggerListsHelper(flags) - # Common augmentations - acc.merge(FTAG1KernelCfg(flags, name="FTAG1Kernel", StreamName = 'StreamDAOD_FTAG1', TriggerListsHelper = FTAG1TriggerListsHelper)) + acc = ComponentAccumulator() # ============================ # Define contents of the format @@ -55,7 +49,7 @@ def FTAG1Cfg(flags): from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper - FTAG1SlimmingHelper = SlimmingHelper("FTAG1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags) + FTAG1SlimmingHelper = SlimmingHelper(name_tag+"SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags) # Many of these are added to AllVariables below as well. We add # these items in both places in case some of the smart collections @@ -74,6 +68,11 @@ def FTAG1Cfg(flags): "AntiKt10UFOCSSKJets", "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets", ] + if len(extra_SmartCollections)>0: + for a_container in extra_SmartCollections: + if a_container not in FTAG1SlimmingHelper.SmartCollections: + FTAG1SlimmingHelper.SmartCollections.append(a_container) + FTAG1SlimmingHelper.AllVariables = [ "EventInfo", "PrimaryVertices", @@ -95,6 +94,10 @@ def FTAG1Cfg(flags): "TruthVertices", "TruthBottom", "TruthElectrons","TruthMuons","TruthTaus", ] + if len(extra_AllVariables)>0: + for a_container in extra_AllVariables: + if a_container not in FTAG1SlimmingHelper.AllVariables: + FTAG1SlimmingHelper.AllVariables.append(a_container) if flags.BTagging.Pseudotrack: FTAG1SlimmingHelper.AllVariables += [ "InDetPseudoTrackParticles" ] @@ -111,14 +114,6 @@ def FTAG1Cfg(flags): 'NVSI_SecVrt_Loose' : 'xAOD::VertexContainer','NVSI_SecVrt_LooseAux' : 'xAOD::VertexAuxContainer'}) # Append to dictionary - FTAG1SlimmingHelper.AppendToDictionary['GlobalChargedParticleFlowObjects'] ='xAOD::FlowElementContainer' - FTAG1SlimmingHelper.AppendToDictionary['GlobalChargedParticleFlowObjectsAux'] ='xAOD::FlowElementAuxContainer' - FTAG1SlimmingHelper.AppendToDictionary['GlobalNeutralParticleFlowObjects'] = 'xAOD::FlowElementContainer' - FTAG1SlimmingHelper.AppendToDictionary['GlobalNeutralParticleFlowObjectsAux'] = 'xAOD::FlowElementAuxContainer' - FTAG1SlimmingHelper.AppendToDictionary['CHSGChargedParticleFlowObjects'] = 'xAOD::FlowElementContainer' - FTAG1SlimmingHelper.AppendToDictionary['CHSGChargedParticleFlowObjectsAux'] = 'xAOD::ShallowAuxContainer' - FTAG1SlimmingHelper.AppendToDictionary['CHSGNeutralParticleFlowObjects'] = 'xAOD::FlowElementContainer' - FTAG1SlimmingHelper.AppendToDictionary['CHSGNeutralParticleFlowObjectsAux'] = 'xAOD::ShallowAuxContainer' from DerivationFrameworkFlavourTag import FtagBaseContent @@ -166,15 +161,37 @@ def FTAG1Cfg(flags): FtagBaseContent.add_ExtraVariables_to_SlimmingHelper(FTAG1SlimmingHelper) # Trigger content - FtagBaseContent.trigger_setup(FTAG1SlimmingHelper) + FtagBaseContent.trigger_setup(FTAG1SlimmingHelper, trigger_option) # Output stream FTAG1ItemList = FTAG1SlimmingHelper.GetItemList() - acc.merge(OutputStreamCfg(flags, "DAOD_FTAG1", ItemList=FTAG1ItemList, AcceptAlgs=["FTAG1Kernel"])) + acc.merge(OutputStreamCfg(flags, "DAOD_"+name_tag, ItemList=FTAG1ItemList, AcceptAlgs=[name_tag+"Kernel"])) + + return acc + +def FTAG1Cfg(flags): + + acc = ComponentAccumulator() + + # Get the lists of triggers needed for trigger matching. + # This is needed at this scope (for the slimming) and further down in the config chain + # for actually configuring the matching, so we create it here and pass it down + # TODO: this should ideally be called higher up to avoid it being run multiple times in a train + from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper + FTAG1TriggerListsHelper = TriggerListsHelper(flags) + + # name_tag has to be consistent between KernelCfg and CoreCfg + FTAG1_name_tag = 'FTAG1' + + # Common augmentations + acc.merge(FTAG1KernelCfg(flags, name=FTAG1_name_tag + "Kernel", StreamName = 'StreamDAOD_'+FTAG1_name_tag, TriggerListsHelper = FTAG1TriggerListsHelper)) + # Content of FTAG1 + acc.merge(FTAG1CoreCfg(flags, FTAG1_name_tag)) return acc + def V0ToolCfg(flags, augmentationTools=None, tool_name_prefix="FTAG1", container_name_prefix="FTAG"): acc = ComponentAccumulator() diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG3.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG3.py new file mode 100644 index 0000000000000000000000000000000000000000..a523876172522e75664c6fbe8755c84cedc5a672 --- /dev/null +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG3.py @@ -0,0 +1,114 @@ +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +#!/usr/bin/env python +#==================================================================== +# DAOD_FTAG3.py +# This defines DAOD_FTAG3, an unskimmed DAOD format for Run 3. +# It is designed for the g->bb calibration. +# It requires the flag FTAG3 in Derivation_tf.py +#==================================================================== + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + + +# Main algorithm config +def FTAG3KernelCfg(flags, name='FTAG3Kernel', **kwargs): + """Configure the derivation framework driving algorithm (kernel) for FTAG3""" + acc = ComponentAccumulator() + + from DerivationFrameworkFlavourTag.FTAG1 import FTAG1KernelCfg + acc.merge(FTAG1KernelCfg(flags, name, TriggerListsHelper = kwargs['TriggerListsHelper'])) + + # augmentation tools + augmentationTools = [] + + # skimming tools + skimmingTools = [] + # filter leptons + lepton_skimming_expression = 'count( (Muons.pt > 5*GeV) && (0 == Muons.muonType || 1 == Muons.muonType || 4 == Muons.muonType) ) >=1' + FTAG3LeptonSkimmingTool = CompFactory.DerivationFramework.xAODStringSkimmingTool( + name = "FTAG3LeptonSkimmingTool", + expression = lepton_skimming_expression ) + acc.addPublicTool(FTAG3LeptonSkimmingTool) + # filter large-R jets + UFOjets_skimming_expression = 'count( AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets.pt > 150*GeV ) >= 1' + FTAG3UFOjetsSkimmingTool = CompFactory.DerivationFramework.xAODStringSkimmingTool( + name = "FTAG3UFOjetsSkimmingTool", + expression = UFOjets_skimming_expression ) + acc.addPublicTool(FTAG3UFOjetsSkimmingTool) + # filter single-jet triggers for data + if not flags.Input.isMC: + acc.merge(FTAG3TriggerSkimmingToolCfg(flags, skimmingTools)) + + # thinning tools + thinningTools = [] + from DerivationFrameworkInDet.InDetToolsConfig import MuonTrackParticleThinningCfg + # Include inner detector tracks associated with muons + FTAG3MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg( + flags, + name = "FTAG3MuonTPThinningTool", + StreamName = kwargs['StreamName'], + MuonKey = "Muons", + InDetTrackParticlesKey = "InDetTrackParticles")) + + skimmingTools += [ + FTAG3UFOjetsSkimmingTool, + FTAG3LeptonSkimmingTool, + ] + + thinningTools = [ + FTAG3MuonTPThinningTool, + ] + + # Finally the kernel itself + DerivationKernel = CompFactory.DerivationFramework.DerivationKernel + acc.addEventAlgo(DerivationKernel(name, AugmentationTools = augmentationTools, ThinningTools = thinningTools, SkimmingTools = skimmingTools)) + return acc + + +def FTAG3Cfg(flags, skimmingTools=None): + acc = ComponentAccumulator() + + # Get the lists of triggers needed for trigger matching. + # This is needed at this scope (for the slimming) and further down in the config chain + # for actually configuring the matching, so we create it here and pass it down + # TODO: this should ideally be called higher up to avoid it being run multiple times in a train + from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper + FTAG3TriggerListsHelper = TriggerListsHelper(flags) + + # the name_tag has to consistent between KernelCfg and CoreCfg + FTAG3_name_tag = 'FTAG3' + + # Common augmentations + acc.merge(FTAG3KernelCfg(flags, name= FTAG3_name_tag + "Kernel", StreamName = 'StreamDAOD_'+FTAG3_name_tag, TriggerListsHelper = FTAG3TriggerListsHelper)) + + from DerivationFrameworkFlavourTag.FTAG1 import FTAG1CoreCfg + + extra_SmartCollections = [] + extra_AllVariables = [ "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets" ] + trigger_option = 'FTAG3' + acc.merge(FTAG1CoreCfg(flags, FTAG3_name_tag, extra_SmartCollections, extra_AllVariables, trigger_option)) + + return acc + + +def FTAG3TriggerSkimmingToolCfg(flags, skimmingTools=None): + """configure the trigger skimming tool""" + acc = ComponentAccumulator() + + if skimmingTools is None: + skimmingTools = [] + + triggers = [ + 'HLT_j150', 'HLT_j200', 'HLT_j260', 'HLT_j300', 'HLT_j320', 'HLT_j360', 'HLT_j380', 'HLT_j400', 'HLT_j420' + ] + + FTAG3TrigSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool( name = "FTAG3TrigSkimmingTool1", + TriggerListOR = triggers ) + acc.addPublicTool(FTAG3TrigSkimmingTool) + skimmingTools += [ + FTAG3TrigSkimmingTool + ] + return(acc) + + diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagBaseContent.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagBaseContent.py index e893105044345ee7531439bb2d036c8c2c1b84ae..4e85ea7405a4169092e045293822c7d9bfb0fc29 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagBaseContent.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagBaseContent.py @@ -75,6 +75,9 @@ def trigger_setup(SlimmingHelper, option=''): SlimmingHelper.IncludeEGammaTriggerContent = True SlimmingHelper.IncludeBJetTriggerContent = True SlimmingHelper.IncludeBPhysTriggerContent = True + if option == 'FTAG3': + SlimmingHelper.IncludeJetTriggerContent = True + def trigger_matching(SlimmingHelper, TriggerListsHelper, ConfigFlags): # Trigger matching diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagCommon.py deleted file mode 100644 index 5779cf144a1fba908048cb52c4cb33945a803942..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagCommon.py +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration - -#==================================================================== -# FtagCommon.py -# This is to define common objects used by PHYSVAL, FTAG1 and FTAG2. -#==================================================================== - -from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkIsMonteCarlo -from DerivationFrameworkMCTruth.MCTruthCommon import addTruth3ContentToSlimmerTool -from DerivationFrameworkEGamma.ElectronsCPDetailedContent import GSFTracksCPDetailedContent -from DerivationFrameworkFlavourTag import FtagBaseContent - -# Import common items used in PHYSVAL, FTAG1 and FTAG2 from FtagBaseContent -PHYSVAL_FTAG1_FTAG2_mc_AppendToDictionary = FtagBaseContent.PHYSVAL_FTAG1_FTAG2_mc_AppendToDictionary -PHYSVAL_FTAG1_FTAG2_ExtraVariables = FtagBaseContent.PHYSVAL_FTAG1_FTAG2_ExtraVariables -PHYSVAL_FTAG1_FTAG2_StaticContent = FtagBaseContent.PHYSVAL_FTAG1_FTAG2_StaticContent - -## Common functions used in PHYSVAL, FTAG1 and FTAG2 -def add_static_content_to_SlimmingHelper(SlimmingHelper): - SlimmingHelper.StaticContent = PHYSVAL_FTAG1_FTAG2_StaticContent - -def add_truth_to_SlimmingHelper(SlimmingHelper): - if DerivationFrameworkIsMonteCarlo: - SlimmingHelper.AppendToDictionary = PHYSVAL_FTAG1_FTAG2_mc_AppendToDictionary - addTruth3ContentToSlimmerTool(SlimmingHelper) - SlimmingHelper.AllVariables += ['TruthHFWithDecayParticles','TruthHFWithDecayVertices','TruthCharm'] - -def add_ExtraVariables_to_SlimmingHelper(SlimmingHelper): - SlimmingHelper.ExtraVariables += PHYSVAL_FTAG1_FTAG2_ExtraVariables - SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent - -## Common function used in FTAG1 and FTAG2 -def trigger_setup(SlimmingHelper, option=''): - SlimmingHelper.IncludeTriggerNavigation = False - SlimmingHelper.IncludeJetTriggerContent = False - SlimmingHelper.IncludeMuonTriggerContent = False - SlimmingHelper.IncludeEGammaTriggerContent = False - SlimmingHelper.IncludeJetTauEtMissTriggerContent = False - SlimmingHelper.IncludeTauTriggerContent = False - SlimmingHelper.IncludeEtMissTriggerContent = False - SlimmingHelper.IncludeBJetTriggerContent = False - SlimmingHelper.IncludeBPhysTriggerContent = False - SlimmingHelper.IncludeMinBiasTriggerContent = False - if option == 'FTAG2': - SlimmingHelper.IncludeMuonTriggerContent = True - SlimmingHelper.IncludeEGammaTriggerContent = True - SlimmingHelper.IncludeBJetTriggerContent = True - SlimmingHelper.IncludeBPhysTriggerContent = True - - - diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG1.py deleted file mode 100644 index 394089b5d9cf338f8135a927bbe6fd9cf9bbaa99..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG1.py +++ /dev/null @@ -1,111 +0,0 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration - -#==================================================================== -# DAOD_FTAG1.py -# This defines DAOD_FTAG1, an unskimmed DAOD format for Run 3. -# It contains the variables and objects needed for -# ftag algorithm development. -# It requires the reductionConf flag FTAG1 in Reco_tf.py -#==================================================================== - -from AthenaCommon import Logging -nanolog = Logging.logging.getLogger('FTAG1') - -from DerivationFrameworkCore.DerivationFrameworkMaster import buildFileName, DerivationFrameworkIsMonteCarlo, DerivationFrameworkJob -from DerivationFrameworkPhys import PhysCommon -from DerivationFrameworkPhys import PhysCommonTrigger -from DerivationFrameworkEGamma import ElectronsCPDetailedContent -from DerivationFrameworkJetEtMiss import METCommon -from DerivationFrameworkJetEtMiss.METCommon import scheduleMETAssocAlg -from DerivationFrameworkCore import LHE3WeightMetadata -from DerivationFrameworkFlavourTag import FtagCommon - -import re - - -#==================================================================== -# Set up sequence for this format and add to the top sequence -#==================================================================== -FTAG1Seq = CfgMgr.AthSequencer("FTAG1Seq") -DerivationFrameworkJob += FTAG1Seq - -#==================================================================== -# SET UP STREAM -#==================================================================== -streamName = derivationFlags.WriteDAOD_FTAG1Stream.StreamName -fileName = buildFileName( derivationFlags.WriteDAOD_FTAG1Stream ) -FTAG1Stream = MSMgr.NewPoolRootStream( streamName, fileName ) -FTAG1Stream.AcceptAlgs(["FTAG1Kernel"]) - -### Thinning and augmentation tools lists -thinningTools = [] -AugmentationTools = [] - -# Special sequence -FTAG1Seq = CfgMgr.AthSequencer("FTAG1Seq") - - -#==================================================================== -# CREATE THE DERIVATION KERNEL ALGORITHM -#==================================================================== -# Add the kernel for thinning (requires the objects be defined) -FTAG1Seq += CfgMgr.DerivationFramework__DerivationKernel("FTAG1Kernel", - ThinningTools = thinningTools) - - -#==================================================================== -# CONTENTS -#==================================================================== -from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper -FTAG1SlimmingHelper = SlimmingHelper("FTAG1SlimmingHelper") - -FTAG1SlimmingHelper.SmartCollections = ["Electrons", - "Muons", - "PrimaryVertices", - "InDetTrackParticles", - "AntiKt4EMPFlowJets", - "BTagging_AntiKt4EMPFlow", - "AntiKtVR30Rmax4Rmin02PV0TrackJets", - "BTagging_AntiKtVR30Rmax4Rmin02Track", - "MET_Baseline_AntiKt4EMPFlow", - ] - -FTAG1SlimmingHelper.AllVariables = [ - "EventInfo", - "PrimaryVertices", - "InDetTrackParticles", - "InDetLargeD0TrackParticles", - "BTagging_AntiKt4EMPFlow", - "BTagging_AntiKtVR30Rmax4Rmin02Track", - "BTagging_AntiKt4EMPFlowJFVtx", - "BTagging_AntiKt4EMPFlowSecVtx", - "TruthParticles", - "TruthVertices", - "TruthBottom", "TruthElectrons","TruthMuons","TruthTaus", - ] - -from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags -if flags.BTagging.Pseudotrack: - FTAG1SlimmingHelper.AllVariables += [ "InDetPseudoTrackParticles" ] - -if flags.BTagging.Trackless: - FTAG1SlimmingHelper.AllVariables += [ - "JetAssociatedPixelClusters", - "JetAssociatedSCTClusters", - ] - -# Static content -FtagCommon.add_static_content_to_SlimmingHelper(FTAG1SlimmingHelper) - -# Trigger content -FtagCommon.trigger_setup(FTAG1SlimmingHelper) - -# Add truth containers -FtagCommon.add_truth_to_SlimmingHelper(FTAG1SlimmingHelper) - -# Add ExtraVariables -FtagCommon.add_ExtraVariables_to_SlimmingHelper(FTAG1SlimmingHelper) - -# Final construction of output stream -FTAG1SlimmingHelper.AppendContentToStream(FTAG1Stream) - diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG2.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG2.py deleted file mode 100644 index 3a7cd97959b5d16387376c45b9d267df64db37fa..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/share/FTAG2.py +++ /dev/null @@ -1,155 +0,0 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration - -#==================================================================== -# DAOD_FTAG2.py -# This defines DAOD_FTAG2, an unskimmed DAOD format for Run 3. -# It contains the variables and objects needed for -# 2-lepton based ftag calibration. -# It requires the reductionConf flag FTAG2 in Reco_tf.py -#==================================================================== - -from AthenaCommon import Logging -nanolog = Logging.logging.getLogger('FTAG2') - -from DerivationFrameworkCore.DerivationFrameworkMaster import buildFileName, DerivationFrameworkIsMonteCarlo, DerivationFrameworkJob -from DerivationFrameworkPhys import PhysCommon -from DerivationFrameworkPhys import PhysCommonTrigger -from DerivationFrameworkEGamma import ElectronsCPDetailedContent -from DerivationFrameworkJetEtMiss import METCommon -from DerivationFrameworkJetEtMiss.METCommon import scheduleMETAssocAlg -from DerivationFrameworkCore import LHE3WeightMetadata -from DerivationFrameworkFlavourTag import FtagCommon -import re - - -#==================================================================== -# Set up sequence for this format and add to the top sequence -#==================================================================== -FTAG2Seq = CfgMgr.AthSequencer("FTAG2Seq") -DerivationFrameworkJob += FTAG2Seq - -#==================================================================== -# SET UP STREAM -#==================================================================== -streamName = derivationFlags.WriteDAOD_FTAG2Stream.StreamName -fileName = buildFileName( derivationFlags.WriteDAOD_FTAG2Stream ) -FTAG2Stream = MSMgr.NewPoolRootStream( streamName, fileName ) -FTAG2Stream.AcceptAlgs(["FTAG2Kernel"]) - -### Thinning and augmentation tools lists -thinningTools = [] -AugmentationTools = [] - -# Special sequence -FTAG2Seq = CfgMgr.AthSequencer("FTAG2Seq") - -#==================================================================== -# SKIMMING TOOLS -# (SKIMMING = REMOVING WHOLE EVENTS THAT FAIL CRITERIA) -# Create skimming tool, and create + add kernel to sequence -#==================================================================== -lepton_skimming_expression = 'count( (Muons.pt > 18*GeV) && (0 == Muons.muonType || 1 == Muons.muonType || 4 == Muons.muonType) ) + count(( Electrons.pt > 18*GeV) && ((Electrons.Loose) || (Electrons.DFCommonElectronsLHLoose))) >= 2 && count( (Muons.pt > 25*GeV) && (0 == Muons.muonType || 1 == Muons.muonType || 4 == Muons.muonType) ) + count(( Electrons.pt > 25*GeV) && ((Electrons.Loose) || (Electrons.DFCommonElectronsLHLoose))) >= 1' - -from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__xAODStringSkimmingTool -FTAG2StringSkimmingTool = DerivationFramework__xAODStringSkimmingTool(name = "FTAG2StringSkimmingTool", - expression = lepton_skimming_expression - ) - -ToolSvc += FTAG2StringSkimmingTool -FTAG2Seq += CfgMgr.DerivationFramework__DerivationKernel("FTAG2SkimKernel", - SkimmingTools = [FTAG2StringSkimmingTool], - ) - - -# TrackParticles associated with small-R jets -track_selection_string = "InDetTrackParticles.numberOfSCTHits + InDetTrackParticles.numberOfPixelHits > 1" - -from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__JetTrackParticleThinning -FTAG2AktVRJetTPThinningTool = DerivationFramework__JetTrackParticleThinning( name = "FTAG2AktVRJetTPThinningTool", - StreamName = FTAG2Stream.Name, - JetKey = "AntiKtVR30Rmax4Rmin02PV0TrackJets", - SelectionString = "AntiKtVR30Rmax4Rmin02PV0TrackJets.pt > 7*GeV", - TrackSelectionString = track_selection_string, - InDetTrackParticlesKey = "InDetTrackParticles", - ) -ToolSvc += FTAG2AktVRJetTPThinningTool -thinningTools.append(FTAG2AktVRJetTPThinningTool) - -FTAG2Akt4PFlowJetTPThinningTool = DerivationFramework__JetTrackParticleThinning( name = "FTAG2Akt4PFlowJetTPThinningTool", - StreamName = FTAG2Stream.Name, - JetKey = "AntiKt4EMPFlowJets", - SelectionString = "AntiKt4EMPFlowJets.pt > 15*GeV", - TrackSelectionString = track_selection_string, - InDetTrackParticlesKey = "InDetTrackParticles", - ) -ToolSvc += FTAG2Akt4PFlowJetTPThinningTool -thinningTools.append(FTAG2Akt4PFlowJetTPThinningTool) - - -# Include inner detector tracks associated with muons -from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__MuonTrackParticleThinning -FTAG2MuonTPThinningTool = DerivationFramework__MuonTrackParticleThinning(name = "FTAG2MuonTPThinningTool", - StreamName = FTAG2Stream.Name, - MuonKey = "Muons", - InDetTrackParticlesKey = "InDetTrackParticles") - -ToolSvc += FTAG2MuonTPThinningTool -thinningTools.append(FTAG2MuonTPThinningTool) - - - -#==================================================================== -# CREATE THE DERIVATION KERNEL ALGORITHM -#==================================================================== -# Add the kernel for thinning (requires the objects be defined) -FTAG2Seq += CfgMgr.DerivationFramework__DerivationKernel("FTAG2Kernel", - ThinningTools = thinningTools) - - -#==================================================================== -# CONTENTS -#==================================================================== -from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper -FTAG2SlimmingHelper = SlimmingHelper("FTAG2SlimmingHelper") - -FTAG2SlimmingHelper.SmartCollections = ["Electrons", - "Muons", - "PrimaryVertices", - "InDetTrackParticles", - "AntiKt4EMPFlowJets", - "BTagging_AntiKt4EMPFlow", - "AntiKtVR30Rmax4Rmin02PV0TrackJets", - "BTagging_AntiKtVR30Rmax4Rmin02Track", - "MET_Baseline_AntiKt4EMPFlow", - ] - -FTAG2SlimmingHelper.AllVariables = [ - "EventInfo", - "PrimaryVertices", - "InDetTrackParticles", - "BTagging_AntiKt4EMPFlow", - "BTagging_AntiKtVR30Rmax4Rmin02Track", - "BTagging_AntiKt4EMPFlowJFVtx", - "BTagging_AntiKt4EMPFlowSecVtx", - "TruthBottom", "TruthElectrons","TruthMuons","TruthTaus", - ] - -# Static content -FtagCommon.add_static_content_to_SlimmingHelper(FTAG2SlimmingHelper) - -# Trigger content -FtagCommon.trigger_setup(FTAG2SlimmingHelper,"FTAG2") - -# Add truth containers -FtagCommon.add_truth_to_SlimmingHelper(FTAG2SlimmingHelper) - -# Add ExtraVariables -FtagCommon.add_ExtraVariables_to_SlimmingHelper(FTAG2SlimmingHelper) - -# Add trigger matching -PhysCommonTrigger.trigmatching_helper_notau.add_to_slimming(FTAG2SlimmingHelper) -PhysCommonTrigger.trigmatching_helper_tau.add_to_slimming(FTAG2SlimmingHelper) - -# Final construction of output stream -FTAG2SlimmingHelper.AppendContentToStream(FTAG2Stream) - diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkLLP/python/LLPToolsConfig.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkLLP/python/LLPToolsConfig.py index 789f9dc0cffeaa5110ac98eb579a80e0895e9daf..63bfe3a126e4f30f0f1be6bc27408c6778a07171 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkLLP/python/LLPToolsConfig.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkLLP/python/LLPToolsConfig.py @@ -123,42 +123,50 @@ def LRTElectronMergerAlg(ConfigFlags, name="LLP1_ElectronLRTMergingAlg", **kwarg return acc # Electron LLH setup for LLP1 -# because the egamma config does not support setting the conf file def LRTElectronLHSelectorsCfg(ConfigFlags): - - AsgElectronLikelihoodTool = CompFactory.AsgElectronLikelihoodTool + acc = ComponentAccumulator() - ElectronLHSelectorVeryLooseNoPix = AsgElectronLikelihoodTool( - "ElectronLHSelectorVeryLooseNoPix", - ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodVeryLooseTriggerConfig_NoPix.conf") - ElectronLHSelectorVeryLooseNoPix.primaryVertexContainer = "PrimaryVertices" - ElectronLHSelectorVeryLooseNoPix.usePVContainer = ConfigFlags.Tracking.doVertexFinding - acc.addPublicTool(ElectronLHSelectorVeryLooseNoPix) + from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig import AsgElectronLikelihoodToolCfg + from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping import electronLHmenu + from ROOT import LikeEnum + lhMenu = electronLHmenu.offlineMC21 + from AtlasGeoModel.CommonGMJobProperties import CommonGeometryFlags as geoFlags + if geoFlags.Run() == "RUN2" : + lhMenu = electronLHmenu.offlineMC20 - ElectronLHSelectorLooseNoPix = AsgElectronLikelihoodTool( - "ElectronLHSelectorLooseNoPix", - ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodLooseTriggerConfig_NoPix.conf") + ElectronLHSelectorVeryLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg( + ConfigFlags, + name="ElectronLHSelectorVeryLooseNoPix", + quality=LikeEnum.VeryLooseLLP, + menu=lhMenu) + ) + ElectronLHSelectorVeryLooseNoPix.primaryVertexContainer = "PrimaryVertices" + + ElectronLHSelectorLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg( + ConfigFlags, + name="ElectronLHSelectorLooseNoPix", + quality=LikeEnum.LooseLLP, + menu=lhMenu) + ) ElectronLHSelectorLooseNoPix.primaryVertexContainer = "PrimaryVertices" - ElectronLHSelectorLooseNoPix.usePVContainer = ConfigFlags.Tracking.doVertexFinding - acc.addPublicTool(ElectronLHSelectorLooseNoPix) - - ElectronLHSelectorMediumNoPix = AsgElectronLikelihoodTool( - "ElectronLHSelectorMediumNoPix", - ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodMediumTriggerConfig_NoPix.conf") + ElectronLHSelectorMediumNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg( + ConfigFlags, + name="ElectronLHSelectorMediumNoPix", + quality=LikeEnum.MediumLLP, + menu=lhMenu) + ) ElectronLHSelectorMediumNoPix.primaryVertexContainer = "PrimaryVertices" - ElectronLHSelectorMediumNoPix.usePVContainer = ConfigFlags.Tracking.doVertexFinding - acc.addPublicTool(ElectronLHSelectorMediumNoPix) - - ElectronLHSelectorTightNoPix = AsgElectronLikelihoodTool( - "ElectronLHSelectorTightNoPix", - ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodTightTriggerConfig_NoPix.conf") + ElectronLHSelectorTightNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg( + ConfigFlags, + name="ElectronLHSelectorTightNoPix", + quality=LikeEnum.TightLLP, + menu=lhMenu) + ) ElectronLHSelectorTightNoPix.primaryVertexContainer = "PrimaryVertices" - ElectronLHSelectorTightNoPix.usePVContainer = ConfigFlags.Tracking.doVertexFinding - acc.addPublicTool(ElectronLHSelectorTightNoPix) from DerivationFrameworkEGamma.EGammaToolsConfig import EGElectronLikelihoodToolWrapperCfg diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYS.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYS.py index 90dcb323ada99be2ab22394a2714692ab6b9e929..40b486b188a6af0cfdab65128b316f0ae31e620c 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYS.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYS.py @@ -162,7 +162,7 @@ def PHYSCfg(ConfigFlags): msg = logging.getLogger('PHYSCfg') msg.warn('doEDMVersionConversion is still in validation, WRITING FULL TRIGGER EDM TO THE DAOD!') addTrigEDMSetToOutput(ConfigFlags, PHYSSlimmingHelper, "AODFULL") - PHYSSlimmingHelper.AppendToDictionary.update({'HLTNav_R2ToR3Summary':'xAOD::TrigCompositeContainer'}) + PHYSSlimmingHelper.AppendToDictionary.update({'HLTNav_R2ToR3Summary':'xAOD::TrigCompositeContainer','HLTNav_R2ToR3SummaryAux':'xAOD::TrigCompositeAuxContainer'}) PHYSSlimmingHelper.AllVariables += ['HLTNav_R2ToR3Summary'] ## ##################################################### diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/python/PHYSVAL.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/python/PHYSVAL.py index cdf8c4da2fc58eb4b594970479beda1d7d0e80a5..6b2d7b27cc8a3aff3be085fa5ee0254472e35b21 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/python/PHYSVAL.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/python/PHYSVAL.py @@ -271,6 +271,9 @@ def PHYSVALCfg(ConfigFlags): OutputContainerPrefix = "TrigMatch_", TriggerList = PHYSVALTriggerListsHelper.Run3TriggerNamesNoTau) + # Full trigger content (needed for T0-style monitoring) + from DerivationFrameworkTrigger.TrigSlimmingHelper import addTrigEDMSetToOutput + addTrigEDMSetToOutput(ConfigFlags, PHYSVALSlimmingHelper, "AODFULL") # Output stream PHYSVALItemList = PHYSVALSlimmingHelper.GetItemList() diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/LikelihoodEnums.h b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/LikelihoodEnums.h index 6754f13fab89b44c7083a3ab8ef34d6c12cf062e..2dce4c2e1d62a5f72dc9b1f8886af490273b9e67 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/LikelihoodEnums.h +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/LikelihoodEnums.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ #ifndef _LIKELIHOODENUMS_H @@ -15,7 +15,11 @@ namespace LikeEnum { Tight, VeryTight, LooseRelaxed, - CustomOperatingPoint + CustomOperatingPoint, + VeryLooseLLP, + LooseLLP, + MediumLLP, + TightLLP }; struct ROOT6_NamespaceAutoloadHook{}; diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/EGSelectorConfigurationMapping.h b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/EGSelectorConfigurationMapping.h index 9bc63e5e95b0022e20a0c8edf4a66f874d535e6e..28671965ecbe29a07022c5b9c1533d502cd396a5 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/EGSelectorConfigurationMapping.h +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/EGSelectorConfigurationMapping.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ #ifndef __EGSelectorConfigurationMapping__ @@ -15,7 +15,7 @@ namespace EgammaSelectors { // Note: keep this conf file up to date with the PhotonIsEMTightSelectorConfig // function in python/PhotonIsEMTightSelectorCutDefs.py -// This is the internal part , We need to map string to latest reccomendations +// This is the internal part , We need to map string to latest recommendations const std::map<std::string, std::string> LHPointToConfFile = { { "VeryLooseLHElectron", "ElectronPhotonSelectorTools/offline/mc20_20210514/" @@ -47,6 +47,18 @@ const std::map<std::string, std::string> LHPointToConfFile = { { "TightLHElectron_Run2", "ElectronPhotonSelectorTools/offline/mc20_20210514/" "ElectronLikelihoodTightOfflineConfig2017_Smooth.conf" }, + { "VeryLooseLHElectron_LLP", + "ElectronPhotonSelectorTools/trigger/rel22_20210611/" + "ElectronLikelihoodVeryLooseTriggerConfig_NoPix.conf" }, + { "LooseLHElectron_LLP", + "ElectronPhotonSelectorTools/trigger/rel22_20210611/" + "ElectronLikelihoodLooseTriggerConfig_NoPix.conf" }, + { "MediumLHElectron_LLP", + "ElectronPhotonSelectorTools/trigger/rel22_20210611/" + "ElectronLikelihoodMediumTriggerConfig_NoPix.conf" }, + { "TightLHElectron_LLP", + "ElectronPhotonSelectorTools/trigger/rel22_20210611/" + "ElectronLikelihoodTightTriggerConfig_NoPix.conf" }, }; const std::map<std::string, std::string> PhotonCutPointToConfFile = { { "LoosePhoton", diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronLikelihoodMenuDefs.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronLikelihoodMenuDefs.py index b3b2186fa0755ea5e8112c59b67ad0d701e380c0..6b3a50a1f49aa4b3c69a96cd7cea90fe554f8fa7 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronLikelihoodMenuDefs.py +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronLikelihoodMenuDefs.py @@ -28,6 +28,7 @@ def ElectronLikelihoodTightTriggerConfig2015(theTool): ''' theTool.ConfigFile = "ElectronPhotonSelectorTools/trigger/mc15_20150712/ElectronLikelihoodTightTriggerConfig2015.conf" +# Standard configuration MC20 def ElectronLikelihoodVeryLooseOfflineConfigMC20(theTool): ''' This is for the custom implementation of the VeryLoose offline likelihood for MC20 / Run2 / Release 22. @@ -60,7 +61,34 @@ def ElectronLikelihoodTightOfflineConfigMC20(theTool): ''' theTool.ConfigFile = "ElectronPhotonSelectorTools/offline/mc20_20210514/ElectronLikelihoodTightOfflineConfig2017_Smooth.conf" +# LLP Configuration MC20 +def ElectronLikelihoodVeryLooseLLPOfflineConfigMC20(theTool): + ''' + This is for the custom implementation of the VeryLooseLLP offline likelihood for LRT electrons for MC20 / Run2 / Release 22. + ''' + theTool.ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodVeryLooseTriggerConfig_NoPix.conf" + + +def ElectronLikelihoodLooseLLPOfflineConfigMC20(theTool): + ''' + This is for the custom implementation of the LooseLLP offline likelihood for LRT electrons for MC20 / Run2 / Release 22. + ''' + theTool.ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodLooseTriggerConfig_NoPix.conf" + +def ElectronLikelihoodMediumLLPOfflineConfigMC20(theTool): + ''' + This is for the custom implementation of the MediumLLP offline likelihood for LRT electrons for MC20 / Run2 / Release 22. + (NOTE: same signal eff as offline Mediumpp + 1%) + ''' + theTool.ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodMediumTriggerConfig_NoPix.conf" + +def ElectronLikelihoodTightLLPOfflineConfigMC20(theTool): + ''' + This is for the custom implementation of the TightLLP offline likelihood for LRT electrons for MC20 / Run2 / Release 22. + ''' + theTool.ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodTightTriggerConfig_NoPix.conf" +# Standard configuration MC21 def ElectronLikelihoodVeryLooseOfflineConfigMC21(theTool): ''' This is for the custom implementation of the VeryLoose offline likelihood for MC21 / Run3 / Release 22. @@ -90,3 +118,28 @@ def ElectronLikelihoodTightOfflineConfigMC21(theTool): This is for the custom implementation of the Tight offline likelihood for MC21 / Run3 / Release 22. ''' theTool.ConfigFile = "ElectronPhotonSelectorTools/offline/mc20_20210514/ElectronLikelihoodTightOfflineConfig2017_Smooth.conf" + +# LLP Configuration MC21 +def ElectronLikelihoodVeryLooseLLPOfflineConfigMC21(theTool): + ''' + This is for the custom implementation of the VeryLooseLLP offline likelihood for LRT electrons for MC21 / Run3 / Release 22. + ''' + theTool.ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodVeryLooseTriggerConfig_NoPix.conf" + +def ElectronLikelihoodLooseLLPOfflineConfigMC21(theTool): + ''' + This is for the custom implementation of the LooseLLP offline likelihood for LRT electrons for MC21 / Run3 / Release 22. + ''' + theTool.ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodLooseTriggerConfig_NoPix.conf" + +def ElectronLikelihoodMediumLLPOfflineConfigMC21(theTool): + ''' + This is for the custom implementation of the MediumLLP offline likelihood for LRT electrons for MC21 / Run3 / Release 22. + ''' + theTool.ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodMediumTriggerConfig_NoPix.conf" + +def ElectronLikelihoodTightLLPOfflineConfigMC21(theTool): + ''' + This is for the custom implementation of the TightLLP offline likelihood for LRT electrons for MC21 / Run3 / Release 22. + ''' + theTool.ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodTightTriggerConfig_NoPix.conf" \ No newline at end of file diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronLikelihoodToolMapping.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronLikelihoodToolMapping.py index 5d2f17408e61af43c45fc5a166ada37f7f27d921..faa093de94112e62b9a9e02fd9e38ae625acc0ab 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronLikelihoodToolMapping.py +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronLikelihoodToolMapping.py @@ -34,6 +34,11 @@ ElectronLHMapOfflineMC20 = { LikeEnum.LooseBL: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodLooseBLOfflineConfigMC20), LikeEnum.Medium: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodMediumOfflineConfigMC20), LikeEnum.Tight: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodTightOfflineConfigMC20), + + LikeEnum.VeryLooseLLP: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodVeryLooseLLPOfflineConfigMC20), + LikeEnum.LooseLLP: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodLooseLLPOfflineConfigMC20), + LikeEnum.MediumLLP: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodMediumLLPOfflineConfigMC20), + LikeEnum.TightLLP: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodTightLLPOfflineConfigMC20), } ElectronLHMapOfflineMC21 = { @@ -42,6 +47,11 @@ ElectronLHMapOfflineMC21 = { LikeEnum.LooseBL: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodLooseBLOfflineConfigMC21), LikeEnum.Medium: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodMediumOfflineConfigMC21), LikeEnum.Tight: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodTightOfflineConfigMC21), + + LikeEnum.VeryLooseLLP: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodVeryLooseLLPOfflineConfigMC21), + LikeEnum.LooseLLP: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodLooseLLPOfflineConfigMC21), + LikeEnum.MediumLLP: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodMediumLLPOfflineConfigMC21), + LikeEnum.TightLLP: (LikeEnum.CustomOperatingPoint, ElectronLikelihoodMenuDefs.ElectronLikelihoodTightLLPOfflineConfigMC21), } def ElectronLikelihoodMap(quality, menu): diff --git a/PhysicsAnalysis/ElectronPhotonID/LRTElectronAnalysisTools/Root/ElectronLRTOverlapRemovalTool.cxx b/PhysicsAnalysis/ElectronPhotonID/LRTElectronAnalysisTools/Root/ElectronLRTOverlapRemovalTool.cxx index da65cb459ecc2a8f264fe7d024b5c7d2b8b02808..1b41abc96e5e3db49bcb25901983d631e365eee6 100644 --- a/PhysicsAnalysis/ElectronPhotonID/LRTElectronAnalysisTools/Root/ElectronLRTOverlapRemovalTool.cxx +++ b/PhysicsAnalysis/ElectronPhotonID/LRTElectronAnalysisTools/Root/ElectronLRTOverlapRemovalTool.cxx @@ -27,7 +27,7 @@ namespace CP if (m_electronLLHToolVeryLooseNoPix.empty()) { asg::AsgToolConfig config("AsgElectronLikelihoodTool/ElectronLHSelectorVeryLooseNoPix"); - ATH_CHECK(config.setProperty("ConfigFile", "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodVeryLooseTriggerConfig_NoPix.conf")); + ATH_CHECK(config.setProperty("WorkingPoint", "VeryLooseLHElectron_LLP")); ATH_CHECK(config.makePrivateTool(m_electronLLHToolVeryLooseNoPix)); } @@ -37,7 +37,7 @@ namespace CP if (m_electronLLHToolLooseNoPix.empty()) { asg::AsgToolConfig config("AsgElectronLikelihoodTool/ElectronLHSelectorLooseNoPix"); - ATH_CHECK(config.setProperty("ConfigFile", "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodLooseTriggerConfig_NoPix.conf")); + ATH_CHECK(config.setProperty("WorkingPoint", "LooseLHElectron_LLP")); ATH_CHECK(config.makePrivateTool(m_electronLLHToolLooseNoPix)); } @@ -47,7 +47,7 @@ namespace CP if (m_electronLLHToolMediumNoPix.empty()) { asg::AsgToolConfig config("AsgElectronLikelihoodTool/ElectronLHSelectorMediumNoPix"); - ATH_CHECK(config.setProperty("ConfigFile", "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodMediumTriggerConfig_NoPix.conf")); + ATH_CHECK(config.setProperty("WorkingPoint", "MediumLHElectron_LLP")); ATH_CHECK(config.makePrivateTool(m_electronLLHToolMediumNoPix)); } @@ -57,7 +57,7 @@ namespace CP if (m_electronLLHToolTightNoPix.empty()) { asg::AsgToolConfig config("AsgElectronLikelihoodTool/ElectronLHSelectorTightNoPix"); - ATH_CHECK(config.setProperty("ConfigFile", "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodTightTriggerConfig_NoPix.conf")); + ATH_CHECK(config.setProperty("WorkingPoint", "TightLHElectron_LLP")); ATH_CHECK(config.makePrivateTool(m_electronLLHToolTightNoPix)); } diff --git a/PhysicsAnalysis/ElectronPhotonID/PhotonEfficiencyCorrection/PhotonEfficiencyCorrection/AsgPhotonEfficiencyCorrectionTool.h b/PhysicsAnalysis/ElectronPhotonID/PhotonEfficiencyCorrection/PhotonEfficiencyCorrection/AsgPhotonEfficiencyCorrectionTool.h index a41bbbc94de5e9a8ce2ef10f6ef9f5c813360e6f..c8b46752e4b66d69fbbd266adee85cfe60241fd2 100644 --- a/PhysicsAnalysis/ElectronPhotonID/PhotonEfficiencyCorrection/PhotonEfficiencyCorrection/AsgPhotonEfficiencyCorrectionTool.h +++ b/PhysicsAnalysis/ElectronPhotonID/PhotonEfficiencyCorrection/PhotonEfficiencyCorrection/AsgPhotonEfficiencyCorrectionTool.h @@ -21,10 +21,6 @@ #include <fstream> #include <unordered_map> -// Utility includes -#include "boost/algorithm/string.hpp" // this one to replace std::string names - - //xAOD includes #include "AsgTools/AsgTool.h" #include "PATInterfaces/ISystematicsTool.h" diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagConfig.py index 7318628ffb5b9dfafa47539a174618482bfc8efa..bae834baeff0061b5fb55ee6e14393865b2ee020 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagConfig.py @@ -46,6 +46,7 @@ def GetTaggerTrainingMap(inputFlags, jet_collection_list): "BTagging/20220314/dipsLoose/antikt4empflow/network.json", # new r22 training "BTagging/20220509/dl1dLoose/antikt4empflow/network.json", # new "recommended tagger" named DL1dv01 in EDM "BTagging/20220509/gn1/antikt4empflow/network.onnx", + "BTagging/20230306/gn2v00/antikt4empflow/network.onnx", ], # PFlow jet with custom vertex definition used in HIGG1D1 "AntiKt4EMPFlowCustomVtx": [ @@ -58,7 +59,8 @@ def GetTaggerTrainingMap(inputFlags, jet_collection_list): "BTagging/20210824r22/dl1r/antikt4empflow/network.json", "BTagging/20220314/dipsLoose/antikt4empflow/network.json", # new r22 training "BTagging/20220509/dl1dLoose/antikt4empflow/network.json", # new "recommended tagger" named DL1dv01 in EDM - "BTagging/20220509/gn1/antikt4empflow/network.onnx" + "BTagging/20220509/gn1/antikt4empflow/network.onnx", + "BTagging/20230306/gn2v00/antikt4empflow/network.onnx", ], "AntiKt4EMTopo": [ "BTagging/201903/rnnip/antikt4empflow/network.json", @@ -75,14 +77,9 @@ def GetTaggerTrainingMap(inputFlags, jet_collection_list): "AntiKtVR30Rmax4Rmin02Track": [ "BTagging/201903/rnnip/antiktvr30rmax4rmin02track/network.json", "BTagging/201903/dl1r/antiktvr30rmax4rmin02track/network.json", - "BTagging/20210519r22/dl1r/antikt4empflow/network.json", - "BTagging/20210729/dipsLoose/antikt4empflow/network.json", # old r22 trainings - "BTagging/20210729/dips/antikt4empflow/network.json", - "BTagging/20210824r22/dl1dLoose/antikt4empflow/network.json", # “recommended tagger†which is DL1dLoose20210824r22 named DL1dv00 in EDM - "BTagging/20210824r22/dl1d/antikt4empflow/network.json", - "BTagging/20210824r22/dl1r/antikt4empflow/network.json", - "BTagging/20220314/dipsLoose/antikt4empflow/network.json", # new r22 training - "BTagging/20220509/dl1dLoose/antikt4empflow/network.json", # new "recommended tagger" named DL1dv01 in EDM + "BTagging/20230208/dipsLoose/antiktvr30rmax4rmin02track/network.json", # new r22 training for VR track jets + "BTagging/20230307/DL1dv01/antiktvr30rmax4rmin02track/network.json", # new "recommended tagger" for VR track jets named DL1dv01 in EDM + "BTagging/20230307/gn2v00/antiktvr30rmax4rmin02track/network.onnx", ], } diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedReconstructionConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedReconstructionConfig.py index 5143bfe5a0f9d271e6a59a7aef272e9fb1d7a22c..38bcd6b107cbac52c76c2fb9b4627b6608e00158 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedReconstructionConfig.py +++ b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedReconstructionConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory @@ -830,3 +830,5 @@ if __name__ == "__main__": if not sc.isSuccess(): import sys sys.exit("Execution failed") + else: + cfg.wasMerged() diff --git a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py index 69f2b99259ec801e90ef07062a85ba38d1c97c03..57c41ae5e2ebb2b846f74d2ae39065eac5569e16 100644 --- a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py +++ b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py @@ -496,7 +496,10 @@ if rec.readRDO(): # Write beamspot information into xAOD::EventInfo. # if globalflags.InputFormat.is_bytestream() and not athenaCommonFlags.isOnline() and InDetFlags.enableBeamSpotDecoration(): - topSequence += CfgMgr.xAODMaker__EventInfoBeamSpotDecoratorAlg() + from xAODEventInfoCnv.EventInfoBeamSpotDecoratorAlgConfig import EventInfoBeamSpotDecoratorAlgCfg + from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper + from AthenaConfiguration.AllConfigFlags import ConfigFlags + CAtoGlobalWrapper(EventInfoBeamSpotDecoratorAlgCfg, ConfigFlags) pass # diff --git a/Reconstruction/RecExample/RecJobTransformTests/test/test_data22_13p6TeV_isOnline.sh b/Reconstruction/RecExample/RecJobTransformTests/test/test_data22_13p6TeV_isOnline.sh deleted file mode 100755 index bbbd9f8373d0823ebb252dbd36e1d6daaad727a4..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecJobTransformTests/test/test_data22_13p6TeV_isOnline.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# -# art-description: Reco_tf runs on 13TeV collision data 2018 in an isOnline format -# art-athena-mt: 8 -# art-type: grid -# art-include: master/Athena - -#The input file has to be specified twice because Reco_tf requires such an argument, whilst The RecExOnline job options ignore that and instead uses its own fileName to configure -#the input file - without that specified the code crashes out complaining that fileName was not specified. -inputFile="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecJobTransformTests/data22_13p6TeV/data22_13p6TeV.00430536.physics_Main.daq.RAW/data22_13p6TeV.00430536.physics_Main.daq.RAW._lb1015._SFO-20._0001.data" - -preIncludeString="RecExOnline/RecExOnline_globalconfig.py,RecExOnline/RecExOnline_recoflags.py,RecExOnline/RecExOnline_monitoring.py" -preExecStringOne="isOnline=True;isOnlineStateless=True;isGlobalMonitoring=False;useEmon=False;useAtlantisEmon=False;evtMax=300;from AthenaConfiguration.AllConfigFlags import ConfigFlags;ConfigFlags.Trigger.triggerConfig=\"DB\";fileName=\"${inputFile}\"" - -Reco_tf.py --inputBSFile="${inputFile}" --preInclude="${preIncludeString}" --preExec="${preExecStringOne}" --postInclude="RecExOnline/RecExOnline_postconfig.py" \ - --AMI=f1263 --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --outputHISTFile myHist.root --conditionsTag="CONDBR2-HLTP-2022-02" - -#Remember retval of transform as art result -RES=$? -echo "art-result: $RES Reco" - diff --git a/Reconstruction/RecExample/RecJobTransformTests/test/test_mc20_rdotobs.sh b/Reconstruction/RecExample/RecJobTransformTests/test/test_mc20_rdotobs.sh deleted file mode 100755 index 612556d1f4e471865bf168ab8aee7740cb511a2b..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecJobTransformTests/test/test_mc20_rdotobs.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# -# art-description: RDO to BS on tt mc20 -# art-athena-mt: 4 -# art-type: grid -# art-include: master/Athena - -Reco_tf.py --athenaopts="--threads=8" --inputRDOFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecJobTransformTests/mc20_13TeV/mc20_13TeV.410470.PhPy8EG_A14_ttbar_hdamp258p75_nonallhad.digit.RDO.e6337_e5984_s3126_d1708/RDO.26820830._000021.pool.root.1 --outputBSFile mc20_13TeV.410470.PhPy8EG_A14_ttbar_hdamp258p75_nonallhad.data --autoConfiguration everything --maxEvents 300 --conditionsTag=default:OFLCOND-MC16-SDR-RUN2-09 --geometryVersion=default:ATLAS-R2-2016-01-00-01 --runNumber=410470 - -RES=$? -echo "art-result: $RES Reco" - diff --git a/Reconstruction/RecExample/RecJobTransformTests/test/test_mc18_heavy_ion_withtrigger.sh b/Reconstruction/RecExample/RecJobTransformTests/test/test_mc21_13p6TeV_hi_withtrigger.sh similarity index 79% rename from Reconstruction/RecExample/RecJobTransformTests/test/test_mc18_heavy_ion_withtrigger.sh rename to Reconstruction/RecExample/RecJobTransformTests/test/test_mc21_13p6TeV_hi_withtrigger.sh index 5e9e52fbe205738eddc29b1fd4923dfec4fa9291..2220614afa6acbf4810908fd9a71a570a6997442 100755 --- a/Reconstruction/RecExample/RecJobTransformTests/test/test_mc18_heavy_ion_withtrigger.sh +++ b/Reconstruction/RecExample/RecJobTransformTests/test/test_mc21_13p6TeV_hi_withtrigger.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# art-description: heavy ion reconstruction test from Sebastian Tapia +# art-description: heavy ion reconstruction on mc21 using ttbar # art-athena-mt: 8 # art-type: grid # art-include: master/Athena @@ -9,13 +9,13 @@ export ATHENA_CORE_NUMBER=8 export TRF_ECHO=True; Reco_tf.py \ --multithreaded \ ---inputHITSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecJobTransformTests/mc16_5TeV.420000.Hijing_PbPb_5p02TeV_MinBias_Flow_JJFV6.merge.HITS.e4962_a890_s3136/HITS.17784755._001903.pool.root.1 \ +--inputHITSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecJobTransformTests/mc21_13p6TeV/HITSFiles/mc21_13p6TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.simul.HITS.e8453_s3873/HITS.29625927._000632.pool.root.1 \ --outputESDFile=ESD.pool.root \ --outputAODFile=AOD.pool.root \ --maxEvents=20 \ --steering 'doRDO_TRIG' \ ---conditionsTag 'all:OFLCOND-MC16-SDR-RUN2-08' \ ---postInclude 'all:RecJobTransforms/UseFrontier.py,SimulationJobOptions/postInclude.HijingPars.py' \ +--conditionsTag 'all:OFLCOND-MC21-SDR-RUN3-07' \ +--postInclude 'all:RecJobTransforms/UseFrontier.py' \ --postExec 'r2a:y=(StreamAOD.ItemList if "StreamAOD" in dir() else []);y+=["xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.CELL_SIGNIFICANCE.CELL_SIG_SAMPLING"];' \ --preExec 'r2a:from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.cutLevel.set_Value_and_Lock(4);jobproperties.Beam.bunchSpacing.set_Value_and_Lock(100);rec.doDPD.set_Value_and_Lock(True);' 'all:from AthenaMonitoring.DQMonFlags import jobproperties; jobproperties.DQMonFlagsCont.doHIMon.set_Value_and_Lock(False);rec.doZdc.set_Value_and_Lock(False);rec.doHeavyIon.set_Value_and_Lock(True);' 'r2t:from AthenaConfiguration.AllConfigFlags import ConfigFlags; ConfigFlags.Trigger.triggerMenuSetup="Dev_HI_run3_v1"; ConfigFlags.Trigger.AODEDMSet = "AODFULL"; ConfigFlags.Trigger.HLTSeeding.forceEnableAllChains=True;' \ --autoConfiguration 'everything' \ diff --git a/Reconstruction/RecJobTransforms/python/RecoConfigFlags.py b/Reconstruction/RecJobTransforms/python/RecoConfigFlags.py index 26e86718af10591627c5fa7bd0f5f6aee561fcc3..5a8f212631f7e2db76f3279dbf497ed538fd2df9 100644 --- a/Reconstruction/RecJobTransforms/python/RecoConfigFlags.py +++ b/Reconstruction/RecJobTransforms/python/RecoConfigFlags.py @@ -110,7 +110,8 @@ def createRecoConfigFlags(): # Enable alg for decorating EventInfo with BeamSpot info # (maybe not always available for calibration runs, etc) - flags.addFlag("Reco.EnableBeamSpotDecoration", True) + flags.addFlag("Reco.EnableBeamSpotDecoration", + lambda prevFlags: not prevFlags.Common.isOnline) # Enable common thinning and other post-processing flags.addFlag("Reco.EnablePostProcessing", True) diff --git a/Reconstruction/RecJobTransforms/python/RecoSteering.py b/Reconstruction/RecJobTransforms/python/RecoSteering.py index d2f224ca9bb04f57fc7a904c645f438145e9518a..785a1dcdc0dc0b060ef830aba9a4b7ce48af7332 100644 --- a/Reconstruction/RecJobTransforms/python/RecoSteering.py +++ b/Reconstruction/RecJobTransforms/python/RecoSteering.py @@ -226,18 +226,27 @@ def RecoSteering(flags): # setup output acc.flagPerfmonDomain('IO') + from xAODMetaDataCnv.InfileMetaDataConfig import InfileMetaDataCfg if flags.Output.doWriteESD: # Needed for Trk::Tracks TPCnv from TrkEventCnvTools.TrkEventCnvToolsConfigCA import ( TrkEventCnvSuperToolCfg) acc.merge(TrkEventCnvSuperToolCfg(flags)) + # Needed for MetaData + acc.merge(InfileMetaDataCfg(flags, "ESD")) log.info("ESD ItemList: %s", acc.getEventAlgo( "OutputStreamESD").ItemList) + log.info("ESD MetadataItemList: %s", acc.getEventAlgo( + "OutputStreamESD").MetadataItemList) log.info("---------- Configured ESD writing") if flags.Output.doWriteAOD: + # Needed for MetaData + acc.merge(InfileMetaDataCfg(flags, "AOD")) log.info("AOD ItemList: %s", acc.getEventAlgo( "OutputStreamAOD").ItemList) + log.info("AOD MetadataItemList: %s", acc.getEventAlgo( + "OutputStreamAOD").MetadataItemList) log.info("---------- Configured AOD writing") # Set up PerfMon diff --git a/Reconstruction/egamma/EgammaPhysValMonitoring/python/EgammaPhysValMonitoringConfig.py b/Reconstruction/egamma/EgammaPhysValMonitoring/python/EgammaPhysValMonitoringConfig.py index fd496329e1c299613c67c0519823ee50a14a9e11..34af3f3a8dc58b8ae159665c44862fe3973ddfe8 100644 --- a/Reconstruction/egamma/EgammaPhysValMonitoring/python/EgammaPhysValMonitoringConfig.py +++ b/Reconstruction/egamma/EgammaPhysValMonitoring/python/EgammaPhysValMonitoringConfig.py @@ -27,32 +27,51 @@ def EgammaPhysValMonitoringToolCfg(flags, **kwargs): if flags.Tracking.doLargeD0: kwargs.setdefault("LRTElectronContainerName", "LRTElectrons") + + from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig import AsgElectronLikelihoodToolCfg + from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping import electronLHmenu + from ROOT import LikeEnum + + lhMenu = electronLHmenu.offlineMC21 + # VeryLooseNoPix - ElectronLHSelectorVeryLooseNoPix = CompFactory.AsgElectronLikelihoodTool( - "ElectronLHSelectorVeryLooseNoPix", - ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodVeryLooseTriggerConfig_NoPix.conf", - primaryVertexContainer = "PrimaryVertices") + ElectronLHSelectorVeryLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg( + flags, + name="ElectronLHSelectorVeryLooseNoPix", + quality=LikeEnum.VeryLooseLLP, + menu=lhMenu) + ) + ElectronLHSelectorVeryLooseNoPix.primaryVertexContainer = "PrimaryVertices" kwargs.setdefault("ElectronLHSelectorVeryLooseNoPix", ElectronLHSelectorVeryLooseNoPix) - + # LooseNoPix - ElectronLHSelectorLooseNoPix = CompFactory.AsgElectronLikelihoodTool( - "ElectronLHSelectorLooseNoPix", - ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodLooseTriggerConfig_NoPix.conf", - primaryVertexContainer = "PrimaryVertices") + ElectronLHSelectorLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg( + flags, + name="ElectronLHSelectorLooseNoPix", + quality=LikeEnum.LooseLLP, + menu=lhMenu) + ) + ElectronLHSelectorLooseNoPix.primaryVertexContainer = "PrimaryVertices" kwargs.setdefault("ElectronLHSelectorLooseNoPix", ElectronLHSelectorLooseNoPix) # MediumNoPix - ElectronLHSelectorMediumNoPix = CompFactory.AsgElectronLikelihoodTool( - "ElectronLHSelectorMediumNoPix", - ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodMediumTriggerConfig_NoPix.conf", - primaryVertexContainer = "PrimaryVertices") + ElectronLHSelectorMediumNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg( + flags, + name="ElectronLHSelectorMediumNoPix", + quality=LikeEnum.MediumLLP, + menu=lhMenu) + ) + ElectronLHSelectorMediumNoPix.primaryVertexContainer = "PrimaryVertices" kwargs.setdefault("ElectronLHSelectorMediumNoPix", ElectronLHSelectorMediumNoPix) # TightNoPix - ElectronLHSelectorTightNoPix = CompFactory.AsgElectronLikelihoodTool( - "ElectronLHSelectorTightNoPix", - ConfigFile = "ElectronPhotonSelectorTools/trigger/rel22_20210611/ElectronLikelihoodTightTriggerConfig_NoPix.conf", - primaryVertexContainer = "PrimaryVertices") + ElectronLHSelectorTightNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg( + flags, + name="ElectronLHSelectorTightNoPix", + quality=LikeEnum.TightLLP, + menu=lhMenu) + ) + ElectronLHSelectorTightNoPix.primaryVertexContainer = "PrimaryVertices" kwargs.setdefault("ElectronLHSelectorTightNoPix", ElectronLHSelectorTightNoPix) acc.setPrivateTools( diff --git a/Simulation/Digitization/python/DigitizationSteering.py b/Simulation/Digitization/python/DigitizationSteering.py index 4d827dcf00dff23836f60af194f76b9b0ca1d4eb..d44847688cc5e42b8d9509cab6acf60ad92ef57f 100644 --- a/Simulation/Digitization/python/DigitizationSteering.py +++ b/Simulation/Digitization/python/DigitizationSteering.py @@ -189,6 +189,10 @@ def DigitizationMainContentCfg(flags): from PerfMonComps.PerfMonCompsConfig import PerfMonMTSvcCfg acc.merge(PerfMonMTSvcCfg(flags)) + # Add in-file MetaData + from xAODMetaDataCnv.InfileMetaDataConfig import InfileMetaDataCfg + acc.merge(InfileMetaDataCfg(flags, "RDO")) + return acc diff --git a/Simulation/FastSimulation/FastChainPileup/test/test_MC20a_ATLFAST3F_G4MS_MCOverlay_ttbar_CAvsCG.sh b/Simulation/FastSimulation/FastChainPileup/test/test_MC20a_ATLFAST3F_G4MS_MCOverlay_ttbar_CAvsCG.sh index f70afcf6eb0fc1661085537fe1f0db63a42d417a..cfc6cd2ccca4bbb9720a9758e653af2defc54625 100755 --- a/Simulation/FastSimulation/FastChainPileup/test/test_MC20a_ATLFAST3F_G4MS_MCOverlay_ttbar_CAvsCG.sh +++ b/Simulation/FastSimulation/FastChainPileup/test/test_MC20a_ATLFAST3F_G4MS_MCOverlay_ttbar_CAvsCG.sh @@ -5,7 +5,10 @@ # art-include: master/Athena # art-include: 23.0/Athena # art-output: run_* +# art-output: log.* +# art-output: *.pkl # art-output: *.txt +# art-output: *DO.pool.root # art-output: pkldiff.log # art-architecture: '#x86_64-intel' @@ -43,9 +46,17 @@ FastChain_tf.py \ ca=$? echo "art-result: $ca EVNTtoRDO_CA" status=$ca +# Copy outputs back to main directory +cp log.EVNTtoRDO ../log.EVNTtoRDO_CA +cp ${RDO_File} ../CA.${RDO_File} +capkl=-9999 +if [ -f "ConfigCA.pkl" ]; then + capkl=0 + cp ConfigCA.pkl ../ConfigCA.pkl +fi cd ../ -mkdir ./run_cg_pkl; cd run_cg_pkl +mkdir -p ./run_cg_pkl; cd run_cg_pkl FastChain_tf.py \ --simulator ATLFAST3F_G4MS \ --steering doFCwOverlay \ @@ -72,6 +83,7 @@ FastChain_tf.py \ cgpkl=-9999 if [ -f "ConfigCG.pkl" ]; then cgpkl=0 + cp ConfigCG.pkl ../ConfigCG.pkl fi echo "art-result: $cgpkl EVNTtoRDO_CG_PKL" cd ../ @@ -102,6 +114,8 @@ FastChain_tf.py \ cg=$? echo "art-result: $cg EVNTtoRDO_CG" +cp log.EVNTtoRDOwOverlay ../log.EVNTtoRDO_CG +cp ${RDO_File} ../${RDO_File} if [ $status -eq 0 ] then status=$cg @@ -109,7 +123,7 @@ fi cd ../ pkldiff=-9999 -if [ $cgpkl -eq 0 ] && [ $ca -eq 0 ] +if [ $cgpkl -eq 0 ] && [ $capkl -eq 0 ] then confTool.py --diff --ignoreIrrelevant --shortenDefaultComponents --ignoreDefaults run_cg_pkl/ConfigCG.pkl run_ca/ConfigCA.pkl > pkldiff.log pkldiff=$(grep -o 'differ' pkldiff.log | wc -l) @@ -128,7 +142,7 @@ echo "art-result: $diff OLDvsCA" reg=-9999 if [ $cg -eq 0 ] then - art.py compare --file run_cg/${RDO_File} --mode=semi-detailed --entries 10 + art.py compare --file ${RDO_File} --mode=semi-detailed --entries 10 reg=$? status=$reg fi diff --git a/Simulation/FastSimulation/FastChainPileup/test/test_MC20a_ATLFAST3F_G4MS_pileup_ttbar_CAvsCG.sh b/Simulation/FastSimulation/FastChainPileup/test/test_MC20a_ATLFAST3F_G4MS_pileup_ttbar_CAvsCG.sh index 2ac567d1c708aa93f06a0cff1c5c733557a9e9fe..aaef737d1d3296b1be98b9d8c26ef3aa9e252730 100755 --- a/Simulation/FastSimulation/FastChainPileup/test/test_MC20a_ATLFAST3F_G4MS_pileup_ttbar_CAvsCG.sh +++ b/Simulation/FastSimulation/FastChainPileup/test/test_MC20a_ATLFAST3F_G4MS_pileup_ttbar_CAvsCG.sh @@ -5,7 +5,10 @@ # art-include: master/Athena # art-include: 23.0/Athena # art-output: run_* +# art-output: log.* +# art-output: *.pkl # art-output: *.txt +# art-output: *DO.pool.root # art-output: pkldiff.log # art-architecture: '#x86_64-intel' @@ -43,12 +46,19 @@ FastChain_tf.py \ --imf False ca=$? -echo "art-result: $rc EVNTtoRDO_CA" +echo "art-result: $ca EVNTtoRDO_CA" status=$ca +cp log.EVNTtoRDO ../log.EVNTtoRDO_CA +cp ${RDO_File} ../CA.${RDO_File} +capkl=-9999 +if [ -f "ConfigCA.pkl" ]; then + capkl=0 + cp ConfigCA.pkl ../ConfigCA.pkl +fi cd ../ -mkdir ./run_cg_pkl; cd run_cg_pkl +mkdir -p ./run_cg_pkl; cd run_cg_pkl FastChain_tf.py \ --simulator 'ATLFAST3F_G4MS' \ --physicsList 'FTFP_BERT_ATL' \ @@ -76,6 +86,7 @@ FastChain_tf.py \ cgpkl=-9999 if [ -f "ConfigCG.pkl" ]; then cgpkl=0 + cp ConfigCG.pkl ../ConfigCG.pkl fi echo "art-result: $cgpkl EVNTtoRDO_CG_PKL" cd ../ @@ -105,6 +116,8 @@ FastChain_tf.py \ --imf False cg=$? +cp log.EVNTtoRDO ../log.EVNTtoRDO_CG +cp ${RDO_File} ../${RDO_File} echo "art-result: $cg EVNTtoRDO_CG" if [ $status -eq 0 ] then @@ -113,7 +126,7 @@ fi cd ../ pkldiff=-9999 -if [ $cgpkl -eq 0 ] && [ $ca -eq 0 ] +if [ $cgpkl -eq 0 ] && [ $capkl -eq 0 ] then confTool.py --diff --ignoreIrrelevant --shortenDefaultComponents --ignoreDefaults "run_cg_pkl/ConfigCG.pkl" "run_ca/ConfigCA.pkl" > pkldiff.log pkldiff=$(grep -o 'differ' pkldiff.log | wc -l) @@ -132,7 +145,7 @@ echo "art-result: $diff OLDvsCA" reg=-9999 if [ $cg -eq 0 ] then - art.py compare --file run_cg/${RDO_File} --mode=semi-detailed --entries 10 + art.py compare --file ${RDO_File} --mode=semi-detailed --entries 10 reg=$? status=$reg fi diff --git a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_MCOverlay_ttbar_CAvsCG.sh b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_MCOverlay_ttbar_CAvsCG.sh index c39da1c0f4e775e85d9a33eec5e2cf03a7a140d1..60b1e63b02d8c2802c4e5514025399ce1111b24f 100755 --- a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_MCOverlay_ttbar_CAvsCG.sh +++ b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_MCOverlay_ttbar_CAvsCG.sh @@ -5,7 +5,10 @@ # art-include: master/Athena # art-include: 23.0/Athena # art-output: run_* +# art-output: log.* +# art-output: *.pkl # art-output: *.txt +# art-output: *DO.pool.root # art-output: pkldiff.log # art-architecture: '#x86_64-intel' @@ -42,9 +45,16 @@ FastChain_tf.py \ ca=$? echo "art-result: $ca EVNTtoRDO_CA" status=$ca +cp log.EVNTtoRDO ../log.EVNTtoRDO_CA +cp ${RDO_File} ../CA.${RDO_File} +capkl=-9999 +if [ -f "ConfigCA.pkl" ]; then + capkl=0 + cp ConfigCA.pkl ../ConfigCA.pkl +fi cd ../ -mkdir ./run_cg_pkl; cd run_cg_pkl +mkdir --p ./run_cg_pkl; cd run_cg_pkl FastChain_tf.py \ --runNumber 601229 \ --simulator ATLFAST3F_G4MS \ @@ -72,6 +82,7 @@ FastChain_tf.py \ cgpkl=-9999 if [ -f "ConfigCG.pkl" ]; then cgpkl=0 + cp ConfigCG.pkl ../ConfigCG.pkl fi echo "art-result: $cgpkl EVNTtoRDO_CG_PKL" cd ../ @@ -102,6 +113,8 @@ FastChain_tf.py \ --ignoreErrors True cg=$? +cp log.EVNTtoRDOwOverlay ../log.EVNTtoRDO_CG +cp ${RDO_File} ../${RDO_File} echo "art-result: $cg EVNTtoRDO_CG" if [ $status -eq 0 ] then @@ -110,7 +123,7 @@ fi cd ../ pkldiff=-9999 -if [ $cgpkl -eq 0 ] && [ $ca -eq 0 ] +if [ $cgpkl -eq 0 ] && [ $capkl -eq 0 ] then confTool.py --diff --ignoreIrrelevant --shortenDefaultComponents --ignoreDefaults run_cg_pkl/ConfigCG.pkl run_ca/ConfigCA.pkl > pkldiff.log pkldiff=$(grep -o 'differ' pkldiff.log | wc -l) @@ -129,7 +142,7 @@ echo "art-result: $diff OLDvsCA" reg=-9999 if [ $cg -eq 0 ] then - art.py compare --file run_cg/${RDO_File} --mode=semi-detailed --entries 10 + art.py compare --file ${RDO_File} --mode=semi-detailed --entries 10 reg=$? status=$reg fi diff --git a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_TrackOverlay_ttbar_CA.sh b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_TrackOverlay_ttbar_CA.sh index e804b3b5ca19f3eae975fd5313c440ab380c3a57..6f5311610ddaedafe1a7cf559b7f4665595c7365 100755 --- a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_TrackOverlay_ttbar_CA.sh +++ b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_TrackOverlay_ttbar_CA.sh @@ -5,7 +5,10 @@ # art-include: master/Athena # art-include: 23.0/Athena # art-output: run_* +# art-output: log.* +# art-output: *.pkl # art-output: *.txt +# art-output: RDO.pool.root # art-architecture: '#x86_64-intel' events=50 @@ -40,13 +43,18 @@ FastChain_tf.py \ --imf False ca=$? echo "art-result: $ca EVNTtoRDO_CA" +cp log.* ../ +cp ${RDO_File} ../${RDO_File} +if [ -f "ConfigCA.pkl" ]; then + cp ConfigCA.pkl ../ConfigCA.pkl +fi status=$ca cd ../ reg=-9999 if [ $ca -eq 0 ] then - art.py compare --file run_ca/${RDO_File} --mode=semi-detailed --entries 10 + art.py compare --file ${RDO_File} --mode=semi-detailed --entries 10 reg=$? status=$reg fi diff --git a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_pileup_ttbar_CAvsCG.sh b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_pileup_ttbar_CAvsCG.sh index 6c4c9ae2e79e78ee9ae0e351b4dbfb32b2088d00..23e951357d05481691b875dc56a8716a4fdbc97c 100755 --- a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_pileup_ttbar_CAvsCG.sh +++ b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3F_G4MS_pileup_ttbar_CAvsCG.sh @@ -5,7 +5,10 @@ # art-include: master/Athena # art-include: 23.0/Athena # art-output: run_* +# art-output: log.* +# art-output: *.pkl # art-output: *.txt +# art-output: *DO.pool.root # art-output: pkldiff.log # art-architecture: '#x86_64-intel' @@ -44,12 +47,19 @@ FastChain_tf.py \ --imf False ca=$? -echo "art-result: $rc EVNTtoRDO_CA" +echo "art-result: $ca EVNTtoRDO_CA" status=$ca +cp log.EVNTtoRDO ../log.EVNTtoRDO_CA +cp ${RDO_File} ../CA.${RDO_File} +capkl=-9999 +if [ -f "ConfigCA.pkl" ]; then + capkl=0 + cp ConfigCA.pkl ../ConfigCA.pkl +fi cd ../ -mkdir ./run_cg_pkl; cd run_cg_pkl +mkdir -p ./run_cg_pkl; cd run_cg_pkl FastChain_tf.py \ --runNumber 601229 \ --simulator 'ATLFAST3F_G4MS' \ @@ -79,6 +89,7 @@ FastChain_tf.py \ cgpkl=-9999 if [ -f "ConfigCG.pkl" ]; then cgpkl=0 + cp ConfigCG.pkl ../ConfigCG.pkl fi echo "art-result: $cgpkl EVNTtoRDO_CG_PKL" cd ../ @@ -103,12 +114,14 @@ FastChain_tf.py \ --digiSeedOffset2 '727' \ --geometryVersion default:ATLAS-R3S-2021-03-00-00 \ --conditionsTag default:OFLCOND-MC21-SDR-RUN3-07 \ - --preInclude 'all:Campaigns/MC21a.py,Campaigns/PileUpMC21a.py' \ + --preInclude 'all:Campaigns/MC21a.py,Campaigns/PileUpMC21a.py,Campaigns/MC21SimulationNoIoV.py' \ --postInclude='PyJobTransforms/UseFrontier.py' \ --postExec 'from AthenaCommon.ConfigurationShelve import saveToAscii;saveToAscii("LegacyConfig.txt")' \ --imf False cg=$? +cp log.EVNTtoRDO ../log.EVNTtoRDO_CG +cp ${RDO_File} ../${RDO_File} echo "art-result: $cg EVNTtoRDO_CG" if [ $status -eq 0 ] then @@ -117,7 +130,7 @@ fi cd ../ pkldiff=-9999 -if [ $cgpkl -eq 0 ] && [ $ca -eq 0 ] +if [ $cgpkl -eq 0 ] && [ $capkl -eq 0 ] then confTool.py --diff --ignoreIrrelevant --shortenDefaultComponents --ignoreDefaults "run_cg_pkl/ConfigCG.pkl" "run_ca/ConfigCA.pkl" > pkldiff.log pkldiff=$(grep -o 'differ' pkldiff.log | wc -l) @@ -136,7 +149,7 @@ echo "art-result: $diff OLDvsCA" reg=-9999 if [ $cg -eq 0 ] then - art.py compare --file run_cg/${RDO_File} --mode=semi-detailed --entries 10 + art.py compare --file ${RDO_File} --mode=semi-detailed --entries 10 reg=$? status=$reg fi diff --git a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3MT_MCOverlay_ttbar_CAvsCG.sh b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3MT_MCOverlay_ttbar_CAvsCG.sh index ac0e41597d8d4d644df11344deb541fa2d8107d8..5bef241075178d00b8a1ada202ecc0b84da52cc2 100755 --- a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3MT_MCOverlay_ttbar_CAvsCG.sh +++ b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_ATLFAST3MT_MCOverlay_ttbar_CAvsCG.sh @@ -5,7 +5,10 @@ # art-include: master/Athena # art-include: 23.0/Athena # art-output: run_* +# art-output: log.* +# art-output: *.pkl # art-output: *.txt +# art-output: *DO.pool.root # art-output: pkldiff.log # art-architecture: '#x86_64-intel' @@ -42,9 +45,16 @@ FastChain_tf.py \ ca=$? echo "art-result: $ca EVNTtoRDO_CA" status=$ca +cp log.EVNTtoRDO ../log.EVNTtoRDO_CA +cp ${RDO_File} ../CA.${RDO_File} +capkl=-9999 +if [ -f "ConfigCA.pkl" ]; then + capkl=0 + cp ConfigCA.pkl ../ConfigCA.pkl +fi cd ../ -mkdir ./run_cg_pkl; cd run_cg_pkl +mkdir -p ./run_cg_pkl; cd run_cg_pkl FastChain_tf.py \ --runNumber 601229 \ --simulator ATLFAST3MT \ @@ -72,6 +82,7 @@ FastChain_tf.py \ cgpkl=-9999 if [ -f "ConfigCG.pkl" ]; then cgpkl=0 + cp ConfigCG.pkl ../ConfigCG.pkl fi echo "art-result: $cgpkl EVNTtoRDO_CG_PKL" cd ../ @@ -101,6 +112,8 @@ FastChain_tf.py \ --ignoreErrors True cg=$? +cp log.EVNTtoRDOwOverlay ../log.EVNTtoRDO_CG +cp ${RDO_File} ../${RDO_File} echo "art-result: $cg EVNTtoRDO_CG" if [ $status -eq 0 ] then @@ -109,7 +122,7 @@ fi cd ../ pkldiff=-9999 -if [ $cgpkl -eq 0 ] && [ $ca -eq 0 ] +if [ $cgpkl -eq 0 ] && [ $capkl -eq 0 ] then confTool.py --diff --ignoreIrrelevant --shortenDefaultComponents --ignoreDefaults run_cg_pkl/ConfigCG.pkl run_ca/ConfigCA.pkl > pkldiff.log pkldiff=$(grep -o 'differ' pkldiff.log | wc -l) @@ -128,7 +141,7 @@ echo "art-result: $diff OLDvsCA" reg=-9999 if [ $cg -eq 0 ] then - art.py compare --file run_cg/${RDO_File} --mode=semi-detailed --entries 10 + art.py compare --file ${RDO_File} --mode=semi-detailed --entries 10 reg=$? status=$reg fi diff --git a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_TrackOverlay_ttbar_CA.sh b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_TrackOverlay_ttbar_CA.sh index 8a20d566971323ab858358faa60d8e90d90967ef..1b19bcff2644c1823343212959756e94a1f58121 100755 --- a/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_TrackOverlay_ttbar_CA.sh +++ b/Simulation/FastSimulation/FastChainPileup/test/test_MC21a_TrackOverlay_ttbar_CA.sh @@ -5,7 +5,10 @@ # art-include: master/Athena # art-include: 23.0/Athena # art-output: run_* +# art-output: log.* +# art-output: *.pkl # art-output: *.txt +# art-output: RDO.pool.root # art-architecture: '#x86_64-intel' events=50 @@ -34,13 +37,20 @@ Overlay_tf.py \ --imf False ca=$? echo "art-result: $ca HITStoRDO_CA" +# Copy outputs back to main directory +cp ${RDO_File} ../${RDO_File} +cp log.* ../ +cp *.txt ../ status=$ca +if [ -f "ConfigCA.pkl" ]; then + cp ConfigCA.pkl ../ConfigCA.pkl +fi cd ../ reg=-9999 if [ $ca -eq 0 ] then - art.py compare --file run_ca/${RDO_File} --mode=semi-detailed --entries 10 + art.py compare --file ${RDO_File} --mode=semi-detailed --entries 10 reg=$? status=$reg fi diff --git a/Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.cxx b/Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.cxx index 33586accb5396ae5e2fa45f2629fe1a477c8e3e2..0b557438a57ae9c9d020b506d8c80350c0178830 100644 --- a/Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.cxx +++ b/Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.cxx @@ -6,6 +6,7 @@ #include "VoxelDensityTool.h" // Geant4 includes +#include "G4Version.hh" #include "G4LogicalVolumeStore.hh" //============================================================================= @@ -50,7 +51,11 @@ StatusCode VoxelDensityTool::postGeometryConfigure() const //Now for any volumes set via job property std::pair<volume name, value>... for (auto& volToSet:m_volumeVoxelDensityLevel) { +#if G4VERSION_NUMBER < 1100 if (ilv->GetName().contains(volToSet.first)) { +#else + if (G4StrUtil::contains(ilv->GetName(), std::string_view(volToSet.first))) { +#endif ilv->SetSmartless(volToSet.second); ATH_MSG_INFO("Set VoxelDensity for "<<ilv->GetName()<<" to "<<volToSet.second); } diff --git a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisation.cxx b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisation.cxx index 114790b37134c6c6d273cd56515797e3b81da797..52e84d813bb5c011a609260aef3bc2db892fa078 100644 --- a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisation.cxx +++ b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisation.cxx @@ -50,7 +50,12 @@ // package headers #include "G4mplAtlasIonisationWithDeltaModel.hh" // Geant4 headers +#include "G4Version.hh" + +#if G4VERSION_NUMBER < 1100 #include "G4BohrFluctuations.hh" +#endif + #include "G4Electron.hh" #include "G4EmProcessSubType.hh" #include "G4Version.hh" diff --git a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisation.hh b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisation.hh index 6fa3170556f2059928a2a2fdc7dc1141cd3b21f8..741edaeac28ce877f5a3e61f868ed7f5a3313c88 100644 --- a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisation.hh +++ b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisation.hh @@ -55,6 +55,7 @@ #ifndef MONOPOLE_G4mplAtlasIonisation_h #define MONOPOLE_G4mplAtlasIonisation_h 1 +#include "G4Version.hh" #include "G4VEnergyLossProcess.hh" #include "globals.hh" #include "G4VEmModel.hh" @@ -104,12 +105,15 @@ private: inline G4bool G4mplAtlasIonisation::IsApplicable(const G4ParticleDefinition& p) { G4String lowPartName = p.GetParticleName(); +#if G4VERSION_NUMBER < 1100 lowPartName.toLower(); - // G4String lowPartName = (p.GetParticleName()).toLower(); - - // return ((p.GetParticleName() == "monopole") || (p.GetParticleName() == "monopolebar")); return ( (lowPartName.contains("monopole")) || (lowPartName.contains("dyon")) ); +#else + G4StrUtil::to_lower(lowPartName); + return ( (G4StrUtil::contains(lowPartName, "monopole")) || + (G4StrUtil::contains(lowPartName, "dyon")) ); +#endif } diff --git a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationModel.cxx b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationModel.cxx index 68127ff6a8e9364ce686a7fa65dadf7e5503d1ee..c742e3f6e9482edc1cbc67a17d33a2ca78d52301 100644 --- a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationModel.cxx +++ b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationModel.cxx @@ -177,25 +177,26 @@ G4double G4mplAtlasIonisationModel::ComputeDEDXPerVolume(const G4Material* mater //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4double G4mplAtlasIonisationModel::SampleFluctuations( -#if G4VERSION_NUMBER > 1009 +#if G4VERSION_NUMBER < 1100 const G4MaterialCutsCouple* material, const G4DynamicParticle* dp, G4double tmax, G4double length, - G4double meanLoss + G4double meanLoss) #else - const G4Material* material, + const G4MaterialCutsCouple* material, const G4DynamicParticle* dp, - G4double& tmax, - G4double& length, - G4double& meanLoss + const G4double tcut, + const G4double tmax, + const G4double length, + const G4double meanLoss) + #endif - ) { -#if G4VERSION_NUMBER > 1009 +#if G4VERSION_NUMBER < 1100 G4double siga = Dispersion(material->GetMaterial(),dp,tmax,length); #else - G4double siga = Dispersion(material,dp,tmax,length); + G4double siga = Dispersion(material->GetMaterial(),dp,tcut,tmax,length); #endif G4double loss = meanLoss; siga = sqrt(siga); diff --git a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationModel.hh b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationModel.hh index 7f8f088a1f84eedf78cdf228fb0e9559f504a967..b3dd2c3c2c799403b99fc3e860d22afed10b7f10 100644 --- a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationModel.hh +++ b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationModel.hh @@ -50,6 +50,7 @@ #ifndef MONOPOLE_G4mplAtlasIonisationModel_h #define MONOPOLE_G4mplAtlasIonisationModel_h 1 +#include "G4Version.hh" #include "G4VEmModel.hh" #include "G4VEmFluctuationModel.hh" #include "G4Version.hh" @@ -80,6 +81,7 @@ public: G4double maxEnergy) override final; +#if G4VERSION_NUMBER < 1100 virtual G4double SampleFluctuations(const G4MaterialCutsCouple* material, const G4DynamicParticle* dp, G4double tmax, @@ -90,6 +92,20 @@ public: const G4DynamicParticle*, G4double tmax, G4double length) override final; +#else + virtual G4double SampleFluctuations(const G4MaterialCutsCouple* material, + const G4DynamicParticle* dp, + const G4double tcut, + const G4double tmax, + const G4double length, + const G4double meanLoss) override final; + + virtual G4double Dispersion( const G4Material*, + const G4DynamicParticle*, + const G4double tcut, + const G4double tmax, + const G4double length) override final; +#endif // hide assignment operator and copy constructor G4mplAtlasIonisationModel & operator=(const G4mplAtlasIonisationModel &right) = delete; @@ -126,10 +142,18 @@ inline void G4mplAtlasIonisationModel::SampleSecondaries( {;} inline G4double G4mplAtlasIonisationModel::Dispersion( +#if G4VERSION_NUMBER < 1100 const G4Material* material, const G4DynamicParticle* dp, G4double tmax, G4double length) +#else + const G4Material* material, + const G4DynamicParticle* dp, + const G4double /*tcut*/, + const G4double tmax, + const G4double length) +#endif { G4double siga = 0.0; G4double tau = dp->GetKineticEnergy()/mass; diff --git a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationWithDeltaModel.cxx b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationWithDeltaModel.cxx index 93accaeedfacbb0d751a492d11000ff21ede7fd9..d7e727f3f3f3046ec123eec2ae97dad787121087 100644 --- a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationWithDeltaModel.cxx +++ b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationWithDeltaModel.cxx @@ -290,25 +290,26 @@ G4mplAtlasIonisationWithDeltaModel::SampleSecondaries(std::vector<G4DynamicParti //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4double G4mplAtlasIonisationWithDeltaModel::SampleFluctuations( -#if G4VERSION_NUMBER > 1009 +#if G4VERSION_NUMBER < 1100 const G4MaterialCutsCouple* material, const G4DynamicParticle* dp, G4double tmax, G4double length, G4double meanLoss #else - const G4Material* material, + const G4MaterialCutsCouple* material, const G4DynamicParticle* dp, - G4double& tmax, - G4double& length, - G4double& meanLoss + const G4double tcut, + const G4double tmax, + const G4double length, + const G4double meanLoss #endif ) { -#if G4VERSION_NUMBER > 1009 +#if G4VERSION_NUMBER < 1100 G4double siga = Dispersion(material->GetMaterial(),dp,tmax,length); #else - G4double siga = Dispersion(material,dp,tmax,length); + G4double siga = Dispersion(material->GetMaterial(),dp,tcut,tmax,length); #endif G4double loss = meanLoss; siga = std::sqrt(siga); @@ -333,12 +334,13 @@ G4double G4mplAtlasIonisationWithDeltaModel::SampleFluctuations( G4double G4mplAtlasIonisationWithDeltaModel::Dispersion(const G4Material* material, const G4DynamicParticle* dp, -#if G4VERSION_NUMBER > 1009 +#if G4VERSION_NUMBER < 1100 G4double tmax, G4double length #else - G4double& tmax, - G4double& length + const G4double /*tcut*/, + const G4double tmax, + const G4double length #endif ) { diff --git a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationWithDeltaModel.hh b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationWithDeltaModel.hh index 24e8906e4a36c69d607ce787433aaf20a0bd7b5d..eb0727c561f25c0e6ea761b54388c1beb7a4c5df 100644 --- a/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationWithDeltaModel.hh +++ b/Simulation/G4Extensions/Monopole/src/G4mplAtlasIonisationWithDeltaModel.hh @@ -92,7 +92,7 @@ public: G4double maxEnergy); -#if G4VERSION_NUMBER > 1009 +#if G4VERSION_NUMBER < 1100 virtual G4double SampleFluctuations(const G4MaterialCutsCouple* material, const G4DynamicParticle* dp, G4double tmax, @@ -104,16 +104,18 @@ public: G4double tmax, G4double length); #else - virtual G4double SampleFluctuations(const G4Material*, - const G4DynamicParticle*, - G4double& tmax, - G4double& length, - G4double& meanLoss); + virtual G4double SampleFluctuations(const G4MaterialCutsCouple* material, + const G4DynamicParticle* dp, + const G4double tcut, + const G4double tmax, + const G4double length, + const G4double meanLoss); virtual G4double Dispersion(const G4Material*, const G4DynamicParticle*, - G4double& tmax, - G4double& length); + const G4double tcut, + const G4double tmax, + const G4double length); #endif protected: diff --git a/Simulation/G4Extensions/Quirks/src/DebugSteppingAction.h b/Simulation/G4Extensions/Quirks/src/DebugSteppingAction.h index bf76e6950f97e6d53e3981fca758d88e383db0f6..bb2ea81d26e0b5f43688d1f02fcb4869732d57d1 100644 --- a/Simulation/G4Extensions/Quirks/src/DebugSteppingAction.h +++ b/Simulation/G4Extensions/Quirks/src/DebugSteppingAction.h @@ -5,6 +5,7 @@ #ifndef DEBUGSTEPPINGACTION_H #define DEBUGSTEPPINGACTION_H +#include "G4Types.hh" #include "G4LorentzVector.hh" #include "G4UserSteppingAction.hh" diff --git a/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.cxx b/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.cxx index b0fc271919f67a3d578d5ce2f874194876933ff9..3e5d4b41e83de3dbecaf4986cd957c90d6aab379 100644 --- a/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.cxx +++ b/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.cxx @@ -3,11 +3,18 @@ */ #include "FullModelHadronicProcess.hh" +#include "G4Version.hh" #include "G4ProcessManager.hh" #include "G4ProcessHelper.hh" #include "G4ParticleTable.hh" #include "FullModelReactionDynamics.hh" + +#if G4VERSION_NUMBER < 1100 #include "G4HadReentrentException.hh" +#else +#include "G4HadronicException.hh" +#endif + #include "CustomPDGParser.h" #include "CustomParticle.h" @@ -554,11 +561,19 @@ void FullModelHadronicProcess::CalculateMomenta( targetHasChanged, leadFlag, leadingStrangeParticle ); } +#if G4VERSION_NUMBER < 1100 catch(G4HadReentrentException& aC) { aC.Report(G4cout); throw G4HadReentrentException(__FILE__, __LINE__, "Failing to calculate momenta"); } +#else + catch(G4HadronicException& aC) + { + aC.Report(G4cout); + throw G4HadronicException(__FILE__, __LINE__, "Failing to calculate momenta"); + } +#endif } if( finishedTwoClu ) { diff --git a/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.hh b/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.hh index ae034ff6949ca2788787714ac61fa636373181e6..a24dbe90a50be3bcdbad8d9d5e3a10ee8ebb6800 100644 --- a/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.hh +++ b/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.hh @@ -6,6 +6,7 @@ #define FullModelHadronicProcess_h #include "globals.hh" +#include "G4FastVector.hh" #include "G4VDiscreteProcess.hh" #include "G4EnergyRangeManager.hh" #include "G4Nucleus.hh" diff --git a/Simulation/G4Extensions/RHadrons/src/FullModelReactionDynamics.cxx b/Simulation/G4Extensions/RHadrons/src/FullModelReactionDynamics.cxx index 61902ddbc583bbbe372c62a37346fca90910d8a4..8acf3cb601fc50f0cc8ac160679b8446bae9a07b 100644 --- a/Simulation/G4Extensions/RHadrons/src/FullModelReactionDynamics.cxx +++ b/Simulation/G4Extensions/RHadrons/src/FullModelReactionDynamics.cxx @@ -49,11 +49,16 @@ // J. Allison, 17-Jun-99: Replaced a min function to get correct behaviour on DEC. #include "FullModelReactionDynamics.hh" +#include "G4Version.hh" #include "G4AntiProton.hh" #include "G4AntiNeutron.hh" #include "Randomize.hh" #include <iostream> +#if G4VERSION_NUMBER < 1100 #include "G4HadReentrentException.hh" +#else +#include "G4HadronicException.hh" +#endif #include <signal.h> //#include "G4ParticleTable.hh" @@ -460,7 +465,11 @@ G4bool FullModelReactionDynamics::GenerateXandPt( { for(G4int i=0; i<vecLen; i++) delete vec[i]; vecLen = 0; +#if G4VERSION_NUMBER < 1100 throw G4HadReentrentException(__FILE__, __LINE__, +#else + throw G4HadronicException(__FILE__, __LINE__, +#endif "FullModelReactionDynamics::GenerateXandPt : a pion has been counted as a backward nucleon"); } vec[i]->SetSide( -3 ); @@ -1504,7 +1513,11 @@ G4bool FullModelReactionDynamics::TwoCluster( { for(G4int i=0; i<vecLen; i++) delete vec[i]; vecLen = 0; +#if G4VERSION_NUMBER < 1100 throw G4HadReentrentException(__FILE__, __LINE__, +#else + throw G4HadronicException(__FILE__, __LINE__, +#endif "FullModelReactionDynamics::TwoCluster: Negative number of particles"); } delete vec[vecLen-1]; diff --git a/Simulation/G4Utilities/G4DebuggingTools/src/helper/G4DebuggingHelper.cxx b/Simulation/G4Utilities/G4DebuggingTools/src/helper/G4DebuggingHelper.cxx index fbdf6a98d150487acecf106028644c22d288b998..69e2e1966f68cad26255ed31fb522dff19021834 100644 --- a/Simulation/G4Utilities/G4DebuggingTools/src/helper/G4DebuggingHelper.cxx +++ b/Simulation/G4Utilities/G4DebuggingTools/src/helper/G4DebuggingHelper.cxx @@ -12,6 +12,7 @@ #include "G4PionPlus.hh" #include "G4PionMinus.hh" #include "G4PionZero.hh" +#include "G4Version.hh" namespace G4DebuggingHelpers { @@ -97,8 +98,13 @@ namespace G4DebuggingHelpers { || ( nom.length() >= 4 && nom.substr(0, 4) == "Muon" ) || ( nom.length() >= 9 && nom.substr(0, 9) == "DriftTube" ) || ( nom.length() >= 12 && nom.substr(0, 12) == "SensitiveGas" ) +#if G4VERSION_NUMBER < 1100 || nom.contains("MDT") || nom.contains("station") ) { +#else + || G4StrUtil::contains(nom, "MDT") + || G4StrUtil::contains(nom, "station") ) { +#endif return "Muon"; } else if ( nom.length() >= 8 && nom.substr(0, 8) == "ITkPixel" ) { diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/MuBias/G4EmStandardPhysics_MuBias.cc b/Simulation/G4Utilities/G4PhysicsLists/src/MuBias/G4EmStandardPhysics_MuBias.cc index 5f3fd919d8efc8d520d449be4217ea339f7f93b1..25dded9ec1c9806097c57c02e3724d65eaa930a7 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/MuBias/G4EmStandardPhysics_MuBias.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/MuBias/G4EmStandardPhysics_MuBias.cc @@ -93,7 +93,6 @@ using G4UrbanMscModel=G4UrbanMscModel96; #include "G4hIonisation.hh" #include "G4ionIonisation.hh" -#include "G4alphaIonisation.hh" #include "G4Gamma.hh" #include "G4Electron.hh" diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/MuBias/HadronPhysicsQGSP_BERT_MuBias.cc b/Simulation/G4Utilities/G4PhysicsLists/src/MuBias/HadronPhysicsQGSP_BERT_MuBias.cc index 5d7abe40f0440ce39ba7b1049c37c2d3dc1a8d17..c375ee615cfde1d8c971d9321456db4ae7809499 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/MuBias/HadronPhysicsQGSP_BERT_MuBias.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/MuBias/HadronPhysicsQGSP_BERT_MuBias.cc @@ -46,6 +46,7 @@ #include "HadronPhysicsQGSP_BERT_MuBias.hh" +#include "G4Version.hh" #include "globals.hh" #include "G4ios.hh" #include "G4SystemOfUnits.hh" @@ -57,7 +58,11 @@ #include "G4ShortLivedConstructor.hh" #include "G4IonConstructor.hh" +#if G4VERSION_NUMBER < 1100 #include "G4HadronCaptureProcess.hh" +#else +#include "G4NeutronCaptureProcess.hh" +#endif #include "G4NeutronRadCapture.hh" #include "G4NeutronInelasticXS.hh" #include "G4NeutronCaptureXS.hh" @@ -236,7 +241,11 @@ void G4HadronPhysicsQGSP_BERT_MuBias::ConstructProcess() } } if ( ! capture ) { +#if G4VERSION_NUMBER < 1100 capture = new G4HadronCaptureProcess("nCapture"); +#else + capture = new G4NeutronCaptureProcess("nCapture"); +#endif pmanager->AddDiscreteProcess(capture); } s_tpdata->xsNeutronCaptureXS = new G4NeutronCaptureXS(); diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERP_ATL.cc b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERP_ATL.cc index 9fb198a1628da5de43d51086fe9255252af7f9fd..d0fdcae9d47111a34a34189fec038a3d03f376f3 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERP_ATL.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERP_ATL.cc @@ -54,15 +54,18 @@ #include "G4ChipsKaonZeroInelasticXS.hh" #include "G4CrossSectionDataSetRegistry.hh" -#include "G4HadronCaptureProcess.hh" #include "G4NeutronRadCapture.hh" #include "G4NeutronInelasticXS.hh" #include "G4NeutronCaptureXS.hh" #include "G4ProcessManager.hh" #include "G4BGGNucleonInelasticXS.hh" +#if G4VERSION_NUMBER < 1100 #include "G4PiNuclearCrossSection.hh" #include "G4CrossSectionPairGG.hh" +#else +#include "G4BGGPionInelasticXS.hh" +#endif #include "G4ComponentAntiNuclNuclearXS.hh" #include "G4CrossSectionInelastic.hh" @@ -114,7 +117,8 @@ G4AtlasHadronPhysicsFTFP_BERP_ATL::G4AtlasHadronPhysicsFTFP_BERP_ATL(G4int) , theAntiTritonInelastic(0) , theAntiHe3Inelastic(0) , theAntiAlphaInelastic(0) - , thePiXS(0) + , thePiPlusXS(0) + , thePiMinusXS(0) , theChipsHyperonInelasticXS(0) , theAntiNucleonXS(0) , theChipsKaonMinusXS(0) @@ -165,7 +169,8 @@ G4AtlasHadronPhysicsFTFP_BERP_ATL::G4AtlasHadronPhysicsFTFP_BERP_ATL(const G4Str , theAntiTritonInelastic(0) , theAntiHe3Inelastic(0) , theAntiAlphaInelastic(0) - , thePiXS(0) + , thePiPlusXS(0) + , thePiMinusXS(0) , theChipsHyperonInelasticXS(0) , theAntiNucleonXS(0) , theChipsKaonMinusXS(0) @@ -230,7 +235,14 @@ void G4AtlasHadronPhysicsFTFP_BERP_ATL::CreateModels() theNeutronCaptureModel->SetMaxEnergy( 100.0*TeV ); // Cross sections - thePiXS = new G4CrossSectionPairGG( new G4PiNuclearCrossSection(), 91*GeV ); +#if G4VERSION_NUMBER < 1100 + thePiPlusXS = new G4CrossSectionPairGG( new G4PiNuclearCrossSection(), 91*GeV ); + thePiMinusXS = thePiPlusXS; +#else + thePiPlusXS = new G4BGGPionInelasticXS( G4PionPlus::Definition() ); + thePiMinusXS = new G4BGGPionInelasticXS( G4PionMinus::Definition() ); +#endif + theAntiNucleonXS = new G4CrossSectionInelastic( new G4ComponentAntiNuclNuclearXS() ); theChipsHyperonInelasticXS = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet( G4ChipsHyperonInelasticXS::Default_Name() ); theChipsKaonMinusXS = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet( G4ChipsKaonMinusInelasticXS::Default_Name() ); @@ -267,176 +279,285 @@ void G4AtlasHadronPhysicsFTFP_BERP_ATL::ConstructProcess() G4ProcessManager * aProcMan = 0; +#if G4VERSION_NUMBER < 1100 theNeutronInelastic = new G4NeutronInelasticProcess(); +#else + theNeutronInelastic = new G4HadronInelasticProcess( "NeutronInelastic", G4Neutron::Definition() ); +#endif theNeutronInelastic->RegisterMe( theModel1 ); theNeutronInelastic->RegisterMe( theBertini1 ); theNeutronInelastic->AddDataSet( new G4BGGNucleonInelasticXS( G4Neutron::Neutron() ) ); theNeutronInelastic->AddDataSet( theNeutronInelasticXS ); aProcMan = G4Neutron::Neutron()->GetProcessManager(); aProcMan->AddDiscreteProcess( theNeutronInelastic ); + +#if G4VERSION_NUMBER < 1100 theNeutronCaptureProcess = new G4HadronCaptureProcess(); +#else + theNeutronCaptureProcess = new G4NeutronCaptureProcess(); +#endif theNeutronCaptureProcess->RegisterMe( theNeutronCaptureModel ); theNeutronCaptureProcess->AddDataSet( theNeutronCaptureXS ); aProcMan->AddDiscreteProcess( theNeutronCaptureProcess ); +#if G4VERSION_NUMBER < 1100 theProtonInelastic = new G4ProtonInelasticProcess(); +#else + theProtonInelastic = new G4HadronInelasticProcess( "ProtonInelastic", G4Proton::Definition() ); +#endif theProtonInelastic->RegisterMe( theModel1 ); theProtonInelastic->RegisterMe( theBertini1 ); theProtonInelastic->AddDataSet( new G4BGGNucleonInelasticXS( G4Proton::Proton() ) ); aProcMan = G4Proton::Proton()->GetProcessManager(); aProcMan->AddDiscreteProcess( theProtonInelastic ); +#if G4VERSION_NUMBER < 1100 thePionMinusInelastic = new G4PionMinusInelasticProcess(); +#else + thePionMinusInelastic = new G4HadronInelasticProcess( "PionMinusInelastic", G4PionMinus::Definition() ); +#endif thePionMinusInelastic->RegisterMe( theModel1 ); thePionMinusInelastic->RegisterMe( theBertini1 ); - thePionMinusInelastic->AddDataSet( thePiXS ); + thePionMinusInelastic->AddDataSet( thePiMinusXS ); aProcMan = G4PionMinus::PionMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( thePionMinusInelastic ); +#if G4VERSION_NUMBER < 1100 thePionPlusInelastic = new G4PionPlusInelasticProcess(); +#else + thePionPlusInelastic = new G4HadronInelasticProcess( "PionPlusInelastic", G4PionPlus::Definition() ); +#endif thePionPlusInelastic->RegisterMe( theModel1 ); thePionPlusInelastic->RegisterMe( theBertini1 ); - thePionPlusInelastic->AddDataSet( thePiXS ); + thePionPlusInelastic->AddDataSet( thePiPlusXS ); aProcMan = G4PionPlus::PionPlus()->GetProcessManager(); aProcMan->AddDiscreteProcess( thePionPlusInelastic ); +#if G4VERSION_NUMBER < 1100 theKaonMinusInelastic = new G4KaonMinusInelasticProcess(); +#else + theKaonMinusInelastic = new G4HadronInelasticProcess( "KaonMinusInelastic", G4KaonMinus::Definition() ); +#endif theKaonMinusInelastic->RegisterMe( theModel1 ); theKaonMinusInelastic->RegisterMe( theBertini1 ); theKaonMinusInelastic->AddDataSet( theChipsKaonMinusXS ); aProcMan = G4KaonMinus::KaonMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theKaonMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theKaonPlusInelastic = new G4KaonPlusInelasticProcess(); +#else + theKaonPlusInelastic = new G4HadronInelasticProcess( "KaonPlusInelastic", G4KaonPlus::Definition() ); +#endif theKaonPlusInelastic->RegisterMe( theModel1 ); theKaonPlusInelastic->RegisterMe( theBertini1 ); theKaonPlusInelastic->AddDataSet( theChipsKaonPlusXS ); aProcMan = G4KaonPlus::KaonPlus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theKaonPlusInelastic ); +#if G4VERSION_NUMBER < 1100 theKaonZeroLInelastic = new G4KaonZeroLInelasticProcess(); +#else + theKaonZeroLInelastic = new G4HadronInelasticProcess( "KaonZeroLInelastic", G4KaonZeroLong::Definition() ); +#endif theKaonZeroLInelastic->RegisterMe( theModel1 ); theKaonZeroLInelastic->RegisterMe( theBertini1 ); theKaonZeroLInelastic->AddDataSet( theChipsKaonZeroXS ); aProcMan = G4KaonZeroLong::KaonZeroLong()->GetProcessManager(); aProcMan->AddDiscreteProcess( theKaonZeroLInelastic ); +#if G4VERSION_NUMBER < 1100 theKaonZeroSInelastic = new G4KaonZeroSInelasticProcess(); +#else + theKaonZeroSInelastic = new G4HadronInelasticProcess( "KaonZeroSInelastic", G4KaonZeroShort::Definition() ); +#endif theKaonZeroSInelastic->RegisterMe( theModel1 ); theKaonZeroSInelastic->RegisterMe( theBertini1 ); theKaonZeroSInelastic->AddDataSet( theChipsKaonZeroXS ); aProcMan = G4KaonZeroShort::KaonZeroShort()->GetProcessManager(); aProcMan->AddDiscreteProcess( theKaonZeroSInelastic ); +#if G4VERSION_NUMBER < 1100 theLambdaInelastic = new G4LambdaInelasticProcess(); +#else + theLambdaInelastic = new G4HadronInelasticProcess( "LambdaInelastic", G4Lambda::Definition() ); +#endif theLambdaInelastic->RegisterMe( theModel2 ); theLambdaInelastic->RegisterMe( theBertini2 ); theLambdaInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4Lambda::Lambda()->GetProcessManager(); aProcMan->AddDiscreteProcess( theLambdaInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess(); +#else + theAntiLambdaInelastic = new G4HadronInelasticProcess( "AntiLambdaInelastic", G4AntiLambda::Definition() ); +#endif theAntiLambdaInelastic->RegisterMe( theModel3 ); theAntiLambdaInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiLambda::AntiLambda()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiLambdaInelastic ); +#if G4VERSION_NUMBER < 1100 theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess(); +#else + theSigmaMinusInelastic = new G4HadronInelasticProcess( "SigmaMinusInelastic", G4SigmaMinus::Definition() ); +#endif theSigmaMinusInelastic->RegisterMe( theModel2 ); theSigmaMinusInelastic->RegisterMe( theBertini2 ); theSigmaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4SigmaMinus::SigmaMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theSigmaMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess(); +#else + theAntiSigmaMinusInelastic = new G4HadronInelasticProcess( "AntiSigmaMinusInelastic", G4AntiSigmaMinus::Definition() ); +#endif theAntiSigmaMinusInelastic->RegisterMe( theModel3 ); theAntiSigmaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiSigmaMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess(); +#else + theSigmaPlusInelastic = new G4HadronInelasticProcess( "SigmaPlusInelastic", G4SigmaPlus::Definition() ); +#endif theSigmaPlusInelastic->RegisterMe( theModel2 ); theSigmaPlusInelastic->RegisterMe( theBertini2 ); theSigmaPlusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4SigmaPlus::SigmaPlus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theSigmaPlusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess(); +#else + theAntiSigmaPlusInelastic = new G4HadronInelasticProcess( "AntiSigmaPlusInelastic", G4AntiSigmaPlus::Definition() ); +#endif theAntiSigmaPlusInelastic->RegisterMe( theModel3 ); theAntiSigmaPlusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiSigmaPlusInelastic ); +#if G4VERSION_NUMBER < 1100 theXiMinusInelastic = new G4XiMinusInelasticProcess(); +#else + theXiMinusInelastic = new G4HadronInelasticProcess( "XiMinusInelastic", G4XiMinus::Definition() ); +#endif theXiMinusInelastic->RegisterMe( theModel2 ); theXiMinusInelastic->RegisterMe( theBertini2 ); theXiMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4XiMinus::XiMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theXiMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess(); +#else + theAntiXiMinusInelastic = new G4HadronInelasticProcess( "AntiXiMinusInelastic", G4AntiXiMinus::Definition() ); +#endif theAntiXiMinusInelastic->RegisterMe( theModel3 ); theAntiXiMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiXiMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theXiZeroInelastic = new G4XiZeroInelasticProcess(); +#else + theXiZeroInelastic = new G4HadronInelasticProcess( "XiZeroInelastic", G4XiZero::Definition() ); +#endif theXiZeroInelastic->RegisterMe( theModel2 ); theXiZeroInelastic->RegisterMe( theBertini2 ); theXiZeroInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4XiZero::XiZero()->GetProcessManager(); aProcMan->AddDiscreteProcess( theXiZeroInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess(); +#else + theAntiXiZeroInelastic = new G4HadronInelasticProcess( "AntiXiZeroInelastic", G4AntiXiZero::Definition() ); +#endif theAntiXiZeroInelastic->RegisterMe( theModel3 ); theAntiXiZeroInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiXiZero::AntiXiZero()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiXiZeroInelastic ); +#if G4VERSION_NUMBER < 1100 theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess(); +#else + theOmegaMinusInelastic = new G4HadronInelasticProcess( "OmegaMinusInelastic", G4OmegaMinus::Definition() ); +#endif theOmegaMinusInelastic->RegisterMe( theModel2 ); theOmegaMinusInelastic->RegisterMe( theBertini2 ); theOmegaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4OmegaMinus::OmegaMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theOmegaMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess(); +#else + theAntiOmegaMinusInelastic = new G4HadronInelasticProcess( "AntiOmegaMinusInelastic", G4AntiOmegaMinus::Definition() ); +#endif theAntiOmegaMinusInelastic->RegisterMe( theModel3 ); theAntiOmegaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiOmegaMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiProtonInelastic = new G4AntiProtonInelasticProcess(); +#else + theAntiProtonInelastic = new G4HadronInelasticProcess( "AntiProtonInelastic", G4AntiProton::Definition() ); +#endif theAntiProtonInelastic->RegisterMe( theModel3 ); theAntiProtonInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiProton::AntiProton()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiProtonInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiNeutronInelastic = new G4AntiNeutronInelasticProcess(); +#else + theAntiNeutronInelastic = new G4HadronInelasticProcess( "AntiNeutronInelastic", G4AntiNeutron::Definition() ); +#endif theAntiNeutronInelastic->RegisterMe( theModel3 ); theAntiNeutronInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiNeutron::AntiNeutron()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiNeutronInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiDeuteronInelastic = new G4AntiDeuteronInelasticProcess(); +#else + theAntiDeuteronInelastic = new G4HadronInelasticProcess( "AntiDeuteronInelastic", G4AntiDeuteron::Definition() ); +#endif theAntiDeuteronInelastic->RegisterMe( theModel3 ); theAntiDeuteronInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiDeuteron::AntiDeuteron()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiDeuteronInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiTritonInelastic = new G4AntiTritonInelasticProcess(); +#else + theAntiTritonInelastic = new G4HadronInelasticProcess( "AntiTritonInelastic", G4AntiTriton::Definition() ); +#endif theAntiTritonInelastic->RegisterMe( theModel3 ); theAntiTritonInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiTriton::AntiTriton()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiTritonInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiHe3Inelastic = new G4AntiHe3InelasticProcess(); +#else + theAntiHe3Inelastic = new G4HadronInelasticProcess( "AntiHe3Inelastic", G4AntiHe3::Definition() ); +#endif theAntiHe3Inelastic->RegisterMe( theModel3 ); theAntiHe3Inelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiHe3::AntiHe3()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiHe3Inelastic ); +#if G4VERSION_NUMBER < 1100 theAntiAlphaInelastic = new G4AntiAlphaInelasticProcess(); +#else + theAntiAlphaInelastic = new G4HadronInelasticProcess( "AntiAlphaInelastic", G4AntiAlpha::Definition() ); +#endif theAntiAlphaInelastic->RegisterMe( theModel3 ); theAntiAlphaInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiAlpha::AntiAlpha()->GetProcessManager(); diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERP_ATL.hh b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERP_ATL.hh index 6ea71ce820ff6d4e1530fbe3446bfd8d7cd7745f..d4cb4933198da8dcaf16370086606cb75057e9fd 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERP_ATL.hh +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERP_ATL.hh @@ -38,6 +38,7 @@ #ifndef G4AtlasHadronPhysicsFTFP_BERP_ATL_h #define G4AtlasHadronPhysicsFTFP_BERP_ATL_h 1 +#include "G4Version.hh" #include "globals.hh" #include "G4ios.hh" @@ -55,8 +56,13 @@ #include "G4QuasiElasticChannel.hh" #include "G4CascadeInterface.hh" -#include "G4HadronFissionProcess.hh" +#if G4VERSION_NUMBER < 1100 #include "G4HadronCaptureProcess.hh" +#else +#include "G4NeutronCaptureProcess.hh" +#endif + +#if G4VERSION_NUMBER < 1100 #include "G4NeutronInelasticProcess.hh" #include "G4ProtonInelasticProcess.hh" @@ -87,6 +93,10 @@ #include "G4AntiHe3InelasticProcess.hh" #include "G4AntiAlphaInelasticProcess.hh" +#else +#include "G4HadronInelasticProcess.hh" +#endif + #include "G4ChipsHyperonInelasticXS.hh" @@ -119,8 +129,13 @@ class G4AtlasHadronPhysicsFTFP_BERP_ATL : public G4VPhysicsConstructor G4CascadeInterface * theBertini1; G4CascadeInterface * theBertini2; +#if G4VERSION_NUMBER < 1100 G4HadronCaptureProcess * theNeutronCaptureProcess; +#else + G4NeutronCaptureProcess * theNeutronCaptureProcess; +#endif +#if G4VERSION_NUMBER < 1100 G4NeutronInelasticProcess * theNeutronInelastic; G4ProtonInelasticProcess * theProtonInelastic; G4PionMinusInelasticProcess * thePionMinusInelastic; @@ -149,8 +164,39 @@ class G4AtlasHadronPhysicsFTFP_BERP_ATL : public G4VPhysicsConstructor G4AntiTritonInelasticProcess * theAntiTritonInelastic; G4AntiHe3InelasticProcess * theAntiHe3Inelastic; G4AntiAlphaInelasticProcess * theAntiAlphaInelastic; +#else + G4HadronInelasticProcess* theNeutronInelastic; + G4HadronInelasticProcess* theProtonInelastic; + G4HadronInelasticProcess* thePionMinusInelastic; + G4HadronInelasticProcess* thePionPlusInelastic; + G4HadronInelasticProcess* theKaonMinusInelastic; + G4HadronInelasticProcess* theKaonPlusInelastic; + G4HadronInelasticProcess* theKaonZeroLInelastic; + G4HadronInelasticProcess* theKaonZeroSInelastic; + + G4HadronInelasticProcess* theLambdaInelastic; + G4HadronInelasticProcess* theAntiLambdaInelastic; + G4HadronInelasticProcess* theSigmaMinusInelastic; + G4HadronInelasticProcess* theAntiSigmaMinusInelastic; + G4HadronInelasticProcess* theSigmaPlusInelastic; + G4HadronInelasticProcess* theAntiSigmaPlusInelastic; + G4HadronInelasticProcess* theXiZeroInelastic; + G4HadronInelasticProcess* theAntiXiZeroInelastic; + G4HadronInelasticProcess* theXiMinusInelastic; + G4HadronInelasticProcess* theAntiXiMinusInelastic; + G4HadronInelasticProcess* theOmegaMinusInelastic; + G4HadronInelasticProcess* theAntiOmegaMinusInelastic; + + G4HadronInelasticProcess* theAntiProtonInelastic; + G4HadronInelasticProcess* theAntiNeutronInelastic; + G4HadronInelasticProcess* theAntiDeuteronInelastic; + G4HadronInelasticProcess* theAntiTritonInelastic; + G4HadronInelasticProcess* theAntiHe3Inelastic; + G4HadronInelasticProcess* theAntiAlphaInelastic; +#endif - G4VCrossSectionDataSet * thePiXS; + G4VCrossSectionDataSet * thePiPlusXS; + G4VCrossSectionDataSet * thePiMinusXS; G4VCrossSectionDataSet * theChipsHyperonInelasticXS; G4VCrossSectionDataSet * theAntiNucleonXS; G4VCrossSectionDataSet * theChipsKaonMinusXS; diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL.cc b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL.cc index b9a71333883e36dd2d178fef2835828d30addc2a..e2001a105ab85d440c1e2e435c0deec669b2e60e 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL.cc @@ -40,6 +40,7 @@ #include "G4AtlasHadronPhysicsFTFP_BERT_ATL.hh" +#include "G4Version.hh" #include "globals.hh" #include "G4ios.hh" #include "G4SystemOfUnits.hh" @@ -55,7 +56,11 @@ #include "G4ChipsKaonZeroInelasticXS.hh" #include "G4CrossSectionDataSetRegistry.hh" +#if G4VERSION_NUMBER < 1100 #include "G4HadronCaptureProcess.hh" +#else +#include "G4NeutronCaptureProcess.hh" +#endif #include "G4NeutronRadCapture.hh" #include "G4NeutronInelasticXS.hh" #include "G4NeutronCaptureXS.hh" @@ -223,7 +228,11 @@ void G4AtlasHadronPhysicsFTFP_BERT_ATL::ConstructProcess() } } if ( ! capture ) { +#if G4VERSION_NUMBER < 1100 capture = new G4HadronCaptureProcess("nCapture"); +#else + capture = new G4NeutronCaptureProcess("nCapture"); +#endif pmanager->AddDiscreteProcess(capture); } tpdata->xsNeutronCaptureXS = (G4NeutronCaptureXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronCaptureXS::Default_Name()); diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_HP.cc b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_HP.cc index a005fb580621d60078871cb3171e39d571b7d61e..944d1671950c775cdb6b666864c56ba77b65365f 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_HP.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_HP.cc @@ -40,6 +40,7 @@ #include "G4AtlasHadronPhysicsFTFP_BERT_ATL_HP.hh" +#include "G4Version.hh" #include "globals.hh" #include "G4ios.hh" #include "G4SystemOfUnits.hh" @@ -55,7 +56,13 @@ #include "G4ChipsKaonZeroInelasticXS.hh" #include "G4CrossSectionDataSetRegistry.hh" +#if G4VERSION_NUMBER < 1100 #include "G4HadronCaptureProcess.hh" +#include "G4HadronFissionProcess.hh" +#else +#include "G4NeutronCaptureProcess.hh" +#include "G4NeutronFissionProcess.hh" +#endif #include "G4NeutronRadCapture.hh" #include "G4NeutronCaptureXS.hh" #include "G4NeutronHPCaptureData.hh" @@ -226,7 +233,11 @@ void G4AtlasHadronPhysicsFTFP_BERT_ATL_HP::ConstructProcess() } } if ( ! capture ) { +#if G4VERSION_NUMBER < 1100 capture = new G4HadronCaptureProcess("nCapture"); +#else + capture = new G4NeutronCaptureProcess("nCapture"); +#endif pmanager->AddDiscreteProcess(capture); } tpdata->xsNeutronCaptureXS = (G4NeutronCaptureXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronCaptureXS::Default_Name()); @@ -236,7 +247,11 @@ void G4AtlasHadronPhysicsFTFP_BERT_ATL_HP::ConstructProcess() theNeutronRadCapture->SetMinEnergy( 19.9*MeV ); capture->RegisterMe( theNeutronRadCapture ); if ( ! fission ) { +#if G4VERSION_NUMBER < 1100 fission = new G4HadronFissionProcess("nFission"); +#else + fission = new G4NeutronFissionProcess("nFission"); +#endif pmanager->AddDiscreteProcess(fission); } G4LFission* theNeutronLEPFission = new G4LFission(); diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_chipsXS.cc b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_chipsXS.cc index 04cc8a702f0222d66153e4264d18343c15736f17..4e2543fb934557a2411ae650afaa85ab744f9935 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_chipsXS.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_chipsXS.cc @@ -39,6 +39,7 @@ #include "G4AtlasHadronPhysicsFTFP_BERT_ATL_chipsXS.hh" +#include "G4Version.hh" #include "globals.hh" #include "G4ios.hh" #include "G4SystemOfUnits.hh" @@ -58,7 +59,11 @@ #include "G4ChipsProtonInelasticXS.hh" #include "G4CrossSectionDataSetRegistry.hh" +#if G4VERSION_NUMBER < 1100 #include "G4HadronCaptureProcess.hh" +#else +#include "G4NeutronCaptureProcess.hh" +#endif #include "G4NeutronRadCapture.hh" #include "G4NeutronCaptureXS.hh" @@ -235,7 +240,11 @@ void G4AtlasHadronPhysicsFTFP_BERT_ATL_chipsXS::ConstructProcess() } } if ( ! capture ) { +#if G4VERSION_NUMBER < 1100 capture = new G4HadronCaptureProcess("nCapture"); +#else + capture = new G4NeutronCaptureProcess("nCapture"); +#endif pmanager->AddDiscreteProcess(capture); } tpdata->xsNeutronCaptureXS = (G4NeutronCaptureXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronCaptureXS::Default_Name()); diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction.cc b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction.cc index a779d69e256bcc5bef3ea3165ec3b04240d37295..0ae817fab379a31595ef8bce1a3c6d5b6f0ba836 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction.cc @@ -56,15 +56,18 @@ #include "G4ChipsKaonZeroInelasticXS.hh" #include "G4CrossSectionDataSetRegistry.hh" -#include "G4HadronCaptureProcess.hh" #include "G4NeutronRadCapture.hh" #include "G4NeutronInelasticXS.hh" #include "G4NeutronCaptureXS.hh" #include "G4ProcessManager.hh" #include "G4BGGNucleonInelasticXS.hh" +#if G4VERSION_NUMBER < 1100 #include "G4PiNuclearCrossSection.hh" #include "G4CrossSectionPairGG.hh" +#else +#include "G4BGGPionInelasticXS.hh" +#endif #include "G4ComponentAntiNuclNuclearXS.hh" #include "G4CrossSectionInelastic.hh" @@ -116,7 +119,8 @@ G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction::G4AtlasHadronPhysicsFTFP_BERT_A , theAntiTritonInelastic(0) , theAntiHe3Inelastic(0) , theAntiAlphaInelastic(0) - , thePiXS(0) + , thePiPlusXS(0) + , thePiMinusXS(0) , theChipsHyperonInelasticXS(0) , theAntiNucleonXS(0) , theChipsKaonMinusXS(0) @@ -167,7 +171,8 @@ G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction::G4AtlasHadronPhysicsFTFP_BERT_A , theAntiTritonInelastic(0) , theAntiHe3Inelastic(0) , theAntiAlphaInelastic(0) - , thePiXS(0) + , thePiPlusXS(0) + , thePiMinusXS(0) , theChipsHyperonInelasticXS(0) , theAntiNucleonXS(0) , theChipsKaonMinusXS(0) @@ -233,7 +238,13 @@ void G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction::CreateModels() theNeutronCaptureModel->SetMaxEnergy( 100.0*TeV ); // Cross sections - thePiXS = new G4CrossSectionPairGG( new G4PiNuclearCrossSection(), 91*GeV ); +#if G4VERSION_NUMBER < 1100 + thePiPlusXS = new G4CrossSectionPairGG( new G4PiNuclearCrossSection(), 91*GeV ); + thePiMinusXS = thePiPlusXS; +#else + thePiPlusXS = new G4BGGPionInelasticXS( G4PionPlus::Definition() ); + thePiMinusXS = new G4BGGPionInelasticXS( G4PionMinus::Definition() ); +#endif theAntiNucleonXS = new G4CrossSectionInelastic( new G4ComponentAntiNuclNuclearXS() ); theChipsHyperonInelasticXS = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet( G4ChipsHyperonInelasticXS::Default_Name() ); theChipsKaonMinusXS = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet( G4ChipsKaonMinusInelasticXS::Default_Name() ); @@ -270,176 +281,285 @@ void G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction::ConstructProcess() G4ProcessManager * aProcMan = 0; +#if G4VERSION_NUMBER < 1100 theNeutronInelastic = new G4NeutronInelasticProcess(); +#else + theNeutronInelastic = new G4HadronInelasticProcess( "NeutronInelastic", G4Neutron::Definition() ); +#endif theNeutronInelastic->RegisterMe( theModel1 ); theNeutronInelastic->RegisterMe( theBertini1 ); theNeutronInelastic->AddDataSet( new G4BGGNucleonInelasticXS( G4Neutron::Neutron() ) ); theNeutronInelastic->AddDataSet( theNeutronInelasticXS ); aProcMan = G4Neutron::Neutron()->GetProcessManager(); aProcMan->AddDiscreteProcess( theNeutronInelastic ); + +#if G4VERSION_NUMBER < 1100 theNeutronCaptureProcess = new G4HadronCaptureProcess(); +#else + theNeutronCaptureProcess = new G4NeutronCaptureProcess(); +#endif theNeutronCaptureProcess->RegisterMe( theNeutronCaptureModel ); theNeutronCaptureProcess->AddDataSet( theNeutronCaptureXS ); aProcMan->AddDiscreteProcess( theNeutronCaptureProcess ); +#if G4VERSION_NUMBER < 1100 theProtonInelastic = new G4ProtonInelasticProcess(); +#else + theProtonInelastic = new G4HadronInelasticProcess( "ProtonInelastic", G4Proton::Definition() ); +#endif theProtonInelastic->RegisterMe( theModel1 ); theProtonInelastic->RegisterMe( theBertini1 ); theProtonInelastic->AddDataSet( new G4BGGNucleonInelasticXS( G4Proton::Proton() ) ); aProcMan = G4Proton::Proton()->GetProcessManager(); aProcMan->AddDiscreteProcess( theProtonInelastic ); +#if G4VERSION_NUMBER < 1100 thePionMinusInelastic = new G4PionMinusInelasticProcess(); +#else + thePionMinusInelastic = new G4HadronInelasticProcess( "PionMinusInelastic", G4PionMinus::Definition() ); +#endif thePionMinusInelastic->RegisterMe( theModel1 ); thePionMinusInelastic->RegisterMe( theBertini1 ); - thePionMinusInelastic->AddDataSet( thePiXS ); + thePionMinusInelastic->AddDataSet( thePiMinusXS ); aProcMan = G4PionMinus::PionMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( thePionMinusInelastic ); +#if G4VERSION_NUMBER < 1100 thePionPlusInelastic = new G4PionPlusInelasticProcess(); +#else + thePionPlusInelastic = new G4HadronInelasticProcess( "PionPlusInelastic", G4PionPlus::Definition() ); +#endif thePionPlusInelastic->RegisterMe( theModel1 ); thePionPlusInelastic->RegisterMe( theBertini1 ); - thePionPlusInelastic->AddDataSet( thePiXS ); + thePionPlusInelastic->AddDataSet( thePiPlusXS ); aProcMan = G4PionPlus::PionPlus()->GetProcessManager(); aProcMan->AddDiscreteProcess( thePionPlusInelastic ); +#if G4VERSION_NUMBER < 1100 theKaonMinusInelastic = new G4KaonMinusInelasticProcess(); +#else + theKaonMinusInelastic = new G4HadronInelasticProcess( "KaonMinusInelastic", G4KaonMinus::Definition() ); +#endif theKaonMinusInelastic->RegisterMe( theModel1 ); theKaonMinusInelastic->RegisterMe( theBertini1 ); theKaonMinusInelastic->AddDataSet( theChipsKaonMinusXS ); aProcMan = G4KaonMinus::KaonMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theKaonMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theKaonPlusInelastic = new G4KaonPlusInelasticProcess(); +#else + theKaonPlusInelastic = new G4HadronInelasticProcess( "KaonPlusInelastic", G4KaonPlus::Definition() ); +#endif theKaonPlusInelastic->RegisterMe( theModel1 ); theKaonPlusInelastic->RegisterMe( theBertini1 ); theKaonPlusInelastic->AddDataSet( theChipsKaonPlusXS ); aProcMan = G4KaonPlus::KaonPlus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theKaonPlusInelastic ); +#if G4VERSION_NUMBER < 1100 theKaonZeroLInelastic = new G4KaonZeroLInelasticProcess(); +#else + theKaonZeroLInelastic = new G4HadronInelasticProcess( "KaonZeroLInelastic", G4KaonZeroLong::Definition() ); +#endif theKaonZeroLInelastic->RegisterMe( theModel1 ); theKaonZeroLInelastic->RegisterMe( theBertini1 ); theKaonZeroLInelastic->AddDataSet( theChipsKaonZeroXS ); aProcMan = G4KaonZeroLong::KaonZeroLong()->GetProcessManager(); aProcMan->AddDiscreteProcess( theKaonZeroLInelastic ); +#if G4VERSION_NUMBER < 1100 theKaonZeroSInelastic = new G4KaonZeroSInelasticProcess(); +#else + theKaonZeroSInelastic = new G4HadronInelasticProcess( "KaonZeroSInelastic", G4KaonZeroShort::Definition() ); +#endif theKaonZeroSInelastic->RegisterMe( theModel1 ); theKaonZeroSInelastic->RegisterMe( theBertini1 ); theKaonZeroSInelastic->AddDataSet( theChipsKaonZeroXS ); aProcMan = G4KaonZeroShort::KaonZeroShort()->GetProcessManager(); aProcMan->AddDiscreteProcess( theKaonZeroSInelastic ); +#if G4VERSION_NUMBER < 1100 theLambdaInelastic = new G4LambdaInelasticProcess(); +#else + theLambdaInelastic = new G4HadronInelasticProcess( "LambdaInelastic", G4Lambda::Definition() ); +#endif theLambdaInelastic->RegisterMe( theModel2 ); theLambdaInelastic->RegisterMe( theBertini2 ); theLambdaInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4Lambda::Lambda()->GetProcessManager(); aProcMan->AddDiscreteProcess( theLambdaInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess(); +#else + theAntiLambdaInelastic = new G4HadronInelasticProcess( "AntiLambdaInelastic", G4AntiLambda::Definition() ); +#endif theAntiLambdaInelastic->RegisterMe( theModel3 ); theAntiLambdaInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiLambda::AntiLambda()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiLambdaInelastic ); +#if G4VERSION_NUMBER < 1100 theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess(); +#else + theSigmaMinusInelastic = new G4HadronInelasticProcess( "SigmaMinusInelastic", G4SigmaMinus::Definition() ); +#endif theSigmaMinusInelastic->RegisterMe( theModel2 ); theSigmaMinusInelastic->RegisterMe( theBertini2 ); theSigmaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4SigmaMinus::SigmaMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theSigmaMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess(); +#else + theAntiSigmaMinusInelastic = new G4HadronInelasticProcess( "AntiSigmaMinusInelastic", G4AntiSigmaMinus::Definition() ); +#endif theAntiSigmaMinusInelastic->RegisterMe( theModel3 ); theAntiSigmaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiSigmaMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess(); +#else + theSigmaPlusInelastic = new G4HadronInelasticProcess( "SigmaPlusInelastic", G4SigmaPlus::Definition() ); +#endif theSigmaPlusInelastic->RegisterMe( theModel2 ); theSigmaPlusInelastic->RegisterMe( theBertini2 ); theSigmaPlusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4SigmaPlus::SigmaPlus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theSigmaPlusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess(); +#else + theAntiSigmaPlusInelastic = new G4HadronInelasticProcess( "AntiSigmaPlusInelastic", G4AntiSigmaPlus::Definition() ); +#endif theAntiSigmaPlusInelastic->RegisterMe( theModel3 ); theAntiSigmaPlusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiSigmaPlusInelastic ); +#if G4VERSION_NUMBER < 1100 theXiMinusInelastic = new G4XiMinusInelasticProcess(); +#else + theXiMinusInelastic = new G4HadronInelasticProcess( "XiMinusInelastic", G4XiMinus::Definition() ); +#endif theXiMinusInelastic->RegisterMe( theModel2 ); theXiMinusInelastic->RegisterMe( theBertini2 ); theXiMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4XiMinus::XiMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theXiMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess(); +#else + theAntiXiMinusInelastic = new G4HadronInelasticProcess( "AntiXiMinusInelastic", G4AntiXiMinus::Definition() ); +#endif theAntiXiMinusInelastic->RegisterMe( theModel3 ); theAntiXiMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiXiMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theXiZeroInelastic = new G4XiZeroInelasticProcess(); +#else + theXiZeroInelastic = new G4HadronInelasticProcess( "XiZeroInelastic", G4XiZero::Definition() ); +#endif theXiZeroInelastic->RegisterMe( theModel2 ); theXiZeroInelastic->RegisterMe( theBertini2 ); theXiZeroInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4XiZero::XiZero()->GetProcessManager(); aProcMan->AddDiscreteProcess( theXiZeroInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess(); +#else + theAntiXiZeroInelastic = new G4HadronInelasticProcess( "AntiXiZeroInelastic", G4AntiXiZero::Definition() ); +#endif theAntiXiZeroInelastic->RegisterMe( theModel3 ); theAntiXiZeroInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiXiZero::AntiXiZero()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiXiZeroInelastic ); +#if G4VERSION_NUMBER < 1100 theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess(); +#else + theOmegaMinusInelastic = new G4HadronInelasticProcess( "OmegaMinusInelastic", G4OmegaMinus::Definition() ); +#endif theOmegaMinusInelastic->RegisterMe( theModel2 ); theOmegaMinusInelastic->RegisterMe( theBertini2 ); theOmegaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4OmegaMinus::OmegaMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theOmegaMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess(); +#else + theAntiOmegaMinusInelastic = new G4HadronInelasticProcess( "AntiOmegaMinusInelastic", G4AntiOmegaMinus::Definition() ); +#endif theAntiOmegaMinusInelastic->RegisterMe( theModel3 ); theAntiOmegaMinusInelastic->AddDataSet( theChipsHyperonInelasticXS ); aProcMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiOmegaMinusInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiProtonInelastic = new G4AntiProtonInelasticProcess(); +#else + theAntiProtonInelastic = new G4HadronInelasticProcess( "AntiProtonInelastic", G4AntiProton::Definition() ); +#endif theAntiProtonInelastic->RegisterMe( theModel3 ); theAntiProtonInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiProton::AntiProton()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiProtonInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiNeutronInelastic = new G4AntiNeutronInelasticProcess(); +#else + theAntiNeutronInelastic = new G4HadronInelasticProcess( "AntiNeutronInelastic", G4AntiNeutron::Definition() ); +#endif theAntiNeutronInelastic->RegisterMe( theModel3 ); theAntiNeutronInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiNeutron::AntiNeutron()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiNeutronInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiDeuteronInelastic = new G4AntiDeuteronInelasticProcess(); +#else + theAntiDeuteronInelastic = new G4HadronInelasticProcess( "AntiDeuteronInelastic", G4AntiDeuteron::Definition() ); +#endif theAntiDeuteronInelastic->RegisterMe( theModel3 ); theAntiDeuteronInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiDeuteron::AntiDeuteron()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiDeuteronInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiTritonInelastic = new G4AntiTritonInelasticProcess(); +#else + theAntiTritonInelastic = new G4HadronInelasticProcess( "AntiTritonInelastic", G4AntiTriton::Definition() ); +#endif theAntiTritonInelastic->RegisterMe( theModel3 ); theAntiTritonInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiTriton::AntiTriton()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiTritonInelastic ); +#if G4VERSION_NUMBER < 1100 theAntiHe3Inelastic = new G4AntiHe3InelasticProcess(); +#else + theAntiHe3Inelastic = new G4HadronInelasticProcess( "AntiHe3Inelastic", G4AntiHe3::Definition() ); +#endif theAntiHe3Inelastic->RegisterMe( theModel3 ); theAntiHe3Inelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiHe3::AntiHe3()->GetProcessManager(); aProcMan->AddDiscreteProcess( theAntiHe3Inelastic ); +#if G4VERSION_NUMBER < 1100 theAntiAlphaInelastic = new G4AntiAlphaInelasticProcess(); +#else + theAntiAlphaInelastic = new G4HadronInelasticProcess( "AntiAlphaInelastic", G4AntiAlpha::Definition() ); +#endif theAntiAlphaInelastic->RegisterMe( theModel3 ); theAntiAlphaInelastic->AddDataSet( theAntiNucleonXS ); aProcMan = G4AntiAlpha::AntiAlpha()->GetProcessManager(); diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction.hh b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction.hh index 73fc6faa301d6bcadc7dfdb40a01990db1426541..4fbc2206f8ffd10b34ce8e79fa616e997b21decd 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction.hh +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction.hh @@ -40,6 +40,7 @@ #ifndef G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction_h #define G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction_h 1 +#include "G4Version.hh" #include "globals.hh" #include "G4ios.hh" @@ -57,9 +58,13 @@ #include "G4QuasiElasticChannel.hh" #include "G4CascadeInterface.hh" -#include "G4HadronFissionProcess.hh" +#if G4VERSION_NUMBER < 1100 #include "G4HadronCaptureProcess.hh" +#else +#include "G4NeutronCaptureProcess.hh" +#endif +#if G4VERSION_NUMBER < 1100 #include "G4NeutronInelasticProcess.hh" #include "G4ProtonInelasticProcess.hh" #include "G4PionMinusInelasticProcess.hh" @@ -81,7 +86,6 @@ #include "G4AntiXiMinusInelasticProcess.hh" #include "G4OmegaMinusInelasticProcess.hh" #include "G4AntiOmegaMinusInelasticProcess.hh" - #include "G4AntiProtonInelasticProcess.hh" #include "G4AntiNeutronInelasticProcess.hh" #include "G4AntiDeuteronInelasticProcess.hh" @@ -89,6 +93,10 @@ #include "G4AntiHe3InelasticProcess.hh" #include "G4AntiAlphaInelasticProcess.hh" +#else +#include "G4HadronInelasticProcess.hh" +#endif + #include "G4ChipsHyperonInelasticXS.hh" @@ -121,8 +129,13 @@ class G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction : public G4VPhysicsConstru G4CascadeInterface * theBertini1; G4CascadeInterface * theBertini2; +#if G4VERSION_NUMBER < 1100 G4HadronCaptureProcess * theNeutronCaptureProcess; +#else + G4NeutronCaptureProcess * theNeutronCaptureProcess; +#endif +#if G4VERSION_NUMBER < 1100 G4NeutronInelasticProcess * theNeutronInelastic; G4ProtonInelasticProcess * theProtonInelastic; G4PionMinusInelasticProcess * thePionMinusInelastic; @@ -151,8 +164,40 @@ class G4AtlasHadronPhysicsFTFP_BERT_ATL_noDiffraction : public G4VPhysicsConstru G4AntiTritonInelasticProcess * theAntiTritonInelastic; G4AntiHe3InelasticProcess * theAntiHe3Inelastic; G4AntiAlphaInelasticProcess * theAntiAlphaInelastic; +#else + G4HadronInelasticProcess *theNeutronInelastic; + G4HadronInelasticProcess *theProtonInelastic; + G4HadronInelasticProcess *thePionMinusInelastic; + G4HadronInelasticProcess *thePionPlusInelastic; + G4HadronInelasticProcess *theKaonMinusInelastic; + G4HadronInelasticProcess *theKaonPlusInelastic; + G4HadronInelasticProcess *theKaonZeroLInelastic; + G4HadronInelasticProcess *theKaonZeroSInelastic; + + G4HadronInelasticProcess *theLambdaInelastic; + G4HadronInelasticProcess *theAntiLambdaInelastic; + G4HadronInelasticProcess *theSigmaMinusInelastic; + G4HadronInelasticProcess *theAntiSigmaMinusInelastic; + G4HadronInelasticProcess *theSigmaPlusInelastic; + G4HadronInelasticProcess *theAntiSigmaPlusInelastic; + G4HadronInelasticProcess *theXiZeroInelastic; + G4HadronInelasticProcess *theAntiXiZeroInelastic; + G4HadronInelasticProcess *theXiMinusInelastic; + G4HadronInelasticProcess *theAntiXiMinusInelastic; + G4HadronInelasticProcess *theOmegaMinusInelastic; + G4HadronInelasticProcess *theAntiOmegaMinusInelastic; + + G4HadronInelasticProcess *theAntiProtonInelastic; + G4HadronInelasticProcess *theAntiNeutronInelastic; + G4HadronInelasticProcess *theAntiDeuteronInelastic; + G4HadronInelasticProcess *theAntiTritonInelastic; + G4HadronInelasticProcess *theAntiHe3Inelastic; + G4HadronInelasticProcess *theAntiAlphaInelastic; + +#endif - G4VCrossSectionDataSet * thePiXS; + G4VCrossSectionDataSet * thePiPlusXS; + G4VCrossSectionDataSet * thePiMinusXS; G4VCrossSectionDataSet * theChipsHyperonInelasticXS; G4VCrossSectionDataSet * theAntiNucleonXS; G4VCrossSectionDataSet * theChipsKaonMinusXS; diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_rescattering.cc b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_rescattering.cc index 1a894d11cf5246b7ee7f62f07894c53fb68307d4..b832258ca86dd27490ad108ccfd3732d16cf24cf 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_rescattering.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_ATL_rescattering.cc @@ -39,6 +39,7 @@ #include "G4AtlasHadronPhysicsFTFP_BERT_ATL_rescattering.hh" +#include "G4Version.hh" #include "globals.hh" #include "G4ios.hh" #include "G4SystemOfUnits.hh" @@ -54,7 +55,11 @@ #include "G4ChipsKaonZeroInelasticXS.hh" #include "G4CrossSectionDataSetRegistry.hh" +#if G4VERSION_NUMBER < 1100 #include "G4HadronCaptureProcess.hh" +#else +#include "G4NeutronCaptureProcess.hh" +#endif #include "G4NeutronRadCapture.hh" #include "G4NeutronInelasticXS.hh" #include "G4NeutronCaptureXS.hh" @@ -237,7 +242,11 @@ void G4AtlasHadronPhysicsFTFP_BERT_ATL_rescattering::ConstructProcess() } } if ( ! capture ) { +#if G4VERSION_NUMBER < 1100 capture = new G4HadronCaptureProcess("nCapture"); +#else + capture = new G4NeutronCaptureProcess("nCapture"); +#endif pmanager->AddDiscreteProcess(capture); } tpdata->xsNeutronCaptureXS = (G4NeutronCaptureXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronCaptureXS::Default_Name()); diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_BIC_ATL.cc b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_BIC_ATL.cc index 54ed6b4dae7ab51f53900bd4a7ae4c1761525251..7637bf8076fa29778acec0bde3fbd909f99a8cad 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_BIC_ATL.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsFTFP_BERT_BIC_ATL.cc @@ -39,6 +39,7 @@ #include "G4AtlasHadronPhysicsFTFP_BERT_BIC_ATL.hh" +#include "G4Version.hh" #include "globals.hh" #include "G4ios.hh" #include "G4SystemOfUnits.hh" @@ -54,7 +55,11 @@ #include "G4ChipsKaonZeroInelasticXS.hh" #include "G4CrossSectionDataSetRegistry.hh" +#if G4VERSION_NUMBER < 1100 #include "G4HadronCaptureProcess.hh" +#else +#include "G4NeutronCaptureProcess.hh" +#endif #include "G4NeutronRadCapture.hh" #include "G4NeutronInelasticXS.hh" #include "G4NeutronCaptureXS.hh" @@ -264,7 +269,11 @@ void G4AtlasHadronPhysicsFTFP_BERT_BIC_ATL::ConstructProcess() } } if ( ! capture ) { +#if G4VERSION_NUMBER < 1100 capture = new G4HadronCaptureProcess("nCapture"); +#else + capture = new G4NeutronCaptureProcess("nCapture"); +#endif pmanager->AddDiscreteProcess(capture); } tpdata->xsNeutronCaptureXS = (G4NeutronCaptureXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronCaptureXS::Default_Name()); diff --git a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsQGSP_FTFP_BERT_ATL.cc b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsQGSP_FTFP_BERT_ATL.cc index d40ec7128f12901e9def8122de7a9b9a82f91ee7..5b6dfd206fba0a88b418965ed7fbbd9399ffd542 100644 --- a/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsQGSP_FTFP_BERT_ATL.cc +++ b/Simulation/G4Utilities/G4PhysicsLists/src/hadronicVariations/G4AtlasHadronPhysicsQGSP_FTFP_BERT_ATL.cc @@ -39,6 +39,7 @@ #include "G4AtlasHadronPhysicsQGSP_FTFP_BERT_ATL.hh" +#include "G4Version.hh" #include "globals.hh" #include "G4ios.hh" #include "G4SystemOfUnits.hh" @@ -54,7 +55,11 @@ #include "G4ChipsKaonZeroInelasticXS.hh" #include "G4CrossSectionDataSetRegistry.hh" +#if G4VERSION_NUMBER < 1100 #include "G4HadronCaptureProcess.hh" +#else +#include "G4NeutronCaptureProcess.hh" +#endif #include "G4NeutronRadCapture.hh" #include "G4NeutronInelasticXS.hh" #include "G4NeutronCaptureXS.hh" @@ -255,7 +260,11 @@ void G4AtlasHadronPhysicsQGSP_FTFP_BERT_ATL::ConstructProcess() } } if ( ! capture ) { +#if G4VERSION_NUMBER < 1100 capture = new G4HadronCaptureProcess("nCapture"); +#else + capture = new G4NeutronCaptureProcess("nCapture"); +#endif pmanager->AddDiscreteProcess(capture); } tpdata->xsNeutronCaptureXS = (G4NeutronCaptureXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4NeutronCaptureXS::Default_Name()); diff --git a/Simulation/G4Utilities/G4ProfilingTools/src/TestActionTimer.cxx b/Simulation/G4Utilities/G4ProfilingTools/src/TestActionTimer.cxx index 56978d37d49ce2851ed2ebca08073b4ba62c0fd6..bf40ab5dff739fb3ef9e1eb1403e090d513c3453 100644 --- a/Simulation/G4Utilities/G4ProfilingTools/src/TestActionTimer.cxx +++ b/Simulation/G4Utilities/G4ProfilingTools/src/TestActionTimer.cxx @@ -20,6 +20,7 @@ #include "TestActionTimer.h" +#include "G4Version.hh" #include "G4Run.hh" #include "G4Event.hh" #include "G4Step.hh" @@ -41,6 +42,15 @@ namespace G4UA { + // Helper for G4String changes + bool G4StrContains(const G4String& s, const char* v) + { +#if G4VERSION_NUMBER < 1100 + return s.contains(v); +#else + return G4StrUtil::contains(s, v); +#endif + } TestActionTimer::TestActionTimer() : m_report(), @@ -259,95 +269,95 @@ namespace G4UA int TestActionTimer::ClassifyVolume( G4String& nom ) const { if( nom.length() >= 17 && - nom(13,4) == "EMEC" ){ + nom.substr(13,4) == "EMEC" ){ return eEMEC; } else if ( nom.length() >= 16 && - nom(13,3) == "EMB" ){ + nom.substr(13,3) == "EMB" ){ return eEMB; } else if( nom.length() >= 25 && - nom(21,4) == "Cryo" ) { + nom.substr(21,4) == "Cryo" ) { return eCry; } else if( nom.length() >= 26 && - nom(13,13) == "FCAL::Module1"){ + nom.substr(13,13) == "FCAL::Module1"){ return eFC1; } else if( nom.length() >= 25 && - nom(13,12) == "FCAL::Module" ){ + nom.substr(13,12) == "FCAL::Module" ){ return eFC23; } else if ( nom.length() >= 17 && - nom(13,4) == "FCAL" ){ + nom.substr(13,4) == "FCAL" ){ return eFCO; } else if ( nom.length() >= 16 && - nom(13,3) == "HEC" ){ + nom.substr(13,3) == "HEC" ){ return eHEC; } else if( nom.length() >= 31 && - nom(21,10) == "Presampler" ) { + nom.substr(21,10) == "Presampler" ) { return ePre; } else if ( nom.length() >= 3 && - nom(0,3) == "LAr" ){ + nom.substr(0,3) == "LAr" ){ return eLAr; } else if( ( (nom.length() >= 4 && - nom(0,4) == "Muon") || - nom(0,4) == "MUON" ) || + nom.substr(0,4) == "Muon") || + nom.substr(0,4) == "MUON" ) || ( nom.length() >= 9 && - nom(0,9) == "DriftTube" ) || - nom.contains("MDT") || + nom.substr(0,9) == "DriftTube" ) || + G4StrContains(nom, "MDT") || ( nom.length() >= 12 && - nom(0,12) == "SensitiveGas" ) || - nom.contains("MDT") || - nom.contains("station") ){ + nom.substr(0,12) == "SensitiveGas" ) || + G4StrContains(nom, "MDT") || + G4StrContains(nom, "station") ){ return eMu; } else if ( nom.length() >= 8 && - nom(0,8) == "ITkPixel" ){ + nom.substr(0,8) == "ITkPixel" ){ return eITkPix; } else if ( nom.length() >= 8 && - nom(0,8) == "ITkStrip" ){ + nom.substr(0,8) == "ITkStrip" ){ return eITkStrip; } else if ((nom.length() >= 5 && - nom(0,5) == "Pixel") || + nom.substr(0,5) == "Pixel") || nom == "Outside Barrel Service"){ return ePx; } else if ( nom.length() >= 3 && - nom(0,3) == "SCT" ){ + nom.substr(0,3) == "SCT" ){ return eSct; } else if ( ( nom.length() >= 3 && - nom(0,3) == "TRT" ) || + nom.substr(0,3) == "TRT" ) || nom == "GasMANeg" ){ return eTrt; } else if ( nom.length() >= 4 && - nom(0,4) == "Tile"){ + nom.substr(0,4) == "Tile"){ return eHCB; } else if ( ( nom.length() >= 12 && - nom(0,12) == "InDetServMat" ) || + nom.substr(0,12) == "InDetServMat" ) || ( nom.length() >= 4 && - nom(0,4) == "IDET" ) || + nom.substr(0,4) == "IDET" ) || ( nom.length() >= 3 && - nom(0,3) == "ITK" ) || + nom.substr(0,3) == "ITK" ) || ( nom.length() >= 8 && - nom(0,8) == "BeamPipe" ) || + nom.substr(0,8) == "BeamPipe" ) || ( nom.length() >= 7 && - nom(0,7) == "Section" ) || + nom.substr(0,7) == "Section" ) || ( nom.length() >= 3 && - ( nom(0,3) == "BLM" || - nom(0,3) == "BCM" || - nom(0,3) == "PLR" ) ) || + ( nom.substr(0,3) == "BLM" || + nom.substr(0,3) == "BCM" || + nom.substr(0,3) == "PLR" ) ) || ( nom.length() >= 8 && - nom(0,8) == "BCMPrime" ) ){ + nom.substr(0,8) == "BCMPrime" ) ){ return eSev; } return eOther; diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimJobProperties.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimJobProperties.py index 7bab54ef3a31ec689baf9e5881882bb956f87cb2..4a1f52dd1fb1a663b58f41e50182b4fe793f9226 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimJobProperties.py +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimJobProperties.py @@ -78,37 +78,37 @@ class PunchThroughParamsInputFilename(JobProperty): """ Filename of the muon punch through input parametrizations file. """ statusOn = True allowedTypes = ['str'] - StoredValue = 'FastCaloSim/MC16/TFCSparam_mpt_v05.root' + StoredValue = 'FastCaloSim/MC23/TFCSparam_mpt_v06.root' class PunchThroughParamsInverseCdfFilename(JobProperty): """ Filename of the muon punch through param inverse cdf config. """ statusOn = True allowedTypes = ['str'] - StoredValue = 'FastCaloSim/MC16/TFCSparam_mpt_inverseCdf_v02.xml' + StoredValue = 'FastCaloSim/MC23/TFCSparam_mpt_inverseCdf_v03.xml' class PunchThroughParamsInversePcaFilename(JobProperty): """ Filename of the muon punch through param inverse pca config. """ statusOn = True allowedTypes = ['str'] - StoredValue = 'FastCaloSim/MC16/TFCSparam_mpt_inversePca_v02.xml' + StoredValue = 'FastCaloSim/MC23/TFCSparam_mpt_inversePca_v03.xml' class PunchThroughClassifierScalerFilename(JobProperty): """ Filename of the muon punch through classifier input variable MinMaxScaler. """ statusOn = True allowedTypes = ['str'] - StoredValue = 'FastCaloSim/MC16/TFCSparam_mpt_classScaler_v02.xml' + StoredValue = 'FastCaloSim/MC23/TFCSparam_mpt_classScaler_v03.xml' class PunchThroughClassifierNetworkFilename(JobProperty): """ Filename of the muon punch through classifier neural network. """ statusOn = True allowedTypes = ['str'] - StoredValue = 'FastCaloSim/MC16/TFCSparam_mpt_classNet_v02.json' + StoredValue = 'FastCaloSim/MC23/TFCSparam_mpt_classNet_v03.json' class PunchThroughClassifierCalibratorFilename(JobProperty): """ Filename of the muon punch through classifier calibrator. """ statusOn = True allowedTypes = ['str'] - StoredValue = 'FastCaloSim/MC16/TFCSparam_mpt_classCalib_v02.xml' + StoredValue = 'FastCaloSim/MC23/TFCSparam_mpt_classCalib_v03.xml' ##----------------------------------------------------------------------------- ## 2nd step ## Definition of the InDet flag container diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py index 4351aad7e2a98950f25db2fb7c5934dc76b2d63c..9ad4f0e1b3b23ef37f1660338fcffd2746dc57d3 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py @@ -17,9 +17,9 @@ from FastCaloSim.FastCaloSimFactoryNew import (NITimedExtrapolatorCfg, def PunchThroughClassifierCfg(flags, name="ISF_PunchThroughClassifier", **kwargs): acc = ComponentAccumulator() - kwargs.setdefault("ScalerConfigFileName" , "FastCaloSim/MC16/TFCSparam_mpt_classScaler_v02.xml" ) - kwargs.setdefault("NetworkConfigFileName" , "FastCaloSim/MC16/TFCSparam_mpt_classNet_v02.json" ) - kwargs.setdefault("CalibratorConfigFileName" , "FastCaloSim/MC16/TFCSparam_mpt_classCalib_v02.xml") + kwargs.setdefault("ScalerConfigFileName" , "FastCaloSim/MC23/TFCSparam_mpt_classScaler_v03.xml" ) + kwargs.setdefault("NetworkConfigFileName" , "FastCaloSim/MC23/TFCSparam_mpt_classNet_v03.json" ) + kwargs.setdefault("CalibratorConfigFileName" , "FastCaloSim/MC23/TFCSparam_mpt_classCalib_v03.xml") acc.setPrivateTools(CompFactory.ISF.PunchThroughClassifier(name, **kwargs)) return acc @@ -34,9 +34,9 @@ def PunchThroughToolCfg(flags, name="ISF_PunchThroughTool", **kwargs): acc.addPublicTool(PT_classifier) kwargs.setdefault("PunchThroughClassifier", acc.getPublicTool(PT_classifier.name)) - kwargs.setdefault("FilenameLookupTable" , "FastCaloSim/MC16/TFCSparam_mpt_v05.root") - kwargs.setdefault("FilenameInverseCdf" , "FastCaloSim/MC16/TFCSparam_mpt_inverseCdf_v02.xml") - kwargs.setdefault("FilenameInversePca" , "FastCaloSim/MC16/TFCSparam_mpt_inversePca_v02.xml") + kwargs.setdefault("FilenameLookupTable" , "FastCaloSim/MC23/TFCSparam_mpt_v06.root") + kwargs.setdefault("FilenameInverseCdf" , "FastCaloSim/MC23/TFCSparam_mpt_inverseCdf_v03.xml") + kwargs.setdefault("FilenameInversePca" , "FastCaloSim/MC23/TFCSparam_mpt_inversePca_v03.xml") kwargs.setdefault("PunchThroughInitiators" , [ 211, 321, 311, 310, 130, 2212, 2112] ) kwargs.setdefault("InitiatorsMinEnergy" , [ 65536, 65536, 65536, 65536, 65536, 65536, 65536] ) kwargs.setdefault("InitiatorsEtaRange" , [ -3.2, 3.2 ] ) diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_PunchThroughTools/src/PunchThroughTool.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_PunchThroughTools/src/PunchThroughTool.cxx index aa2a65d7f890c5851c2210b9925101368adc6d86..5bd562c99b9c08696afc7b2af322f360796bdb9e 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_PunchThroughTools/src/PunchThroughTool.cxx +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_PunchThroughTools/src/PunchThroughTool.cxx @@ -116,6 +116,13 @@ StatusCode ISF::PunchThroughTool::initialize() return StatusCode::FAILURE; } + //check size of infoMap for both PCA and CDF, they should be equal + if (!(m_xml_info_pca.size() == m_xml_info_cdf.size())) + { + ATH_MSG_WARNING("[ punchthrough ] size of infoMap for PCA and CDF differs! Something is wrong with input xml files."); + return StatusCode::FAILURE; + } + // retrieve the ParticleProperties handle ATH_CHECK( m_particlePropSvc.retrieve() ); @@ -593,6 +600,11 @@ ISF::ISFParticle *ISF::PunchThroughTool::getOneParticle(const ISF::ISFParticle & // get a local copy of the needed punch-through particle class PunchThroughParticle *p = m_particles.at(pdg); + // (0.) get the pca / cdf group based on pdgId and eta, eta times 100, e.g eta -4 to 4 is from eta -400 to 400 + int pcaCdfIterator = passedParamIterator(pdg, interpEta*100, m_xml_info_pca); //pca and cdf info should be of same size + + ATH_MSG_DEBUG("[punchthrough] passedPCAIterator ==> passedParamIterator = "<< pcaCdfIterator <<" , pdg = "<< pdg <<" , interpEnergy = "<< interpEnergy <<" MeV, interpEta(*100) = "<< interpEta*100); + // (1.) decide if we create a particle or an anti-particle int anti = 1; if ( p->getdoAnti() ) @@ -641,13 +653,13 @@ ISF::ISFParticle *ISF::PunchThroughTool::getOneParticle(const ISF::ISFParticle & principal_components.push_back(principal_component_3); principal_components.push_back(principal_component_4); - transformed_variables = inversePCA(principal_components); + transformed_variables = inversePCA(pcaCdfIterator,principal_components); - energy = inverseCdfTransform(transformed_variables.at(0), m_variable0_inverse_cdf); - deltaTheta = inverseCdfTransform(transformed_variables.at(1), m_variable1_inverse_cdf); - deltaPhi = inverseCdfTransform(transformed_variables.at(2), m_variable2_inverse_cdf); - momDeltaTheta = inverseCdfTransform(transformed_variables.at(3), m_variable3_inverse_cdf); - momDeltaPhi = inverseCdfTransform(transformed_variables.at(4), m_variable4_inverse_cdf); + energy = inverseCdfTransform(transformed_variables.at(0), m_variable0_inverse_cdf[pcaCdfIterator]); + deltaTheta = inverseCdfTransform(transformed_variables.at(1), m_variable1_inverse_cdf[pcaCdfIterator]); + deltaPhi = inverseCdfTransform(transformed_variables.at(2), m_variable2_inverse_cdf[pcaCdfIterator]); + momDeltaTheta = inverseCdfTransform(transformed_variables.at(3), m_variable3_inverse_cdf[pcaCdfIterator]); + momDeltaPhi = inverseCdfTransform(transformed_variables.at(4), m_variable4_inverse_cdf[pcaCdfIterator]); ATH_MSG_DEBUG("Transformed punch through kinematics: energy = "<< energy <<" MeV deltaTheta = "<< deltaTheta <<" deltaPhi = "<< deltaPhi <<" momDeltaTheta = "<< momDeltaTheta <<" momDeltaPhi = "<< momDeltaPhi ); @@ -735,56 +747,177 @@ std::vector<double> ISF::PunchThroughTool::dotProduct(const std::vector<std::vec return result; } -std::vector<double> ISF::PunchThroughTool::inversePCA(std::vector<double> &variables) const +std::vector<std::string> ISF::PunchThroughTool::str_to_list(std::string str) { - std::vector<double> transformed_variables = dotProduct(m_inverse_PCA_matrix, variables); - - std::transform (transformed_variables.begin(), transformed_variables.end(), m_PCA_means.begin(), transformed_variables.begin(), std::plus<double>()); // + means - - return transformed_variables; + std::vector<std::string> v; + std::stringstream ss(str); + while (ss.good()) { + std::string substr; + std::getline(ss, substr, ','); + v.push_back(substr); + } + return v; } -StatusCode ISF::PunchThroughTool::initializeInversePCA(const std::string & inversePCAConfigFile){ - - xmlDocPtr doc = xmlParseFile( inversePCAConfigFile.c_str() ); +int ISF::PunchThroughTool::passedParamIterator(int pid, double eta, std::vector<std::map<std::string, std::string>> mapvect) +{ + //convert the pid to absolute value and string for query + std::string pidStrSingle = std::to_string(std::abs(pid)); + //initialize holder vector for pid string + std::vector<std::string> v; + //vector to hold filtered iterator of info mapvect + std::vector<int> elemNoForPid; + //STEP 1 + //filter items matching pid first + + for (unsigned int i = 0; i < mapvect.size(); i++){ + std::string pidStr = mapvect[i].at("pidStr"); + v = str_to_list(pidStr); + if(std::find(v.begin(), v.end(),pidStrSingle)!=v.end()){ + // create a vector of positions in map satisfying (in loop) + elemNoForPid.push_back(i); + } + } + //STEP 2 + //then from that vector find the map element + //loop again this time for each of the map element, loop over the different etamins and etamaxs + std::string etaMaxsStr, etaMinsStr; + std::vector<std::string> etaMinsVect, etaMaxsVect; + std::vector<int> matchedCondVect; + double etaMinToCompare, etaMaxToCompare; + for (unsigned int i = 0; i < elemNoForPid.size(); i++){ + etaMinsStr = mapvect[elemNoForPid[i]].at("etaMins"); + etaMaxsStr = mapvect[elemNoForPid[i]].at("etaMaxs"); + etaMinsVect = str_to_list(etaMinsStr); + etaMaxsVect = str_to_list(etaMaxsStr); + std::vector<std::tuple<double, double>> etaRangesVect; + for (unsigned int j = 0; j < etaMinsVect.size(); j++){ // assume size etaMinsVect == etaMaxsVect + etaRangesVect.push_back({std::stod(etaMinsVect[j]),std::stod(etaMaxsVect[j])}); + } + //make comparison + for (unsigned int k = 0; k < etaRangesVect.size(); k++){ // assume size etaMinsVect == etaMaxsVect + etaMinToCompare = std::get<0>(etaRangesVect[k]); + etaMaxToCompare = std::get<1>(etaRangesVect[k]); + if((eta >= etaMinToCompare) && (eta < etaMaxToCompare)){ + //PASS CONDITION + //then choose the passing one and note it's iterator + matchedCondVect.push_back(elemNoForPid[i]); //in case more than 1 match (ambiguous case) + } + } + } + //STEP 3 + //always take the first element in the mapvect as the pca (in case it is ambiguos) + int matchedIt; //matchedIterator + if((matchedCondVect.size() >= 1)){ + matchedIt = matchedCondVect[0]; + } + //if none found, set the iterator to the first (provided pca is not empty) + else{ + //FAIL CONDITION + matchedIt = 0; + } + //return the match + return matchedIt; +} - ATH_MSG_INFO( "[ punchthrough ] Loading inversePCA: " << inversePCAConfigFile); +std::vector<std::map<std::string, std::string>> ISF::PunchThroughTool::getInfoMap(std::string mainNode, const std::string &xmlFilePath){ + std::vector<std::map<std::string, std::string>> xml_info; + xmlDocPtr doc = xmlParseFile( xmlFilePath.c_str() ); + //check info first for( xmlNodePtr nodeRoot = doc->children; nodeRoot != nullptr; nodeRoot = nodeRoot->next) { + if (xmlStrEqual( nodeRoot->name, BAD_CAST mainNode.c_str() )) { + for( xmlNodePtr nodeRootChild = nodeRoot->children; nodeRootChild != nullptr; nodeRootChild = nodeRootChild->next ) { + if (xmlStrEqual( nodeRootChild->name, BAD_CAST "info" )) { + if (nodeRootChild->children != NULL) { + for( xmlNodePtr infoNode = nodeRootChild->children; infoNode != nullptr; infoNode = infoNode->next) { + if(xmlStrEqual( infoNode->name, BAD_CAST "item" )){ + std::map<std::string, std::string> xml_info_item; + xml_info_item.insert({ "name", (const char*) xmlGetProp( infoNode, BAD_CAST "name" ) }); + xml_info_item.insert({ "etaMins", (const char*) xmlGetProp( infoNode, BAD_CAST "etaMins" ) }); + xml_info_item.insert({ "etaMaxs", (const char*) xmlGetProp( infoNode, BAD_CAST "etaMaxs" ) }); + xml_info_item.insert({ "pidStr", (const char*) xmlGetProp( infoNode, BAD_CAST "pidStr" ) }); + xml_info.push_back(xml_info_item); + } + } + } + } + } + } + } + return xml_info; +} - if (xmlStrEqual( nodeRoot->name, BAD_CAST "PCAinverse" )) { - for( xmlNodePtr nodePCAinverse = nodeRoot->children; nodePCAinverse != nullptr; nodePCAinverse = nodePCAinverse->next ) { - - if (xmlStrEqual( nodePCAinverse->name, BAD_CAST "PCAmatrix" )) { +std::vector<double> ISF::PunchThroughTool::inversePCA(int pcaCdfIterator, std::vector<double> &variables) const +{ + std::vector<double> transformed_variables = dotProduct(m_inverse_PCA_matrix[pcaCdfIterator], variables); - std::vector<double> PCA_matrix_row; + std::transform (transformed_variables.begin(), transformed_variables.end(), m_PCA_means[pcaCdfIterator].begin(), transformed_variables.begin(), std::plus<double>()); // + means - PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "comp_0" ) ) ); - PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "comp_1" ) ) ); - PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "comp_2" ) ) ); - PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "comp_3" ) ) ); - PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "comp_4" ) ) ); + return transformed_variables; +} - m_inverse_PCA_matrix.push_back(PCA_matrix_row); +StatusCode ISF::PunchThroughTool::initializeInversePCA(const std::string & inversePCAConfigFile){ - } + xmlDocPtr doc = xmlParseFile( inversePCAConfigFile.c_str() ); - else if (xmlStrEqual( nodePCAinverse->name, BAD_CAST "PCAmeans" )) { + ATH_MSG_INFO( "[ punchthrough ] Loading inversePCA: " << inversePCAConfigFile); - m_PCA_means.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "mean_0" ) ) ); - m_PCA_means.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "mean_1" ) ) ); - m_PCA_means.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "mean_2" ) ) ); - m_PCA_means.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "mean_3" ) ) ); - m_PCA_means.push_back( atof( (const char*) xmlGetProp( nodePCAinverse, BAD_CAST "mean_4" ) ) ); + //check info first + m_xml_info_pca = getInfoMap("PCAinverse",inversePCAConfigFile.c_str()); + + //do the saving + for (unsigned int i = 0; i < m_xml_info_pca.size(); i++) { + std::vector<std::vector<double>> PCA_matrix; + ATH_MSG_DEBUG( "[ punchthrough ] m_xml_info_pca[" << i << "].at('name') = " << m_xml_info_pca[i].at("name")); + + for( xmlNodePtr nodeRoot = doc->children; nodeRoot != nullptr; nodeRoot = nodeRoot->next) { + if (xmlStrEqual( nodeRoot->name, BAD_CAST "PCAinverse" )) { + for( xmlNodePtr nodePCAinverse = nodeRoot->children; nodePCAinverse != nullptr; nodePCAinverse = nodePCAinverse->next ) { + + if (xmlStrEqual( nodePCAinverse->name, BAD_CAST m_xml_info_pca[i].at("name").c_str() )) { + if (nodePCAinverse->children != NULL) { + for( xmlNodePtr pcaNode = nodePCAinverse->children; pcaNode != nullptr; pcaNode = pcaNode->next) { + + if (xmlStrEqual( pcaNode->name, BAD_CAST "PCAmatrix" )) { + std::vector<double> PCA_matrix_row; + PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "comp_0" ) ) ); + PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "comp_1" ) ) ); + PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "comp_2" ) ) ); + PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "comp_3" ) ) ); + PCA_matrix_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "comp_4" ) ) ); + PCA_matrix.push_back(PCA_matrix_row); + } + else if (xmlStrEqual( pcaNode->name, BAD_CAST "PCAmeans" )) { + std::vector<double> PCA_means_row; + PCA_means_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "mean_0" ) ) ); + PCA_means_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "mean_1" ) ) ); + PCA_means_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "mean_2" ) ) ); + PCA_means_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "mean_3" ) ) ); + PCA_means_row.push_back( atof( (const char*) xmlGetProp( pcaNode, BAD_CAST "mean_4" ) ) ); + m_PCA_means.push_back(PCA_means_row); + } + + } + + } + } } } } + m_inverse_PCA_matrix.push_back(PCA_matrix); } + return StatusCode::SUCCESS; } StatusCode ISF::PunchThroughTool::initializeInverseCDF(const std::string & inverseCdfConfigFile){ + std::map<double, double> variable0_inverse_cdf_row; + std::map<double, double> variable1_inverse_cdf_row; + std::map<double, double> variable2_inverse_cdf_row; + std::map<double, double> variable3_inverse_cdf_row; + std::map<double, double> variable4_inverse_cdf_row; //parse xml that contains config for inverse CDF for each of punch through particle kinematics @@ -792,28 +925,47 @@ StatusCode ISF::PunchThroughTool::initializeInverseCDF(const std::string & inver ATH_MSG_INFO( "[ punchthrough ] Loading inverse CDF: " << inverseCdfConfigFile); - for( xmlNodePtr nodeRoot = doc->children; nodeRoot != nullptr; nodeRoot = nodeRoot->next) { - - if (xmlStrEqual( nodeRoot->name, BAD_CAST "CDFMappings" )) { - for( xmlNodePtr nodeMappings = nodeRoot->children; nodeMappings != nullptr; nodeMappings = nodeMappings->next ) { - - if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable0" )) { - m_variable0_inverse_cdf = getVariableCDFmappings(nodeMappings); - } - else if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable1" )) { - m_variable1_inverse_cdf = getVariableCDFmappings(nodeMappings); - } - else if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable2" )) { - m_variable2_inverse_cdf = getVariableCDFmappings(nodeMappings); - } - else if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable3" )) { - m_variable3_inverse_cdf = getVariableCDFmappings(nodeMappings); - } - else if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable4" )) { - m_variable4_inverse_cdf = getVariableCDFmappings(nodeMappings); + //check info first + m_xml_info_cdf = getInfoMap("CDFMappings",inverseCdfConfigFile.c_str()); + + //do the saving + for (unsigned int i = 0; i < m_xml_info_cdf.size(); i++) { + ATH_MSG_DEBUG( "[ punchthrough ] m_xml_info_cdf[" << i << "].at('name') = " << m_xml_info_cdf[i].at("name")); + + for( xmlNodePtr nodeRoot = doc->children; nodeRoot != nullptr; nodeRoot = nodeRoot->next) { + if (xmlStrEqual( nodeRoot->name, BAD_CAST "CDFMappings" )) { + for( xmlNodePtr typeMappings = nodeRoot->children; typeMappings != nullptr; typeMappings = typeMappings->next ) { + if (xmlStrEqual( typeMappings->name, BAD_CAST m_xml_info_cdf[i].at("name").c_str() )) { + if (typeMappings->children != NULL) { + for( xmlNodePtr nodeMappings = typeMappings->children; nodeMappings != nullptr; nodeMappings = nodeMappings->next) { + + if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable0" )) { + variable0_inverse_cdf_row = getVariableCDFmappings(nodeMappings); + } + else if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable1" )) { + variable1_inverse_cdf_row = getVariableCDFmappings(nodeMappings); + } + else if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable2" )) { + variable2_inverse_cdf_row = getVariableCDFmappings(nodeMappings); + } + else if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable3" )) { + variable3_inverse_cdf_row = getVariableCDFmappings(nodeMappings); + } + else if (xmlStrEqual( nodeMappings->name, BAD_CAST "variable4" )) { + variable4_inverse_cdf_row = getVariableCDFmappings(nodeMappings); + } + } + + } + } } } } + m_variable0_inverse_cdf.push_back(variable0_inverse_cdf_row); + m_variable1_inverse_cdf.push_back(variable1_inverse_cdf_row); + m_variable2_inverse_cdf.push_back(variable2_inverse_cdf_row); + m_variable3_inverse_cdf.push_back(variable3_inverse_cdf_row); + m_variable4_inverse_cdf.push_back(variable4_inverse_cdf_row); } return StatusCode::SUCCESS; @@ -1319,4 +1471,4 @@ Amg::Vector3D ISF::PunchThroughTool::propagator(double theta,double phi) const ATH_MSG_DEBUG("GeoID thinks: Calo: "<< m_geoIDSvc->inside(pos, AtlasDetDescr::fAtlasCalo) <<" MS: "<< m_geoIDSvc->inside(pos,AtlasDetDescr::fAtlasMS)); return pos; -} +} \ No newline at end of file diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_PunchThroughTools/src/PunchThroughTool.h b/Simulation/ISF/ISF_FastCaloSim/ISF_PunchThroughTools/src/PunchThroughTool.h index 17706cbdb177c8ed71b5e7cc1f1321e5dd5be08d..27072a1934ca36d79bce4f17d72b06781ab0611b 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_PunchThroughTools/src/PunchThroughTool.h +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_PunchThroughTools/src/PunchThroughTool.h @@ -114,7 +114,7 @@ namespace ISF { Amg::Vector3D propagator(double theta, double phi) const; //apply the inverse PCA transform - std::vector<double> inversePCA(std::vector<double> &variables) const; + std::vector<double> inversePCA(int pcaCdfIterator, std::vector<double> &variables) const; //apply the inverse CDF trainsform static double inverseCdfTransform(double variable, std::map<double, double> inverse_cdf_map) ; @@ -131,6 +131,15 @@ namespace ISF { //apply eta interpolation double interpolateEta(const double &eta, CLHEP::HepRandomEngine* rndmEngine) const; + //helper function to convert comma separated string into vector + static std::vector<std::string> str_to_list(std::string str); + + //get the infoMap from xml file based on the xmlpathname and also name of mainNode + std::vector<std::map<std::string,std::string>> getInfoMap(std::string mainNode, const std::string &xmlFilePath); + + //decide the pca / cdf part to read based on pdgId and eta + static int passedParamIterator(int pid, double eta, std::vector<std::map<std::string,std::string>> mapvect); + //load inverse quantile transformer from XML StatusCode initializeInverseCDF(const std::string & quantileTransformerConfigFile); @@ -206,15 +215,21 @@ namespace ISF { /** beam pipe radius */ DoubleProperty m_beamPipe{this, "BeamPipeRadius", 500.}; - std::vector<std::vector<double>> m_inverse_PCA_matrix; - std::vector<double> m_PCA_means; + /** pca vectors */ + std::vector<std::vector<std::vector<double>>> m_inverse_PCA_matrix; + std::vector<std::vector<double>> m_PCA_means; + + /** infoMaps */ + std::vector<std::map<std::string, std::string>> m_xml_info_pca; + std::vector<std::map<std::string, std::string>> m_xml_info_cdf; - std::map<double, double> m_variable0_inverse_cdf; - std::map<double, double> m_variable1_inverse_cdf; - std::map<double, double> m_variable2_inverse_cdf; - std::map<double, double> m_variable3_inverse_cdf; - std::map<double, double> m_variable4_inverse_cdf; + /** (vector of map) for CDF mappings */ + std::vector<std::map<double, double>> m_variable0_inverse_cdf; + std::vector<std::map<double, double>> m_variable1_inverse_cdf; + std::vector<std::map<double, double>> m_variable2_inverse_cdf; + std::vector<std::map<double, double>> m_variable3_inverse_cdf; + std::vector<std::map<double, double>> m_variable4_inverse_cdf; }; } -#endif +#endif \ No newline at end of file diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/src/G4HadIntProcessor.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/src/G4HadIntProcessor.cxx index 77831c1b5debce97dcfab24820b9c502a7f2f2bd..00633af3b5f89107344b6b34ab9a9183611459f8 100644 --- a/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/src/G4HadIntProcessor.cxx +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/src/G4HadIntProcessor.cxx @@ -45,7 +45,6 @@ #include "globals.hh" #include "G4CrossSectionDataStore.hh" -#include "G4HadronElasticDataSet.hh" #include "G4Element.hh" #include "G4ElementVector.hh" #include "G4IsotopeVector.hh" diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py b/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py index c7a7b935093ea09fe2d6212cf4b99966e4c6ca9b..37c98bc985eca31596eff0ae608070dbd8ee920f 100644 --- a/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py +++ b/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py @@ -146,4 +146,8 @@ def OverlayMainContentCfg(configFlags): acc.merge(CopySCT_ClusterContainerCfg(configFlags)) acc.merge(CopyTRT_DriftCircleContainerCfg(configFlags)) + # Add in-file MetaData + from xAODMetaDataCnv.InfileMetaDataConfig import InfileMetaDataCfg + acc.merge(InfileMetaDataCfg(configFlags, "RDO")) + return acc diff --git a/Simulation/SimuJobTransforms/python/CommonSimulationSteering.py b/Simulation/SimuJobTransforms/python/CommonSimulationSteering.py index cbc2e2017abfa304f117a655d8102e43a02a4cc8..dca7fd0764a148073c6f9a37e1de973395263623 100644 --- a/Simulation/SimuJobTransforms/python/CommonSimulationSteering.py +++ b/Simulation/SimuJobTransforms/python/CommonSimulationSteering.py @@ -141,4 +141,8 @@ def CommonSimulationCfg(flags, log): from PerfMonComps.PerfMonCompsConfig import PerfMonMTSvcCfg cfg.merge(PerfMonMTSvcCfg(flags)) + # Add in-file MetaData + from xAODMetaDataCnv.InfileMetaDataConfig import InfileMetaDataCfg + cfg.merge(InfileMetaDataCfg(flags, "HITS", AcceptAlgs=AcceptAlgNames)) + return cfg diff --git a/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py b/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py index 8bb28b86266e48a56f443deb06d2064e01615ac8..0f3beba26ef703ac57a94f04a46c2f47cccd0963 100644 --- a/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py @@ -224,6 +224,10 @@ def fromRunArgs(runArgs): from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg cfg.merge( OutputStreamCfg(flags, "HITS", ItemList=getStreamHITS_ItemList(flags), disableEventTag="xAOD::EventInfo#EventInfo" not in flags.Input.TypedCollections) ) + # Add in-file MetaData + from xAODMetaDataCnv.InfileMetaDataConfig import InfileMetaDataCfg + cfg.merge(InfileMetaDataCfg(flags, "HITS")) + # Post-include processPostInclude(runArgs, flags, cfg) diff --git a/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py b/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py index 443c03f4eb06b1ed021a8857e09ba662f4a80772..124fa65d3a558dd66310820ea402377da80c46de 100644 --- a/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py @@ -70,6 +70,10 @@ def fromRunArgs(runArgs): cfg.merge(OutputStreamCfg(flags, 'HITS', disableEventTag="xAOD::EventInfo#EventInfo" not in flags.Input.TypedCollections)) cfg.getEventAlgo('OutputStreamHITS').TakeItemsFromInput = True + # Add in-file MetaData + from xAODMetaDataCnv.InfileMetaDataConfig import InfileMetaDataCfg + cfg.merge(InfileMetaDataCfg(flags, "HITS")) + # Post-include processPostInclude(runArgs, flags, cfg) diff --git a/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.cxx b/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.cxx index 11a815b49ecd5bcb8c49e7269180139838e1c9e6..dbc02fbadf30ac886b73e307c629680cb06d071e 100644 --- a/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.cxx +++ b/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.cxx @@ -71,8 +71,8 @@ StatusCode TruthClosureCheck::sanityCheck(const HepMC::GenEvent& event) const { } #ifdef HEPMC3 -void TruthClosureCheck::printGenVertex(HepMC::ConstGenVertexPtr origVertex, - HepMC::ConstGenVertexPtr resetVertex) const +void TruthClosureCheck::printGenVertex(const HepMC::ConstGenVertexPtr& origVertex, + const HepMC::ConstGenVertexPtr& resetVertex) const { ATH_MSG_INFO("----------------------------------"); ATH_MSG_INFO("Original Vertex:"); @@ -136,8 +136,8 @@ void TruthClosureCheck::printGenVertex(const HepMC::GenVertex& origVertex, #endif #ifdef HEPMC3 -StatusCode TruthClosureCheck::compareGenVertex(HepMC::ConstGenVertexPtr origVertex, - HepMC::ConstGenVertexPtr resetVertex) const +StatusCode TruthClosureCheck::compareGenVertex(const HepMC::ConstGenVertexPtr& origVertex, + const HepMC::ConstGenVertexPtr& resetVertex) const { if (!origVertex && !resetVertex) return StatusCode::SUCCESS; if (!origVertex || !resetVertex) return StatusCode::FAILURE; @@ -292,8 +292,8 @@ StatusCode TruthClosureCheck::compareMomenta(const HepMC::FourVector& origMoment } #ifdef HEPMC3 -StatusCode TruthClosureCheck::compareGenParticle(HepMC::ConstGenParticlePtr origParticle, - HepMC::ConstGenParticlePtr resetParticle) const +StatusCode TruthClosureCheck::compareGenParticle(const HepMC::ConstGenParticlePtr& origParticle, + const HepMC::ConstGenParticlePtr& resetParticle) const { if (!origParticle && !resetParticle) return StatusCode::SUCCESS; if (!origParticle || !resetParticle) return StatusCode::FAILURE; diff --git a/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.h b/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.h index 653dcdf56eab0bf3bd3ea0ec63002d67088fbb1d..f9d4f81ecc5ea77f2461d04fc50edfc385ecb048 100644 --- a/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.h +++ b/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.h @@ -23,12 +23,12 @@ public: private: StatusCode sanityCheck(const HepMC::GenEvent& event) const; #ifdef HEPMC3 - StatusCode compareGenVertex(HepMC::ConstGenVertexPtr origVertex, - HepMC::ConstGenVertexPtr resetVertex) const; - StatusCode compareGenParticle(HepMC::ConstGenParticlePtr origParticle, - HepMC::ConstGenParticlePtr resetParticle) const; - void printGenVertex(HepMC::ConstGenVertexPtr origVertex, - HepMC::ConstGenVertexPtr resetVertex) const; + StatusCode compareGenVertex(const HepMC::ConstGenVertexPtr& origVertex, + const HepMC::ConstGenVertexPtr& resetVertex) const; + StatusCode compareGenParticle(const HepMC::ConstGenParticlePtr& origParticle, + const HepMC::ConstGenParticlePtr& resetParticle) const; + void printGenVertex(const HepMC::ConstGenVertexPtr& origVertex, + const HepMC::ConstGenVertexPtr& resetVertex) const; #else StatusCode compareGenVertex(const HepMC::GenVertex& origVertex, const HepMC::GenVertex& resetVertex) const; diff --git a/TileCalorimeter/TileExample/TileRecEx/share/jobOptions_TileCalibRec.py b/TileCalorimeter/TileExample/TileRecEx/share/jobOptions_TileCalibRec.py index 52d3edd92a857355dba0223a009d19e1de0ca1bf..5e4a3507cc3b339722fd3122d50646af4f1aca9a 100644 --- a/TileCalorimeter/TileExample/TileRecEx/share/jobOptions_TileCalibRec.py +++ b/TileCalorimeter/TileExample/TileRecEx/share/jobOptions_TileCalibRec.py @@ -531,7 +531,7 @@ else: if not 'doTileRawChannelTimeMonTool' in dir(): - doTileRawChannelTimeMonTool = (TileRunType == 2) and TilePhysTiming and RUN2 and doTileFit + doTileRawChannelTimeMonTool = (TileRunType == 2) and TilePhysTiming and (RUN2 or RUN3) and doTileFit from IOVDbSvc.CondDB import conddb @@ -633,7 +633,30 @@ jobproperties.print_JobProperties('tree&value') #============================================================= include( "TileConditions/TileConditions_jobOptions.py" ) tileInfoConfigurator.OutputLevel = OutputLevel -# use correct timing constants for different run types + +if RUN3 and 'SpecialDemoShape' in dir(): + if TileRunType == 2: + # disable special treatment for demo in laser runs for the moment + SpecialDemoShape = -1 + elif TileRunType == 8: + # put CIS pulse shape for Demo in laser and physics structures + SpecialDemoShape = 3 + tileInfoConfigurator.filename_lo_las = "pulselo_cis_demo_100.dat" + tileInfoConfigurator.filename_hi_las = "pulsehi_cis_demo_100.dat" + tileInfoConfigurator.filename_lo_las_der = "dpulselo_cis_demo_100.dat" + tileInfoConfigurator.filename_hi_las_der = "dpulsehi_cis_demo_100.dat" + tileInfoConfigurator.filename_lo_phys = "pulselo_cis_demo_5p2.dat" + tileInfoConfigurator.filename_hi_phys = "pulsehi_cis_demo_5p2.dat" + tileInfoConfigurator.filename_lo_phys_der = "dpulselo_cis_demo_5p2.dat" + tileInfoConfigurator.filename_hi_phys_der = "dpulsehi_cis_demo_5p2.dat" + else: + # put physics pulse shape for Demo in laser structures + SpecialDemoShape = 2 + tileInfoConfigurator.filename_lo_las = "pulselo_phys_demo.dat" + tileInfoConfigurator.filename_hi_las = "pulsehi_phys_demo.dat" + tileInfoConfigurator.filename_lo_las_der = "dpulselo_phys_demo.dat" + tileInfoConfigurator.filename_hi_las_der = "dpulsehi_phys_demo.dat" + printfunc (tileInfoConfigurator) #============================================================ @@ -727,6 +750,8 @@ if doTileFit and tileRawChannelBuilderFitFilter: tileRawChannelBuilderFitFilter.MaxTimeFromPeak = 250.0; # recover behaviour of rel 13.0.30 tileRawChannelBuilderFitFilter.RMSChannelNoise = 3; tileRawChannelBuilderFitFilter.UseDSPCorrection = not TileBiGainRun + if 'SpecialDemoShape' in dir() and SpecialDemoShape is not None: + tileRawChannelBuilderFitFilter.SpecialDemoShape = SpecialDemoShape printfunc (tileRawChannelBuilderFitFilter) diff --git a/TileCalorimeter/TileRec/TileRec/TileAANtuple.h b/TileCalorimeter/TileRec/TileRec/TileAANtuple.h index 8ddb3fe6baf72228a19508b528e0669277a61ffe..9d70592ea1b29b0d7c62ebe2c35c335ba1f69dd7 100644 --- a/TileCalorimeter/TileRec/TileRec/TileAANtuple.h +++ b/TileCalorimeter/TileRec/TileRec/TileAANtuple.h @@ -76,7 +76,7 @@ #define N_DMUS 16 #define N_CHANS 48 #define N_SAMPLES 7 -#define N_RODS 65 +#define N_RODS 129 #define N_CISPAR 110 #define N_TMDBCHANS 8 // 4 in EB and 8 in B #define N_TMDBDECISIONS 4 diff --git a/TileCalorimeter/TileRec/src/TileAANtuple.cxx b/TileCalorimeter/TileRec/src/TileAANtuple.cxx index bd275c83dd92a3d100876817ae584abcf30b59ec..13e82875d139e52bbdca307ea77a99fa9f6f5e8d 100644 --- a/TileCalorimeter/TileRec/src/TileAANtuple.cxx +++ b/TileCalorimeter/TileRec/src/TileAANtuple.cxx @@ -1091,9 +1091,14 @@ TileAANtuple::storeDigits(const EventContext& ctx } /// Store ROD header info from collection - /// (should be just one per ROD, i.e. 4 subsequent drawers give the same ROD number) - int rod = (rosL*N_MODULES + drawer) >> 2; - + /// should be just one per ROD, i.e. either 64(in RUN1) or 128(starting from RUN2) different values + int rod = (rosL*N_MODULES + drawer); + if (N_RODS<128) { + rod >>= 2; + } else if (N_RODS<256) { + rod = (((rod>>2)<<1) | (rod&1)); + } + m_l1ID[rod] = (*itColl)->getLvl1Id(); m_l1Type[rod] = (*itColl)->getLvl1Type(); m_evType[rod] = (*itColl)->getDetEvType(); @@ -1640,10 +1645,11 @@ void TileAANtuple::TRIGGER_addBranch(void) { m_ntuplePtr->Branch("OFLunits",&m_rchUnit,"OFLunits/S"); if (m_bsInput) { - m_ntuplePtr->Branch("L1ID", m_l1ID, "L1ID[65]/I"); - m_ntuplePtr->Branch("L1Type", m_l1Type, "L1Type[65]/I"); - m_ntuplePtr->Branch("EvType", m_evType, "EvType[65]/I"); - m_ntuplePtr->Branch("EvBCID", m_evBCID, "EvBCID[65]/I"); + std::string dim = "[" + std::to_string(N_RODS) + "]/I"; + m_ntuplePtr->Branch("L1ID", m_l1ID, NAME2("L1ID", dim)); + m_ntuplePtr->Branch("L1Type", m_l1Type, NAME2("L1Type",dim)); + m_ntuplePtr->Branch("EvType", m_evType, NAME2("EvType",dim)); + m_ntuplePtr->Branch("EvBCID", m_evBCID, NAME2("EvBCID",dim)); } } @@ -1706,7 +1712,7 @@ void TileAANtuple::LASER_addBranch(void) { const char* gainnames[2] = {"LG","HG"}; const char* channames[16] = {"Diode0","Diode1","Diode2","Diode3","Diode4","Diode5","Diode6","Diode7", - "Diode8","Diode9","PMT1","ExtCIS0","IntCIS","DiodePhocal","PMT2","ExtCIS1"}; + "Diode8","Diode9","ExiCIS0","IntCIS","DiodePhocal","ExtCIS1","PMT1","PMT2"}; m_ntuplePtr->Branch("LASER_BCID", &m_las_BCID, "LASER_BCID/I"); @@ -1872,6 +1878,12 @@ void TileAANtuple::DIGI_addBranch(void) imax = 2; } + if (!m_mfRawChannelContainerKey.empty()) { + int size = sample_size * (imax-imin); + m_arrays->m_eMF = (float *) malloc(size*sizeof(float)); + m_arrays->m_tMF = (float *) malloc(size*sizeof(float)); + } + for (int i = imin; i < imax; ++i) { std::string f_suf(suf[i]); @@ -1892,13 +1904,15 @@ void TileAANtuple::DIGI_addBranch(void) } else { + std::string samples = "[4][64][48][" + std::to_string(m_nSamples) + "]/S"; + if (!m_fltDigitsContainerKey.empty()) { if (!m_digitsContainerKey.empty()) { // should use different names for two containers - m_ntuplePtr->Branch(NAME2("sampleFlt",f_suf), &(m_arrays->m_sample[is]), NAME5("sampleFlt", f_suf,"[4][64][48][",std::to_string(m_nSamples),"]/S")); // short + m_ntuplePtr->Branch(NAME2("sampleFlt",f_suf), &(m_arrays->m_sample[is]), NAME3("sampleFlt", f_suf, samples)); // short m_ntuplePtr->Branch(NAME2("gainFlt",f_suf), m_arrays->m_gainFlt[ir], NAME3("gainFlt", f_suf,"[4][64][48]/S")); // short } else { - m_ntuplePtr->Branch(NAME2("sample",f_suf), &(m_arrays->m_sampleFlt[is]), NAME5("sampleFlt", f_suf,"[4][64][48][",std::to_string(m_nSamples),"]/S")); // short + m_ntuplePtr->Branch(NAME2("sample",f_suf), &(m_arrays->m_sampleFlt[is]), NAME3("sampleFlt", f_suf, samples)); // short if (!m_rawChannelContainerKey.empty() || !m_fitRawChannelContainerKey.empty() || !m_fitcRawChannelContainerKey.empty() @@ -1917,7 +1931,7 @@ void TileAANtuple::DIGI_addBranch(void) } if (!m_digitsContainerKey.empty()) { - m_ntuplePtr->Branch(NAME2("sample",f_suf), &(m_arrays->m_sample[is]), NAME5("sample", f_suf,"[4][64][48][",std::to_string(m_nSamples),"]/S")); // short + m_ntuplePtr->Branch(NAME2("sample",f_suf), &(m_arrays->m_sample[is]), NAME3("sample", f_suf, samples)); // short m_ntuplePtr->Branch(NAME2("gain",f_suf), m_arrays->m_gain[ir], NAME3("gain", f_suf,"[4][64][48]/S")); // short if (m_bsInput) { @@ -1999,8 +2013,9 @@ void TileAANtuple::DIGI_addBranch(void) } if (!m_mfRawChannelContainerKey.empty()) { - m_ntuplePtr->Branch(NAME2("eMF",f_suf), &(m_arrays->m_eMF[is]), NAME3("eMF",f_suf,NAME3("[4][64][48][",std::to_string(m_nSamples),"]/F"))); // float - m_ntuplePtr->Branch(NAME2("tMF",f_suf), &(m_arrays->m_tMF[is]), NAME3("tMF",f_suf,NAME3("[4][64][48][",std::to_string(m_nSamples),"]/F"))); // float + std::string f_samples = "[4][64][48][" + std::to_string(m_nSamples) + "]/F"; + m_ntuplePtr->Branch(NAME2("eMF",f_suf), &(m_arrays->m_eMF[is]), NAME3("eMF",f_suf,f_samples)); // float + m_ntuplePtr->Branch(NAME2("tMF",f_suf), &(m_arrays->m_tMF[is]), NAME3("tMF",f_suf,f_samples)); // float m_ntuplePtr->Branch(NAME2("chi2MF",f_suf), m_arrays->m_chi2MF[ir], NAME3("chi2MF",f_suf,"[4][64][48]/F")); // float m_ntuplePtr->Branch(NAME2("pedMF",f_suf), m_arrays->m_pedMF[ir], NAME3("pedMF",f_suf,"[4][64][48]/F")); // float } diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h index 3014037e72a2ee913e4b19685a4977bdb2d19067..ea9aaab2e0e14d6fc3a40324f42964396d3a8882 100644 --- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h +++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h @@ -179,6 +179,11 @@ class TileRawChannelBuilder: public AthAlgTool { ServiceHandle<TileCablingSvc> m_cablingSvc{ this, "TileCablingSvc", "TileCablingSvc", "The Tile cabling service"}; + const TileCablingService* m_cabling; //!< TileCabling instance + + Gaudi::Property<std::vector<int>> m_demoFragIDs{this, + "DemoFragIDs", {}, "List of Tile frag IDs with new electronics (demonstrator)"}; + int m_trigType; bool m_idophys; // Phys fitting bool m_idolas; // Laser fitting diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h index 8f8afc1ce795ec367e3987ae5ead642c2cf80c03..9b3bdd91ed2b2e93006faabd8b3460ac54e979cf 100644 --- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h +++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h @@ -106,6 +106,7 @@ class TileRawChannelBuilderFitFilter: public TileRawChannelBuilder { const TilePulseShapesStruct* m_pulseShapes; bool m_disableNegativeAmp; + int m_specialDemoShape; ToolHandle<TileCondToolNoiseSample> m_tileToolNoiseSample{this, "TileCondToolNoiseSample", "TileCondToolNoiseSample", "Tile sample noise tool"}; diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx index c382c85ec1a704615b9f97044fdd427d1462bcb4..03bca77f04b16eb12d91f770d71fa2379cf8f1ca 100644 --- a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx +++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx @@ -164,13 +164,35 @@ StatusCode TileRawChannelBuilder::initialize() { ATH_CHECK( m_cablingSvc.retrieve()); - const TileCablingService* cabling = m_cablingSvc->cablingService(); - if (!cabling) { + m_cabling = m_cablingSvc->cablingService(); + if (!m_cabling) { ATH_MSG_ERROR( "Unable to retrieve TileCablingService" ); return StatusCode::FAILURE; } - m_notUpgradeCabling = (cabling->getCablingType() != TileCablingService::UpgradeABC); + m_notUpgradeCabling = (m_cabling->getCablingType() != TileCablingService::UpgradeABC); + + int runPeriod = m_cabling->runPeriod(); + std::ostringstream os; + if (runPeriod==3) { + if ( m_demoFragIDs.empty() ) { + std::vector<int> v = { 0x10d }; // LBA14 is demonstrator in RUN3 + m_demoFragIDs = v; + } + os << " in RUN3"; + } + + if ( !m_demoFragIDs.empty() ) { + std::sort(m_demoFragIDs.begin(),m_demoFragIDs.end()); + os << " (frag IDs):"; + for (int fragID : m_demoFragIDs) { + if (fragID>0) + os << " 0x" << std::hex << fragID << std::dec; + else + os << " " << fragID; + } + ATH_MSG_INFO("Enable special treatment for demonstrator modules" << os.str()); + } if (m_calibrateEnergy) { ATH_CHECK( m_tileToolEmscale.retrieve() ); diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx index cf08b6c5bf55b230b8cc53d8ce5c2df9229842b9..bbdcd9b9624f13f92e771327291ac3be138977e0 100644 --- a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx +++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx @@ -70,6 +70,8 @@ TileRawChannelBuilderFitFilter::TileRawChannelBuilderFitFilter(const std::string declareProperty("MaxTimeFromPeak",m_maxTimeFromPeak = 250.0); declareProperty("DisableNegativeAmp",m_disableNegativeAmp = false); + + declareProperty("SpecialDemoShape",m_specialDemoShape = -1); // if >=0 - pulse shape for Demo is stored in non-default structures } /** @@ -127,6 +129,21 @@ StatusCode TileRawChannelBuilderFitFilter::initialize() { << " min_tau=" << m_minTau << " max_tau=" << m_maxTau ); + if ( !m_demoFragIDs.empty() ) { + switch (m_specialDemoShape) { + case 1: + ATH_MSG_DEBUG( "Demonstrator channels use pulse shape from physics structures"); break; + case 2: + ATH_MSG_DEBUG( "Demonstrator channels use pulse shape from laser structures"); break; + case 3: + ATH_MSG_DEBUG( "Demonstrator channels use pulse shape from laser(for 100pF) and physics(for 5.2pF) structures"); break; + case 8: + ATH_MSG_DEBUG( "Demonstrator channels use pulse shape from cis structures"); break; + default: + ATH_MSG_DEBUG( "Demonstrator channels use the same pulse shape as legacy"); break; + } + } + // Speedup for physics processing (max_iter=1): // read initial pulse shapes into arrays m_fnParameters[0] = 0.0; @@ -162,7 +179,7 @@ StatusCode TileRawChannelBuilderFitFilter::initialize() { break; case 3: msg(MSG::DEBUG) << " noise for all channels from Conditions DB "; - if (TileCablingService::getInstance()->getTestBeam()) { + if (m_cabling->getTestBeam()) { const EventContext &ctx = Gaudi::Hive::currentContext(); msg(MSG::DEBUG) << " rmsLow(LBA01/0) = " << m_tileToolNoiseSample->getHfn(20, 0, TileID::LOWGAIN, TileRawChannelUnit::ADCcounts, ctx) << " rmsHi(LBA01/0) = " << m_tileToolNoiseSample->getHfn(20, 0, TileID::HIGHGAIN, TileRawChannelUnit::ADCcounts, ctx) @@ -281,6 +298,8 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit int drawer = m_tileHWID->drawer(adcId); unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer); + bool demo = (m_specialDemoShape > 0) && std::binary_search(m_demoFragIDs.begin(), m_demoFragIDs.end(), (ros << 8) | drawer); + // Estimate channel noise double rms = 0.0; int noise_channel = (ros < 3) ? channel : channel + 48; @@ -346,7 +365,8 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit << " idolas=" << m_idolas << " idocis=" << m_idocis << " CISchan=" << m_cischan - << " capdaq=" << m_capdaq ); + << " capdaq=" << m_capdaq + << " demoCh=" << ((demo)?"true":"false") ); std::vector<float> samples = digit->samples(); samples.erase(samples.begin(),samples.begin()+m_firstSample); @@ -461,7 +481,15 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit const std::vector<double>* tdleak = &m_dummy; const std::vector<double>* dleak = &m_dummy; - if (m_idocis && ((m_cischan == -1) || (channel == m_cischan))) { // CIS pulse + + bool docis = m_idocis; + bool dolas = m_idolas; + if (demo) { // special treatment for Demo drawers - select different pulse shape + dolas = ((m_specialDemoShape == 2) || (m_specialDemoShape == 3 && m_capdaq > 10)); + docis = (m_specialDemoShape == 8); + } + + if (docis && ((m_cischan == -1) || (channel == m_cischan) || demo)) { // CIS pulse if (igain == 0) { // low gain if (m_capdaq > 10) { // 100 pF capacitor tpulse = &(m_pulseShapes->m_tlcis); @@ -504,7 +532,7 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit } } } else { - if (m_idolas) { // laser pulse + if (dolas) { // laser pulse if (igain == 0) { // low gain tpulse = &(m_pulseShapes->m_tllas); ypulse = &(m_pulseShapes->m_yllas); @@ -531,6 +559,11 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit } } + if (demo) { + docis = false; // never fit demo channels as CIS with signal and leakage pulses + dolas = (m_idocis || m_idolas); // use laser option, i.e. just single pulse without leakage pulse + } + // Variables used for iterative fitting double gval, gpval, sy, syg, sygp, sg, sgp, sgg, sgpgp, sggp, serr, err2; double dgg0, dgg, dggp, dgpgp, dyg, dygp, dg, dc, xd; @@ -557,7 +590,7 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit m_fnParameters[2] = 1.0; // CIS events linear fit - if (m_idocis && ((m_cischan == -1) || (channel == m_cischan))) { + if (docis && ((m_cischan == -1) || (channel == m_cischan))) { ATH_MSG_VERBOSE ( "Fit time with leakage" ); // CIS Part (A): fit for time using leakage pulse sllp = 0.0; @@ -810,7 +843,7 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit serr = 0.0; for (int isamp = 0; isamp < nfit; ++isamp) { - if (!m_idolas) { + if (!dolas) { // Use initial values for speeding up the physics events int jsamp = (int) xvec[isamp] - delta_peak; if (jsamp < 0) @@ -891,7 +924,7 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit serr = 0.0; for (int isamp = 0; isamp < nfit; ++isamp) { - if ((niter == 1) && (!m_idolas)) { + if ((niter == 1) && (!dolas)) { // Use initial function values stored in array for niter=1 physics // XXX: double->int int jsamp = (int) xvec[isamp] - delta_peak; @@ -1078,7 +1111,7 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit // NGO never use the 2par fit result if non-pedestal event was detected! // if ((fabs(fixchi2) <= fabs(p_chi2)) -// && !(m_idocis && ((m_cischan == -1) || (channel == m_cischan)))) { +// && !(docis && ((m_cischan == -1) || (channel == m_cischan)))) { // /* results from 2-par fit */ // p_time = fixtau; // p_pedestal = fixped; @@ -1111,7 +1144,7 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit m_fnParameters[2] = 1.0; // CIS events linear fit - if (m_idocis && ((m_cischan == -1) || (channel == m_cischan))) { + if (docis && ((m_cischan == -1) || (channel == m_cischan))) { if (!fixedTime) { ATH_MSG_VERBOSE ( "Fit time with leakage" ); // CIS Part (A): fit for time using leakage pulse diff --git a/TileCalorimeter/TileTBRec/src/TileTBDump.cxx b/TileCalorimeter/TileTBRec/src/TileTBDump.cxx index 74f8e68b367261ef9fdbd5c3f5cdd4f107709eee..80393b1432268850b3529fdab0e5adc688773a96 100755 --- a/TileCalorimeter/TileTBRec/src/TileTBDump.cxx +++ b/TileCalorimeter/TileTBRec/src/TileTBDump.cxx @@ -1133,12 +1133,12 @@ void TileTBDump::dump_digi(unsigned int subdet_id, const uint32_t* roddata, unsi " PhotoDiode 7", " PhotoDiode 8", " PhotoDiode 9", - " PMT 0", " External CIS 0", " Internal CIS", " Diode Phocal", - " PMT 1", " External CIS 1", + " PMT 0", + " PMT 1", " TDC 1 & 0" }; diff --git a/Tools/PROCTools/data/q443_ESD_diff-exclusion-list.txt b/Tools/PROCTools/data/q443_ESD_diff-exclusion-list.txt new file mode 100644 index 0000000000000000000000000000000000000000..96cf95550fd89a566367f42d0ea486f665bef665 --- /dev/null +++ b/Tools/PROCTools/data/q443_ESD_diff-exclusion-list.txt @@ -0,0 +1,8 @@ +index_ref +(.*)_mems(.*) +(.*)_timings(.*) + +# Ignore most b-tagging outside the reference tagger, DL1dv00 +xAOD::BTagging(?!.*PFlow.*DL1dv00_p.*) +# Also ignore some b-tagging on tracking +xAOD::TrackParticleAuxContainer.*\.btagIp_.* diff --git a/Tracking/TrkConfig/python/TrkAmbiguityProcessorConfig.py b/Tracking/TrkConfig/python/TrkAmbiguityProcessorConfig.py index af8276faa5ceff67fd9754c9a8224a2d577ace41..c394c40f8675b81e045a6476bdda57f58373ccad 100644 --- a/Tracking/TrkConfig/python/TrkAmbiguityProcessorConfig.py +++ b/Tracking/TrkConfig/python/TrkAmbiguityProcessorConfig.py @@ -254,7 +254,7 @@ def DenseEnvironmentsAmbiguityScoreProcessorToolCfg( kwargs.setdefault( "SplitProbTool", (acc.popToolsAndMerge(NnPixelClusterSplitProbToolCfg(flags)) - if flags.InDet.Tracking.doPixelClusterSplitting else None)) + if flags.Tracking.doPixelClusterSplitting else None)) if "AssociationTool" not in kwargs: from InDetConfig.InDetAssociationToolsConfig import ( @@ -273,9 +273,9 @@ def DenseEnvironmentsAmbiguityScoreProcessorToolCfg( if flags.InDet.Tracking.ActiveConfig.useTIDE_Ambi: kwargs.setdefault("sharedProbCut", - flags.InDet.Tracking.pixelClusterSplitProb1) + flags.Tracking.pixelClusterSplitProb1) kwargs.setdefault("sharedProbCut2", - flags.InDet.Tracking.pixelClusterSplitProb2) + flags.Tracking.pixelClusterSplitProb2) kwargs.setdefault( "SplitClusterMap_new", f"SplitClusterAmbiguityMap{flags.InDet.Tracking.ActiveConfig.extension}") @@ -328,7 +328,7 @@ def ITkDenseEnvironmentsAmbiguityScoreProcessorToolCfg( kwargs.setdefault( "SplitProbTool", (acc.popToolsAndMerge(ITkTruthPixelClusterSplitProbToolCfg(flags)) - if flags.ITk.Tracking.doPixelClusterSplitting else None)) + if flags.Tracking.doPixelClusterSplitting else None)) if "AssociationTool" not in kwargs: from InDetConfig.InDetAssociationToolsConfig import ( @@ -342,10 +342,8 @@ def ITkDenseEnvironmentsAmbiguityScoreProcessorToolCfg( kwargs.setdefault("AssociationToolNotGanged", acc.popToolsAndMerge( PRDtoTrackMapToolCfg(flags))) - kwargs.setdefault("sharedProbCut", - flags.ITk.Tracking.pixelClusterSplitProb1) - kwargs.setdefault("sharedProbCut2", - flags.ITk.Tracking.pixelClusterSplitProb2) + kwargs.setdefault("sharedProbCut", flags.Tracking.pixelClusterSplitProb1) + kwargs.setdefault("sharedProbCut2", flags.Tracking.pixelClusterSplitProb2) kwargs.setdefault("SplitClusterMap_new", 'SplitClusterAmbiguityMap' + flags.ITk.Tracking.ActiveConfig.extension) kwargs.setdefault("AssociationMapName", 'ITkPRDToTrackMap' + diff --git a/Tracking/TrkConfig/python/TrkConfigFlags.py b/Tracking/TrkConfig/python/TrkConfigFlags.py index ffa2a6e28ccba78cb7acedb557a59a03c88c9172..04f095b7807c13452f5018d3b54f0dc230f753d3 100644 --- a/Tracking/TrkConfig/python/TrkConfigFlags.py +++ b/Tracking/TrkConfig/python/TrkConfigFlags.py @@ -3,11 +3,13 @@ from AthenaConfiguration.AthConfigFlags import AthConfigFlags from AthenaConfiguration.Enums import BeamType, LHCPeriod, FlagEnum + class TrackFitterType(FlagEnum): DistributedKalmanFilter = 'DistributedKalmanFilter' GlobalChi2Fitter = 'GlobalChi2Fitter' GaussianSumFilter = 'GaussianSumFilter' + class KalmanUpdatorType(FlagEnum): KalmanUpdator = 'KalmanUpdator' KalmanUpdator_xk = 'KalmanUpdator_xk' @@ -55,21 +57,32 @@ def createTrackingConfigFlags(): icf.addFlag("Tracking.doSharedHits", True) # Switch for running TIDE Ambi icf.addFlag("Tracking.doTIDE_Ambi", lambda prevFlags: - not(prevFlags.Beam.Type is BeamType.Cosmics)) + not (prevFlags.Beam.Type is BeamType.Cosmics)) + # Try to split pixel clusters + icf.addFlag("Tracking.doPixelClusterSplitting", + lambda prevFlags: not (prevFlags.Beam.Type is BeamType.Cosmics)) + # choose splitter type: NeuralNet or AnalogClus + icf.addFlag("Tracking.pixelClusterSplittingType", "NeuralNet") + # Cut value for splitting clusters into two parts + icf.addFlag("Tracking.pixelClusterSplitProb1", + lambda prevFlags: (0.5 if prevFlags.GeoModel.Run is LHCPeriod.Run1 else 0.55)) + # Cut value for splitting clusters into three parts + icf.addFlag("Tracking.pixelClusterSplitProb2", + lambda prevFlags: (0.5 if prevFlags.GeoModel.Run is LHCPeriod.Run1 else 0.45)) # Express track parameters wrt. to : 'BeamLine','BeamSpot','Vertex' (first primary vertex) icf.addFlag("Tracking.perigeeExpression", lambda prevFlags: "Vertex" if prevFlags.Reco.EnableHI else "BeamLine") def doLargeD0(flags): - if flags.GeoModel.Run<=LHCPeriod.Run3: - return not((flags.Beam.Type in - [BeamType.SingleBeam, BeamType.Cosmics]) or - flags.Reco.EnableHI or - flags.Tracking.doHighPileup or - flags.Tracking.doVtxLumi or - flags.Tracking.doVtxBeamSpot) - else: # LRT disabled by default for Run4 for now + if flags.GeoModel.Run <= LHCPeriod.Run3: + return not ((flags.Beam.Type in + [BeamType.SingleBeam, BeamType.Cosmics]) or + flags.Reco.EnableHI or + flags.Tracking.doHighPileup or + flags.Tracking.doVtxLumi or + flags.Tracking.doVtxBeamSpot) + else: # LRT disabled by default for Run4 for now return False icf.addFlag("Tracking.doLargeD0", doLargeD0) @@ -83,10 +96,10 @@ def createTrackingConfigFlags(): # Toggle track slimming icf.addFlag("Tracking.doSlimming", lambda prevFlags: - not((prevFlags.Beam.Type in + not ((prevFlags.Beam.Type in [BeamType.SingleBeam, BeamType.Cosmics]) or - prevFlags.Tracking.doHighPileup or - prevFlags.Tracking.doVtxLumi)) + prevFlags.Tracking.doHighPileup or + prevFlags.Tracking.doVtxLumi)) #################################################################### diff --git a/Tracking/TrkConfig/python/TrkGlobalChi2FitterConfig.py b/Tracking/TrkConfig/python/TrkGlobalChi2FitterConfig.py index 12793094aaa2e259ec8ab97a1528f718eba4f229..bc3694ddf34ca2f49fa85f8960e28c784de3ba2f 100644 --- a/Tracking/TrkConfig/python/TrkGlobalChi2FitterConfig.py +++ b/Tracking/TrkConfig/python/TrkGlobalChi2FitterConfig.py @@ -260,7 +260,9 @@ def MCTBFitterCfg(flags, result = MCTBExtrapolatorCfg(flags) kwargs.setdefault("GetMaterialFromTrack", True) kwargs.setdefault("ExtrapolationTool", result.popPrivateTools()) - return MuonChi2TrackFitterCfg(flags, name=name, **kwargs) + result.setPrivateTools(result.popToolsAndMerge( + MuonChi2TrackFitterCfg(flags, name=name, **kwargs))) + return result def MCTBFitterMaterialFromTrackCfg(flags, name='MCTBFitterMaterialFromTrack', **kwargs): return MCTBFitterCfg(flags, name, GetMaterialFromTrack=True, **kwargs) diff --git a/Tracking/TrkG4Components/TrkG4UserActions/src/MaterialStepRecorder.cxx b/Tracking/TrkG4Components/TrkG4UserActions/src/MaterialStepRecorder.cxx index 2aa4864b3c3a920b75bf43241e31e2cc6bdc2e1f..0d9346a43e6d53acc33a0be47b1e9ceae0b8edf4 100644 --- a/Tracking/TrkG4Components/TrkG4UserActions/src/MaterialStepRecorder.cxx +++ b/Tracking/TrkG4Components/TrkG4UserActions/src/MaterialStepRecorder.cxx @@ -159,7 +159,7 @@ namespace G4UA for (size_t iel = 0; iel < elNumber; ++iel) { - G4Element* currentEl = (*elVector)[iel]; + const G4Element* currentEl = (*elVector)[iel]; double currentNum = atVector ? atVector[iel] : 1.; double relNbAtoms = currentNum/totAtoms; diff --git a/Trigger/EFTracking/EFTrackingSim/TrigHTTMaps/src/HTTRegionMap.cxx b/Trigger/EFTracking/EFTrackingSim/TrigHTTMaps/src/HTTRegionMap.cxx index dcc63275d998c9bffc02becdaff8a224b87282a0..df922377d264787889a22c721237d4a5bd0fb33c 100644 --- a/Trigger/EFTracking/EFTrackingSim/TrigHTTMaps/src/HTTRegionMap.cxx +++ b/Trigger/EFTracking/EFTrackingSim/TrigHTTMaps/src/HTTRegionMap.cxx @@ -15,7 +15,6 @@ #include <cstdlib> #include <string> #include <iostream> -#include <boost/foreach.hpp> #include <vector> using namespace std; diff --git a/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py b/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py index 9b27ff42851948a591a2d93d81c32f83bf7086e6..913f453ba7c380cccbcf076e69f42a91bb7dbfc2 100755 --- a/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py +++ b/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py @@ -334,8 +334,12 @@ if __name__ == "__main__": flags.Input.isMC=False flags.GeoModel.Run=LHCPeriod.Run3 flags.lock() - hltCaloCellSeedlessMakerCfg(flags).printConfig(withDetails=True) - hltCaloCellMakerCfg(flags, "SthFS").printConfig(withDetails=True) - hltTopoClusterMakerCfg(flags, "TrigCaloClusterMaker_topo").printConfig(withDetails=True,summariseProps=True) - hltCaloTopoClusterCalibratorCfg(flags,"Calibrator", - clustersin="clustersIn",clustersout="clustersOut").printConfig(withDetails=True, summariseProps=True) + CAs = [hltCaloCellSeedlessMakerCfg(flags), + hltCaloCellMakerCfg(flags, "SthFS"), + hltTopoClusterMakerCfg(flags, "TrigCaloClusterMaker_topo"), + hltCaloTopoClusterCalibratorCfg(flags,"Calibrator", + clustersin="clustersIn",clustersout="clustersOut")] + + for ca in CAs: + ca.printConfig(withDetails=True, summariseProps=True) + ca.wasMerged() diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py index 7d982e867d6aacf507785e70189a273c32d3f8c5..45c890374dd742f7a5c82f88b8101066cc5b84b6 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py @@ -384,3 +384,4 @@ if __name__ == "__main__": cfg = l2MuFastAlgCfg(flags, roisKey="MURoIs") cfg.printConfig(withDetails=True, summariseProps=True) + cfg.wasMerged() diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/python/T2VertexBeamSpotConfig.py b/Trigger/TrigAlgorithms/TrigT2BeamSpot/python/T2VertexBeamSpotConfig.py index 70e5cdd98e213200cd2eb1282ddf05f0a1eb68de..9dbcba9937de4e0d196f86d2af59e32161514807 100644 --- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/python/T2VertexBeamSpotConfig.py +++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/python/T2VertexBeamSpotConfig.py @@ -116,3 +116,4 @@ if __name__=="__main__": cfg = MainServicesCfg(flags) cfg.addEventAlgo( T2VertexBeamSpot_activeAllTE(flags) ) + cfg.wasMerged() diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py index cc1d422b952c32f924f807c3dd79cf967cf3ec66..76172a7dc72b4cbd741bdfec33f02e0249eb19c8 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py +++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py @@ -2,7 +2,6 @@ from AthenaCommon.CFElements import seqAND, parOR from AthenaConfiguration.ComponentFactory import CompFactory -from TrigEDMConfig.TriggerEDMRun3 import recordable from TriggerMenuMT.HLT.Config.MenuComponents import algorithmCAToGlobalWrapper from TriggerMenuMT.HLT.CommonSequences.FullScanDefs import caloFSRoI @@ -78,25 +77,21 @@ def _algoL2Egamma(flags, inputEDM="", ClustersName="HLT_FastCaloEMClusters", Rin # using jet seeds for testing. we should use EM as soon as we have EM seeds into the L1 inputEDM = mapThresholdToL1RoICollection("EM") - from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import T2CaloEgamma_ReFastAlgo - algo=T2CaloEgamma_ReFastAlgo(flags, "FastCaloL2EgammaAlg", doRinger=True, RingerKey=RingerKey) - algo.RoIs=inputEDM + extraInputs=[ ( 'LArMCSym', 'ConditionStore+LArMCSym'), ('LArOnOffIdMapping' , 'ConditionStore+LArOnOffIdMap' ), ('LArFebRodMapping' , 'ConditionStore+LArFebRodMap' ), ('CaloDetDescrManager', 'ConditionStore+CaloDetDescrManager') ] + from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import t2CaloEgamma_ReFastAlgoCfg + if (not doForward) and (not doAll) and (not doAllEm ) : + algo=algorithmCAToGlobalWrapper(t2CaloEgamma_ReFastAlgoCfg,flags, "FastCaloL2EgammaAlg", doRinger=True, RingerKey=RingerKey,RoIs=inputEDM,ExtraInputs=extraInputs, ClustersName = ClustersName) if doForward: - from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import T2CaloEgamma_ReFastFWDAlgo - algo=T2CaloEgamma_ReFastFWDAlgo(flags, "FastCaloL2EgammaAlg_FWD", doRinger=True, RingerKey=RingerKey) - algo.RoIs=inputEDM + from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import t2CaloEgamma_ReFastFWDAlgoCfg + algo=algorithmCAToGlobalWrapper(t2CaloEgamma_ReFastFWDAlgoCfg,flags, "FastCaloL2EgammaAlg_FWD", doRinger=True, RingerKey=RingerKey,RoIs=inputEDM,ExtraInputs=extraInputs, ClustersName = ClustersName) else: if ( doAllEm or doAll ) : if ( doAllEm ): - from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import T2CaloEgamma_AllEm - algo=T2CaloEgamma_AllEm(flags, "L2CaloLayersEmFex") - algo.RoIs=inputEDM + from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import t2CaloEgamma_AllEmCfg + algo=algorithmCAToGlobalWrapper(t2CaloEgamma_AllEmCfg,flags, "L2CaloLayersEmFex",RoIs=inputEDM,ExtraInputs=extraInputs, ClustersName = ClustersName) else : # can only be doAll - from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import T2CaloEgamma_All - algo=T2CaloEgamma_All(flags, "L2CaloLayersFex") - algo.RoIs=inputEDM - algo.ExtraInputs+=[ ( 'LArBadChannelCont', 'ConditionStore+LArBadChannel'), ( 'LArMCSym', 'ConditionStore+LArMCSym'), ('LArOnOffIdMapping' , 'ConditionStore+LArOnOffIdMap' ), ('LArFebRodMapping' , 'ConditionStore+LArFebRodMap' ), ('CaloDetDescrManager', 'ConditionStore+CaloDetDescrManager') ] - algo.ClustersName=recordable(ClustersName) + from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import t2CaloEgamma_AllCfg + algo=algorithmCAToGlobalWrapper(t2CaloEgamma_AllCfg,flags, "L2CaloLayersFex",RoIs=inputEDM,ExtraInputs=extraInputs, ClustersName = ClustersName) return algo #################################### @@ -122,7 +117,7 @@ def fastCaloRecoSequence(flags, InViewRoIs, ClustersName="HLT_FastCaloEMClusters name = 'fastCaloInViewSequenceAll' fastCaloInViewSequence = seqAND( name, [fastCaloVDV, fastCaloAlg] ) - sequenceOut = fastCaloAlg.ClustersName + sequenceOut = fastCaloAlg[0].ClustersName return (fastCaloInViewSequence, sequenceOut) @@ -136,7 +131,7 @@ def fastCaloRecoFWDSequence(flags, InViewRoIs, ClustersName="HLT_FastCaloEMClust fastCaloVDV.DataObjects = [( 'CaloBCIDAverage' , 'StoreGateSvc+CaloBCIDAverage' ), ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+FSJETMETCaloRoI' )] fastCaloInViewSequence = seqAND('fastCaloInViewSequence_FWD' , [fastCaloVDV, fastCaloAlg] ) - sequenceOut = fastCaloAlg.ClustersName + sequenceOut = fastCaloAlg[0].ClustersName return (fastCaloInViewSequence, sequenceOut) diff --git a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py index 5d58790e1665809e42e217decc7d933d124b4d15..f2bbbcd115032b31fb52769f451859e312805cd8 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py +++ b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py @@ -1,7 +1,9 @@ # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool +from TrigEDMConfig.TriggerEDMRun3 import recordable from TrigT2CaloCalibration.EgammaCalibrationConfig import (EgammaHitsCalibrationBarrelConfig, EgammaHitsCalibrationEndcapConfig, EgammaGapCalibrationConfig, @@ -18,6 +20,9 @@ _T2CaloEgamma_ExtraInputs = [ ('LArBadChannelCont' , 'ConditionStore+LArBadChannel') ] +#local variable +from HLTSeeding.HLTSeedingConfig import mapThresholdToL1RoICollection +inputEDM = mapThresholdToL1RoICollection("FSNOSEED") def RingerReFexConfig(flags, name="RingerReMaker", RingerKey="FastCaloRings", ClustersName="HLT_FastCaloEMClusters"): @@ -72,7 +77,8 @@ def AsymRingerReFexConfig(flags, name="AsymRingerReMaker"): #======================================================================= -def T2CaloEgamma_All(flags, name="T2CaloEgamma_All"): +def t2CaloEgamma_AllCfg(flags, name="T2CaloEgamma_All",RoIs=inputEDM,ExtraInputs=[], ClustersName="HLT_FastCaloEMClusters"): + acc = ComponentAccumulator() tool = CompFactory.EgammaAllFex("EgammaAllFex", IncludeHad=True, ExtraInputs=[('TileEMScale','ConditionStore+TileEMScale'), @@ -82,12 +88,16 @@ def T2CaloEgamma_All(flags, name="T2CaloEgamma_All"): EtaWidth = 0.1, PhiWidth = 0.1, ExtraInputs = _T2CaloEgamma_ExtraInputs) - return alg + alg.RoIs=RoIs + alg.ExtraInputs+=ExtraInputs + alg.ClustersName = recordable(ClustersName) + acc.addEventAlgo(alg) + return acc #======================================================================= -def T2CaloEgamma_AllEm(flags, name="T2CaloEgamma_AllEm"): - +def t2CaloEgamma_AllEmCfg(flags, name="T2CaloEgamma_AllEm", RoIs=inputEDM, ExtraInputs=[], ClustersName="HLT_FastCaloEMClusters"): + acc = ComponentAccumulator() tool = CompFactory.EgammaAllFex("EgammaAllEmFex", ExtraInputs=[('TileEMScale','ConditionStore+TileEMScale'), ('TileBadChannels','ConditionStore+TileBadChannels')]) @@ -97,12 +107,17 @@ def T2CaloEgamma_AllEm(flags, name="T2CaloEgamma_AllEm"): EtaWidth = 0.1, PhiWidth = 0.1, ExtraInputs = _T2CaloEgamma_ExtraInputs) - return alg + alg.RoIs=RoIs + alg.ExtraInputs+=ExtraInputs + alg.ClustersName = recordable(ClustersName) + acc.addEventAlgo(alg) + return acc #======================================================================= -def T2CaloEgamma_ReFastAlgo(flags, name="T2CaloEgamma_ReFastAlgo", ClustersName="HLT_FastCaloEMClusters", - doRinger=False, RingerKey="HLT_FastCaloRinger"): +def t2CaloEgamma_ReFastAlgoCfg(flags, name="T2CaloEgamma_ReFastAlgo", ClustersName="HLT_FastCaloEMClusters", + doRinger=False, RingerKey="HLT_FastCaloRinger", RoIs=inputEDM, ExtraInputs=[]): + acc = ComponentAccumulator() samp2 = CompFactory.EgammaReSamp2Fex("ReFaAlgoSamp2FexConfig", MaxDetaHotCell=0.15, MaxDphiHotCell=0.15 ) @@ -111,6 +126,15 @@ def T2CaloEgamma_ReFastAlgo(flags, name="T2CaloEgamma_ReFastAlgo", ClustersName= samph = CompFactory.EgammaReHadEnFex("ReFaAlgoHadEnFexConfig", ExtraInputs=[('TileEMScale','ConditionStore+TileEMScale'), ('TileBadChannels','ConditionStore+TileBadChannels')]) + monTool = GenericMonitoringTool(flags, 'MonTool') + monTool.defineHistogram('TrigEMCluster_eT', path='EXPERT', type='TH1F', title="T2Calo Egamma E_T; E_T [ GeV ] ; Nclusters", xbins=80, xmin=0.0, xmax=80.0) + monTool.defineHistogram('TrigEMCluster_had1', path='EXPERT', type='TH1F', title="T2Calo Egamma had E_T samp1; had E_T samp1 [ GeV ] ; Nclusters", xbins=80, xmin=0.0, xmax=8.0) + monTool.defineHistogram('TrigEMCluster_eta', path='EXPERT', type='TH1F', title="T2Calo Egamma #eta; #eta ; Nclusters", xbins=100, xmin=-2.5, xmax=2.5) + monTool.defineHistogram('TrigEMCluster_phi', path='EXPERT', type='TH1F', title="T2Calo Egamma #phi; #phi ; Nclusters", xbins=128, xmin=-3.2, xmax=3.2) + monTool.defineHistogram('TrigEMCluster_eta,TrigEMCluster_phi', path='EXPERT', type='TH2F', title="T2Calo Egamma Number of Clusters; #eta ; #phi ; Number of Clusters", xbins=100, xmin=-2.5, xmax=2.5, ybins=128, ymin=-3.2, ymax=3.2) + monTool.defineHistogram('TrigEMCluster_rEta', path='EXPERT', type='TH1F', title="T2Calo Egamma rEta; rEta (e237/e277) ; Nclusters", xbins=140, xmin=-0.2, xmax=1.2) + monTool.defineHistogram('TIME_exec', path='EXPERT', type='TH1F', title="T2Calo Egamma time; time [ us ] ; Nruns", xbins=80, xmin=0.0, xmax=8000.0) + monTool.defineHistogram('TrigEMCluster_eta,TIME_exec', path='EXPERT', type='TH2F', title="T2Calo Egamma time vs #eta ; #eta ; time [ us ]", xbins=100, xmin=-2.5, xmax=2.5, ybins=80, ymin=0.0, ymax=8000.0) alg = CompFactory.T2CaloEgammaReFastAlgo( name, @@ -118,6 +142,7 @@ def T2CaloEgamma_ReFastAlgo(flags, name="T2CaloEgamma_ReFastAlgo", ClustersName= ExtraInputs = _T2CaloEgamma_ExtraInputs, EtaWidth = 0.2, PhiWidth = 0.2, + MonTool = monTool, CalibListBarrel = [EgammaSshapeCalibrationBarrelConfig(), EgammaHitsCalibrationBarrelConfig(), EgammaGapCalibrationConfig(), @@ -132,31 +157,29 @@ def T2CaloEgamma_ReFastAlgo(flags, name="T2CaloEgamma_ReFastAlgo", ClustersName= ClustersName = ClustersName) alg.IReAlgToolList += [ringer] - monTool = GenericMonitoringTool(flags, 'MonTool') - monTool.defineHistogram('TrigEMCluster_eT', path='EXPERT', type='TH1F', title="T2Calo Egamma E_T; E_T [ GeV ] ; Nclusters", xbins=80, xmin=0.0, xmax=80.0) - monTool.defineHistogram('TrigEMCluster_had1', path='EXPERT', type='TH1F', title="T2Calo Egamma had E_T samp1; had E_T samp1 [ GeV ] ; Nclusters", xbins=80, xmin=0.0, xmax=8.0) - monTool.defineHistogram('TrigEMCluster_eta', path='EXPERT', type='TH1F', title="T2Calo Egamma #eta; #eta ; Nclusters", xbins=100, xmin=-2.5, xmax=2.5) - monTool.defineHistogram('TrigEMCluster_phi', path='EXPERT', type='TH1F', title="T2Calo Egamma #phi; #phi ; Nclusters", xbins=128, xmin=-3.2, xmax=3.2) - monTool.defineHistogram('TrigEMCluster_eta,TrigEMCluster_phi', path='EXPERT', type='TH2F', title="T2Calo Egamma Number of Clusters; #eta ; #phi ; Number of Clusters", xbins=100, xmin=-2.5, xmax=2.5, ybins=128, ymin=-3.2, ymax=3.2) - monTool.defineHistogram('TrigEMCluster_rEta', path='EXPERT', type='TH1F', title="T2Calo Egamma rEta; rEta (e237/e277) ; Nclusters", xbins=140, xmin=-0.2, xmax=1.2) - monTool.defineHistogram('TIME_exec', path='EXPERT', type='TH1F', title="T2Calo Egamma time; time [ us ] ; Nruns", xbins=80, xmin=0.0, xmax=8000.0) - monTool.defineHistogram('TrigEMCluster_eta,TIME_exec', path='EXPERT', type='TH2F', title="T2Calo Egamma time vs #eta ; #eta ; time [ us ]", xbins=100, xmin=-2.5, xmax=2.5, ybins=80, ymin=0.0, ymax=8000.0) - - alg.MonTool = monTool - return alg + alg.RoIs=RoIs + alg.ExtraInputs+=ExtraInputs + alg.ClustersName = recordable(ClustersName) + acc.addEventAlgo(alg) + return acc #======================================================================= -def T2CaloEgamma_ReFastFWDAlgo(flags, name="T2CaloEgamma_ReFastFWDAlgo", +def t2CaloEgamma_ReFastFWDAlgoCfg(flags, name="T2CaloEgamma_ReFastFWDAlgo", ClustersName="HLT_FWDFastCaloEMClusters", - doRinger=False, RingerKey="HLT_FWDFastCaloRinger"): + doRinger=False, RingerKey="HLT_FWDFastCaloRinger", RoIs=inputEDM, ExtraInputs=[]): + acc = ComponentAccumulator() alg = CompFactory.T2CaloEgammaForwardReFastAlgo(name, IReAlgToolList = [], ExtraInputs = _T2CaloEgamma_ExtraInputs, EtaWidth = 0.2, PhiWidth = 0.2) - return alg + alg.RoIs=RoIs + alg.ExtraInputs+=ExtraInputs + alg.ClustersName = recordable(ClustersName) + acc.addEventAlgo(alg) + return acc #======================================================================= @@ -165,5 +188,8 @@ if __name__ == '__main__': from AthenaConfiguration.AllConfigFlags import initConfigFlags flags = initConfigFlags() flags.lock() - alg = T2CaloEgamma_ReFastAlgo(flags, doRinger=True) - print(alg) + t2CaloEgamma_ReFastAlgoCfg(flags, "FastCaloL2EgammaAlgo_noRinger").printConfig(withDetails=True,summariseProps=True) + t2CaloEgamma_ReFastAlgoCfg(flags, "FastCaloL2EgammaAlgo", doRinger=True).printConfig(withDetails=True,summariseProps=True) + t2CaloEgamma_AllCfg(flags).printConfig(withDetails=True,summariseProps=True) + t2CaloEgamma_AllEmCfg(flags).printConfig(withDetails=True,summariseProps=True) + t2CaloEgamma_ReFastFWDAlgoCfg(flags, ClustersName="HLT_FastCaloEMClusters", doRinger=True).printConfig(withDetails=True,summariseProps=True) diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TDTUtilities.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TDTUtilities.cxx index 48b0fb9b2bf93d2d4e4ff0a4453aa4937a1d6f9f..118631141f62e9eee0800920d1fcea99bc3904eb 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TDTUtilities.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TDTUtilities.cxx @@ -2,8 +2,6 @@ Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -#include <boost/algorithm/string.hpp> - #include "TrigConfHLTData/HLTTriggerElement.h" #include "TrigDecisionTool/TDTUtilities.h" diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroupFunctions.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroupFunctions.h index 0d58dae9e8b858ab62c2a25e6a49caeea78625dc..235519088cd6ae485f0ca53babab54948f4fccb8 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroupFunctions.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroupFunctions.h @@ -18,7 +18,6 @@ ***********************************************************************************/ #include <string> #include <vector> -#include <boost/algorithm/string.hpp> #include "TrigDecisionInterface/GroupProperties.h" diff --git a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc index 04f1ec57e6db453b803d2fff08d6daea3e390004..ada3257d40a869213407b389f8f1d522c402d62e 100644 --- a/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc +++ b/Trigger/TrigAnalysis/TrigEgammaMatchingTool/TrigEgammaMatchingTool/TrigEgammaMatchingToolMT.icc @@ -1,7 +1,7 @@ /* Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ - +#include <boost/algorithm/string.hpp> // L2Calo, L2Electron, L2Photon, EFCalo, Electron and Photon trigger passed access diff --git a/Trigger/TrigConfiguration/TrigConfMuctpi/src/MuctpiXMLParser.cxx b/Trigger/TrigConfiguration/TrigConfMuctpi/src/MuctpiXMLParser.cxx index 28f4bf55514ea22bc5d69bd6d8efb0c3beb79a36..8e6c83881e80f400ebc2a298219271a74bd453a0 100644 --- a/Trigger/TrigConfiguration/TrigConfMuctpi/src/MuctpiXMLParser.cxx +++ b/Trigger/TrigConfiguration/TrigConfMuctpi/src/MuctpiXMLParser.cxx @@ -18,9 +18,6 @@ #include <stdlib.h> #include <boost/lexical_cast.hpp> -// boost libraries -#include <boost/foreach.hpp> - using namespace std; using boost::property_tree::ptree; diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorTagAndProbeAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorTagAndProbeAlgorithm.cxx index ec1f2bcef883a56dc2d05627db2ff108286d61a2..77ebd1b54cd888242ea84fe1f8816c799eccbc8c 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorTagAndProbeAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorTagAndProbeAlgorithm.cxx @@ -24,7 +24,6 @@ #include <algorithm> #include "boost/algorithm/string.hpp" #include <boost/tokenizer.hpp> -#include <boost/foreach.hpp> #include "LArRecEvent/LArEventBitInfo.h" #include "StoreGate/ReadHandle.h" diff --git a/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingConfig.py b/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingConfig.py index cc044147d98e25ac60289001c48e0249325202bf..6c335a99e7a60e016fbdaf77c7807e1f76b7203b 100644 --- a/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingConfig.py +++ b/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingConfig.py @@ -386,3 +386,4 @@ if __name__ == "__main__": flags.Input.Files= ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1",] flags.lock() acc = HLTSeedingCfg( flags ) + acc.wasMerged() diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXDriver.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXDriver.h index 6d4d63691c167531610098b97252994cea965c88..3db9c49554666477e66359eba1e850a148199310 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXDriver.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXDriver.h @@ -10,22 +10,10 @@ // Athena/Gaudi -#include "AthenaBaseComps/AthReentrantAlgorithm.h" #include "AthenaBaseComps/AthAlgorithm.h" -#include "CaloEvent/CaloCellContainer.h" -#include "L1CaloFEXSim/jTower.h" -#include "L1CaloFEXSim/jTowerContainer.h" -#include "L1CaloFEXSim/jTowerBuilder.h" -#include "L1CaloFEXSim/jSuperCellTowerMapper.h" #include "L1CaloFEXToolInterfaces/IjFEXSysSim.h" -#include "xAODTrigL1Calo/TriggerTowerContainer.h" #include "CaloIdentifier/CaloIdManager.h" -#include "CaloIdentifier/CaloCell_SuperCell_ID.h" #include "L1CaloFEXSim/jFEXOutputCollection.h" -#include "xAODTrigger/jFexSRJetRoIContainer.h" -#include "xAODTrigger/jFexLRJetRoIContainer.h" -#include "xAODTrigger/jFexTauRoIContainer.h" -#include "xAODTrigger/jFexFwdElRoIContainer.h" class CaloIdManager; @@ -33,41 +21,19 @@ namespace LVL1 { class jFEXDriver : public AthAlgorithm { - public: - //using AthReentrantAlgorithm::AthReentrantAlgorithm; + public: + jFEXDriver(const std::string& name, ISvcLocator* pSvcLocator); + virtual ~jFEXDriver(); - jFEXDriver(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~jFEXDriver(); + virtual StatusCode initialize(); + virtual StatusCode execute(); + StatusCode finalize(); - virtual StatusCode initialize(); - virtual StatusCode execute(/*const EventContext& ctx*/);// const; - StatusCode finalize(); + private: - private: - - int m_numberOfEvents = 0; - - SG::WriteHandleKey<LVL1::jTowerContainer> m_jTowerContainerSGKey {this, "MyETowers", "jTowerContainer", "MyETowers"}; - - SG::WriteHandleKey<jFEXOutputCollection> m_jFEXOutputCollectionSGKey {this, "MyOutputs", "jFEXOutputCollection", "MyOutputs"}; - - ToolHandle<IjTowerBuilder> m_jTowerBuilderTool {this, "jTowerBuilderTool", "LVL1::jTowerBuilder", "Tool that builds jTowers for simulation"}; - ToolHandle<IjSuperCellTowerMapper> m_jSuperCellTowerMapperTool {this, "jSuperCellTowerMapperTool", "LVL1::jSuperCellTowerMapper", "Tool that maps supercells to jTowers"}; - ToolHandle<IjFEXSysSim> m_jFEXSysSimTool {this, "jFEXSysSimTool", "LVL1::jFEXSysSim", "Tool that creates the jFEX System Simulation"}; - - std::unordered_map<Identifier, std::pair<int,int> > m_cell_to_tower_map; - std::string m_PileupWeigthFile; - - // This string is used to convert the m_PileupweigthFile file in a readable file for jFEX - std::string m_PileupHelperFile; - - //histograms need to set coordinates and noise subtraction - TH1F* m_jTowerArea_hist; - TH1I* m_Firmware2BitwiseID; - TH1I* m_BinLayer; - TH1F* m_EtaCoords; - TH1F* m_PhiCoords; + SG::WriteHandleKey<jFEXOutputCollection> m_jFEXOutputCollectionSGKey {this, "MyOutputs", "jFEXOutputCollection", "MyOutputs"}; + ToolHandle<IjFEXSysSim> m_jFEXSysSimTool {this, "jFEXSysSimTool", "LVL1::jFEXSysSim", "Tool that creates the jFEX System Simulation"}; }; diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerMakerFromSuperCells.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerMakerFromSuperCells.h new file mode 100644 index 0000000000000000000000000000000000000000..6e63e262ed4234dccf0181f604a99f5ba67eb5c0 --- /dev/null +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerMakerFromSuperCells.h @@ -0,0 +1,64 @@ +/* + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef JTOWERMAKERFROMSUPERCELLS_H +#define JTOWERMAKERFROMSUPERCELLS_H + +// STL +#include <string> + + +// Athena/Gaudi +#include "StoreGate/WriteHandle.h" +#include "AthenaBaseComps/AthAlgorithm.h" +#include "CaloEvent/CaloCellContainer.h" +#include "L1CaloFEXSim/jTower.h" +#include "L1CaloFEXSim/jTowerContainer.h" +#include "L1CaloFEXSim/jTowerBuilder.h" +#include "L1CaloFEXSim/jSuperCellTowerMapper.h" + +#include "xAODTrigL1Calo/TriggerTowerContainer.h" +#include "CaloIdentifier/CaloIdManager.h" +#include "CaloIdentifier/CaloCell_SuperCell_ID.h" + +#include "TH1F.h" +#include "TH1I.h" +#include "TFile.h" + +class CaloIdManager; + +namespace LVL1 { + +class jTowerMakerFromSuperCells : public AthAlgorithm +{ + public: + + jTowerMakerFromSuperCells(const std::string& name, ISvcLocator* svc); + + virtual StatusCode initialize(); + virtual StatusCode execute(); + + private: + + SG::WriteHandleKey<LVL1::jTowerContainer> m_jTowerContainerSGKey {this, "MyJTowers", "jTowerContainer", "MyJTowers"}; + + ToolHandle<IjTowerBuilder> m_jTowerBuilderTool {this, "jTowerBuilderTool", "LVL1::jTowerBuilder", "Tool that builds jTowers for simulation"}; + ToolHandle<IjSuperCellTowerMapper> m_jSuperCellTowerMapperTool {this, "jSuperCellTowerMapperTool", "LVL1::jSuperCellTowerMapper", "Tool that maps supercells to jTowers"}; + + //property for jFEX mapping + Gaudi::Property<std::string> m_PileupWeigthFile {this, "PileupWeigthFile", "Run3L1CaloSimulation/Noise/jTowerCorrection.20210308.r12406.root", "Root file for the pileup weight"}; + Gaudi::Property<std::string> m_PileupHelperFile {this, "PileupHelperFile", "Run3L1CaloSimulation/Calibrations/jFEX_MatchedMapping.2022Mar10.r12406.root", "Root file to set the jTower coordinated (float eta/phi)"}; + + //histograms need to set coordinates and noise subtraction + TH1F* m_jTowerArea_hist; + TH1I* m_Firmware2BitwiseID; + TH1I* m_BinLayer; + TH1F* m_EtaCoords; + TH1F* m_PhiCoords; + + +}; + +} // end of LVL1 namespace +#endif diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py index f8449667c676882eaffbdd60b5dbc50453e4a06e..53944c100046ebee5751d85403b890cd1a3fd6d7 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py @@ -154,9 +154,10 @@ if __name__ == '__main__': ################################################## # jFEX Simulated TOBs ################################################## - jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver') - jFEX.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper') - jFEX.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC + jFEXInputs = CompFactory.LVL1.jTowerMakerFromSuperCells('jTowerMakerFromSuperCells') + jFEXInputs.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper') + jFEXInputs.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC + jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver') jFEX.jFEXSysSimTool = CompFactory.LVL1.jFEXSysSim('jFEXSysSimTool') #TOBs @@ -186,6 +187,7 @@ if __name__ == '__main__': outputEDM += addEDM('xAOD::jFexTauRoIContainer' , 'L1_jFexTauxRoISim' ) outputEDM += addEDM('xAOD::jFexFwdElRoIContainer', 'L1_jFexFwdElxRoISim' ) + acc.addEventAlgo(jFEXInputs, sequenceName='AthAlgSeq') acc.addEventAlgo(jFEX, sequenceName='AthAlgSeq') diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py index a28e805c268635900bd3b9bd18c342547d09bbb4..224329b6bb1ce761662f9a44fe053c591cb41961 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py @@ -104,10 +104,12 @@ def L1CaloFEXSimCfg(flags): acc.addEventAlgo(eFEX) if flags.Trigger.L1.dojFex: + jFEXInputs = CompFactory.LVL1.jTowerMakerFromSuperCells('jTowerMakerFromSuperCells') + jFEXInputs.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper', SCell=sCellType) + jFEXInputs.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver') - jFEX.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper', SCell=sCellType) - jFEX.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC jFEX.jFEXSysSimTool = CompFactory.LVL1.jFEXSysSim('jFEXSysSimTool') + acc.addEventAlgo(jFEXInputs) acc.addEventAlgo(jFEX) if flags.Trigger.L1.dogFex: diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py index 37f1165870c136fc515a933c7f7fdbfec113ee31..8e7bf65e046ce5d7d5b3be7dd5cba1766ee70d1b 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py @@ -91,6 +91,7 @@ StreamAOD.ItemList+=["xAOD::TauJetAuxContainer#TauJetsAux.-VertexedClusters."] ####################################################### log.info("==========================================================") log.info("Scheduling jFEXDriver") +athAlgSeq += CfgMgr.LVL1__jTowerMakerFromSuperCells('MyeTowerMaker') athAlgSeq += CfgMgr.LVL1__jFEXDriver('MyjFEXDriver') athAlgSeq += CfgMgr.LVL1__jFEXNtupleWriter('MyjFEXNtupleWriter') log.info("==========================================================") diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/components/FEXDriver_entries.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/components/FEXDriver_entries.cxx index 4ec098c7a47fce9f7c5d375b6730fc1ad3c4d9c0..535672b56cf2e35ead483e815c9fa57ac65cc714 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/components/FEXDriver_entries.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/components/FEXDriver_entries.cxx @@ -12,6 +12,13 @@ #include "L1CaloFEXSim/eFEXegAlgo.h" #include "L1CaloFEXSim/eFEXTOBEtTool.h" #include "L1CaloFEXSim/eFEXNtupleWriter.h" +#include "L1CaloFEXSim/eFEXFPGATowerIdProvider.h" +#include "L1CaloFEXSim/eTowerMakerFromSuperCells.h" +#include "../eTowerMakerFromEfexTowers.h" +#include "L1CaloFEXSim/eFEXSuperCellTowerIdProvider.h" +#include "L1CaloFEXSim/eFakeTower.h" + + #include "L1CaloFEXSim/jFEXDriver.h" #include "L1CaloFEXSim/jFEXSysSim.h" #include "L1CaloFEXSim/jFEXSim.h" @@ -24,13 +31,9 @@ #include "L1CaloFEXSim/jFEXForwardJetsAlgo.h" #include "L1CaloFEXSim/jFEXForwardElecAlgo.h" #include "L1CaloFEXSim/jFEXNtupleWriter.h" -#include "L1CaloFEXSim/eFEXFPGATowerIdProvider.h" -#include "L1CaloFEXSim/eTowerMakerFromSuperCells.h" -#include "../eTowerMakerFromEfexTowers.h" -#include "L1CaloFEXSim/eFEXSuperCellTowerIdProvider.h" -#include "L1CaloFEXSim/eFakeTower.h" #include "L1CaloFEXSim/jFEXPileupAndNoise.h" #include "L1CaloFEXSim/jFEXFormTOBs.h" +#include "L1CaloFEXSim/jTowerMakerFromSuperCells.h" #include "L1CaloFEXSim/gFEXDriver.h" #include "L1CaloFEXSim/gFEXSysSim.h" @@ -79,6 +82,7 @@ DECLARE_COMPONENT(jFEXForwardJetsAlgo) DECLARE_COMPONENT(jFEXForwardElecAlgo) DECLARE_COMPONENT(jFEXNtupleWriter) DECLARE_COMPONENT(jFEXFormTOBs) +DECLARE_COMPONENT(jTowerMakerFromSuperCells) DECLARE_COMPONENT(gFEXDriver) DECLARE_COMPONENT(gFEXSysSim) diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXDriver.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXDriver.cxx index 026af5bb1b1c04b2672a5a1fcc9f81e86938cb63..06aa76463e692f0f1b71456054300e45d07b4ee9 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXDriver.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXDriver.cxx @@ -4,62 +4,18 @@ #undef NDEBUG -#include "CaloEvent/CaloCellContainer.h" -#include "CaloIdentifier/CaloIdManager.h" -#include "CaloIdentifier/CaloCell_SuperCell_ID.h" - -#include "xAODTrigL1Calo/TriggerTowerContainer.h" - -#include "L1CaloFEXSim/jTower.h" -#include "L1CaloFEXSim/jTowerBuilder.h" #include "L1CaloFEXSim/jFEXDriver.h" - -#include "L1CaloFEXSim/jSuperCellTowerMapper.h" - -#include "L1CaloFEXSim/jFEXSim.h" #include "L1CaloFEXSim/jFEXOutputCollection.h" - -#include "TROOT.h" -#include "TH1.h" -#include "TH1F.h" -#include "TH1I.h" -#include "TPad.h" -#include "TFile.h" -#include "TCanvas.h" - #include "StoreGate/WriteHandle.h" -#include "StoreGate/ReadHandle.h" - -#include "L1CaloFEXSim/jTowerContainer.h" - -#include "xAODTrigger/jFexSRJetRoI.h" -#include "xAODTrigger/jFexSRJetRoIContainer.h" - -#include "xAODTrigger/jFexLRJetRoI.h" -#include "xAODTrigger/jFexLRJetRoIContainer.h" - -#include "xAODTrigger/jFexTauRoI.h" -#include "xAODTrigger/jFexTauRoIContainer.h" - -#include "xAODTrigger/jFexFwdElRoI.h" -#include "xAODTrigger/jFexFwdElRoIContainer.h" - -#include <cassert> #include "SGTools/TestStore.h" -#include "PathResolver/PathResolver.h" -#include <ctime> -#include <fstream> #define DEBUG_VHB 1 namespace LVL1 { -jFEXDriver::jFEXDriver(const std::string& name, ISvcLocator* pSvcLocator): AthAlgorithm(name, pSvcLocator){ - declareProperty("PileupWeigthFile", m_PileupWeigthFile = "Run3L1CaloSimulation/Noise/jTowerCorrection.20210308.r12406.root"); - declareProperty("PileupHelperFile", m_PileupHelperFile = "Run3L1CaloSimulation/Calibrations/jFEX_MatchedMapping.2022Mar10.r12406.root"); -} +jFEXDriver::jFEXDriver(const std::string& name, ISvcLocator* pSvcLocator): AthAlgorithm(name, pSvcLocator){} jFEXDriver::~jFEXDriver() @@ -71,42 +27,9 @@ jFEXDriver::jFEXDriver(const std::string& name, ISvcLocator* pSvcLocator): AthA StatusCode jFEXDriver::initialize() { - m_numberOfEvents = 1; - - ATH_CHECK( m_jTowerBuilderTool.retrieve() ); - ATH_CHECK( m_jSuperCellTowerMapperTool.retrieve() ); ATH_CHECK( m_jFEXSysSimTool.retrieve() ); - ATH_CHECK( m_jTowerContainerSGKey.initialize() ); ATH_CHECK( m_jFEXOutputCollectionSGKey.initialize() ); - std::unique_ptr<TFile> jTowerFile(TFile::Open(PathResolver::find_calib_file(m_PileupWeigthFile).c_str())); - std::unique_ptr<TFile> jTowerMapFile(TFile::Open(PathResolver::find_calib_file(m_PileupHelperFile).c_str())); - if (!jTowerFile || jTowerFile->IsZombie()) { - ATH_MSG_ERROR("Failed to open cell timing file " << m_PileupWeigthFile); - return StatusCode::FAILURE; - } - if (!jTowerMapFile || jTowerMapFile->IsZombie()) { - ATH_MSG_ERROR("Failed to open cell timing file " << m_PileupHelperFile); - return StatusCode::FAILURE; - } - - m_jTowerArea_hist = (TH1F*) jTowerFile->Get("jTowerArea_final_hist"); - m_Firmware2BitwiseID = (TH1I*) jTowerMapFile->Get("Firmware2BitwiseID"); - m_BinLayer = (TH1I*) jTowerMapFile->Get("BinLayer"); - m_EtaCoords = (TH1F*) jTowerMapFile->Get("EtaCoords"); - m_PhiCoords = (TH1F*) jTowerMapFile->Get("PhiCoords"); - - //detach the Histograms from the TFiles - m_jTowerArea_hist->SetDirectory(0); - m_Firmware2BitwiseID->SetDirectory(0); - m_BinLayer->SetDirectory(0); - m_EtaCoords->SetDirectory(0); - m_PhiCoords->SetDirectory(0); - - jTowerFile->Close(); - jTowerMapFile->Close(); - - return StatusCode::SUCCESS; } @@ -120,96 +43,26 @@ StatusCode jFEXDriver::finalize() StatusCode jFEXDriver::execute() { - ATH_MSG_DEBUG("Executing " << name() << ", processing event number " << m_numberOfEvents ); - - // OLD DIMA STUFF---------------------- Maybe useful in the future again - //if (std::fabsf((*cell)->eta()) > 2.55) continue; - //if (!((*cell)->provenance() & 0x40)) continue; // BCID cut - //// if (!((*cell)->provenance() & 0x200)) continue; - //// 8192 & 0x40 = 0 - //// 8256 & 0x40 = 64 - //// 8704 & 0x40 = 0 - //// 8768 & 0x40 = 64 - - // STEP 0 - Make a fresh local jTowerContainer - std::unique_ptr<jTowerContainer> local_jTowerContainerRaw = std::make_unique<jTowerContainer>(); - - - - // STEP 1 TO BE REPLACED IN THE NEAR FUTURE - KEPT HERE FOR REFERENCE - // STEP 1 - Do some monitoring (code to exported in the future to another algorithm accessing only StoreGate and not appearing in this algorithm) - jFEXOutputCollection* my_jFEXOutputCollection = new jFEXOutputCollection(); - my_jFEXOutputCollection->setdooutput(true); - - // STEP 2 - Make some jTowers and fill the local container - m_jTowerBuilderTool->init(local_jTowerContainerRaw); - local_jTowerContainerRaw->clearContainerMap(); - local_jTowerContainerRaw->fillContainerMap(); - // STEP 3 - Do the supercell-tower mapping - put this information into the jTowerContainer - ATH_CHECK(m_jSuperCellTowerMapperTool->AssignSuperCellsToTowers(local_jTowerContainerRaw)); - ATH_CHECK(m_jSuperCellTowerMapperTool->AssignTriggerTowerMapper(local_jTowerContainerRaw)); - ATH_CHECK(m_jSuperCellTowerMapperTool->AssignPileupAndNoiseValues(local_jTowerContainerRaw,m_jTowerArea_hist,m_Firmware2BitwiseID,m_BinLayer,m_EtaCoords,m_PhiCoords)); - - //STEP 3.5 - Set up a file mapping if necessary (should only need to be done if the mapping changes, which should never happen unless major changes to the simulation are required) - // Only used for simulation experts. Contact one of us first - // With just one event should be enough to generate the file - if(false) { - - ATH_MSG_INFO("Writting the mapping for jFEX"); - std::ofstream sc_tower_map; - sc_tower_map.open("./new_jfex_SCID.txt"); - sc_tower_map << "# Simulation ID, 12 Scells (EMB or EMEC or FCAL1 layer) + 1 Scell (HEC or FCAL2/3 layer)" << "\n"; - - for(const auto & jtower : *local_jTowerContainerRaw) { - sc_tower_map << jtower->id() << " "; - - std::vector<Identifier> vEM = jtower->getEMSCIDs(); - for(const auto& SCellID : vEM) { - sc_tower_map << SCellID << " "; - } - for(unsigned int i=0; i<(12-vEM.size());i++){ - sc_tower_map << "0xffffffffffffffff" << " "; - } - - std::vector<Identifier> vHAD = jtower->getHADSCIDs(); - for(const auto& SCellID : vHAD) { - sc_tower_map << SCellID << " "; - } - if(vHAD.size()==0){ - sc_tower_map << "0xffffffffffffffff" << " "; - } - sc_tower_map << "\n"; - } - - sc_tower_map.close(); - } - - // STEP 4 - Write the completed jTowerContainer into StoreGate (move the local copy in memory) - SG::WriteHandle<LVL1::jTowerContainer> jTowerContainerSG(m_jTowerContainerSGKey/*, ctx*/); - ATH_CHECK(jTowerContainerSG.record(std::move(/*my_jTowerContainerRaw*/local_jTowerContainerRaw))); - - // STEP 5 - Set up the jFEXSysSim + + // STEP 1 - Set up the jFEXSysSim m_jFEXSysSimTool->init(); - - - // STEP 6 - Run THE jFEXSysSim - ATH_CHECK(m_jFEXSysSimTool->execute(my_jFEXOutputCollection)); - // STEP 7 - Close and clean the event + // STEP 2 - Do some monitoring + jFEXOutputCollection* my_jFEXOutputCollection = new jFEXOutputCollection(); + my_jFEXOutputCollection->setdooutput(true); + + // STEP 3 - Run the jFEXSysSim + ATH_CHECK(m_jFEXSysSimTool->execute(my_jFEXOutputCollection)); + + // STEP 4 - Close and clean the event m_jFEXSysSimTool->cleanup(); - m_jSuperCellTowerMapperTool->reset(); - m_jTowerBuilderTool->reset(); - // STEP 8 - Write the completed jFEXOutputCollection into StoreGate (move the local copy in memory) + // STEP 5 - Write the completed jFEXOutputCollection into StoreGate (move the local copy in memory) std::unique_ptr<jFEXOutputCollection> local_jFEXOutputCollection = std::unique_ptr<jFEXOutputCollection>(my_jFEXOutputCollection); SG::WriteHandle<LVL1::jFEXOutputCollection> jFEXOutputCollectionSG(m_jFEXOutputCollectionSGKey); ATH_CHECK(jFEXOutputCollectionSG.record(std::move(local_jFEXOutputCollection))); - ATH_MSG_DEBUG("Executed " << name() << ", closing event number " << m_numberOfEvents ); - - m_numberOfEvents++; - return StatusCode::SUCCESS; } diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerMakerFromSuperCells.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerMakerFromSuperCells.cxx new file mode 100644 index 0000000000000000000000000000000000000000..ee68b1111d85e800cf5b9bfcc63c30428bb2647d --- /dev/null +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerMakerFromSuperCells.cxx @@ -0,0 +1,132 @@ +/* + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +*/ + +#undef NDEBUG + +#include "CaloEvent/CaloCellContainer.h" +#include "CaloIdentifier/CaloIdManager.h" +#include "CaloIdentifier/CaloCell_SuperCell_ID.h" + +#include "xAODTrigL1Calo/TriggerTowerContainer.h" + +#include "L1CaloFEXSim/jTower.h" +#include "L1CaloFEXSim/jTowerBuilder.h" + +#include "L1CaloFEXSim/jSuperCellTowerMapper.h" +#include "L1CaloFEXSim/jTowerMakerFromSuperCells.h" + +#include "SGTools/TestStore.h" +#include "PathResolver/PathResolver.h" + +#include <fstream> + +#define DEBUG_VHB 1 + + +namespace LVL1 { + +jTowerMakerFromSuperCells::jTowerMakerFromSuperCells(const std::string& name, ISvcLocator* svc): AthAlgorithm(name, svc) {} + +StatusCode jTowerMakerFromSuperCells::initialize() +{ + + ATH_CHECK( m_jTowerBuilderTool.retrieve() ); + ATH_CHECK( m_jSuperCellTowerMapperTool.retrieve() ); + ATH_CHECK( m_jTowerContainerSGKey.initialize() ); + + std::unique_ptr<TFile> jTowerFile(TFile::Open(PathResolver::find_calib_file(m_PileupWeigthFile).c_str())); + std::unique_ptr<TFile> jTowerMapFile(TFile::Open(PathResolver::find_calib_file(m_PileupHelperFile).c_str())); + if (!jTowerFile || jTowerFile->IsZombie()) { + ATH_MSG_ERROR("Failed to open cell timing file " << m_PileupWeigthFile); + return StatusCode::FAILURE; + } + if (!jTowerMapFile || jTowerMapFile->IsZombie()) { + ATH_MSG_ERROR("Failed to open cell timing file " << m_PileupHelperFile); + return StatusCode::FAILURE; + } + + m_jTowerArea_hist = (TH1F*) jTowerFile->Get("jTowerArea_final_hist"); + m_Firmware2BitwiseID = (TH1I*) jTowerMapFile->Get("Firmware2BitwiseID"); + m_BinLayer = (TH1I*) jTowerMapFile->Get("BinLayer"); + m_EtaCoords = (TH1F*) jTowerMapFile->Get("EtaCoords"); + m_PhiCoords = (TH1F*) jTowerMapFile->Get("PhiCoords"); + + //detach the Histograms from the TFiles + m_jTowerArea_hist->SetDirectory(0); + m_Firmware2BitwiseID->SetDirectory(0); + m_BinLayer->SetDirectory(0); + m_EtaCoords->SetDirectory(0); + m_PhiCoords->SetDirectory(0); + + jTowerFile->Close(); + jTowerMapFile->Close(); + + + return StatusCode::SUCCESS; + +} + + +StatusCode jTowerMakerFromSuperCells::execute() { + + + // STEP 0 - Make a fresh local jTowerContainer + std::unique_ptr<jTowerContainer> local_jTowerContainerRaw = std::make_unique<jTowerContainer>(); + + // STEP 1 - Make some jTowers and fill the local container + m_jTowerBuilderTool->init(local_jTowerContainerRaw); + local_jTowerContainerRaw->clearContainerMap(); + local_jTowerContainerRaw->fillContainerMap(); + + // STEP 2 - Do the supercell-tower mapping - put this information into the jTowerContainer + ATH_CHECK(m_jSuperCellTowerMapperTool->AssignSuperCellsToTowers(local_jTowerContainerRaw)); + ATH_CHECK(m_jSuperCellTowerMapperTool->AssignTriggerTowerMapper(local_jTowerContainerRaw)); + ATH_CHECK(m_jSuperCellTowerMapperTool->AssignPileupAndNoiseValues(local_jTowerContainerRaw,m_jTowerArea_hist,m_Firmware2BitwiseID,m_BinLayer,m_EtaCoords,m_PhiCoords)); + + //STEP 2.5 - Set up a file mapping if necessary (should only need to be done if the mapping changes, which should never happen unless major changes to the simulation are required) + // Only used for simulation experts. Contact one of us first + // With just one event should be enough to generate the file + if(false) { + + ATH_MSG_INFO("Writting the mapping for jFEX"); + std::ofstream sc_tower_map; + sc_tower_map.open("./new_jfex_SCID.txt"); + sc_tower_map << "# Simulation ID, 12 Scells (EMB or EMEC or FCAL1 layer) + 1 Scell (HEC or FCAL2/3 layer)" << "\n"; + + for(const auto & jtower : *local_jTowerContainerRaw) { + sc_tower_map << jtower->id() << " "; + + std::vector<Identifier> vEM = jtower->getEMSCIDs(); + for(const auto& SCellID : vEM) { + sc_tower_map << SCellID << " "; + } + for(unsigned int i=0; i<(12-vEM.size()); i++) { + sc_tower_map << "0xffffffffffffffff" << " "; + } + + std::vector<Identifier> vHAD = jtower->getHADSCIDs(); + for(const auto& SCellID : vHAD) { + sc_tower_map << SCellID << " "; + } + if(vHAD.size()==0) { + sc_tower_map << "0xffffffffffffffff" << " "; + } + sc_tower_map << "\n"; + } + + sc_tower_map.close(); + } + + // STEP 3 - Write the completed jTowerContainer into StoreGate (move the local copy in memory) + SG::WriteHandle<LVL1::jTowerContainer> jTowerContainerSG(m_jTowerContainerSGKey /*, ctx*/); + ATH_CHECK(jTowerContainerSG.record(std::move( local_jTowerContainerRaw ) ) ); + + // STEP 4 - Close and clean the event + m_jSuperCellTowerMapperTool->reset(); + m_jTowerBuilderTool->reset(); + + return StatusCode::SUCCESS; +} + +} // end of LVL1 namespace diff --git a/Trigger/TrigT1/L1Topo/L1TopoConfig/Root/L1TopoConfigAlg.cxx b/Trigger/TrigT1/L1Topo/L1TopoConfig/Root/L1TopoConfigAlg.cxx index 00b09cc9e6a785204a6220605d512fb26083c72f..928113b6cfd1bfd4ccea91cfd1d52076ba117879 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoConfig/Root/L1TopoConfigAlg.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoConfig/Root/L1TopoConfigAlg.cxx @@ -5,8 +5,6 @@ #include "L1TopoConfig/L1TopoConfigAlg.h" #include "L1TopoCommon/Exception.h" -#include "boost/foreach.hpp" - #include <iostream> #include <iomanip> #include <algorithm> diff --git a/Trigger/TrigT1/L1Topo/L1TopoCoreSim/Root/Connector.cxx b/Trigger/TrigT1/L1Topo/L1TopoCoreSim/Root/Connector.cxx index abb7d657fe70f6ca751718668abc0ba10be1be32..1dacc1fec4a3978ad6ebfbd06d9e7f47fd868ed6 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoCoreSim/Root/Connector.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoCoreSim/Root/Connector.cxx @@ -11,8 +11,6 @@ #include "L1TopoCoreSim/SortingConnector.h" #include "L1TopoCoreSim/InputConnector.h" -#include "boost/foreach.hpp" - using namespace std; using namespace TCS; diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref index 697c4b6da7d93ce54b52110220f1d376fcdf3980..b810bfdd7c867d467ff7dd7c33e854194325150c 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref @@ -5112,7 +5112,11 @@ HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: eventCount: 0 stepFeatures: 0: 7 -HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_L1TAU100_03dRAB_L1eEM26M: + eventCount: 0 + stepFeatures: + 0: 8 +HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_L1eTAU140_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 1 @@ -5134,7 +5138,11 @@ HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI: eventCount: 0 stepFeatures: 0: 7 -HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_L1TAU100_03dRAB_L1eEM26M: + eventCount: 0 + stepFeatures: + 0: 8 +HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_L1eTAU140_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 1 @@ -5179,7 +5187,34 @@ HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: 9: 14 10: 14 11: 3 -HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_L1TAU8_03dRAB_L1eEM26M: + eventCount: 0 + stepCounts: + 0: 8 + 1: 8 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 6 + 7: 6 + 8: 6 + 9: 6 + 10: 6 + stepFeatures: + 0: 8 + 1: 8 + 2: 10 + 3: 6 + 4: 6 + 5: 6 + 6: 6 + 7: 17 + 8: 17 + 9: 17 + 10: 17 + 11: 4 +HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_L1eTAU12_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 8 @@ -5233,7 +5268,34 @@ HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: 9: 8 10: 8 11: 3 -HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_L1TAU12IM_03dRAB_L1eEM26M: + eventCount: 0 + stepCounts: + 0: 8 + 1: 8 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 6 + 7: 6 + 8: 6 + 9: 6 + 10: 6 + stepFeatures: + 0: 8 + 1: 8 + 2: 10 + 3: 6 + 4: 6 + 5: 6 + 6: 6 + 7: 10 + 8: 10 + 9: 10 + 10: 10 + 11: 4 +HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_L1cTAU20M_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 8 @@ -5287,7 +5349,34 @@ HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: 9: 8 10: 8 11: 3 -HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_L1TAU20IM_03dRAB_L1eEM26M: + eventCount: 0 + stepCounts: + 0: 8 + 1: 8 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 6 + 7: 6 + 8: 6 + 9: 6 + 10: 6 + stepFeatures: + 0: 8 + 1: 8 + 2: 10 + 3: 6 + 4: 6 + 5: 6 + 6: 6 + 7: 9 + 8: 9 + 9: 9 + 10: 9 + 11: 3 +HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_L1cTAU30M_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 8 @@ -5341,7 +5430,34 @@ HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: 9: 7 10: 7 11: 3 -HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_L1TAU25IM_03dRAB_L1eEM26M: + eventCount: 0 + stepCounts: + 0: 8 + 1: 8 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 6 + 7: 6 + 8: 6 + 9: 6 + 10: 6 + stepFeatures: + 0: 8 + 1: 8 + 2: 10 + 3: 6 + 4: 6 + 5: 6 + 6: 6 + 7: 8 + 8: 8 + 9: 8 + 10: 8 + 11: 3 +HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_L1cTAU35M_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 8 @@ -5395,7 +5511,34 @@ HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI: 9: 4 10: 4 11: 2 -HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_L1TAU40_03dRAB_L1eEM26M: + eventCount: 0 + stepCounts: + 0: 7 + 1: 7 + 2: 5 + 3: 5 + 4: 5 + 5: 5 + 6: 5 + 7: 4 + 8: 4 + 9: 4 + 10: 4 + stepFeatures: + 0: 8 + 1: 7 + 2: 9 + 3: 5 + 4: 5 + 5: 5 + 6: 5 + 7: 5 + 8: 5 + 9: 5 + 10: 5 + 11: 2 +HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_L1eTAU60_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 7 @@ -5449,7 +5592,34 @@ HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: 9: 4 10: 4 11: 2 -HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_L1TAU40_03dRAB_L1eEM26M: + eventCount: 0 + stepCounts: + 0: 7 + 1: 7 + 2: 5 + 3: 5 + 4: 5 + 5: 5 + 6: 5 + 7: 4 + 8: 4 + 9: 4 + 10: 4 + stepFeatures: + 0: 8 + 1: 7 + 2: 9 + 3: 5 + 4: 5 + 5: 5 + 6: 5 + 7: 5 + 8: 5 + 9: 5 + 10: 5 + 11: 2 +HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_L1eTAU60_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 7 @@ -5503,7 +5673,34 @@ HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI: 9: 1 10: 1 11: 1 -HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_L1TAU60_03dRAB_L1eEM26M: + eventCount: 0 + stepCounts: + 0: 6 + 1: 6 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 4 + 7: 2 + 8: 2 + 9: 2 + 10: 2 + stepFeatures: + 0: 8 + 1: 6 + 2: 7 + 3: 4 + 4: 4 + 5: 4 + 6: 4 + 7: 2 + 8: 2 + 9: 2 + 10: 2 + 11: 1 +HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_L1eTAU80_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 6 @@ -5557,7 +5754,34 @@ HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: 9: 1 10: 1 11: 1 -HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_L1TAU60_03dRAB_L1eEM26M: + eventCount: 0 + stepCounts: + 0: 6 + 1: 6 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 4 + 7: 2 + 8: 2 + 9: 2 + 10: 2 + stepFeatures: + 0: 8 + 1: 6 + 2: 7 + 3: 4 + 4: 4 + 5: 4 + 6: 4 + 7: 2 + 8: 2 + 9: 2 + 10: 2 + 11: 1 +HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_L1eTAU80_03dRAB_L1eEM26M: eventCount: 0 stepCounts: 0: 6 diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref index c07d567175fa1f511cbea84190acae6a0e6d5733..e3f5335f74439aa22a7780c292760749facf5e5a 100644 --- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref +++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref @@ -1776,43 +1776,63 @@ HLT_e26_lhtight_ivarloose_tau100_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI: eventCount: 0 HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_L1TAU100_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_L1eTAU140_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_L1TAU100_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_L1eTAU140_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_L1TAU8_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_L1eTAU12_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_L1TAU12IM_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_L1cTAU20M_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_L1TAU20IM_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_L1cTAU30M_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_L1TAU25IM_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_L1cTAU35M_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_L1TAU40_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_L1eTAU60_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_L1TAU40_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_L1eTAU60_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_L1TAU60_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_L1eTAU80_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI: eventCount: 0 -HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M: +HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_L1TAU60_03dRAB_L1eEM26M: + eventCount: 0 +HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_L1eTAU80_03dRAB_L1eEM26M: eventCount: 0 HLT_e26_lhtight_ivarmedium_L1EM22VHI: eventCount: 0 diff --git a/Trigger/TrigValidation/TrigValAlgs/python/TrigValAlgsConfig.py b/Trigger/TrigValidation/TrigValAlgs/python/TrigValAlgsConfig.py index 82ab07f6bf4b7765baf7314c60500738c24fe9f3..16b2ffb714027d07a74bb72a922d433af57e3693 100755 --- a/Trigger/TrigValidation/TrigValAlgs/python/TrigValAlgsConfig.py +++ b/Trigger/TrigValidation/TrigValAlgs/python/TrigValAlgsConfig.py @@ -57,3 +57,4 @@ if __name__ == '__main__': cfg = ComponentAccumulator() cfg.merge( TrigEDMCheckerCfg(flags) ) cfg.merge( TrigEDMAuxCheckerCfg(flags) ) + cfg.wasMerged() diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/Validation/CheckL1HLTConsistency.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/Validation/CheckL1HLTConsistency.py index 3aa099aefe49b48071d6ca23aa503a451c6049c4..fe6146b3ed5310c522432ac57d58a90c50a453b2 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/Validation/CheckL1HLTConsistency.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/Validation/CheckL1HLTConsistency.py @@ -175,8 +175,9 @@ def checkL1HLTConsistency(flags): if foundLegacyCaloSeed and foundPhase1CaloSeed: # chain without L1 calo items, cannot have both legacy and phase1 seeds mixedCaloSeed = True if mixedCaloSeed: - log.error('[checkL1HLTConsistency] chain %s contains a mix of legacy and phase1 calo thresholds! L1 items: [%s] (legacy item = %s), L1 seeds: [%s] (foundPhase1CaloSeed = %s, foundLegacyCaloSeed = %s)', chain["chainName"], ",".join(l1item_vec), legacyItem, ",".join(l1thr_vec), foundPhase1CaloSeed, foundLegacyCaloSeed ) - raise Exception("Please fix the chain.") + log.warning('[checkL1HLTConsistency] chain %s contains a mix of legacy and phase1 calo thresholds! L1 items: [%s] (legacy item = %s), L1 seeds: [%s] (foundPhase1CaloSeed = %s, foundLegacyCaloSeed = %s)', chain["chainName"], ",".join(l1item_vec), legacyItem, ",".join(l1thr_vec), foundPhase1CaloSeed, foundLegacyCaloSeed ) + # log.error('[checkL1HLTConsistency] chain %s contains a mix of legacy and phase1 calo thresholds! L1 items: [%s] (legacy item = %s), L1 seeds: [%s] (foundPhase1CaloSeed = %s, foundLegacyCaloSeed = %s)', chain["chainName"], ",".join(l1item_vec), legacyItem, ",".join(l1thr_vec), foundPhase1CaloSeed, foundLegacyCaloSeed ) + # raise Exception("Please fix the chain.") # check legacy and phase1 chains have the correct groups wrongLabel = False diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py index 0bf4edbbd6d002e6e8e4db9fade4cdfbccdcef66..5be099eddb9e1e0072dba7b5f4153382c134db3d 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py @@ -2003,16 +2003,30 @@ def setupMenu(menu_name): ChainProp(name='HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI', l1SeedThresholds=['EM22VHI','PROBETAU100'], stream=[PhysicsStream], groups=TagAndProbeLegGroup+SingleElectronGroup), # Phase-I tau+X chains with elec L1 - ChainProp(name='HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU12'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), - ChainProp(name='HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEcTAU20M'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup, monGroups=['tauMon:t0']), - ChainProp(name='HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEcTAU30M'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), - ChainProp(name='HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEcTAU35M'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), - ChainProp(name='HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU60'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), - ChainProp(name='HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU80'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup, monGroups=['tauMon:t0']), - ChainProp(name='HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU140'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), - ChainProp(name='HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU60'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), - ChainProp(name='HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU80'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), - ChainProp(name='HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU140'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_L1eTAU12_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU12'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_L1cTAU20M_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEcTAU20M'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup, monGroups=['tauMon:t0']), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_L1cTAU30M_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEcTAU30M'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_L1cTAU35M_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEcTAU35M'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_L1eTAU60_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU60'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_L1eTAU80_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU80'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup, monGroups=['tauMon:t0']), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_L1eTAU140_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU140'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_L1eTAU60_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU60'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_L1eTAU80_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU80'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_L1eTAU140_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeTAU140'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + + #tau + X intermediate Phase-I tag, Legacy probe + ChainProp(name='HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_probe_L1TAU8_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU8'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau25_mediumRNN_tracktwoMVA_probe_L1TAU12IM_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU12IM'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup, monGroups=['tauMon:t0']), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau35_mediumRNN_tracktwoMVA_probe_L1TAU20IM_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU20IM'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau40_mediumRNN_tracktwoMVA_probe_L1TAU25IM_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU25IM'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoMVA_probe_L1TAU40_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU40'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_L1TAU60_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU60'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup, monGroups=['tauMon:t0']), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_L1TAU100_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU100'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau60_mediumRNN_tracktwoLLP_probe_L1TAU40_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU40'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoLLP_probe_L1TAU60_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU60'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e26_lhtight_ivarloose_tau180_mediumRNN_tracktwoLLP_probe_L1TAU100_03dRAB_L1eEM26M', l1SeedThresholds=['eEM26M','PROBETAU100'], stream=[PhysicsStream], groups=TagAndProbePhIGroup+SingleElectronGroup), + + # MET + tau tag and probe chains (ATR-23507) ChainProp(name='HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50', l1SeedThresholds=['PROBETAU8','FSNOSEED','FSNOSEED'], groups=TagAndProbeLegGroup+TauMETGroup), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/Connectors.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/Connectors.py index a8b2596e4ebd168f8bc115e0fe0edc0649ee3076..9e1a7c58204243db5e394c48359a8ea82a5e4d22 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/Connectors.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/Connectors.py @@ -221,11 +221,8 @@ class ElectricalConnector(Connector): if signal is None: startbit += nbits continue - flatindex = 0 - if connDef["name"]=="LegacyTopoMerged": - flatindex = 2*startbit + clock - else: # AlfaCtpin - flatindex = 32*clock + startbit + # use a single flatindex value for ALFA and Topo legacy boards + flatindex = 2*startbit + clock tl = TriggerLine( name = signal, startbit = startbit, flatindex = flatindex, nbits = nbits, fpga = None, clock = clock) startbit += nbits self.addTriggerLine(tl, 0, clock)