diff --git a/.vscode/IDEHelperScripts/Setup.cmake b/.vscode/IDEHelperScripts/Setup.cmake index c96a8e975e0f95c0bced93456eeaa25ffa88dcd9..b9dd3ac3e16f1473a4f05a570b5953f38126bde5 100644 --- a/.vscode/IDEHelperScripts/Setup.cmake +++ b/.vscode/IDEHelperScripts/Setup.cmake @@ -2,12 +2,6 @@ message( STATUS "Preparing IDE helpers" ) -# singularity settings -set( ATLAS_SINGULARITY_IMAGE "" CACHE PATH - "Use singularity wrapper" ) -set( ATLAS_SINGULARITY_ARGS "" CACHE STRING - "Singularity weapper args" ) - # Common prefix set( ATLAS_IDE_PREFIX "${CMAKE_BINARY_DIR}/ide_" ) @@ -39,6 +33,14 @@ configure_file( "${CMAKE_CURRENT_LIST_DIR}/flake8_wrapper.sh.in" "${ATLAS_IDE_PR configure_file( "${CMAKE_CURRENT_LIST_DIR}/autopep8_wrapper.sh.in" "${ATLAS_IDE_PREFIX}autopep8" @ONLY ) # gdb wrappers +set( ATLAS_IDE_ASETUP_CALL "asetup --restore" CACHE STRING + "asetup call for IDE helpers" ) +# singularity settings +set( ATLAS_SINGULARITY_IMAGE "" CACHE PATH + "Use singularity wrapper" ) +set( ATLAS_SINGULARITY_ARGS "" CACHE STRING + "Singularity weapper args" ) + configure_file( "${CMAKE_CURRENT_LIST_DIR}/gdb_wrapper.sh.in" "${ATLAS_IDE_PREFIX}gdb_wrapper" @ONLY ) if( ATLAS_SINGULARITY_IMAGE ) configure_file( "${CMAKE_CURRENT_LIST_DIR}/gdb_runner_singularity.sh.in" "${ATLAS_IDE_PREFIX}gdb_runner" @ONLY ) diff --git a/.vscode/IDEHelperScripts/gdb_wrapper.sh.in b/.vscode/IDEHelperScripts/gdb_wrapper.sh.in index e1f46624eb369651310663cf2213fde4129f386d..b9843c29474366b66abd41ea8e7a2740a4d86714 100755 --- a/.vscode/IDEHelperScripts/gdb_wrapper.sh.in +++ b/.vscode/IDEHelperScripts/gdb_wrapper.sh.in @@ -10,7 +10,7 @@ source "${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh" echo binary_dir="@CMAKE_BINARY_DIR@" pushd "${binary_dir}" || exit -asetup --restore +@ATLAS_IDE_ASETUP_CALL@ source "@ATLAS_PLATFORM@/setup.sh" popd || exit echo diff --git a/Calorimeter/CaloCondPhysAlgs/share/CaloAddPedShift_jobOptions.py b/Calorimeter/CaloCondPhysAlgs/share/CaloAddPedShift_jobOptions.py index 8e36e8ccace8ef48c14069c2d752d34c2c1a465c..906d85f79d3ea10921efe6105be1d0479880a35f 100644 --- a/Calorimeter/CaloCondPhysAlgs/share/CaloAddPedShift_jobOptions.py +++ b/Calorimeter/CaloCondPhysAlgs/share/CaloAddPedShift_jobOptions.py @@ -17,10 +17,10 @@ if 'FileName' not in dir(): FileName = "pedestal_shift.txt" if 'GlobalTag' not in dir(): - GlobalTag = 'COMCOND-ES1PT-004-00' + GlobalTag = 'CONDBR2-ES1PA-2023-01' if 'Geometry' not in dir(): - Geometry = 'ATLAS-GEO-10-00-00' + Geometry = 'ATLAS-R2-2015-03-01-00' printfunc ("RunNumber ",RunNumber) printfunc ("LumiBlock ",LumiBlock) diff --git a/Calorimeter/CaloCondPhysAlgs/share/CaloPedestalShift.sh b/Calorimeter/CaloCondPhysAlgs/share/CaloPedestalShift.sh index d636956b14bcc1b9a139181f6e1ce6f6c58ba170..63c486384e28750e09f527b012e0a8ba7395df2e 100755 --- a/Calorimeter/CaloCondPhysAlgs/share/CaloPedestalShift.sh +++ b/Calorimeter/CaloCondPhysAlgs/share/CaloPedestalShift.sh @@ -2,30 +2,32 @@ if [[ $# < 3 ]]; then - echo "Syntax: $0 <filename> <Run1> <LB1> <Run2> <LB2>" - echo "<Run1> <LB1> : run /lumiblock for IOV start of database update" - echo "<Run2> <LB2> : run /lumiblock for IOV end of database update (if not given use open-ended IoV)" + echo "Syntax: $0 <filename> <tag> <Run1> <LB1> <Run2> <LB2>" + echo "<tag> : can be UPD4 or BOTH" + echo "<Run1> <LB1> : run /lumiblock for IoV start of database update" + echo "<Run2> <LB2> : run /lumiblock for IoV end of database update (if not given use open-ended IoV)" exit fi summaryFile="pedestal.summary.txt" inputfilename=$1 -run1=$2 -lb1=$3 +tag=$2 +run1=$3 +lb1=$4 run2=-1 lb2=-1 -if [[ $# >3 ]]; +if [[ $# >4 ]]; then - run2=$4 - lb2=$5 + run2=$5 + lb2=$6 fi -echo " Run /LB for IoOV start update for pedestal " ${run1} ${lb1} +echo " Run /LB for IoV start update for pedestal " ${run1} ${lb1} if [[ $run2 > 0 ]]; then - echo " Run /LB for IoOV end update for pedestal " ${run2} ${lb2} + echo " Run /LB for IoV end update for pedestal " ${run2} ${lb2} fi echo " be careful: you need ~60 Mbytes of free disk space in the running directory... " @@ -53,72 +55,102 @@ fi touch $summaryFile -if ! which AtlCoolCopy.exe 1>/dev/null 2>&1 +if ! which AtlCoolCopy 1>/dev/null 2>&1 then echo "No offline setup found!" exit fi -echo "Running athena to add pedestal shift values to existing UPD1 tag" -athena.py -c "FileName=\"${inputfilename}\";RunNumber=${run1};LumiBlock=${lb1}" CaloCondPhysAlgs/CaloAddPedShift_jobOptions.py > pedestal.log 2>&1 -if [ $? -ne 0 ]; then - echo "Athena reported an error ! Please check pedestal.log!" - exit -fi - -if grep -q ERROR pedestal.log - then - echo "An error occured ! Please check pedestal.log!" - exit -fi +upd1TagName="UPD1" +upd4TagName="UPD4" -nLines=`wc -l calopedestal.txt | cut -f 1 -d " "` -echo " Ncells*Ngains for which pedestal is computed " ${nLines} -if [ $nLines -ne 547404 ]; then - echo "Number of lines in pedstal ascii file is not correct, check log file to investigate possible problem (or disk space)" - exit +if [ $tag == "UPD4" ] + then + echo "Working on UPD4 list" + tags="${upd4TagName}" +elif [ $tag == "BOTH" ] + then + echo "Working on UPD1 and UPD4 lists" + tags="${upd1TagName} ${upd4TagName}" +else + echo "ERROR, expected 'UPD4' or 'BOTH' as type, got: $tag" + exit 2 fi -grep "Pedestal shift found for cell" pedestal.log > ${summaryFile} -nTotal=`wc -l ${summaryFile} | cut -f 1 -d " "` -echo " ===> Number of cells*gains for which pedestal changed " ${nTotal} -echo " Check file " ${summaryFile} " for the full list " -echo " You can also look at pedestalshift_data.root for ntuple information " +echo "tags" ${tags} + + + +for t in $tags +do + echo "use tag $t" + echo "Running athena to add pedestal shift values to existing UPD1 tag" + athena.py -c "FileName=\"${inputfilename}\";RunNumber=${run1};LumiBlock=${lb1}" CaloCondPhysAlgs/CaloAddPedShift_jobOptions.py > pedestal.log 2>&1 + if [ $? -ne 0 ]; then + echo "Athena reported an error ! Please check pedestal.log!" + exit + fi + + if grep -q ERROR pedestal.log + then + echo "An error occured ! Please check pedestal.log!" + exit + fi + + nLines=`wc -l calopedestal.txt | cut -f 1 -d " "` + echo " Ncells*Ngains for which pedestal is computed " ${nLines} + if [ $nLines -ne 547404 ]; then + echo "Number of lines in pedstal ascii file is not correct, check log file to investigate possible problem (or disk space)" + exit + fi + + grep "Pedestal shift found for cell" pedestal.log > ${summaryFile} + nTotal=`wc -l ${summaryFile} | cut -f 1 -d " "` + echo " ===> Number of cells*gains for which pedestal changed " ${nTotal} + echo " Check file " ${summaryFile} " for the full list " + echo " You can also look at pedestalshift_data.root for ntuple information " + + echo "Produce sqlite file for LAr cell pedestalshift values" + CaloPedestal_fillDB.py ${run1} ${lb1} ${run2} ${lb2} ${t} > makedb.log 2>&1 + if [ $? -ne 0 ]; then + echo "An error is reported, check makedb.log" + exit + fi -echo "Produce sqlite file for LAr cell pedestalshift values" -CaloPedestal_fillDB.py ${run1} ${lb1} ${run2} ${lb2} > makedb.log 2>&1 -if [ $? -ne 0 ]; then - echo "An error is reported, check makedb.log" - exit -fi + if [ -f dumpDB_$t.py ] + then + /bin/rm dumpDB_$t.py + fi -if [ -f dumpDB.py ] - then - /bin/rm dumpDB.py -fi + if [[ "$t" == *"UPD1"* ]]; then + tagname="'CALOOflPedestalCellPedestal-UPD1-00'" + elif [[ "$t" == *"UPD4"* ]]; then + tagname="'CALOOflPedestalCellPedestal-UPD4-00'" + fi -cat > dumpDB.py << _EOF_ + cat > dumpDB_$t.py << _EOF_ from CoolConvUtilities import AtlCoolTool -toolNew = AtlCoolTool.AtlCoolTool("sqlite://;schema=caloSqlite.db;dbname=COMP200") -toolNew.usetag("CALOOflPedestalCellPedestal-UPD4-00") +toolNew = AtlCoolTool.AtlCoolTool("sqlite://;schema=caloSqlite.db;dbname=CONDBR2") +toolNew.usetag($tagname) a=toolNew.more('/CALO/Ofl/Pedestal/CellPedestal') -f = file('dumpDB.txt','w') +f = open('dumpDB_$t.txt','w') f.write(str(a)) f.close() exit() _EOF_ -if [ -f dumpDB.txt ] - then - /bin/rm dumpDB.txt -fi + if [ -f dumpDB_$t.txt ] + then + /bin/rm dumpDB_$t.txt + fi -python dumpDB.py + python dumpDB_$t.py -echo " " -echo " Content of new sqlite file : " -cat dumpDB.txt + echo " " + echo " Content of new sqlite file : " + cat dumpDB_$t.txt +done echo " " echo " After checking that everything is OK, upload the new sqlite file with:" diff --git a/Calorimeter/CaloCondPhysAlgs/share/CaloPedestal_fillDB.py b/Calorimeter/CaloCondPhysAlgs/share/CaloPedestal_fillDB.py index b20c62f417f879b149f04b14c2007592507d1877..9d28c1e13262e938e04900b77b1abe1570daf686 100755 --- a/Calorimeter/CaloCondPhysAlgs/share/CaloPedestal_fillDB.py +++ b/Calorimeter/CaloCondPhysAlgs/share/CaloPedestal_fillDB.py @@ -11,7 +11,7 @@ def usage(): print (" The first parameter is the run number of IoV start, the second parameter is the lumiblock number for IoV start") print (" The third and fourth parameter are the Run/lb for IoV end (if run is -1, uses open ended IoV)") -if len(sys.argv)<5: +if len(sys.argv)<6: usage() sys.exit(-1) @@ -19,8 +19,10 @@ runSince = sys.argv[1] lbkSince = sys.argv[2] runUntil = sys.argv[3] lbkUntil = sys.argv[4] +runTag = sys.argv[5] print ("runUntil ", runUntil, lbkUntil) +print ("tag ", runTag) import cppyy from PyCool import cool @@ -44,7 +46,13 @@ print (" iovSince ", iovSince) print (" iovUntil ", iovUntil) #=== folder tag suffix -tag = "CALOOflPedestalCellPedestal-UPD4-00" +tag = "" +if runTag == "UPD4": + tag = "CALOOflPedestalCellPedestal-UPD4-00" +elif runTag == "UPD1": + tag = "CALOOflPedestalCellPedestal-UPD1-00" +else: + print("expected 'UPD4' or 'BOTH'") #=== values for the comment channel author = "gunal" comment = "Updated pedestal shift values" @@ -56,18 +64,21 @@ comment = "Updated pedestal shift values" #================================================== #=== set shortcut g = cppyy.gbl -cppyy.makeClass('std::vector<float>') +#cppyy.makeClass('std::vector<float>') # This doesn't work in ROOT 6.22 anymore +getattr(cppyy.gbl,'std::vector<float>') + #=== get a logger log = CaloCondLogger.getLogger("CaloNoiseWriter") #=== (re-)create the database -db = CaloCondTools.openDb('SQLITE', 'COMP200', 'UPDATE') +db = CaloCondTools.openDb('SQLITE', 'CONDBR2', 'UPDATE') try: #=== creating folder specifications spec = cool.RecordSpecification() spec.extend( 'CaloCondBlob16M', cool.StorageType.Blob16M ) + fspec = cool.FolderSpecification(cool.FolderVersioning.MULTI_VERSION, spec) #=== create the folder folderPath = CaloCondTools.getCaloPrefix()+"Ofl/Pedestal/CellPedestal" @@ -78,7 +89,7 @@ try: folder = db.getFolder(folderPath) except Exception: log.warning("Folder %s not found, creating it...", folderPath) - folder = db.createFolder(folderPath, spec, desc, cool.FolderVersioning.MULTI_VERSION, True) + folder = db.createFolder(folderPath, fspec, desc, True) #================================================== #=== Create the CaloCondBlobFlt objects diff --git a/Control/AthenaConfiguration/python/AthConfigFlags.py b/Control/AthenaConfiguration/python/AthConfigFlags.py index 9a2a090903df4653bf491d185adae8f0bc61c60c..21191a6a31db7836b2a80f609f62e997f9bba280 100644 --- a/Control/AthenaConfiguration/python/AthConfigFlags.py +++ b/Control/AthenaConfiguration/python/AthConfigFlags.py @@ -144,7 +144,8 @@ class AthConfigFlags(object): self._flagdict=dict() self._locked=False self._dynaflags = dict() - self._loaded = set() # dynamic dlags that were loaded + self._loaded = set() # dynamic dlags that were loaded + self._categoryCache = set() # cache for already found categories self._hash = None self._parser = None self._args = None # user args from parser @@ -251,13 +252,21 @@ class AthConfigFlags(object): self._loadDynaFlags( prefix ) def hasCategory(self, name): - path = name+'.' + # We cache successfully found categories + if name in self._categoryCache: + return True + + # If not found do search through all keys. + # TODO: could be improved by using a trie for _flagdict for f in self._flagdict.keys(): - if f.startswith(path): + if f.startswith(name+'.'): + self._categoryCache.add(name) return True for c in self._dynaflags.keys(): if c.startswith(name): + self._categoryCache.add(name) return True + return False def hasFlag(self, name): @@ -265,24 +274,20 @@ class AthConfigFlags(object): def _set(self,name,value): self._tryModify() - if name in self._flagdict: + try: self._flagdict[name].set(value) - return - errString="No flag with name \'{}\' found".format( name ) - closestMatch=get_close_matches(name,self._flagdict.keys(),1) - if len(closestMatch)>0: - errString+=". Did you mean \'{}\'?".format( closestMatch[0] ) - raise KeyError(errString) + except KeyError: + closestMatch = get_close_matches(name,self._flagdict.keys(),1) + raise KeyError(f"No flag with name '{name}' found" + + (f". Did you mean '{closestMatch[0]}'?" if closestMatch else "")) def _get(self,name): - if name in self._flagdict: + try: return self._flagdict[name].get(self) - - errString="No flag with name \'{}\' found".format( name ) - closestMatch=get_close_matches(name,self._flagdict.keys(),1) - if len(closestMatch)>0: - errString+=". Did you mean \'{}\'?".format( closestMatch[0] ) - raise KeyError(errString) + except KeyError: + closestMatch = get_close_matches(name,self._flagdict.keys(),1) + raise KeyError(f"No flag with name '{name}' found" + + (f". Did you mean '{closestMatch[0]}'?" if closestMatch else "")) def __call__(self,name): return self._get(name) diff --git a/Control/AthenaMP/python/AthenaMPConfig.py b/Control/AthenaMP/python/AthenaMPConfig.py index df1ada387ec479ec22cb465da4a62f6440a20dfb..17ff30cfacb904dc1bdc95fc63a3317fcc32d31c 100644 --- a/Control/AthenaMP/python/AthenaMPConfig.py +++ b/Control/AthenaMP/python/AthenaMPConfig.py @@ -40,6 +40,8 @@ def athenaMPRunArgsToFlags(runArgs, flags): if hasattr(runArgs, "parallelCompression"): flags.MP.UseParallelCompression = runArgs.parallelCompression + if hasattr(runArgs, "eventService"): + flags.MP.Strategy = "EventService" def AthenaMPCfg(flags): @@ -154,11 +156,13 @@ def AthenaMPCfg(flags): mpevtloop.Tools += [ CompFactory.EvtRangeScatterer(ProcessorChannel = channelScatterer2Processor, EventRangeChannel = event_range_channel, DoCaching=flags.MP.EvtRangeScattererCaching) ] - mpevtloop.Tools += [ CompFactory.vtRangeProcessor(IsPileup=mpevtloop.IsPileup, - Channel2Scatterer = channelScatterer2Processor, - Channel2EvtSel = channelProcessor2EvtSel, - Debug=debug_worker) ] + mpevtloop.Tools += [ CompFactory.EvtRangeProcessor(IsPileup=mpevtloop.IsPileup, + Channel2Scatterer = channelScatterer2Processor, + Channel2EvtSel = channelProcessor2EvtSel, + Debug=debug_worker) ] + from AthenaServices.OutputStreamSequencerSvcConfig import OutputStreamSequencerSvcCfg + result.merge(OutputStreamSequencerSvcCfg(flags,incidentName="NextEventRange")) else: msg.warning("Unknown strategy %s. No MP tools will be configured", flags.MP.Strategy) diff --git a/Control/AthenaServices/python/OutputStreamSequencerSvcConfig.py b/Control/AthenaServices/python/OutputStreamSequencerSvcConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..88d6bcb576f6167820ee82104e6f4eb89f8e4fe9 --- /dev/null +++ b/Control/AthenaServices/python/OutputStreamSequencerSvcConfig.py @@ -0,0 +1,12 @@ +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + + +def OutputStreamSequencerSvcCfg(flags, incidentName=''): + result = ComponentAccumulator() + service = CompFactory.OutputStreamSequencerSvc("OutputStreamSequencerSvc", SequenceIncidentName=incidentName) + result.addService(service) + return result + + diff --git a/DataQuality/DataQualityConfigurations/config/LArMonitoring/collisions_run.config b/DataQuality/DataQualityConfigurations/config/LArMonitoring/collisions_run.config index 6e8f12b2cdf3b8f6bd5b06f1bfcef7dafd0c9f17..8fb22f8087e49965bf8051c81e31bc5a64d4cc39 100644 --- a/DataQuality/DataQualityConfigurations/config/LArMonitoring/collisions_run.config +++ b/DataQuality/DataQualityConfigurations/config/LArMonitoring/collisions_run.config @@ -4930,6 +4930,11 @@ dir LAr { algorithm = LAr_GatherData display = LogZ } + hist LArCollAvgTime_vs_BCID { + output = LAr/LAR_GLOBAL/Collisions-Bkg + algorithm = LAr_GatherData + display = LogZ + } hist LArCollTimeLumiBlockTimeCut { output = LAr/LAR_GLOBAL/Collisions-Bkg algorithm = LAr_CollTime_BinsGreaterThan0 diff --git a/Event/xAOD/xAODMetaDataCnv/python/InfileMetaDataConfig.py b/Event/xAOD/xAODMetaDataCnv/python/InfileMetaDataConfig.py index 30d470bfd94d088f1740db08edeccc95882089b3..b276dc056c54bb891e156b63c65021fc16b8b793 100644 --- a/Event/xAOD/xAODMetaDataCnv/python/InfileMetaDataConfig.py +++ b/Event/xAOD/xAODMetaDataCnv/python/InfileMetaDataConfig.py @@ -68,8 +68,9 @@ def InfileMetaDataCfg(flags, streamName="", AcceptAlgs=[]): # 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) + if "CutBookkeepers" in flags.Input.MetadataItems or streamName not in ["ESD", "AOD"]: + from EventBookkeeperTools.EventBookkeeperToolsConfig import CutFlowOutputList + MetadataItemList += CutFlowOutputList(flags) # Data specific MetaData components if not flags.Input.isMC: diff --git a/Event/xAOD/xAODTrigger/Root/jFexMETRoI_v1.cxx b/Event/xAOD/xAODTrigger/Root/jFexMETRoI_v1.cxx index 60d9ae62bed71ed90308a1f9a7dae2149fef9638..cab49f3919ee0408fa00d6a9ba73d982267712f6 100644 --- a/Event/xAOD/xAODTrigger/Root/jFexMETRoI_v1.cxx +++ b/Event/xAOD/xAODTrigger/Root/jFexMETRoI_v1.cxx @@ -103,12 +103,14 @@ namespace xAOD { /// Ex in 1 MeV scale int jFexMETRoI_v1::Ex() const { - return tobEx()*tobEtScale(); + int hemisphere = fpgaNumber() == 0 ? 1 : -1; + return hemisphere*tobEx()*tobEtScale(); } /// Ey in 1 MeV scale int jFexMETRoI_v1::Ey() const { - return tobEy()*tobEtScale(); + int hemisphere = fpgaNumber() == 0 ? 1 : -1; + return hemisphere*tobEy()*tobEtScale(); } diff --git a/InnerDetector/InDetCalibAlgs/PixelCalibAlgs/src/PixelConvert.cxx b/InnerDetector/InDetCalibAlgs/PixelCalibAlgs/src/PixelConvert.cxx index d6080518dc114c53a5c5781121b5e2ba482ceaa0..663109c9a0dee8bd73199ca818fbb53cf5ad9b09 100755 --- a/InnerDetector/InDetCalibAlgs/PixelCalibAlgs/src/PixelConvert.cxx +++ b/InnerDetector/InDetCalibAlgs/PixelCalibAlgs/src/PixelConvert.cxx @@ -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 */ #include "PixelCalibAlgs/PixelConvert.h" @@ -154,7 +154,7 @@ namespace PixelConvert { std::istringstream s(onlineID); system = 2; // ID subSystem=1; // Pixel - char c1, c; + char c1{}, c{}; s >> c1; switch (c1) { case 'D': @@ -175,7 +175,7 @@ namespace PixelConvert { s >> c >> c; if ( c!='S' ) return 0; { - int sect, insect; + int sect{}, insect{}; s >> sect; if ( sect<=0 || sect>(NinDisk/NinSector)) return 0; s >> c >> c; @@ -202,7 +202,7 @@ namespace PixelConvert { s >> c >> c; if ( c!='B' ) return 0; { - int bist, stav; + int bist{}, stav{}; s >> bist >> c >> c >> stav; if ( c!='S' || bist<=0 || bist>BSMax[layer] || stav<=0 || stav>2 ) return 0; @@ -248,7 +248,7 @@ namespace PixelConvert { } std::string OfflineID(const std::string& onlineID) { - int system, subSystem, endcap, layer, phi, eta; + int system{}, subSystem{}, endcap{}, layer{}, phi{}, eta{}; if ( OfflineID(onlineID,system,subSystem,endcap,layer,phi,eta) ) return PackOfflineID(system,subSystem,endcap,layer,phi,eta); else return Error; @@ -274,14 +274,14 @@ namespace PixelConvert { } std::string OfflineID(int hashID) { - int system, subSystem, endcap, layer, phi, eta; + int system{}, subSystem{}, endcap{}, layer{}, phi{}, eta{}; OfflineID(hashID,system,subSystem,endcap,layer,phi,eta); return PackOfflineID(system,subSystem,endcap,layer,phi,eta); } int HashID(const std::string& ID) { - int system, subSystem, endcap, layer, phi, eta; - int success; + int system{}, subSystem{}, endcap{}, layer{}, phi{}, eta{}; + int success{}; if ( ID.at(0)=='[' ) // already offline ID success=UnpackOfflineID(ID,system,subSystem,endcap,layer,phi,eta); else // probably it is online ID @@ -315,7 +315,7 @@ namespace PixelConvert { std::string ID=OnlineID; std::string newID(Error); size_t pos=0; - char ch; + char ch{}; std::replace(ID.begin(), ID.end(), '-', '_'); if ( ID.at(0)=='L' ) { @@ -367,8 +367,8 @@ namespace PixelConvert { std::replace(ID.begin(), ID.end(), '_', '-'); if ( ID.at(0)=='L' ) return ID; std::istringstream in(DCSID); - int b,s,dum; - char c, c1, c2; + int b{},s{},dum{}; + char c{}, c1{}, c2{}; in >> c >> dum >> c >> c >> c1 >> b >> c >> c2 >> s; if ( c1!='B' || c2!='S' ) return newID; int sector=b*2-3+s; diff --git a/InnerDetector/InDetConfig/python/InDetConversionFinderToolsConfig.py b/InnerDetector/InDetConfig/python/InDetConversionFinderToolsConfig.py index a5a3410014f13245189fa4be197701b8d9c96234..ea3941f6d2f5bf9b9fc5acf250de978046a266d8 100644 --- a/InnerDetector/InDetConfig/python/InDetConversionFinderToolsConfig.py +++ b/InnerDetector/InDetConfig/python/InDetConversionFinderToolsConfig.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 InDetConversionFinderTools package from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator @@ -73,7 +73,6 @@ def BPHY_VertexPointEstimatorCfg(flags, name="BPHY_VertexPointEstimator", **kwar kwargs.setdefault("MinDeltaR", [-10000.,-10000.,-10000.]) kwargs.setdefault("MaxDeltaR", [10000.,10000.,10000.]) kwargs.setdefault("MaxPhi", [10000., 10000., 10000.]) - kwargs.setdefault("MaxChi2OfVtxEstimation", 2000.) #NOTE MaxChi2OfVtxEstimation differs from tracking default acc.setPrivateTools(CompFactory.InDet.VertexPointEstimator(name, **kwargs)) return acc @@ -84,7 +83,6 @@ def V0VertexPointEstimatorCfg(flags, name="InDetV0VertexPointEstimator", **kwarg kwargs.setdefault("MaxTrkXYValue", [ 400., 400., 400.]) kwargs.setdefault("MinArcLength", [-800., -800., -800.]) kwargs.setdefault("MaxArcLength", [ 800., 800., 800.]) - kwargs.setdefault("MaxChi2OfVtxEstimation", 2000.) return BPHY_VertexPointEstimatorCfg(flags, name, **kwargs) def InDetConversionFinderToolsCfg(flags, name="ConversionFinderTool", **kwargs): @@ -118,7 +116,6 @@ def InDetConversionFinderToolsCfg(flags, name="ConversionFinderTool", **kwargs): kwargs.setdefault("VertexFitterTool", acc.popToolsAndMerge( SecVx_TrkVKalVrtFitterCfg(flags))) - kwargs.setdefault("TrackParticleCollection", flags.Egamma.Keys.Output.GSFTrackParticles) kwargs.setdefault("IsConversion", True) kwargs.setdefault("MaxDistVtxHit", diff --git a/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelConfig.py b/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelConfig.py index 62ccb6731f340a1af1eb585ae9d2055f97bc72c2..95fbfed716102b600433059f0f1c09ca37917ad0 100644 --- a/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelConfig.py +++ b/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelConfig.py @@ -1,7 +1,7 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AccumulatorCache import AccumulatorCache -@AccumulatorCache + def PixelGeoModelCfg(flags): from AtlasGeoModel.GeometryDBConfig import InDetGeometryDBSvcCfg db = InDetGeometryDBSvcCfg(flags) @@ -30,6 +30,7 @@ def PixelAlignmentCfg(flags): return PixelAlignCondAlgCfg(flags) +@AccumulatorCache def PixelSimulationGeometryCfg(flags): # main GeoModel config acc = PixelGeoModelCfg(flags) @@ -37,6 +38,7 @@ def PixelSimulationGeometryCfg(flags): return acc +@AccumulatorCache def PixelReadoutGeometryCfg(flags): # main GeoModel config acc = PixelGeoModelCfg(flags) diff --git a/InnerDetector/InDetDetDescr/SCT_GeoModel/python/SCT_GeoModelConfig.py b/InnerDetector/InDetDetDescr/SCT_GeoModel/python/SCT_GeoModelConfig.py index c9220aead67b295b492364cf2ceb8b1b6ebfc59f..816cf0f0a2592f66b22cb917c7ecc1005501e9d6 100644 --- a/InnerDetector/InDetDetDescr/SCT_GeoModel/python/SCT_GeoModelConfig.py +++ b/InnerDetector/InDetDetDescr/SCT_GeoModel/python/SCT_GeoModelConfig.py @@ -1,7 +1,7 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AccumulatorCache import AccumulatorCache -@AccumulatorCache + def SCT_GeoModelCfg(flags): from AtlasGeoModel.GeometryDBConfig import InDetGeometryDBSvcCfg db = InDetGeometryDBSvcCfg(flags) @@ -30,6 +30,7 @@ def SCT_AlignmentCfg(flags): return SCT_AlignCondAlgCfg(flags) +@AccumulatorCache def SCT_SimulationGeometryCfg(flags): # main GeoModel config acc = SCT_GeoModelCfg(flags) @@ -37,6 +38,7 @@ def SCT_SimulationGeometryCfg(flags): return acc +@AccumulatorCache def SCT_ReadoutGeometryCfg(flags): # main GeoModel config acc = SCT_GeoModelCfg(flags) diff --git a/InnerDetector/InDetDetDescr/TRT_GeoModel/python/TRT_GeoModelConfig.py b/InnerDetector/InDetDetDescr/TRT_GeoModel/python/TRT_GeoModelConfig.py index 57db7c6416d9ea61cae0dae8702fa0c34345781e..b8cc85e793ccab302d05d563e77ead1de8e1ca12 100644 --- a/InnerDetector/InDetDetDescr/TRT_GeoModel/python/TRT_GeoModelConfig.py +++ b/InnerDetector/InDetDetDescr/TRT_GeoModel/python/TRT_GeoModelConfig.py @@ -1,9 +1,9 @@ # -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration # from AthenaConfiguration.AccumulatorCache import AccumulatorCache -@AccumulatorCache + def TRT_GeoModelCfg(flags): from AtlasGeoModel.GeometryDBConfig import InDetGeometryDBSvcCfg db = InDetGeometryDBSvcCfg(flags) @@ -43,6 +43,7 @@ def TRT_AlignmentCfg(flags): return acc +@AccumulatorCache def TRT_SimulationGeometryCfg(flags): # main GeoModel config acc = TRT_GeoModelCfg(flags) @@ -50,6 +51,7 @@ def TRT_SimulationGeometryCfg(flags): return acc +@AccumulatorCache def TRT_ReadoutGeometryCfg(flags): # main GeoModel config acc = TRT_GeoModelCfg(flags) diff --git a/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/src/PixelPrepDataToxAOD.cxx b/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/src/PixelPrepDataToxAOD.cxx index ef814c355fa63572b697787477ae6a39ea558fb1..951e1730a9e18ff9d0530c9f38e965cf119e30d8 100644 --- a/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/src/PixelPrepDataToxAOD.cxx +++ b/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/src/PixelPrepDataToxAOD.cxx @@ -375,18 +375,12 @@ StatusCode PixelPrepDataToxAOD::execute() if (m_need_sihits) { const std::vector<SiHit> matched_hits = findAllHitsCompatibleWithCluster(prd, &siHits[prd->detectorElement()->identifyHash()], sdo_tracks); if (m_writeSiHits) { - if (!m_writeSDOs) { - ATH_MSG_WARNING("Si hit truth information requested, but SDO collection not available! (m_writeSiHits)"); - } addSiHitInformation(xprd, prd, matched_hits); } if (m_writeNNinformation) { - if (!m_writeSDOs) { - ATH_MSG_WARNING("Si hit truth information requested, but SDO collection not available! (m_writeNNinformation)"); - } addNNTruthInfo(xprd, prd, matched_hits); - } + } } } } diff --git a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredSecVertexFinding.py b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredSecVertexFinding.py index c2ad19659633288515cbcfe8f702cdadd7c716c3..87563469496923529d2e3d3564479fb90aab10ac 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredSecVertexFinding.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredSecVertexFinding.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration from __future__ import print_function @@ -159,7 +159,6 @@ class ConfiguredSecVertexFinding: VertexPointEstimator=InDetSecVtxPointEstimator, PostSelector=InDetSecVtxPostSelector, SingleTrackConversionTool=InDetSingleTrackSecVtx, - TrackParticleCollection=TrackParticles, RemoveTrtTracks=VertexCuts.Finder_RemoveTrtTracks(), IsConversion=VertexCuts.Finder_IsConversion(), MinDistVtxHit=VertexCuts.Finder_MinDistVtxHit(), diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py index 9f67e2cd7f6e5b14984d3e60c6928e99a8985b75..9059d44e45c4cbce8cb31152670fa7e4d0b16a38 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py @@ -270,8 +270,7 @@ if InDetFlags.doV0Finder(): MaxArcLength = [800.,800.,800.], MinDeltaR = [-10000.,-10000.,-10000.], MaxDeltaR = [10000.,10000.,10000.], - MaxPhi = [10000., 10000., 10000.], - MaxChi2OfVtxEstimation = 2000.) + MaxPhi = [10000., 10000., 10000.]) ToolSvc += InDetV0VtxPointEstimator if (InDetFlags.doPrintConfigurables()): printfunc (InDetV0VtxPointEstimator) diff --git a/InnerDetector/InDetRawEvent/InDetSimData/CMakeLists.txt b/InnerDetector/InDetRawEvent/InDetSimData/CMakeLists.txt index a4d8cd4f7adb1dad6fbae8f93f8ee8e7f7d3c9a8..ec4ed37c0d91e326b9444ddc433ba29f0342a84f 100644 --- a/InnerDetector/InDetRawEvent/InDetSimData/CMakeLists.txt +++ b/InnerDetector/InDetRawEvent/InDetSimData/CMakeLists.txt @@ -8,7 +8,7 @@ atlas_add_library( InDetSimData src/InDetSimData.cxx src/InDetSimDataCollection.cxx PUBLIC_HEADERS InDetSimData - LINK_LIBRARIES AthenaKernel Identifier GeneratorObjects AthAllocators) + LINK_LIBRARIES AthenaKernel Identifier GeneratorObjects) atlas_add_dictionary( InDetSimDataDict InDetSimData/InDetSimDataDict.h diff --git a/InnerDetector/InDetRawEvent/InDetSimData/InDetSimData/InDetSimDataCollection.h b/InnerDetector/InDetRawEvent/InDetSimData/InDetSimData/InDetSimDataCollection.h index 8cb86792064909bb41951367a6625956bce6bffa..5538d92417d6ac32fff88b9c29e4a6dd87779e1f 100755 --- a/InnerDetector/InDetRawEvent/InDetSimData/InDetSimData/InDetSimDataCollection.h +++ b/InnerDetector/InDetRawEvent/InDetSimData/InDetSimData/InDetSimDataCollection.h @@ -13,16 +13,13 @@ #ifndef INDETSIMDATA_INDETSIMDATACOLLECTION_H #define INDETSIMDATA_INDETSIMDATACOLLECTION_H -#include "AthAllocators/ArenaPoolSTLAllocator.h" #include "AthenaKernel/CLASS_DEF.h" #include "Identifier/Identifier.h" #include "InDetSimData/InDetSimData.h" // std includes #include <map> class InDetSimDataCollection - : public std::map<Identifier, InDetSimData, std::less<Identifier>, - SG::ArenaPoolSTLAllocator< - std::pair<const Identifier, InDetSimData>>> { + : public std::map<Identifier, InDetSimData>{ // empty }; CLASS_DEF(InDetSimDataCollection, 2543, 1) diff --git a/InnerDetector/InDetRecTools/InDetConversionFinderTools/InDetConversionFinderTools/InDetConversionFinderTools.h b/InnerDetector/InDetRecTools/InDetConversionFinderTools/InDetConversionFinderTools/InDetConversionFinderTools.h index 181ea8c1374913ff4b1734302a8dc9ecfc37028f..a307fda50286579698a176985ed3d37242762c54 100755 --- a/InnerDetector/InDetRecTools/InDetConversionFinderTools/InDetConversionFinderTools/InDetConversionFinderTools.h +++ b/InnerDetector/InDetRecTools/InDetConversionFinderTools/InDetConversionFinderTools/InDetConversionFinderTools.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ /*************************************************************************** @@ -122,13 +122,6 @@ protected: "Tool for track Selection" }; - SG::ReadHandleKey<xAOD::TrackParticleContainer> m_TrkParticleCollectionKey{ - this, - "TrackParticleCollection", - "", - "Name of the input track particle container" - }; - bool passPreSelection(TrackPairsSelector::Cache& cache, const xAOD::TrackParticle* track_pos, const xAOD::TrackParticle* track_neg, diff --git a/InnerDetector/InDetRecTools/InDetConversionFinderTools/InDetConversionFinderTools/VertexPointEstimator.h b/InnerDetector/InDetRecTools/InDetConversionFinderTools/InDetConversionFinderTools/VertexPointEstimator.h index b008ef55e0f60a1bde6a0d9bba05efeb647c3649..93bf257864b2b6a3a7ca43906a10876ab61bcd95 100644 --- a/InnerDetector/InDetRecTools/InDetConversionFinderTools/InDetConversionFinderTools/VertexPointEstimator.h +++ b/InnerDetector/InDetRecTools/InDetConversionFinderTools/InDetConversionFinderTools/VertexPointEstimator.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 */ #ifndef INDETCONVERSIONFINDERTOOLS_VERTEXPOINTESTIMATOR_H @@ -85,7 +85,6 @@ namespace InDet { std::vector<double> m_maxDr; /**maximum difference between helix centers*/ std::vector<double> m_maxHl; /**maximum ratio H/l */ std::vector<double> m_maxPhi; /**maximum DPhi at the estimated vertex position */ - double m_maxChi2; /** max chi2 of the estimated vertex position*/ bool m_returnOnError; }; diff --git a/InnerDetector/InDetRecTools/InDetConversionFinderTools/src/InDetConversionFinderTools.cxx b/InnerDetector/InDetRecTools/InDetConversionFinderTools/src/InDetConversionFinderTools.cxx index f823b3e9db86fd3b34e25f31ac747fabe991faae..57b1bf230355c495cefae9fd4bfd2812da206108 100755 --- a/InnerDetector/InDetRecTools/InDetConversionFinderTools/src/InDetConversionFinderTools.cxx +++ b/InnerDetector/InDetRecTools/InDetConversionFinderTools/src/InDetConversionFinderTools.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ /*************************************************************************** @@ -17,11 +17,6 @@ #include "AthLinks/ElementLink.h" #include "TrkTrack/LinkToTrack.h" -#include "xAODTracking/TrackParticle.h" -#include "xAODTracking/Vertex.h" -#include "xAODTracking/TrackParticleContainer.h" -#include "xAODTracking/VertexContainer.h" - #include <vector> #include <utility> @@ -101,9 +96,6 @@ InDetConversionFinderTools::InDetConversionFinderTools(const std::string& t, } ATH_MSG_INFO("Retrieved tool " << m_trkSelector); - ATH_CHECK(m_TrkParticleCollectionKey.initialize( - !m_TrkParticleCollectionKey.key().empty())); - ATH_MSG_INFO("Initialization successful"); return StatusCode::SUCCESS; } diff --git a/InnerDetector/InDetRecTools/InDetConversionFinderTools/src/VertexPointEstimator.cxx b/InnerDetector/InDetRecTools/InDetConversionFinderTools/src/VertexPointEstimator.cxx index 1c5fa0104f92dbd964dbec8537a242eba05bbf38..d9e06632ff711bb2233744abe92ac612ffc4f16a 100644 --- a/InnerDetector/InDetRecTools/InDetConversionFinderTools/src/VertexPointEstimator.cxx +++ b/InnerDetector/InDetRecTools/InDetConversionFinderTools/src/VertexPointEstimator.cxx @@ -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 */ /*************************************************************************** @@ -27,7 +27,7 @@ namespace InDet { // ---------------------------------- VertexPointEstimator::VertexPointEstimator(const std::string& type, const std::string& name, const IInterface* parent) : AthAlgTool(type, name, parent), - m_maxChi2(20.), m_returnOnError(true) + m_returnOnError(true) { declareInterface<VertexPointEstimator>(this); /// Cuts for selecting track pairs @@ -72,7 +72,6 @@ namespace InDet { declareProperty("MaxTrkXYValue", m_maxR); declareProperty("MinArcLength", m_minArcLength); declareProperty("MaxArcLength", m_maxArcLength); - declareProperty("MaxChi2OfVtxEstimation", m_maxChi2); declareProperty("MinDeltaR", m_minDr); declareProperty("MaxDeltaR", m_maxDr); declareProperty("MaxHl", m_maxHl); diff --git a/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/CscRawDataCnv_p2.cxx b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/CscRawDataCnv_p2.cxx index 40eacc62f00e54aa7fbafc678cab2525b71bb3dc..bdc2a2784599eaeb4299ae206d1958b1dfbd68a9 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/CscRawDataCnv_p2.cxx +++ b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/CscRawDataCnv_p2.cxx @@ -24,7 +24,7 @@ CscRawDataCnv_p2::transToPers(const CscRawData* trans, CscRawData_p2* pers, MsgS Identifier id; IdentifierHash geoHash; if (!m_idHelp->cscIdHelper().get_id(trans->hashId(), id, &context)) { - if (!m_idHelp->cscIdHelper().get_geo_channel_hash(id, geoHash)) pers->m_hashId = geoHash; + if (!m_idHelp->cscIdHelper().get_channel_hash(id, geoHash)) pers->m_hashId = geoHash; } } else { throw std::runtime_error(Form("File: %s, Line: %d\nCscRawDataCnv_p2::transToPers() - No MuonIdHelperSvc present (needed for channel hash conversion)", __FILE__, __LINE__)); @@ -70,14 +70,7 @@ CscRawDataCnv_p2::persToTrans(const CscRawData_p2* pers, CscRawData* trans, MsgS pers->m_rpuID, pers->m_width); // translate the persistent p2 (geometrical) hash into a positional hash (as expected by the transient data format) - IdentifierHash geoHash = pers->m_hashId; - IdentifierHash hash; - if (m_idHelp) { - IdContext context = m_idHelp->cscIdHelper().channel_context(); - if (!m_idHelp->cscIdHelper().get_hash_fromGeoHash(geoHash, hash, &context)) trans->setHashID(hash); - } else { - throw std::runtime_error(Form("File: %s, Line: %d\nCscRawDataCnv_p2::persToTrans() - No MuonIdHelperSvc present (needed for channel hash conversion)", __FILE__, __LINE__)); - } + trans->setHashID(pers->m_hashId); if (pers->m_isTimeComputed) trans->setTime (pers->m_time); } diff --git a/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/CscRawDataCnv_p3.cxx b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/CscRawDataCnv_p3.cxx index bcae0d19ecff73c7eb107621f7d979f83a2d7d5d..f6910fb6df1a0c0671e445ec4d8f3614474c20e3 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/CscRawDataCnv_p3.cxx +++ b/MuonSpectrometer/MuonCnv/MuonEventAthenaPool/src/CscRawDataCnv_p3.cxx @@ -23,7 +23,7 @@ CscRawDataCnv_p3::transToPers(const CscRawData* trans, CscRawData_p3* pers, MsgS Identifier id; IdentifierHash geoHash; if (!m_idHelp->cscIdHelper().get_id(trans->hashId(), id, &context)) { - if (!m_idHelp->cscIdHelper().get_geo_channel_hash(id, geoHash)) pers->m_hashId = geoHash; + if (!m_idHelp->cscIdHelper().get_channel_hash(id, geoHash)) pers->m_hashId = geoHash; } } else { throw std::runtime_error(Form("File: %s, Line: %d\nCscRawDataCnv_p3::transToPers() - No MuonIdHelperSvc present (needed for channel hash conversion)", __FILE__, __LINE__)); @@ -38,17 +38,9 @@ CscRawDataCnv_p3::persToTrans(const CscRawData_p3* pers, CscRawData* trans, MsgS pers->m_id, pers->m_rpuID, pers->m_width); - if (m_idHelp) { - // translate the persistent p3 (geometrical) hash into a positional hash (as expected by the transient data format) - IdentifierHash geoHash = pers->m_hashId; - IdentifierHash hash; - IdContext context = m_idHelp->cscIdHelper().channel_context(); - if (!m_idHelp->cscIdHelper().get_hash_fromGeoHash(geoHash, hash, &context)) { - trans->setHashID(hash); - } - } else { - throw std::runtime_error(Form("File: %s, Line: %d\nCscRawDataCnv_p3::persToTrans() - No MuonIdHelperSvc present (needed for channel hash conversion)", __FILE__, __LINE__)); - } + // translate the persistent p3 (geometrical) hash into a positional hash (as expected by the transient data format) + trans->setHashID(pers->m_hashId); + if (pers->m_isTimeComputed) trans->setTime (pers->m_time); } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/MuonAlignmentCondAlg.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/MuonAlignmentCondAlg.h index d9174f3a66e39cee10dd5960f2c426b6be03384f..277807cfacd9afa2e15f80f0cbdf8026f2700276 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/MuonAlignmentCondAlg.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/MuonAlignmentCondAlg.h @@ -99,7 +99,7 @@ private: StatusCode loadMdtAlignAsBuilt(const std::string& folderName); StatusCode loadNswAlignAsBuilt(const std::string& mmFolderName, const std::string& sTgcFolderName); - void setALinesFromAscii(ALineMapContainer* writeALineCdo) const; + StatusCode setALinesFromAscii(ALineMapContainer* writeALineCdo) const; void setAsBuiltFromAscii(MdtAsBuiltMapContainer* writeCdo) const; void dumpALines(const std::string& folderName, ALineMapContainer* writeALineCdo); void dumpBLines(const std::string& folderName, BLineMapContainer* writeBLineCdo); diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentCondAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentCondAlg.cxx index ba90c6f4be2a80c152395cd13384e45ab76c0ff3..829c1dd8fd99203b15e89478211b9cd12bc667dc 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentCondAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MuonAlignmentCondAlg.cxx @@ -113,6 +113,8 @@ StatusCode MuonAlignmentCondAlg::loadParameters() { } StatusCode MuonAlignmentCondAlg::loadAlignABLines() { + + StatusCode sc = StatusCode::SUCCESS; // ======================= // Write ALine Cond Handle // ======================= @@ -155,6 +157,12 @@ StatusCode MuonAlignmentCondAlg::loadAlignABLines() { } } + // After all the folders have been processed, if the A-Lines are empty we are on MC + if (!m_aLinesFile.empty() && (int)writeALineCdo.get()->size() == 0) { + sc = setALinesFromAscii(writeALineCdo.get()); + if (sc.isFailure()) return StatusCode::FAILURE; + } + if (writeALineHandle.record(rangeALineW, std::move(writeALineCdo)).isFailure()) { ATH_MSG_FATAL("Could not record ALineMapContainer " << writeALineHandle.key() << " with EventRange " << rangeALineW << " into Conditions Store"); @@ -604,7 +612,11 @@ StatusCode MuonAlignmentCondAlg::loadAlignABLines(const std::string& folderName, << nDecodedLines << "/" << nNewDecodedALines << "/" << nNewDecodedBLines); // set A-lines from ASCII file - if (!m_aLinesFile.empty() && (int)writeALineCdo->size() > 0) setALinesFromAscii(writeALineCdo); + StatusCode sc = StatusCode::SUCCESS; + if (!m_aLinesFile.empty() && (int)writeALineCdo->size() > 0) { + sc = setALinesFromAscii(writeALineCdo); + if (sc.isFailure()) return StatusCode::FAILURE; + } // dump A-lines to log file if (m_dumpALines && (int)writeALineCdo->size() > 0) dumpALines(folderName, writeALineCdo); @@ -1109,45 +1121,119 @@ void MuonAlignmentCondAlg::dumpILines(const std::string& folderName, CscInternal } } -void MuonAlignmentCondAlg::setALinesFromAscii(ALineMapContainer* writeALineCdo) const { - ATH_MSG_INFO(" Set alignment constants from text file " << m_aLinesFile); - - std::ifstream infile; - infile.open(m_aLinesFile); - - char line[512]; - ATH_MSG_DEBUG("reading file"); - - while (infile.getline(line, 512)) { - std::istringstream is(line); - - char AlineMarker[2]; - std::string name; - int jff, jzz, obj; - float tras, traz, trat, rots, rotz, rott; - if (is >> AlineMarker >> name >> jff >> jzz >> obj >> tras >> traz >> trat >> rots >> rotz >> rott) { - ATH_MSG_DEBUG("SUCCESSFULY read line: " << line); - } else { - ATH_MSG_ERROR("ERROR reading line: " << line); - } - - if (AlineMarker[0] == '\0') { - ATH_MSG_DEBUG("read empty line!"); - } else { - // loop through A-line container and find the correct one - std::string testStationType; - for (auto& [id, ALine] : *writeALineCdo) { - int testJff, testJzz, testJob; - ALine.getAmdbId(testStationType, testJff, testJzz, testJob); - if (testStationType == name && testJff == jff && testJzz == jzz) { - // set parameter if you found it - ALine.setParameters(tras, traz, trat, rots, rotz, rott); - break; - } - } - } +StatusCode MuonAlignmentCondAlg::setALinesFromAscii(ALineMapContainer* writeALineCdo) const { + ATH_MSG_INFO(" Set alignment constants from text file " << m_aLinesFile); + + std::string file_in = PathResolver::find_file(m_aLinesFile, "DATAPATH"); + + std::ifstream infile; + if (!file_in.empty()) { + infile.open(file_in.c_str()); + } + else { + ATH_MSG_ERROR("MuonAlignmentCondAlg::setALinesFromAscii Could not find Ascii file " << m_aLinesFile << " containing A lines"); + return StatusCode::FAILURE; + } + if (infile.bad()) { + ATH_MSG_ERROR("MuonAlignmentCondAlg::setALinesFromAscii Could not open file " << file_in) ; + return StatusCode::FAILURE; + } + + char line[512]; + ATH_MSG_DEBUG("reading file"); + + //If the ALine map is empty we are running on MC. This is for after the + //loop over all folders, where for MC we will have an empty map. + bool emptyALineMap = false; + if ((int)writeALineCdo->size() == 0) {emptyALineMap = true;} + + while (infile.getline(line, 512)) { + std::istringstream is(line); + + char AlineMarker[2]; + std::string name; + int jff, jzz, obj; + float tras, traz, trat, rots, rotz, rott; + if (is >> AlineMarker >> name >> jff >> jzz >> obj >> tras >> traz >> trat >> rots >> rotz >> rott) { + ATH_MSG_DEBUG("SUCCESSFULLY read line: " << line); + } else { + ATH_MSG_ERROR("ERROR reading line: " << line); } + + if (AlineMarker[0] == '\0') { + ATH_MSG_DEBUG("read empty line!"); + } else { + if (!emptyALineMap) { + + // loop through A-line container and find the correct one + std::string testStationType; + for (auto& [id, ALine] : *writeALineCdo) { + int testJff, testJzz, testJob; + ALine.getAmdbId(testStationType, testJff, testJzz, testJob); + if (testStationType == name && testJff == jff && testJzz == jzz) { + // set parameter if you found it + ALine.setParameters(tras, traz, trat, rots, rotz, rott); + break; + } + } + } else { // Set A lines for MC + + ALinePar newALine; + newALine.setAmdbId(name, jff, jzz, obj); + newALine.setParameters(tras, traz, trat, rots, rotz, rott); + newALine.isNew(true); + + int stationName; + Identifier id; + if (name[0] == 'M') { + // micromegas case + stationName = m_idHelperSvc->mmIdHelper().stationNameIndex(name); + id = m_idHelperSvc->mmIdHelper().elementID(stationName, jzz, jff); + id = m_idHelperSvc->mmIdHelper().multilayerID(id, obj); + } else if (name[0] == 'S') { + // sTGC case + stationName = m_idHelperSvc->stgcIdHelper().stationNameIndex(name); + id = m_idHelperSvc->stgcIdHelper().elementID(stationName, jzz, jff); + id = m_idHelperSvc->stgcIdHelper().multilayerID(id, obj); + } else if (name[0] == 'T') { + // tgc case + int stPhi = MuonGM::stationPhiTGC( + name, jff, jzz, m_geometryVersion); // !!!!! The stationPhiTGC implementation in this package is NOT used !!!!! + int stEta = 1; + if (jzz < 0) stEta = -1; + if (obj != 0) { + // this should become the default now + stEta = obj; + if (jzz < 0) stEta = -stEta; + } + stationName = m_idHelperSvc->tgcIdHelper().stationNameIndex(name); + id = m_idHelperSvc->tgcIdHelper().elementID(stationName, stEta, stPhi); + } else if (name.substr(0, 1) == "C") { + // csc case + if(!m_idHelperSvc->hasCSC()) continue; //skip if geometry doesn't include CSCs + stationName = m_idHelperSvc->cscIdHelper().stationNameIndex(name); + id = m_idHelperSvc->cscIdHelper().elementID(stationName, jzz, jff); + } else if (name.substr(0, 3) == "BML" && abs(jzz) == 7) { + // rpc case + stationName = m_idHelperSvc->rpcIdHelper().stationNameIndex(name); + id = m_idHelperSvc->rpcIdHelper().elementID(stationName, jzz, jff, 1); + } else { + stationName = m_idHelperSvc->mdtIdHelper().stationNameIndex(name); + id = m_idHelperSvc->mdtIdHelper().elementID(stationName, jzz, jff); + } + + ATH_MSG_VERBOSE("stationName " << stationName); + ATH_MSG_VERBOSE("identifier being assigned is " << m_idHelperSvc->toString(id)); + + if (!writeALineCdo->insert_or_assign(id, std::move(newALine)).second) { + ATH_MSG_WARNING("More than one (A-line) entry in file " << m_aLinesFile << " for " << name << " at Jzz/Jff " << jzz << "/" << jff << " --- keep the latest one"); + } + } } + } + + return StatusCode::SUCCESS; +} void MuonAlignmentCondAlg::setAsBuiltFromAscii(MdtAsBuiltMapContainer* writeCdo) const { ATH_MSG_INFO(" Set alignment constants from text file " << m_asBuiltFile); diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/CscIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/CscIdHelper.h index 171e1b161f7f288a39e7b717dd0a809800e82ab3..435bfcfdcc91b84009f4d2d989d7f23181478a72 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/CscIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/CscIdHelper.h @@ -70,14 +70,6 @@ public: int get_module_hash(const Identifier& id, IdentifierHash& hash_id) const override; int get_detectorElement_hash(const Identifier& id, IdentifierHash& hash_id) const override; - // in some parts of athena (still) hashes which encode geometrical information for the CSCs are around, - // therefore, need those additional hash functions here (feel free to fix it in the future) - int get_geo_module_hash(const Identifier& id, IdentifierHash& hash_id) const; - int get_geo_detectorElement_hash(const Identifier& id, IdentifierHash& hash_id) const; - int get_geo_channel_hash(const Identifier&, IdentifierHash&) const; - - int get_hash_fromGeoHash(const IdentifierHash& geoHash, IdentifierHash& realHash, const IdContext* context) const; - ///////////// compact identifier stuff ends ////////////////////////////////////// // Identifier builders @@ -157,8 +149,27 @@ public: private: bool isStNameInTech(const std::string& stationName) const override; int init_id_to_hashes(); - unsigned int m_module_hashes[60][3][8]{}; - unsigned int m_detectorElement_hashes[60][3][8][2]{}; + + // CSS / CSL + static constexpr unsigned int s_stDim = 2; + // -1, 1 eta dimension + static constexpr unsigned int s_etaDim = 2; + /// 8 phi stations + static constexpr unsigned int s_phiDim = 8; + /// 2 multi layer + static constexpr unsigned int s_mlDim = 2; + + static constexpr unsigned int s_modHashDim = s_stDim * s_etaDim * s_phiDim; + static constexpr unsigned int s_detHashDim = s_modHashDim * s_mlDim; + + std::array<unsigned int, s_modHashDim> m_module_hashes{}; + std::array<unsigned int, s_detHashDim> m_detectorElement_hashes{}; + + unsigned int moduleHashIdx(const Identifier& id) const; + unsigned int detEleHashIdx(const Identifier& id) const; + /// Minimal station index found + unsigned int m_stationShift{std::numeric_limits<unsigned int>::max()}; + // compact id indices size_type m_CHAMBERLAYER_INDEX{0}; @@ -170,8 +181,6 @@ private: IdDictFieldImplementation m_mea_impl; IdDictFieldImplementation m_str_impl; - int get_geo_hash_calc(const Identifier& compact_id, IdentifierHash& hash_id, const IdContext* context) const; - // Private validation of levels bool validElement(const Identifier& id, int stationName, int stationEta, int stationPhi) const; diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MdtIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MdtIdHelper.h index b7cb5895ba64f62a82f878556dad88f59152e2e8..27af9fc6458ef6e36beaf337378ae4efb44e2279 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MdtIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MdtIdHelper.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 */ // ****************************************************************************** @@ -165,8 +165,19 @@ public: private: bool isStNameInTech(const std::string& stationName) const override; int init_id_to_hashes(); - unsigned int m_module_hashes[60][20][8]{}; - unsigned int m_detectorElement_hashes[60][20][8][3]{}; + + static constexpr unsigned s_stDim = 55; + static constexpr unsigned s_etaDim = 16; + static constexpr unsigned s_phiDim = 8; + static constexpr unsigned s_mlDim = 2; + static constexpr unsigned int s_modHash = s_stDim * s_etaDim * s_phiDim; + static constexpr unsigned int s_detDim = s_modHash * s_mlDim; + + unsigned int moduleHashIdx(const Identifier& id) const; + unsigned int detEleHashIdx(const Identifier& id) const; + + std::array<unsigned int, s_modHash> m_module_hashes{}; + std::array<unsigned int, s_detDim> m_detectorElement_hashes{}; // compact id indices size_type m_TUBELAYER_INDEX{0}; diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MmIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MmIdHelper.h index 04f7acf4e793b5ff668fef7bf2e4efe2d83e69de..0cab2d02ae3ab4ee33c027c53aeed829ce4f5341 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MmIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MmIdHelper.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ // ****************************************************************************** @@ -151,9 +151,26 @@ private: bool isStNameInTech(const std::string& stationName) const override; int init_id_to_hashes(); - unsigned int m_module_hashes[60][20][48]{}; // Nektar Probably need to change this - unsigned int m_detectorElement_hashes[60][20][8][3]{}; // Nektar Probably need to change this - + /// Small and big wedges + static constexpr unsigned int s_stDim = 2; + /// -2, -1 , 1, 2 + static constexpr unsigned int s_etaDim = 4; + /// 8 phi station + static constexpr unsigned int s_phiDim = 8; + /// 2 multilayer + static constexpr unsigned int s_mlDim = 2; + + static constexpr unsigned int s_modHashDim = s_stDim * s_etaDim * s_phiDim; + static constexpr unsigned int s_detHashDim = s_modHashDim * s_mlDim; + + std::array<unsigned int, s_modHashDim> m_module_hashes{}; + std::array<unsigned int, s_detHashDim> m_detectorElement_hashes{}; + + unsigned int moduleHashIdx(const Identifier& id) const; + unsigned int detEleHashIdx(const Identifier& id) const; + /// Minimal station index found + unsigned int m_stationShift{std::numeric_limits<unsigned int>::max()}; + // compact id indices size_type m_GASGAP_INDEX{6}; diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/TgcIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/TgcIdHelper.h index aa175138082eda594b7af6622a3c675445b72c99..3c768529fbfd198394d3960f0d653818684128ef 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/TgcIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/TgcIdHelper.h @@ -141,8 +141,22 @@ private: bool isStNameInTech(const std::string& stationName) const override; int init_id_to_hashes(); - unsigned int m_module_hashes[60][20][48]{}; - + + /// T1F-> 41 ; T1E->42 , T2F -> 43, T2E->44, T3F->45, T3E->46, T4E->48 + static constexpr unsigned int s_stDim = 8; + /// Except T2E all stations have 4 associated eta stations + static constexpr unsigned int s_etaDim = 10; + /// 48 phi stations + static constexpr unsigned int s_phiDim = 48; + + static constexpr unsigned int s_modHashDim = s_stDim * s_etaDim * s_phiDim; + + unsigned int moduleHashIdx(const Identifier& id) const; + /// Minimal station index found + unsigned int m_stationShift{std::numeric_limits<unsigned int>::max()}; + + std::array<unsigned int, s_modHashDim> m_module_hashes{}; + // compact id indices size_type m_GASGAP_INDEX{0}; size_type m_ISSTRIP_INDEX{0}; diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/sTgcIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/sTgcIdHelper.h index 9138484c589d3211af110cf51cef621bbbf8ea8f..cd173fabc4d64e25b62413867511e714936e661f 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/sTgcIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/sTgcIdHelper.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ // ****************************************************************************** @@ -11,7 +11,6 @@ #define MUONIDHELPERS_STGCIDHELPER_H // Includes -class MsgStream; #include "MuonIdHelpers/MuonIdHelper.h" // ****************************************************************************** @@ -167,8 +166,27 @@ private: bool isStNameInTech(const std::string& stationName) const override; int init_id_to_hashes(); - unsigned int m_module_hashes[60][20][48]{}; // ED Probably need to change this - unsigned int m_detectorElement_hashes[60][20][8][3]{}; // Nektar Probably need to change this + + /// Small and big wedges + static constexpr unsigned int s_stDim = 2; + /// -3, -2, -1, 1, 2, 3 + static constexpr unsigned int s_etaDim = 6; + /// 8 phi station + static constexpr unsigned int s_phiDim = 8; + /// 2 multilayer + static constexpr unsigned int s_mlDim = 2; + + static constexpr unsigned int s_modHashDim = s_stDim * s_etaDim * s_phiDim; + static constexpr unsigned int s_detHashDim = s_modHashDim * s_mlDim; + + std::array<unsigned int, s_modHashDim> m_module_hashes{}; + std::array<unsigned int, s_detHashDim> m_detectorElement_hashes{}; + + unsigned int moduleHashIdx(const Identifier& id) const; + unsigned int detEleHashIdx(const Identifier& id) const; + /// Minimal station index found + unsigned int m_stationShift{std::numeric_limits<unsigned int>::max()}; + // compact id indices size_type m_GASGAP_INDEX{6}; diff --git a/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx index 8353a2a9099c7b2dcc618456ee807f4129c0ed6a..853347394d5a79aa8a21586d8456ed5c7bd59fe0 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx @@ -4,7 +4,10 @@ #include "MuonIdHelpers/CscIdHelper.h" -CscIdHelper::CscIdHelper() : MuonIdHelper("CscIdHelper") {} +CscIdHelper::CscIdHelper() : MuonIdHelper("CscIdHelper") { + m_module_hashes.fill(-1); + m_detectorElement_hashes.fill(-1); +} /// Initialize dictionary int CscIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { @@ -221,15 +224,6 @@ int CscIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { status = 1; } - // initialise the arrays of the geometrical module and detectorElement hashes to values !=0 - // otherwise, it will be impossible to distinguish the hash 0 from an uninitialized array element - unsigned int* modhash = &m_module_hashes[0][0][0]; - const unsigned int* end_modhash = modhash + sizeof(m_module_hashes) / sizeof(unsigned int); - for (; modhash != end_modhash; ++modhash) { (*modhash) = UINT_MAX; } - unsigned int* dethash = &m_detectorElement_hashes[0][0][0][0]; - const unsigned int* end_dethash = dethash + sizeof(m_detectorElement_hashes) / sizeof(unsigned int); - for (; dethash != end_dethash; ++dethash) { (*dethash) = UINT_MAX; } - /// Setup the hash tables for CSC ATH_MSG_INFO("Initializing CSC hash indices ... "); @@ -258,7 +252,7 @@ int CscIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { ATH_MSG_ERROR("Failed to retrieve ExpandedIdentifier from Identifier " << id.get_compact()); return 1; } - bool measuresPhi = this->measuresPhi(id); + bool measPhi = measuresPhi(id); for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) { const Range& range = m_full_channel_range[i]; if (range.match(expId)) { @@ -268,7 +262,7 @@ int CscIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { return 1; } unsigned int max = phi_field.get_maximum(); - if (measuresPhi) { + if (measPhi) { if (m_stripMaxPhi != UINT_MAX && m_stripMaxPhi != max) { ATH_MSG_ERROR("Maximum of Range::field for phi (" << max << ") is not equal to m_stripMaxPhi=" << m_stripMaxPhi); return 1; @@ -291,158 +285,60 @@ int CscIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { return (status); } +inline unsigned int CscIdHelper::moduleHashIdx(const Identifier& id) const{ + /// Unfold the array [A][B][C] by + /// a * BxC + b * C + c + constexpr unsigned int C = s_phiDim; + constexpr unsigned int BxC = C*s_etaDim; + const int stEta = stationEta(id); + return (stationName(id) - m_stationShift)*BxC + (stEta + s_etaDim/2 - (stEta>0))*C + (stationPhi(id) -1); +} +inline unsigned int CscIdHelper::detEleHashIdx(const Identifier& id) const{ + return moduleHashIdx(id) *s_mlDim + (chamberLayer(id) -1); +} + int CscIdHelper::init_id_to_hashes() { - unsigned int hash_max = this->module_hash_max(); + + for (const Identifier& id : m_module_vec) m_stationShift = std::min(m_stationShift, 1u* stationName(id)); + unsigned int hash_max = module_hash_max(); for (unsigned int i = 0; i < hash_max; ++i) { - Identifier id = m_module_vec[i]; - int station = this->stationName(id); - int eta = this->stationEta(id) + 2; // for negative etas - int phi = this->stationPhi(id); - m_module_hashes[station][eta - 1][phi - 1] = i; + const Identifier& id = m_module_vec[i]; + const unsigned idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size() || m_module_hashes[idx] < hash_max){ + ATH_MSG_FATAL("Failed to assign module hash to "<<show_to_string(id)); + return 1; + } + m_module_hashes[idx] = i; } - hash_max = this->detectorElement_hash_max(); + hash_max = detectorElement_hash_max(); for (unsigned int i = 0; i < hash_max; ++i) { - Identifier id = m_detectorElement_vec[i]; - int station = this->stationName(id); - int eta = this->stationEta(id) + 2; // for negative eta - int phi = this->stationPhi(id); - int multilayer = this->chamberLayer(id); - m_detectorElement_hashes[station][eta - 1][phi - 1][multilayer - 1] = i; + const Identifier& id = m_detectorElement_vec[i]; + const unsigned idx = detEleHashIdx(id); + if (idx >= m_detectorElement_hashes.size() || m_detectorElement_hashes[idx] < hash_max){ + ATH_MSG_FATAL("Failed to assign detector hash to "<<show_to_string(id)); + return 1; + } + m_detectorElement_hashes[idx] = i; } return 0; } int CscIdHelper::get_module_hash(const Identifier& id, IdentifierHash& hash_id) const { - // if the current layout contains Identifiers for CSC chamberLayer 1, need to call the - // get_module_hash function with an Identifier which is actually from chamberLayer 1 - if (m_hasChamLay1) return MuonIdHelper::get_module_hash(parentID(id), hash_id); - // otherwise just use the default implementation - return MuonIdHelper::get_module_hash(id, hash_id); + const unsigned int idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size()) return 1; + hash_id = m_module_hashes[idx]; + return 0; } int CscIdHelper::get_detectorElement_hash(const Identifier& id, IdentifierHash& hash_id) const { - // if the current layout contains Identifiers for CSC chamberLayer 1, need to call the - // get_detectorElement_hash function with an Identifier which is actually from chamberLayer 1 - if (m_hasChamLay1) return MuonIdHelper::get_detectorElement_hash(parentID(id), hash_id); - // otherwise just use the default implementation - return MuonIdHelper::get_detectorElement_hash(id, hash_id); -} - -int CscIdHelper::get_geo_module_hash(const Identifier& id, IdentifierHash& hash_id) const { - int station = this->stationName(id); - int eta = this->stationEta(id) + 2; // for negative etas - int phi = this->stationPhi(id); - hash_id = m_module_hashes[station][eta - 1][phi - 1]; + const unsigned int idx = detEleHashIdx(id); + if (idx >= m_detectorElement_hashes.size()) return 1; + hash_id = m_detectorElement_hashes[idx]; return 0; } -int CscIdHelper::get_geo_detectorElement_hash(const Identifier& id, IdentifierHash& hash_id) const { - // Identifier multilayerId = multilayerID(id); - // IdContext context = multilayer_context(); - // return get_hash(multilayerId,hash_id,&context); - int station = this->stationName(id); - int eta = this->stationEta(id) + 2; // for negative eta - int phi = this->stationPhi(id); - int multilayer = this->chamberLayer(id); - hash_id = m_detectorElement_hashes[station][eta - 1][phi - 1][multilayer - 1]; - return 0; -} -int CscIdHelper::get_geo_channel_hash(const Identifier& id, IdentifierHash& hash_id) const { - const IdContext context = this->channel_context(); - return get_geo_hash_calc(id, hash_id, &context); -} -int CscIdHelper::get_hash_fromGeoHash(const IdentifierHash& geoHash, IdentifierHash& realHash, const IdContext* context) const { - int result = 1; - size_t begin = (context) ? context->begin_index() : 0; - // cannot get hash if end is 0: - size_t end = (context) ? context->end_index() : 0; - if (0 == begin) { - Identifier id; - // No hashes yet for ids with prefixes - if (m_MODULE_INDEX == end) { - // need to compute module identifier from geoHash (inversion of get_geo_module_hash()) - // m_module_hashes[station][eta-1][phi-1]; - // array size: m_module_hashes[60][3][8] - for (unsigned int station = 50; station < 52; ++station) { // only check stations 50/51 since those are CSCs - for (unsigned int eta = 0; eta < 3; ++eta) { // stationEtaMax() ranges from 0 to 1 - for (unsigned int phi = 0; phi < (unsigned int)stationPhiMax(); ++phi) { - if (geoHash == m_module_hashes[station][eta][phi]) { - id = this->elementID(station, eta - 1, phi + 1); - break; - } - } - } - } - result = MuonIdHelper::get_module_hash(id, realHash); - } else if (m_DETECTORELEMENT_INDEX == end) { - // need to compute detector-element identifier from geoHash (inversion of get_geo_detectorElement_hash()) - // hash_id = m_detectorElement_hashes[station][eta-1][phi-1][multilayer-1]; - // array size: m_detectorElement_hashes[60][3][8][2] - for (unsigned int station = 50; station < 52; ++station) { // only check stations 50/51 since those are CSCs - for (unsigned int eta = 0; eta < 3; ++eta) { // stationEtaMax() ranges from 0 to 1 - for (unsigned int phi = 0; phi < (unsigned int)stationPhiMax(); ++phi) { - for (unsigned int ml = 0; ml < (unsigned int)chamberLayerMax(); ++ml) { - if (geoHash == m_detectorElement_hashes[station][eta][phi][ml]) { - // take wireLayer=strip=1, measuresPhi=0 - id = this->channelID(station, eta - 1, phi + 1, ml + 1, 1, 0, 1); - break; - } - } - } - } - } - result = MuonIdHelper::get_detectorElement_hash(id, realHash); - } else if (m_CHANNEL_INDEX == end) { - // need to compute channel identifier from geoHash (inversion of get_geo_hash_calc()) - // hash_id = offset + - // (stripNumber-1)+maxStrip*(wireLayer-1)+4*maxStrip*(chamberLayer-1)+8*maxStrip*(phi-1)+64*maxStrip*(etaIndex-1); first, find - // offset: - unsigned int offset = 0; - int chamberType(0), orientation(0); - if (geoHash < (unsigned int)m_hashOffset[0][1]) { - offset = 0; - chamberType = 0; - orientation = 0; - } else if (geoHash < (unsigned int)m_hashOffset[1][0]) { - offset = m_hashOffset[0][1]; - chamberType = 0; - orientation = 1; - } else if (geoHash < (unsigned int)m_hashOffset[1][1]) { - offset = m_hashOffset[1][0]; - chamberType = 1; - orientation = 0; - } else { - offset = m_hashOffset[1][1]; - chamberType = 1; - orientation = 1; - } - unsigned int geoHashNoOff = geoHash - offset; - // orientation equals measuresPhi - // second, get maxStrip by just using the member variables set in initialize() - int maxStrip = (orientation) ? m_stripMaxPhi : m_stripMaxEta; - // next, get the station (cf. get_geo_hash_calc()): - // if chamberType is 0, it is a small station, i.e. station 50, else 51 - // (cf. DetectorDescription/IdDictParser/data/IdDictMuonSpectrometer_R.03.xml) - int station = (chamberType) ? 51 : 50; - // now, invert get_geo_hash_calc() - int etaIndex = (int)(geoHashNoOff) / (64 * maxStrip); - geoHashNoOff -= etaIndex * 64 * maxStrip; - int phiIndex = (int)(geoHashNoOff) / (8 * maxStrip); - geoHashNoOff -= phiIndex * 8 * maxStrip; - int chamberLayerIndex = (int)(geoHashNoOff) / (4 * maxStrip); - geoHashNoOff -= chamberLayerIndex * 4 * maxStrip; - int wireLayerIndex = (int)(geoHashNoOff) / (maxStrip); - geoHashNoOff -= wireLayerIndex * maxStrip; - int eta = (etaIndex == 0) ? -1 : 1; - id = this->channelID(station, eta, phiIndex + 1, chamberLayerIndex + 1, wireLayerIndex + 1, orientation, geoHashNoOff + 1); - result = MuonIdHelper::get_hash(id, realHash, context); - } - } else - realHash = UINT_MAX; - return result; -} void CscIdHelper::idChannels(const Identifier& id, std::vector<Identifier>& vect) const { vect.clear(); @@ -755,43 +651,6 @@ bool CscIdHelper::validChannel(const Identifier& id, int stationName, int statio return true; } -// Create hash from compact -int CscIdHelper::get_geo_hash_calc(const Identifier& compact_id, IdentifierHash& hash_id, const IdContext* context) const { - // Get the hash code from vec (for wafers only). - int result = 1; - hash_id = 0; - size_t begin = (context) ? context->begin_index() : 0; - size_t end = (context) ? context->end_index() : 0; - - if (0 == begin) { - // No hashes yet for ids with prefixes - if (m_MODULE_INDEX == end) { - result = get_geo_module_hash(compact_id, hash_id); - } else if (m_DETECTORELEMENT_INDEX == end) { - result = get_geo_detectorElement_hash(compact_id, hash_id); - } else if (m_CHANNEL_INDEX == end) { - int stationIndex = stationName(compact_id); - int eta = this->stationEta(compact_id); - int phi = this->stationPhi(compact_id); - int chamberLayer = this->chamberLayer(compact_id); - int wireLayer = this->wireLayer(compact_id); - int orientation = this->measuresPhi(compact_id); - int stripNumber = this->strip(compact_id); - int etaIndex = (eta == -1) ? 1 : 2; - int chamberType = -1; - isSmall(stationIndex) ? chamberType = 0 : chamberType = 1; - int maxStrip = this->stripMax(compact_id); - int offset = m_hashOffset[chamberType][orientation]; - - hash_id = offset + (stripNumber - 1) + maxStrip * (wireLayer - 1) + 4 * maxStrip * (chamberLayer - 1) + - 8 * maxStrip * (phi - 1) + 64 * maxStrip * (etaIndex - 1); - - result = 0; - } - } - return result; -} - // calculate the hash offset int CscIdHelper::strip_hash_offsets() { m_hashOffset[0][0] = 0; diff --git a/MuonSpectrometer/MuonIdHelpers/src/MdtIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/MdtIdHelper.cxx index 520232cd613d2b9dc587d01d5c970ea5b93194de..a0c23bb7221bd79759607af742e9f181d3e798df 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/MdtIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/MdtIdHelper.cxx @@ -1,10 +1,14 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ #include "MuonIdHelpers/MdtIdHelper.h" -MdtIdHelper::MdtIdHelper() : MuonIdHelper("MdtIdHelper") {} +MdtIdHelper::MdtIdHelper() : MuonIdHelper("MdtIdHelper") { + //m_detectorElement_hashes + m_module_hashes.fill(-1); + m_detectorElement_hashes.fill(-1); +} /// initialize dictionary int MdtIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { @@ -250,45 +254,51 @@ int MdtIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { int MdtIdHelper::init_id_to_hashes() { unsigned int hash_max = this->module_hash_max(); for (unsigned int i = 0; i < hash_max; ++i) { - Identifier id = m_module_vec[i]; - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative etas - int phi = this->stationPhi(id); - m_module_hashes[station][eta - 1][phi - 1] = i; + const Identifier& id = m_module_vec[i]; + const unsigned int idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size() || m_module_hashes[idx] < hash_max){ + ATH_MSG_FATAL("Failed to initialize module hash dict for "<<show_to_string(id)<<" index: "<<idx<<"/"<<m_module_hashes.size()); + return 1; + } + m_module_hashes[idx] = i; } hash_max = this->detectorElement_hash_max(); for (unsigned int i = 0; i < hash_max; ++i) { - Identifier id = m_detectorElement_vec[i]; - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative eta - int phi = this->stationPhi(id); - int multilayer = this->multilayer(id); - m_detectorElement_hashes[station][eta - 1][phi - 1][multilayer - 1] = i; + const Identifier& id = m_detectorElement_vec[i]; + const unsigned int idx = detEleHashIdx(id); + if (idx >= m_detectorElement_hashes.size() || m_detectorElement_hashes[idx] < hash_max){ + ATH_MSG_FATAL("Failed to initialize detector element hash dict for "<<show_to_string(id)); + return 1; + } + m_detectorElement_hashes[idx] = i; } return 0; } - +inline unsigned int MdtIdHelper::moduleHashIdx(const Identifier& id) const { + /// Unfold the array [A][B][C] by + /// a * BxC + b * C + c + constexpr unsigned int C = s_phiDim; + constexpr unsigned int BxC = C*s_etaDim; + /// Station eta ranges from -8 to 8 + const int stEta = stationEta(id); + return stationName(id)*BxC + (stEta + (s_etaDim/2))*C + (stationPhi(id)-1); + +} +inline unsigned int MdtIdHelper::detEleHashIdx(const Identifier& id) const { + return moduleHashIdx(id) *s_mlDim + (multilayer(id) -1); +} int MdtIdHelper::get_module_hash(const Identifier& id, IdentifierHash& hash_id) const { - // Identifier moduleId = elementID(id); - // IdContext context = module_context(); - // return get_hash(moduleId,hash_id,&context); - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative etas - int phi = this->stationPhi(id); - hash_id = m_module_hashes[station][eta - 1][phi - 1]; + const unsigned int idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size()) return -1; + hash_id = m_module_hashes[idx]; return 0; } int MdtIdHelper::get_detectorElement_hash(const Identifier& id, IdentifierHash& hash_id) const { - // Identifier multilayerId = multilayerID(id); - // IdContext context = multilayer_context(); - // return get_hash(multilayerId,hash_id,&context); - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative eta - int phi = this->stationPhi(id); - int multilayer = this->multilayer(id); - hash_id = m_detectorElement_hashes[station][eta - 1][phi - 1][multilayer - 1]; + const unsigned int idx = detEleHashIdx(id); + if (idx >= m_detectorElement_hashes.size()) return -1; + hash_id = m_detectorElement_hashes[idx]; return 0; } diff --git a/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx index cde514e6737b6f38a5d731a311f2a24b9e63df84..eaccfd5398aed2e40b22ab1fce57669360d1a456 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx @@ -8,7 +8,10 @@ /*******************************************************************************/ // Constructor/Destructor -MmIdHelper::MmIdHelper() : MuonIdHelper("MmIdHelper") {} +MmIdHelper::MmIdHelper() : MuonIdHelper("MmIdHelper") { + m_module_hashes.fill(-1); + m_detectorElement_hashes.fill(-1); +} /*******************************************************************************/ // Initialize dictionary int MmIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { @@ -208,19 +211,6 @@ int MmIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { status = init_detectorElement_hashes(); // same as module hash status = init_id_to_hashes(); - /* - //comment out this bit to test the identifiers - - status = init_channel_hashes(); - std::cout << " looping over identifiers " << std::endl; - const_id_iterator it = channel_begin(); - const_id_iterator it_end = channel_end(); - for( ;it!=it_end;++it ){ - if( !is_mm(*it) ) (*m_Log) << MSG::DEBUG << "BadStgc: not MM " << print_to_string(*it) << endmsg; - if( !valid(*it) ) (*m_Log) << MSG::DEBUG << "BadStgc: not valid " << print_to_string(*it) << endmsg; - } - */ - // Setup hash tables for finding neighbors ATH_MSG_INFO("Initializing MicroMegas hash indices for finding neighbors ... "); status = init_neighbors(); @@ -229,48 +219,58 @@ int MmIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { return (status); } // end MmIdHelper::initialize_from_dictionary /*******************************************************************************/ + +inline unsigned int MmIdHelper::moduleHashIdx(const Identifier& id) const{ + /// Unfold the array [A][B][C] by + /// a * BxC + b * C + c + constexpr unsigned int C = s_phiDim; + constexpr unsigned int BxC = C*s_etaDim; + const int stEta = stationEta(id); + return (stationName(id) - m_stationShift)*BxC + (stEta + s_etaDim/2 - (stEta>0))*C + (stationPhi(id) -1); +} +inline unsigned int MmIdHelper::detEleHashIdx(const Identifier& id) const{ + return moduleHashIdx(id) *s_mlDim + (multilayer(id) -1); +} + int MmIdHelper::init_id_to_hashes() { - unsigned int hash_max = this->module_hash_max(); + for (const Identifier& id : m_module_vec) m_stationShift = std::min(m_stationShift, 1u* stationName(id)); + unsigned int hash_max = module_hash_max(); for (unsigned int i = 0; i < hash_max; ++i) { - Identifier id = m_module_vec[i]; - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative etas - int phi = this->stationPhi(id); - m_module_hashes[station][eta - 1][phi - 1] = i; + const Identifier& id = m_module_vec[i]; + const unsigned idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size() || m_module_hashes[idx] < hash_max){ + ATH_MSG_FATAL("Failed to assign module hash to "<<show_to_string(id)); + return 1; + } + m_module_hashes[idx] = i; } - hash_max = this->detectorElement_hash_max(); + hash_max = detectorElement_hash_max(); for (unsigned int i = 0; i < hash_max; ++i) { - Identifier id = m_detectorElement_vec[i]; - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative eta - int phi = this->stationPhi(id); - int multilayer = this->multilayer(id); - m_detectorElement_hashes[station][eta - 1][phi - 1][multilayer - 1] = i; + const Identifier& id = m_detectorElement_vec[i]; + const unsigned idx = detEleHashIdx(id); + if (idx >= m_detectorElement_hashes.size() || m_detectorElement_hashes[idx] < hash_max){ + ATH_MSG_FATAL("Failed to assign detector hash to "<<show_to_string(id)); + return 1; + } + m_detectorElement_hashes[idx] = i; } - return 0; } // end MmIdHelper::init_id_to_hashes() /*******************************************************************************/ int MmIdHelper::get_module_hash(const Identifier& id, IdentifierHash& hash_id) const { - // Identifier moduleId = elementID(id); - // IdContext context = module_context(); - // return get_hash(moduleId,hash_id,&context); - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative etas - int phi = this->stationPhi(id); - hash_id = m_module_hashes[station][eta - 1][phi - 1]; + const unsigned int idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size()) return 1; + hash_id = m_module_hashes[idx]; return 0; } // end MmIdHelper::get_module_hash /*******************************************************************************/ int MmIdHelper::get_detectorElement_hash(const Identifier& id, IdentifierHash& hash_id) const { - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative eta - int phi = this->stationPhi(id); - int multilayer = this->multilayer(id); - hash_id = m_detectorElement_hashes[station][eta - 1][phi - 1][multilayer - 1]; + const unsigned int idx = detEleHashIdx(id); + if (idx >= m_detectorElement_hashes.size()) return 1; + hash_id = m_detectorElement_hashes[idx]; return 0; - // return this->get_module_hash(id, hash_id); + // return get_module_hash(id, hash_id); } /*******************************************************************************/ Identifier MmIdHelper::multilayerID(const Identifier& channelID) const { @@ -297,7 +297,7 @@ Identifier MmIdHelper::multilayerID(const Identifier& moduleID, int multilayer, } /*******************************************************************************/ int MmIdHelper::getFirstPcbChnl(int stationEta, int pcb) const { - int pcbNb = abs(stationEta)==1 ? pcb : pcb-5; + int pcbNb = std::abs(stationEta)==1 ? pcb : pcb-5; return (pcbNb-1)*1024+1; } Identifier MmIdHelper::pcbID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int pcb) const { diff --git a/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx index bb355a82fcd7626dca7b25921646a9070361fbed..13c597d2e8f686696349b561bfa10c230ca586d7 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx @@ -4,7 +4,9 @@ #include "MuonIdHelpers/TgcIdHelper.h" -TgcIdHelper::TgcIdHelper() : MuonIdHelper("TgcIdHelper") {} +TgcIdHelper::TgcIdHelper() : MuonIdHelper("TgcIdHelper") { + m_module_hashes.fill(-1); +} // Initialize dictionary int TgcIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { @@ -204,31 +206,39 @@ int TgcIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { return (status); } +inline unsigned int TgcIdHelper::moduleHashIdx(const Identifier& id) const{ + /// Unfold the array [A][B][C] by + /// a * BxC + b * C + c + constexpr unsigned int C = s_phiDim; + constexpr unsigned int BxC = C*s_etaDim; + const int stEta = stationEta(id); + return (stationName(id) - m_stationShift)*BxC + (stEta + s_etaDim/2 - (stEta>0))*C + (stationPhi(id) -1); +} int TgcIdHelper::init_id_to_hashes() { - unsigned int hash_max = this->module_hash_max(); + for (const Identifier& id : m_module_vec) m_stationShift = std::min(m_stationShift, 1u* stationName(id)); + + unsigned int hash_max = module_hash_max(); for (unsigned int i = 0; i < hash_max; ++i) { - Identifier id = m_module_vec[i]; - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative etas - int phi = this->stationPhi(id); - m_module_hashes[station][eta - 1][phi - 1] = i; + const Identifier& id = m_module_vec[i]; + const unsigned idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size() || m_module_hashes[idx] < hash_max){ + ATH_MSG_FATAL("Failed to assign module hash to "<<show_to_string(id)); + return 1; + } + m_module_hashes[idx] = i; } return 0; } int TgcIdHelper::get_module_hash(const Identifier& id, IdentifierHash& hash_id) const { - // Identifier moduleId = elementID(id); - // IdContext context = module_context(); - // return get_hash(moduleId,hash_id,&context); - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative etas - int phi = this->stationPhi(id); - hash_id = m_module_hashes[station][eta - 1][phi - 1]; + const unsigned int idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size()) return 1; + hash_id = m_module_hashes[idx]; return 0; } int TgcIdHelper::get_detectorElement_hash(const Identifier& id, IdentifierHash& hash_id) const { - return this->get_module_hash(id, hash_id); + return get_module_hash(id, hash_id); } void TgcIdHelper::idChannels(const Identifier& id, std::vector<Identifier>& vect) const { diff --git a/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx index a27dada9f1be48bd53d9cb751f0cb3f0d16ceedf..2ec6149efd2c9665d70df7f4d5a97ab68fbdec73 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx @@ -6,7 +6,10 @@ /*******************************************************************************/ // Constructor/Destructor -sTgcIdHelper::sTgcIdHelper() : MuonIdHelper("sTgcIdHelper") {} +sTgcIdHelper::sTgcIdHelper() : MuonIdHelper("sTgcIdHelper") { + m_module_hashes.fill(-1); + m_detectorElement_hashes.fill(-1); +} /*******************************************************************************/ // Initialize dictionary int sTgcIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { @@ -236,53 +239,59 @@ int sTgcIdHelper::initialize_from_dictionary(const IdDictMgr& dict_mgr) { return (status); } // end sTgcIdHelper::initialize_from_dictionary /*******************************************************************************/ +inline unsigned int sTgcIdHelper::moduleHashIdx(const Identifier& id) const{ + /// Unfold the array [A][B][C] by + /// a * BxC + b * C + c + constexpr unsigned int C = s_phiDim; + constexpr unsigned int BxC = C*s_etaDim; + const int stEta = stationEta(id); + return (stationName(id) - m_stationShift)*BxC + (stEta + s_etaDim/2 - (stEta>0))*C + (stationPhi(id) -1); +} +inline unsigned int sTgcIdHelper::detEleHashIdx(const Identifier& id) const{ + return moduleHashIdx(id) *s_mlDim + (multilayer(id) -1); +} + int sTgcIdHelper::init_id_to_hashes() { - unsigned int hash_max = this->module_hash_max(); + for (const Identifier& id : m_module_vec) m_stationShift = std::min(m_stationShift, 1u* stationName(id)); + unsigned int hash_max = module_hash_max(); for (unsigned int i = 0; i < hash_max; ++i) { - Identifier id = m_module_vec[i]; - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative etas - int phi = this->stationPhi(id); - m_module_hashes[station][eta - 1][phi - 1] = i; + const Identifier& id = m_module_vec[i]; + const unsigned idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size() || m_module_hashes[idx] < hash_max){ + ATH_MSG_FATAL("Failed to assign module hash to "<<show_to_string(id)); + return 1; + } + m_module_hashes[idx] = i; } - hash_max = this->detectorElement_hash_max(); + hash_max = detectorElement_hash_max(); for (unsigned int i = 0; i < hash_max; ++i) { - Identifier id = m_detectorElement_vec[i]; - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative eta - int phi = this->stationPhi(id); - int multilayer = this->multilayer(id); - m_detectorElement_hashes[station][eta - 1][phi - 1][multilayer - 1] = i; + const Identifier& id = m_detectorElement_vec[i]; + const unsigned idx = detEleHashIdx(id); + if (idx >= m_detectorElement_hashes.size() || m_detectorElement_hashes[idx] < hash_max){ + ATH_MSG_FATAL("Failed to assign detector hash to "<<show_to_string(id)); + return 1; + } + m_detectorElement_hashes[idx] = i; } - return 0; -} // end TgcIdHelper::init_id_to_hashes() +} // end sTgcIdHelper::init_id_to_hashes() /*******************************************************************************/ int sTgcIdHelper::get_module_hash(const Identifier& id, IdentifierHash& hash_id) const { - // Identifier moduleId = elementID(id); - // IdContext context = module_context(); - // return get_hash(moduleId,hash_id,&context); - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative etas - int phi = this->stationPhi(id); - hash_id = m_module_hashes[station][eta - 1][phi - 1]; + const unsigned int idx = moduleHashIdx(id); + if (idx >= m_module_hashes.size()) return 1; + hash_id = m_module_hashes[idx]; return 0; -} // end TgcIdHelper::get_module_hash +} // end sTgcIdHelper::get_module_hash /*******************************************************************************/ -// int sTgcIdHelper::get_detectorElement_hash(const Identifier& id, IdentifierHash& hash_id) const { -// return this->get_module_hash(id, hash_id); -//} - int sTgcIdHelper::get_detectorElement_hash(const Identifier& id, IdentifierHash& hash_id) const { - int station = this->stationName(id); - int eta = this->stationEta(id) + 10; // for negative eta - int phi = this->stationPhi(id); - int multilayer = this->multilayer(id); - hash_id = m_detectorElement_hashes[station][eta - 1][phi - 1][multilayer - 1]; + const unsigned int idx = detEleHashIdx(id); + if (idx >= m_detectorElement_hashes.size()) return 1; + hash_id = m_detectorElement_hashes[idx]; return 0; - // return this->get_module_hash(id, hash_id); + // return get_module_hash(id, hash_id); } + /*******************************************************************************/ Identifier sTgcIdHelper::multilayerID(const Identifier& channelID) const { assert(is_stgc(channelID)); diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx index 2dbb8789e16cbda05a63226bfd6c27699de03355..da23c637017a740f5c0a26a08ea34a75c060ed4a 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx @@ -1126,7 +1126,7 @@ namespace Muon { } if (!cscPrdContainer || cscPrdContainer->size() == 0) return nullptr; IdentifierHash hash_id; - m_idHelperSvc->cscIdHelper().get_geo_module_hash(detElId, hash_id); + m_idHelperSvc->cscIdHelper().get_module_hash(detElId, hash_id); const auto* collptr = cscPrdContainer->indexFindPtr(hash_id); if (!collptr) { diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/python/BPHY10.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/python/BPHY10.py index 2f69de053e82fcf35563ef0492076aea35f5c1b6..fa03501176db827636ab486dd9152107235f99fd 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/python/BPHY10.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/python/BPHY10.py @@ -10,23 +10,23 @@ from AthenaConfiguration.ComponentFactory import CompFactory BPHYDerivationName = "BPHY10" streamName = "StreamDAOD_BPHY10" -def BPHY10Cfg(ConfigFlags): +def BPHY10Cfg(flags): from DerivationFrameworkBPhys.commonBPHYMethodsCfg import (BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg, BPHY_VertexPointEstimatorCfg, BPHY_TrkVKalVrtFitterCfg) from JpsiUpsilonTools.JpsiUpsilonToolsConfig import PrimaryVertexRefittingToolCfg - from TrkConfig.AtlasExtrapolatorConfig import InDetExtrapolatorCfg + acc = ComponentAccumulator() - isSimulation = ConfigFlags.Input.isMC + isSimulation = flags.Input.isMC BPHY10_AugOriginalCounts = CompFactory.DerivationFramework.AugOriginalCounts( name = "BPHY10_AugOriginalCounts", VertexContainer = "PrimaryVertices", TrackContainer = "InDetTrackParticles" ) - V0Tools = acc.popToolsAndMerge(BPHY_V0ToolCfg(ConfigFlags, BPHYDerivationName)) - vkalvrt = acc.popToolsAndMerge(BPHY_TrkVKalVrtFitterCfg(ConfigFlags, BPHYDerivationName)) # VKalVrt vertex fitter + V0Tools = acc.popToolsAndMerge(BPHY_V0ToolCfg(flags, BPHYDerivationName)) + vkalvrt = acc.popToolsAndMerge(BPHY_TrkVKalVrtFitterCfg(flags, BPHYDerivationName)) # VKalVrt vertex fitter acc.addPublicTool(vkalvrt) acc.addPublicTool(V0Tools) - trackselect = acc.popToolsAndMerge(BPHY_InDetDetailedTrackSelectorToolCfg(ConfigFlags, BPHYDerivationName)) + trackselect = acc.popToolsAndMerge(BPHY_InDetDetailedTrackSelectorToolCfg(flags, BPHYDerivationName)) acc.addPublicTool(trackselect) - vpest = acc.popToolsAndMerge(BPHY_VertexPointEstimatorCfg(ConfigFlags, BPHYDerivationName)) + vpest = acc.popToolsAndMerge(BPHY_VertexPointEstimatorCfg(flags, BPHYDerivationName)) acc.addPublicTool(vpest) BPHY10JpsiFinder = CompFactory.Analysis.JpsiFinder( name = "BPHY10JpsiFinder", @@ -56,7 +56,7 @@ def BPHY10Cfg(ConfigFlags): OutputVtxContainerName = "BPHY10JpsiCandidates", PVContainerName = "PrimaryVertices", V0Tools = V0Tools, - PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(ConfigFlags)), + PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags)), RefPVContainerName = "SHOULDNOTBEUSED", DoVertexType = 1) BPHY10_Select_Jpsi2mumu = CompFactory.DerivationFramework.Select_onia2mumu( @@ -100,7 +100,7 @@ def BPHY10Cfg(ConfigFlags): from InDetConfig.InDetV0FinderConfig import V0MainDecoratorCfg V0Decorator = acc.popToolsAndMerge(V0MainDecoratorCfg( - ConfigFlags, + flags, name = "BPHY10V0Decorator", V0Tools = V0Tools, V0ContainerName = BPHY10V0ContainerName, @@ -115,7 +115,7 @@ def BPHY10Cfg(ConfigFlags): OutputVtxContainerName = "BPHY10BdJpsiKstCandidates", PVContainerName = "PrimaryVertices", V0Tools = V0Tools, - PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(ConfigFlags)), + PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags)), RefPVContainerName = "BPHY10RefittedPrimaryVertices1", RefitPV = True, MaxPVrefit = 10000, @@ -146,7 +146,7 @@ def BPHY10Cfg(ConfigFlags): from DerivationFrameworkBPhys.V0ToolConfig import BPHY_InDetV0FinderToolCfg BPHY10_Reco_V0Finder = CompFactory.DerivationFramework.Reco_V0Finder( name = "BPHY10_Reco_V0Finder", - V0FinderTool = acc.popToolsAndMerge(BPHY_InDetV0FinderToolCfg(ConfigFlags,BPHYDerivationName, + V0FinderTool = acc.popToolsAndMerge(BPHY_InDetV0FinderToolCfg(flags,BPHYDerivationName, V0ContainerName = BPHY10V0ContainerName, KshortContainerName = BPHY10KshortContainerName, LambdaContainerName = BPHY10LambdaContainerName, @@ -158,20 +158,17 @@ def BPHY10Cfg(ConfigFlags): LambdabarContainerName = BPHY10LambdabarContainerName, CheckVertexContainers = ['BPHY10JpsiCandidates']) - JpsiV0VertexFit = CompFactory.Trk.TrkVKalVrtFitter( - name = "JpsiV0VertexFit", - Extrapolator = acc.popToolsAndMerge(InDetExtrapolatorCfg(ConfigFlags)), - FirstMeasuredPoint = False, - CascadeCnstPrecision = 1e-6, - MakeExtendedVertex = True) + from TrkConfig.TrkVKalVrtFitterConfig import JpsiV0VertexFitCfg + JpsiV0VertexFit = acc.popToolsAndMerge(JpsiV0VertexFitCfg(flags)) acc.addPublicTool(JpsiV0VertexFit) + BPHY10JpsiKshort = CompFactory.DerivationFramework.JpsiPlusV0Cascade( name = "BPHY10JpsiKshort", V0Tools = V0Tools, HypothesisName = "Bd", TrkVertexFitterTool = JpsiV0VertexFit, V0Hypothesis = 310, - PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(ConfigFlags)), + PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags)), JpsiMassLowerCut = 2800., JpsiMassUpperCut = 4000., V0MassLowerCut = 400., @@ -189,7 +186,7 @@ def BPHY10Cfg(ConfigFlags): V0Tools = V0Tools, HypothesisName = "Lambda_b", TrkVertexFitterTool = JpsiV0VertexFit, - PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(ConfigFlags)), + PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags)), V0Hypothesis = 3122, JpsiMassLowerCut = 2800., JpsiMassUpperCut = 4000., @@ -208,7 +205,7 @@ def BPHY10Cfg(ConfigFlags): HypothesisName = "Lambda_bbar", V0Tools = V0Tools, TrkVertexFitterTool = JpsiV0VertexFit, - PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(ConfigFlags)), + PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags)), V0Hypothesis = -3122, JpsiMassLowerCut = 2800., JpsiMassUpperCut = 4000., @@ -258,7 +255,7 @@ def BPHY10Cfg(ConfigFlags): from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from xAODMetaDataCnv.InfileMetaDataConfig import InfileMetaDataCfg - BPHY10SlimmingHelper = SlimmingHelper("BPHY10SlimmingHelper", NamesAndTypes = ConfigFlags.Input.TypedCollections, ConfigFlags = ConfigFlags) + BPHY10SlimmingHelper = SlimmingHelper("BPHY10SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, ConfigFlags = flags) from DerivationFrameworkBPhys.commonBPHYMethodsCfg import getDefaultAllVariables AllVariables = getDefaultAllVariables() StaticContent = [] @@ -321,7 +318,7 @@ def BPHY10Cfg(ConfigFlags): BPHY10SlimmingHelper.StaticContent = StaticContent BPHY10SlimmingHelper.SmartCollections = [] BPHY10ItemList = BPHY10SlimmingHelper.GetItemList() - acc.merge(OutputStreamCfg(ConfigFlags, "DAOD_BPHY10", ItemList=BPHY10ItemList, AcceptAlgs=["BPHY10Kernel"])) - acc.merge(InfileMetaDataCfg(ConfigFlags, "DAOD_BPHY10", AcceptAlgs=["BPHY10Kernel"])) + acc.merge(OutputStreamCfg(flags, "DAOD_BPHY10", ItemList=BPHY10ItemList, AcceptAlgs=["BPHY10Kernel"])) + acc.merge(InfileMetaDataCfg(flags, "DAOD_BPHY10", AcceptAlgs=["BPHY10Kernel"])) acc.printConfig(withDetails=True, summariseProps=True, onlyComponents = [], printDefaults=True, printComponentsOnly=False) return acc diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureSimpleV0Finder.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureSimpleV0Finder.py index 2e46eba2ef74d527491d7bcd6c792ef6ef8770fc..f2ed590c0a39ab4d960fcaf01d53fbf41e28c931 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureSimpleV0Finder.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureSimpleV0Finder.py @@ -29,8 +29,7 @@ class BPHYV0FinderTools: MaxArcLength = [800.,800.,800.], MinDeltaR = [-10000.,-10000.,-10000.], MaxDeltaR = [10000.,10000.,10000.], - MaxPhi = [10000., 10000., 10000.], - MaxChi2OfVtxEstimation = 2000.) + MaxPhi = [10000., 10000., 10000.]) ToolSvc += self.V0VtxPointEstimator print(self.V0VtxPointEstimator) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureV0Finder.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureV0Finder.py index 1b2359822414303928d01b3ae39bda5c55e4fb5a..77f187ad3468b63e9f3215fcf95c053989ea6bf2 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureV0Finder.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureV0Finder.py @@ -29,8 +29,7 @@ class BPHYV0FinderTools: MaxArcLength = [800.,800.,800.], MinDeltaR = [-10000.,-10000.,-10000.], MaxDeltaR = [10000.,10000.,10000.], - MaxPhi = [10000., 10000., 10000.], - MaxChi2OfVtxEstimation = 2000.) + MaxPhi = [10000., 10000., 10000.]) ToolSvc += self.V0VtxPointEstimator print(self.V0VtxPointEstimator) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureVertexing.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureVertexing.py index a21d05a58164d0909d7b314b3f89edeaed4b987e..bb554dcc5a2b9171eb43f95a54214d3a225ee5d4 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureVertexing.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/share/configureVertexing.py @@ -25,8 +25,7 @@ class BPHYVertexTools: self.VtxPointEstimator = InDet__VertexPointEstimator(name = derivation+"_VtxPointEstimator", MinDeltaR = [-10000.,-10000.,-10000.], MaxDeltaR = [10000.,10000.,10000.], - MaxPhi = [10000., 10000., 10000.], - MaxChi2OfVtxEstimation = 2000.) + MaxPhi = [10000., 10000., 10000.]) ToolSvc += self.VtxPointEstimator print((self.VtxPointEstimator)) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py index 2823f25831cdf57d8ac856e62426843aec5c4cfa..52c6d2e6c3c97ccb41e92de9ee345e07e3db3c2b 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FTAG1.py @@ -203,7 +203,6 @@ def V0ToolCfg(flags, augmentationTools=None, tool_name_prefix="FTAG1", container from DerivationFrameworkBPhys.commonBPHYMethodsCfg import BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg, BPHY_VertexPointEstimatorCfg, BPHY_TrkVKalVrtFitterCfg from JpsiUpsilonTools.JpsiUpsilonToolsConfig import PrimaryVertexRefittingToolCfg, JpsiFinderCfg - from TrkConfig.AtlasExtrapolatorConfig import InDetExtrapolatorCfg V0Tools = acc.popToolsAndMerge(BPHY_V0ToolCfg(flags, tool_name_prefix)) acc.addPublicTool(V0Tools) @@ -284,13 +283,11 @@ def V0ToolCfg(flags, augmentationTools=None, tool_name_prefix="FTAG1", container LambdaContainerName = LambdaContainerName, LambdabarContainerName = LambdabarContainerName, CheckVertexContainers = [container_name_prefix+'JpsiCandidates']) - JpsiV0VertexFit = CompFactory.Trk.TrkVKalVrtFitter( - name = "JpsiV0VertexFit", - Extrapolator = acc.popToolsAndMerge(InDetExtrapolatorCfg(flags)), - FirstMeasuredPoint = False, - CascadeCnstPrecision = 1e-6, - MakeExtendedVertex = True) + + from TrkConfig.TrkVKalVrtFitterConfig import JpsiV0VertexFitCfg + JpsiV0VertexFit = acc.popToolsAndMerge(JpsiV0VertexFitCfg(flags)) acc.addPublicTool(JpsiV0VertexFit) + JpsiKshort = CompFactory.DerivationFramework.JpsiPlusV0Cascade( name = tool_name_prefix+"JpsiKshort", V0Tools = V0Tools, diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py index a14439498cb66c5aceb2e4c8f8d14c020d8458e9..5cb35866591ab89a53c1ea8532863f529352bf64 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py @@ -1,119 +1,50 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration - -from AthenaCommon.CFElements import findAllAlgorithms - -from GaudiKernel.Configurable import WARNING +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -from AthenaCommon.Configurable import ConfigurableCABehavior -from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable from AthenaConfiguration.ComponentFactory import CompFactory -# these files are sloppy with imports, see ATLASRECTS-6635 -with ConfigurableCABehavior(): - from BTagging.BTagTrackAugmenterAlgConfig import BTagTrackAugmenterAlgCfg - from BTagging.BTagConfig import BTagAlgsCfg, GetTaggerTrainingMap - -# for backward compatability -def FtagJetCollection(jetcol, seq, pvCol='PrimaryVertices', OutputLevel=WARNING): - FtagJetCollections([jetcol], seq, [pvCol], OutputLevel) - -# this should be able to tag a few collections -def FtagJetCollections(jetcols, seq, pvCols=[], OutputLevel=WARNING): - - if len(pvCols) != len(jetcols): - if pvCols: - raise ValueError('PV collection length is not the same as Jets') - pvCols=['PrimaryVertices']*len(jetcols) - - with ConfigurableCABehavior(): - - from AthenaConfiguration.AllConfigFlags import ConfigFlags as cfgFlags - - acc = ComponentAccumulator() +from BTagging.BTagConfig import BTagAlgsCfg, GetTaggerTrainingMap +from BTagging.BTagTrackAugmenterAlgConfig import BTagTrackAugmenterAlgCfg - # TODO: For some reason we can't use JetTagCalibCfg here, like - # we do in reconstruction, retagging, and trigger. It seems to - # break something in the database. Hopefully we'll rewrite the - # derivations in pure ComponentAccumulator code, which seems - # to support JetTagCalibCfg. - _setupCondDb(cfgFlags) - if 'AntiKt4EMTopoJets' in jetcols: - acc.merge( - RenameInputContainerEmTopoHacksCfg('oldAODVersion') - ) - - if 'AntiKt4EMPFlowJets' in jetcols and cfgFlags.BTagging.Trackless: - acc.merge( - RenameInputContainerEmPflowHacksCfg('tracklessAODVersion') - ) - - for jetcol,pvCol in zip(jetcols, pvCols): - acc.merge(getFtagComponent( - cfgFlags, - jetcol, - pvCol, - )) - - # Unpack ComponentAccumulator configuration into the derivation - # sequence. - algs = findAllAlgorithms(acc.getSequence("AthAlgSeq")) - for alg in algs: - seq += conf2toConfigurable(alg) - acc.wasMerged() - - # This part would merge JetTagCalibCfg, if we ever get it to - # work. Unfortunately calling this messes up the muon conditions - # algs. - # - # you can't use accumulator.wasMerged() here because the above - # code only merged the algorithms. Instead we rely on this hacky - # looking construct. - # - # acc._sequence = [] - # appendCAtoAthena(acc) - -# Full component accumulator version of the above -def FtagJetCollectionsCfg(cfgFlags, jetcols, pvCols=[]): - """Config for flvaour tagging in DAODs""" - - if len(pvCols) != len(jetcols): - if pvCols: - raise ValueError('PV collection length is not the same as Jets') - pvCols=['PrimaryVertices']*len(jetcols) +def FtagJetCollectionsCfg(cfgFlags, jet_cols, pv_cols=None): + """ + Return a component accumulator which runs tagging in derivations. + Configures several jet collections at once. + """ + if pv_cols is None: + pv_cols = ['PrimaryVertices'] * len(jet_cols) + if len(pv_cols) != len(jet_cols): + raise ValueError('PV collection length is not the same as Jets') acc = ComponentAccumulator() - from JetTagCalibration.JetTagCalibConfig import JetTagCalibCfg acc.merge(JetTagCalibCfg(cfgFlags)) - if 'AntiKt4EMTopoJets' in jetcols: + if 'AntiKt4EMTopoJets' in jet_cols: acc.merge( RenameInputContainerEmTopoHacksCfg('oldAODVersion') ) - if 'AntiKt4EMPFlowJets' in jetcols and cfgFlags.BTagging.Trackless: + if 'AntiKt4EMPFlowJets' in jet_cols and cfgFlags.BTagging.Trackless: acc.merge( RenameInputContainerEmPflowHacksCfg('tracklessAODVersion') ) #Treating decoration of large-R jets as a special case largeRJetCollection = 'AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets' - if largeRJetCollection in jetcols: + if largeRJetCollection in jet_cols: nnFiles = GetTaggerTrainingMap(cfgFlags, largeRJetCollection) acc.merge(BTagLargeRDecoration(cfgFlags, nnFiles, largeRJetCollection)) - jetcols.remove(largeRJetCollection) + jet_cols.remove(largeRJetCollection) - for jetcol,pvCol in zip(jetcols, pvCols): - acc.merge(getFtagComponent( - cfgFlags, - jetcol, - pvCol, - )) + for jet_col, pv_col in zip(jet_cols, pv_cols): + acc.merge( + getFtagComponent(cfgFlags, jet_col, pv_col) + ) return(acc) @@ -154,12 +85,12 @@ def BTagLargeRDecoration(cfgFlags, nnFiles, jet_name='AntiKt10UFOCSSKSoftDropBet +def getFtagComponent(cfgFlags, jet_col, pv_col): + """ + Return a component accumulator which runs tagging on a single jet collection. + """ -# this returns a component accumulator, which is merged across jet -# collections in FtagJetCollections above -def getFtagComponent(cfgFlags, jetcol, pvCol): - - jetcol_name_without_Jets = jetcol.replace('Jets','') + jet_col_name_without_Jets = jet_col.replace('Jets','') track_collection = 'InDetTrackParticles' input_muons = 'Muons' if cfgFlags.BTagging.Pseudotrack: @@ -170,7 +101,7 @@ def getFtagComponent(cfgFlags, jetcol, pvCol): acc.merge(BTagTrackAugmenterAlgCfg( cfgFlags, TrackCollection=track_collection, - PrimaryVertexCollectionName=pvCol, + PrimaryVertexCollectionName=pv_col, )) # decorate tracks with leptonID @@ -179,22 +110,30 @@ def getFtagComponent(cfgFlags, jetcol, pvCol): trackContainer=track_collection, )) + # decorate detailed truth info if cfgFlags.Input.isMC: - from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig import InDetTrackTruthOriginToolCfg + from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig import ( + InDetTrackTruthOriginToolCfg, + ) trackTruthOriginTool = acc.popToolsAndMerge(InDetTrackTruthOriginToolCfg(cfgFlags)) + acc.addEventAlgo(CompFactory.FlavorTagDiscriminants.TruthParticleDecoratorAlg( + 'TruthParticleDecoratorAlg', + trackTruthOriginTool=trackTruthOriginTool + )) acc.addEventAlgo(CompFactory.FlavorTagDiscriminants.TrackTruthDecoratorAlg( 'TrackTruthDecoratorAlg', trackContainer=track_collection, trackTruthOriginTool=trackTruthOriginTool )) + # schedule tagging algorithms acc.merge(BTagAlgsCfg( inputFlags=cfgFlags, - JetCollection=jetcol_name_without_Jets, - nnList=GetTaggerTrainingMap(cfgFlags, jetcol_name_without_Jets), + JetCollection=jet_col_name_without_Jets, + nnList=GetTaggerTrainingMap(cfgFlags, jet_col_name_without_Jets), trackCollection=track_collection, - primaryVertices=pvCol, + primaryVertices=pv_col, muons=input_muons, renameTrackJets=True, AddedJetSuffix='Jets', @@ -205,8 +144,7 @@ def getFtagComponent(cfgFlags, jetcol, pvCol): # Valerio's magic hacks for emtopo def RenameInputContainerEmTopoHacksCfg(suffix): - - acc=ComponentAccumulator() + acc = ComponentAccumulator() #Delete BTagging container read from input ESD AddressRemappingSvc, ProxyProviderSvc=CompFactory.getComps("AddressRemappingSvc","ProxyProviderSvc",) @@ -226,9 +164,9 @@ def RenameInputContainerEmTopoHacksCfg(suffix): acc.addService(ProxyProviderSvc(ProviderNames = [ "AddressRemappingSvc" ])) return acc +# Valerio's magic hacks for pflow def RenameInputContainerEmPflowHacksCfg(suffix): - - acc=ComponentAccumulator() + acc = ComponentAccumulator() AddressRemappingSvc, ProxyProviderSvc=CompFactory.getComps("AddressRemappingSvc","ProxyProviderSvc",) AddressRemappingSvc = AddressRemappingSvc("AddressRemappingSvc") @@ -246,42 +184,3 @@ def RenameInputContainerEmPflowHacksCfg(suffix): acc.addService(AddressRemappingSvc) acc.addService(ProxyProviderSvc(ProviderNames = [ "AddressRemappingSvc" ])) return acc - - -# hack function to make the database work -def _setupCondDb(cfgFlags): - """ - TODO: replace this with JetTagCalibCfg - """ - from AthenaCommon.AppMgr import athCondSeq - if not hasattr(athCondSeq,"JetTagCalibCondAlg"): - Aliases = cfgFlags.BTagging.calibrationChannelAliases - grades= cfgFlags.BTagging.Grades - RNNIPConfig = {'rnnip':''} - - JetTagCalibCondAlg=CompFactory.Analysis.JetTagCalibCondAlg - jettagcalibcondalg = "JetTagCalibCondAlg" - readkeycalibpath = "/GLOBAL/BTagCalib/RUN12" - connSchema = "GLOBAL_OFL" - if not cfgFlags.Input.isMC: - readkeycalibpath = readkeycalibpath.replace( - "/GLOBAL/BTagCalib","/GLOBAL/Onl/BTagCalib") - connSchema = "GLOBAL" - histoskey = "JetTagCalibHistosKey" - from IOVDbSvc.CondDB import conddb - - conddb.addFolder( - connSchema, - readkeycalibpath, - className='CondAttrListCollection') - JetTagCalib = JetTagCalibCondAlg( - jettagcalibcondalg, - ReadKeyCalibPath=readkeycalibpath, - HistosKey = histoskey, - taggers = cfgFlags.BTagging.taggerList, - channelAliases = Aliases, - IP2D_TrackGradePartitions = grades, - RNNIP_NetworkConfig = RNNIPConfig) - - athCondSeq+=conf2toConfigurable( JetTagCalib, indent=" " ) - diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTIDE.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTIDE.py index ae307a194cae8a7b98e61df0efdc871b9bd6e219..ee32e1300d5e81717547365450cb97952fd77d23 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTIDE.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTIDE.py @@ -22,6 +22,10 @@ def IDTIDEKernelCfg(flags, name='IDTIDEKernel', **kwargs): acc = ComponentAccumulator() DerivationKernel = CompFactory.DerivationFramework.DerivationKernel + # Cut flow service + from EventBookkeeperTools.EventBookkeeperToolsConfig import CutFlowSvcCfg + acc.merge(CutFlowSvcCfg(flags)) + # Sequence for skimming kernel (if running on data) -> PrepDataToxAOD -> IDTIDE kernel # sequence to be used for algorithm which should run before the IDTIDEPresel # Disabled as currently blocks decoration of Z0 and thus crashes thinning diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/CMakeLists.txt b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/CMakeLists.txt index 56071f35a012b723b510582ed9273745974d4d88..b6bbf6f0951b5a590a17098b79bc2b9ca8c43ce2 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/CMakeLists.txt +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/CMakeLists.txt @@ -74,6 +74,7 @@ if (NOT XAOD_STANDALONE) src/JetTagConditionalDecoratorAlg.cxx src/TruthDecoratorHelpers.cxx src/TrackLeptonDecoratorAlg.cxx + src/TruthParticleDecoratorAlg.cxx src/TrackTruthDecoratorAlg.cxx src/SoftElectronDecoratorAlg.cxx src/SoftElectronTruthDecoratorAlg.cxx diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/SoftElectronTruthDecoratorAlg.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/SoftElectronTruthDecoratorAlg.h index dc128726591ec2252dd1c7f4f3e4c5b9bd39b850..23e9b1695fb036f4d65df831eb63df5bf5caca8e 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/SoftElectronTruthDecoratorAlg.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/SoftElectronTruthDecoratorAlg.h @@ -34,37 +34,41 @@ namespace FlavorTagDiscriminants { SG::ReadHandleKey< xAOD::ElectronContainer > m_ElectronContainerKey { this, "electronContainer", "Electrons", "Key for the input electron collection"}; - SG::ReadHandleKey< xAOD::TruthEventContainer > m_TruthEventsKey { - this, "truthEvents", "TruthEvents", - "Key for the input truth event collection"}; // Decorators for electrons SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dec_origin_label { - this, "ftag_truthOriginLabel", "ftag_truthOriginLabel", + this, "ftagTruthOriginLabel", "ftagTruthOriginLabel", "Exclusive origin label of the electron"}; SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dec_type_label { - this, "ftag_truthTypeLabel", "ftag_truthTypeLabel", + this, "ftagTruthTypeLabel", "ftagTruthTypeLabel", "Exclusive truth type label of the electron"}; SG::WriteDecorHandleKey< xAOD::ElectronContainer > m_dec_vertex_index { - this, "ftag_truthVertexIndex", "ftag_truthVertexIndex", + this, "ftagTruthVertexIndex", "ftagTruthVertexIndex", "Truth vertex index of the electron"}; + SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_barcode { + this, "ftagTruthBarcode", "ftagTruthBarcode", + "Barcode of linked truth particle"}; + SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_parent_barcode { + this, "ftagTruthParentBarcode", "ftagTruthParentBarcode", + "Barcode of parent of linked truth particle"}; // truth origin tool ToolHandle<InDet::InDetTrackTruthOriginTool> m_trackTruthOriginTool { this, "trackTruthOriginTool", "InDet::InDetTrackTruthOriginTool", "track truth origin tool"}; - Gaudi::Property<float> m_truthVertexMergeDistance { - this, "truthVertexMergeDistance", 0.1, - "Merge any truth vertices within this distance [mm]"}; - - // Electron types from + // Electron types are defined in // PhysicsAnalysis/MCTruthClassifier/MCTruthClassifier/MCTruthClassifierDefs.h#L28 - const std::set<int> m_valid_types{1, 2, 3, 4}; + const std::set<int> m_valid_types{1, 2, 3, 4}; - SG::AuxElement::ConstAccessor<unsigned int> m_classifierParticleType{"classifierParticleType"}; - SG::AuxElement::ConstAccessor<ElementLink<xAOD::TruthParticleContainer>> m_truthParticleLink{"truthParticleLink"}; - + // Accessors + template <typename T> using Acc = SG::AuxElement::ConstAccessor<T>; + Acc<unsigned int> m_classifierParticleType{"classifierParticleType"}; + Acc<ElementLink<xAOD::TruthParticleContainer>> m_truthParticleLink{"truthParticleLink"}; + Acc<int> m_acc_truthOriginLabel{"ftagTruthOriginLabel"}; + Acc<int> m_acc_truthTypeLabel{"ftagTruthTypeLabel"}; + Acc<int> m_acc_truthVertexIndex{"ftagTruthVertexIndex"}; + Acc<int> m_acc_truthParentBarcode{"ftagTruthParentBarcode"}; }; } diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TrackTruthDecoratorAlg.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TrackTruthDecoratorAlg.h index d9c721c3a50dfa9f8e67751c73d23f090ab5485a..1e24333558f7f387abe2aefb05395ac0bb0bcd26 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TrackTruthDecoratorAlg.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TrackTruthDecoratorAlg.h @@ -11,9 +11,9 @@ #include "StoreGate/WriteDecorHandleKey.h" #include "StoreGate/ReadDecorHandleKey.h" -#include "xAODTracking/TrackParticleContainerFwd.h" -#include "InDetTrackSystematicsTools/InDetTrackTruthOriginTool.h" +#include "xAODTruth/TruthParticleContainerFwd.h" #include "xAODTruth/TruthEventContainer.h" +#include "InDetTrackSystematicsTools/InDetTrackTruthOriginTool.h" namespace FlavorTagDiscriminants { @@ -27,42 +27,41 @@ namespace FlavorTagDiscriminants { virtual StatusCode execute(const EventContext& ) const override; private: - // Input Containers SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackContainerKey { this,"trackContainer", "InDetTrackParticles", "Key for the input track collection"}; - SG::ReadHandleKey< xAOD::TruthEventContainer > m_TruthEventsKey { - this,"truthEvents", "TruthEvents", - "Key for the input truth event collection"}; // Decorators for tracks SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_origin_label { - this, "truthOriginLabel", "truthOriginLabel", + this, "ftagTruthOriginLabel", "ftagTruthOriginLabel", "Exclusive origin label of the track"}; SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_type_label { - this, "truthTypeLabel", "truthTypeLabel", + this, "ftagTruthTypeLabel", "ftagTruthTypeLabel", "Exclusive truth type label of the track"}; SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_vertex_index { - this, "truthVertexIndex", "truthVertexIndex", - "Truth vertex index of the track"}; + this, "ftagTruthVertexIndex", "ftagTruthVertexIndex", + "ftagTruth vertex index of the track"}; SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_barcode { - this, "barcode", "barcode", + this, "ftagTruthBarcode", "ftagTruthBarcode", "Barcode of linked truth particle"}; SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_parent_barcode { - this, "parentBarcode", "parentBarcode", + this, "ftagTruthParentBarcode", "ftagTruthParentBarcode", "Barcode of parent of linked truth particle"}; - // truth origin tool + // Truth origin tool ToolHandle<InDet::InDetTrackTruthOriginTool> m_trackTruthOriginTool { this, "trackTruthOriginTool", "InDet::InDetTrackTruthOriginTool", "track truth origin tool"}; - Gaudi::Property<float> m_truthVertexMergeDistance { - this, "truthVertexMergeDistance", 0.1, - "Merge any truth vertices within this distance [mm]"}; - }; + // Accessors + template <typename T> using Acc = SG::AuxElement::ConstAccessor<T>; + Acc<int> m_acc_truthOriginLabel{"ftagTruthOriginLabel"}; + Acc<int> m_acc_truthTypeLabel{"ftagTruthTypeLabel"}; + Acc<int> m_acc_truthVertexIndex{"ftagTruthVertexIndex"}; + Acc<int> m_acc_truthParentBarcode{"ftagTruthParentBarcode"}; + }; } #endif diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TruthDecoratorHelpers.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TruthDecoratorHelpers.h index 5f24632c8222f033dadf8c144e1171d62c79af0d..dd404db8e57298246c6977c674c4b0a1390d116c 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TruthDecoratorHelpers.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TruthDecoratorHelpers.h @@ -23,8 +23,6 @@ namespace FlavorTagDiscriminants { }; bool sort_particles(const xAOD::IParticle* particle_A, const xAOD::IParticle* particle_B); const xAOD::TruthVertex* get_truth_vertex(const xAOD::TruthParticle* truth ); - const xAOD::TruthVertex* get_nearest_vertex(const xAOD::TruthVertex* search_vertex, - const std::vector<const xAOD::TruthVertex*>& vertices); float get_distance(const xAOD::TruthVertex* vertex_A, const xAOD::TruthVertex* vertex_B); int get_truth_type(const xAOD::TruthParticle* truth_particle); const xAOD::TruthParticle* get_parent_hadron(const xAOD::TruthParticle* truth_particle); diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TruthParticleDecoratorAlg.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TruthParticleDecoratorAlg.h new file mode 100644 index 0000000000000000000000000000000000000000..06d93b0ffa75c85d509defe0cd4e8bc68f84b761 --- /dev/null +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/TruthParticleDecoratorAlg.h @@ -0,0 +1,64 @@ +/* + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRUTH_PARTICLE_DECORATOR_ALG_HH +#define TRUTH_PARTICLE_DECORATOR_ALG_HH + +#include "AthenaBaseComps/AthReentrantAlgorithm.h" +#include "GaudiKernel/ToolHandle.h" +#include "AthContainers/AuxElement.h" +#include "StoreGate/WriteDecorHandleKey.h" +#include "StoreGate/ReadDecorHandleKey.h" + +#include "xAODTruth/TruthParticleContainerFwd.h" +#include "xAODTruth/TruthEventContainer.h" +#include "InDetTrackSystematicsTools/InDetTrackTruthOriginTool.h" + + +namespace FlavorTagDiscriminants { + + class TruthParticleDecoratorAlg: public AthReentrantAlgorithm { + public: + TruthParticleDecoratorAlg(const std::string& name, + ISvcLocator* pSvcLocator ); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext& ) const override; + + private: + + // Input Containers + SG::ReadHandleKey< xAOD::TruthParticleContainer > m_TruthContainerKey { + this, "truthContainer", "TruthParticles", + "Key for the input truth particle collection"}; + SG::ReadHandleKey< xAOD::TruthEventContainer > m_TruthEventsKey { + this, "truthEvents", "TruthEvents", + "Key for the input truth event collection"}; + + // Decorators for truth particles + SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_dec_origin_label { + this, "ftagTruthOriginLabel", "ftagTruthOriginLabel", + "Exclusive origin label of the truth particle"}; + SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_dec_type_label { + this, "ftagTruthTypeLabel", "ftagTruthTypeLabel", + "Exclusive truth type label of the truth particle"}; + SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_dec_vertex_index { + this, "ftagTruthVertexIndex", "ftagTruthVertexIndex", + "ftagTruth vertex index of the truth particle"}; + SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_dec_parent_barcode { + this, "ftagTruthParentBarcode", "ftagTruthParentBarcode", + "Barcode of parent of linked truth particle"}; + + // truth origin tool + ToolHandle<InDet::InDetTrackTruthOriginTool> m_truthOriginTool { + this, "trackTruthOriginTool", "InDet::InDetTrackTruthOriginTool", + "track truth origin tool"}; + + Gaudi::Property<float> m_truthVertexMergeDistance { + this, "truthVertexMergeDistance", 0.1, + "Merge any truth vertices within this distance [mm]"}; + }; +} + +#endif diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/SoftElectronTruthDecoratorAlg.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/SoftElectronTruthDecoratorAlg.cxx index 83b86a525bf858ef094e9e9477a0c7f6fd1abe54..37fb79cffa0d05a54c1f8415f8a5d5236dfe579a 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/SoftElectronTruthDecoratorAlg.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/SoftElectronTruthDecoratorAlg.cxx @@ -29,25 +29,21 @@ namespace FlavorTagDiscriminants { // Initialize Container keys ATH_MSG_DEBUG( "Initializing containers:" ); ATH_MSG_DEBUG( " ** " << m_ElectronContainerKey ); - ATH_MSG_DEBUG( " ** " << m_TruthEventsKey ); ATH_CHECK( m_ElectronContainerKey.initialize() ); - ATH_CHECK( m_TruthEventsKey.initialize() ); // Prepare decorators m_dec_origin_label = m_ElectronContainerKey.key() + "." + m_dec_origin_label.key(); m_dec_type_label = m_ElectronContainerKey.key() + "." + m_dec_type_label.key(); m_dec_vertex_index = m_ElectronContainerKey.key() + "." + m_dec_vertex_index.key(); - - // Initialize decorators - ATH_MSG_DEBUG( "Initializing decorators:" ); - ATH_MSG_DEBUG( " ** " << m_dec_origin_label ); - ATH_MSG_DEBUG( " ** " << m_dec_type_label ); - ATH_MSG_DEBUG( " ** " << m_dec_vertex_index ); + m_dec_barcode = m_ElectronContainerKey.key() + "." + m_dec_barcode.key(); + m_dec_parent_barcode = m_ElectronContainerKey.key() + "." + m_dec_parent_barcode.key(); ATH_CHECK( m_dec_origin_label.initialize() ); ATH_CHECK( m_dec_type_label.initialize() ); ATH_CHECK( m_dec_vertex_index.initialize() ); + ATH_CHECK( m_dec_barcode.initialize() ); + ATH_CHECK( m_dec_parent_barcode.initialize() ); return StatusCode::SUCCESS; } @@ -61,62 +57,44 @@ namespace FlavorTagDiscriminants { SG::ReadHandle<EC> electrons(m_ElectronContainerKey,ctx); ATH_CHECK( electrons.isValid() ); ATH_MSG_DEBUG( "Retrieved " << electrons->size() << " electrons..." ); - SG::ReadHandle<xAOD::TruthEventContainer> truth_events(m_TruthEventsKey,ctx); - ATH_CHECK( truth_events.isValid() ); - ATH_MSG_DEBUG( "Retrieved " << truth_events->size() << " truth events..." ); // instantiate decorators SG::WriteDecorHandle<EC, int> dec_origin_label(m_dec_origin_label, ctx); SG::WriteDecorHandle<EC, int> dec_type_label(m_dec_type_label, ctx); SG::WriteDecorHandle<EC, int> dec_vertex_index(m_dec_vertex_index, ctx); + SG::WriteDecorHandle<EC, int> dec_barcode(m_dec_barcode, ctx); + SG::WriteDecorHandle<EC, int> dec_parent_barcode(m_dec_parent_barcode, ctx); - // get the truth primary vertex - const xAOD::TruthVertex* truth_PV = truth_events->at(0)->truthVertex(0); - - // sort the tracks by pt to ensure the vertex clustering is deterministic - std::vector<const xAOD::Electron*> sorted_electrons; - for (const auto electron : *electrons) { sorted_electrons.push_back(electron); } - std::sort(sorted_electrons.begin(), sorted_electrons.end(), TruthDecoratorHelpers::sort_particles); + std::vector<const xAOD::Electron*> el_vector(electrons->begin(), electrons->end()); + for ( const auto& electron : el_vector ) { - // first loop - decorate origin label, just store truth vertex for now - auto el_truth_vertex = std::vector<const xAOD::TruthVertex*>(); - const xAOD::TruthParticle *matched_truth = 0; - - for ( const auto& electron : sorted_electrons ) { - // get the truth origin of the electron + // get the linked truth particle ElementLink<xAOD::TruthParticleContainer> truth_link = m_truthParticleLink(*electron); - if (!truth_link || !truth_link.isValid()){ - dec_origin_label(*electron) = 0; - dec_type_label(*electron) = TruthDecoratorHelpers::get_truth_type(nullptr); - el_truth_vertex.push_back(nullptr); - } - else { - matched_truth = *truth_link; - int electron_type = m_classifierParticleType(*matched_truth); - - if (m_valid_types.count(electron_type)){ - int electron_origin = m_trackTruthOriginTool->getTruthOrigin(matched_truth); - int electronTruthLabel = InDet::ExclusiveOrigin::getExclusiveOrigin(electron_origin); - dec_origin_label(*electron) = electronTruthLabel; - } - else { - dec_origin_label(*electron) = 1; - } - auto truth_vertex = TruthDecoratorHelpers::get_truth_vertex(matched_truth); - el_truth_vertex.push_back(truth_vertex); - // decorate truth type - dec_type_label(*electron) = TruthDecoratorHelpers::get_truth_type(matched_truth); + + if (!truth_link || !truth_link.isValid()) { + // if the truth link is broken, assume PU + dec_origin_label(*electron) = InDet::ExclusiveOrigin::Pileup; + dec_type_label(*electron) = TruthDecoratorHelpers::get_truth_type(nullptr); + dec_vertex_index(*electron) = -2; + dec_barcode(*electron) = -2; + dec_parent_barcode(*electron) = -2; + } else { + const auto *truth = *truth_link; + int electron_type = m_classifierParticleType(*truth); + + if (m_valid_types.count(electron_type)) { + dec_origin_label(*electron) = m_acc_truthOriginLabel(*truth); + } + else { + dec_origin_label(*electron) = InDet::ExclusiveOrigin::Fake; + } + + dec_vertex_index(*electron) = m_acc_truthVertexIndex(*truth); + dec_type_label(*electron) = m_acc_truthTypeLabel(*truth); + dec_barcode(*electron) = truth->barcode(); + dec_parent_barcode(*electron) = m_acc_truthParentBarcode(*truth); } } - - // decorate electrons with truth vertex info - auto seen_vertices = std::vector<const xAOD::TruthVertex*>(); - for ( size_t i = 0; i != el_truth_vertex.size(); i++) { - auto this_vert = el_truth_vertex.at(i); - auto this_electron = sorted_electrons.at(i); - dec_vertex_index(*this_electron) = TruthDecoratorHelpers::get_vertex_index(this_vert, truth_PV, seen_vertices, m_truthVertexMergeDistance); - } - return StatusCode::SUCCESS; } } \ No newline at end of file diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TrackTruthDecoratorAlg.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TrackTruthDecoratorAlg.cxx index 4829c8347a4f23b79a5323055c320d1b13ce8156..c9b76a0a5e23a5b60941ca105dd8571e892b00a3 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TrackTruthDecoratorAlg.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TrackTruthDecoratorAlg.cxx @@ -9,8 +9,6 @@ #include "StoreGate/WriteDecorHandle.h" #include "StoreGate/ReadDecorHandle.h" -#include "InDetTrackSystematicsTools/InDetTrackTruthOriginDefs.h" - #include "xAODTracking/TrackParticle.h" #include "xAODTracking/TrackParticleContainer.h" @@ -30,26 +28,16 @@ namespace FlavorTagDiscriminants { // Initialize Container keys ATH_MSG_DEBUG( "Inizializing containers:" ); ATH_MSG_DEBUG( " ** " << m_TrackContainerKey ); - ATH_MSG_DEBUG( " ** " << m_TruthEventsKey ); ATH_CHECK( m_TrackContainerKey.initialize() ); - ATH_CHECK( m_TruthEventsKey.initialize() ); - // Prepare decorators + // Initialize decorators m_dec_origin_label = m_TrackContainerKey.key() + "." + m_dec_origin_label.key(); m_dec_type_label = m_TrackContainerKey.key() + "." + m_dec_type_label.key(); m_dec_vertex_index = m_TrackContainerKey.key() + "." + m_dec_vertex_index.key(); m_dec_barcode = m_TrackContainerKey.key() + "." + m_dec_barcode.key(); m_dec_parent_barcode = m_TrackContainerKey.key() + "." + m_dec_parent_barcode.key(); - // Initialize decorators - ATH_MSG_DEBUG( "Inizializing decorators:" ); - ATH_MSG_DEBUG( " ** " << m_dec_origin_label ); - ATH_MSG_DEBUG( " ** " << m_dec_type_label ); - ATH_MSG_DEBUG( " ** " << m_dec_vertex_index ); - ATH_MSG_DEBUG( " ** " << m_dec_barcode ); - ATH_MSG_DEBUG( " ** " << m_dec_parent_barcode ); - CHECK( m_dec_origin_label.initialize() ); CHECK( m_dec_type_label.initialize() ); CHECK( m_dec_vertex_index.initialize() ); @@ -64,16 +52,12 @@ namespace FlavorTagDiscriminants { StatusCode TrackTruthDecoratorAlg::execute(const EventContext& ctx) const { ATH_MSG_DEBUG( "Executing " << name() << "... " ); - using TPC = xAOD::TrackParticleContainer; // read collections - SG::ReadHandle<TPC> tracks(m_TrackContainerKey,ctx); + SG::ReadHandle<TPC> tracks(m_TrackContainerKey, ctx); CHECK( tracks.isValid() ); ATH_MSG_DEBUG( "Retrieved " << tracks->size() << " tracks..." ); - SG::ReadHandle<xAOD::TruthEventContainer> truth_events(m_TruthEventsKey,ctx); - CHECK( truth_events.isValid() ); - ATH_MSG_DEBUG( "Retrieved " << truth_events->size() << " truth events..." ); // instantiate decorators SG::WriteDecorHandle<TPC, int> dec_origin_label(m_dec_origin_label, ctx); @@ -82,47 +66,15 @@ namespace FlavorTagDiscriminants { SG::WriteDecorHandle<TPC, int> dec_barcode(m_dec_barcode, ctx); SG::WriteDecorHandle<TPC, int> dec_parent_barcode(m_dec_parent_barcode, ctx); - // get the truth primary vertex - const xAOD::TruthVertex* truth_PV = truth_events->at(0)->truthVertex(0); - - // sort the tracks by pt to ensure the vertex clustering is deterministic - std::vector<const xAOD::TrackParticle*> sorted_tracks; - for (const auto track : *tracks) { sorted_tracks.push_back(track); } - std::sort(sorted_tracks.begin(), sorted_tracks.end(), TruthDecoratorHelpers::sort_particles); - - // first loop - decorate origin label, just store truth vertex for now - auto trk_truth_vertex = std::vector<const xAOD::TruthVertex*>(); - for ( const auto& track : sorted_tracks ) { - - // get linked truth particle and decorate bacode - auto truth = m_trackTruthOriginTool->getTruth(track); + // decorate loop + std::vector<const xAOD::TrackParticle*> tracks_vector(tracks->begin(), tracks->end()); + for ( const auto& track : tracks_vector ) { + const auto truth = m_trackTruthOriginTool->getTruth(track); dec_barcode(*track) = truth ? truth->barcode() : -2; - - // get parent hadron and decorate barcode - auto truth_parent = TruthDecoratorHelpers::get_parent_hadron(truth); - dec_parent_barcode(*track) = truth_parent ? truth_parent->barcode() : -2; - - // store the truth origin of the track - int trackTruthOrigin = m_trackTruthOriginTool->getTrackOrigin(track); - - // get exclusive track origin - int trackTruthLabel = InDet::ExclusiveOrigin::getExclusiveOrigin(trackTruthOrigin); - dec_origin_label(*track) = trackTruthLabel; - - // get the truth vertex of the track and store for now - auto truth_vertex = TruthDecoratorHelpers::get_truth_vertex(truth); - trk_truth_vertex.push_back(truth_vertex); - - // decorate truth type - dec_type_label(*track) = TruthDecoratorHelpers::get_truth_type(truth); - } - - // decorate tracks with truth vertex info - auto seen_vertices = std::vector<const xAOD::TruthVertex*>(); - for ( size_t i = 0; i != trk_truth_vertex.size(); i++) { - auto this_vert = trk_truth_vertex.at(i); - auto this_track = sorted_tracks.at(i); - dec_vertex_index(*this_track) = TruthDecoratorHelpers::get_vertex_index(this_vert, truth_PV, seen_vertices, m_truthVertexMergeDistance); + dec_parent_barcode(*track) = truth ? m_acc_truthParentBarcode(*truth) : -2; + dec_origin_label(*track) = truth ? m_acc_truthOriginLabel(*truth) : -2; + dec_type_label(*track) = truth ? m_acc_truthTypeLabel(*truth) : -2; + dec_vertex_index(*track) = truth ? m_acc_truthVertexIndex(*truth) : -2; } return StatusCode::SUCCESS; } diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TruthDecoratorHelpers.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TruthDecoratorHelpers.cxx index 156c739c74c7ae2efacb80dfd9d51c9ea59c88a2..76e223397cc32f26d71afcf6457589f5b36542d3 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TruthDecoratorHelpers.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TruthDecoratorHelpers.cxx @@ -8,8 +8,9 @@ namespace FlavorTagDiscriminants { namespace TruthDecoratorHelpers { + bool sort_particles(const xAOD::IParticle* particle_A, - const xAOD::IParticle* particle_B) { + const xAOD::IParticle* particle_B) { return particle_A->pt() < particle_B->pt(); } @@ -21,102 +22,75 @@ namespace FlavorTagDiscriminants { // no vertex const xAOD::TruthVertex* truth_vertex = truth->prodVtx(); if ( not truth_vertex or truth_vertex->perp() > 440.0 ) { - return nullptr; + return nullptr; } return truth_vertex; } - const xAOD::TruthVertex* get_nearest_vertex( - const xAOD::TruthVertex* search_vertex, - const std::vector<const xAOD::TruthVertex*>& vertices) { - - if ( !search_vertex ) { return nullptr; } - - float min_dr = 1e5; - int min_dr_idx = -1; - int index = -1; - - // find closest vertex - for ( auto vertex : vertices ) { - index++; - if ( !vertex or search_vertex == vertex ) { continue; } - float dr = get_distance(vertex, search_vertex); - if ( dr < min_dr ) { - min_dr = dr; - min_dr_idx = index; - } - } - - // return closest vertex - if ( min_dr_idx < 0 ) { return nullptr; } - else { return vertices.at(min_dr_idx); } - } - float get_distance(const xAOD::TruthVertex* vertex_A, const xAOD::TruthVertex* vertex_B) { if ( !vertex_A or !vertex_B ) { return 999.0; } return (vertex_A->v4().Vect() - vertex_B->v4().Vect()).Mag(); } - const xAOD::TruthParticle* get_parent_hadron( - const xAOD::TruthParticle* truth_particle) { + const xAOD::TruthParticle* get_parent_hadron(const xAOD::TruthParticle* truth_particle) { if ( truth_particle == nullptr ) { return nullptr; } if ( truth_particle->isBottomHadron() or truth_particle->isCharmHadron() ) { - return truth_particle; - } - for(unsigned int p = 0; p < truth_particle->nParents(); p++) { - const xAOD::TruthParticle* parent = truth_particle->parent(p); - auto parent_hadron = get_parent_hadron(parent); - if ( parent_hadron != nullptr ) { - return parent_hadron; + return truth_particle; } + for (unsigned int p = 0; p < truth_particle->nParents(); p++) { + const xAOD::TruthParticle* parent = truth_particle->parent(p); + auto parent_hadron = get_parent_hadron(parent); + if ( parent_hadron != nullptr ) { + return parent_hadron; + } } return nullptr; } int get_truth_type(const xAOD::TruthParticle* truth_particle) { if (!truth_particle) { - return ExclusiveType::NoTruth; + return ExclusiveType::NoTruth; } // simple pdgid check for pion/kaon based on // PhysicsAnalysis/MCTruthClassifier/Root/MCTruthClassifierGen.cxx#L1159 if (std::abs(truth_particle->pdgId()) == 211) { - return ExclusiveType::Pion * truth_particle->charge(); + return ExclusiveType::Pion * truth_particle->charge(); } if (std::abs(truth_particle->pdgId()) == 321) { - return ExclusiveType::Kaon * truth_particle->charge(); + return ExclusiveType::Kaon * truth_particle->charge(); } if (truth_particle->isElectron()) { - return ExclusiveType::Electron * truth_particle->charge() * -1; + return ExclusiveType::Electron * truth_particle->charge() * -1; } if (truth_particle->isMuon()) { - return ExclusiveType::Muon * truth_particle->charge() * -1; + return ExclusiveType::Muon * truth_particle->charge() * -1; } if (std::abs(truth_particle->pdgId()) == 22) { - return ExclusiveType::Photon; + return ExclusiveType::Photon; } return ExclusiveType::Other; } int get_vertex_index(const xAOD::TruthVertex* this_vertex, - const xAOD::TruthVertex* truth_PV, - std::vector<const xAOD::TruthVertex*>& seen_vertices, - const float& truthVertexMergeDistance){ + const xAOD::TruthVertex* truth_PV, + std::vector<const xAOD::TruthVertex*>& seen_vertices, + const float& truthVertexMergeDistance) { // no vertex if (!this_vertex) { - return -2; + return -2; } // primary vertex if (get_distance(this_vertex, truth_PV) < truthVertexMergeDistance) { - return 0; + return 0; } // have we already seen this vertex? for ( size_t j = 0; j != seen_vertices.size(); j++) { - float dr = get_distance(seen_vertices.at(j), this_vertex); - if ( dr < truthVertexMergeDistance ) { - // a vertex is nearby, reuse it - return j + 1; - } + float dr = get_distance(seen_vertices.at(j), this_vertex); + if ( dr < truthVertexMergeDistance ) { + // a vertex is nearby, reuse it + return j + 1; + } } seen_vertices.push_back(this_vertex); return seen_vertices.size(); diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TruthParticleDecoratorAlg.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TruthParticleDecoratorAlg.cxx new file mode 100644 index 0000000000000000000000000000000000000000..a8b16d656457609e8a5e79b3db580ff627e11e64 --- /dev/null +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TruthParticleDecoratorAlg.cxx @@ -0,0 +1,113 @@ +/* + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +*/ + + +#include "FlavorTagDiscriminants/TruthParticleDecoratorAlg.h" +#include "FlavorTagDiscriminants/TruthDecoratorHelpers.h" + +#include "StoreGate/WriteDecorHandle.h" +#include "StoreGate/ReadDecorHandle.h" + +#include "InDetTrackSystematicsTools/InDetTrackTruthOriginDefs.h" + +#include "xAODTruth/TruthParticle.h" +#include "xAODTruth/TruthParticleContainer.h" +#include "xAODTruth/TruthVertex.h" +#include "xAODTruth/TruthVertexContainer.h" + + +namespace FlavorTagDiscriminants { + + TruthParticleDecoratorAlg::TruthParticleDecoratorAlg( + const std::string& name, ISvcLocator* loc ) + : AthReentrantAlgorithm(name, loc) {} + + StatusCode TruthParticleDecoratorAlg::initialize() { + ATH_MSG_INFO( "Inizializing " << name() << "... " ); + + // Initialize Container keys + ATH_MSG_DEBUG( "Inizializing containers:" ); + ATH_MSG_DEBUG( " ** " << m_TruthContainerKey ); + ATH_MSG_DEBUG( " ** " << m_TruthEventsKey ); + + ATH_CHECK( m_TruthContainerKey.initialize() ); + ATH_CHECK( m_TruthEventsKey.initialize() ); + + // Prepare decorators + m_dec_origin_label = m_TruthContainerKey.key() + "." + m_dec_origin_label.key(); + m_dec_type_label = m_TruthContainerKey.key() + "." + m_dec_type_label.key(); + m_dec_vertex_index = m_TruthContainerKey.key() + "." + m_dec_vertex_index.key(); + m_dec_parent_barcode = m_TruthContainerKey.key() + "." + m_dec_parent_barcode.key(); + + CHECK( m_dec_origin_label.initialize() ); + CHECK( m_dec_type_label.initialize() ); + CHECK( m_dec_vertex_index.initialize() ); + CHECK( m_dec_parent_barcode.initialize() ); + + // Retrieve tools + ATH_CHECK( m_truthOriginTool.retrieve() ); + + return StatusCode::SUCCESS; + } + + StatusCode TruthParticleDecoratorAlg::execute(const EventContext& ctx) const { + ATH_MSG_DEBUG( "Executing " << name() << "... " ); + + using TPC = xAOD::TruthParticleContainer; + + // read collections + SG::ReadHandle<TPC> truth_particles(m_TruthContainerKey,ctx); + CHECK( truth_particles.isValid() ); + ATH_MSG_DEBUG( "Retrieved " << truth_particles->size() << " truth_particles..." ); + SG::ReadHandle<xAOD::TruthEventContainer> truth_events(m_TruthEventsKey,ctx); + CHECK( truth_events.isValid() ); + ATH_MSG_DEBUG( "Retrieved " << truth_events->size() << " truth events..." ); + + // instantiate decorators + SG::WriteDecorHandle<TPC, int> dec_origin_label(m_dec_origin_label, ctx); + SG::WriteDecorHandle<TPC, int> dec_type_label(m_dec_type_label, ctx); + SG::WriteDecorHandle<TPC, int> dec_vertex_index(m_dec_vertex_index, ctx); + SG::WriteDecorHandle<TPC, int> dec_parent_barcode(m_dec_parent_barcode, ctx); + + // get the truth primary vertex + const xAOD::TruthVertex* truth_PV = truth_events->at(0)->truthVertex(0); + + // sort the particles by pt to ensure the vertex clustering is deterministic + std::vector<const xAOD::TruthParticle*> sorted_truth_particles; + for (const auto tp : *truth_particles) { sorted_truth_particles.push_back(tp); } + std::sort(sorted_truth_particles.begin(), sorted_truth_particles.end(), TruthDecoratorHelpers::sort_particles); + + // first loop - decorate origin label, just store truth vertex for now + auto tp_truth_vertices = std::vector<const xAOD::TruthVertex*>(); + for ( const auto& truth_particle : sorted_truth_particles ) { + + // get parent hadron and decorate barcode + auto truth_parent = TruthDecoratorHelpers::get_parent_hadron(truth_particle); + dec_parent_barcode(*truth_particle) = truth_parent ? truth_parent->barcode() : -2; + + // get exclusive truth origin + int truth_origin = m_truthOriginTool->getTruthOrigin(truth_particle); + int truth_origin_label = InDet::ExclusiveOrigin::getExclusiveOrigin(truth_origin); + dec_origin_label(*truth_particle) = truth_origin_label; + + // get the truth vertex of the particle and store for now + auto truth_vertex = TruthDecoratorHelpers::get_truth_vertex(truth_particle); + tp_truth_vertices.push_back(truth_vertex); + + // decorate truth type + dec_type_label(*truth_particle) = TruthDecoratorHelpers::get_truth_type(truth_particle); + } + + // decorate particle with truth vertex info + auto seen_vertices = std::vector<const xAOD::TruthVertex*>(); + for ( size_t i = 0; i != tp_truth_vertices.size(); i++) { + auto this_vert = tp_truth_vertices.at(i); + auto this_tp = sorted_truth_particles.at(i); + dec_vertex_index(*this_tp) = TruthDecoratorHelpers::get_vertex_index(this_vert, truth_PV, seen_vertices, m_truthVertexMergeDistance); + } + return StatusCode::SUCCESS; + } +} + + diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/components/FlavorTagDiscriminants_entries.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/components/FlavorTagDiscriminants_entries.cxx index a0931b4c47e738a1e2525606b7d52bd60c46760f..41f4211528647d8319a44088ee2652999c168ba7 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/components/FlavorTagDiscriminants_entries.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/components/FlavorTagDiscriminants_entries.cxx @@ -17,6 +17,7 @@ #include "FlavorTagDiscriminants/BTaggingBuilderAlg.h" #include "FlavorTagDiscriminants/PoorMansIpAugmenterAlg.h" #include "FlavorTagDiscriminants/TrackLeptonDecoratorAlg.h" +#include "FlavorTagDiscriminants/TruthParticleDecoratorAlg.h" #include "FlavorTagDiscriminants/TrackTruthDecoratorAlg.h" #include "FlavorTagDiscriminants/SoftElectronDecoratorAlg.h" #include "FlavorTagDiscriminants/SoftElectronTruthDecoratorAlg.h" @@ -39,6 +40,7 @@ DECLARE_COMPONENT(BTagTrackLinkCopyAlg) DECLARE_COMPONENT(BTaggingBuilderAlg) DECLARE_COMPONENT(PoorMansIpAugmenterAlg) DECLARE_COMPONENT(TrackLeptonDecoratorAlg) +DECLARE_COMPONENT(TruthParticleDecoratorAlg) DECLARE_COMPONENT(TrackTruthDecoratorAlg) DECLARE_COMPONENT(SoftElectronDecoratorAlg) DECLARE_COMPONENT(SoftElectronTruthDecoratorAlg) diff --git a/PhysicsAnalysis/JpsiUpsilonTools/share/configureServices.py b/PhysicsAnalysis/JpsiUpsilonTools/share/configureServices.py index fd676f8ec3ef5efab86df29bd6d6788a9488f8f5..45175aa247140959b8c828c482702108d8a92459 100644 --- a/PhysicsAnalysis/JpsiUpsilonTools/share/configureServices.py +++ b/PhysicsAnalysis/JpsiUpsilonTools/share/configureServices.py @@ -14,8 +14,7 @@ from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__Ver VtxPointEstimator = InDet__VertexPointEstimator(name = "VtxPointEstimator", MinDeltaR = [-10000.,-10000.,-10000.], MaxDeltaR = [10000.,10000.,10000.], - MaxPhi = [10000., 10000., 10000.], - MaxChi2OfVtxEstimation = 2000.) + MaxPhi = [10000., 10000., 10000.]) ToolSvc += VtxPointEstimator # Helper Tool diff --git a/PhysicsAnalysis/PhysicsValidation/VKalVrtValidation/share/RunCascadeExample.py b/PhysicsAnalysis/PhysicsValidation/VKalVrtValidation/share/RunCascadeExample.py index 46620461c3a866ff7da84c1842c1aaeb06e03be5..3602dd82eceaadaaf8a07285292d186e6843765c 100644 --- a/PhysicsAnalysis/PhysicsValidation/VKalVrtValidation/share/RunCascadeExample.py +++ b/PhysicsAnalysis/PhysicsValidation/VKalVrtValidation/share/RunCascadeExample.py @@ -34,8 +34,7 @@ from InDetConversionFinderTools.InDetConversionFinderToolsConf import InDet__Ver VtxPointEstimator = InDet__VertexPointEstimator(name = "VtxPointEstimator", MinDeltaR = [-10000.,-10000.,-10000.], MaxDeltaR = [10000.,10000.,10000.], - MaxPhi = [10000., 10000., 10000.], - MaxChi2OfVtxEstimation = 2000.) + MaxPhi = [10000., 10000., 10000.]) ToolSvc += VtxPointEstimator print VtxPointEstimator diff --git a/PhysicsAnalysis/SUSYPhys/SUSYTools/Root/SUSYObjDef_xAOD.cxx b/PhysicsAnalysis/SUSYPhys/SUSYTools/Root/SUSYObjDef_xAOD.cxx index 142fa80244f6cd060e029c242cf918b4375e13fb..b45ac2ea72b6fb4b457ac41dd21f51628f3d5f56 100644 --- a/PhysicsAnalysis/SUSYPhys/SUSYTools/Root/SUSYObjDef_xAOD.cxx +++ b/PhysicsAnalysis/SUSYPhys/SUSYTools/Root/SUSYObjDef_xAOD.cxx @@ -410,12 +410,12 @@ SUSYObjDef_xAOD::SUSYObjDef_xAOD( const std::string& name ) m_pmgSHnjetWeighter(""), m_pmgSHnjetWeighterWZ(""), // - m_acc_eleIdBaseline(""), - m_acc_eleId(""), - m_acc_photonIdBaseline(""), - m_acc_photonId(""), + m_acc_eleIdBaseline("DFCommonElectronsLHLooseBL"), + m_acc_eleId("DFCommonElectronsLHTight"), + m_acc_photonIdBaseline("DFCommonPhotonsIsEMTight"), + m_acc_photonId("DFCommonPhotonsIsEMTight"), // - m_acc_jetClean("") + m_acc_jetClean("DFCommonJets_jetClean_LooseBad") { //General settings declareProperty( "DataSource", m_dataSource = Undefined ); diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSEnergyAndHitGANV2.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSEnergyAndHitGANV2.cxx index f9c14b12f2445c62834c5f7aef3e903adc56e62d..e6f7f4cdd4ce6dec3ef90a6bf21e81f4f2062ea6 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSEnergyAndHitGANV2.cxx +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSEnergyAndHitGANV2.cxx @@ -142,6 +142,15 @@ bool TFCSEnergyAndHitGANV2::fillEnergy( unsigned int energyBins = outputs.size(); ATH_MSG_VERBOSE("energy voxels size = " << energyBins); + double totalEnergy = 0; + for (unsigned int i = 0; i < energyBins; ++i){ + totalEnergy += outputs.at("out_" + std::to_string(i)); + } + if (totalEnergy < 0){ + ATH_MSG_WARNING("Energy from GAN is negative, skipping particle"); + return false; + } + ATH_MSG_VERBOSE("Get binning"); simulstate.set_E(0); diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py b/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py index 37c98bc985eca31596eff0ae608070dbd8ee920f..737839084820bbb7812fa15f69261553426ab3d0 100644 --- a/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py +++ b/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py @@ -59,7 +59,7 @@ def OverlayMainContentCfg(configFlags): acc.merge(EventInfoOverlayCfg(configFlags)) # Add truth overlay (needed downstream) - if not configFlags.Overlay.FastChain and getEnabledDetectors(configFlags): + if not configFlags.Overlay.FastChain and (getEnabledDetectors(configFlags) or configFlags.Digitization.EnableTruth): acc.merge(CopyMcEventCollectionCfg(configFlags)) if configFlags.Digitization.EnableTruth: acc.merge(CopyJetTruthInfoCfg(configFlags)) diff --git a/TileCalorimeter/TileExample/TileRecEx/python/RunTileCalibRec.py b/TileCalorimeter/TileExample/TileRecEx/python/RunTileCalibRec.py index f406c63c8a5326f38f12162cbcf64d9276eb1934..d2a0993900445e849423bab9c450d885bc824f11 100755 --- a/TileCalorimeter/TileExample/TileRecEx/python/RunTileCalibRec.py +++ b/TileCalorimeter/TileExample/TileRecEx/python/RunTileCalibRec.py @@ -44,7 +44,6 @@ def getArgumentParser(flags): import argparse parser= argparse.ArgumentParser(parents=parserParents, add_help=False, fromfile_prefix_chars='@', epilog=epiLog, formatter_class=argparse.RawTextHelpFormatter) - parser.add_argument('-i', '--interactive', action='store_true', help='Interactive mode') parser.add_argument('--preExec', help='Code to execute before locking configs') parser.add_argument('--postExec', help='Code to execute after setup') parser.add_argument('--printDetailedConfig', action='store_true', help='Print detailed Athena configuration') @@ -244,9 +243,6 @@ if __name__=='__main__': log.info('Executing preExec: %s', args.preExec) exec(args.preExec) - if args.interactive: - os.environ['PYTHONINSPECT'] = '1' - flags.lock() log.info('=====>>> FINAL CONFIG FLAGS SETTINGS FOLLOW:') @@ -294,7 +290,7 @@ if __name__=='__main__': from TileRecUtils.TileRawChannelMakerConfig import TileRawChannelMakerCfg cfg.merge( TileRawChannelMakerCfg(flags) ) rawChMaker = cfg.getEventAlgo('TileRChMaker') - if args.threads > 1: + if args.threads and (args.threads > 1): rawChMaker.Cardinality = args.threads for builderTool in rawChMaker.TileRawChannelBuilder: builderTool.UseDSPCorrection = not biGainRun @@ -440,6 +436,5 @@ if __name__=='__main__': cfg.printConfig(withDetails=args.printDetailedConfig) - if not args.interactive: - sc = cfg.run() - sys.exit(0 if sc.isSuccess() else 1) + sc = cfg.run() + sys.exit(0 if sc.isSuccess() else 1) diff --git a/Tracking/TrkConfig/python/TrkVKalVrtFitterConfig.py b/Tracking/TrkConfig/python/TrkVKalVrtFitterConfig.py index 25d3629ddec0bdc8748e5b73e312d84f605ba364..c00acab1e2fc6bf465cfe4d71f9b01a507436c63 100644 --- a/Tracking/TrkConfig/python/TrkVKalVrtFitterConfig.py +++ b/Tracking/TrkConfig/python/TrkVKalVrtFitterConfig.py @@ -56,11 +56,10 @@ def BPHY_TrkVKalVrtFitterCfg(flags, name="BPHY_TrkVKalVrtFitter", **kwargs): return acc def V0VKalVrtFitterCfg(flags, name="V0VKalVrtFitter", **kwargs): - acc = ComponentAccumulator() - kwargs.setdefault("MakeExtendedVertex", True) kwargs.setdefault("IterationNumber", 30) + return BPHY_TrkVKalVrtFitterCfg(flags, name, **kwargs) - acc.setPrivateTools(acc.popToolsAndMerge( - BPHY_TrkVKalVrtFitterCfg(flags, name, **kwargs))) - return acc +def JpsiV0VertexFitCfg(flags, name="JpsiV0VertexFit", **kwargs): + kwargs.setdefault("CascadeCnstPrecision", 1e-6) + return BPHY_TrkVKalVrtFitterCfg(flags, name, **kwargs) diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py index c8270a849e204975780cd517fc332a4237b103ee..14d5e260976184a1cfa5f0a5a574e6fba657e22e 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py @@ -7,6 +7,7 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.AccumulatorCache import AccumulatorCache # Get Rpc data decoder for MuFast data preparator @@ -340,8 +341,8 @@ def AlignmentBarrelLUTSvcCfg( flags ): return acc, alignmentBarrelLUTSvc -# In the future, above functions should be moved to TrigL2MuonSA package(?) +@AccumulatorCache def l2MuFastAlgCfg( flags, roisKey, setup="", **kwargs ): acc = ComponentAccumulator() diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXmetAlgo.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXmetAlgo.h index 9a9410e6ba9b566a3c24745d65d18e6258a30b89..3100ae94921978e99d85888da4927347bd5df682 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXmetAlgo.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXmetAlgo.h @@ -68,7 +68,10 @@ protected: int m_Totalmet_Ycoord; virtual void buildMetXComponent(); - virtual void buildMetYComponent(); + virtual void buildMetYComponent(); + + // To avoid using floats in the firmware. + static constexpr unsigned int m_firmware_scale = std::pow(2,9); std::unordered_map<int,std::vector<int> > m_map_Etvalues; }; diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx index 96ed584e9a1fccde409770cde4cc996bd269dab8..2b57e9f7be07591b6e3f3530e593fbbb679d258b 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx @@ -220,8 +220,8 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) { m_jFEXmetAlgoTool->setup(m_jTowersIDs_Wide); m_jFEXmetAlgoTool->buildFWDmet(); } - - jXE_tobword = m_IjFEXFormTOBsTool->formMetTOB(m_jFEXmetAlgoTool->GetMetXComponent(),m_jFEXmetAlgoTool->GetMetYComponent(),thr_jXE.resolutionMeV()); + int hemisphere = m_id == 0 ? 1 : -1; + jXE_tobword = m_IjFEXFormTOBsTool->formMetTOB(hemisphere * m_jFEXmetAlgoTool->GetMetXComponent(), hemisphere * m_jFEXmetAlgoTool->GetMetYComponent(),thr_jXE.resolutionMeV()); jXE_tob->initialize(m_id,m_jfexid,jXE_tobword,thr_jXE.resolutionMeV(),0); m_Met_tobwords.push_back(std::move(jXE_tob)); diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFormTOBs.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFormTOBs.cxx index 3204a7c9c55d02c4a835a1b344fe107f8404545f..5012a1176f3687700dedd6489f8cf9543e798009 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFormTOBs.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFormTOBs.cxx @@ -263,21 +263,19 @@ uint32_t jFEXFormTOBs::formMetTOB(int METX, int METY, int Resolution ) { int sat = 0; int res = 0; - int metX = METX/Resolution; - int metY = METY/Resolution; + int metX = METX < 0 ? std::floor(1.0*METX/Resolution) : METX/Resolution; + int metY = METY < 0 ? std::floor(1.0*METY/Resolution) : METY/Resolution; //0x7fff is 15 bits (decimal value 32767), however as MET is a signed value (can be negative) only 14 bits are allowed (16383) the MSB is the sign if (std::abs(metX) > 0x3fff) { ATH_MSG_DEBUG("sumEtlow saturated: " << metX ); - metX = 0x7fff; - sat=1; + metX = 0x3fff; } if (std::abs(metY) > 0x3fff) { //0x7fff is 15 bits (decimal value 32767), however as MET is a signed value (can be negative) only 14 bits are allowed (16383) ATH_MSG_DEBUG("sumEthigh saturated: " << metY ); - metY = 0x7fff; - sat=1; + metY = 0x3fff; } //create basic tobword with 32 bits diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXmetAlgo.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXmetAlgo.cxx index e7dbc14b23b9ebae78679017f38d226c8391cc22..33d8ac95f30b4e86fba8d3e85b9fda6e0b5cb7fb 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXmetAlgo.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXmetAlgo.cxx @@ -67,7 +67,6 @@ void LVL1::jFEXmetAlgo::setup(int FPGA[FEXAlgoSpaceDefs::jFEX_algoSpace_height][ m_FPGA[iphi].push_back(FPGA[iphi][ieta]); } } - } //Setup for the forward region @@ -101,7 +100,6 @@ void LVL1::jFEXmetAlgo::setup(int FPGA[FEXAlgoSpaceDefs::jFEX_algoSpace_height][ void LVL1::jFEXmetAlgo::buildBarrelmet() { ATH_MSG_DEBUG("---------------- jFEXmetAlgo::buildBarrelmet ----------------"); - //SG::ReadHandle<jTowerContainer> jTowerContainer(m_jTowerContainerKey); m_Totalmet_Xcoord=0; m_Totalmet_Ycoord=0; @@ -116,7 +114,7 @@ void LVL1::jFEXmetAlgo::buildBarrelmet() } const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(m_FPGA[iphi][0]); - m_met_angle[iphi]=tmpTower->centrePhi(); + m_met_angle[iphi]=tmpTower->centrephi_toPI(); } buildMetXComponent(); @@ -127,7 +125,6 @@ void LVL1::jFEXmetAlgo::buildBarrelmet() void LVL1::jFEXmetAlgo::buildFWDmet() { ATH_MSG_DEBUG("---------------- jFEXmetAlgo::buildFWDmet ----------------"); - //SG::ReadHandle<jTowerContainer> jTowerContainer(m_jTowerContainerKey); m_Totalmet_Xcoord=0; m_Totalmet_Ycoord=0; @@ -144,7 +141,7 @@ void LVL1::jFEXmetAlgo::buildFWDmet() m_met[iphi]+=getTTowerET(m_FPGA[iphi][ieta]); } const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(m_FPGA[iphi][0]); - m_met_angle[iphi]=tmpTower->centrePhi(); + m_met_angle[iphi]=tmpTower->centrephi_toPI(); } buildMetXComponent(); buildMetYComponent(); @@ -160,7 +157,7 @@ void LVL1::jFEXmetAlgo::buildFWDmet() m_met[iphi]+=getTTowerET(m_FPGA_phi02[iphi][ieta]); } const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(m_FPGA_phi02[iphi][0]); - m_met_angle[iphi]=tmpTower->centrePhi(); + m_met_angle[iphi]=tmpTower->centrephi_toPI(); } buildMetXComponent(); buildMetYComponent(); @@ -176,7 +173,7 @@ void LVL1::jFEXmetAlgo::buildFWDmet() m_met[iphi]+=getTTowerET(m_FPGA_fcal[iphi][ieta]); } const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(m_FPGA_fcal[iphi][0]); - m_met_angle[iphi]=M_PI/64 + tmpTower->phi()*(4*M_PI/32); + m_met_angle[iphi]=tmpTower->phi()*(M_PI/8) + M_PI/16; } buildMetXComponent(); buildMetYComponent(); @@ -188,10 +185,10 @@ void LVL1::jFEXmetAlgo::buildMetXComponent() m_met_Xcoord.clear(); m_met_Xcoord.resize(m_met.size(),0); - //computing the X and Y component of MET for(uint iphi=0;iphi<m_met.size();iphi++){ - m_met_Xcoord[iphi]=m_met[iphi]*cos(m_met_angle[iphi]); + int cos = std::round(std::cos(m_met_angle[iphi]) * m_firmware_scale); + m_met_Xcoord[iphi]= m_met[iphi]*cos; } //Summing all X coordinate @@ -204,7 +201,7 @@ void LVL1::jFEXmetAlgo::buildMetXComponent() //return the X component of the Met int LVL1::jFEXmetAlgo::GetMetXComponent() { - return m_Totalmet_Xcoord; + return static_cast<int>(1.0*m_Totalmet_Xcoord/m_firmware_scale); } //build Met Y component for the central barrels @@ -216,7 +213,8 @@ void LVL1::jFEXmetAlgo::buildMetYComponent() //computing the X and Y component of MET for(uint iphi=0;iphi<m_met.size();iphi++){ - m_met_Ycoord[iphi]=m_met[iphi]*sin(m_met_angle[iphi]); + int sin = std::round(std::sin(m_met_angle[iphi]) * m_firmware_scale) ; + m_met_Ycoord[iphi]= m_met[iphi]*sin; } //Summing all Y coordinate @@ -229,7 +227,7 @@ void LVL1::jFEXmetAlgo::buildMetYComponent() //return the Y component of the Met int LVL1::jFEXmetAlgo::GetMetYComponent() { - return m_Totalmet_Ycoord; + return static_cast<int>(1.0*m_Totalmet_Ycoord/m_firmware_scale);; } //Gets the ET for the TT. This ET is EM + HAD diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoringAlg.cxx b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoringAlg.cxx index 5e91ee0b533c0bb3d5ef7796fd29bcda3361fa28..51e24881de1acf0bda06500201b235b7b7312bab 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoringAlg.cxx +++ b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoringAlg.cxx @@ -597,7 +597,7 @@ TrigT1CTMonitoring::BSMonitoringAlgorithm::doMuctpi(const MuCTPI_Phase1_RDO* the //decoded thresholds for(uint iThr=0;iThr<slices[iSlice].mlt.cnt.size();iThr++) { - bool thr = slices[iSlice].mlt.cnt[iThr] & 0x1; + bool thr = slices[iSlice].mlt.cnt[iThr];//this is a counter value [1-7], but only keeping whether it fired at all if(thr) { multThrX = iThr; diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIPhase1ByteStreamAlgo.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIPhase1ByteStreamAlgo.cxx index a38df6bcad56030a7d04b5f48b5b43a7707a9a57..9f251263530d1c1de2ea24a5b330871f143abfae 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIPhase1ByteStreamAlgo.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIPhase1ByteStreamAlgo.cxx @@ -199,11 +199,11 @@ StatusCode MuCTPIPhase1ByteStreamAlgo::convert( const IROBDataProviderSvc::ROBF* { //fill mult word into temp container until 3rd word is found if(tmNum==1) - sliceMultiplicity |= LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART1_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART1_MASK); + sliceMultiplicity |= ( (uint64_t)LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART1_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART1_MASK) ) << LVL1::MuCTPIBits::RUN3_MULTIPLICITY_ENC_PART1_SHIFT; else if(tmNum==2) - sliceMultiplicity |= LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART2_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART2_MASK); + sliceMultiplicity |= ( (uint64_t)LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART2_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART2_MASK) ) << LVL1::MuCTPIBits::RUN3_MULTIPLICITY_ENC_PART2_SHIFT; else if(tmNum==3) - sliceMultiplicity |= LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART3_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART3_MASK); + sliceMultiplicity |= ( (uint64_t)LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART3_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART3_MASK) ) << LVL1::MuCTPIBits::RUN3_MULTIPLICITY_ENC_PART3_SHIFT; //flags from third word //AND: process multiplicity for the slice!!! diff --git a/Trigger/TrigTools/TrigVrtSecInclusive/python/TrigVrtSecInclusiveConfig.py b/Trigger/TrigTools/TrigVrtSecInclusive/python/TrigVrtSecInclusiveConfig.py index 54d0ce3c646728ec2c96b4e8793a72f145ac653a..40dbd490e0aea7c3c1014ae9afe1cd62128463b5 100644 --- a/Trigger/TrigTools/TrigVrtSecInclusive/python/TrigVrtSecInclusiveConfig.py +++ b/Trigger/TrigTools/TrigVrtSecInclusive/python/TrigVrtSecInclusiveConfig.py @@ -109,8 +109,7 @@ def TrigVrtSecInclusiveCfg(flags, name, FirstPassTracksName, SecondPassTracksNam name = 'VertexPointEstimator_'+name, MinDeltaR = [-10000., -10000., -10000.], MaxDeltaR = [ 10000., 10000., 10000.], - MaxPhi = [ 10000., 10000., 10000.], - MaxChi2OfVtxEstimation = 2000.) + MaxPhi = [ 10000., 10000., 10000.]) ToolSvc += VertexPointEstimator diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref index 1b07f0e94f1bd746d37b2b51efda9c0c883fa0d2..719d80f9dc652ef926cf2e6cd8bbb4cd74fe6af2 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref @@ -3220,10 +3220,10 @@ HLT_distrk20_medium_L1XE55: HLT_distrk20_medium_L1jXE100: eventCount: 1 stepCounts: - 0: 8 + 0: 20 1: 1 stepFeatures: - 0: 8 + 0: 20 1: 1 HLT_distrk20_tight_L1XE50: eventCount: 1 @@ -3244,10 +3244,10 @@ HLT_distrk20_tight_L1XE55: HLT_distrk20_tight_L1jXE100: eventCount: 1 stepCounts: - 0: 8 + 0: 20 1: 1 stepFeatures: - 0: 8 + 0: 20 1: 1 HLT_e100_etcut_L1EM22VHI: eventCount: 2 @@ -15812,11 +15812,11 @@ HLT_hitdvjet200_medium_L1XE55: HLT_hitdvjet200_medium_L1jXE100: eventCount: 0 stepCounts: - 0: 8 - 1: 8 + 0: 20 + 1: 20 stepFeatures: - 0: 8 - 1: 8 + 0: 20 + 1: 20 HLT_hitdvjet260_medium_L1J100: eventCount: 0 stepCounts: @@ -20139,18 +20139,6 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_ 0: 45 1: 123 2: 11 -? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn175bb90_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 -: eventCount: 3 - stepCounts: - 0: 9 - 1: 6 - 2: 4 - 3: 3 - stepFeatures: - 0: 45 - 1: 30 - 2: 80 - 3: 7 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_presel2c20XX2c20b80_L1J45p0ETA21_3J15p0ETA25 : eventCount: 4 stepCounts: @@ -20224,18 +20212,6 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_p 2: 45 3: 4 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25 -: eventCount: 4 - stepCounts: - 0: 9 - 1: 6 - 2: 4 - 3: 4 - stepFeatures: - 0: 45 - 1: 30 - 2: 80 - 3: 8 -? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 4 stepCounts: 0: 9 @@ -20260,18 +20236,6 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_p 2: 80 3: 8 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn182_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 -: eventCount: 4 - stepCounts: - 0: 9 - 1: 6 - 2: 4 - 3: 4 - stepFeatures: - 0: 45 - 1: 30 - 2: 80 - 3: 9 -? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn182bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 4 stepCounts: 0: 9 @@ -20594,6 +20558,17 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_ 0: 45 1: 123 2: 10 +? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn175bb90_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 +: eventCount: 0 + stepCounts: + 0: 9 + 1: 6 + 2: 4 + stepFeatures: + 0: 45 + 1: 30 + 2: 80 + 3: 7 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn177_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 stepCounts: @@ -20614,6 +20589,17 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_ 0: 45 1: 123 2: 11 +? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn177bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 +: eventCount: 0 + stepCounts: + 0: 9 + 1: 6 + 2: 4 + stepFeatures: + 0: 45 + 1: 30 + 2: 80 + 3: 8 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn180_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 stepCounts: @@ -20716,6 +20702,18 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_ 0: 45 1: 123 2: 12 +? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn182bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 +: eventCount: 1 + stepCounts: + 0: 9 + 1: 6 + 2: 4 + 3: 1 + stepFeatures: + 0: 45 + 1: 30 + 2: 80 + 3: 9 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn185_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 1 stepCounts: @@ -22116,17 +22114,17 @@ HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU14FCH_jJ80: 2: 3 3: 4 HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU14FCH_jXE70: - eventCount: 2 + eventCount: 3 stepCounts: - 0: 3 - 1: 3 - 2: 3 - 3: 2 + 0: 6 + 1: 5 + 2: 4 + 3: 3 stepFeatures: - 0: 3 - 1: 3 - 2: 3 - 3: 4 + 0: 7 + 1: 5 + 2: 4 + 3: 6 HLT_mu20_mu2noL1_invmJPsiOS_L1MU14FCH: eventCount: 0 stepCounts: @@ -27586,7 +27584,7 @@ HLT_noalg_L1jJ500: HLT_noalg_L1jLJ140: eventCount: 3 HLT_noalg_L1jXE100: - eventCount: 8 + eventCount: 20 HLT_noalg_L1jXEPerf100: eventCount: 0 HLT_tau0_mediumRNN_tracktwoMVA_tau0_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: @@ -27887,7 +27885,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: 4: 1 5: 1 stepFeatures: - 0: 13 + 0: 26 1: 1 2: 2 3: 2 @@ -27935,7 +27933,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: 4: 1 5: 1 stepFeatures: - 0: 13 + 0: 26 1: 1 2: 2 3: 2 @@ -27983,7 +27981,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 1 5: 1 stepFeatures: - 0: 12 + 0: 24 1: 1 2: 2 3: 2 @@ -28085,7 +28083,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100: 4: 1 5: 1 stepFeatures: - 0: 13 + 0: 26 1: 1 2: 2 3: 2 @@ -28133,7 +28131,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100: 4: 1 5: 1 stepFeatures: - 0: 13 + 0: 26 1: 1 2: 2 3: 2 @@ -28181,7 +28179,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 1 5: 1 stepFeatures: - 0: 12 + 0: 24 1: 1 2: 2 3: 2 @@ -28756,21 +28754,23 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: 5: 20 6: 2 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 5 - 1: 3 - 2: 3 - 3: 3 - 4: 3 - 5: 3 + 0: 6 + 1: 4 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 1 stepFeatures: - 0: 13 - 1: 3 - 2: 14 - 3: 14 - 4: 14 - 5: 14 + 0: 26 + 1: 4 + 2: 20 + 3: 20 + 4: 20 + 5: 20 + 6: 2 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 1 stepCounts: @@ -28808,21 +28808,23 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: 5: 20 6: 2 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 5 - 1: 3 - 2: 3 - 3: 3 - 4: 3 - 5: 3 + 0: 6 + 1: 4 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 1 stepFeatures: - 0: 13 - 1: 3 - 2: 14 - 3: 14 - 4: 14 - 5: 14 + 0: 26 + 1: 4 + 2: 20 + 3: 20 + 4: 20 + 5: 20 + 6: 2 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 stepCounts: @@ -28865,7 +28867,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 3 5: 3 stepFeatures: - 0: 12 + 0: 24 1: 3 2: 14 3: 14 @@ -29364,21 +29366,23 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: 5: 11 6: 2 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 5 - 1: 3 - 2: 3 - 3: 3 - 4: 3 - 5: 3 + 0: 6 + 1: 4 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 1 stepFeatures: - 0: 13 - 1: 3 - 2: 6 - 3: 6 - 4: 6 - 5: 6 + 0: 26 + 1: 4 + 2: 9 + 3: 9 + 4: 9 + 5: 9 + 6: 2 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 1 stepCounts: @@ -29416,21 +29420,23 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: 5: 11 6: 2 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 5 - 1: 3 - 2: 3 - 3: 3 - 4: 3 - 5: 3 + 0: 6 + 1: 4 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 1 stepFeatures: - 0: 13 - 1: 3 - 2: 6 - 3: 6 - 4: 6 - 5: 6 + 0: 26 + 1: 4 + 2: 9 + 3: 9 + 4: 9 + 5: 9 + 6: 2 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 stepCounts: @@ -29473,7 +29479,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 3 5: 3 stepFeatures: - 0: 12 + 0: 24 1: 3 2: 6 3: 6 @@ -30290,21 +30296,23 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: 5: 9 6: 1 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 5 - 1: 3 - 2: 3 - 3: 3 - 4: 3 - 5: 3 + 0: 6 + 1: 4 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 1 stepFeatures: - 0: 13 - 1: 3 - 2: 6 - 3: 6 - 4: 6 - 5: 6 + 0: 26 + 1: 4 + 2: 8 + 3: 8 + 4: 8 + 5: 8 + 6: 1 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 1 stepCounts: @@ -30342,21 +30350,23 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: 5: 9 6: 1 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 5 - 1: 3 - 2: 3 - 3: 3 - 4: 3 - 5: 3 + 0: 6 + 1: 4 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 1 stepFeatures: - 0: 13 - 1: 3 - 2: 6 - 3: 6 - 4: 6 - 5: 6 + 0: 26 + 1: 4 + 2: 8 + 3: 8 + 4: 8 + 5: 8 + 6: 1 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 stepCounts: @@ -30399,7 +30409,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 3 5: 3 stepFeatures: - 0: 12 + 0: 24 1: 3 2: 6 3: 6 @@ -30757,21 +30767,23 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: 5: 8 6: 1 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 5 - 1: 3 - 2: 3 - 3: 3 - 4: 3 - 5: 3 + 0: 6 + 1: 4 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 1 stepFeatures: - 0: 13 - 1: 3 - 2: 5 - 3: 5 - 4: 5 - 5: 5 + 0: 26 + 1: 4 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 1 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 1 stepCounts: @@ -30809,21 +30821,23 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: 5: 8 6: 1 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 5 - 1: 3 - 2: 3 - 3: 3 - 4: 3 - 5: 3 + 0: 6 + 1: 4 + 2: 4 + 3: 4 + 4: 4 + 5: 4 + 6: 1 stepFeatures: - 0: 13 - 1: 3 - 2: 5 - 3: 5 - 4: 5 - 5: 5 + 0: 26 + 1: 4 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 1 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 stepCounts: @@ -30866,7 +30880,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 3 5: 3 stepFeatures: - 0: 12 + 0: 24 1: 3 2: 5 3: 5 @@ -30988,21 +31002,23 @@ HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1XE55: 5: 6 6: 1 HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 8 - 1: 8 - 2: 8 - 3: 8 - 4: 2 - 5: 2 + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 4 + 5: 3 + 6: 1 stepFeatures: - 0: 11 - 1: 11 - 2: 11 - 3: 11 - 4: 2 - 5: 4 + 0: 19 + 1: 19 + 2: 19 + 3: 19 + 4: 4 + 5: 7 + 6: 1 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1XE50: eventCount: 1 stepCounts: @@ -31036,20 +31052,21 @@ HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1XE55: 4: 3 5: 4 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 8 - 1: 8 - 2: 8 - 3: 8 - 4: 2 + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 4 + 5: 1 stepFeatures: - 0: 11 - 1: 11 - 2: 11 - 3: 11 - 4: 2 - 5: 2 + 0: 19 + 1: 19 + 2: 19 + 3: 19 + 4: 4 + 5: 4 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE50: eventCount: 0 stepCounts: @@ -31085,19 +31102,19 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 - 3: 2 - 4: 2 - 5: 2 + 0: 4 + 1: 3 + 2: 3 + 3: 3 + 4: 3 + 5: 3 stepFeatures: - 0: 13 - 1: 2 - 2: 5 - 3: 5 - 4: 5 - 5: 5 + 0: 26 + 1: 3 + 2: 6 + 3: 6 + 4: 6 + 5: 6 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 stepCounts: @@ -31133,19 +31150,19 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 - 3: 2 - 4: 2 - 5: 2 + 0: 4 + 1: 3 + 2: 3 + 3: 3 + 4: 3 + 5: 3 stepFeatures: - 0: 13 - 1: 2 - 2: 5 - 3: 5 - 4: 5 - 5: 5 + 0: 26 + 1: 3 + 2: 6 + 3: 6 + 4: 6 + 5: 6 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 stepCounts: @@ -31188,7 +31205,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 2 5: 2 stepFeatures: - 0: 12 + 0: 24 1: 2 2: 5 3: 5 @@ -31259,21 +31276,23 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: 5: 7 6: 1 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 3 - 1: 2 - 2: 2 - 3: 2 - 4: 2 - 5: 2 + 0: 4 + 1: 3 + 2: 3 + 3: 3 + 4: 3 + 5: 3 + 6: 1 stepFeatures: - 0: 13 - 1: 2 - 2: 5 - 3: 5 - 4: 5 - 5: 5 + 0: 26 + 1: 3 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 1 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 1 stepCounts: @@ -31311,21 +31330,23 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: 5: 7 6: 1 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 3 - 1: 2 - 2: 2 - 3: 2 - 4: 2 - 5: 2 + 0: 4 + 1: 3 + 2: 3 + 3: 3 + 4: 3 + 5: 3 + 6: 1 stepFeatures: - 0: 13 - 1: 2 - 2: 5 - 3: 5 - 4: 5 - 5: 5 + 0: 26 + 1: 3 + 2: 6 + 3: 6 + 4: 6 + 5: 6 + 6: 1 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 stepCounts: @@ -31368,7 +31389,7 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 2 5: 2 stepFeatures: - 0: 12 + 0: 24 1: 2 2: 5 3: 5 @@ -31393,18 +31414,18 @@ HLT_tau60_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1T HLT_tau60_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1eTAU60_2cTAU20M_jXE80: eventCount: 1 stepCounts: - 0: 6 - 1: 6 - 2: 6 - 3: 6 - 4: 3 + 0: 9 + 1: 9 + 2: 9 + 3: 9 + 4: 4 5: 1 stepFeatures: - 0: 27 - 1: 27 - 2: 27 - 3: 27 - 4: 7 + 0: 37 + 1: 37 + 2: 37 + 3: 37 + 4: 10 5: 3 HLT_tau80_idperf_trackLRT_L1TAU60: eventCount: 7 @@ -31505,15 +31526,15 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 2 + 0: 4 + 1: 3 2: 2 3: 2 4: 2 5: 2 stepFeatures: - 0: 13 - 1: 2 + 0: 26 + 1: 3 2: 3 3: 3 4: 3 @@ -31553,15 +31574,15 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 2 + 0: 4 + 1: 3 2: 2 3: 2 4: 2 5: 2 stepFeatures: - 0: 13 - 1: 2 + 0: 26 + 1: 3 2: 3 3: 3 4: 3 @@ -31608,7 +31629,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 2 5: 2 stepFeatures: - 0: 12 + 0: 24 1: 2 2: 3 3: 3 @@ -31729,15 +31750,15 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 2 + 0: 4 + 1: 3 2: 2 3: 2 4: 2 5: 2 stepFeatures: - 0: 13 - 1: 2 + 0: 26 + 1: 3 2: 3 3: 3 4: 3 @@ -31777,15 +31798,15 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 2 + 0: 4 + 1: 3 2: 2 3: 2 4: 2 5: 2 stepFeatures: - 0: 13 - 1: 2 + 0: 26 + 1: 3 2: 3 3: 3 4: 3 @@ -31832,7 +31853,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: 4: 2 5: 2 stepFeatures: - 0: 12 + 0: 24 1: 2 2: 3 3: 3 @@ -32139,11 +32160,11 @@ HLT_xe30_cell_xe30_tcpufit_L1XE30: stepFeatures: 0: 17 HLT_xe30_cell_xe30_tcpufit_L1jXE70: - eventCount: 9 + eventCount: 10 stepCounts: - 0: 9 + 0: 10 stepFeatures: - 0: 21 + 0: 27 HLT_xe30_cvfpufit_L1XE30: eventCount: 8 stepCounts: @@ -32243,13 +32264,13 @@ HLT_xe55_cell_xe105_nn_L1gXEJWOJ100: 0: 17 1: 3 HLT_xe55_cell_xe105_nn_L1jXE100: - eventCount: 3 + eventCount: 4 stepCounts: - 0: 6 - 1: 3 + 0: 7 + 1: 4 stepFeatures: - 0: 14 - 1: 3 + 0: 27 + 1: 4 HLT_xe55_cell_xe70_tcpufit_L1XE50: eventCount: 3 stepCounts: @@ -32279,13 +32300,13 @@ HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1XE55: 0: 18 1: 3 HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1jXE100: - eventCount: 2 + eventCount: 3 stepCounts: - 0: 2 - 1: 2 + 0: 3 + 1: 3 stepFeatures: - 0: 17 - 1: 2 + 0: 33 + 1: 3 HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE50: eventCount: 3 stepCounts: @@ -32303,13 +32324,13 @@ HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE55: 0: 18 1: 3 HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1jXE100: - eventCount: 2 + eventCount: 3 stepCounts: - 0: 2 - 1: 2 + 0: 3 + 1: 3 stepFeatures: - 0: 17 - 1: 2 + 0: 33 + 1: 3 HLT_xe55_cell_xe90_nn_L1gXEJWOJ100: eventCount: 3 stepCounts: @@ -32319,13 +32340,13 @@ HLT_xe55_cell_xe90_nn_L1gXEJWOJ100: 0: 17 1: 3 HLT_xe55_cell_xe90_nn_L1jXE100: - eventCount: 3 + eventCount: 4 stepCounts: - 0: 6 - 1: 3 + 0: 7 + 1: 4 stepFeatures: - 0: 14 - 1: 3 + 0: 27 + 1: 4 HLT_xe60_cell_L1XE50: eventCount: 7 stepCounts: @@ -32349,13 +32370,13 @@ HLT_xe60_cell_xe95_pfsum_cssk_L1XE55: 0: 15 1: 4 HLT_xe60_cell_xe95_pfsum_cssk_L1jXE100: - eventCount: 3 + eventCount: 4 stepCounts: - 0: 6 - 1: 3 + 0: 7 + 1: 4 stepFeatures: - 0: 14 - 1: 3 + 0: 27 + 1: 4 HLT_xe65_cell_xe100_mhtpufit_pf_L1XE50: eventCount: 4 stepCounts: @@ -32397,13 +32418,13 @@ HLT_xe65_cell_xe100_mhtpufit_pf_L1gXERHO100: 0: 12 1: 4 HLT_xe65_cell_xe100_mhtpufit_pf_L1jXE100: - eventCount: 3 + eventCount: 4 stepCounts: - 0: 5 - 1: 3 + 0: 6 + 1: 4 stepFeatures: - 0: 13 - 1: 3 + 0: 26 + 1: 4 HLT_xe65_cell_xe100_pfopufit_L1XE50: eventCount: 4 stepCounts: @@ -32421,13 +32442,13 @@ HLT_xe65_cell_xe100_pfopufit_L1XE55: 0: 14 1: 4 HLT_xe65_cell_xe100_pfopufit_L1jXE100: - eventCount: 3 + eventCount: 4 stepCounts: - 0: 5 - 1: 3 + 0: 6 + 1: 4 stepFeatures: - 0: 13 - 1: 3 + 0: 26 + 1: 4 HLT_xe65_cell_xe105_mhtpufit_em_L1XE50: eventCount: 3 stepCounts: @@ -32447,10 +32468,10 @@ HLT_xe65_cell_xe105_mhtpufit_em_L1XE55: HLT_xe65_cell_xe105_mhtpufit_em_L1jXE100: eventCount: 3 stepCounts: - 0: 5 + 0: 6 1: 3 stepFeatures: - 0: 13 + 0: 26 1: 3 HLT_xe65_cell_xe105_nn_L1XE50: eventCount: 4 @@ -32477,13 +32498,13 @@ HLT_xe65_cell_xe105_nn_L1gXEJWOJ100: 0: 16 1: 3 HLT_xe65_cell_xe105_nn_L1jXE100: - eventCount: 3 + eventCount: 4 stepCounts: - 0: 5 - 1: 3 + 0: 6 + 1: 4 stepFeatures: - 0: 13 - 1: 3 + 0: 26 + 1: 4 HLT_xe65_cell_xe110_tcpufit_L1XE50: eventCount: 2 stepCounts: @@ -32495,7 +32516,7 @@ HLT_xe65_cell_xe110_tcpufit_L1jXE100: stepCounts: 0: 2 stepFeatures: - 0: 8 + 0: 9 HLT_xe65_cell_xe110_tcpufit_sig30_L1XE50: eventCount: 2 stepCounts: @@ -32533,13 +32554,13 @@ HLT_xe65_cell_xe90_nn_L1gXEJWOJ100: 0: 16 1: 3 HLT_xe65_cell_xe90_nn_L1jXE100: - eventCount: 3 + eventCount: 4 stepCounts: - 0: 5 - 1: 3 + 0: 6 + 1: 4 stepFeatures: - 0: 13 - 1: 3 + 0: 26 + 1: 4 HLT_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 4 stepCounts: @@ -32581,13 +32602,13 @@ HLT_xe65_cell_xe90_pfopufit_L1gXERHO100: 0: 12 1: 4 HLT_xe65_cell_xe90_pfopufit_L1jXE100: - eventCount: 3 + eventCount: 4 stepCounts: - 0: 5 - 1: 3 + 0: 6 + 1: 4 stepFeatures: - 0: 13 - 1: 3 + 0: 26 + 1: 4 HLT_xe65_cell_xe90_pfopufit_sig30_L1XE50: eventCount: 4 stepCounts: @@ -32621,13 +32642,13 @@ HLT_xe65_cell_xe95_pfsum_vssk_L1XE55: 0: 14 1: 4 HLT_xe65_cell_xe95_pfsum_vssk_L1jXE100: - eventCount: 3 + eventCount: 4 stepCounts: - 0: 5 - 1: 3 + 0: 6 + 1: 4 stepFeatures: - 0: 13 - 1: 3 + 0: 26 + 1: 4 HLT_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 3 stepCounts: @@ -32650,7 +32671,7 @@ HLT_xe75_cell_xe100_pfopufit_L1jXE100: 0: 4 1: 3 stepFeatures: - 0: 12 + 0: 24 1: 3 HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE50: eventCount: 2 @@ -32674,7 +32695,7 @@ HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1jXE100: 0: 2 1: 2 stepFeatures: - 0: 15 + 0: 32 1: 2 HLT_xe80_cell_xe115_tcpufit_L1XE50: eventCount: 2 @@ -32745,13 +32766,15 @@ HLT_xe80_tcpufit_dedxtrk25_medium_L1XE55: 1: 3 2: 1 HLT_xe80_tcpufit_dedxtrk25_medium_L1jXE100: - eventCount: 0 + eventCount: 1 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 + 2: 1 stepFeatures: - 0: 3 - 1: 3 + 0: 6 + 1: 6 + 2: 1 HLT_xe80_tcpufit_dedxtrk50_medium_L1XE50: eventCount: 0 stepCounts: @@ -32771,11 +32794,11 @@ HLT_xe80_tcpufit_dedxtrk50_medium_L1XE55: HLT_xe80_tcpufit_dedxtrk50_medium_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 stepFeatures: - 0: 3 - 1: 3 + 0: 6 + 1: 6 HLT_xe80_tcpufit_distrk20_medium_L1XE50: eventCount: 0 stepCounts: @@ -32795,11 +32818,11 @@ HLT_xe80_tcpufit_distrk20_medium_L1XE55: HLT_xe80_tcpufit_distrk20_medium_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 stepFeatures: - 0: 3 - 1: 3 + 0: 6 + 1: 6 HLT_xe80_tcpufit_distrk20_tight_L1XE50: eventCount: 0 stepCounts: @@ -32819,11 +32842,11 @@ HLT_xe80_tcpufit_distrk20_tight_L1XE55: HLT_xe80_tcpufit_distrk20_tight_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 stepFeatures: - 0: 3 - 1: 3 + 0: 6 + 1: 6 HLT_xe80_tcpufit_hitdvjet200_medium_L1XE50: eventCount: 0 stepCounts: @@ -32843,11 +32866,11 @@ HLT_xe80_tcpufit_hitdvjet200_medium_L1XE55: HLT_xe80_tcpufit_hitdvjet200_medium_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 stepFeatures: - 0: 11 - 1: 3 + 0: 26 + 1: 6 HLT_xe80_tcpufit_hitdvjet200_tight_L1XE50: eventCount: 0 stepCounts: @@ -32867,11 +32890,11 @@ HLT_xe80_tcpufit_hitdvjet200_tight_L1XE55: HLT_xe80_tcpufit_hitdvjet200_tight_L1jXE100: eventCount: 0 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 stepFeatures: - 0: 11 - 1: 3 + 0: 26 + 1: 6 HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1XE50: eventCount: 1 stepCounts: @@ -32895,12 +32918,12 @@ HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1XE55: HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1jXE100: eventCount: 1 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 2: 1 stepFeatures: - 0: 3 - 1: 3 + 0: 6 + 1: 6 2: 1 HLT_xe80_tcpufit_isotrk120_medium_iaggrloose_L1XE50: eventCount: 1 @@ -32925,12 +32948,12 @@ HLT_xe80_tcpufit_isotrk120_medium_iaggrloose_L1XE55: HLT_xe80_tcpufit_isotrk120_medium_iaggrloose_L1jXE100: eventCount: 1 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 2: 1 stepFeatures: - 0: 3 - 1: 3 + 0: 6 + 1: 6 2: 1 HLT_xe80_tcpufit_isotrk120_medium_iaggrmedium_L1XE50: eventCount: 1 @@ -32955,12 +32978,12 @@ HLT_xe80_tcpufit_isotrk120_medium_iaggrmedium_L1XE55: HLT_xe80_tcpufit_isotrk120_medium_iaggrmedium_L1jXE100: eventCount: 1 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 2: 1 stepFeatures: - 0: 3 - 1: 3 + 0: 6 + 1: 6 2: 1 HLT_xe80_tcpufit_isotrk140_medium_iaggrmedium_L1XE50: eventCount: 1 @@ -32985,10 +33008,10 @@ HLT_xe80_tcpufit_isotrk140_medium_iaggrmedium_L1XE55: HLT_xe80_tcpufit_isotrk140_medium_iaggrmedium_L1jXE100: eventCount: 1 stepCounts: - 0: 3 - 1: 3 + 0: 6 + 1: 6 2: 1 stepFeatures: - 0: 3 - 1: 3 + 0: 6 + 1: 6 2: 1 diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref index 6b87dee4cf6ec16b51bcfa93ebd02d0a6b8f268d..c42fb23b23d2cdf4c97975397ec91053230afb75 100644 --- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref +++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref @@ -1415,10 +1415,10 @@ HLT_distrk20_medium_L1XE55: HLT_distrk20_medium_L1jXE100: eventCount: 1 stepCounts: - 0: 2 + 0: 41 1: 1 stepFeatures: - 0: 2 + 0: 41 1: 1 HLT_distrk20_tight_L1XE50: eventCount: 0 @@ -1427,10 +1427,10 @@ HLT_distrk20_tight_L1XE55: HLT_distrk20_tight_L1jXE100: eventCount: 1 stepCounts: - 0: 2 + 0: 41 1: 1 stepFeatures: - 0: 2 + 0: 41 1: 1 HLT_e100_etcut_L1EM22VHI: eventCount: 0 @@ -6823,11 +6823,11 @@ HLT_hitdvjet200_medium_L1XE55: HLT_hitdvjet200_medium_L1jXE100: eventCount: 0 stepCounts: - 0: 2 - 1: 2 + 0: 41 + 1: 41 stepFeatures: - 0: 2 - 1: 2 + 0: 41 + 1: 41 HLT_hitdvjet260_medium_L1J100: eventCount: 0 HLT_hitdvjet260_medium_L1jJ160: @@ -8472,8 +8472,6 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_ : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d82_pf_ftf_preselc60XXc45XXc25XXc20_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 -? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn175bb90_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 -: eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_presel2c20XX2c20b80_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_presel2c20XX2c20b80_L1jJ85p0ETA21_3jJ40p0ETA25 @@ -8492,14 +8490,10 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_p 0: 10 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 -? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 -: eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn180_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn182_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 -? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn182bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 -: eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn185_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d65_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 @@ -8564,10 +8558,14 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_ : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn175_pf_ftf_presel2c20XX2c20bg85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 +? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn175bb90_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 +: eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn177_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn177_pf_ftf_presel2c20XX2c20bg85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 +? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn177bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 +: eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn180_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn180_pf_ftf_presel2c20XX2c20bg85_L1J45p0ETA21_3J15p0ETA25 @@ -8586,6 +8584,8 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_ : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn182_pf_ftf_presel2c20XX2c20bg85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 +? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn182bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 +: eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn185_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn185_pf_ftf_presel2c20XX2c20bg85_L1J45p0ETA21_3J15p0ETA25 @@ -10392,7 +10392,7 @@ HLT_noalg_L1jJ500: HLT_noalg_L1jLJ140: eventCount: 0 HLT_noalg_L1jXE100: - eventCount: 2 + eventCount: 41 HLT_noalg_L1jXEPerf100: eventCount: 0 HLT_tau0_mediumRNN_tracktwoMVA_tau0_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: @@ -10466,7 +10466,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -10474,7 +10474,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -10482,7 +10482,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau160_perf_tracktwoMVA_L1TAU100: eventCount: 0 HLT_tau160_perf_tracktwoMVA_L1eTAU140: @@ -10500,7 +10500,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -10508,7 +10508,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -10516,7 +10516,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau180_tightRNN_tracktwoLLP_L1TAU100: eventCount: 0 HLT_tau180_tightRNN_tracktwoLLP_L1eTAU140: @@ -10804,7 +10804,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -10812,7 +10812,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -10820,7 +10820,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau20_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_02dRAB10_L1cTAU20M_DR-eTAU20eTAU12-jJ40: eventCount: 0 HLT_tau20_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB10_L1cTAU20M_DR-eTAU20eTAU12-jJ40: @@ -11142,7 +11142,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -11150,7 +11150,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -11158,7 +11158,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_02dRAB10_L1cTAU20M_DR-eTAU20eTAU12-jJ40: eventCount: 0 HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: @@ -11496,7 +11496,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -11504,7 +11504,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -11512,7 +11512,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau35_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_L1TAU20IM_2TAU12IM_4J12p0ETA25: @@ -11654,7 +11654,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -11662,7 +11662,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -11670,7 +11670,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau40_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: eventCount: 0 HLT_tau40_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_L1TAU20IM_2TAU12IM_4J12p0ETA25: @@ -11709,12 +11709,32 @@ HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1XE55: eventCount: 0 HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1jXE100: eventCount: 0 + stepCounts: + 0: 4 + 1: 4 + 2: 4 + 3: 4 + stepFeatures: + 0: 5 + 1: 5 + 2: 5 + 3: 5 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1XE50: eventCount: 0 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1XE55: eventCount: 0 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1jXE100: eventCount: 0 + stepCounts: + 0: 4 + 1: 4 + 2: 4 + 3: 4 + stepFeatures: + 0: 5 + 1: 5 + 2: 5 + 3: 5 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: @@ -11722,7 +11742,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -11730,7 +11750,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -11738,7 +11758,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau60_mediumRNN_tracktwoMVA_L1TAU40: eventCount: 0 stepCounts: @@ -11770,7 +11790,7 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -11778,7 +11798,7 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -11786,11 +11806,21 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau60_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1TAU40_2TAU12IM_XE40: eventCount: 0 HLT_tau60_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1eTAU60_2cTAU20M_jXE80: eventCount: 0 + stepCounts: + 0: 3 + 1: 3 + 2: 3 + 3: 3 + stepFeatures: + 0: 10 + 1: 10 + 2: 10 + 3: 10 HLT_tau80_idperf_trackLRT_L1TAU60: eventCount: 2 stepCounts: @@ -11858,7 +11888,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -11866,7 +11896,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -11874,7 +11904,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau80_mediumRNN_tracktwoLLP_tau60_mediumRNN_tracktwoLLP_03dRAB_L1TAU60_2TAU40: eventCount: 0 stepCounts: @@ -11958,7 +11988,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -11966,7 +11996,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -11974,7 +12004,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB30_L1TAU60_DR-TAU20ITAU12I: eventCount: 0 HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB30_L1eTAU80_2cTAU30M_DR-eTAU30eTAU20: @@ -12112,11 +12142,11 @@ HLT_xe30_cell_xe30_tcpufit_L1XE30: stepFeatures: 0: 2 HLT_xe30_cell_xe30_tcpufit_L1jXE70: - eventCount: 3 + eventCount: 5 stepCounts: - 0: 3 + 0: 5 stepFeatures: - 0: 6 + 0: 23 HLT_xe30_cvfpufit_L1XE30: eventCount: 1 stepCounts: @@ -12212,7 +12242,7 @@ HLT_xe55_cell_xe105_nn_L1gXEJWOJ100: HLT_xe55_cell_xe105_nn_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe55_cell_xe70_tcpufit_L1XE50: eventCount: 0 HLT_xe55_cell_xe70_tcpufit_L1XE55: @@ -12224,7 +12254,7 @@ HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1XE55: HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE50: eventCount: 0 HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE55: @@ -12232,13 +12262,13 @@ HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE55: HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe55_cell_xe90_nn_L1gXEJWOJ100: eventCount: 0 HLT_xe55_cell_xe90_nn_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe60_cell_L1XE50: eventCount: 0 HLT_xe60_cell_xe95_pfsum_cssk_L1XE50: @@ -12248,7 +12278,7 @@ HLT_xe60_cell_xe95_pfsum_cssk_L1XE55: HLT_xe60_cell_xe95_pfsum_cssk_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe65_cell_xe100_mhtpufit_pf_L1XE50: eventCount: 0 HLT_xe65_cell_xe100_mhtpufit_pf_L1XE55: @@ -12262,7 +12292,7 @@ HLT_xe65_cell_xe100_mhtpufit_pf_L1gXERHO100: HLT_xe65_cell_xe100_mhtpufit_pf_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe65_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_xe65_cell_xe100_pfopufit_L1XE55: @@ -12270,7 +12300,7 @@ HLT_xe65_cell_xe100_pfopufit_L1XE55: HLT_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe65_cell_xe105_mhtpufit_em_L1XE50: eventCount: 0 HLT_xe65_cell_xe105_mhtpufit_em_L1XE55: @@ -12278,7 +12308,7 @@ HLT_xe65_cell_xe105_mhtpufit_em_L1XE55: HLT_xe65_cell_xe105_mhtpufit_em_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe65_cell_xe105_nn_L1XE50: eventCount: 0 HLT_xe65_cell_xe105_nn_L1XE55: @@ -12288,7 +12318,7 @@ HLT_xe65_cell_xe105_nn_L1gXEJWOJ100: HLT_xe65_cell_xe105_nn_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe65_cell_xe110_tcpufit_L1XE50: eventCount: 0 HLT_xe65_cell_xe110_tcpufit_L1jXE100: @@ -12306,7 +12336,7 @@ HLT_xe65_cell_xe90_nn_L1gXEJWOJ100: HLT_xe65_cell_xe90_nn_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_xe65_cell_xe90_pfopufit_L1XE55: @@ -12320,7 +12350,7 @@ HLT_xe65_cell_xe90_pfopufit_L1gXERHO100: HLT_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe65_cell_xe90_pfopufit_sig30_L1XE50: eventCount: 0 HLT_xe65_cell_xe90_pfopufit_sig30_L1XE55: @@ -12332,7 +12362,7 @@ HLT_xe65_cell_xe95_pfsum_vssk_L1XE55: HLT_xe65_cell_xe95_pfsum_vssk_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_xe75_cell_xe100_pfopufit_L1XE55: @@ -12340,7 +12370,7 @@ HLT_xe75_cell_xe100_pfopufit_L1XE55: HLT_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE50: eventCount: 0 HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE55: @@ -12348,7 +12378,7 @@ HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE55: HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe80_cell_xe115_tcpufit_L1XE50: eventCount: 0 HLT_xe80_cell_xe115_tcpufit_L1XE55: @@ -12396,7 +12426,7 @@ HLT_xe80_tcpufit_hitdvjet200_medium_L1XE55: HLT_xe80_tcpufit_hitdvjet200_medium_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe80_tcpufit_hitdvjet200_tight_L1XE50: eventCount: 0 HLT_xe80_tcpufit_hitdvjet200_tight_L1XE55: @@ -12404,7 +12434,7 @@ HLT_xe80_tcpufit_hitdvjet200_tight_L1XE55: HLT_xe80_tcpufit_hitdvjet200_tight_L1jXE100: eventCount: 0 stepFeatures: - 0: 2 + 0: 41 HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1XE50: eventCount: 0 HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1XE55: diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bphysics/BphysicsChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bphysics/BphysicsChainConfiguration.py index 167c51bdab98566299bbe209678204f0f835b853..508128a943911e47ded288d063683fea42856378 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bphysics/BphysicsChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bphysics/BphysicsChainConfiguration.py @@ -8,6 +8,7 @@ from AthenaCommon.Logging import logging logging.getLogger().info("Importing %s",__name__) log = logging.getLogger(__name__) +from ..Config.MenuComponents import menuSequenceCAToGlobalWrapper from ..Config.ChainConfigurationBase import ChainConfigurationBase from ..Muon.MuonChainConfiguration import MuonChainConfiguration from AthenaConfiguration.ComponentFactory import isComponentAccumulatorCfg @@ -41,7 +42,10 @@ def dimuL2SequenceCfg(flags): return dimuL2Sequence(flags) def dimuEFSequenceCfg(flags): - return dimuEFSequence(flags) + if isComponentAccumulatorCfg(): + return dimuEFSequence(flags) + else: + return menuSequenceCAToGlobalWrapper(dimuEFSequence, flags) def bmumuxSequenceCfg(flags): return bmumuxSequence(flags) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bphysics/BphysicsMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bphysics/BphysicsMenuSequences.py index d13b2ade8a50dd7a9453dd84d164291046712009..005dde5675c24c1e7e02ab9fea870e92e7689609 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bphysics/BphysicsMenuSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Bphysics/BphysicsMenuSequences.py @@ -1,6 +1,7 @@ # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration -from ..Config.MenuComponents import MenuSequence, RecoFragmentsPool, algorithmCAToGlobalWrapper +from ..Config.MenuComponents import MenuSequence, MenuSequenceCA, RecoFragmentsPool, algorithmCAToGlobalWrapper, SelectionCA, InEventRecoCA +from AthenaConfiguration.ComponentFactory import CompFactory from AthenaCommon.CFElements import seqAND from TrigEDMConfig.TriggerEDMRun3 import recordable from AthenaCommon.Logging import logging @@ -91,25 +92,20 @@ def dimuL2Sequence(flags): def dimuEFSequence(flags): - from DecisionHandling.DecisionHandlingConf import InputMakerForRoI, ViewCreatorPreviousROITool - from TrigBphysHypo.TrigBphysHypoConf import TrigBphysStreamerHypo - from TrigBphysHypo.TrigBphysStreamerHypoConfig import TrigBphysStreamerHypoToolFromDict + selAcc = SelectionCA('dimuSequence') - viewMaker = InputMakerForRoI( - name = 'IM_bphysStreamerDimuEF', - mergeUsingFeature = True, - RoITool = ViewCreatorPreviousROITool(), - RoIs = 'DimuRoIs') + inputMakerAlg = CompFactory.InputMakerForRoI('IM_bphysStreamerDimuEF', + RoITool = CompFactory.ViewCreatorPreviousROITool(), + mergeUsingFeature = True) - sequence = seqAND('dimuSequence', [viewMaker]) + reco = InEventRecoCA('bphysStreamerDimuEFReco', inputMaker=inputMakerAlg) + selAcc.mergeReco(reco) - hypo = TrigBphysStreamerHypo('DimuEFStreamerHypoAlg', triggerLevel = 'EF') + hypoAlg = CompFactory.TrigBphysStreamerHypo('DimuEFStreamerHypoAlg', triggerLevel = 'EF') + selAcc.addHypoAlgo(hypoAlg) - return MenuSequence(flags, - Sequence = sequence, - Maker = viewMaker, - Hypo = hypo, - HypoToolGen = TrigBphysStreamerHypoToolFromDict) + from TrigBphysHypo.TrigBphysStreamerHypoConfig import TrigBphysStreamerHypoToolFromDict + return MenuSequenceCA(flags, selAcc, HypoToolGen=TrigBphysStreamerHypoToolFromDict) def getNoL2CombChainNames(): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_HI_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_HI_run3_v1.py index 95e71f7c927aabfab1d1c9a7653fb4b9138cdf77..ba54b9c87366957cfaf291d247b7593063d5d499 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_HI_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_HI_run3_v1.py @@ -104,10 +104,14 @@ def getDevHISignatures(): ChainProp(name='HLT_2e20_loose_nogsf_ion_L12EM16', stream=[HardProbesStream], groups=MultiElectronGroup+PrimaryLegGroup), - #--------- phase-1 supproting electron chains + #--------- phase-1 supporting electron chains # replace L1eEM9 with L1eEM15 and L1eEM15 with eEM18, ATR-26366 + ChainProp(name='HLT_e13_etcut_ion_L1eEM12L', stream=[HardProbesStream] ,groups=SingleElectronGroup+SupportPhIGroup), ChainProp(name='HLT_e15_etcut_ion_L1eEM15', stream=[HardProbesStream], groups=SingleElectronGroup+SupportPhIGroup), ChainProp(name='HLT_e20_etcut_ion_L1eEM18', stream=[HardProbesStream], groups=SingleElectronGroup+SupportPhIGroup), + ChainProp(name='HLT_e30_etcut_ion_L1eEM26', stream=[HardProbesStream] ,groups=SingleElectronGroup+SupportPhIGroup), + ChainProp(name='HLT_e50_etcut_ion_L1eEM26', stream=[HardProbesStream] ,groups=SingleElectronGroup+SupportPhIGroup), + ChainProp(name='HLT_e20_idperf_loose_nogsf_ion_L1eEM18', stream=[HardProbesStream, 'express'], groups=SingleElectronGroup+SupportPhIGroup, monGroups=['idMon:t0']), #--------- phase-1 physics electron chains ChainProp(name='HLT_e15_lhloose_nogsf_ion_L1eEM15', stream=[HardProbesStream, 'express'], groups=SingleElectronGroup+PrimaryPhIGroup, monGroups=['egammaMon:t0_tp']), @@ -144,11 +148,24 @@ def getDevHISignatures(): ChainProp(name='HLT_2g15_loose_ion_L12EM10',stream=[HardProbesStream], groups=SinglePhotonGroup+PrimaryLegGroup), - #----------- phase-1 photon chains - ChainProp(name='HLT_g15_etcut_ion_L1eEM15', stream=[HardProbesStream], groups=SinglePhotonGroup+SupportPhIGroup), + #----------- phase-1 support photon chains + ChainProp(name='HLT_g13_etcut_ion_L1eEM12L', stream=[HardProbesStream], groups=SinglePhotonGroup+SupportPhIGroup), + ChainProp(name='HLT_g18_etcut_ion_L1eEM12L', stream=[HardProbesStream], groups=SinglePhotonGroup+SupportPhIGroup), + ChainProp(name='HLT_g28_etcut_ion_L1eEM18', stream=[HardProbesStream], groups=SinglePhotonGroup+SupportPhIGroup), + ChainProp(name='HLT_g15_etcut_ion_L1eEM15', stream=[HardProbesStream], groups=SinglePhotonGroup+SupportPhIGroup), ChainProp(name='HLT_g20_etcut_ion_L1eEM15', stream=[HardProbesStream], groups=SinglePhotonGroup+SupportPhIGroup), + ChainProp(name='HLT_g18_etcut_L1eEM12L', stream=[HardProbesStream], groups=SinglePhotonGroup+SupportPhIGroup), + ChainProp(name='HLT_g20_loose_L1eEM15', stream=[HardProbesStream], groups=SinglePhotonGroup+SupportPhIGroup), + ChainProp(name='HLT_2g15_loose_L12eEM12L', stream=[HardProbesStream], groups=SinglePhotonGroup+SupportPhIGroup), + + #----------- phase-1 primary photon chains + ChainProp(name='HLT_g15_loose_ion_L1eEM12L', stream=[HardProbesStream, 'express'], groups=SinglePhotonGroup+PrimaryPhIGroup, monGroups=['egammaMon:online','egammaMon:shifter','egammaMon:val']), ChainProp(name='HLT_g15_loose_ion_L1eEM15', stream=[HardProbesStream], groups=SinglePhotonGroup+PrimaryPhIGroup), ChainProp(name='HLT_g20_loose_ion_L1eEM15', stream=[HardProbesStream], groups=SinglePhotonGroup+PrimaryPhIGroup), + ChainProp(name='HLT_g30_loose_ion_L1eEM18', stream=[HardProbesStream], groups=SinglePhotonGroup+PrimaryPhIGroup), + ChainProp(name='HLT_g50_loose_ion_L1eEM26', stream=[HardProbesStream], groups=SinglePhotonGroup+PrimaryPhIGroup), + ChainProp(name='HLT_2g15_loose_ion_L12eEM12L',stream=[HardProbesStream], groups=SinglePhotonGroup+PrimaryPhIGroup), + #---UPC legacy egamma chains ChainProp(name='HLT_e12_lhloose_nogsf_L1EM7_VTE200', l1SeedThresholds=['EM7'], stream=[UPCStream, 'express'], groups=SingleElectronGroup+PrimaryLegGroup, monGroups=['egammaMon:shifter']), @@ -164,11 +181,12 @@ def getDevHISignatures(): ChainProp(name='HLT_j40_ion_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j50_ion_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j50_ion_L1TE50', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j75_ion_L1TE50', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j60_ion_L1TE50', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j30f_ion_L1TE20', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j50f_ion_L1TE50', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j50f_ion_L1J15p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream, 'express'], groups=SingleJetGroup+SupportLegGroup, monGroups=['jetMon:t0','jetMon:online']), - ChainProp(name='HLT_j100f_ion_L1J30p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j60f_ion_L1J15p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream, 'express'], groups=SingleJetGroup+SupportLegGroup, monGroups=['jetMon:t0','jetMon:online']), + ChainProp(name='HLT_j70f_ion_L1J30p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j60_ion_L1J15', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream, 'express'], groups=SingleJetGroup+PrimaryLegGroup, monGroups=['jetMon:t0','jetMon:online']), ChainProp(name='HLT_j75_ion_L1J20', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryLegGroup), @@ -176,10 +194,22 @@ def getDevHISignatures(): ChainProp(name='HLT_j85_ion_L1J15', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryLegGroup), ChainProp(name='HLT_j85_ion_L1J30', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryLegGroup), ChainProp(name='HLT_j100_ion_L1J30',l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryLegGroup), - ChainProp(name='HLT_j150_ion_L1J30',l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryLegGroup), - ChainProp(name='HLT_j100_ion_L1TE50', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryLegGroup), - ChainProp(name='HLT_j150_ion_L1TE50', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryLegGroup), + ChainProp(name='HLT_j120_ion_L1J30',l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryLegGroup), + ChainProp(name='HLT_j150_ion_L1J50',l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryLegGroup), + #--- phase-1 HI jets + ChainProp(name='HLT_j60_ion_L1jJ20', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), + ChainProp(name='HLT_j75_ion_L1jJ20', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), + ChainProp(name='HLT_j75_ion_L1jJ30', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), + ChainProp(name='HLT_j85_ion_L1jJ20', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), + ChainProp(name='HLT_j85_ion_L1jJ30', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), + ChainProp(name='HLT_j100_ion_L1jJ30', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), + ChainProp(name='HLT_j120_ion_L1jJ30', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), + ChainProp(name='HLT_j150_ion_L1jJ50', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), + + ChainProp(name='HLT_j50f_ion_L1jJ15p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream, 'express'], groups=SingleJetGroup+SupportPhIGroup, monGroups=['jetMon:t0','jetMon:online']), + ChainProp(name='HLT_j60f_ion_L1jJ15p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream, 'express'], groups=SingleJetGroup+SupportPhIGroup, monGroups=['jetMon:t0','jetMon:online']), + ChainProp(name='HLT_j70f_ion_L1jJ20p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+SupportPhIGroup), #--- UPC jets ChainProp(name='HLT_j10a_L1VTE200', l1SeedThresholds=['FSNOSEED'], stream=[UPCStream], groups=SingleJetGroup+SupportLegGroup), @@ -201,11 +231,6 @@ def getDevHISignatures(): - ChainProp(name='HLT_j60_ion_L1jJ20', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), - ChainProp(name='HLT_j75_ion_L1jJ20', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), - ChainProp(name='HLT_j75_ion_L1jJ30', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), - ChainProp(name='HLT_j85_ion_L1jJ20', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), - ChainProp(name='HLT_j85_ion_L1jJ30', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=SingleJetGroup+PrimaryPhIGroup), ] @@ -214,14 +239,12 @@ def getDevHISignatures(): ChainProp(name='HLT_mu4_j50_ion_dRAB04_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream, 'express'], groups=PrimaryLegGroup+SingleBjetGroup, monGroups=['bJetMon:t0','muonMon:online','bJetMon:online']), ChainProp(name='HLT_mu4_j50_ion_dRAB04_L1MU3V_J12', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=PrimaryLegGroup+SingleBjetGroup, monGroups=['muonMon:online','bJetMon:online']), ChainProp(name='HLT_mu4_j60_ion_dRAB04_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=PrimaryLegGroup+SingleBjetGroup), - ChainProp(name='HLT_mu6_j40_ion_dRAB04_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream, 'express'], groups=PrimaryLegGroup+SingleBjetGroup, monGroups=['bJetMon:t0','muonMon:online','bJetMon:online']), - ChainProp(name='HLT_mu6_j50_ion_dRAB04_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=PrimaryLegGroup+SingleBjetGroup), + ChainProp(name='HLT_mu6_j40_ion_dRAB04_L1MU5VF', l1SeedThresholds=['MU5VF','FSNOSEED'], stream=[HardProbesStream, 'express'], groups=PrimaryLegGroup+SingleBjetGroup, monGroups=['bJetMon:t0','muonMon:online','bJetMon:online']), + ChainProp(name='HLT_mu6_j50_ion_dRAB04_L1MU5VF', l1SeedThresholds=['MU5VF','FSNOSEED'], stream=[HardProbesStream], groups=PrimaryLegGroup+SingleBjetGroup), #----------- mu+j SupportLeg ChainProp(name='HLT_mu4_j20_L1MU3V_J12', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), - ChainProp(name='HLT_mu4_j20_dRAB04_L1MU3V_J12', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), - ChainProp(name='HLT_mu4_j20_ion_dRAB04_L1MU3V_J12', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), ChainProp(name='HLT_mu4_j40_ion_dRAB04_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), - ChainProp(name='HLT_mu6_j30_ion_dRAB04_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), + ChainProp(name='HLT_mu6_j30_ion_dRAB04_L1MU5VF', l1SeedThresholds=['MU5VF','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), ChainProp(name='HLT_mu4_j40_ion_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), ChainProp(name='HLT_mu4_j50_ion_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), ChainProp(name='HLT_mu4_j60_ion_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), @@ -230,10 +253,7 @@ def getDevHISignatures(): ChainProp(name='HLT_mu6_j50_ion_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportLegGroup+SingleBjetGroup), #----------- mu+j with new calo - ChainProp(name='HLT_mu4_j45_ion_dRAB04_L1MU3V_jJ40', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=PrimaryPhIGroup+SingleBjetGroup), - ChainProp(name='HLT_mu4_j60_ion_dRAB04_L1MU3V_jJ40', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=PrimaryPhIGroup+SingleBjetGroup), - ChainProp(name='HLT_mu4_j20_ion_dRAB04_L1MU3V_jJ30', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportPhIGroup+SingleBjetGroup), - ChainProp(name='HLT_mu4_j35_ion_dRAB04_L1MU3V_jJ40', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=SupportPhIGroup+SingleBjetGroup), + ChainProp(name='HLT_mu4_j60_ion_dRAB04_L1MU3V_jJ20', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[HardProbesStream], groups=PrimaryPhIGroup+SingleBjetGroup), #----------- mu + UPC Fgap ChainProp(name='HLT_mu4_hi_FgapAC3_L1MU3V_VTE50', l1SeedThresholds=['MU3V','FSNOSEED'], stream=[UPCStream], groups=SingleMuonGroup+PrimaryLegGroup), @@ -317,10 +337,16 @@ def getDevHISignatures(): ChainProp(name='HLT_noalg_L1J15', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportLegGroup), ChainProp(name='HLT_noalg_L1J30', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportLegGroup), + + ChainProp(name='HLT_noalg_L1jJ20', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportPhIGroup), + ChainProp(name='HLT_noalg_L1jJ30', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportPhIGroup), + ChainProp(name='HLT_noalg_L1EM12', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportLegGroup), ChainProp(name='HLT_noalg_L1EM16', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportLegGroup), ChainProp(name='HLT_noalg_L1eEM5', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportPhIGroup), + ChainProp(name='HLT_noalg_L1eEM15', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportLegGroup), + ChainProp(name='HLT_noalg_L1eEM18', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportLegGroup), ChainProp(name='HLT_noalg_L12MU3V', l1SeedThresholds=['FSNOSEED'], stream=[HardProbesStream], groups=MinBiasGroup+SupportGroup), #----TE MinBias---- diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py index 51a12b97b3bab72d9b2646723abb46d6f803b74c..2b943e2c7eba428ba318c4b873118db8a99c3882 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py @@ -498,9 +498,9 @@ def getDevSignatures(): ChainProp(name='HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn185_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), # Extra GN1 + DL1dbb chains - ChainProp(name='HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn182bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn177bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), - ChainProp(name='HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bgn175bb90_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn182bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn177bb96_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), + ChainProp(name='HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn175bb90_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), # [ATR-26676] Extra Extra GN1 b-tagger chains + Dl1d "equivalents" ChainProp(name='HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn165_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=[PhysicsStream], groups=DevGroup+MultiBjetGroup), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/MuonMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/MuonMenuSequences.py index 254193e91fc723cbc80908039e2b8c941a631a0e..8197f28facb7520a15e453c3f4241ef1a699d1f8 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/MuonMenuSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/MuonMenuSequences.py @@ -5,6 +5,7 @@ from ..Config.MenuComponents import MenuSequence, MenuSequenceCA, RecoFragmentsPool, algorithmCAToGlobalWrapper, SelectionCA, InViewRecoCA, InEventRecoCA from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.AccumulatorCache import AccumulatorCache from AthenaCommon.CFElements import parOR, seqAND, seqOR from AthenaCommon.Logging import logging from AthenaConfiguration.ComponentFactory import CompFactory @@ -23,6 +24,7 @@ from TrigEDMConfig.TriggerEDMRun3 import recordable #-----------------------------------------------------# ### ************* Step1 ************* ### #-----------------------------------------------------# +@AccumulatorCache def muFastAlgSequenceCfg(flags, is_probe_leg=False): selAccSA = SelectionCA('L2MuFastSel', isProbe=is_probe_leg) @@ -403,6 +405,7 @@ def mul2mtCBOvlpRmSequence(flags, is_probe_leg=False): ###################### ### EFSA step ### ###################### +@AccumulatorCache def muEFSAAlgSequenceCfg(flags, is_probe_leg=False): selAccMS = SelectionCA('EFMuMSSel_RoI', isProbe=is_probe_leg) @@ -630,6 +633,7 @@ def muEFCBLRTIDperfSequence(flags, is_probe_leg=False): ###################### ### EF SA full scan ### ###################### +@AccumulatorCache def muEFSAFSAlgSequenceCfg(flags): selAccMS = SelectionCA('EFMuMSSel_FS') diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py index 42fbc0b6a06977237921dfb09742e4d46f7d26ad..f88c0646546133dfd6e99e9835ac6595ef5bfb98 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py @@ -216,6 +216,7 @@ class ItemDef: MenuItem('L1_EM20VH_2EM10VH_3EM8VH' ).setLogic( d.EM20VH & d.EM10VH.x(2) & d.EM8VH.x(3) & physcond).setTriggerType( TT.calo ) # PhaseI 2xEM and 3xEM + MenuItem('L1_2eEM12L').setLogic(d.eEM12L.x(2) & physcond).setTriggerType(TT.calo) #heavy ions, ATR-26333 MenuItem('L1_2eEM18L').setLogic(d.eEM18L.x(2) & physcond).setTriggerType(TT.calo) MenuItem('L1_2eEM18M').setLogic(d.eEM18M.x(2) & physcond).setTriggerType(TT.calo) MenuItem('L1_2eEM24L').setLogic(d.eEM24L.x(2) & physcond).setTriggerType(TT.calo) @@ -640,7 +641,9 @@ class ItemDef: MenuItem('L1_J400' ).setLogic( d.J400 & physcond).setTriggerType(TT.calo) MenuItem('L1_J400_LAR' ).setLogic( d.J400 & physcond).setTriggerType(TT.lardigital) # ATR-22344 + MenuItem('L1_jJ15p31ETA49' ).setLogic( d.jJ1531ETA49 & physcond).setTriggerType(TT.calo) MenuItem('L1_jJ20' ).setLogic( d.jJ20 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ20p31ETA49' ).setLogic( d.jJ2031ETA49 & physcond).setTriggerType(TT.calo) MenuItem('L1_jJ30' ).setLogic( d.jJ30 & physcond).setTriggerType(TT.calo) MenuItem('L1_jJ30p0ETA25' ).setLogic( d.jJ300ETA25 & physcond).setTriggerType(TT.calo) MenuItem('L1_jJ40' ).setLogic( d.jJ40 & physcond).setTriggerType(TT.calo) @@ -680,6 +683,7 @@ class ItemDef: MenuItem('L1_jJ60_EMPTY' ).setLogic( d.jJ60 & cosmiccond ).setTriggerType(TT.calo) MenuItem('L1_jJ60_FIRSTEMPTY').setLogic( d.jJ60 & firstempty ).setTriggerType(TT.calo) + MenuItem('L1_MU3V_jJ20' ).setLogic( d.MU3V & d.jJ20 & physcond).setTriggerType(TT.calo) # added temporarily MenuItem('L1_MU3V_jJ30' ).setLogic( d.MU3V & d.jJ30 & physcond).setTriggerType(TT.calo) # added temporarily MenuItem('L1_MU3V_jJ40' ).setLogic( d.MU3V & d.jJ40 & physcond).setTriggerType(TT.calo) MenuItem('L1_MU5VF_jJ90' ).setLogic( d.MU5VF & d.jJ90 & physcond).setTriggerType(TT.calo) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py index 057121cf62d46df3d5555b57ba2875efb9c2f4fb..bbfb325d3f787d8a9f511763f0f239ed39ca24be 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py @@ -49,6 +49,7 @@ threshold_mapping = { 35:25, }, 'jJ': { + 15:15, 20:20, 30:30, 40:40, diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py index bd2fe6be323fd9d0a526ac8bedf8cf9d81d1e3ab..da18b545779abda71d47cdb2efc342e53a96acc3 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py @@ -213,12 +213,12 @@ class ThresholdDef: # ThresholdDef.addJetVaryingThrValues( jJetThreshold('jJ12p0ETA25V', 'jJ'), pt=12, shift_set=1, rangemin=0, rangemax=25 ) # jJET forward jet - jJ_cuts = [40, 50, 60, 90, 125] + jJ_cuts = [15, 20, 40, 50, 60, 90, 125] for thrV in jJ_cuts: ThresholdDef.addJetVaryingThrValues( jJetThreshold('jJ%ip31ETA49' % thrV, 'jJ'), pt=get_threshold_cut('jJ', thrV), shift_set=0, rangemin=31, rangemax=49 ) # jJET SPARES - for thrV in range(1,7): + for thrV in range(1,5): jJetThreshold('jJSPARE%i' % thrV, 'jJ').addThrValue(thrVal_SPARE) # jLJET (default range) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py index 58aeb171afecf52fa4994d8b7ca2718dd01243d9..f9613bd1635cae0365171396ecbdd9e0337912bb 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py @@ -142,10 +142,11 @@ class TopoAlgoDefMultiplicity(object): 'jJ90', 'jJ125', 'jJ140', 'jJ160', 'jJ180', 'jJ500', + 'jJ15p31ETA49', 'jJ20p31ETA49', 'jJ40p31ETA49', 'jJ50p31ETA49', 'jJ60p31ETA49', 'jJ90p31ETA49', 'jJ125p31ETA49', # spares - 'jJSPARE3', 'jJSPARE4', 'jJSPARE5', 'jJSPARE6', + 'jJSPARE3', 'jJSPARE4', ] for jJet in jJThresholds_3bits: diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_HI_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_HI_run3_v1.py index 4b0df48b087acf0f0259399fb3f6da8c46b5d5bc..398d72ba633a5cd9a428603bd5f371c6d4923263 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_HI_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_HI_run3_v1.py @@ -42,12 +42,12 @@ def defineMenu(): 'L1_2EM20VH', # new calo #'L1_2eEM7', 'L1_2eEM9', 'L1_2eEM15', - 'L1_2eEM18L', + 'L1_2eEM12L', 'L1_2eEM18L', # combined mu - jet 'L1_MU3V_J12','L1_MU3V_J15', - 'L1_MU3V_jJ30', 'L1_MU3V_jJ40', + 'L1_MU3V_jJ20', 'L1_MU3V_jJ30', 'L1_MU3V_jJ40', 'L1_TAU8', 'L1_TAU60', 'L1_TAU12IM', 'L1_TAU20IM', 'L1_TAU8_EMPTY', @@ -71,6 +71,7 @@ def defineMenu(): 'L1_jJ500', 'L1_jJ500_LAR', 'L1_jJ20', 'L1_jJ30', 'L1_jJ40', 'L1_jJ50', 'L1_jJ55', 'L1_jJ60', 'L1_jJ80', 'L1_jJ90', + 'L1_jJ15p31ETA49', 'L1_jJ20p31ETA49', 'L1_jJ40p31ETA49', 'L1_jJ50p31ETA49', 'L1_jJ60p31ETA49', 'L1_jJ90p31ETA49', 'L1_jJ125p31ETA49', diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py index 82d502736caf55224da32f4c758a2dc6c9fa5031..3b1d1ea137b164fcaea5b98be62d4285d4732d70 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py @@ -164,10 +164,11 @@ def defineInputsMenu(): 'jJ70p0ETA23', 'jJ80', 'jJ80p0ETA25', 'jJ85p0ETA21', 'jJ90', 'jJ125', 'jJ140', 'jJ160', 'jJ180', 'jJ500', + 'jJ15p31ETA49','jJ20p31ETA49', 'jJ40p31ETA49', 'jJ50p31ETA49', 'jJ60p31ETA49', 'jJ90p31ETA49', 'jJ125p31ETA49', # jJ thresholds for production - 'jJSPARE3', 'jJSPARE4', 'jJSPARE5', 'jJSPARE6', + 'jJSPARE3', 'jJSPARE4', None, None,