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