From 38023f96c846a7f5edadacf055fd69e614e6bb14 Mon Sep 17 00:00:00 2001 From: Tomasz Bold <tomasz.bold@gmail.com> Date: Tue, 5 Jun 2018 22:59:33 +0200 Subject: [PATCH] Fixed issues in new MET codes, jobs now do run Former-commit-id: ccc58e435302f9e1397789167709c1a9d20ed14f --- .../TrigCaloRec/src/HLTCaloCellMaker.cxx | 92 +++++++++---------- .../TrigEFMissingET/share/testMET.py | 38 +++++--- .../TrigEFMissingET/src/EFMissingETAlgMT.cxx | 4 +- .../src/EFMissingETFromCellsMT.cxx | 23 ++--- .../src/EFMissingETFromCellsMT.h | 2 +- 5 files changed, 86 insertions(+), 73 deletions(-) diff --git a/Trigger/TrigAlgorithms/TrigCaloRec/src/HLTCaloCellMaker.cxx b/Trigger/TrigAlgorithms/TrigCaloRec/src/HLTCaloCellMaker.cxx index eb8c91fb0e9..c97d623c8de 100644 --- a/Trigger/TrigAlgorithms/TrigCaloRec/src/HLTCaloCellMaker.cxx +++ b/Trigger/TrigAlgorithms/TrigCaloRec/src/HLTCaloCellMaker.cxx @@ -2,7 +2,7 @@ * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration * */ - /* +/* * NAME: HLTCaloCellMaker.cxx * PACKAGE: Trigger/TrigDataAccess/TrigCaloDataAccessSvc * @@ -20,11 +20,11 @@ HLTCaloCellMaker::HLTCaloCellMaker(const std::string & name, ISvcLocator* pSvcLo m_dataAccessSvc( "TrigCaloDataAccessSvc/TrigCaloDataAccessSvc", name ), m_roiMode(true) { - declareProperty("RoIs", m_roiCollectionKey = std::string("OutputRoIs"), "RoIs to read in"); - declareProperty("CellsVName", m_cellContainerVKey = std::string("CellsVClusters"), "Calo cells container"); - declareProperty("CellsName", m_cellContainerKey = std::string("CellsClusters"), "Calo cells container"); - declareProperty("TrigDataAccessMT",m_dataAccessSvc,"Data Access for LVL2 Calo Algorithms in MT"); - declareProperty("roiMode",m_roiMode,"RoiMode roi->CaloCellCollection"); + declareProperty("RoIs", m_roiCollectionKey = std::string("OutputRoIs"), "RoIs to read in"); + declareProperty("CellsVName", m_cellContainerVKey = std::string("CellsVClusters"), "Calo cells container"); + declareProperty("CellsName", m_cellContainerKey = std::string("CellsClusters"), "Calo cells container"); + declareProperty("TrigDataAccessMT",m_dataAccessSvc,"Data Access for LVL2 Calo Algorithms in MT"); + declareProperty("roiMode",m_roiMode,"RoiMode roi->CaloCellCollection"); } HLTCaloCellMaker::~HLTCaloCellMaker() @@ -32,13 +32,13 @@ HLTCaloCellMaker::~HLTCaloCellMaker() } StatusCode HLTCaloCellMaker::initialize() { - ATH_CHECK( m_roiCollectionKey.initialize() ); - if ( m_roiMode ) - ATH_CHECK( m_cellContainerKey.initialize() ); - else - ATH_CHECK( m_cellContainerVKey.initialize() ); - CHECK( m_dataAccessSvc.retrieve() ); - return StatusCode::SUCCESS; + ATH_CHECK( m_roiCollectionKey.initialize() ); + if ( m_roiMode ) + ATH_CHECK( m_cellContainerKey.initialize() ); + else + ATH_CHECK( m_cellContainerVKey.initialize() ); + CHECK( m_dataAccessSvc.retrieve() ); + return StatusCode::SUCCESS; } StatusCode HLTCaloCellMaker::execute_r( const EventContext& context ) const { @@ -49,43 +49,43 @@ StatusCode HLTCaloCellMaker::execute_r( const EventContext& context ) const { // datahandle if ( m_roiMode ) { - if ( roiCollection->size() > 1 ) - ATH_MSG_INFO ( "roiMode but multiple rois found, will only use the first one"); - SG::WriteHandle<ConstDataVector<CaloCellContainer> > cellContainer = SG::WriteHandle<ConstDataVector<CaloCellContainer> > ( m_cellContainerKey, context ); - auto cdv = CxxUtils::make_unique<ConstDataVector<CaloCellContainer> >(SG::VIEW_ELEMENTS); - for( const TrigRoiDescriptor* roiDescriptor : *roiCollection) { - if ( roiDescriptor->isFullscan() ) { - m_dataAccessSvc->loadFullCollections( context, *cdv ); + if ( roiCollection->size() > 1 ) + ATH_MSG_INFO ( "roiMode but multiple rois found, will only use the first one"); + SG::WriteHandle<ConstDataVector<CaloCellContainer> > cellContainer = SG::WriteHandle<ConstDataVector<CaloCellContainer> > ( m_cellContainerKey, context ); + auto cdv = CxxUtils::make_unique<ConstDataVector<CaloCellContainer> >(SG::VIEW_ELEMENTS); + for( const TrigRoiDescriptor* roiDescriptor : *roiCollection) { + if ( roiDescriptor->isFullscan() ) { + m_dataAccessSvc->loadFullCollections( context, *cdv ); - } else { - LArTT_Selector<LArCellCont> sel; - m_dataAccessSvc->loadCollections( context, *roiDescriptor, TTEM, 2, sel ); - for( const auto cell : sel ) {cdv->push_back( cell ); } - } - auto ss = cellContainer.record( std::move(cdv) ); - ATH_CHECK( ss ); - return StatusCode::SUCCESS; - } + } else { + LArTT_Selector<LArCellCont> sel; + m_dataAccessSvc->loadCollections( context, *roiDescriptor, TTEM, 2, sel ); + for( const auto cell : sel ) {cdv->push_back( cell ); } + } + auto ss = cellContainer.record( std::move(cdv) ); + ATH_CHECK( ss ); + return StatusCode::SUCCESS; + } } else { - SG::WriteHandle<ConstDataVector<CaloCellContainerVector> > cellContainerV( m_cellContainerVKey, context ); - auto cdv = CxxUtils::make_unique<ConstDataVector<CaloCellContainerVector> >(); - ATH_CHECK( cellContainerV.record( std::move(cdv) ) ); - for( const TrigRoiDescriptor* roiDescriptor : *roiCollection) { - if ( roiDescriptor->isFullscan() ) { - auto c = std::make_unique<ConstDataVector<CaloCellContainer> >(SG::VIEW_ELEMENTS); - m_dataAccessSvc->loadFullCollections( context, *c ); - cellContainerV->push_back( c.release()->asDataVector() ); + SG::WriteHandle<ConstDataVector<CaloCellContainerVector> > cellContainerV( m_cellContainerVKey, context ); + auto cdv = CxxUtils::make_unique<ConstDataVector<CaloCellContainerVector> >(); + ATH_CHECK( cellContainerV.record( std::move(cdv) ) ); + for( const TrigRoiDescriptor* roiDescriptor : *roiCollection) { + if ( roiDescriptor->isFullscan() ) { + auto c = std::make_unique<ConstDataVector<CaloCellContainer> >(SG::VIEW_ELEMENTS); + m_dataAccessSvc->loadFullCollections( context, *c ); + cellContainerV->push_back( c.release()->asDataVector() ); - } else { - LArTT_Selector<LArCellCont> sel; - m_dataAccessSvc->loadCollections( context, *roiDescriptor, TTEM, 2, sel ); - auto c = std::make_unique<ConstDataVector<CaloCellContainer> >(SG::VIEW_ELEMENTS); - int cc(0); - for( const auto cell : sel ) {c->push_back( cell ); cc++;} - cellContainerV->push_back( c.release()->asDataVector() ); - } - } + } else { + LArTT_Selector<LArCellCont> sel; + m_dataAccessSvc->loadCollections( context, *roiDescriptor, TTEM, 2, sel ); + auto c = std::make_unique<ConstDataVector<CaloCellContainer> >(SG::VIEW_ELEMENTS); + int cc(0); + for( const auto cell : sel ) {c->push_back( cell ); cc++;} + cellContainerV->push_back( c.release()->asDataVector() ); + } + } } diff --git a/Trigger/TrigAlgorithms/TrigEFMissingET/share/testMET.py b/Trigger/TrigAlgorithms/TrigEFMissingET/share/testMET.py index 5af3f2c6c36..9a395cf96f6 100644 --- a/Trigger/TrigAlgorithms/TrigEFMissingET/share/testMET.py +++ b/Trigger/TrigAlgorithms/TrigEFMissingET/share/testMET.py @@ -7,12 +7,6 @@ include("TrigUpgradeTest/testHLT_MT.py") from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() -isData = False -if globalflags.InputFormat.is_bytestream(): - isData = True - - - import math from TrigT2CaloCommon.TrigT2CaloCommonConf import TrigCaloDataAccessSvc#, TestCaloDataAccess from AthenaMonitoring.GenericMonitoringTool import GenericMonitoringTool, defineHistogram @@ -27,9 +21,13 @@ svcMgr += TrigCaloDataAccessSvc() svcMgr.TrigCaloDataAccessSvc.MonTool = mon svcMgr.TrigCaloDataAccessSvc.OutputLevel=INFO +from L1Decoder.L1DecoderConf import CreateFullScanRoI +topSequence += CreateFullScanRoI() + from TrigCaloRec.TrigCaloRecConf import HLTCaloCellMaker cellMakerAlgo = HLTCaloCellMaker("CellMakerMT", roiMode=True) -cellMakerAlgo.RoIs="METRoIs" +cellMakerAlgo.RoIs="FullScanRoIs" + cellMakerAlgo.OutputLevel=VERBOSE cellMakerAlgo.CellsName="cells" topSequence += cellMakerAlgo @@ -37,13 +35,27 @@ topSequence += cellMakerAlgo from TrigEFMissingET.TrigEFMissingETConf import EFMissingETAlgMT, EFMissingETFromCellsMT -# cellTool = EFMissingETFromCellsMT( name="METFromCellsTool", CaloNoiseTool=ToolSvc.CaloNoiseToolDefault ) -# cellTool.CellsCollection = "cells" +cellTool = EFMissingETFromCellsMT( name="METFromCellsTool" ) +cellTool.CellsCollection = "cells" + +metAlg = EFMissingETAlgMT( name="EFMET" ) + + +metAlg.METTools=[ cellTool ] +#metAlg.OutputLevel=DEBUG +metMon = GenericMonitoringTool("METMonTool") +metMon.Histograms = [ defineHistogram( "TIME_Total", title="Time spent Alg", xbins=100, xmin=0, xmax=100 ), + defineHistogram( "TIME_Loop", title="Time spent in Tools loop", xbins=100, xmin=0, xmax=100 )] +from TrigEFMissingET.TrigEFMissingETMonitoring import * +metMon.Histograms = [ hEx_log, hEy_log, hEz_log, hMET_log, hSumEt_log ] +metMon.Histograms += [ hMET_lin, hSumEt_lin ] +metMon.Histograms += [ hXS, hMETPhi, hMETStatus] +metMon.Histograms += [ hCompEx, hCompEy, hCompEz, hCompEt, hCompSumEt, hCompSumE ] +metMon.Histograms += [ hCompEt_lin, hCompSumEt_lin ] -# metAlg = EFMissingETAlgMT( name="EFMET" ) -# metAlg.METTools=[ cellTool ] -# metAlg += cellTool -# topSequence += metAlg +metAlg.MonTool = metMon +#metAlg += cellTool +topSequence += metAlg # from TrigCaloRec.TrigCaloRecConfig import TrigCaloClusterMakerMT_topo diff --git a/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETAlgMT.cxx b/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETAlgMT.cxx index c112085c3e3..df39c0b71f0 100644 --- a/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETAlgMT.cxx +++ b/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETAlgMT.cxx @@ -43,8 +43,8 @@ double toLinGeV( double x, double fallback = 0, double epsilon = 1e-6 ) { StatusCode EFMissingETAlgMT::execute_r( const EventContext& context ) const { ATH_MSG_DEBUG ( "Executing " << name() << "..." ); using namespace Monitored; - auto totalTimer = MonitoredTimer::declare( "Total" ); - auto loopTimer = MonitoredTimer::declare( "Loop" ); + auto totalTimer = MonitoredTimer::declare( "TIME_Total" ); + auto loopTimer = MonitoredTimer::declare( "TIME_Loop" ); auto metContainer = std::make_unique<xAOD::TrigMissingETContainer>(); auto metAuxContainer = std::make_unique<xAOD::TrigMissingETAuxContainer>(); diff --git a/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromCellsMT.cxx b/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromCellsMT.cxx index b6b0b9413d9..3a38c6d6bfd 100644 --- a/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromCellsMT.cxx +++ b/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromCellsMT.cxx @@ -24,7 +24,8 @@ StatusCode EFMissingETFromCellsMT::initialize() m_maxThreshold = m_rmsOneSided; if ( m_rmsOneSided < fabsf( m_rmsTwoSided ) ) m_maxThreshold = fabsf( m_rmsTwoSided ); - CHECK( m_noiseTool.retrieve() ); + + //CHECK( m_noiseTool.retrieve() ); return StatusCode::SUCCESS; } @@ -32,11 +33,11 @@ StatusCode EFMissingETFromCellsMT::initialize() StatusCode EFMissingETFromCellsMT::update( xAOD::TrigMissingET */*met*/, TrigEFMissingEtHelper *metHelper ) const { using namespace Monitored; - auto totalTimer = MonitoredTimer::declare( "Total" ); + auto totalTimer = MonitoredTimer::declare( "TIME_Total" ); const EventContext context{ Gaudi::Hive::currentContext() }; auto caloCellsHandle = SG::makeHandle( m_cellsKey ); - auto loopTimer = MonitoredTimer::declare( "Loop" ); + auto loopTimer = MonitoredTimer::declare( "TIME_Loop" ); auto countUsedCells = MonitoredScalar::declare<unsigned>( "UsedCells", 0 ); // now it is time to iterate over the cells @@ -56,11 +57,11 @@ StatusCode EFMissingETFromCellsMT::update( xAOD::TrigMissingET */*met*/, //TB not sure about skipping logic, looks incorrect in the original code // - if ( m_noiseTool ) { // == noise suppression required - const bool noiseCutPassed = true; // noiseCut( cell ); - if ( not noiseCutPassed ) - continue; - } + // if ( m_noiseTool ) { // == noise suppression required + // const bool noiseCutPassed = true; // noiseCut( cell ); + // if ( not noiseCutPassed ) + // continue; + // } countUsedCells = countUsedCells + 1; @@ -84,9 +85,9 @@ StatusCode EFMissingETFromCellsMT::update( xAOD::TrigMissingET */*met*/, if ( not m_makeRobustness) continue; if ( not m_doCellNoiseSupp || (m_doCellNoiseSupp && m_MinCellSNratio[cDDE->getSampling()] > m_maxThreshold)) { - if (fabs(E) < m_MinCellSNratio[cDDE->getSampling()] * - m_noiseTool->getNoise( cell, ICalorimeterNoiseTool::TOTALNOISE)) - continue; + // if (fabs(E) < m_MinCellSNratio[cDDE->getSampling()] * + // m_noiseTool->getNoise( cell, ICalorimeterNoiseTool::TOTALNOISE)) + continue; } float time = cell->time() * 1e-3; // ns diff --git a/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromCellsMT.h b/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromCellsMT.h index 89433a3b890..18089672c45 100644 --- a/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromCellsMT.h +++ b/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromCellsMT.h @@ -51,7 +51,7 @@ class EFMissingETFromCellsMT: public extends<AthAlgTool, IMissingETTool> { SG::ReadHandleKey<CaloCellContainer> m_cellsKey { this, "CellsCollection", "CaloCells", "Collection containg all cels" }; - PublicToolHandle<ICalorimeterNoiseTool> m_noiseTool { this, "CaloNoiseTool", "CaloNoiseTool/CaloNoiseToolDefault", "Tool Handle for noise tool" }; + //PublicToolHandle<ICalorimeterNoiseTool> m_noiseTool { this, "CaloNoiseTool", "CaloNoiseTool/CaloNoiseToolDefault", "Tool Handle for noise tool" }; }; -- GitLab