diff --git a/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py b/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py index d1a9cd178dbe2d751e77afd5f51128272e14d3e2..78b144a3293ff846bb5e2dcc1d10dea5563251e4 100644 --- a/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py +++ b/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py @@ -445,7 +445,7 @@ def CaloTopoClusterCfg(flags, cellsname="AllCalo", clustersname=None, clustersna from OutputStreamAthenaPool.OutputStreamConfig import addToAOD, addToESD toESD = [f"xAOD::CaloClusterContainer#{CaloTopoCluster.ClustersOutputName}", - f"xAOD::CaloClusterAuxContainer#{CaloTopoCluster.ClustersOutputName}Aux.", + f"xAOD::CaloClusterAuxContainer#{CaloTopoCluster.ClustersOutputName}Aux.-sigmaWidth", f"CaloClusterCellLinkContainer#{CaloTopoCluster.ClustersOutputName}_links"] toAOD = [f"xAOD::CaloClusterContainer#{CaloTopoCluster.ClustersOutputName}", f"CaloClusterCellLinkContainer#{CaloTopoCluster.ClustersOutputName}_links"] diff --git a/DataQuality/dqm_algorithms/dqm_algorithms/TileTriggerMonitor.h b/DataQuality/dqm_algorithms/dqm_algorithms/TileTriggerMonitor.h new file mode 100644 index 0000000000000000000000000000000000000000..59e7efecfa9ee1826a61b725f9f4e58f6571daca --- /dev/null +++ b/DataQuality/dqm_algorithms/dqm_algorithms/TileTriggerMonitor.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +*/ + +/*! \file TileTriggerMonitor.h file declares the dqm_algorithms::TileTriggerMonitor class. + * \author Kyle Lleras +*/ + +#ifndef DQM_ALGORITHMS_TileTriggerMonitor_H +#define DQM_ALGORITHMS_TileTriggerMonitor_H + +#include <dqm_core/Algorithm.h> +#include <string> +#include <iosfwd> + +namespace dqm_algorithms +{ + struct TileTriggerMonitor : public dqm_core::Algorithm + { + TileTriggerMonitor(); + + //overwrites virtual functions + TileTriggerMonitor * clone( ); + dqm_core::Result * execute( const std::string & , const TObject & , const dqm_core::AlgorithmConfig & ); + using dqm_core::Algorithm::printDescription; + void printDescription(std::ostream& out); + + }; +} + +#endif // DQM_ALGORITHMS_TileTriggerMonitor_H diff --git a/DataQuality/dqm_algorithms/dqm_algorithms/dqm_algorithmsDict.h b/DataQuality/dqm_algorithms/dqm_algorithms/dqm_algorithmsDict.h index 0738e22ef1589fb846accf13b6a28946168cd1f6..abe3d1ab24999096f36d57d90eab4b37469fd414 100644 --- a/DataQuality/dqm_algorithms/dqm_algorithms/dqm_algorithmsDict.h +++ b/DataQuality/dqm_algorithms/dqm_algorithms/dqm_algorithmsDict.h @@ -161,6 +161,7 @@ #include "dqm_algorithms/TRTCheckPeakSimple.h" #include "dqm_algorithms/TRTHistogramHasNonZeroEntries.h" #include "dqm_algorithms/TRTWeightedAverage.h" +#include "dqm_algorithms/TileTriggerMonitor.h" #include "dqm_algorithms/TripleGaussCollFit.h" #include "dqm_algorithms/LastBinThresholdAction.h" #endif // DQM_ALGORITHMS_DQM_ALGORITHMSDICT_H diff --git a/DataQuality/dqm_algorithms/dqm_algorithms/selection.xml b/DataQuality/dqm_algorithms/dqm_algorithms/selection.xml index d14bc4b170fcbb1cb5a221778863b0fc865a5aa5..103c2c1311f1b9387c425d4aea7e2af4c11793ea 100644 --- a/DataQuality/dqm_algorithms/dqm_algorithms/selection.xml +++ b/DataQuality/dqm_algorithms/dqm_algorithms/selection.xml @@ -160,5 +160,6 @@ <class name="dqm_algorithms::TRTCheckPeakSimple"/> <class name="dqm_algorithms::TRTHistogramHasNonZeroEntries"/> <class name="dqm_algorithms::TRTWeightedAverage"/> + <class name="dqm_algorithms::TileTriggerMonitor"/> <class name="dqm_algorithms::TripleGaussCollFit"/> </lcgdict> diff --git a/DataQuality/dqm_algorithms/src/TileTriggerMonitor.cxx b/DataQuality/dqm_algorithms/src/TileTriggerMonitor.cxx new file mode 100644 index 0000000000000000000000000000000000000000..5eefbf9bfc33c95852e201e78791b4953f0bd100 --- /dev/null +++ b/DataQuality/dqm_algorithms/src/TileTriggerMonitor.cxx @@ -0,0 +1,90 @@ +/* + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +*/ + +/*! \file TileTriggerMonitor.cxx checks an individual bin of a 1D histogram wrt to a threshold value and returns dqm_core::Result + * \author Kyle Lleras + */ + +#include <dqm_algorithms/TileTriggerMonitor.h> +#include <dqm_algorithms/tools/AlgorithmHelper.h> +#include <dqm_core/AlgorithmConfig.h> +#include <TH1.h> +#include <TH2.h> +#include <TF1.h> +#include <TClass.h> +#include <ers/ers.h> + + +#include <dqm_core/AlgorithmManager.h> + +static dqm_algorithms::TileTriggerMonitor myInstance; + +dqm_algorithms::TileTriggerMonitor::TileTriggerMonitor() + +{ + dqm_core::AlgorithmManager::instance().registerAlgorithm("TileTriggerMonitor", this); +} + +dqm_algorithms::TileTriggerMonitor * +dqm_algorithms::TileTriggerMonitor::clone() +{ + + return new TileTriggerMonitor(); +} + + +dqm_core::Result * +dqm_algorithms::TileTriggerMonitor::execute(const std::string & name, + const TObject & object, + const dqm_core::AlgorithmConfig & config) +{ + const TH1 * histogram; + if( object.IsA()->InheritsFrom( "TH1" ) ) { + histogram = static_cast<const TH1*>(&object); + if (histogram->GetDimension() > 2 ){ + throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " ); + } + } else { + throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH1" ); + } + + dqm_core::Result* result = new dqm_core::Result(); + //Count each category of the bins, if you find a red bin show red, if you find a yellow bin show yellow + std::vector<int> range=dqm_algorithms::tools::GetBinRange(histogram, config.getParameters()); + int worstStatus = -3; + for ( int towerNum = range.at(0); towerNum <= range.at(1); ++towerNum ) { + double inputCont = histogram->GetBinContent(towerNum); + if (inputCont>worstStatus) worstStatus=inputCont; //if you want to have a test for every bin remove the for loop and replace execute with 1D black bin algorithm + if (inputCont>0) dqm_algorithms::tools::PublishBin(histogram,towerNum,0,inputCont,result); + } + + result->tags_["BinContent"] = worstStatus; + if(worstStatus==2) result->status_ = dqm_core::Result::Red; + else if(worstStatus==1) result->status_ = dqm_core::Result::Yellow; + else if(worstStatus==0) result->status_ = dqm_core::Result::Green; + else { + result->status_ = dqm_core::Result::Disabled; + } + + return result; + + +} + + +void +dqm_algorithms::TileTriggerMonitor::printDescription(std::ostream& out) +{ + //put optional description for developers + out<<"Red bin: The tower has experienced a large spike in rate. The large spike threshold algorithm is written in TilePPMContainerSpike in TriggerMonitor in L1Calo's git repository. \n" << std::endl; + + out<<"Yellow bin: The tower has experienced a spike in rate. The spike threshold algorithm is written in TilePPMContainerSpike in TriggerMonitor in L1Calo's git repository. \n" << std::endl; + + out<<"Black bin: This tower is disabled\n" << std::endl; + + out<<"Optional Parameter, Publish Bin: Publishes the content of the bins that are different than result." << std::endl; + + +} + diff --git a/DataQuality/dqm_algorithms/workbench/TestTrigger.C b/DataQuality/dqm_algorithms/workbench/TestTrigger.C new file mode 100644 index 0000000000000000000000000000000000000000..a727c2c09a6e2c553a87a89cb5a56caf0bb9a3db --- /dev/null +++ b/DataQuality/dqm_algorithms/workbench/TestTrigger.C @@ -0,0 +1,24 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include<map> +#include<vector> +#include<string> + +dqm_core::Result * TestTrigger() +{ + dqm_algorithms::TileTriggerMonitor * algorithm = new dqm_algorithms::TileTriggerMonitor(); + + TH1F *histogram=new TH1F("histogram","histogram",3,0,3); + histogram->SetBinContent(2,2); + histogram->SetBinContent(3,-1); + + dqm_core::test::DummyAlgorithmConfig *aconfig = new dqm_core::test::DummyAlgorithmConfig(histogram); + aconfig->addParameter("XBin", 3); + + dqm_core::Result * result = algorithm->execute( "test", *histogram, *aconfig); + std::cout << "Result " << result->status_<< std::endl; + return result; + +} diff --git a/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py b/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py index 6043656df94594a3afffa5133ed2c355295a4818..c25e9a0d07a73acdb6866fb64379aa5bd3c6a267 100644 --- a/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py +++ b/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py @@ -12,7 +12,7 @@ def ITkTrackRecoOutputCfg(flags, extensions_list=None): toESD = [] # excluded track aux data - excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco' + excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco.-AssoClustersUFO' '.-TTVA_AMVFWeights_forReco') # remove track decorations used internally by FTAG software excludedAuxData += '.-'.join([''] + FTAG_AUXDATA) diff --git a/InnerDetector/InDetConfig/python/InDetTrackOutputConfig.py b/InnerDetector/InDetConfig/python/InDetTrackOutputConfig.py index 9ab0c68abd13e6ebba9a1584be7ae10f47e92e8b..6d4bdc588cc5f266d07fea0f7763cd6b7ae06726 100644 --- a/InnerDetector/InDetConfig/python/InDetTrackOutputConfig.py +++ b/InnerDetector/InDetConfig/python/InDetTrackOutputConfig.py @@ -29,7 +29,7 @@ def InDetTrackRecoOutputCfg(flags, extensions_list=None): toESD = [] # excluded track aux data - excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco' + excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco.-AssoClustersUFO' '.-TTVA_AMVFWeights_forReco') # remove track decorations used internally by FTAG software excludedAuxData += '.-'.join([''] + FTAG_AUXDATA) diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/STgcClusterBuilderCommon.cxx b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/STgcClusterBuilderCommon.cxx index 2f2a7348d441fc25d826e80c86b4ded2c2d51d7d..0c2c4253a2f4ec785f0f8b178719f806dfe1f2da 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/STgcClusterBuilderCommon.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/STgcClusterBuilderCommon.cxx @@ -340,10 +340,18 @@ std::optional<Muon::STgcClusterPosition> Muon::STgcClusterBuilderCommon::caruana return std::nullopt; } + + Amg::Vector3D globalClusterPos {detEl->surface(clusterId).transform()*Amg::Vector3D{reconstructedPosX, 0,0}}; + Amg::Vector3D clusDir{ NswClustering::toLocal(detEl->surface(clusterId), globalClusterPos) }; + NswErrorCalibData::Input errorCalibIn{}; errorCalibIn.stripId = clusterId; errorCalibIn.clusterAuthor = static_cast<unsigned>(sTgcPrepData::Author::Caruana); - errorCalibIn.clusterError = std::sqrt(sigmaSq); + errorCalibIn.clusterError = std::sqrt(sigmaSq); + errorCalibIn.locPhi = clusDir.phi(); + errorCalibIn.locTheta = clusDir.theta(); + errorCalibIn.localPos = Amg::Vector2D{reconstructedPosX, 0}; + errorCalibIn.clusterSize = cluster.size(); const double localUncertainty = m_errorCalibData.clusterUncertainty(errorCalibIn); diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/python/L1CALOCore.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/python/L1CALOCore.py index 3042b5deb6c4e8626672e66bf043e54fb829aebf..82940c1db59e51c898bb2f20e85fdae3b6e52143 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/python/L1CALOCore.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/python/L1CALOCore.py @@ -228,6 +228,7 @@ def L1CALOCoreCfg(flags, deriv='L1CALO1', **kwargs): "TauJets":"xAOD::TauJetContainer", "TauJetsAux":"xAOD::TauJetAuxContainer"} ) AllVariables += ["AntiKt4EMPFlowJets","AntiKt10LCTopoJets","Muons","Photons"] + AllVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"] # TauJets require smart slimming in order not to cause issues SmartCollections += ["TauJets"] diff --git a/Reconstruction/Jet/JetRecConfig/python/JetRecoSteering.py b/Reconstruction/Jet/JetRecConfig/python/JetRecoSteering.py index 8b122207dc6874f008238f261f1b016ad1aaa890..38469dc67982b150cccd4a6db2bb1428046afaf3 100644 --- a/Reconstruction/Jet/JetRecConfig/python/JetRecoSteering.py +++ b/Reconstruction/Jet/JetRecConfig/python/JetRecoSteering.py @@ -1,7 +1,7 @@ # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from JetRecConfig.StandardSmallRJets import AntiKt4EMPFlow, AntiKt4LCTopo, AntiKt4EMTopo, AntiKt4Truth -from JetRecConfig.StandardLargeRJets import AntiKt10LCTopo_noVR +from JetRecConfig.StandardLargeRJets import AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger from JetRecConfig.JetRecConfig import JetRecCfg def addTruthPileupJetsToOutputCfg(flags, toAOD=True, toESD=True): @@ -64,9 +64,8 @@ def JetRecoSteeringCfg(flags): result = ComponentAccumulator() # the Standard list of jets to run : - jetdefs = [AntiKt4EMTopo, AntiKt4EMPFlow, AntiKt4LCTopo, AntiKt4Truth, AntiKt10LCTopo_noVR] + jetdefs = [AntiKt4EMTopo, AntiKt4EMPFlow, AntiKt4LCTopo, AntiKt4Truth, AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger] - from JetRecConfig.JetConfigFlags import jetInternalFlags # We're in Reco job : propagate this info to the runIII jet config # (see JetConfigFlags.py for motivations on this way of doing) @@ -81,6 +80,7 @@ def JetRecoSteeringCfg(flags): if flags.Output.doWriteAOD and flags.Jet.WriteToAOD: result.merge(addJetsToOutputCfg(flags, jetdefs, toAOD=True, toESD=False)) if flags.Output.doWriteESD: + jetdefs.remove(AntiKt10UFOCSSKSoftDrop_trigger) result.merge(addJetsToOutputCfg(flags, jetdefs, toAOD=False, toESD=True)) return result diff --git a/Reconstruction/egamma/egammaConfig/python/egammaConfigFlags.py b/Reconstruction/egamma/egammaConfig/python/egammaConfigFlags.py index b15eac31b0aad4c11518df28f5827e28184e596a..42d756836f30bc046acca69787f1d6fe56db97a5 100644 --- a/Reconstruction/egamma/egammaConfig/python/egammaConfigFlags.py +++ b/Reconstruction/egamma/egammaConfig/python/egammaConfigFlags.py @@ -134,7 +134,7 @@ def createEgammaConfigFlags(): egcf.addFlag("Egamma.Keys.Output.ForwardClusters", 'ForwardElectronClusters') - egcf.addFlag("Egamma.Keys.Output.ForwardClustersSuppESD", '-SisterCluster') + egcf.addFlag("Egamma.Keys.Output.ForwardClustersSuppESD", '-SisterCluster.-sigmaWidth') egcf.addFlag("Egamma.Keys.Output.ForwardClustersSuppAOD", lambda prevFlags: ( prevFlags.Egamma.Keys.Output.ForwardClustersSuppESD)) diff --git a/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h b/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h index f85225669a307ad07ec44f92efcec0789e47fdf5..baded741db5b4cf7293bb8201d002bc112e25b12 100644 --- a/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h +++ b/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ //**************************************************************************** @@ -25,39 +25,43 @@ #ifndef TILETBREC_TILEDIGITSGAINFILTER_H #define TILETBREC_TILEDIGITSGAINFILTER_H -#include "AthenaBaseComps/AthAlgorithm.h" -#include "GaudiKernel/ToolHandle.h" +#include "TileEvent/TileDigitsContainer.h" -class TileHWID; +#include "AthenaBaseComps/AthReentrantAlgorithm.h" +#include "StoreGate/ReadHandleKey.h" +#include "StoreGate/WriteHandleKey.h" -#include <string> -#include <vector> +class TileHWID; -/** +/** @class TileDigitsGainFilter @brief This algorithm copies TileDigits from input container to output container */ -class TileDigitsGainFilter: public AthAlgorithm { +class TileDigitsGainFilter: public AthReentrantAlgorithm { public: // Constructor - TileDigitsGainFilter(const std::string& name, ISvcLocator* pSvcLocator); + using AthReentrantAlgorithm::AthReentrantAlgorithm; //Destructor - virtual ~TileDigitsGainFilter(); + virtual ~TileDigitsGainFilter() = default; //Gaudi Hooks StatusCode initialize() override; //!< initialize method - StatusCode execute() override; //!< execute method + StatusCode execute(const EventContext& ctx) const override; //!< execute method StatusCode finalize() override; //!< finalize method private: - const TileHWID* m_tileHWID; + SG::ReadHandleKey<TileDigitsContainer> m_inputContainerKey{this, + "InputDigitsContainer", "TileDigitsCnt", "Input Tile digits container key"}; + + SG::WriteHandleKey<TileDigitsContainer> m_outputContainerKey{this, + "OutputDigitsContainer", "TileDigitsFiltered", "Output Tile digits container key"}; - std::string m_inputContainer; //!< Name of the input TileDigitsContainer - std::string m_outputContainer; //!< Name of the output TileDigitsContainer + Gaudi::Property<int> m_threshold{this, + "HighGainThreshold", 4095, "Threshold to check overflowes in high gain"}; - int m_threshold; + const TileHWID* m_tileHWID{nullptr}; }; diff --git a/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx b/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx index 1361f242988dfa92e44860020e48c5f179d84fd8..b9bca4b1381b255bcb336912a158b684c06300e9 100644 --- a/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx +++ b/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ //***************************************************************************** @@ -17,34 +17,17 @@ // Tile includes #include "TileTBRec/TileDigitsGainFilter.h" -#include "TileEvent/TileDigitsContainer.h" -#include "TileEvent/TileRawChannelContainer.h" #include "TileCalibBlobObjs/TileCalibUtils.h" +#include "TileEvent/TileDigitsContainer.h" #include "TileIdentifier/TileHWID.h" // Atlas includes #include "AthContainers/ConstDataVector.h" -#include "AthenaKernel/errorcheck.h" +#include "StoreGate/ReadHandle.h" +#include "StoreGate/WriteHandle.h" //C++ STL includes #include <vector> -#include <algorithm> -#include <cstring> - -// -// Constructor -// -TileDigitsGainFilter::TileDigitsGainFilter(const std::string& name, ISvcLocator* pSvcLocator) - : AthAlgorithm(name, pSvcLocator) - , m_tileHWID(nullptr) -{ - declareProperty("InputDigitsContainer", m_inputContainer = "TileDigitsCnt"); - declareProperty("OutputDigitsContainer", m_outputContainer = "TileDigitsFiltered"); - declareProperty("HighGainThreshold", m_threshold = 4095); -} - -TileDigitsGainFilter::~TileDigitsGainFilter() { -} // // Alg standard initialize function @@ -53,8 +36,11 @@ StatusCode TileDigitsGainFilter::initialize() { CHECK( detStore()->retrieve(m_tileHWID) ); - ATH_MSG_INFO( "Input digits container: '" << m_inputContainer - << "' output container: '" << m_outputContainer << "'" ); + ATH_CHECK( m_inputContainerKey.initialize() ); + ATH_CHECK( m_outputContainerKey.initialize() ); + + ATH_MSG_INFO( "Input digits container: '" << m_inputContainerKey + << "' output container: '" << m_outputContainerKey << "'" ); ATH_MSG_INFO( "Threshold to check overflowed in HG: " << m_threshold); @@ -68,15 +54,13 @@ StatusCode TileDigitsGainFilter::initialize() { // // Begin Execution Phase. // -StatusCode TileDigitsGainFilter::execute() { +StatusCode TileDigitsGainFilter::execute(const EventContext& ctx) const { + + SG::ReadHandle<TileDigitsContainer> inputContainer(m_inputContainerKey, ctx); + ATH_CHECK( inputContainer.isValid() ); // Create new container for filtered digits auto outputContainer = std::make_unique<TileDigitsContainer>(false, SG::VIEW_ELEMENTS); - - - const TileDigitsContainer* inputContainer(nullptr); - CHECK( evtStore()->retrieve(inputContainer, m_inputContainer) ); - outputContainer->set_unit(inputContainer->get_unit()); outputContainer->set_type(inputContainer->get_type()); outputContainer->set_bsflags(inputContainer->get_bsflags()); @@ -147,11 +131,11 @@ StatusCode TileDigitsGainFilter::execute() { } } - CHECK( outputContainer->addCollection (outColl.release()->asDataVector(), - collIt.hashId()) ); + ATH_CHECK( outputContainer->addCollection (outColl.release()->asDataVector(), collIt.hashId()) ); } - CHECK( evtStore()->record(std::move(outputContainer), m_outputContainer, false) ); + SG::WriteHandle<TileDigitsContainer> outputDigitsContainer(m_outputContainerKey, ctx); + ATH_CHECK( outputDigitsContainer.record(std::move(outputContainer)) ); return StatusCode::SUCCESS; } diff --git a/Tools/WorkflowTestRunner/python/References.py b/Tools/WorkflowTestRunner/python/References.py index 11f1e4b3f4f4e6848510c058dc6c60eca85222d1..19093469171e6d5f1e9ef97f77fb501d1d22d52d 100644 --- a/Tools/WorkflowTestRunner/python/References.py +++ b/Tools/WorkflowTestRunner/python/References.py @@ -25,7 +25,7 @@ references_map = { "d1912": "v5", # Reco "q442": "v50", - "q449": "v78", + "q449": "v79", "q452": "v10", "q454": "v16", # Derivations diff --git a/Trigger/TrigAlgorithms/TrigTauRec/src/TrigTauRecMerged.cxx b/Trigger/TrigAlgorithms/TrigTauRec/src/TrigTauRecMerged.cxx index 2017d9e598c5713a90d55976f624bc237f7bacae..251d9efba24a77db7fa45f9943f9cead26a25a10 100644 --- a/Trigger/TrigAlgorithms/TrigTauRec/src/TrigTauRecMerged.cxx +++ b/Trigger/TrigAlgorithms/TrigTauRec/src/TrigTauRecMerged.cxx @@ -14,7 +14,7 @@ #include "xAODTracking/VertexContainer.h" #include "xAODJet/Jet.h" -#include "xAODJet/JetTrigAuxContainer.h" +#include "xAODJet/JetAuxContainer.h" #include "xAODJet/JetContainer.h" #include "xAODTau/TauJetContainer.h" @@ -291,9 +291,9 @@ StatusCode TrigTauRecMerged::execute(const EventContext& ctx) const } std::unique_ptr<xAOD::JetContainer> theJetContainer{std::make_unique<xAOD::JetContainer>()}; - std::unique_ptr<xAOD::JetTrigAuxContainer> theTrigJetAuxContainer{std::make_unique<xAOD::JetTrigAuxContainer>()}; + std::unique_ptr<xAOD::JetAuxContainer> theJetAuxContainer{std::make_unique<xAOD::JetAuxContainer>()}; - theJetContainer->setStore(theTrigJetAuxContainer.get()); + theJetContainer->setStore(theJetAuxContainer.get()); xAOD::Jet *aJet = new xAOD::Jet; @@ -343,7 +343,7 @@ StatusCode TrigTauRecMerged::execute(const EventContext& ctx) const // Save Outputs SG::WriteHandle< xAOD::JetContainer > outTauSeedHandle = SG::makeHandle( m_trigtauSeedOutKey,ctx ); - CHECK( outTauSeedHandle.record( std::move( theJetContainer ), std::move( theTrigJetAuxContainer ) ) ); + CHECK( outTauSeedHandle.record( std::move( theJetContainer ), std::move( theJetAuxContainer ) ) ); } //Check if jetLink is valid for all taus diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py b/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py index dbf419bb5b4f3d0ea261ee2c3f541b53c3ea2b00..0c79dec07bcbdfbc907e7d50a8458a219cd64ee1 100644 --- a/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py +++ b/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py @@ -1,5 +1,5 @@ # -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # '''@file TrigMETMonitoringAlgorithm.py @@ -224,6 +224,12 @@ def TrigMETMonConfig(inputFlags): TrigMETMonChain5Alg.algsHLT = algsHLTChain5 TrigMETMonChain6Alg.algsHLT = algsHLTChain6 + ## PreSel cut + l1MetAlg = 1 #0=legacy,1=jFex,2=gFexJWOJ + l1MetCut = 48.0 #50.0,48.0,? + TrigMETMonAlg.L1MetAlg = l1MetAlg + TrigMETMonAlg.L1MetCut = l1MetCut + ### cell component and status bit comp_names = ["PreSamplB", "EMB1", "EMB2", "EMB3", # LAr barrel "PreSamplE", "EME1", "EME2", "EME3", # LAr EM endcap diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx index 5344d8e97297b6345816edfc1eb29e1015e2930a..8f06dbdbf67cb9d70d35fbe463a96f8bee039056 100644 --- a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #include "LArRecEvent/LArEventBitInfo.h" #include "TrigMETMonitorAlgorithm.h" @@ -674,7 +674,7 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co } } - // get L1_roiMet_Et for pre-selection + // get L1 MET for pre-selection float L1_roiMet_Et = 0; if ( l1_roi_cont.isValid() ) { if ((l1_roi_cont->energyX())>-9e12 && (l1_roi_cont->energyX())<9e12 && (l1_roi_cont->energyY())>-9e12 && (l1_roi_cont->energyY())<9e12) { @@ -683,6 +683,21 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co L1_roiMet_Et = std::sqrt(Ex*Ex + Ey*Ey); } } + float L1_jFexMet_Et = 0; + if (l1_jFexMet_cont.isValid() && l1_jFexMet_cont->size() > 0) { + float L1_met_Ex = 0; + float L1_met_Ey = 0; + for (const auto l1_jmet: *l1_jFexMet_cont) { + L1_met_Ex += l1_jmet->Ex()/Gaudi::Units::GeV; + L1_met_Ey += l1_jmet->Ey()/Gaudi::Units::GeV; + } + L1_jFexMet_Et = std::sqrt(L1_met_Ex*L1_met_Ex + L1_met_Ey*L1_met_Ey); + } + float L1_gFexJWOJMet_Et = 0; + + float L1_PreSelMet_Et = L1_roiMet_Et; + if (m_L1MetAlg == 1) L1_PreSelMet_Et = L1_jFexMet_Et; + if (m_L1MetAlg == 2) L1_PreSelMet_Et = L1_gFexJWOJMet_Et; // access HLT MET values for (const std::string& alg : m_algsHLT) { @@ -795,7 +810,7 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co float hlt_Ex = hlt_met->ex()/Gaudi::Units::GeV; float hlt_Ey = hlt_met->ey()/Gaudi::Units::GeV; float hlt_Et = std::sqrt(hlt_Ex*hlt_Ex + hlt_Ey*hlt_Ey); - if (L1_roiMet_Et > 50. && !std::isnan(hlt_Et)) { + if (L1_PreSelMet_Et > m_L1MetCut && !std::isnan(hlt_Et)) { auto met_presel_Et = Monitored::Scalar<float>(alg+"_presel_Et", hlt_Et); fill(tool,met_presel_Et); } diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h index f45796ba9024ac0f88962ac4ec3a0429c69baf91..7f3cc426d0ccf5aa2342438471e66f0f931bffaa 100644 --- a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h +++ b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGMETMONITORING_TRIGMETMONITORALGORITHM_H @@ -100,6 +100,9 @@ class TrigMETMonitorAlgorithm : public AthMonitorAlgorithm { Gaudi::Property<std::vector<std::string>> m_compNames{this, "compNames", {}, "Calorimeter component names"}; Gaudi::Property<std::vector<std::string>> m_bitNames{this, "bitNames", {}, "Status bit names"}; + Gaudi::Property<int> m_L1MetAlg{this, "L1MetAlg", 1, "L1 MET algorithm for PreSel"}; //0=lagacy, 1=jFex, 2=gFexJWOJ + Gaudi::Property<double> m_L1MetCut{this, "L1MetCut", 50.0, "L1 MET cut for PreSel"}; + Gaudi::Property<double> m_electronPtCut{this, "electronPtCut", 0.0, "Electron pt cut for leading electron"}; Gaudi::Property<double> m_electronEtaCut{this, "electronEtaCut", 0.0, "Electron eta cut for leading electron"}; Gaudi::Property<double> m_muonPtCut{this, "muonPtCut", 0.0, "Muon pt cut for leading muon"}; diff --git a/Trigger/TrigT1/TrigT1CaloMonitoring/src/JetEfficiencyMonitorAlgorithm.cxx b/Trigger/TrigT1/TrigT1CaloMonitoring/src/JetEfficiencyMonitorAlgorithm.cxx index 07b41cdeb86b36fcd3f151c1cece3d1e16eb7fcf..54685e9c1c918e8bfe92b65d27366702098c1db4 100644 --- a/Trigger/TrigT1/TrigT1CaloMonitoring/src/JetEfficiencyMonitorAlgorithm.cxx +++ b/Trigger/TrigT1/TrigT1CaloMonitoring/src/JetEfficiencyMonitorAlgorithm.cxx @@ -29,7 +29,6 @@ StatusCode JetEfficiencyMonitorAlgorithm::initialize() { ATH_CHECK(m_gFexSRJetContainerKey.initialize()); //initizlize gfex sr jets // TOBs may come from trigger bytestream - renounce from scheduler - renounce(m_LRjetKey); renounce(m_gFexLRJetContainerKey); renounce(m_gFexSRJetContainerKey); @@ -49,7 +48,7 @@ StatusCode JetEfficiencyMonitorAlgorithm::fillHistograms( const EventContext& ct // Retrieve Offline LR Jets from SG SG::ReadHandle<xAOD::JetContainer> LRjets(m_LRjetKey,ctx); if(!LRjets.isValid()){ - ATH_MSG_WARNING("Failed to retrieve Offline Large Radius Jet Container"); + ATH_MSG_WARNING("Failed to retrieve Offline Large Radius Jet Container "<<m_LRjetKey); return StatusCode::SUCCESS; } // Retrieve gfex SR Jets from SG diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py index 65a456e89475eefb49f8e27abad027d6b2605161..0617c151b052de66292158ef910f49f545e0bb71 100644 --- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py +++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py @@ -710,8 +710,8 @@ TriggerHLTListRun3 = [ ('TrigRoiDescriptorCollection#HLT_Roi_TauIsoBDT', 'BS ESD AODFULL', 'Tau'), ('TrigRoiDescriptorCollection#HLT_Roi_TauIsoBDT_probe', 'BS ESD AODFULL', 'Tau'), - ('xAOD::JetContainer#HLT_jet_seed', 'BS ESD', 'Tau', [InViews('tauCaloMVAViews')]), - ('xAOD::JetAuxContainer#HLT_jet_seedAux.', 'BS ESD', 'Tau'), + ('xAOD::JetContainer#HLT_jet_seed', '', 'Tau', [InViews('tauCaloMVAViews')]), + ('xAOD::JetAuxContainer#HLT_jet_seedAux.', '', 'Tau'), # Jet ('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjesIS', 'BS ESD AODFULL AODSLIM', 'Jet', [Alias('JetContainerShallowCopy')]), 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 d7d209510fce615cc7157d29ba257e06018b7923..7efb131f69c9eec9a0f30a49644106824bb5f093 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 @@ -313,7 +313,6 @@ def getDevSignatures(): ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_DarkJetPEBTLA_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['DarkJetPEBTLA'], groups=DevGroup+MultiJetGroup, monGroups=['tlaMon:shifter']), # PEB for HH4b ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['Main'], groups=MultiJetGroup+DevGroup, monGroups=['tlaMon:shifter']), - ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_FTagPEBTLA_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['FTagPEBTLA'], groups=MultiJetGroup+DevGroup, monGroups=['tlaMon:shifter']), # diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py index a79cf888d258967a31b13a8c881ee51a9abf1054..039a0d3934fa0bd631745673d88269579c709912 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py @@ -1258,6 +1258,8 @@ def setupMenu(menu_name): # MultiJet TLA support for intensity ramp up ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_PhysicsTLA_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['TLA'], groups=MultiJetGroup+SupportPhIGroup, monGroups=['tlaMon:shifter']), ChainProp(name='HLT_j60_j45_j25_j20_pf_ftf_preselc60XXc45XXc25XXc20_PhysicsTLA_L1jJ85p0ETA21_3jJ40p0ETA25',l1SeedThresholds=['FSNOSEED']*4, stream=['TLA'], groups=MultiJetGroup+SupportPhIGroup, monGroups=['tlaMon:shifter']), + # FTag PEB + ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_FTagPEBTLA_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['FTagPEBTLA'], groups=MultiJetGroup+SupportPhIGroup, monGroups=['tlaMon:shifter']), # ATR-25512 ChainProp(name='HLT_j20_pf_ftf_preselj190_PhysicsTLA_L1J100', l1SeedThresholds=['FSNOSEED'], stream=['TLA'], groups=PrimaryLegGroup+SingleJetGroup, monGroups=['tlaMon:shifter']),