From 9a0dc293ab899ff9c6abf7e79353e35b63da6a72 Mon Sep 17 00:00:00 2001 From: Marija Vranjes Milosavljevic <marija.vranjes.milosavljevic@cern.ch> Date: Thu, 1 Nov 2018 10:27:35 +0000 Subject: [PATCH 001/135] Merge branch '21.1-my-InDetGlobalMonitoring-development' into '21.1' update in InDetGlobalMonitoring for heavy-ion runs See merge request atlas/athena!15524 (cherry picked from commit ec5c548a6a9e9b2215754199204d42c3b41513a5 [formerly 631e2d36eda6f372d9e02027d6c45257ab6285c5]) 7894ae57 adding 1 histo for InDetGlobalMonitoring for heavy-ion runs Former-commit-id: af5019fd712932a57381a532a4bce5119015a4e6 --- .../src/InDetGlobalTrackMonTool.cxx | 11 ++++++++++- .../src/InDetGlobalTrackMonTool.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx index 8d12192afbf..226a845fa9b 100644 --- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx +++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx @@ -92,6 +92,7 @@ InDetGlobalTrackMonTool::InDetGlobalTrackMonTool( const std::string & type, m_holes_quality(nullptr), m_holes_quality_profile(nullptr), m_Trk_eta_phi_Base(nullptr), + m_Trk_eta_phi_Tight(nullptr), m_Trk_eta_phi_Tight_ratio(nullptr), m_Trk_eta_phi_noIBLhit_ratio(nullptr), m_Trk_eta_phi_noBLhit_ratio(nullptr), @@ -230,6 +231,12 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms() m_nBinsPhi, -M_PI, M_PI, "eta", "#phi_{0}" ).ignore(); + registerManHist( m_Trk_eta_phi_Tight, "InDetGlobal/Track", detailsInterval, + "Trk_Tight_eta_phi","Distribution of eta vs phi for combined tracks passing monitoring selection", + m_nBinsEta, -c_etaRange, c_etaRange, + m_nBinsPhi, -M_PI, M_PI, + "eta", "#phi_{0}" ).ignore(); + registerManHist( m_Trk_eta_phi_Tight_ratio, "InDetGlobal/Track", detailsInterval, "Trk_Tight_eta_phi_ratio","Distribution of eta vs phi for combined tracks passing Tight selection", m_nBinsEta, -m_c_etaRange, m_c_etaRange, @@ -865,7 +872,9 @@ void InDetGlobalTrackMonTool::FillEtaPhi( const Trk::Track *track, const std::un else m_Trk_eta_phi_noTRText_ratio->Fill( eta, phi, 0 ); } - + + m_Trk_eta_phi_Tight->Fill( eta, phi); + /// TRACKSEL: Tight if ( m_tight_selTool->accept(*track) ) { diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.h b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.h index 8c8f896ea89..9cfe9573419 100755 --- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.h +++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.h @@ -175,6 +175,7 @@ private: TH1I * m_Trk_Base; ///Distribution of eta vs phi for combined tracks TH2F * m_Trk_eta_phi_Base; + TH2F * m_Trk_eta_phi_Tight; TProfile2D * m_Trk_eta_phi_Tight_ratio; TProfile2D * m_Trk_eta_phi_noIBLhit_ratio; TProfile2D * m_Trk_eta_phi_noBLhit_ratio; -- GitLab From 82c4b4ea85f67211871dba18714a923dc9a3fd62 Mon Sep 17 00:00:00 2001 From: amete <serhanmete@gmail.com> Date: Tue, 17 Jul 2018 15:44:51 +0200 Subject: [PATCH 002/135] PerfMonVTune Svc template Former-commit-id: 18614d9ce38db75e4903d87a8cd208252d9124cc --- .../PerfMonVTune/CMakeLists.txt | 38 ++++ .../PerfMonVTune/IVTuneProfilerSvc.h | 25 +++ .../share/VTuneProfileEventLoop_preInclude.py | 14 ++ .../PerfMonVTune/src/VTuneProfilerService.cxx | 193 ++++++++++++++++++ .../PerfMonVTune/src/VTuneProfilerService.h | 67 ++++++ .../src/components/PerfMonVTune_entries.cxx | 3 + 6 files changed, 340 insertions(+) create mode 100644 Control/PerformanceMonitoring/PerfMonVTune/CMakeLists.txt create mode 100644 Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h create mode 100644 Control/PerformanceMonitoring/PerfMonVTune/share/VTuneProfileEventLoop_preInclude.py create mode 100644 Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx create mode 100644 Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h create mode 100644 Control/PerformanceMonitoring/PerfMonVTune/src/components/PerfMonVTune_entries.cxx diff --git a/Control/PerformanceMonitoring/PerfMonVTune/CMakeLists.txt b/Control/PerformanceMonitoring/PerfMonVTune/CMakeLists.txt new file mode 100644 index 00000000000..2becf9fc535 --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonVTune/CMakeLists.txt @@ -0,0 +1,38 @@ +################################################################################ +# Package: PerfMonVTune +################################################################################ + +# Declare the package name: +atlas_subdir( PerfMonVTune ) + +# Declare the package's dependencies: +atlas_depends_on_subdirs( PUBLIC + GaudiKernel + PRIVATE + Control/AthenaBaseComps + Control/AthenaKernel + TestPolicy ) + +#### +# VTune hack for the time-being +find_program( VTUNE_EXECUTABLE amplxe-cl ) +get_filename_component( VTUNE_DIR ${VTUNE_EXECUTABLE} PATH ) +set( ITT_PREFIX ${VTUNE_DIR}/.. ) + +find_path( ITT_INCLUDE_DIR NAMES ittnotify.h HINTS ${ITT_PREFIX}/include ) +find_library( ITT_LIBRARY NAMES ittnotify HINTS ${ITT_PREFIX}/lib64 ) + +include_directories(${ITT_INCLUDE_DIR}) +#### + +# Component(s) in the package: +atlas_add_component( PerfMonVTune + src/*.cxx + src/components/*.cxx + LINK_LIBRARIES GaudiKernel AthenaBaseComps AthenaKernel ${ITT_LIBRARY} ) + +# Install files from the package: +atlas_install_headers( PerfMonVTune ) +atlas_install_python_modules( python/*.py ) +atlas_install_joboptions( share/*.py ) +atlas_install_scripts( scripts/*.py ) diff --git a/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h b/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h new file mode 100644 index 00000000000..ea4e7658f8c --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h @@ -0,0 +1,25 @@ +#ifndef VTUNE_IPROFILERSERVICE_H +#define VTUNE_IPROFILERSERVICE_H + +/// Interface definition +static const InterfaceID IID_IVTuneProfilerService( "IVTuneProfilerService", 0, 1 ); + +class IVTuneProfilerSvc : public virtual IService { + + public: + + /// Interface ID definition + static const InterfaceID& interfaceID() { return IID_IVTuneProfilerService; } + + /// Resume profiling + virtual StatusCode resumeProfiling() = 0; + + /// Pause profiling + virtual StatusCode pauseProfiling() = 0; + + /// Is the profiling running at the moment? + virtual bool isProfilingRunning() const = 0; + +}; // class IVTuneProfilerSvc + +#endif // VTUNE_IPROFILERSERVICE.H diff --git a/Control/PerformanceMonitoring/PerfMonVTune/share/VTuneProfileEventLoop_preInclude.py b/Control/PerformanceMonitoring/PerfMonVTune/share/VTuneProfileEventLoop_preInclude.py new file mode 100644 index 00000000000..4240d9f37e0 --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonVTune/share/VTuneProfileEventLoop_preInclude.py @@ -0,0 +1,14 @@ +# Set up the profiler service: +from AthenaCommon.AppMgr import ServiceMgr +from PerfMonVTune.PerfMonVTuneConf import VTuneProfilerService +ServiceMgr += VTuneProfilerService("VTuneProfilerService") + +ServiceMgr.VTuneProfilerService.ResumeEvent = 10 + +# Set up the profiler service as the first service to be created: +theApp.CreateSvc.insert( 0, "VTuneProfilerService/VTuneProfilerService" ) + +# Print a message with what happened: +from AthenaCommon.Logging import logging +log = logging.getLogger( "VTuneProfileEventLoop_preInclude" ) +log.info( "The job's event loop will get profiling" ) diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx new file mode 100644 index 00000000000..b7d0b915fe7 --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx @@ -0,0 +1,193 @@ +// VTune include(s) +#include <ittnotify.h> + +// Gaudi/Athena include(s): +#include "AthenaKernel/errorcheck.h" + +// Local include(s): +#include "VTuneProfilerService.h" + +// +// Convenience variable(s): +// +static const std::string BEGINEVENT_INCIDENT_NAME = "BeginEvent"; +static const std::string ENDEVTLOOP_INCIDENT_NAME = "EndEvtLoop"; + +/** + * Constructor + */ +VTuneProfilerService::VTuneProfilerService( const std::string& name, ISvcLocator* svcloc ) + : AthService( name, svcloc ), + m_incidentSvc( "IncidentSvc", name ), + m_running( false ), m_processedEvents( 0 ) { + + declareProperty( "ResumeEvent", m_resumeEvent = 0, + "Event in which to resume the profiling." ); + declareProperty( "PauseEvent", m_pauseEvent = -1, + "Event in which to pause the profiling. Negative number " + "profiles the entire event-loop." ); +} + +/** + * Destructor + */ +VTuneProfilerService::~VTuneProfilerService() { + + if( m_running ) { + __itt_pause(); // Pause + } + +} + +/** + * QueryInterface + */ +StatusCode VTuneProfilerService::queryInterface( const InterfaceID& riid, + void** ppvIF ) { + + if( ! ppvIF ) { + return StatusCode::FAILURE; + } + + if( riid == IVTuneProfilerSvc::interfaceID() ) { + *ppvIF = static_cast< IVTuneProfilerSvc* >( this ); + return StatusCode::SUCCESS; + } + + return AthService::queryInterface( riid, ppvIF ); +} + + +/** + * Initalize the service + */ +StatusCode VTuneProfilerService::initialize() { + + // Print information + ATH_MSG_INFO( "Initializing VTuneProfilerService - Package version: " + << PACKAGE_VERSION ); + + // Set up listening to the incidents + CHECK( m_incidentSvc.retrieve() ); + m_incidentSvc->addListener( this, BEGINEVENT_INCIDENT_NAME ); + m_incidentSvc->addListener( this, ENDEVTLOOP_INCIDENT_NAME ); + + // Reset the event counter: + m_processedEvents = 0; + + return StatusCode::SUCCESS; + +} + +/** + * Finalize the service + */ +StatusCode VTuneProfilerService::finalize() { + + // Print information + ATH_MSG_INFO( "Finalizing VTuneProfilerService - Package version: " + << PACKAGE_VERSION ); + + return StatusCode::SUCCESS; +} + +/** + * Resume the profiling + */ +StatusCode VTuneProfilerService::resumeProfiling() { + + // Check whether the profiling is already running: + if( m_running ) { + ATH_MSG_INFO( "VTune profiling already running!" ); + return StatusCode::SUCCESS; + } + + // Print information + ATH_MSG_INFO( "Starting VTune profiling." ); + + // Resume VTune + __itt_resume(); + + // Set the flag + m_running = true; + + return StatusCode::SUCCESS; +} + +/** + * Pause the profiling + */ +StatusCode VTuneProfilerService::pauseProfiling() { + + // Check whether the profiling is already running: + if( !m_running ) { + ATH_MSG_INFO( "VTune profiling is not running!" ); + return StatusCode::SUCCESS; + } + + // Print information + ATH_MSG_INFO( "Stopping VTune profiling." ); + + // Resume VTune + __itt_pause(); + + // Set the flag + m_running = false; + + return StatusCode::SUCCESS; +} + +/** + * Is the profiling running? + */ +bool VTuneProfilerService::isProfilingRunning() const { + + return m_running; + +} + +/** + * Handle when to resume/pause the profiling + */ +void VTuneProfilerService::handle( const Incident& inc ) { + + // + // Pause the profiling after the last event + // + if( inc.type() == ENDEVTLOOP_INCIDENT_NAME ) { + if( m_running ) { + if( pauseProfiling().isFailure() ) { + REPORT_MESSAGE( MSG::ERROR ) + << "Could not pause the profiling"; + } + return; + } + } + + // + // Resume/Pause the profiling on the right event + // + if( inc.type() == BEGINEVENT_INCIDENT_NAME ) { + if( m_resumeEvent == m_processedEvents && + !m_running ) { + if( resumeProfiling().isFailure() ) { + REPORT_MESSAGE( MSG::ERROR ) + << "Could not resume the profiling"; + } + } + if( m_pauseEvent == m_processedEvents ) { + if( pauseProfiling().isFailure() && + m_running ) { + REPORT_MESSAGE( MSG::ERROR ) + << "Could not pause the profiling"; + } + } + ++m_processedEvents; + return; + } + + // Complain if we received an incident that we didn't expect: + ATH_MSG_WARNING( "Wrong incident type received: " << inc.type() ); + return; + +} diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h new file mode 100644 index 00000000000..c036730d8f7 --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h @@ -0,0 +1,67 @@ +#ifndef VTUNE_PROFILERSERVICE_H +#define VTUNE_PROFILERSERVICE_H + +// Gaudi/Athena include(s): +#include "GaudiKernel/ServiceHandle.h" +#include "GaudiKernel/IIncidentListener.h" +#include "GaudiKernel/IIncidentSvc.h" +#include "AthenaBaseComps/AthService.h" + +// Local include(s): +#include "PerfMonVTune/IVTuneProfilerSvc.h" + + +class VTuneProfilerService : public AthService, + public virtual IVTuneProfilerSvc, + public virtual IIncidentListener { + + public: + + /// Standard Gaudi service constructor + VTuneProfilerService( const std::string& name, ISvcLocator* svcloc ); + + /// Destructor + virtual ~VTuneProfilerService(); + + /// Function declaring the interface(s) implemented by the service + virtual StatusCode queryInterface( const InterfaceID& riid, + void** ppvIF ); + + /// Standard Gaudi initialization function + virtual StatusCode initialize(); + + /// Standard Gaudi finalization function + virtual StatusCode finalize(); + + /// Resume profiling + virtual StatusCode resumeProfiling(); + + /// Pause profiling + virtual StatusCode pauseProfiling(); + + /// Is the profiling running at the moment? + virtual bool isProfilingRunning() const; + + /// Function handling incoming incidents + virtual void handle( const Incident& inc ); + + private: + + /// Handle to the incident service + ServiceHandle< IIncidentSvc > m_incidentSvc; + + /// Property: Event in which profiling should start + int m_resumeEvent; + + /// Property: Event in which profiling should pause + int m_pauseEvent; + + /// Is the profiling running at the moment? + bool m_running; + + /// Number of events processed so far + int m_processedEvents; + +}; // class IVTuneProfilerSvc + +#endif // VTUNE_PROFILERSERVICE.H diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/components/PerfMonVTune_entries.cxx b/Control/PerformanceMonitoring/PerfMonVTune/src/components/PerfMonVTune_entries.cxx new file mode 100644 index 00000000000..90565363edb --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/components/PerfMonVTune_entries.cxx @@ -0,0 +1,3 @@ +#include "../VTuneProfilerService.h" + +DECLARE_COMPONENT( VTuneProfilerService ) -- GitLab From 93151437723dae269e5783cdbc4a15cd7951c95b Mon Sep 17 00:00:00 2001 From: amete <serhanmete@gmail.com> Date: Thu, 15 Nov 2018 10:37:33 +0100 Subject: [PATCH 003/135] Avoid building PerfMonVTune in Athena Former-commit-id: 43882c00cc6062ce5a8df8f7f70e01f2c6d3c427 --- Projects/Athena/package_filters.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Projects/Athena/package_filters.txt b/Projects/Athena/package_filters.txt index 70f08068d77..6d1da3d7f9c 100644 --- a/Projects/Athena/package_filters.txt +++ b/Projects/Athena/package_filters.txt @@ -65,3 +65,6 @@ # Huge D3PD librarys not really useful any more - PhysicsAnalysis/D3PDMaker/TrackD3PDMaker - PhysicsAnalysis/D3PDMaker/CaloD3PDMaker + +# Don't build PerfMonVTune which has external Intel tool dependency +- Control/PerformanceMonitoring/PerfMonVTune -- GitLab From 670dd417691911a3c1c2ed2cba5064cd1412fa7f Mon Sep 17 00:00:00 2001 From: Jyoti Prakash Biswal <jyoti.prakash.biswal@cern.ch> Date: Thu, 15 Nov 2018 12:33:52 +0100 Subject: [PATCH 004/135] Missing move assignment operator -- fixed! Second commit. Coverity issue# 113579 Former-commit-id: e9de4b0610d116ebff8200437d7a6b25bc6cc37a --- .../TrkGeometry/HomogeneousLayerMaterial.h | 225 +++++++++--------- .../TrkGeometry/LayerMaterialProperties.h | 9 +- .../src/HomogeneousLayerMaterial.cxx | 138 ++++++----- 3 files changed, 192 insertions(+), 180 deletions(-) diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/HomogeneousLayerMaterial.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/HomogeneousLayerMaterial.h index c5bc9b42fb7..03e3ffe9660 100755 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/HomogeneousLayerMaterial.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/HomogeneousLayerMaterial.h @@ -1,111 +1,120 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// HomogeneousLayerMaterial.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - -#ifndef TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H -#define TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H - -// Amg -#include "GeoPrimitives/GeoPrimitives.h" -//Trk -#include "TrkGeometry/LayerMaterialProperties.h" -#include "TrkGeometry/MaterialProperties.h" -//Gaudi -#include "GaudiKernel/MsgStream.h" -//STD -#include <vector> - -class HomogeneousLayerMaterialCnv_p1; - -namespace Trk { - - - class BinUtility; - /** - @class HomogeneousLayerMaterial - - It extends the LayerMaterialProperties base class - - This class encapsulates the logics to build pre/post/full update material - for Layer structures, it hosts 5 different MaterialProperties in the following order: - - - fullUpdate (crossing full Layer in both directions) - - alongPreUpdate (passing material to sensitive part in direction of the normal vector) - - alongPostUpdate (passing material after sensitive part in direction of the normal vector) - - oppositePreUpdate (passing material to sensitive part in opposite direction to the normal vector) - - poopsitePostUpdate (passing material after sensitive part in opposite direction to the normal vector) - - This is handeled by a full Lauyer information and a split factor - - - @author Andreas.Salzburger@cern.ch - */ - - class HomogeneousLayerMaterial : public LayerMaterialProperties { - - public: - /** Default Constructor - creates empty HomogeneousLayerMaterial */ - HomogeneousLayerMaterial(); - - /**Explizit constructor with only full MaterialProperties, - alongPre and oppositePre, alongPre and oppositePost are obviously swapped*/ - HomogeneousLayerMaterial(const MaterialProperties& full, double splitFactor); - - /**Copy Constructor */ - HomogeneousLayerMaterial(const HomogeneousLayerMaterial& mprop); - - /**Destructor*/ - virtual ~HomogeneousLayerMaterial(); - - /**Pseudo-Constructor clone()*/ - HomogeneousLayerMaterial* clone() const override; - - /** Assignment operator */ - HomogeneousLayerMaterial& operator=(const HomogeneousLayerMaterial& lmp); - - /** Scale operator */ - virtual HomogeneousLayerMaterial& operator*=(double scale) override; - - /**Return method for full material description of the Layer */ - virtual const MaterialProperties* fullMaterial(const Amg::Vector3D& gp) const override; - - /**Direct access via bins to the MaterialProperties */ - virtual const MaterialProperties* material(size_t ib0, size_t ib1) const override; - - /** Return the BinUtility */ - const BinUtility* binUtility() const override { return 0; } - - /** Update the BinUtility if necessary - passing ownership of the utility class*/ - virtual void updateBinning(BinUtility*) const override { } - - /** Output Method for MsgStream, to be overloaded by child classes */ - MsgStream& dump(MsgStream& sl) const override; - /** Output Method for std::ostream, to be overloaded by child classes */ - std::ostream& dump(std::ostream& sl) const override; - - private: - friend class ::HomogeneousLayerMaterialCnv_p1; - - /** The five different MaterialProperties */ - MaterialProperties* m_fullMaterial; - - }; - -inline HomogeneousLayerMaterial* HomogeneousLayerMaterial::clone() const - { return new HomogeneousLayerMaterial(*this); } - -inline const MaterialProperties* HomogeneousLayerMaterial::fullMaterial(const Amg::Vector3D&) const - { return m_fullMaterial; } - -inline const MaterialProperties* HomogeneousLayerMaterial::material(size_t, size_t) const - { return m_fullMaterial; } - -} // end of namespace - -#endif - - +/////////////////////////////////////////////////////////////////// +// HomogeneousLayerMaterial.h, (c) ATLAS Detector software +/////////////////////////////////////////////////////////////////// + +#ifndef TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H +#define TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H + +// Amg +#include "GeoPrimitives/GeoPrimitives.h" +// Trk +#include "TrkGeometry/LayerMaterialProperties.h" +#include "TrkGeometry/MaterialProperties.h" +// Gaudi +#include "GaudiKernel/MsgStream.h" +// STD +#include <vector> + +#include <memory> + +class HomogeneousLayerMaterialCnv_p1; + +namespace Trk { + + + class BinUtility; + /** + @class HomogeneousLayerMaterial + + It extends the LayerMaterialProperties base class. + + This class encapsulates the logic to build pre/post/full update material + for Layer structures, it hosts 5 different MaterialProperties in the following order: + + - fullUpdate (crossing full Layer in both directions) + - alongPreUpdate (passing material to sensitive part in the direction of the normal vector) + - alongPostUpdate (passing material after sensitive part in the direction of the normal vector) + - oppositePreUpdate (passing material to sensitive part in the opposite direction to the normal vector) + - oppositePostUpdate (passing material after sensitive part in the opposite direction to the normal vector) + + This is handled by a full Layer information and a split factor. + + + @author Andreas.Salzburger@cern.ch + */ + + class HomogeneousLayerMaterial : public LayerMaterialProperties { + + public: + /** Default Constructor - creates empty HomogeneousLayerMaterial */ + HomogeneousLayerMaterial(); + + /**Explicit constructor with only full MaterialProperties. + alongPre and oppositePre, alongPre and oppositePost are obviously swapped*/ + HomogeneousLayerMaterial(const MaterialProperties& full, double splitFactor); + + /**Copy Constructor */ + HomogeneousLayerMaterial(const HomogeneousLayerMaterial& mprop); + + /**Destructor*/ + virtual ~HomogeneousLayerMaterial(); + + /**Pseudo-Constructor clone()*/ + HomogeneousLayerMaterial* clone() const override; + + /** Assignment operator */ + HomogeneousLayerMaterial& operator=(const HomogeneousLayerMaterial& lmp); + + /** Default move constructor */ + HomogeneousLayerMaterial(Trk::HomogeneousLayerMaterial&& lmp) = default; + + /** Default move assignment operator */ + HomogeneousLayerMaterial& operator=(Trk::HomogeneousLayerMaterial&& lmp) = default; + + /** Scale operator */ + virtual HomogeneousLayerMaterial& operator*=(double scale) override; + + /**Return method for full material description of the Layer */ + virtual const MaterialProperties* fullMaterial(const Amg::Vector3D& gp) const override; + + /**Direct access via bins to the MaterialProperties */ + virtual const MaterialProperties* material(size_t ib0, size_t ib1) const override; + + /** Return the BinUtility */ + const BinUtility* binUtility() const override { return 0; } + + /** Update the BinUtility if necessary - passing ownership of the utility class*/ + virtual void updateBinning(BinUtility*) const override { } + + /** Output Method for MsgStream, to be overloaded by child classes */ + MsgStream& dump(MsgStream& sl) const override; + /** Output Method for std::ostream, to be overloaded by child classes */ + std::ostream& dump(std::ostream& sl) const override; + + private: + friend class ::HomogeneousLayerMaterialCnv_p1; + + /** The five different MaterialProperties */ + std::unique_ptr<MaterialProperties> m_fullMaterial; + + }; + + +inline HomogeneousLayerMaterial* HomogeneousLayerMaterial::clone() const + { return new HomogeneousLayerMaterial(*this); } + +inline const MaterialProperties* HomogeneousLayerMaterial::fullMaterial(const Amg::Vector3D&) const + { return m_fullMaterial.get(); } + +inline const MaterialProperties* HomogeneousLayerMaterial::material(size_t, size_t) const + { return m_fullMaterial.get(); } + +} // end of namespace + +#endif + + diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h index af802dc41fa..98a059a7906 100755 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h @@ -118,7 +118,14 @@ namespace Trk { /** Output Method for std::ostream, to be overloaded by child classes */ virtual std::ostream& dump(std::ostream& sl) const = 0; - + + /** Default move constructor for the base class */ + LayerMaterialProperties(Trk::LayerMaterialProperties&& lmp) = default; + + /** Default move assignment operator for the base class */ + LayerMaterialProperties& operator=(Trk::LayerMaterialProperties&& lmp) = default; + + protected : friend class ::BinnedLayerMaterialCnv_p1; double m_splitFactor; //!< the split factor in favour of oppositePre diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/HomogeneousLayerMaterial.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/HomogeneousLayerMaterial.cxx index e135fb7de74..ef521e7d52e 100755 --- a/Tracking/TrkDetDescr/TrkGeometry/src/HomogeneousLayerMaterial.cxx +++ b/Tracking/TrkDetDescr/TrkGeometry/src/HomogeneousLayerMaterial.cxx @@ -1,74 +1,70 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// HomogeneousLayerMaterial.cxx, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - -#include "TrkGeometry/HomogeneousLayerMaterial.h" -#include "TrkGeometry/MaterialProperties.h" - -Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial() : - Trk::LayerMaterialProperties(), - m_fullMaterial(0) -{} - -Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial( const Trk::MaterialProperties& full, - double splitFactor) : - Trk::LayerMaterialProperties(splitFactor), - m_fullMaterial(full.clone()) -{} - -Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial(const Trk::HomogeneousLayerMaterial& lmp) : - LayerMaterialProperties(lmp.m_splitFactor), - m_fullMaterial(lmp.m_fullMaterial ? lmp.m_fullMaterial->clone() : 0) -{} - -Trk::HomogeneousLayerMaterial::~HomogeneousLayerMaterial() -{ - delete m_fullMaterial; -} - - -Trk::HomogeneousLayerMaterial& Trk::HomogeneousLayerMaterial::operator=(const Trk::HomogeneousLayerMaterial& lmp) -{ - if (this!=&lmp) { - // first delete everything - delete m_fullMaterial; - // now refill evertything - m_fullMaterial = lmp.m_fullMaterial ? lmp.m_fullMaterial->clone() : 0; - Trk::LayerMaterialProperties::m_splitFactor = lmp.m_splitFactor; - } - return (*this); -} - -Trk::HomogeneousLayerMaterial& Trk::HomogeneousLayerMaterial::operator*=(double scale) -{ - // scale the sub properties - if (m_fullMaterial) - (*m_fullMaterial) *= scale; - - return (*this); -} - -MsgStream& Trk::HomogeneousLayerMaterial::dump( MsgStream& sl) const -{ - sl << "Trk::HomogeneousLayerMaterial : " << std::endl; - if (m_fullMaterial) { - sl << " - fullMaterial : " << *m_fullMaterial << std::endl; - } - sl << " - split factor : " << m_splitFactor << std::endl; - - return sl; -} - -std::ostream& Trk::HomogeneousLayerMaterial::dump( std::ostream& sl) const -{ - sl << "Trk::HomogeneousLayerMaterial : " << std::endl; - if (m_fullMaterial) { - sl << " - fullMaterial : " << *m_fullMaterial << std::endl; - } - sl << " - split factor : " << m_splitFactor << std::endl; - return sl; -} +/////////////////////////////////////////////////////////////////// +// HomogeneousLayerMaterial.cxx, (c) ATLAS Detector software +/////////////////////////////////////////////////////////////////// + +#include "TrkGeometry/HomogeneousLayerMaterial.h" +#include "TrkGeometry/MaterialProperties.h" + +Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial() : + Trk::LayerMaterialProperties(), + m_fullMaterial(nullptr) +{} + +Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial( const Trk::MaterialProperties& full, + double splitFactor) : + Trk::LayerMaterialProperties(splitFactor), + m_fullMaterial(full.clone()) +{} + +Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial(const Trk::HomogeneousLayerMaterial& lmp) : + LayerMaterialProperties(lmp.m_splitFactor), + m_fullMaterial(lmp.m_fullMaterial ? lmp.m_fullMaterial->clone() : 0) +{} + +Trk::HomogeneousLayerMaterial::~HomogeneousLayerMaterial() +{} + + +Trk::HomogeneousLayerMaterial& Trk::HomogeneousLayerMaterial::operator=(const Trk::HomogeneousLayerMaterial& lmp) +{ + if (this!=&lmp) { + // now refill everything + m_fullMaterial.reset( lmp.m_fullMaterial ? lmp.m_fullMaterial->clone() : nullptr); + Trk::LayerMaterialProperties::m_splitFactor = lmp.m_splitFactor; + } + return (*this); +} + +Trk::HomogeneousLayerMaterial& Trk::HomogeneousLayerMaterial::operator*=(double scale) +{ + // scale the sub-properties + if (m_fullMaterial) + (*m_fullMaterial) *= scale; + + return (*this); +} + +MsgStream& Trk::HomogeneousLayerMaterial::dump( MsgStream& sl) const +{ + sl << "Trk::HomogeneousLayerMaterial : " << std::endl; + if (m_fullMaterial) { + sl << " - fullMaterial : " << *m_fullMaterial << std::endl; + } + sl << " - split factor : " << m_splitFactor << std::endl; + + return sl; +} + +std::ostream& Trk::HomogeneousLayerMaterial::dump( std::ostream& sl) const +{ + sl << "Trk::HomogeneousLayerMaterial : " << std::endl; + if (m_fullMaterial) { + sl << " - fullMaterial : " << *m_fullMaterial << std::endl; + } + sl << " - split factor : " << m_splitFactor << std::endl; + return sl; +} -- GitLab From 9dd7d9311ea9569378ec6722aea70620ef6fab41 Mon Sep 17 00:00:00 2001 From: Jyoti Prakash Biswal <jyoti.prakash.biswal@cern.ch> Date: Thu, 15 Nov 2018 16:47:20 +0100 Subject: [PATCH 005/135] Missing move assignment operator -- fixed! New commit. Coverity issue# 113579 Former-commit-id: 967281975211ebc68a0575da2b74037c4771fa04 --- .../TrkGeometry/TrkGeometry/LayerMaterialProperties.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h index 98a059a7906..47bd46aac5e 100755 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h @@ -119,12 +119,6 @@ namespace Trk { /** Output Method for std::ostream, to be overloaded by child classes */ virtual std::ostream& dump(std::ostream& sl) const = 0; - /** Default move constructor for the base class */ - LayerMaterialProperties(Trk::LayerMaterialProperties&& lmp) = default; - - /** Default move assignment operator for the base class */ - LayerMaterialProperties& operator=(Trk::LayerMaterialProperties&& lmp) = default; - protected : friend class ::BinnedLayerMaterialCnv_p1; -- GitLab From 422255239abbe699ff3cbc78b9ebb270b48eeebb Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Thu, 15 Nov 2018 20:44:41 +0100 Subject: [PATCH 006/135] MDT cabling Svc MT migration in MdtTestCabling (1) Former-commit-id: d52b480df0ef01080ab12b09e33e36ce9569f68a --- .../MuonCablingData/MdtMapBase.h | 2 +- .../MuonCablingData/MuonMDT_CablingMap.h | 2 +- .../src/MuonMDT_CablingMap.cxx | 4 +-- .../MuonMDT_Cabling/MdtTestCabling.h | 5 ++++ .../MuonMDT_Cabling/src/MdtTestCabling.cxx | 27 ++++++++++++++----- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h index c6d4a92288c..de5eb24d349 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h @@ -43,7 +43,7 @@ template<class T> class MdtMapBase void clear(); /** get full map (used for testing) */ - MapOfItems* getListOfElements() {return m_mapOfItems;} + MapOfItems* getListOfElements() const {return m_mapOfItems;} protected: diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h index f2e7694f0b7..bd0f59a3701 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h @@ -78,7 +78,7 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> { const std::vector<IdentifierHash>& getChamberHashVec(const uint32_t ROBId) const; /** return the ROD id of a given chamber */ - std::vector<uint32_t> getAllROBId(); + std::vector<uint32_t> getAllROBId() const; /** return the offline id given the online id */ bool getOfflineId(uint8_t subdetectorId,uint8_t rodId,uint8_t csmId, diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx index 33fcc6ded7b..77304b7b2af 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx @@ -457,7 +457,7 @@ const std::vector<IdentifierHash> MuonMDT_CablingMap::getChamberHashVec(const st * get the full list of ROBid * */ -std::vector<uint32_t> MuonMDT_CablingMap::getAllROBId() +std::vector<uint32_t> MuonMDT_CablingMap::getAllROBId() const { return *m_listOfROD; } @@ -475,7 +475,7 @@ bool MuonMDT_CablingMap::getOfflineId(uint8_t subdetectorId, uint8_t tdcId, uint8_t channelId, int& stationName, int& stationEta, int& stationPhi, - int& multiLayer, int& layer, int& tube) + int& multiLayer, int& layer, int& tube) { // get the subdetector diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h index d2ba316b812..62d24c2bcdd 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h @@ -24,6 +24,9 @@ // old cabling service //#include "MDTcabling/IMDTcablingSvc.h" +#include "MuonCablingData/MuonMDT_CablingMap.h" +#include "StoreGate/ReadCondHandleKey.h" + class MdtTestCabling : public AthAlgorithm { @@ -57,6 +60,8 @@ class MdtTestCabling : public AthAlgorithm { std::string m_chrono3; std::string m_chrono4; + SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; + }; diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx index 924c6d7a1e6..4bcb9ebbd57 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx @@ -3,8 +3,7 @@ */ #include "MuonMDT_Cabling/MdtTestCabling.h" - -#include "MuonCablingData/MuonMDT_CablingMap.h" +//#include "MuonCablingData/MuonMDT_CablingMap.h" #include "StoreGate/StoreGateSvc.h" #include "StoreGate/DataHandle.h" @@ -34,6 +33,8 @@ StatusCode MdtTestCabling::initialize() m_chrono2 = "oldcab"; m_chrono3 = "OfflineToOnline"; + ATH_CHECK( m_readKey.initialize() ); + return StatusCode::SUCCESS; } @@ -64,8 +65,16 @@ StatusCode MdtTestCabling::finalize() bool MdtTestCabling::testMap() { + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==0){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return false; + } + // print the list of ROBids - std::vector<uint32_t> robVector = m_cablingSvc->getAllROBId(); + //std::vector<uint32_t> robVector = m_cablingSvc->getAllROBId(); + std::vector<uint32_t> robVector = readCdo->getAllROBId(); std::cout << "============================= List of ROBids:" << std::endl; for (unsigned int i=0 ; i<robVector.size() ; ++i) { std::cout << std::hex << robVector[i] << std::dec << std::endl; @@ -76,7 +85,7 @@ bool MdtTestCabling::testMap() // if (m_debug) { ATH_MSG_DEBUG( "in testMap()" ); //} - DataHandle<MuonMDT_CablingMap> cablingMap = m_cablingSvc->getCablingMap(); + //DataHandle<MuonMDT_CablingMap> cablingMap = m_cablingSvc->getCablingMap(); //if (m_debug) { ATH_MSG_DEBUG( "retrieved the map from the service" ); //} @@ -93,7 +102,8 @@ bool MdtTestCabling::testMap() std::map<uint8_t, MdtAmtMap*, std::less<uint8_t> >* listOfAmt; std::map<uint8_t, MdtAmtMap*, std::less<uint8_t> >::const_iterator it_amt; - listOfSubdet = cablingMap->getListOfElements(); + //listOfSubdet = cablingMap->getListOfElements(); + listOfSubdet = readCdo->getListOfElements(); // if (m_debug) { ATH_MSG_DEBUG( "Got the list of subdetectors" ); @@ -147,7 +157,12 @@ bool MdtTestCabling::testMap() amtId,chanId, station,eta,phi,multi, layer,tube); - + /* + bool cabling = readCdo->getOfflineId(subdetectorId,rodId,csmId, + amtId,chanId, + station,eta,phi,multi, + layer,tube); + */ m_chronoSvc->chronoStop(m_chrono1); if (!cabling) { -- GitLab From 64b0e415092aab973383ddb34b5d14cbff68775f Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Thu, 15 Nov 2018 21:45:42 +0100 Subject: [PATCH 007/135] removing m_currentItem from MdtMapBase to make Map functions const Former-commit-id: 6962af71703650a294c38a5df348a3205ee2656c --- .../MuonCablingData/MdtMapBase.h | 32 +++++++++++-------- .../MuonCablingData/MuonMDT_CablingMap.h | 4 +-- .../src/MuonMDT_CablingMap.cxx | 4 +-- .../MuonMDT_Cabling/src/MdtTestCabling.cxx | 6 ++-- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h index de5eb24d349..cce06952d5d 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h @@ -57,7 +57,7 @@ template<class T> class MdtMapBase bool addItem(uint8_t itemId, T* item); /** get function - fast, used for online->offline conversion */ - T* getItem(uint8_t itemId); + T* getItem(uint8_t itemId) const; private: @@ -65,21 +65,21 @@ template<class T> class MdtMapBase const std::string m_itemName; /** pointer to the current item */ - T* m_currentItem; + //T* m_currentItem; /** map containing the items */ MapOfItems* m_mapOfItems; /** private access function */ - T* findItem(uint8_t itemId); + T* findItem(uint8_t itemId) const; }; /** default constructor */ template<class T> MdtMapBase<T>::MdtMapBase(uint8_t moduleId, const std::string itemName) : - m_moduleId(moduleId), m_itemName(itemName), m_currentItem(NULL) - +m_moduleId(moduleId), m_itemName(itemName)//, m_currentItem(NULL) + { // m_mapOfItems = new std::map< uint8_t, T*, std::less<uint8_t> >(); m_mapOfItems = new MapOfItems(); @@ -124,7 +124,7 @@ template<class T> void MdtMapBase<T>::clear() } m_mapOfItems->clear(); - m_currentItem=NULL; + //m_currentItem=NULL; } /** Add an item to the map */ @@ -160,8 +160,8 @@ template<class T> bool MdtMapBase<T>::addItem(uint8_t itemId, T* item) { /** return the item for a given access key (onlineId) */ -template<class T> T* MdtMapBase<T>::getItem(uint8_t itemId) { - +template<class T> T* MdtMapBase<T>::getItem(uint8_t itemId) const{ + /* if ( m_currentItem ) { if ( itemId == m_currentItem->moduleId() ) { return m_currentItem; @@ -173,15 +173,16 @@ template<class T> T* MdtMapBase<T>::getItem(uint8_t itemId) { else { return findItem(itemId); } - + */ + return findItem(itemId); } /** find the item in the datamember map */ -template<class T> T* MdtMapBase<T>::findItem(uint8_t itemId) { +template<class T> T* MdtMapBase<T>::findItem(uint8_t itemId) const{ typename MapOfItems::const_iterator it = m_mapOfItems->find(itemId); - + /* if (it!=m_mapOfItems->end()) { m_currentItem = (*it).second; } @@ -189,9 +190,14 @@ template<class T> T* MdtMapBase<T>::findItem(uint8_t itemId) { // *m_log << MSG::ERROR << m_itemName << " with Id: " << MSG::hex << itemId // << MSG::dec << " not found " << endmsg; m_currentItem=NULL; - } - + } return m_currentItem; + */ + if (it!=m_mapOfItems->end()) { + return (*it).second; + } else { + return NULL; + } } diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h index bd0f59a3701..1c8e34e58bf 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h @@ -63,7 +63,7 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> { int tdcId, int channelZero); /** Get function */ - MdtSubdetectorMap* getSubdetectorMap(uint8_t subdetectorId); + MdtSubdetectorMap* getSubdetectorMap(uint8_t subdetectorId) const; /** return the ROD id of a given chamber, given station, eta, phi */ uint32_t getROBId(int station, int eta, int phi); @@ -84,7 +84,7 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> { bool getOfflineId(uint8_t subdetectorId,uint8_t rodId,uint8_t csmId, uint8_t tdcId,uint8_t channelId, int& stationName, int& stationEta, int& stationPhi, - int& multiLayer, int& layer, int& tube); + int& multiLayer, int& layer, int& tube) const; /** return the online id given the offline id */ bool getOnlineId(int stationName, int stationEta, int stationPhi, diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx index 77304b7b2af..7765b16154f 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx @@ -299,7 +299,7 @@ bool MuonMDT_CablingMap::addMezzanine( int mezType, int station, int eta, int ph -MdtSubdetectorMap* MuonMDT_CablingMap::getSubdetectorMap(uint8_t subdetectorId) { +MdtSubdetectorMap* MuonMDT_CablingMap::getSubdetectorMap(uint8_t subdetectorId) const{ return getItem(subdetectorId); } @@ -475,7 +475,7 @@ bool MuonMDT_CablingMap::getOfflineId(uint8_t subdetectorId, uint8_t tdcId, uint8_t channelId, int& stationName, int& stationEta, int& stationPhi, - int& multiLayer, int& layer, int& tube) + int& multiLayer, int& layer, int& tube) const { // get the subdetector diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx index 4bcb9ebbd57..f2f37b26e61 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx @@ -152,17 +152,17 @@ bool MdtTestCabling::testMap() int tube=0; m_chronoSvc->chronoStart(m_chrono1); - + /* bool cabling = m_cablingSvc->getOfflineId(subdetectorId,rodId,csmId, amtId,chanId, station,eta,phi,multi, layer,tube); - /* + */ bool cabling = readCdo->getOfflineId(subdetectorId,rodId,csmId, amtId,chanId, station,eta,phi,multi, layer,tube); - */ + m_chronoSvc->chronoStop(m_chrono1); if (!cabling) { -- GitLab From 83f4da1c12ae59bbb8d7dba67cce4089019aa52a Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Thu, 15 Nov 2018 22:09:52 +0100 Subject: [PATCH 008/135] trying to run the MdtTestCabling_jobOptions.py Former-commit-id: ae1e29f3283cb083fb538a3da5890cb5b9ed95ff --- MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt | 1 + .../MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt index 2957a3b18d3..ebe056c4f8f 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt @@ -37,3 +37,4 @@ atlas_add_component( MuonMDT_Cabling # Install files from the package: atlas_install_python_modules( python/*.py ) +atlas_install_joboptions( share/*.py ) diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py index e913e0e09a6..56524df49c8 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py @@ -11,7 +11,7 @@ from MuonByteStream.MuonByteStreamFlags import muonByteStreamFlags muonByteStreamFlags.MdtDataType = "atlas" #initialize correctly the old cabling service -from MDTcabling.MDTcablingConfig import * +#from MDTcabling.MDTcablingConfig import * topSequence=AlgSequence() -- GitLab From 99bb709f5efe221ff083375414d61dcea950acce Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Fri, 16 Nov 2018 20:55:09 +0100 Subject: [PATCH 009/135] Update packages:L1Common L1CommonCore TrigT1BCM TrigT1CTMonitoring TrigT1CTP TrigT1EventAthenaPool TrigT1EventTPCnv TrigT1Interfaces TrigT1Lucid TrigT1MBTS TrigT1Monitoring TrigT1Muctpi TrigT1Result TrigT1ResultByteStream TrigT1RoIB TrigT1RPChardware TrigT1RPClogic TrigT1RPCRecRoiSvc TrigT1RPCsteering TrigT1TGC TrigT1TGCRecRoiSvc TrigT1TRT TrigT1ZDC l1 from upstream/21.0-TrigMC to upstream/master via pseudo-merge Former-commit-id: bd5ffe6c393f03fc4e83b9d2536f02da805bd3c5 --- .../L1Common/schema/L1Specifications.xml | 2 +- .../TrigT1EventTPCnv/CMMCPHitsCnv_p1.h | 12 +- .../CMMCPHitsCollectionCnv_p1.h | 3 + .../CMMCPHitsCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CMMCPHitsCollection_p1.h | 3 + .../CMMCPHitsCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CMMCPHits_p1.h | 12 +- .../TrigT1EventTPCnv/CMMEtSumsCnv_p1.h | 12 +- .../CMMEtSumsCollectionCnv_p1.h | 3 + .../CMMEtSumsCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CMMEtSumsCollection_p1.h | 3 + .../CMMEtSumsCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CMMEtSums_p1.h | 12 +- .../TrigT1EventTPCnv/CMMJetHitsCnv_p1.h | 12 +- .../CMMJetHitsCollectionCnv_p1.h | 3 + .../CMMJetHitsCollectionCnv_tlp1.h | 3 + .../CMMJetHitsCollection_p1.h | 3 + .../CMMJetHitsCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CMMJetHits_p1.h | 12 +- .../TrigT1EventTPCnv/CMMRoICnv_p1.h | 12 +- .../TrigT1EventTPCnv/CMMRoI_p1.h | 12 +- .../TrigT1EventTPCnv/CMXCPHitsCnv_p1.h | 12 +- .../CMXCPHitsCollectionCnv_p1.h | 3 + .../CMXCPHitsCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CMXCPHitsCollection_p1.h | 3 + .../CMXCPHitsCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CMXCPHits_p1.h | 12 +- .../TrigT1EventTPCnv/CMXCPTobCnv_p1.h | 12 +- .../CMXCPTobCollectionCnv_p1.h | 3 + .../CMXCPTobCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CMXCPTobCollection_p1.h | 3 + .../CMXCPTobCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CMXCPTob_p1.h | 12 +- .../TrigT1EventTPCnv/CMXEtSumsCnv_p1.h | 11 +- .../CMXEtSumsCollectionCnv_p1.h | 3 + .../CMXEtSumsCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CMXEtSumsCollection_p1.h | 3 + .../CMXEtSumsCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CMXEtSums_p1.h | 11 +- .../TrigT1EventTPCnv/CMXJetHitsCnv_p1.h | 11 +- .../CMXJetHitsCollectionCnv_p1.h | 3 + .../CMXJetHitsCollectionCnv_tlp1.h | 3 + .../CMXJetHitsCollection_p1.h | 3 + .../CMXJetHitsCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CMXJetHits_p1.h | 11 +- .../TrigT1EventTPCnv/CMXJetTobCnv_p1.h | 11 +- .../CMXJetTobCollectionCnv_p1.h | 3 + .../CMXJetTobCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CMXJetTobCollection_p1.h | 3 + .../CMXJetTobCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CMXJetTob_p1.h | 11 +- .../TrigT1EventTPCnv/CMXRoICnv_p1.h | 11 +- .../TrigT1EventTPCnv/CMXRoI_p1.h | 11 +- .../TrigT1EventTPCnv/CPMHitsCnv_p1.h | 12 +- .../CPMHitsCollectionCnv_p1.h | 3 + .../CPMHitsCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CPMHitsCollection_p1.h | 3 + .../TrigT1EventTPCnv/CPMHitsCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CPMHits_p1.h | 12 +- .../TrigT1EventTPCnv/CPMRoICnv_p1.h | 12 +- .../TrigT1EventTPCnv/CPMRoICollectionCnv_p1.h | 3 + .../CPMRoICollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CPMRoICollection_p1.h | 3 + .../TrigT1EventTPCnv/CPMRoICollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CPMRoI_p1.h | 12 +- .../TrigT1EventTPCnv/CPMTobRoICnv_p1.h | 12 +- .../CPMTobRoICollectionCnv_p1.h | 3 + .../CPMTobRoICollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CPMTobRoICollection_p1.h | 3 + .../CPMTobRoICollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CPMTobRoI_p1.h | 12 +- .../TrigT1EventTPCnv/CPMTowerCnv_p1.h | 3 + .../CPMTowerCollectionCnv_p1.h | 3 + .../CPMTowerCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/CPMTowerCollection_p1.h | 3 + .../CPMTowerCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/CPMTower_p1.h | 12 +- .../TrigT1EventTPCnv/CTP_RDOCnv_p1.h | 3 + .../TrigT1EventTPCnv/CTP_RDOCnv_p2.h | 3 + .../TrigT1EventTPCnv/CTP_RDO_p1.h | 3 + .../TrigT1EventTPCnv/CTP_RDO_p2.h | 3 + .../TrigT1EventTPCnv/JEMEtSumsCnv_p1.h | 12 +- .../JEMEtSumsCollectionCnv_p1.h | 3 + .../JEMEtSumsCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/JEMEtSumsCollection_p1.h | 3 + .../JEMEtSumsCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/JEMEtSums_p1.h | 12 +- .../TrigT1EventTPCnv/JEMHitsCnv_p1.h | 12 +- .../JEMHitsCollectionCnv_p1.h | 3 + .../JEMHitsCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/JEMHitsCollection_p1.h | 3 + .../TrigT1EventTPCnv/JEMHitsCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/JEMHits_p1.h | 12 +- .../TrigT1EventTPCnv/JEMRoICnv_p1.h | 12 +- .../TrigT1EventTPCnv/JEMRoICollectionCnv_p1.h | 3 + .../JEMRoICollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/JEMRoICollection_p1.h | 3 + .../TrigT1EventTPCnv/JEMRoICollection_tlp1.h | 3 + .../TrigT1EventTPCnv/JEMRoI_p1.h | 12 +- .../TrigT1EventTPCnv/JEMTobRoICnv_p1.h | 11 +- .../JEMTobRoICollectionCnv_p1.h | 3 + .../JEMTobRoICollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/JEMTobRoICollection_p1.h | 3 + .../JEMTobRoICollection_tlp1.h | 3 + .../TrigT1EventTPCnv/JEMTobRoI_p1.h | 11 +- .../TrigT1EventTPCnv/JetElementCnv_p1.h | 3 + .../JetElementCollectionCnv_p1.h | 3 + .../JetElementCollectionCnv_tlp1.h | 3 + .../JetElementCollection_p1.h | 3 + .../JetElementCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/JetElement_p1.h | 12 +- .../TrigT1EventTPCnv/MuCTPI_RDOCnv_p1.h | 3 + .../TrigT1EventTPCnv/MuCTPI_RDO_p1.h | 3 + .../TrigT1EventTPCnv/RODHeaderCnv_p1.h | 3 + .../RODHeaderCollectionCnv_p1.h | 3 + .../RODHeaderCollectionCnv_tlp1.h | 3 + .../TrigT1EventTPCnv/RODHeaderCollection_p1.h | 3 + .../RODHeaderCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/RODHeader_p1.h | 12 +- .../TrigT1EventTPCnv/RoIBResultCnv_p1.h | 3 + .../TrigT1EventTPCnv/RoIBResult_p1.h | 3 + .../TrigT1EventTPCnv/SubSysResult_p1.h | 3 + .../TrigT1EventTPCnv/TrigT1EventTPCnvDict.h | 3 + .../TrigT1EventTPCnv/TriggerTowerCnv_p1.h | 3 + .../TriggerTowerCollectionCnv_p1.h | 3 + .../TriggerTowerCollectionCnv_tlp1.h | 3 + .../TriggerTowerCollection_p1.h | 3 + .../TriggerTowerCollection_tlp1.h | 3 + .../TrigT1EventTPCnv/TriggerTower_p1.h | 12 +- .../TrigT1Interfaces/BcmCTP.h | 3 + .../TrigT1Interfaces/TrigT1Interfaces/BitOp.h | 3 + .../TrigT1Interfaces/BptxCTP.h | 3 + .../TrigT1Interfaces/CPRoIDecoder.h | 12 +- .../TrigT1Interfaces/CTPSLink.h | 3 + .../TrigT1Interfaces/Coordinate.h | 12 +- .../TrigT1Interfaces/CoordinateRange.h | 12 +- .../TrigT1Interfaces/EmTauCTP.h | 12 +- .../TrigT1Interfaces/EnergyCTP.h | 13 +- .../TrigT1Interfaces/FrontPanelCTP.h | 3 + .../TrigT1Interfaces/IMuctpiSimTool.h | 5 +- .../TrigT1Interfaces/JEPRoIDecoder.h | 13 +- .../TrigT1Interfaces/JetCTP.h | 13 +- .../TrigT1Interfaces/JetEtRoIDecoder.h | 13 +- .../TrigT1Interfaces/L1METvalue.h | 13 +- .../TrigT1Interfaces/LucidCTP.h | 3 + .../Lvl1MuBarrelSectorLogicData.h | 3 + .../TrigT1Interfaces/Lvl1MuCTPIInput.h | 3 + .../Lvl1MuEndcapSectorLogicData.h | 3 + .../Lvl1MuForwardSectorLogicData.h | 3 + .../TrigT1Interfaces/Lvl1MuSectorLogicData.h | 3 + .../TrigT1Interfaces/MbtsCTP.h | 3 + .../TrigT1Interfaces/MuCTPICTP.h | 3 + .../TrigT1Interfaces/MuCTPIL1Topo.h | 3 + .../TrigT1Interfaces/MuCTPIL1TopoCandidate.h | 3 + .../TrigT1Interfaces/MuCTPIToRoIBSLink.h | 3 + .../TrigT1Interfaces/NimCTP.h | 13 +- .../TrigT1Interfaces/PhiRange.h | 13 +- .../TrigT1Interfaces/TrigT1Interfaces/Range.h | 13 +- .../TrigT1Interfaces/RecEmTauRoI.h | 12 +- .../TrigT1Interfaces/RecEnergyRoI.h | 13 +- .../TrigT1Interfaces/RecJetEtRoI.h | 13 +- .../TrigT1Interfaces/RecJetRoI.h | 13 +- .../TrigT1Interfaces/RecMuonRoI.h | 13 +- .../TrigT1Interfaces/RecMuonRoiSvc.h | 3 + .../TrigT1Interfaces/RecRoI.h | 13 +- .../TrigT1Interfaces/RoIDecoder.h | 13 +- .../TrigT1Interfaces/RoIFormatUpdater.h | 3 + .../TrigT1Interfaces/SlinkWord.h | 3 + .../TrigT1Interfaces/TMConst.h | 3 + .../TrigT1Interfaces/TMUtil.h | 3 + .../TrigT1Interfaces/TrigT1CTPDefs.h | 3 + .../TrigT1Interfaces/TrigT1CaloDefs.h | 3 + .../TrigT1Interfaces/TrigT1InterfacesDict.h | 3 + .../TrigT1Interfaces_ClassDEF.h | 3 + .../TrigT1Interfaces/TrigT1StoreGateKeys.h | 3 + .../TrigT1Interfaces/TriggerTypeWord.h | 3 + .../TrigT1Interfaces/TrtCTP.h | 3 + .../TrigT1Interfaces/ZdcCTP.h | 3 + .../TrigT1Interfaces/iRecCoordRoI.h | 13 +- .../TrigT1/TrigT1Interfaces/src/BcmCTP.cxx | 3 + Trigger/TrigT1/TrigT1Interfaces/src/BitOp.cxx | 3 + .../TrigT1/TrigT1Interfaces/src/BptxCTP.cxx | 3 + .../TrigT1Interfaces/src/CPRoIDecoder.cxx | 13 +- .../TrigT1/TrigT1Interfaces/src/CTPSLink.cxx | 3 + .../TrigT1Interfaces/src/Coordinate.cxx | 4 +- .../TrigT1Interfaces/src/CoordinateRange.cxx | 4 +- .../TrigT1/TrigT1Interfaces/src/EmTauCTP.cxx | 12 +- .../TrigT1/TrigT1Interfaces/src/EnergyCTP.cxx | 13 +- .../TrigT1Interfaces/src/FrontPanelCTP.cxx | 3 + .../TrigT1Interfaces/src/JEPRoIDecoder.cxx | 12 +- .../TrigT1/TrigT1Interfaces/src/JetCTP.cxx | 12 +- .../TrigT1Interfaces/src/JetEtRoIDecoder.cxx | 12 +- .../TrigT1Interfaces/src/L1METvalue.cxx | 12 +- .../TrigT1/TrigT1Interfaces/src/LucidCTP.cxx | 3 + .../src/Lvl1MuBarrelSectorLogicData.cxx | 3 + .../TrigT1Interfaces/src/Lvl1MuCTPIInput.cxx | 3 + .../src/Lvl1MuEndcapSectorLogicData.cxx | 3 + .../src/Lvl1MuForwardSectorLogicData.cxx | 3 + .../src/Lvl1MuSectorLogicData.cxx | 3 + .../TrigT1/TrigT1Interfaces/src/MbtsCTP.cxx | 3 + .../TrigT1/TrigT1Interfaces/src/MuCTPICTP.cxx | 3 + .../TrigT1Interfaces/src/MuCTPIL1Topo.cxx | 3 + .../src/MuCTPIL1TopoCandidate.cxx | 3 + .../src/MuCTPIToRoIBSLink.cxx | 3 + .../TrigT1/TrigT1Interfaces/src/NimCTP.cxx | 12 +- .../TrigT1/TrigT1Interfaces/src/PhiRange.cxx | 4 +- Trigger/TrigT1/TrigT1Interfaces/src/Range.cxx | 4 +- .../TrigT1Interfaces/src/RecEmTauRoI.cxx | 12 +- .../TrigT1Interfaces/src/RecEnergyRoI.cxx | 12 +- .../TrigT1Interfaces/src/RecJetEtRoI.cxx | 12 +- .../TrigT1/TrigT1Interfaces/src/RecJetRoI.cxx | 12 +- .../TrigT1Interfaces/src/RecMuonRoI.cxx | 12 +- .../TrigT1/TrigT1Interfaces/src/RecRoI.cxx | 12 +- .../TrigT1Interfaces/src/RoIDecoder.cxx | 12 +- .../TrigT1Interfaces/src/RoIFormatUpdater.cxx | 3 + .../TrigT1/TrigT1Interfaces/src/SlinkWord.cxx | 3 + .../TrigT1/TrigT1Interfaces/src/TMUtil.cxx | 3 + .../TrigT1Interfaces/src/TrigT1CTPDefs.cxx | 3 + .../TrigT1Interfaces/src/TrigT1CaloDefs.cxx | 12 +- .../TrigT1/TrigT1Interfaces/src/TrtCTP.cxx | 3 + .../TrigT1/TrigT1Interfaces/src/ZdcCTP.cxx | 3 + .../TrigT1Interfaces/src/iRecCoordRoI.cxx | 13 +- .../TrigT1Monitoring/src/L1CaloL1TopoMon.cxx | 195 +++++++++--------- .../TrigT1Monitoring/src/L1CaloL1TopoMon.h | 14 +- .../python/TrigT1MuctpiAlgorithmConfig.py | 65 ++++++ .../TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx | 139 ++++++++++--- .../TrigT1Muctpi/src/Algorithms/L1Muctpi.h | 4 + .../src/Algorithms/L1MuctpiTool.cxx | 120 +++++++---- .../src/Algorithms/L1MuctpiTool.h | 2 +- .../RoIBResultByteStreamTool.icc | 85 ++++---- .../src/RoIBResultByteStreamTool.cxx | 77 ++++--- .../TriggerMenu/python/l1/BunchGroupSet.py | 2 - .../TriggerMenu/python/l1/Cabling.py | 9 +- .../TriggerMenu/python/l1/CoreLut.py | 113 ++++++++++ .../TriggerMenu/python/l1/Limits.py | 4 +- .../TriggerMenu/python/l1/Logic.py | 2 +- .../TriggerMenu/python/l1/Lvl1Flags.py | 3 +- .../TriggerMenu/python/l1/Lvl1Menu.py | 5 +- .../TriggerMenu/python/l1/Lvl1MenuItems.py | 3 +- .../TriggerMenu/python/l1/Lvl1MenuUtil.py | 2 +- .../TriggerMenu/python/l1/Lvl1Thresholds.py | 1 - .../TriggerMenu/python/l1/TriggerTypeDef.py | 3 - .../TriggerMenu/python/l1/XMLMenuReader.py | 2 +- 243 files changed, 1232 insertions(+), 972 deletions(-) create mode 100644 Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py create mode 100644 Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py diff --git a/Trigger/TrigT1/L1Common/schema/L1Specifications.xml b/Trigger/TrigT1/L1Common/schema/L1Specifications.xml index 19196b019c0..16cfc3676b4 100644 --- a/Trigger/TrigT1/L1Common/schema/L1Specifications.xml +++ b/Trigger/TrigT1/L1Common/schema/L1Specifications.xml @@ -388,7 +388,7 @@ <CTSpec ns='v1'> <name>"MBTSSI_cable"</name> <type>u16_mult</type> - <value>2, 9, 2, 0, 11, 1, 9, 3, 0, 11, 1</value> + <value>2, 9, 2, 0, 15, 1, 9, 3, 0, 15, 1</value> <comment>"number of cables, slot, connector, start, stop"</comment> </CTSpec> diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCnv_p1.h index fdf65557152..1e28e980c4a 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMMCPHitsCnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMMCPHitsCnv_p1_H #define CMMCPHitsCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_p1.h index c3b36303fd6..dc209ab219d 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMMCPHitsCollectionCNV_P1_H #define CMMCPHitsCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_tlp1.h index 5db25a498cb..9d26bf9b9b1 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMMCPHitsCollectionCNV_TLP1_H #define CMMCPHitsCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_p1.h index 2ab8026e187..fa7696f7997 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMMCPHitsCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CMMCPHitsCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_tlp1.h index 8b10e6c033d..7ffdbd8eb9a 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMMCPHitsCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CMMCPHitsCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHits_p1.h index 06921607636..0652f9917b7 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHits_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHits_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMMCPHits_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMMCPHits_p1_H #define CMMCPHits_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCnv_p1.h index 8ec957ba690..44a740a9e67 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMMEtSumsCnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMMEtSumsCnv_p1_H #define CMMEtSumsCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_p1.h index 802ba747e16..30ee4c0a383 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMMEtSumsCollectionCNV_P1_H #define CMMEtSumsCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_tlp1.h index f4416210b11..444deb00cf4 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMMEtSumsCollectionCNV_TLP1_H #define CMMEtSumsCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_p1.h index 37525936af5..7495045929a 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMMEtSumsCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CMMEtSumsCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_tlp1.h index 6915d213aea..ecd38cf43eb 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMMEtSumsCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CMMEtSumsCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSums_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSums_p1.h index 2330029cf5b..cfe3f3a7810 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSums_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSums_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMMEtSums_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMMEtSums_p1_H #define CMMEtSums_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCnv_p1.h index 0a39703e857..058c8083159 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMMJetHitsCnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMMJetHitsCnv_p1_H #define CMMJetHitsCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_p1.h index e6c6b888742..e9139c7e12a 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMMJetHitsCollectionCNV_P1_H #define CMMJetHitsCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_tlp1.h index 05764235ff3..cf862b30f55 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMMJetHitsCollectionCNV_TLP1_H #define CMMJetHitsCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_p1.h index f40051c8bf3..138816300f1 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMMJetHitsCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CMMJetHitsCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_tlp1.h index 929bdfe13e2..d36815900b7 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMMJetHitsCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CMMJetHitsCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHits_p1.h index be1754b044c..9c7848051e3 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHits_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHits_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMMJetHits_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMMJetHits_p1_H #define CMMJetHits_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoICnv_p1.h index e8df984fd0a..db30f9dc5c3 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoICnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoICnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMMRoICnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMMRoICnv_p1_H #define CMMRoICnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoI_p1.h index a5b7eea7da2..c5dba5e02a0 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoI_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoI_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMMRoI_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMMRoI_p1_H #define CMMRoI_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCnv_p1.h index 89f19fcb84e..0e4724f252b 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMXCPHitsCnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXCPHitsCnv_p1_H #define CMXCPHitsCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_p1.h index 0b13cc6ad19..a9c435211ff 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXCPHitsCollectionCNV_P1_H #define CMXCPHitsCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_tlp1.h index caca869d818..20778cffd76 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXCPHitsCollectionCNV_TLP1_H #define CMXCPHitsCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_p1.h index 97e97ec06c3..e7a9304b8d6 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXCPHitsCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CMXCPHitsCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_tlp1.h index 05259f29a6c..a8d8842937a 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXCPHitsCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CMXCPHitsCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHits_p1.h index 0e3a53fa0c7..ea4d80e24c6 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHits_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHits_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMXCPHits_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXCPHits_p1_H #define CMXCPHits_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCnv_p1.h index bd3fbea16d5..474b6877af1 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMXCPTobCnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXCPTobCnv_p1_H #define CMXCPTobCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_p1.h index 0553e0178c2..1b40b691673 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXCPTobCollectionCNV_P1_H #define CMXCPTobCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_tlp1.h index 76c748b63b9..9bcb2ebd613 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXCPTobCollectionCNV_TLP1_H #define CMXCPTobCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_p1.h index f125cea7eb1..4a139ca6ad7 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXCPTobCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CMXCPTobCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_tlp1.h index 6cc0b9db3b7..62a2094b49c 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXCPTobCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CMXCPTobCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTob_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTob_p1.h index ed5bdff70c1..4ab0a8f7b4c 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTob_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTob_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CMXCPTob_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXCPTob_p1_H #define CMXCPTob_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCnv_p1.h index b938e5df6ee..35564821396 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCnv_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXEtSumsCnv_p1_H #define CMXEtSumsCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_p1.h index 5d15b206b46..02e162d84a2 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXEtSumsCollectionCNV_P1_H #define CMXEtSumsCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_tlp1.h index ebfd6a9d0b5..0b2860eb005 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXEtSumsCollectionCNV_TLP1_H #define CMXEtSumsCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_p1.h index c831daf0e49..5dd862a4de1 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXEtSumsCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CMXEtSumsCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_tlp1.h index 92859fe1cef..ab3db193016 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXEtSumsCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CMXEtSumsCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSums_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSums_p1.h index b6aa089ef8c..978e0d180bb 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSums_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSums_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXEtSums_p1_H #define CMXEtSums_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCnv_p1.h index 7decc2ca749..e6b0348f9ad 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCnv_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXJetHitsCnv_p1_H #define CMXJetHitsCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_p1.h index bd6dd159183..5257f37b5cc 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXJetHitsCollectionCNV_P1_H #define CMXJetHitsCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_tlp1.h index d8323734e3a..d9c729a22d1 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXJetHitsCollectionCNV_TLP1_H #define CMXJetHitsCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_p1.h index 0e63d7f3c57..920906cf71c 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXJetHitsCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CMXJetHitsCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_tlp1.h index 04622891f1c..f9c21d0f9bd 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXJetHitsCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CMXJetHitsCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHits_p1.h index 1628470093a..bbd5dcb92c1 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHits_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHits_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXJetHits_p1_H #define CMXJetHits_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCnv_p1.h index ad28bd693d3..3480809d8bc 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCnv_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXJetTobCnv_p1_H #define CMXJetTobCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_p1.h index 0fce30224a7..6538976cb3f 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXJetTobCollectionCNV_P1_H #define CMXJetTobCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_tlp1.h index 640d1325cce..134da7b886d 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CMXJetTobCollectionCNV_TLP1_H #define CMXJetTobCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_p1.h index caf5945f2aa..421c786cd2c 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXJetTobCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CMXJetTobCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_tlp1.h index ccd2e29b1cd..c11b9506a44 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CMXJetTobCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CMXJetTobCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTob_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTob_p1.h index fa4d0e22f56..451ba157184 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTob_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTob_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXJetTob_p1_H #define CMXJetTob_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoICnv_p1.h index 393c32d3b2d..0ed83ad3b93 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoICnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoICnv_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXRoICnv_p1_H #define CMXRoICnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoI_p1.h index c2b6584c09f..5bc7cfc8477 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoI_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoI_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CMXRoI_p1_H #define CMXRoI_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCnv_p1.h index bffc9c44061..39ad3c80956 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CPMHitsCnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CPMHitsCnv_p1_H #define CPMHitsCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_p1.h index 3d0a3333d7c..7a472d7d245 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CPMHitsCollectionCNV_P1_H #define CPMHitsCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_tlp1.h index 5acd0bc9b62..48e9293ae06 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CPMHitsCollectionCNV_TLP1_H #define CPMHitsCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_p1.h index b12226744b2..65ed9f47cac 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CPMHITSCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CPMHITSCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_tlp1.h index 7ce67cc5ac5..bc7d4681d27 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CPMHITSCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CPMHITSCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHits_p1.h index 643649f4aa6..4d2b825e3c4 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHits_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHits_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CPMHits_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CPMHits_p1_H #define CPMHits_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICnv_p1.h index afa98394431..0132286b80f 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CPMRoICnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CPMRoICnv_p1_H #define CPMRoICnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_p1.h index d845a21b978..0cb8733e06a 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CPMRoICollectionCNV_P1_H #define CPMRoICollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_tlp1.h index ae010443be1..e85b3035d2b 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CPMRoICollectionCNV_TLP1_H #define CPMRoICollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_p1.h index 960ddf8da87..33365e34bfb 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CPMRoICOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CPMRoICOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_tlp1.h index c27fdac6124..69a35b66927 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CPMRoICOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CPMRoICOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoI_p1.h index ecd44ce1170..245696c637f 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoI_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoI_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CPMRoI_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CPMRoI_p1_H #define CPMRoI_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICnv_p1.h index 2e73ff80119..8c4e7654c79 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CPMTobRoICnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CPMTobRoICnv_p1_H #define CPMTobRoICnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_p1.h index 298e9d2e98a..2177ae3d0a4 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CPMTobRoICollectionCNV_P1_H #define CPMTobRoICollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_tlp1.h index c7a8e6c1ec4..f9be9550412 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CPMTobRoICollectionCNV_TLP1_H #define CPMTobRoICollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_p1.h index b852397f79b..6da9c77c459 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CPMTobRoICOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CPMTobRoICOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_tlp1.h index 32c164b4d05..944d6f58388 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CPMTobRoICOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CPMTobRoICOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoI_p1.h index 709f9815550..77c0e867b27 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoI_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoI_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CPMTobRoI_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CPMTobRoI_p1_H #define CPMTobRoI_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCnv_p1.h index ba244cc7727..168dcffc7b8 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CPMTowerCNV_P1_H #define CPMTowerCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_p1.h index 5d4c1b52eb0..35dbf92c095 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CPMTowerCollectionCNV_P1_H #define CPMTowerCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_tlp1.h index f782740d39a..21ba39c41e9 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef CPMTowerCollectionCNV_TLP1_H #define CPMTowerCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_p1.h index d3bb5f1292c..2ff4ed45b12 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CPMTowerCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_CPMTowerCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_tlp1.h index 1633b87e205..03e701699cd 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_CPMTowerCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_CPMTowerCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTower_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTower_p1.h index 64d52254ade..4c448f8e899 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTower_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTower_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // CPMTower_p1.h - description // ------------------- // begin : 29/11/2007 - // copyright : (C) 2007 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef CPMTower_P1_H #define CPMTower_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p1.h index 869e23782ab..0c27e50b4c8 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p1.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_CTP_RDOCNV_P1_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_CTP_RDOCNV_P1_H // Gaudi/Athena include(s): diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p2.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p2.h index a939f79c343..0801fb67547 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p2.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p2.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_CTP_RDOCNV_P2_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_CTP_RDOCNV_P2_H // Gaudi/Athena include(s): diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p1.h index e37939739e8..38459248290 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p1.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_CTP_RDO_P1_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_CTP_RDO_P1_H // System include(s): diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p2.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p2.h index 0c24e910862..21015760e93 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p2.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p2.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_CTP_RDO_P2_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_CTP_RDO_P2_H // System include(s): diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCnv_p1.h index c1672058f3b..24abed705a2 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // JEMEtSumsCnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef JEMEtSumsCnv_p1_H #define JEMEtSumsCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_p1.h index b8411f12978..0b64c1d2979 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JEMEtSumsCollectionCNV_P1_H #define JEMEtSumsCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_tlp1.h index 283cf11f899..f1732fb4d94 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JEMEtSumsCollectionCNV_TLP1_H #define JEMEtSumsCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_p1.h index 4f36ad06fa1..b9570cf1dd0 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JEMEtSumsCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_JEMEtSumsCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_tlp1.h index 5cae03022b4..1eee196fb41 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JEMEtSumsCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_JEMEtSumsCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSums_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSums_p1.h index ad42fdbf8f5..568e751c6f6 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSums_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSums_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // JEMEtSums_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef JEMEtSums_p1_H #define JEMEtSums_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCnv_p1.h index 58e01295e56..5d9af3d3873 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // JEMHitsCnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef JEMHitsCnv_p1_H #define JEMHitsCnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_p1.h index c15eb878dec..706bc5fa414 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JEMHitsCollectionCNV_P1_H #define JEMHitsCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_tlp1.h index b7993933e26..f6df584958d 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JEMHitsCollectionCNV_TLP1_H #define JEMHitsCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_p1.h index 856a5da88df..4620b8fb910 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JEMHitsCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_JEMHitsCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_tlp1.h index c947d9c1a96..1a3d3992cbc 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JEMHitsCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_JEMHitsCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHits_p1.h index fa33d74a187..d5316517d3a 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHits_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHits_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // JEMHits_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef JEMHits_p1_H #define JEMHits_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICnv_p1.h index aaa2d3b6be6..35087f45e0c 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICnv_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // JEMRoICnv_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef JEMRoICnv_p1_H #define JEMRoICnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_p1.h index 84dcd98f438..6227c78e861 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JEMRoICollectionCNV_P1_H #define JEMRoICollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_tlp1.h index df91e09fdb1..27c50f073be 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JEMRoICollectionCNV_TLP1_H #define JEMRoICollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_p1.h index 5df1bb45e7f..9d036121b82 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JEMRoICOLLECTION_P1_H #define TRIGT1EVENTTPCNV_JEMRoICOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_tlp1.h index 50b687acd5d..367e3de5de0 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JEMRoICOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_JEMRoICOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoI_p1.h index 6d936812972..d248474ceb8 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoI_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoI_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // JEMRoI_p1.h - description // ------------------- // begin : 21 04 2008 - // copyright : (C) 2008 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef JEMRoI_p1_H #define JEMRoI_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICnv_p1.h index db137ca93fe..ebec2b7fe87 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICnv_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef JEMTobRoICnv_p1_H #define JEMTobRoICnv_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_p1.h index 7c5de188dba..583700dbe69 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JEMTobRoICollectionCNV_P1_H #define JEMTobRoICollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_tlp1.h index 0aaa0bb74b8..56cea72d709 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JEMTobRoICollectionCNV_TLP1_H #define JEMTobRoICollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_p1.h index 9f706a01892..b83d1b885e7 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JEMTobRoICOLLECTION_P1_H #define TRIGT1EVENTTPCNV_JEMTobRoICOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_tlp1.h index c79a99082b7..a975ab8f65f 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JEMTobRoICOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_JEMTobRoICOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoI_p1.h index cad73983514..2e63ac40237 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoI_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoI_p1.h @@ -1,12 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef JEMTobRoI_p1_H #define JEMTobRoI_p1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCnv_p1.h index 2b04a6bb43b..3c0c2701587 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JetElementCNV_P1_H #define JetElementCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_p1.h index 4836d1b6f4b..33edbfbd9eb 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JetElementCollectionCNV_P1_H #define JetElementCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_tlp1.h index 373b1df3d1b..09f20d7ba7c 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef JetElementCollectionCNV_TLP1_H #define JetElementCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_p1.h index 6651a6f137e..c89ad20ac80 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JETELEMENTCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_JETELEMENTCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_tlp1.h index 090ffbaeff1..33c506dd123 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_JETELEMENTCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_JETELEMENTCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElement_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElement_p1.h index cfe78df9275..aca5ce665be 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElement_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElement_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // JetElement_p1.h - description // ------------------- // begin : 29/11/2007 - // copyright : (C) 2007 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef JETELEMENT_P1_H #define JETELEMENT_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDOCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDOCnv_p1.h index c395c5a0168..900009f954f 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDOCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDOCnv_p1.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_MUCTPI_RDOCNV_P1_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_MUCTPI_RDOCNV_P1_H // Gaudi/Athena include(s): diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDO_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDO_p1.h index b5e86f0f306..865544661a2 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDO_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDO_p1.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_MUCTPI_RDO_P1_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_MUCTPI_RDO_P1_H // System include(s): diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCnv_p1.h index ea765980e98..f73e30ba389 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef RODHeaderCNV_P1_H #define RODHeaderCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_p1.h index 06596c3d2c8..62f0ff2a091 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef RODHeaderCollectionCNV_P1_H #define RODHeaderCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_tlp1.h index 1730079db78..e43f44e1d49 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef RODHeaderCollectionCNV_TLP1_H #define RODHeaderCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_p1.h index 3192ccc8cc6..290d502776c 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_RODHeaderCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_RODHeaderCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_tlp1.h index a5186386020..a823cebccc8 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_RODHeaderCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_RODHeaderCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeader_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeader_p1.h index 9c2d110bf17..cc927399725 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeader_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeader_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // RODHeader_p1.h - description // ------------------- // begin : 29/11/2007 - // copyright : (C) 2007 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef RODHeader_P1_H #define RODHeader_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResultCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResultCnv_p1.h index 5e32569e777..4a9004e1dfc 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResultCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResultCnv_p1.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_ROIBRESULTCNV_P1_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_ROIBRESULTCNV_P1_H // Gaudi/Athena include(s): diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResult_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResult_p1.h index 5481621a788..514c55b9c9f 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResult_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResult_p1.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_ROIBRESULT_P1_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_ROIBRESULT_P1_H // System include(s): diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/SubSysResult_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/SubSysResult_p1.h index c3b35544218..b1e9cd7c394 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/SubSysResult_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/SubSysResult_p1.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_SUBSYSRESULT_P1_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_SUBSYSRESULT_P1_H // System include(s): diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TrigT1EventTPCnvDict.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TrigT1EventTPCnvDict.h index 46b329a07ac..bf3ae483e70 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TrigT1EventTPCnvDict.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TrigT1EventTPCnvDict.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1EVENTTPCNV_TRIGT1EVENTTPCNVDICT_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1EVENTTPCNV_TRIGT1EVENTTPCNVDICT_H // diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCnv_p1.h index ac115320d63..79df17401b0 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TriggerTowerCNV_P1_H #define TriggerTowerCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_p1.h index 6db0579bd19..bf3fa6d957e 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TriggerTowerCollectionCNV_P1_H #define TriggerTowerCollectionCNV_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_tlp1.h index a56b9a2b9b2..c2d2cfdbf30 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TriggerTowerCollectionCNV_TLP1_H #define TriggerTowerCollectionCNV_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_p1.h index fb2c14dcfcf..2aea35c263e 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_p1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_TRIGGERTOWERCOLLECTION_P1_H #define TRIGT1EVENTTPCNV_TRIGGERTOWERCOLLECTION_P1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_tlp1.h index 2408f416c27..3cb19d00a10 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_tlp1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_tlp1.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1EVENTTPCNV_TRIGGERTOWERCOLLECTION_TLP1_H #define TRIGT1EVENTTPCNV_TRIGGERTOWERCOLLECTION_TLP1_H diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTower_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTower_p1.h index 36778dc3325..5d317cc03a7 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTower_p1.h +++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTower_p1.h @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //*************************************************************************** // TriggerTower_p1.h - description // ------------------- // begin : 29/11/2007 - // copyright : (C) 2007 by Alan Watson // email : Alan.Watson@cern.ch // ***************************************************************************/ - //*************************************************************************** - // * * - // * This program is free software; you can redistribute it and/or modify * - // * it under the terms of the GNU General Public License as published by * -// * the Free Software Foundation; either version 2 of the License, or * - // * (at your option) any later version. * - // * * - // ***************************************************************************/ #ifndef TRIGGERTOWER_P1_H #define TRIGGERTOWER_P1_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BcmCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BcmCTP.h index 711ee881223..c093f08509f 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BcmCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BcmCTP.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_BCM_CTP_H #define TRIGT1INTERFACES_BCM_CTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BitOp.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BitOp.h index 320752903c3..8ef62e58890 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BitOp.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BitOp.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_BITOP_H #define TRIGT1INTERFACES_BITOP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BptxCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BptxCTP.h index 58122b13d86..b0305c51f12 100755 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BptxCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BptxCTP.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_BPTX_CTP_H #define TRIGT1INTERFACES_BPTX_CTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CPRoIDecoder.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CPRoIDecoder.h index 14b0df7f321..6a841152799 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CPRoIDecoder.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CPRoIDecoder.h @@ -1,20 +1,14 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** CPRoIDecoder.h - description ------------------- begin : Fri Apr 19 2002 - copyright : (C) 2002 by E.Moyse email : moyse@ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #ifndef TRIGT1INTERFACES_CPROIDECODER_H #define TRIGT1INTERFACES_CPROIDECODER_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CTPSLink.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CTPSLink.h index c82efa12ebc..cab3b716544 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CTPSLink.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CTPSLink.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1INTERFACES_CTPSLINK_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1INTERFACES_CTPSLINK_H // std include(s): diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Coordinate.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Coordinate.h index 00f5285ee05..bd3fc94a31f 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Coordinate.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Coordinate.h @@ -1,20 +1,14 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** Coordinate.h - description ------------------- begin : 28/02/2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #ifndef TRIGT1INTERFACES_COORDINATE_H #define TRIGT1INTERFACES_COORDINATE_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CoordinateRange.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CoordinateRange.h index ba66d9c422b..ee78f281f59 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CoordinateRange.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CoordinateRange.h @@ -1,20 +1,14 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** CoordinateRange.h - description ------------------- begin : 28/02/2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #ifndef TRIGT1INTERFACES_COORDINATERANGE_H #define TRIGT1INTERFACES_COORDINATERANGE_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EmTauCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EmTauCTP.h index e62434b7fe8..edd5967fa57 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EmTauCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EmTauCTP.h @@ -1,20 +1,14 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** EmTauCTP.h - description ------------------- begin : Friday May 05 2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #ifndef TRIGT1INTERFACES_EMTAUCTP_H #define TRIGT1INTERFACES_EMTAUCTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EnergyCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EnergyCTP.h index b68a364fbee..ae7967f68e4 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EnergyCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EnergyCTP.h @@ -1,21 +1,14 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** EnergyCTP.h - description ------------------- begin : Friday May 05 2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_ENERGYCTP_H #define TRIGT1INTERFACES_ENERGYCTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/FrontPanelCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/FrontPanelCTP.h index 885e94c8134..0cb450e6521 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/FrontPanelCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/FrontPanelCTP.h @@ -1,5 +1,8 @@ ///////////////////////// -*- C++ -*- ///////////////////////////// // FrontPanelCTP.h +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ // Header file for class FrontPanelCTP // Author: S.Binet<binet@cern.ch> /////////////////////////////////////////////////////////////////// diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/IMuctpiSimTool.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/IMuctpiSimTool.h index aa5b68521b6..8382c3e071e 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/IMuctpiSimTool.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/IMuctpiSimTool.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TrigT1Muctpi_IMuctpiSimTool #define TrigT1Muctpi_IMuctpiSimTool @@ -26,7 +29,7 @@ namespace LVL1MUCTPI { * \param inputEvent reference to the inputEvent */ - virtual StatusCode fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo & ) const = 0; + virtual StatusCode fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo &, int bcidOffset=0) const = 0; }; diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JEPRoIDecoder.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JEPRoIDecoder.h index 389a0844711..e90fb62c172 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JEPRoIDecoder.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JEPRoIDecoder.h @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** JEPRoIDecoder.h - description ------------------- begin : Fri Apr 19 2002 - copyright : (C) 2002 by E.Moyse email : moyse@ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_JEPROIDECODER_H #define TRIGT1INTERFACES_JEPROIDECODER_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetCTP.h index 4db6ad273b3..c11c38277a7 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetCTP.h @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** JetCTP.h - description ------------------- begin : Friday May 05 2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_JETCTP_H #define TRIGT1INTERFACES_JETCTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetEtRoIDecoder.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetEtRoIDecoder.h index 8ffe3d17ac9..9d3f6a23fa5 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetEtRoIDecoder.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetEtRoIDecoder.h @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** JetEtRoIDecoder.h - description ------------------- begin : Fri Apr 19 2002 - copyright : (C) 2002 by E.Moyse email : moyse@ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_JETETROIDECODER_H #define TRIGT1INTERFACES_JETETROIDECODER_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/L1METvalue.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/L1METvalue.h index 576decd35b3..77f0e5a6f45 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/L1METvalue.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/L1METvalue.h @@ -1,19 +1,12 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** L1MET.h - description ------------------- begin : 19-10-2007 - copyright : (C) 2007 Alan Watson email : Alan.Watson@cern.ch ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #ifndef L1METvalue_H #define L1METvalue_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/LucidCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/LucidCTP.h index 6f7e0c64eeb..319f8cd56e8 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/LucidCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/LucidCTP.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1INTERFACES_LUCID_CTP_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1INTERFACES_LUCID_CTP_H #include <stdint.h> diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuBarrelSectorLogicData.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuBarrelSectorLogicData.h index a2d40c266bd..ed06cab29c5 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuBarrelSectorLogicData.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuBarrelSectorLogicData.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1INTERFACES_LVL1MUBARRELSECTORLOGICDATA_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1INTERFACES_LVL1MUBARRELSECTORLOGICDATA_H // System include(s): diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuCTPIInput.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuCTPIInput.h index ef5cb66c960..9b83381eeca 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuCTPIInput.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuCTPIInput.h @@ -1,5 +1,8 @@ // Dear emacs, this is -*- c++ -*- #ifndef TRIGT1INTERFACES_LVL1MUCTPIINPUT_H +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #define TRIGT1INTERFACES_LVL1MUCTPIINPUT_H // System include(s): diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuEndcapSectorLogicData.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuEndcapSectorLogicData.h index 1bd750ae616..abfae10efe8 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuEndcapSectorLogicData.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuEndcapSectorLogicData.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_LVL1MUENDCAPSECTORLOGICDATA_H #define TRIGT1INTERFACES_LVL1MUENDCAPSECTORLOGICDATA_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuForwardSectorLogicData.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuForwardSectorLogicData.h index 63d50ecd50b..8d34d722c87 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuForwardSectorLogicData.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuForwardSectorLogicData.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_LVL1MUFORWARDSECTORLOGICDATA_H #define TRIGT1INTERFACES_LVL1MUFORWARDSECTORLOGICDATA_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuSectorLogicData.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuSectorLogicData.h index 3abf9ef857a..76de787350d 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuSectorLogicData.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuSectorLogicData.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_LVL1MUSECTORLOGICDATA_H #define TRIGT1INTERFACES_LVL1MUSECTORLOGICDATA_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MbtsCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MbtsCTP.h index e4f23d6b474..0eb3b8a3770 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MbtsCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MbtsCTP.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_MBTS_CTP_H #define TRIGT1INTERFACES_MBTS_CTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPICTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPICTP.h index 42c8c1249ba..050f7fab7f3 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPICTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPICTP.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_MUCTPICTP_H #define TRIGT1INTERFACES_MUCTPICTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1Topo.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1Topo.h index 36c49a381dd..610d9c20aaa 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1Topo.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1Topo.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_MUCTPIL1TOPO_H #define TRIGT1INTERFACES_MUCTPIL1TOPO_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1TopoCandidate.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1TopoCandidate.h index 6c72ed690d3..f7743521fca 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1TopoCandidate.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1TopoCandidate.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_MUCTPIL1TOPOCANDIDATE_H #define TRIGT1INTERFACES_MUCTPIL1TOPOCANDIDATE_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIToRoIBSLink.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIToRoIBSLink.h index abc319c073b..e9f8179f61d 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIToRoIBSLink.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIToRoIBSLink.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_MUCTPITOROIBSLINK_H #define TRIGT1INTERFACES_MUCTPITOROIBSLINK_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/NimCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/NimCTP.h index 9200bc93f0e..ee13896b155 100755 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/NimCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/NimCTP.h @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** NimCTP.h - description ------------------- begin : August 2010 - copyright : (C) 2002 by dobson email : eleanor.dobson@cern.ch ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_NIMCTP_H #define TRIGT1INTERFACES_NIMCTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/PhiRange.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/PhiRange.h index 812c4f482a1..b9e6ce2a4c3 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/PhiRange.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/PhiRange.h @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** Range.h - description ------------------- begin : 28/02/2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_PHIRANGE_H #define TRIGT1INTERFACES_PHIRANGE_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Range.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Range.h index 213983baffa..f413ca52739 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Range.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Range.h @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** Range.h - description ------------------- begin : 28/02/2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_RANGE_H #define TRIGT1INTERFACES_RANGE_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEmTauRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEmTauRoI.h index 1e710687bf2..b2b47c1dfc1 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEmTauRoI.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEmTauRoI.h @@ -1,21 +1,15 @@ // Dear emacs, this is -*- c++ -*- // $Id: RecEmTauRoI.h 782811 2016-11-07 17:20:40Z smh $ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** RecEmTauRoI.h - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #ifndef TRIGT1INTERFACES_RECEMTAUROI_H #define TRIGT1INTERFACES_RECEMTAUROI_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEnergyRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEnergyRoI.h index 91374b66b5f..ef6d0f5cb96 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEnergyRoI.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEnergyRoI.h @@ -1,22 +1,15 @@ // Dear emacs, this is -*- c++ -*- // $Id: RecEnergyRoI.h 782811 2016-11-07 17:20:40Z smh $ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** RecEnergyRoI.h - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_RECENERGYROI_H #define TRIGT1INTERFACES_RECENERGYROI_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetEtRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetEtRoI.h index b25859f5d94..a308ecc0d99 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetEtRoI.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetEtRoI.h @@ -1,22 +1,15 @@ // Dear emacs, this is -*- c++ -*- // $Id: RecJetEtRoI.h 782811 2016-11-07 17:20:40Z smh $ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** RecJetEtRoI.h - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_RECJETETROI_H #define TRIGT1INTERFACES_RECJETETROI_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetRoI.h index 283bbfa5689..b17667f83b0 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetRoI.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetRoI.h @@ -1,22 +1,15 @@ // Dear emacs, this is -*- c++ -*- // $Id: RecJetRoI.h 782811 2016-11-07 17:20:40Z smh $ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** RecJetRoI.h - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_RECJETTROI_H #define TRIGT1INTERFACES_RECJETTROI_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoI.h index 0c312544e4b..2a688a5df0a 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoI.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoI.h @@ -1,22 +1,15 @@ // Dear emacs, this is -*- c++ -*- // $Id: RecMuonRoI.h 782811 2016-11-07 17:20:40Z smh $ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** RecMuonRoI.h - description ------------------- begin : Tue Feb 25 2003 - copyright : (C) 2003 by wengler email : Thorsten Wengler ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_RECMUONROI_H #define TRIGT1INTERFACES_RECMUONROI_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoiSvc.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoiSvc.h index b46c9c0db27..0d44820308d 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoiSvc.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoiSvc.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_RECMUONROISVC_H #define TRIGT1INTERFACES_RECMUONROISVC_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecRoI.h index 95298c5d79b..522c654f84a 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecRoI.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecRoI.h @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** RecRoi.h - description ------------------- begin : Fri Oct 4 2002 - copyright : (C) 2002 by moyse email : edward.moyse@cern.ch ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_RECROI_H #define TRIGT1INTERFACES_RECROI_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIDecoder.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIDecoder.h index 8a4910ade8f..6535cbb9314 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIDecoder.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIDecoder.h @@ -1,22 +1,15 @@ // Dear emacs, this is -*- c++ -*- // $Id: RoIDecoder.h 187728 2009-05-27 16:18:06Z krasznaa $ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** RoIDecoder.h - description ------------------- begin : Fri Apr 19 2002 - copyright : (C) 2002 by E.Moyse email : moyse@ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_ROIDECODER_H #define TRIGT1INTERFACES_ROIDECODER_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIFormatUpdater.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIFormatUpdater.h index 156e63b149a..c90daf46cc2 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIFormatUpdater.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIFormatUpdater.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_ROIFORMATUPDATER_H #define TRIGT1INTERFACES_ROIFORMATUPDATER_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/SlinkWord.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/SlinkWord.h index 842e3c697bd..cabc9be938c 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/SlinkWord.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/SlinkWord.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_SLINKWORD_H #define TRIGT1INTERFACES_SLINKWORD_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMConst.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMConst.h index d43c4ba6e6f..ab3f7060c76 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMConst.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMConst.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /**************************************************** * * TMConst contains constants relevant to all the L1 trigger. There diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMUtil.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMUtil.h index 7db3aa8ff06..accd3b0766a 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMUtil.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMUtil.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_TMUTIL_H #define TRIGT1INTERFACES_TMUTIL_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CTPDefs.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CTPDefs.h index 9d6e323e874..90c1a3c71b1 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CTPDefs.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CTPDefs.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_TRIGT1CTPDEFS_H #define TRIGT1INTERFACES_TRIGT1CTPDEFS_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CaloDefs.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CaloDefs.h index 936435a587d..2b5ae2235d4 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CaloDefs.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CaloDefs.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ //============================================================================== // $Id: TrigT1CaloDefs.h 632038 2014-11-28 19:27:49Z amazurov $ //============================================================================== diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1InterfacesDict.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1InterfacesDict.h index dd91ebe85d6..882606fb958 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1InterfacesDict.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1InterfacesDict.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_TRIGT1INTERFACESDICT_H #define TRIGT1INTERFACES_TRIGT1INTERFACESDICT_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1Interfaces_ClassDEF.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1Interfaces_ClassDEF.h index 9fad1578a77..a1e104f9cd7 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1Interfaces_ClassDEF.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1Interfaces_ClassDEF.h @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TrigT1Interfaces_ClassDEF_H #define TrigT1Interfaces_ClassDEF_H //Put here the CLASS_DEF macros for the STL containers you put in StoreGate diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1StoreGateKeys.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1StoreGateKeys.h index 48ae00039a7..48954229592 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1StoreGateKeys.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1StoreGateKeys.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_TRIGT1STOREGATEKEYS_H #define TRIGT1INTERFACES_TRIGT1STOREGATEKEYS_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TriggerTypeWord.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TriggerTypeWord.h index f73c726e06c..6c08668375d 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TriggerTypeWord.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TriggerTypeWord.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_TRIGGERTYPEWORD_H #define TRIGT1INTERFACES_TRIGGERTYPEWORD_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrtCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrtCTP.h index 7c6538b891b..8f32a1aba52 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrtCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrtCTP.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_TRT_CTP_H #define TRIGT1INTERFACES_TRT_CTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/ZdcCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/ZdcCTP.h index 74a716c11a7..9ebb09870f6 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/ZdcCTP.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/ZdcCTP.h @@ -1,4 +1,7 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #ifndef TRIGT1INTERFACES_ZDC_CTP_H #define TRIGT1INTERFACES_ZDC_CTP_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/iRecCoordRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/iRecCoordRoI.h index edb9d18a88c..b22be68336b 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/iRecCoordRoI.h +++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/iRecCoordRoI.h @@ -1,21 +1,14 @@ // Dear emacs, this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** iRecCoordRoi.h - description ------------------- begin : Tue Aug 12 2003 - copyright : (C) 2003 by emoyse email : edward.moyse@cern.ch ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #ifndef TRIGT1INTERFACES_IRECCOORDROI_H #define TRIGT1INTERFACES_IRECCOORDROI_H diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/BcmCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/BcmCTP.cxx index 82ee56c35d6..9ee738caa24 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/BcmCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/BcmCTP.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/BcmCTP.h" // STL includes(s): diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/BitOp.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/BitOp.cxx index 11583cbb1c1..6dead27e1cb 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/BitOp.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/BitOp.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include <string> #include <algorithm> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/BptxCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/BptxCTP.cxx index b10fe803242..9b6e1db2795 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/BptxCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/BptxCTP.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/BptxCTP.h" // STL includes(s): diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/CPRoIDecoder.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/CPRoIDecoder.cxx index c30372241de..476e339c917 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/CPRoIDecoder.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/CPRoIDecoder.cxx @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** CPRoIDecoder.cxx - description ------------------- begin : Fri Apr 19 2002 - copyright : (C) 2002 by E.Moyse email : moyse@ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #include <cmath> #include <iostream> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/CTPSLink.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/CTPSLink.cxx index 97e883a399c..2d3cf578690 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/CTPSLink.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/CTPSLink.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/CTPSLink.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Coordinate.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Coordinate.cxx index 44e52b2af06..5a41447dc4d 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/Coordinate.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/Coordinate.cxx @@ -1,8 +1,10 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** Coordinate.cxx - description ------------------- begin : 26/02/2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/CoordinateRange.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/CoordinateRange.cxx index 52314990b46..4bf3383ed2b 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/CoordinateRange.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/CoordinateRange.cxx @@ -1,8 +1,10 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** CoordinateRange.cxx - description ------------------- begin : 26/02/2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/EmTauCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/EmTauCTP.cxx index c5c3d36d68f..4cae6c897c2 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/EmTauCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/EmTauCTP.cxx @@ -1,19 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** EmTauCTP.cxx - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #include "TrigT1Interfaces/EmTauCTP.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/EnergyCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/EnergyCTP.cxx index 1169d88b6f9..5d71270d57e 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/EnergyCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/EnergyCTP.cxx @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** EnergyCTP.cxx - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #include "TrigT1Interfaces/EnergyCTP.h" namespace LVL1 { diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/FrontPanelCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/FrontPanelCTP.cxx index edb049aa9f1..a325430b035 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/FrontPanelCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/FrontPanelCTP.cxx @@ -1,5 +1,8 @@ ///////////////////////// -*- C++ -*- ///////////////////////////// // FrontPanelCTP.cxx +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ // Implementation file for class FrontPanelCTP // Author: S.Binet<binet@cern.ch> /////////////////////////////////////////////////////////////////// diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/JEPRoIDecoder.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/JEPRoIDecoder.cxx index e50775721d7..3db7a968c2a 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/JEPRoIDecoder.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/JEPRoIDecoder.cxx @@ -1,19 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** JEPRoIDecoder.cxx - description ------------------- begin : Fri Apr 19 2002 - copyright : (C) 2002 by E.Moyse email : moyse@ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #include <cmath> #include <iostream> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/JetCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/JetCTP.cxx index 316662cdead..94118829167 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/JetCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/JetCTP.cxx @@ -1,19 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** JetCTP.cxx - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #include "TrigT1Interfaces/JetCTP.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/JetEtRoIDecoder.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/JetEtRoIDecoder.cxx index af9e080bbec..a9faa0d10f4 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/JetEtRoIDecoder.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/JetEtRoIDecoder.cxx @@ -1,19 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** JetEtRoIDecoder.cxx - description ------------------- begin : Fri Apr 19 2002 - copyright : (C) 2002 by E.Moyse email : moyse@ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #include <cmath> #include <iostream> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/L1METvalue.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/L1METvalue.cxx index 5dceaa7c8d0..cea80dcd89e 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/L1METvalue.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/L1METvalue.cxx @@ -1,8 +1,10 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** L1METvalue.cxx - description ------------------- begin : 19-10-2007 - copyright : (C) 2007 Alan Watson email : Alan.Watson@cern.ch A simple set of functions to calculate ETmiss at the precision available @@ -17,14 +19,6 @@ value. ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #include "TrigT1Interfaces/L1METvalue.h" #include <cmath> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/LucidCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/LucidCTP.cxx index 268ff4499bf..1166f528aa4 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/LucidCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/LucidCTP.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/LucidCTP.h" #include <sstream> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuBarrelSectorLogicData.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuBarrelSectorLogicData.cxx index d592362bc6b..189f2ff1006 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuBarrelSectorLogicData.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuBarrelSectorLogicData.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include <iomanip> #include <iostream> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuCTPIInput.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuCTPIInput.cxx index 3284dab9621..7c57a93ad4d 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuCTPIInput.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuCTPIInput.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include <iostream> #include <iomanip> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuEndcapSectorLogicData.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuEndcapSectorLogicData.cxx index 53143b9ca86..5e3b9169676 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuEndcapSectorLogicData.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuEndcapSectorLogicData.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include <iomanip> #include <iostream> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuForwardSectorLogicData.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuForwardSectorLogicData.cxx index 32097b0d4c1..1aea6fa5119 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuForwardSectorLogicData.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuForwardSectorLogicData.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include <iomanip> #include <iostream> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuSectorLogicData.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuSectorLogicData.cxx index 6a26f9b03f6..37d8a4e611d 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuSectorLogicData.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuSectorLogicData.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include <cstdio> #include <iostream> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MbtsCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MbtsCTP.cxx index 4d5a7d5fd58..d9e919f43f6 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/MbtsCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/MbtsCTP.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/MbtsCTP.h" // STL includes(s): diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPICTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPICTP.cxx index 18819cb9df2..094f9e987e8 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPICTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPICTP.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/MuCTPICTP.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1Topo.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1Topo.cxx index e34afd06d7f..040504058a0 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1Topo.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1Topo.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/MuCTPIL1Topo.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1TopoCandidate.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1TopoCandidate.cxx index 22f5ef96291..81f3c0e58bc 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1TopoCandidate.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1TopoCandidate.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/MuCTPIL1TopoCandidate.h" #include <iostream> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIToRoIBSLink.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIToRoIBSLink.cxx index 6b43463e006..25198d228f3 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIToRoIBSLink.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIToRoIBSLink.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/MuCTPIToRoIBSLink.h" namespace L1MUINT { diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/NimCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/NimCTP.cxx index b15e888f39f..3a99d12ad05 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/NimCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/NimCTP.cxx @@ -1,19 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** NimCTP.cxx - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2010 by dobson email : eleanor.dobson@cern.ch ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #include "TrigT1Interfaces/NimCTP.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/PhiRange.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/PhiRange.cxx index 466e44fd9ab..f82d1328871 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/PhiRange.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/PhiRange.cxx @@ -1,8 +1,10 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** PhiRange.cxx - description ------------------- begin : 26/02/2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Range.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Range.cxx index f4be88a2851..2d4de1344fa 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/Range.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/Range.cxx @@ -1,8 +1,10 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** Range.cxx - description ------------------- begin : 26/02/2002 - copyright : (C) 2002 by moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecEmTauRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecEmTauRoI.cxx index 5783053826c..b86338e0a39 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/RecEmTauRoI.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecEmTauRoI.cxx @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ // $Id: RecEmTauRoI.cxx 796120 2017-02-08 03:20:47Z ssnyder $ /*************************************************************************** RecEmTauRoI.cxx - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ // STL include(s): #include <cmath> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecEnergyRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecEnergyRoI.cxx index 6ec8ae52449..e6c13aba141 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/RecEnergyRoI.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecEnergyRoI.cxx @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ // $Id: RecEnergyRoI.cxx 342657 2011-01-28 23:42:18Z watsona $ /*************************************************************************** RecEnergyRoI.cxx - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ // Trigger config includes: #include "TrigConfL1Data/L1DataDef.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecJetEtRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecJetEtRoI.cxx index 597cbbbe949..0fd17bfb093 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/RecJetEtRoI.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecJetEtRoI.cxx @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ // $Id: RecJetEtRoI.cxx 187728 2009-05-27 16:18:06Z krasznaa $ /*************************************************************************** RecJetEtRoI.cxx - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ // Local include(s): #include "TrigT1Interfaces/RecJetEtRoI.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecJetRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecJetRoI.cxx index 7062fad126d..c4d5d646617 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/RecJetRoI.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecJetRoI.cxx @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ // $Id: RecJetRoI.cxx 796120 2017-02-08 03:20:47Z ssnyder $ /*************************************************************************** RecJetRoI.cxx - description ------------------- begin : Mon Jan 22 2001 - copyright : (C) 2001 by moyse email : moyse@heppch.ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ // STL include(s): #include <cmath> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecMuonRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecMuonRoI.cxx index 9002058e2da..f88a32149a5 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/RecMuonRoI.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecMuonRoI.cxx @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ // $Id: RecMuonRoI.cxx 364688 2011-05-09 16:58:25Z krasznaa $ /*************************************************************************** RecMuonRoI.cxx - description ------------------- begin : Tue Feb 25 2003 - copyright : (C) 2003 by wengler email : Thorsten.Wengler ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ // STL include(s): #include <iomanip> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecRoI.cxx index f1074fef9f9..058f4647d55 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/RecRoI.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecRoI.cxx @@ -1,19 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** RecRoi.cxx - description ------------------- begin : Fri Oct 4 2002 - copyright : (C) 2002 by moyse email : moyse@zanzibar ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #include "TrigT1Interfaces/RecRoI.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RoIDecoder.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RoIDecoder.cxx index 9ea5e1128b9..fa19e6fa58d 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/RoIDecoder.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/RoIDecoder.cxx @@ -1,20 +1,14 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ // $Id: RoIDecoder.cxx 187728 2009-05-27 16:18:06Z krasznaa $ /*************************************************************************** RoIDecoder.cxx - description ------------------- begin : Fri Apr 19 2002 - copyright : (C) 2002 by E.Moyse email : moyse@ph.qmw.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #ifndef TRIGGERSPACE // running in Athena diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RoIFormatUpdater.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RoIFormatUpdater.cxx index a7a6ecc284f..20829954403 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/RoIFormatUpdater.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/RoIFormatUpdater.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /* ********************************************************** * * Quick and dirty hack to work around fact that there is no RoI diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/SlinkWord.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/SlinkWord.cxx index 6b12bc532f7..770ee88d818 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/SlinkWord.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/SlinkWord.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/SlinkWord.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/TMUtil.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/TMUtil.cxx index 5a4d114975e..ec4289982d2 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/TMUtil.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/TMUtil.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include <sstream> #include <cmath> diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CTPDefs.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CTPDefs.cxx index 29217641bd6..976e13a4fa8 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CTPDefs.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CTPDefs.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/TrigT1CTPDefs.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CaloDefs.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CaloDefs.cxx index a633ff0405b..0ea2624a6fe 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CaloDefs.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CaloDefs.cxx @@ -1,19 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** TrigT1CaloDefs.cxx - description ------------------- begin : Mon Apr 22 2002 - copyright : (C) 2002 by Edward Moyse email : e.moyse@qmul.ac.uk ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ #ifndef TRIGGERSPACE //running in Athena #include "TrigT1Interfaces/TrigT1CaloDefs.h" diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/TrtCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/TrtCTP.cxx index 7aea0be66db..f6db0eb3582 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/TrtCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/TrtCTP.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/TrtCTP.h" // STL includes(s): diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/ZdcCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/ZdcCTP.cxx index acd03da3541..8743d5874a2 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/ZdcCTP.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/ZdcCTP.cxx @@ -1,3 +1,6 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ #include "TrigT1Interfaces/ZdcCTP.h" // STL includes(s): diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/iRecCoordRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/iRecCoordRoI.cxx index 2b3b3048400..a56186926de 100644 --- a/Trigger/TrigT1/TrigT1Interfaces/src/iRecCoordRoI.cxx +++ b/Trigger/TrigT1/TrigT1Interfaces/src/iRecCoordRoI.cxx @@ -1,20 +1,13 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ /*************************************************************************** iRecCoordRoi.cxx - description ------------------- begin : Tue Aug 12 2003 - copyright : (C) 2003 by emoyse email : emoyse@pcephc402 ***************************************************************************/ -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #include "TrigT1Interfaces/iRecCoordRoI.h" iRecCoordRoI::iRecCoordRoI(){ diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx index efbfbdedabb..e0f706a641b 100755 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx @@ -2,17 +2,6 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -// ******************************************************************** -// -// NAME: L1CaloL1TopoMon.cxx -// PACKAGE: TrigT1CaloMonitoring -// -// AUTHOR: Joergen Sjoelin (sjolin@fysik.su.se) -// -// DESCRIPTION: Monitoring of L1Calo --> L1Topo transmission -// -// ******************************************************************** - #include <map> #include <utility> #include <set> @@ -25,6 +14,9 @@ #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/StatusCode.h" +#include "EventInfo/EventID.h" +#include "EventInfo/EventInfo.h" + #include "LWHists/LWHist.h" #include "LWHists/TH1F_LW.h" #include "LWHists/TH2F_LW.h" @@ -89,7 +81,7 @@ L1CaloL1TopoMon::L1CaloL1TopoMon( const std::string & type, m_configSvc("TrigConf::TrigConfigSvc/TrigConfigSvc", name), m_errorTool("LVL1::TrigT1CaloMonErrorTool/TrigT1CaloMonErrorTool"), m_histTool("LVL1::TrigT1CaloLWHistogramTool/TrigT1CaloLWHistogramTool"), - m_debug(false), m_histBooked(false), + m_debug(false), m_histBooked(false),m_lumiNo(0), m_h_l1topo_1d_CMXTobs(0), m_h_l1topo_1d_Simulation(0), m_h_l1topo_1d_JetTobs_EnergyLg(0), @@ -98,6 +90,7 @@ L1CaloL1TopoMon::L1CaloL1TopoMon( const std::string & type, m_h_l1topo_2d_Tobs_etaPhi_mismatch{}, m_h_l1topo_2d_Tobs_etaPhi_match{}, m_h_l1topo_1d_Errors(0), + m_h_l1topo_1d_Overflows(0), m_h_l1topo_1d_DAQTobs(0), m_h_l1topo_1d_DAQJetTobs(0), m_h_l1topo_1d_DAQTauTobs(0), @@ -107,6 +100,7 @@ L1CaloL1TopoMon::L1CaloL1TopoMon( const std::string & type, m_h_l1topo_1d_DAQMismatchTriggerBits(0), m_h_l1topo_1d_DAQOverflowBits(0), m_h_l1topo_1d_ROITobs(0), + m_h_l1topo_1d_ErrorsByLumiblock(0), m_h_l1topo_2d_ItemsBC{}, m_h_l1topo_2d_ItemsBC_ratio{} @@ -191,26 +185,40 @@ StatusCode L1CaloL1TopoMon::bookHistogramsRecurrent() // book histograms that are only relevant for cosmics data... } + if (newRunFlag() || newLumiBlockFlag()) { + const EventInfo *evtInfo = 0; + StatusCode sc = evtStore()->retrieve(evtInfo); + if (sc.isSuccess()) { + m_lumiNo = evtInfo->event_ID()->lumi_block(); + } + } + //if ( newLumiBlockFlag() ) {} if ( newRunFlag() ) { MgmtAttr_t attr = ATTRIB_UNMANAGED; - MonGroup L1CaloL1Topo( this, m_PathInRootFile, run, attr ); - MonGroup L1CaloL1TopoEvents( this, m_PathInRootFile, run, attr, - "", "eventSample" ); + MonGroup L1CaloL1Topo( this, m_PathInRootFile, run, attr, "", "merge" ); m_histTool->setMonGroup(&L1CaloL1Topo); m_h_l1topo_1d_Errors = m_histTool->book1F("l1topo_1d_Errors", - "L1Topo error summary", + "L1Topo error summary;;Number of Events", ERROR_BIT::NUMBEROFBITS, 0, ERROR_BIT::NUMBEROFBITS); + + m_h_l1topo_1d_Overflows = + m_histTool->book1F("l1topo_1d_Overflow", + "L1Topo overflows;Overflow;Number of Events",1,0,1); + for (int i=0; i<ERROR_BIT::NUMBEROFBITS;++i) m_h_l1topo_1d_Errors->GetXaxis()-> SetBinLabel(i+1,ERROR_LABELS[i].c_str()); - + m_h_l1topo_1d_ErrorsByLumiblock = + m_histTool->book1F("l1topo_1d_ErrorsByLumiblock", + "Events with Errors by Lumiblock;" + "Lumi Block;Number of Events",2500,0,2500); m_h_l1topo_1d_CMXTobs = m_histTool->book1F("l1topo_1d_CMXTobs", @@ -338,33 +346,27 @@ StatusCode L1CaloL1TopoMon::bookHistogramsRecurrent() std::to_string(i), std::string("Timing vs " "Algorithm Number ")+textFPGA[i], - 32, i*32, (i+1)*32, 3, -1.5, 1.5); + 32, i*32, (i+1)*32, 5, -2.5, 2.5); m_h_l1topo_2d_ItemsBC_ratio[i][0] = m_histTool->bookTH2F(std::string("l1topo_2d_ItemsBC_online_ratio")+ std::to_string(i), std::string("(online) Timing Ratio vs " "Algorithm Number ")+textFPGA[i], - 32, i*32, (i+1)*32, 3, -1.5, 1.5); + 32, i*32, (i+1)*32, 5, -2.5, 2.5); m_h_l1topo_2d_ItemsBC_ratio[i][1] = m_histTool->bookTH2F(std::string("l1topo_2d_ItemsBC_ratio")+ std::to_string(i), std::string("Timing Ratio vs " "Algorithm Number ")+textFPGA[i], - 32, i*32, (i+1)*32, 3, -1.5, 1.5); + 32, i*32, (i+1)*32, 5, -2.5, 2.5); } // Get L1Topo output bit names from the LVL1 menu thresholds - - // KW COMMENTING OUT - // LABELS ARE CROWDED AND ILLEGIBLE - // ALPHANUMERIC LABELS BREAK TIER-0 MERGING (ATR-13604) - - /*std::map<unsigned int, std::string> topoCounterToName; + std::map<unsigned int, std::string> topoCounterToName; const std::vector<TrigConf::TriggerThreshold*>& thrVec = m_configSvc->thresholdConfig()-> getThresholdVector(TrigConf::L1DataDef::TOPO); - ATH_MSG_INFO("L1Topo bits found in the LVL1 menu = " << thrVec.size()); - + ATH_MSG_DEBUG("L1Topo bits found in the LVL1 menu = " << thrVec.size()); if (thrVec.size()>0) { for (auto thr : thrVec) { if (thr) { @@ -375,22 +377,24 @@ StatusCode L1CaloL1TopoMon::bookHistogramsRecurrent() else ATH_MSG_DEBUG("Looping L1Topo bit inactive"); } - ATH_MSG_INFO("L1Topo bits configured in the LVL1 menu = " - << topoCounterToName.size()); + ATH_MSG_DEBUG("L1Topo bits configured in the LVL1 menu = " + << topoCounterToName.size()); for (unsigned int binIndex=0; binIndex<128; ++binIndex){ + std::string label(std::to_string(binIndex)); auto it = topoCounterToName.find(binIndex); - std::string label; - if (it != topoCounterToName.end()){ // KW commenting out (labels are crowded & illegible) - label=it->second; - } - else { - label=std::to_string(binIndex); - cout << (binIndex%32+1); + if (it != topoCounterToName.end()){ + const bool USE_ALPHANUM=true; + if (USE_ALPHANUM && it->second.length()>2) { + label=it->second; + for (uint32_t bc=1; bc<=5; ++bc) + m_h_l1topo_2d_ItemsBC[binIndex/32]-> + SetBinContent(binIndex%32+1,bc,0.0001); // bins>0 active bins + } } m_h_l1topo_2d_ItemsBC[binIndex/32]->GetXaxis()-> SetBinLabel(binIndex%32+1,label.c_str()); } - }*/ + } m_histTool->unsetMonGroup(); m_histBooked = true; @@ -414,6 +418,8 @@ StatusCode L1CaloL1TopoMon::fillHistograms() StatusCode sc = StatusCode::SUCCESS; + int topo_error=0; + typedef std::tuple<int,int,int,int,int,int> TobKey; std::set<TobKey> cmxKeys[TOB_TYPES],topoKeys[TOB_TYPES], keyDiff[TOB_TYPES],keyIntersect[TOB_TYPES]; @@ -422,6 +428,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms() if (m_errorTool->corrupt() || m_errorTool->robOrUnpackingError()) { if (m_debug) msg(MSG::DEBUG) << "Corrupt L1Calo event" << endmsg; m_h_l1topo_1d_Errors->Fill(CALO_CONV); + topo_error|=(1<<CALO_CONV); } const DataHandle<CTP_RDO> ctpRDO = 0; @@ -434,38 +441,24 @@ StatusCode L1CaloL1TopoMon::fillHistograms() ctp.setRDO(ctpRDO); const uint16_t l1aPos = ctpRDO->getL1AcceptBunchPosition(); const uint32_t bx=ctp.getBunchCrossings().size(); + const int dbx=bx/2; if (l1aPos >= bx) { ATH_MSG_INFO( "CTP_RDO gave invalid l1aPos." ); } else { ATH_MSG_DEBUG( "CTP l1aPos, size : " << l1aPos << ", " << bx ); if ( bx>=3 && l1aPos>0) { - for (int bc=-1; bc<2; ++bc) { + for (int bc=-dbx; bc<=dbx; ++bc) { const CTP_BC& ctp_bc = ctp.getBunchCrossings().at(l1aPos+bc); std::bitset<512> tip = ctp_bc.getTIP(); - ATH_MSG_VERBOSE( "got CTP TIP bits: " << tip.to_string() ); + ATH_MSG_DEBUG( "got CTP TIP bits: " << tip.to_string() ); const unsigned int topoTipStart(384); const unsigned int nTopoCTPOutputs(128); - for (unsigned int item=0; item<nTopoCTPOutputs; ++item){ - int h = (int)item/32; - int binx = m_h_l1topo_2d_ItemsBC[h]->GetXaxis()->FindBin(item); - int biny = m_h_l1topo_2d_ItemsBC[h]->GetYaxis()->FindBin(bc); - if (item == 8 || item == 29 || item == 30 || item == 31 - || item == 46 || item == 47 || item == 48 || item == 49 - || item == 50 || item == 51 || item == 52 || item == 53 - || item == 54 || item == 55 || item == 56 || item == 57 - || item == 58 || item == 59 || item == 60 || item == 61 - || item == 62 || item == 63 || item == 88 || item == 89 - || item == 90 || item == 91 || item == 92 || item == 93 - || item == 94 || item == 95 || item == 107 || item == 108) { - //Sets bin value for algorithms not used in the run - m_h_l1topo_2d_ItemsBC[item/32]->SetBinContent(binx, biny,-200); - } - else { - //Checks if algorithms fired on event-by-event basis - if (tip.test(item+topoTipStart)) { - m_h_l1topo_2d_ItemsBC[item/32]->Fill(item,bc); - } + for (unsigned int item=0; item<nTopoCTPOutputs;++item) { + // Check if algorithms fired + if (tip.test(item+topoTipStart)) { + m_h_l1topo_2d_ItemsBC[item/32]->Fill(item,bc); + ATH_MSG_DEBUG(" Fired (item, bc) =" << item << ", " << bc); } } } @@ -478,7 +471,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms() sc = evtStore()->retrieve(cmxcptob); if (sc.isFailure() || !cmxcptob) { ATH_MSG_DEBUG ("No CMX CP tobs found in TES"); - //m_h_l1topo_1d_Errors->Fill(NO_CMX_CP); + // tot_error|=NO_CMX_CP; } else { ATH_MSG_DEBUG( "Found CMXCPTobCollection, looping on TOBs ..." ); @@ -506,6 +499,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms() if (sc.isFailure() || !cmxtob) { ATH_MSG_DEBUG ("No CMX tobs found in TES"); m_h_l1topo_1d_Errors->Fill(NO_CMX); + topo_error|=(1<<NO_CMX); } else { ATH_MSG_DEBUG( "Found CMXJetTobCollection, looping on TOBs ..." ); @@ -527,8 +521,8 @@ StatusCode L1CaloL1TopoMon::fillHistograms() // Retrieve L1Topo CTP simulted decision if present if (!evtStore()->contains<LVL1::FrontPanelCTP>(m_topoCTPLoc.value())){ - ATH_MSG_INFO("Could not retrieve LVL1::FrontPanelCTP with key " - << m_topoCTPLoc.value()); + ATH_MSG_DEBUG("Could not retrieve LVL1::FrontPanelCTP with key " + << m_topoCTPLoc.value()); } else { const DataHandle< LVL1::FrontPanelCTP > topoCTP; @@ -538,16 +532,6 @@ StatusCode L1CaloL1TopoMon::fillHistograms() } else { for(unsigned int i=0; i<32; ++i) { - // old scheme - //uint32_t mask = 0x1; mask <<= i; - //if( (m_topoCTP->cableWord0(0) & mask) != 0 ) - // m_h_l1topo_1d_Simulation->Fill(i); // cable 0, clock 0 - //if( (m_topoCTP->cableWord0(1) & mask) != 0 ) - // m_h_l1topo_1d_Simulation->Fill(32 + i); // cable 0, clock 1 - //if( (m_topoCTP->cableWord1(0) & mask) != 0 ) - // m_h_l1topo_1d_Simulation->Fill(64 + i); // cable 1, clock 0 - //if( (m_topoCTP->cableWord1(1) & mask) != 0 ) - // m_h_l1topo_1d_Simulation->Fill(96 + i); // cable 1, clock 1 uint64_t topores0=topoCTP->cableWord0(1); topores0<<=32; topores0+=topoCTP->cableWord0(0); @@ -586,6 +570,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms() sc = evtStore()->retrieve(rdos); if (sc.isFailure() or 0 == rdos) { m_h_l1topo_1d_Errors->Fill(NO_DAQ); + topo_error|=(1<<NO_DAQ); ATH_MSG_DEBUG ( "Could not retrieve L1Topo DAQ RDO collection " "from StoreGate" ); } @@ -598,6 +583,10 @@ StatusCode L1CaloL1TopoMon::fillHistograms() std::vector<uint32_t> daqMuonTobs; std::vector<uint32_t> vFibreSizes; std::vector<uint32_t> vFibreStatus; + + auto triggerBits = L1Topo::getDecisionAndOverflowBits(*rdos); + ATH_MSG_DEBUG( "Trigger bits from L1Topo RDOs 0b" << triggerBits.first ); + ATH_MSG_DEBUG( "Overflow bits from L1Topo RDOs 0b" << triggerBits.second ); for (const L1TopoRDO* rdo : *rdos) { ATH_MSG_VERBOSE( *rdo ); @@ -607,12 +596,14 @@ StatusCode L1CaloL1TopoMon::fillHistograms() if (! errors.empty()){ ATH_MSG_WARNING( "Converter errors reported: " << errors ); m_h_l1topo_1d_Errors->Fill(DAQ_CONV); + topo_error|=(1<<DAQ_CONV); } const std::vector<uint32_t> cDataWords = rdo->getDataWords(); if ( cDataWords.size() == 0 ) { ATH_MSG_DEBUG ( "L1TopoRDO DAQ is empty" ); m_h_l1topo_1d_Errors->Fill(NO_DAQ); + topo_error|=(1<<NO_DAQ); } // initialise header: beware, this can make a valid-looking header @@ -626,6 +617,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms() header = L1Topo::Header(word); if (header.payload_crc()!=0) { m_h_l1topo_1d_Errors->Fill(PAYL_CRC); + topo_error|=(1<<PAYL_CRC); } i_fpga=(((rdo->getSourceID())>>3)&2)+header.fpga(); break; @@ -646,8 +638,11 @@ StatusCode L1CaloL1TopoMon::fillHistograms() auto status = L1Topo::Status(word); ATH_MSG_WARNING( "fibre overflow: " << status.overflow() << " fibre crc: " << status.crc() ); - if (status.overflow()) m_h_l1topo_1d_Errors->Fill(F_OVERFLOW); - if (status.crc()) m_h_l1topo_1d_Errors->Fill(F_CRC); + if (status.overflow()) m_h_l1topo_1d_Overflows->Fill(0.5); + if (status.crc()) { + m_h_l1topo_1d_Errors->Fill(F_CRC); + topo_error|=(1<<F_CRC); + } break; } case L1Topo::BlockTypes::L1TOPO_TOB: @@ -771,11 +766,13 @@ StatusCode L1CaloL1TopoMon::fillHistograms() if (! errors.empty()) { ATH_MSG_WARNING( "Converter errors reported: " << errors ); m_h_l1topo_1d_Errors->Fill(ROI_CONV); + topo_error|=(1<<ROI_CONV); } const std::vector<uint32_t> cDataWords = rdo.getDataWords(); if ( cDataWords.size() == 0 ) { ATH_MSG_DEBUG ( "L1TopoRDO ROI is empty" ); m_h_l1topo_1d_Errors->Fill(NO_ROI); + topo_error|=(1<<NO_ROI); } for (auto word : cDataWords) { switch (L1Topo::blockType(word)) { @@ -786,8 +783,10 @@ StatusCode L1CaloL1TopoMon::fillHistograms() roiTobs.push_back(tob); //auto index = L1Topo::triggerBitIndex(rdo.getSourceID(),tob); for (unsigned int i = 0; i < 8; ++i) { - //m_histTriggerBitsFromROIConv->Fill (index+i,(tob.trigger_bits() >>i)&1); - //m_histOverflowBitsFromROIConv->Fill(index+i,(tob.overflow_bits()>>i)&1); + //m_histTriggerBitsFromROIConv-> + // Fill(index+i,(tob.trigger_bits() >>i)&1); + //m_histOverflowBitsFromROIConv-> + // Fill(index+i,(tob.overflow_bits()>>i)&1); } // histogram trigger and overflow bits break; @@ -815,7 +814,10 @@ StatusCode L1CaloL1TopoMon::fillHistograms() set_symmetric_difference(cmxKeys[t].begin(),cmxKeys[t].end(), topoKeys[t].begin(),topoKeys[t].end(), inserter(keyDiff[t],keyDiff[t].begin())); - if (keyDiff[t].size()>0) m_h_l1topo_1d_Errors->Fill(CMX_MATCH); + if (keyDiff[t].size()>0) { + m_h_l1topo_1d_Errors->Fill(CMX_MATCH); + topo_error|=(1<<CMX_MATCH); + } for (auto& tob : keyDiff[t]) { int x,y; double eta,phi; @@ -850,6 +852,10 @@ StatusCode L1CaloL1TopoMon::fillHistograms() m_h_l1topo_2d_Tobs_Hitmap_match[t]->Fill(x,y); } } + + if (topo_error) { + m_h_l1topo_1d_ErrorsByLumiblock->Fill(m_lumiNo); + } return StatusCode::SUCCESS; } @@ -858,27 +864,24 @@ StatusCode L1CaloL1TopoMon::fillHistograms() StatusCode L1CaloL1TopoMon::procHistograms() /*---------------------------------------------------------*/ { + ATH_MSG_DEBUG("Enter procHistograms()"); + //if ( endOfLumiBlockFlag() ) { } //if ( endOfRunFlag() ) { } - if ( endOfLumiBlockFlag() || endOfRunFlag() ) { - int eor=(endOfRunFlag() ? 1 : 0); - for (int cpu=0; cpu<=3; ++cpu) { - for (int item=1; item<=32; ++item) { - for (int bc=1; bc<=3; ++bc) { - if (m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,bc)<0); - //m_h_l1topo_2d_ItemsBC_ratio[cpu]->SetBinContent(item,bc,-0.4); - else if (m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,bc)==0) - m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]->SetBinContent(item,bc,0.0001); - else if (bc==2) - m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]->SetBinContent(item,bc,1); - else { - float ratio=m_h_l1topo_2d_ItemsBC[cpu]-> - GetBinContent(item,bc)/(float) - m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,2); - m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]-> - SetBinContent(item,bc,fmax(0.05,ratio)); - } + int eor=(endOfRunFlag() ? 1 : 0); + for (int cpu=0; cpu<=3; ++cpu) { + for (int item=1; item<=32; ++item) { + for (int bc=1; bc<=5; ++bc) { + if (m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,bc)==0); + else if (bc==3) + m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]->SetBinContent(item,bc,1); + else { + float binval=m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,bc); + float centerbin=m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,3); + float ratio=(binval<1 || centerbin<1 ? 0 : binval/centerbin); + m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]-> + SetBinContent(item,bc,fmax(0.05,ratio)); } } } diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h index 7db6ce45018..e0957f42ced 100755 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h @@ -58,14 +58,12 @@ class TrigT1CaloLWHistogramTool; virtual StatusCode procHistograms(); enum ERROR_BIT {CALO_CONV=0, NO_CMX, DAQ_CONV, NO_DAQ, ROI_CONV, - NO_ROI, F_OVERFLOW, - F_CRC, PAYL_CRC, CMX_MATCH, NUMBEROFBITS}; + NO_ROI, F_CRC, PAYL_CRC, CMX_MATCH, NUMBEROFBITS}; enum TOB_TYPE {JETL_TOB=0, JETS_TOB, TAU_TOB, EM_TOB, MU_TOB}; std::vector<std::string> ERROR_LABELS{"Calo conv","No CMX","DAQ conv", - "No DAQ","ROI conv","No ROI","Fibre Overf","Fibre CRC", - "Payload CRC","CMX-Topo match"}; + "No DAQ","ROI conv","No ROI","Fibre CRC","Payload CRC","CMX-Topo match"}; private: @@ -96,6 +94,8 @@ class TrigT1CaloLWHistogramTool; bool m_debug; /// Histograms booked flag bool m_histBooked; + /// Current lumiblock + unsigned int m_lumiNo; /** Histos */ // Data transmission checks @@ -108,6 +108,7 @@ class TrigT1CaloLWHistogramTool; TH2F_LW* m_h_l1topo_2d_Tobs_etaPhi_mismatch[TOB_TYPES]; TH2F_LW* m_h_l1topo_2d_Tobs_etaPhi_match[TOB_TYPES]; TH1F_LW* m_h_l1topo_1d_Errors; + TH1F_LW* m_h_l1topo_1d_Overflows; TH1F_LW* m_h_l1topo_1d_DAQTobs; TH1F_LW* m_h_l1topo_1d_DAQJetTobs; TH1F_LW* m_h_l1topo_1d_DAQTauTobs; @@ -117,8 +118,9 @@ class TrigT1CaloLWHistogramTool; TH1F_LW* m_h_l1topo_1d_DAQMismatchTriggerBits; TH1F_LW* m_h_l1topo_1d_DAQOverflowBits; TH1F_LW* m_h_l1topo_1d_ROITobs; - TH2F* m_h_l1topo_2d_ItemsBC[4]; - TH2F* m_h_l1topo_2d_ItemsBC_ratio[4][2]; + TH1F_LW* m_h_l1topo_1d_ErrorsByLumiblock; + TH2F* m_h_l1topo_2d_ItemsBC[4]; + TH2F* m_h_l1topo_2d_ItemsBC_ratio[4][2]; }; // ============================================================================ diff --git a/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py b/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py new file mode 100644 index 00000000000..22c2de37f83 --- /dev/null +++ b/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py @@ -0,0 +1,65 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +## get a handle to the default top-level algorithm sequence +from AthenaCommon.AlgSequence import AlgSequence +topSequence = AlgSequence() +## get a handle to the ServiceManager +from AthenaCommon.AppMgr import ServiceMgr as svcMgr +## get a handle to the ApplicationManager +from AthenaCommon.AppMgr import theApp + +## to decode the MuCTPI bytestream +from TrigT1ResultByteStream.TrigT1ResultByteStreamConf import MuCTPIByteStreamTool,RecMuCTPIByteStreamTool +from TrigT1Muctpi.TrigT1MuctpiConf import CBNTAA_ReadMuCTPI_RDO +from TrigT1Muctpi.TrigT1MuctpiConf import CBNTAA_ReadMuCTPI_RIO +from TrigT1Muctpi.TrigT1MuctpiConf import CBNTAA_MuctpiRoI + +if not hasattr( svcMgr, "THistSvc" ): + from GaudiSvc.GaudiSvcConf import THistSvc + svcMgr += THistSvc() +#svcMgr.THistSvc.Output = ["file1 DATAFILE='HistFile.root' OPT='RECREATE'"]; + +if not hasattr( theApp.Dlls, "RootHistCnv" ): + theApp.Dlls += [ "RootHistCnv" ] + theApp.HistogramPersistency = "ROOT" + +if not hasattr( svcMgr, "NTupleSvc" ): + from GaudiSvc.GaudiSvcConf import NTupleSvc + svcMgr += NTupleSvc() +#svcMgr.NTupleSvc.Output = [ "FILE1 DATAFILE='NtupleFile.root' OPT='NEW'" ] + +if not hasattr( topSequence, "CBNT_AthenaAware" ): + from CBNT_Athena.CBNT_AthenaConf import * + from CBNT_Utils.CBNT_UtilsConf import * + CBNT_AthenaAware = CBNT_AthenaAware() +# CBNT_AthenaAware.OutputLevel = 2 + topSequence += CBNT_AthenaAware + +if not "CBNTAA_EventInfo" in topSequence.CBNT_AthenaAware.Members : + from CBNT_Athena.CBNT_AthenaConf import * + from CBNT_Utils.CBNT_UtilsConf import * + topSequence.CBNT_AthenaAware.Members += ["CBNTAA_EventInfo"] + +if not "CBNTAA_ReadMuCTPI_RDO" in topSequence.CBNT_AthenaAware.Members : + CBNTAA_ReadMuCTPI_RDO = CBNTAA_ReadMuCTPI_RDO() + CBNTAA_ReadMuCTPI_RDO.StoreRawData = False + topSequence.CBNT_AthenaAware.Members += ["CBNTAA_ReadMuCTPI_RDO"] + +if not "CBNTAA_ReadMuCTPI_RIO" in topSequence.CBNT_AthenaAware.Members : + topSequence.CBNT_AthenaAware.Members += ["CBNTAA_ReadMuCTPI_RIO"] + +if not "CBNTAA_MuctpiRoI" in topSequence.CBNT_AthenaAware.Members : + CBNTAA_MuctpiRoI = CBNTAA_MuctpiRoI() + # CBNT_MuctpiRoI.RoISource = "roi" + topSequence.CBNT_AthenaAware.Members += ["CBNTAA_MuctpiRoI"] + +# print topSequence + +# class CBNTAA_Algorithms(): +# """ +# Configurable module to setup ntuple-producing algorithms +# """ +# def __init__( self, name = "CBNTAA_Algorithms" ): +# # +# # CBNT part +# # diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx index bb6060f5bab..2b2f04de4fe 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx @@ -418,7 +418,11 @@ namespace LVL1MUCTPI { m_theMuctpi->processData( &mergedInput ); // Save the output of the simulation CHECK( saveOutput() ); - + + uint32_t can; + std::vector< uint32_t > dataWord; + CHECK( updateMuCTPI_RDO(can, dataWord) ); + // check the other 4 possible BC offset values in case the input objects tells us there are // out of time candidates @@ -433,9 +437,12 @@ namespace LVL1MUCTPI { m_theMuctpi->processData( &mergedInput, (*it)); // Save the output of the simulation CHECK( saveOutput( (*it) ) ); + uint32_t tmp_can; // this isn't used for anything! + CHECK( updateMuCTPI_RDO(tmp_can, dataWord) ); } } } + CHECK( saveOutput_MuCTPI_RDO(can, dataWord) ); return StatusCode::SUCCESS; } @@ -478,6 +485,11 @@ namespace LVL1MUCTPI { // Save the output of the simulation CHECK( saveOutput() ); + uint32_t can; + std::vector< uint32_t > dataWord; + CHECK( updateMuCTPI_RDO(can, dataWord) ); + CHECK( saveOutput_MuCTPI_RDO(can, dataWord) ); + return StatusCode::SUCCESS; } @@ -508,6 +520,11 @@ namespace LVL1MUCTPI { // Save the output of the simulation CHECK( saveOutput() ); + uint32_t can; + std::vector< uint32_t > dataWord; + CHECK( updateMuCTPI_RDO(can, dataWord) ); + CHECK( saveOutput_MuCTPI_RDO(can, dataWord) ); + return StatusCode::SUCCESS; } @@ -579,6 +596,58 @@ namespace LVL1MUCTPI { return StatusCode::SUCCESS; } + /** + *In order to handle multiple BCID per event, the RDO object needs to be saved only after + *all BCID offsets have been processed. This function will update the data word that will + *go to the RDO, but won't save the RDO to storegate yet. + */ + StatusCode L1Muctpi::updateMuCTPI_RDO(uint32_t& can, std::vector< uint32_t >& dataWord) + { + const std::list< unsigned int >& daqData = m_theMuctpi->getDAQData(); + + const int HEADER_SIZE = 9; + const int STATUSandTAILER_SIZE = 2 + 3; + + // size check + // payload should contain at least 1 data (Candidate Multiplicity) + int payloadSize = daqData.size() - HEADER_SIZE - STATUSandTAILER_SIZE; + if( payloadSize < 1 ) { + REPORT_ERROR( StatusCode::FAILURE ) + << "MIROD didn't provide correct DAQ data"; + return StatusCode::FAILURE; + } + + // skip header part + std::list< unsigned int >::const_iterator itDAQ = daqData.begin(); + for( int iHead = 0; iHead < HEADER_SIZE; ++iHead ) { + ++itDAQ; + } + + // candidate multiplicity + can = *itDAQ; + ++itDAQ; + + // data word + //std::vector< uint32_t > dataWord; + for( int iData = 1; iData < payloadSize; ++iData, ++itDAQ ) { + dataWord.push_back( *itDAQ ); + } + + return StatusCode::SUCCESS; + } + + /** + *Here we save the actual RDO, after all BCID offsets have been processed + */ + StatusCode L1Muctpi::saveOutput_MuCTPI_RDO(uint32_t& can, std::vector< uint32_t >& dataWord) + { + MuCTPI_RDO * muCTPI_RDO = new MuCTPI_RDO( can, dataWord ); + CHECK( evtStore()->record( muCTPI_RDO, m_rdoOutputLocId ) ); + ATH_MSG_DEBUG( "MuCTPI_RDO object recorded to StoreGate with key: " + << m_rdoOutputLocId ); + return StatusCode::SUCCESS; + } + /** * This function is used by all the different execute functions to save the output * of the MuCTPI simulation into various objects in StoreGate. @@ -594,41 +663,43 @@ namespace LVL1MUCTPI { << m_ctpOutputLocId ); // create MuCTPI RDO - const std::list< unsigned int >& daqData = m_theMuctpi->getDAQData(); - - const int HEADER_SIZE = 9; - const int STATUSandTAILER_SIZE = 2 + 3; - - // size check - // payload should contain at least 1 data (Candidate Multiplicity) - int payloadSize = daqData.size() - HEADER_SIZE - STATUSandTAILER_SIZE; - if( payloadSize < 1 ) { - REPORT_ERROR( StatusCode::FAILURE ) - << "MIROD didn't provide correct DAQ data"; - return StatusCode::FAILURE; - } - - // skip header part - std::list< unsigned int >::const_iterator itDAQ = daqData.begin(); - for( int iHead = 0; iHead < HEADER_SIZE; ++iHead ) { - ++itDAQ; - } - - // candidate multiplicity - const uint32_t can = *itDAQ; - ++itDAQ; - - // data word - std::vector< uint32_t > dataWord; - for( int iData = 1; iData < payloadSize; ++iData, ++itDAQ ) { - dataWord.push_back( *itDAQ ); - } + // const std::list< unsigned int >& daqData = m_theMuctpi->getDAQData(); + + // const int HEADER_SIZE = 9; + // const int STATUSandTAILER_SIZE = 2 + 3; + + // // size check + // // payload should contain at least 1 data (Candidate Multiplicity) + // int payloadSize = daqData.size() - HEADER_SIZE - STATUSandTAILER_SIZE; + // if( payloadSize < 1 ) { + // REPORT_ERROR( StatusCode::FAILURE ) + // << "MIROD didn't provide correct DAQ data"; + // return StatusCode::FAILURE; + // } + + // // skip header part + // std::list< unsigned int >::const_iterator itDAQ = daqData.begin(); + // for( int iHead = 0; iHead < HEADER_SIZE; ++iHead ) { + // ++itDAQ; + // } + + // // candidate multiplicity + // const uint32_t can = *itDAQ; + // ++itDAQ; + + // // data word + // std::vector< uint32_t > dataWord; + // for( int iData = 1; iData < payloadSize; ++iData, ++itDAQ ) { + // dataWord.push_back( *itDAQ ); + // } // create MuCTPI RDO - MuCTPI_RDO * muCTPI_RDO = new MuCTPI_RDO( can, dataWord ); - CHECK( evtStore()->record( muCTPI_RDO, m_rdoOutputLocId ) ); - ATH_MSG_DEBUG( "MuCTPI_RDO object recorded to StoreGate with key: " - << m_rdoOutputLocId ); + // MuCTPI_RDO * muCTPI_RDO = new MuCTPI_RDO( can, dataWord ); + // std::string rdoOutputLocId = m_rdoOutputLocId; + // if (bcidOffset) rdoOutputLocId = m_rdoOutputLocId+std::to_string(bcidOffset); + // CHECK( evtStore()->record( muCTPI_RDO, rdoOutputLocId ) ); + // ATH_MSG_DEBUG( "MuCTPI_RDO object recorded to StoreGate with key: " + // << rdoOutputLocId ); // store RoIB result in interface object and put to StoreGate std::list< unsigned int > resultForRoIB = m_theMuctpi->getRoIBData(); diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h index 37959254a98..438a42df857 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h @@ -81,6 +81,10 @@ namespace LVL1MUCTPI { StatusCode executeFromRDO(); /// Validate the muon threshold configuration StatusCode validate( const std::vector< TrigConf::TriggerThreshold* >& thresholds ) const; + /// Update the data word for the RDO object + StatusCode updateMuCTPI_RDO(uint32_t& can, std::vector< uint32_t >& dataWord); + /// Save the MuCTPI RDO object + StatusCode saveOutput_MuCTPI_RDO(uint32_t& can, std::vector< uint32_t >& dataWord); /// Save the outputs of the simulation into StoreGate StatusCode saveOutput(int bcidOffset = 0); diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx index 01718c515d5..dfdb7317017 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx @@ -30,6 +30,8 @@ // The output object of the simulation #include "TrigT1Result/MuCTPI_RDO.h" +#include "TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h" +#include "TrigT1Result/MuCTPI_DataWord_Decoder.h" // Inlcudes for the MuCTPI simulation #include "../Algorithms/L1MuctpiTool.h" @@ -366,63 +368,93 @@ namespace LVL1MUCTPI { // algorithm code what to execute. This is essetnially the execute from RDO variant // below without the saveOutput call, since we only want part of that routine. - StatusCode L1MuctpiTool::fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo& l1topoCandidates ) const { + StatusCode L1MuctpiTool::fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo& l1topoCandidates, int bcidOffset) const { ATH_MSG_DEBUG( "in fillMuCTPIL1Topo()" ); // Retrieve the MuCTPIToRoIBSLink or RoIBResult object from storegate: const ROIB::RoIBResult* roibResult {nullptr}; const L1MUINT::MuCTPIToRoIBSLink* muctpi_slink {nullptr}; + const MuCTPI_RDO* muctpiRDO = {nullptr}; - if( evtStore()->contains<L1MUINT::MuCTPIToRoIBSLink>( m_roiOutputLocId) ) { - CHECK( evtStore()->retrieve( muctpi_slink, m_roiOutputLocId) ); - } else if( evtStore()->contains<ROIB::RoIBResult>(m_roibLocation) ) { - CHECK( evtStore()->retrieve(roibResult, m_roibLocation) ); - } else { - ATH_MSG_WARNING("Neither a MuCTPIToRoIBSLink with SG key " << m_roibLocation << " nor an RoIBResult were found in the event."); - return StatusCode::RECOVERABLE; + if(bcidOffset==0) { + if( evtStore()->contains<L1MUINT::MuCTPIToRoIBSLink>( m_roiOutputLocId) ) { + CHECK( evtStore()->retrieve( muctpi_slink, m_roiOutputLocId) ); + } else if( evtStore()->contains<ROIB::RoIBResult>(m_roibLocation) ) { + CHECK( evtStore()->retrieve(roibResult, m_roibLocation) ); + } else { + ATH_MSG_WARNING("Neither a MuCTPIToRoIBSLink with SG key '/Run/L1MuCTPItoRoIBLocation' nor a an RoIBResult were found in the event."); + return StatusCode::RECOVERABLE; + } + }else{ + CHECK( evtStore()->retrieve( muctpiRDO, m_rdoLocId ) ); + ATH_MSG_DEBUG( "Retrieved MuCTPI_RDO object from StoreGate" ); } - // Extract the RoIs into a vector: - std::vector< unsigned int > convertableRoIs; - - if( roibResult ) { - - const std::vector< ROIB::MuCTPIRoI >& rois = roibResult->muCTPIResult().roIVec(); - ATH_MSG_DEBUG("Filling the input event from RoIBResult. Number of Muon ROIs: " << rois.size() ); - for( const ROIB::MuCTPIRoI & muonRoI : rois ) { - convertableRoIs.push_back( muonRoI.roIWord() ); - } - } else if( muctpi_slink ) { - - ATH_MSG_DEBUG("Filling the input event. Number of Muon ROIs: " << muctpi_slink->getMuCTPIToRoIBWords().size() - ROIB::Header::wordsPerHeader - ROIB::Trailer::wordsPerTrailer - 1); - unsigned int icnt = 0; - for ( unsigned int roiword : muctpi_slink->getMuCTPIToRoIBWords() ) { - - ++icnt; - // skip header - if ( icnt <= ROIB::Header::wordsPerHeader + 1 ) - continue; - - // skip trailer - if ( icnt > ( muctpi_slink->getMuCTPIToRoIBWords().size() - ROIB::Trailer::wordsPerTrailer ) ) - continue; - - // fill RoI into vector - convertableRoIs.push_back(roiword); - } - } - - // Create the input to the MuCTPI: + // Convert output of MUCTPi to input LVL1MUONIF::Lvl1MuCTPIInput convertedInput; - CHECK( Converter::convertRoIs( convertableRoIs, &convertedInput ) ); + // if reading from ROS data + if(muctpiRDO) { + + //std::cout << "DataWord Decoding" << std::endl; + //for(auto dW : muctpiRDO->dataWord()) + //MuCTPI_DataWord_Decoder(dW).dumpData(msg()); + + // Get the BCID of the collision: + unsigned int bcid_next = ( ( muctpiRDO->candidateMultiplicity() >> 18 ) & 0x7 ) + bcidOffset; + if(bcid_next==8) bcid_next=0; + ATH_MSG_DEBUG("Filling the input event from MUCTPI_RDO for bcid = " << bcid_next); + + // Create the input to the MuCTPI for the +1 BC + CHECK( Converter::convertRDO( muctpiRDO->dataWord(), bcid_next, &convertedInput ) ); + ATH_MSG_DEBUG("Input converted"); + + } + // or from RoIB data + else{ + + // Extract the RoIs into a vector: + std::vector< unsigned int > convertableRoIs; + + if( roibResult ) { + + const std::vector< ROIB::MuCTPIRoI >& rois = roibResult->muCTPIResult().roIVec(); + ATH_MSG_DEBUG("Filling the input event from RoIBResult. Number of Muon ROIs: " << rois.size() ); + for( const ROIB::MuCTPIRoI & muonRoI : rois ) { + convertableRoIs.push_back( muonRoI.roIWord() ); + } + } else if( muctpi_slink ) { + + ATH_MSG_DEBUG("Filling the input event. Number of Muon ROIs: " << muctpi_slink->getMuCTPIToRoIBWords().size() - ROIB::Header::wordsPerHeader - ROIB::Trailer::wordsPerTrailer - 1); + unsigned int icnt = 0; + for ( unsigned int roiword : muctpi_slink->getMuCTPIToRoIBWords() ) { + + ++icnt; + // skip header + if ( icnt <= ROIB::Header::wordsPerHeader + 1 ) + continue; + + // skip trailer + if ( icnt > ( muctpi_slink->getMuCTPIToRoIBWords().size() - ROIB::Trailer::wordsPerTrailer ) ) + continue; + + // fill RoI into vector + convertableRoIs.push_back(roiword); + } + } + + // Create the input to the MuCTPI: + CHECK( Converter::convertRoIs( convertableRoIs, &convertedInput ) ); + } + // process the input with the MuCTPI simulation + ATH_MSG_DEBUG("MUCTPI data processing..."); m_theMuctpi->processData( &convertedInput ); - + // get outputs for L1Topo ATH_MSG_DEBUG("Getting the output for L1Topo"); l1topoCandidates = m_theMuctpi->getL1TopoData(); - + return StatusCode::SUCCESS; } @@ -759,8 +791,8 @@ namespace LVL1MUCTPI { CHECK( evtStore()->record( l1topo, m_l1topoOutputLocId ) ); // std::cout << "TW: central slice: offset: " << bcidOffset << " location: " << m_l1topoOutputLocId << std::endl; //l1topo->print(); - } - + } + /// if we have a bcid offset, then just get the topo output and put it on storegate if (bcidOffset != 0) { ATH_MSG_DEBUG("Getting the output for L1Topo for BCID slice"); diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h index 5c79f85c92d..ad6e5385e65 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h @@ -33,7 +33,7 @@ namespace LVL1MUCTPI { virtual StatusCode initialize() override; - virtual StatusCode fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo& ) const override; + virtual StatusCode fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo&, int bcidOffset=0) const override; virtual void handle(const Incident&) override; diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc index 9f1896aae00..e7aefb7de35 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc @@ -9,9 +9,6 @@ #include <exception> -// Gaudi/Athena include(s): -#include "GaudiKernel/MsgStream.h" - // eformat include(s): #include "eformat/SourceIdentifier.h" @@ -30,8 +27,7 @@ template< class ROBF > StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, ROIB::RoIBResult*& result ) { - MsgStream log( msgSvc(), name() ); - log << MSG::DEBUG << "executing convert() from ROBFragments to RDO" << endmsg; + ATH_MSG_DEBUG("executing convert() from ROBFragments to RDO"); /* Create all RDOs */ ROIB::CTPResult cTPResult; @@ -86,10 +82,12 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, DataType status; rob.rod_status( status ); uint32_t nstatus = rob.rod_nstatus(); - log << MSG::VERBOSE << "Number of status words: " << nstatus << endmsg; - for( uint32_t i = 0; i < nstatus; ++i, ++status ) { - log << MSG::VERBOSE << " Status word: 0x" << MSG::hex << std::setw( 8 ) - << std::setfill( '0' ) << *status << endmsg; + ATH_MSG_VERBOSE("Number of status words: " << nstatus); + if (msgLvl(MSG::VERBOSE)) { + for( uint32_t i = 0; i < nstatus; ++i, ++status ) { + ATH_MSG_VERBOSE(" Status word: 0x" << MSG::hex << std::setw( 8 ) + << std::setfill( '0' ) << *status); + } } rob.rod_status( status ); @@ -102,16 +100,16 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, statInfo = static_cast< uint32_t >( *status ); } - log << MSG::DEBUG << "ROB ID 0x" << MSG::hex << robId << " ROD ID 0x" + ATH_MSG_DEBUG("ROB ID 0x" << MSG::hex << robId << " ROD ID 0x" << rodId << MSG::dec << " ROB fragment size " - << robFragSize << " ROD fragment size " << rodFragSize << endmsg; + << robFragSize << " ROD fragment size " << rodFragSize); /* CTP ROB */ eformat::helper::SourceIdentifier helpCTPID( eformat::TDAQ_CTP, m_ctpModuleID ); eformat::helper::SourceIdentifier helpCTPID_II( eformat::TDAQ_CTP, 0 ); - log << MSG::DEBUG << "Check ROD ID against CTP 0x" << MSG::hex - << helpCTPID.code() << MSG::dec << endmsg; + ATH_MSG_DEBUG("Check ROD ID against CTP 0x" << MSG::hex + << helpCTPID.code() << MSG::dec); if( rodId == helpCTPID.code() || // this is a hack to catch the early data with the old CTP // firmware, which assigns 0x770000 to both DAQ and LVL2 ROD @@ -121,10 +119,10 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, ( rodId == helpCTPID_II.code() && rodFragSize == 46 ) ) { if( rodId == helpCTPID_II.code() && rodFragSize == 46 ) { - log << MSG::DEBUG << "Take CTP ROD fragment with ID 0x" << MSG::hex << rodId << MSG::dec << endmsg; + ATH_MSG_DEBUG("Take CTP ROD fragment with ID 0x" << MSG::hex << rodId << MSG::dec ); } - log << MSG::DEBUG << " Found CTP ROB." << endmsg; - log << MSG::VERBOSE << " Dumping RoI Words:" << endmsg; + ATH_MSG_DEBUG(" Found CTP ROB."); + ATH_MSG_VERBOSE(" Dumping RoI Words:"); /* Celebrate finding the ROD */ cTPFound = true; @@ -135,14 +133,16 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, rob.rod_data( data ); uint32_t ndata = rob.rod_ndata(); std::vector< ROIB::CTPRoI > cTPContent; + cTPContent.reserve(ndata); for( uint32_t i = 0; i < ndata; ++i, ++data ) { - log << MSG::VERBOSE << " 0x" << MSG::hex << std::setw( 8 ) - << static_cast< uint32_t >( *data ) << endmsg; + ATH_MSG_VERBOSE(" 0x" << MSG::hex << std::setw( 8 ) + << static_cast< uint32_t >( *data )); ROIB::CTPRoI thisRoI( static_cast<uint32_t>( *data ) ); cTPContent.push_back( thisRoI ); } /* Create Trailer */ std::vector< uint32_t > words; + words.reserve(5); words.push_back( errorStat ); // error status words.push_back( statInfo ); // status info words.push_back( 2 ); // number of status words @@ -164,8 +164,8 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, eformat::helper::SourceIdentifier helpMuonID( eformat::TDAQ_MUON_CTP_INTERFACE, m_muCTPIModuleID ); if( rodId == helpMuonID.code() ) { - log << MSG::DEBUG << " Found MuCTPI ROB." << endmsg; - log << MSG::VERBOSE << " Dumping RoI Words:" << endmsg; + ATH_MSG_DEBUG( " Found MuCTPI ROB."); + ATH_MSG_VERBOSE( " Dumping RoI Words:"); /* Celebrate finding the ROB */ muCTPIFound = true; @@ -176,15 +176,17 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, rob.rod_data( data ); uint32_t ndata = rob.rod_ndata(); std::vector< ROIB::MuCTPIRoI > muCTPIContent; + muCTPIContent.reserve(ndata); for( uint32_t i = 0; i < ndata; ++i, ++data ) { - log << MSG::VERBOSE << " 0x" << MSG::hex << std::setw( 8 ) - << static_cast< uint32_t >( *data ) << endmsg; + ATH_MSG_VERBOSE(" 0x" << MSG::hex << std::setw( 8 ) + << static_cast< uint32_t >( *data )); ROIB::MuCTPIRoI thisRoI( static_cast< uint32_t >( *data ) ); muCTPIContent.push_back( thisRoI ); } /* Create trailer */ std::vector< uint32_t > words; + words.reserve(5); words.push_back( errorStat ); // error status words.push_back( statInfo ); // status info words.push_back( 2 ); // number of status words @@ -202,8 +204,8 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, eformat::helper::SourceIdentifier helpJetID_1( eformat::TDAQ_CALO_JET_PROC_ROI, m_jetModuleID[1] ); if( rodId == helpJetID_0.code() || rodId == helpJetID_1.code() ) { - log << MSG::DEBUG << " Found Jet/Energy ROB." << endmsg; - log << MSG::VERBOSE << " Dumping RoI Words:" << endmsg; + ATH_MSG_DEBUG(" Found Jet/Energy ROB."); + ATH_MSG_VERBOSE(" Dumping RoI Words:"); /* Create header */ ROIB::Header jetEnergyHead( rodId, evtNum, formatVersion ); @@ -212,14 +214,16 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, rob.rod_data( data ); uint32_t ndata = rob.rod_ndata(); std::vector< ROIB::JetEnergyRoI > jetEnergyContent; + jetEnergyContent.reserve(ndata); for( uint32_t i = 0; i < ndata; ++i, ++data ) { - log << MSG::VERBOSE << " 0x" << MSG::hex << std::setw( 8 ) - << static_cast< uint32_t >( *data ) << endmsg; + ATH_MSG_VERBOSE(" 0x" << MSG::hex << std::setw( 8 ) + << static_cast< uint32_t >( *data )); ROIB::JetEnergyRoI thisRoI( static_cast< uint32_t >( *data ) ); jetEnergyContent.push_back( thisRoI ); } /* Create trailer */ std::vector< uint32_t > words; + words.reserve(5); words.push_back( errorStat ); // error status words.push_back( statInfo ); // status info words.push_back( 2 ); // number of status words @@ -244,8 +248,8 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, if( rodId == helpEMTauID_0.code() || rodId == helpEMTauID_1.code() || rodId == helpEMTauID_2.code() || rodId == helpEMTauID_3.code() ) { - log << MSG::DEBUG << " Found EM/Tau ROB." << endmsg; - log << MSG::VERBOSE << " Dumping RoI Words:" << endmsg; + ATH_MSG_DEBUG(" Found EM/Tau ROB."); + ATH_MSG_VERBOSE(" Dumping RoI Words:"); /* Create header */ ROIB::Header eMTauHead( rodId, evtNum, formatVersion ); @@ -254,14 +258,16 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, rob.rod_data( data ); uint32_t ndata = rob.rod_ndata(); std::vector<ROIB::EMTauRoI> eMTauContent; + eMTauContent.reserve(ndata); for( uint32_t i = 0; i < ndata; ++i, ++data ) { - log << MSG::VERBOSE << " 0x" << MSG::hex << std::setw( 8 ) - << static_cast< uint32_t >( *data ) << endmsg; + ATH_MSG_VERBOSE(" 0x" << MSG::hex << std::setw( 8 ) + << static_cast< uint32_t >( *data )); ROIB::EMTauRoI thisRoI( static_cast<uint32_t>( *data ) ); eMTauContent.push_back( thisRoI ); } /* Create Trailer */ std::vector< uint32_t > words; + words.reserve(5); words.push_back( errorStat ); // error status words.push_back( statInfo ); // status info words.push_back( 2 ); // number of status words @@ -303,19 +309,20 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, L1TopoRDO l1TopoContent; ATH_MSG_VERBOSE( " Dumping RoI Words:" ); std::vector<uint32_t> vDataWords; + vDataWords.reserve(ndata); for ( uint32_t i = 0; i < ndata; ++i, ++data ) { - vDataWords.push_back( static_cast<uint32_t>( *data ) ); - ATH_MSG_VERBOSE( " 0x" << MSG::hex << std::setfill ('0') << std::setw( 8 ) << static_cast<uint32_t>( *data ) << MSG::dec); + vDataWords.push_back( static_cast<uint32_t>( *data ) ); + ATH_MSG_VERBOSE( " 0x" << MSG::hex << std::setfill ('0') << std::setw( 8 ) << static_cast<uint32_t>( *data ) << MSG::dec); } l1TopoContent.setDataWords(vDataWords); l1TopoContent.setSourceID(rodId); /* Create Trailer */ std::vector< uint32_t > words; // the two status words + words.reserve(5); words.push_back( errorStat ); // error status words.push_back( statInfo ); // status info l1TopoContent.setStatusWords(words); // copy 2 status words to RDO - // words.push_back( 2 ); // number of status words words.push_back( ndata ); // number of data words words.push_back( 1 ); // status block position @@ -352,33 +359,33 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs, eMTauFound[ 0 ] && eMTauFound[ 1 ] && eMTauFound[ 2 ] && eMTauFound[ 3 ] ) { result = new ROIB::RoIBResult( muCTPIResult, cTPResult, jetEnergyResult, eMTauResult ); - log << MSG::DEBUG << "All RoI Builder ROB fragments found" << endmsg; + ATH_MSG_DEBUG("All RoI Builder ROB fragments found"); } else if( cTPFound && jetEnergyFound[ 0 ] && jetEnergyFound[ 1 ] && eMTauFound[ 0 ] && eMTauFound[ 1 ] && eMTauFound[ 2 ] && eMTauFound[ 3 ] ) { result = new ROIB::RoIBResult( cTPResult, eMTauResult, jetEnergyResult ); - log << MSG::DEBUG << "MuCTPI ROB fragment not found, built RoIBResult object without it." << endmsg; + ATH_MSG_DEBUG("MuCTPI ROB fragment not found, built RoIBResult object without it."); } else if( cTPFound && eMTauFound[ 0 ] && eMTauFound[ 1 ] && eMTauFound[ 2 ] && eMTauFound[ 3 ] ) { result = new ROIB::RoIBResult( cTPResult, eMTauResult ); - log << MSG::DEBUG << "MuCTPI and Jet/Energy fragments not found, built RoIBResult object without them." << endmsg; + ATH_MSG_DEBUG("MuCTPI and Jet/Energy fragments not found, built RoIBResult object without them."); } else if( cTPFound && muCTPIFound ) { // jetEnergyResult and eMTauResult are empty result = new ROIB::RoIBResult( muCTPIResult, cTPResult, jetEnergyResult, eMTauResult ); - log << MSG::DEBUG << "Calo fragments not found, built RoIBResult from CTPResult and MuCTPIResult only." << endmsg; + ATH_MSG_DEBUG("Calo fragments not found, built RoIBResult from CTPResult and MuCTPIResult only."); } else if( cTPFound ) { result = new ROIB::RoIBResult( cTPResult ); - log << MSG::DEBUG << "MuCTPI and calo fragments not found, built RoIBResult from CTPResult only." << endmsg; + ATH_MSG_DEBUG("MuCTPI and calo fragments not found, built RoIBResult from CTPResult only."); } else { result = new ROIB::RoIBResult(); - log << MSG::DEBUG << "No LVL1 fragments found, create empty RoIBResult." << endmsg; + ATH_MSG_DEBUG("No LVL1 fragments found, create empty RoIBResult."); } if( l1TopoFound ){ diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx index 0f0fa68ca6b..cfe4d626f0c 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx @@ -78,74 +78,72 @@ StatusCode RoIBResultByteStreamTool::initialize() { return sc; } - MsgStream log( msgSvc(), name() ); - // // Get ByteStreamAddressProviderSvc: // ServiceHandle< IProperty > p_ByteStreamAddressProviderSvc( "ByteStreamAddressProviderSvc", name() ); sc = p_ByteStreamAddressProviderSvc.retrieve(); if( sc.isFailure() ) { - log << MSG::ERROR << "Can't get ByteStreamAddressProviderSvc" << endmsg; + ATH_MSG_ERROR("Can't get ByteStreamAddressProviderSvc"); return sc; } else { - log << MSG::DEBUG << "Connected to " << p_ByteStreamAddressProviderSvc.name() << endmsg; + ATH_MSG_DEBUG("Connected to " << p_ByteStreamAddressProviderSvc.name()); UnsignedIntegerProperty ctpModuleID; ctpModuleID.setName("CTPModuleID"); if (ctpModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("CTPModuleID"))) { m_ctpModuleID = ctpModuleID.value() ; - log << MSG::DEBUG << " ---> getProperty('CTPModuleID') = " << ctpModuleID << endmsg; + ATH_MSG_DEBUG(" ---> getProperty('CTPModuleID') = " << ctpModuleID); } else { - log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('CTPModuleID') failed." << endmsg; + ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('CTPModuleID') failed."); } UnsignedIntegerProperty muCTPIModuleID; muCTPIModuleID.setName("MuCTPIModuleID"); if (muCTPIModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("MuCTPIModuleID"))) { m_muCTPIModuleID = muCTPIModuleID.value() ; - log << MSG::DEBUG << " ---> getProperty('MuCTPIModuleID') = " << muCTPIModuleID << endmsg; + ATH_MSG_DEBUG(" ---> getProperty('MuCTPIModuleID') = " << muCTPIModuleID); } else { - log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('MuCTPIModuleID') failed." << endmsg; + ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('MuCTPIModuleID') failed."); } UnsignedIntegerArrayProperty jetProcModuleID; jetProcModuleID.setName("JetProcModuleID"); if (jetProcModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("JetProcModuleID"))) { m_jetModuleID = jetProcModuleID.value() ; - log << MSG::DEBUG << " ---> getProperty('JetProcModuleID') = " << jetProcModuleID << endmsg; + ATH_MSG_DEBUG(" ---> getProperty('JetProcModuleID') = " << jetProcModuleID); } else { - log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('JetProcModuleID') failed." << endmsg; + ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('JetProcModuleID') failed."); } UnsignedIntegerArrayProperty caloClusterProcModuleID; caloClusterProcModuleID.setName("CaloClusterProcModuleID"); if (caloClusterProcModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("CaloClusterProcModuleID"))) { m_emModuleID = caloClusterProcModuleID.value() ; - log << MSG::DEBUG << " ---> getProperty('CaloClusterProcModuleID') = " << caloClusterProcModuleID << endmsg; + ATH_MSG_DEBUG(" ---> getProperty('CaloClusterProcModuleID') = " << caloClusterProcModuleID); } else { - log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('CaloClusterProcModuleID') failed." << endmsg; + ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('CaloClusterProcModuleID') failed."); } UnsignedIntegerArrayProperty l1TopoModuleID; l1TopoModuleID.setName("TopoProcModuleID"); if (l1TopoModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("TopoProcModuleID"))) { m_l1TopoModuleID = l1TopoModuleID.value(); - log << MSG::DEBUG << " ---> getProperty('TopoProcModuleID') = " << l1TopoModuleID << endmsg; + ATH_MSG_DEBUG(" ---> getProperty('TopoProcModuleID') = " << l1TopoModuleID); } else { - log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('TopoProcModuleID') failed." << endmsg; + ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('TopoProcModuleID') failed."); } } - log<<MSG::DEBUG << " -- Module IDs for: "<<endmsg; - log<<MSG::DEBUG << " CTP = 0x" <<MSG::hex<< m_ctpModuleID <<MSG::dec<<endmsg; - log<<MSG::DEBUG << " muCTPi = 0x" <<MSG::hex<< m_muCTPIModuleID <<MSG::dec<<endmsg; - log<<MSG::DEBUG << " Calorimeter Cluster Processor RoI = 0x" <<MSG::hex<< m_emModuleID[0] - << ", 0x" << m_emModuleID[1] << ", 0x" << m_emModuleID[2] << ", 0x" << m_emModuleID[3] <<MSG::dec<<endmsg; - log<<MSG::DEBUG << " Calorimeter Jet/Energy Processor RoI = 0x" <<MSG::hex<< m_jetModuleID[0] - << ", 0x" << m_jetModuleID[1] <<MSG::dec<<endmsg; + ATH_MSG_DEBUG(" -- Module IDs for: "); + ATH_MSG_DEBUG(" CTP = 0x" <<MSG::hex<< m_ctpModuleID <<MSG::dec); + ATH_MSG_DEBUG(" muCTPi = 0x" <<MSG::hex<< m_muCTPIModuleID <<MSG::dec); + ATH_MSG_DEBUG(" Calorimeter Cluster Processor RoI = 0x" <<MSG::hex<< m_emModuleID[0] + << ", 0x" << m_emModuleID[1] << ", 0x" << m_emModuleID[2] << ", 0x" << m_emModuleID[3] <<MSG::dec); + ATH_MSG_DEBUG(" Calorimeter Jet/Energy Processor RoI = 0x" <<MSG::hex<< m_jetModuleID[0] + << ", 0x" << m_jetModuleID[1] <<MSG::dec); - // log<<MSG::DEBUG << " L1Topo = 0x" <<MSG::hex<< m_l1TopoModuleID[0] << ", 0x" << m_l1TopoModuleID[1] <<MSG::dec<<endmsg; + // ATH_MSG_DEBUG(" L1Topo = 0x" <<MSG::hex<< m_l1TopoModuleID[0] << ", 0x" << m_l1TopoModuleID[1] <<MSG::dec); std::ostringstream topoModulesString; for (unsigned int mid: m_l1TopoModuleID){ topoModulesString << L1Topo::formatHex4(mid) << " "; @@ -169,51 +167,49 @@ StatusCode RoIBResultByteStreamTool::finalize() { */ StatusCode RoIBResultByteStreamTool::convert( ROIB::RoIBResult* result, RawEventWrite* re ) { - MsgStream log( msgSvc(), name() ); - // Clear the event assembler: m_fea.clear(); // Reset lumi-block number to 1 m_fea.setDetEvtType( 1 ); - log << MSG::DEBUG << "executing convert() from RDO to ROBFragments" << endmsg; + ATH_MSG_DEBUG("executing convert() from RDO to ROBFragments"); // I use only this one pointer now to fill the RODs: FullEventAssembler< L1SrcIdMap >::RODDATA* theROD; /** CTP ROD */ - log << MSG::VERBOSE << " Dumping CTP RoI words:" << endmsg; + ATH_MSG_VERBOSE(" Dumping CTP RoI words:"); eformat::helper::SourceIdentifier helpCTPID( eformat::TDAQ_CTP, m_ctpModuleID ); uint32_t rodIdCTP = helpCTPID.code(); theROD = m_fea.getRodData( rodIdCTP ); const std::vector< ROIB::CTPRoI >& CTPRoIVec = result->cTPResult().roIVec(); for( std::vector< ROIB::CTPRoI >::const_iterator j = CTPRoIVec.begin(); j != CTPRoIVec.end(); ++j ) { - log << MSG::VERBOSE << " 0x" << MSG::hex << std::setw( 8 ) << j->roIWord() << endmsg; + ATH_MSG_VERBOSE( " 0x" << MSG::hex << std::setw( 8 ) << j->roIWord() ); theROD->push_back( j->roIWord() ); } /** Muon ROD */ - log << MSG::VERBOSE << " Dumping MuCTPI RoI words:" << endmsg; + ATH_MSG_VERBOSE( " Dumping MuCTPI RoI words:" ); eformat::helper::SourceIdentifier helpMuonID( eformat::TDAQ_MUON_CTP_INTERFACE, m_muCTPIModuleID ); uint32_t rodIdMuon = helpMuonID.code(); theROD = m_fea.getRodData( rodIdMuon ); const std::vector< ROIB::MuCTPIRoI >& MuCTPIRoIVec = result->muCTPIResult().roIVec(); for( std::vector< ROIB::MuCTPIRoI >::const_iterator j = MuCTPIRoIVec.begin(); j != MuCTPIRoIVec.end(); ++j ) { - log << MSG::VERBOSE << " 0x" << MSG::hex << std::setw( 8 ) << j->roIWord() << endmsg; + ATH_MSG_VERBOSE( " 0x" << MSG::hex << std::setw( 8 ) << j->roIWord() ); theROD->push_back( j->roIWord() ); } /** Jet/Energy ROD */ const std::vector< ROIB::JetEnergyResult >& jetEnergyResultVector = result->jetEnergyResult(); for( unsigned int slink = 0; slink < jetEnergyResultVector.size(); ++slink ) { - log << MSG::VERBOSE << " Dumping Jet/Energy " << slink << " RoI words:" << endmsg; + ATH_MSG_VERBOSE( " Dumping Jet/Energy " << slink << " RoI words:" ); eformat::helper::SourceIdentifier helpJetID( eformat::TDAQ_CALO_JET_PROC_ROI, m_jetModuleID[slink] ); theROD = m_fea.getRodData( helpJetID.code() ); const std::vector< ROIB::JetEnergyRoI >& JetEnergyRoIVec = jetEnergyResultVector[ slink ].roIVec(); for( std::vector< ROIB::JetEnergyRoI >::const_iterator j = JetEnergyRoIVec.begin(); j != JetEnergyRoIVec.end(); ++j ) { - log << MSG::VERBOSE << " 0x" << MSG::hex << std::setw( 8 ) << j->roIWord() << endmsg; + ATH_MSG_VERBOSE( " 0x" << MSG::hex << std::setw( 8 ) << j->roIWord() ); theROD->push_back( j->roIWord() ); } } @@ -221,42 +217,43 @@ StatusCode RoIBResultByteStreamTool::convert( ROIB::RoIBResult* result, RawEvent /* EMTau RODs */ const std::vector< ROIB::EMTauResult >& eMTauRDOResultVector = result->eMTauResult(); for( unsigned int slink = 0; slink < eMTauRDOResultVector.size(); ++slink ) { - log << MSG::VERBOSE << " Dumping EM/Tau " << slink << " RoI words:" << endmsg; + ATH_MSG_VERBOSE( " Dumping EM/Tau " << slink << " RoI words:" ); eformat::helper::SourceIdentifier helpEMTauID( eformat::TDAQ_CALO_CLUSTER_PROC_ROI, m_emModuleID[slink]); theROD = m_fea.getRodData( helpEMTauID.code() ); const std::vector< ROIB::EMTauRoI >& EMTauRoIVec = eMTauRDOResultVector[ slink ].roIVec(); for( std::vector<ROIB::EMTauRoI>::const_iterator j = EMTauRoIVec.begin(); j != EMTauRoIVec.end(); ++j ) { - log << MSG::VERBOSE << " 0x" << MSG::hex << std::setw( 8 ) << j->roIWord() << endmsg; + ATH_MSG_VERBOSE( " 0x" << MSG::hex << std::setw( 8 ) << j->roIWord() ); theROD->push_back( j->roIWord() ); } } /** L1Topo ROD */ - log << MSG::VERBOSE << " Dumping L1Topo RoI words" << endmsg; + ATH_MSG_VERBOSE( " Dumping L1Topo RoI words" ); const std::vector< ROIB::L1TopoResult >& l1TopoResultVector = result->l1TopoResult(); - log << MSG::VERBOSE << " Dumping L1Topo RoI words for " << l1TopoResultVector.size() << " RODs:" << endmsg; + ATH_MSG_VERBOSE( " Dumping L1Topo RoI words for " << l1TopoResultVector.size() << " RODs:" ); unsigned int slink(0); for (auto & l1tr : l1TopoResultVector){ uint32_t sourceID = l1tr.rdo().getSourceID(); // needs to be a 16-bit module ID - log << MSG::VERBOSE << " for L1Topo source ID from RDO " << L1Topo::formatHex8(sourceID) << endmsg; + ATH_MSG_VERBOSE( " for L1Topo source ID from RDO " << L1Topo::formatHex8(sourceID) ); if (sourceID == 0 && slink < m_l1TopoModuleID.size()){ sourceID = eformat::helper::SourceIdentifier( eformat::TDAQ_CALO_TOPO_PROC, m_l1TopoModuleID.at(slink) ).code(); - log << MSG::DEBUG << " (source ID in L1TopoRDO was zero so using Property for slink " << slink << ": " << L1Topo::formatHex8(sourceID) << ")" << endmsg; + ATH_MSG_DEBUG(" (source ID in L1TopoRDO was zero so using Property for slink " << slink << ": " << L1Topo::formatHex8(sourceID) << ")"); } else if (sourceID == 0){ sourceID=eformat::helper::SourceIdentifier( eformat::TDAQ_CALO_TOPO_PROC, 0 ).code(); - log << MSG::WARNING << " (source ID in L1TopoRDO was zero, no properties available for slink counter " << slink << ", so as a fall back, constructed module 0 with source ID " << L1Topo::formatHex8(sourceID) << ")" << endmsg; + ATH_MSG_WARNING(" (source ID in L1TopoRDO was zero, no properties available for slink counter " << slink << ", so as a fall back, constructed module 0 with source ID " << L1Topo::formatHex8(sourceID) << ")"); } theROD = m_fea.getRodData( sourceID ); for ( auto & word : l1tr.rdo().getDataWords()){ - log << MSG::VERBOSE << " " << MSG::hex << std::setw(8) << std::showbase << word << std::noshowbase << std::dec << endmsg; + ATH_MSG_VERBOSE(" " << MSG::hex << std::setw(8) << std::showbase << word << std::noshowbase << std::dec); theROD->push_back(word); } ++slink; } /** now fill them into the RawEvent re */ - log << MSG::DEBUG << "Now filling the event with the RoI Builder fragments" << endmsg; + ATH_MSG_DEBUG("Now filling the event with the RoI Builder fragments"); + MsgStream log( msgSvc(), name() ); m_fea.fill( re, log ); return StatusCode::SUCCESS; diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py index 2836d05cd64..43e00921ff0 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py @@ -1,7 +1,5 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -from copy import deepcopy - from Limits import Limits from Lvl1Flags import Lvl1Flags diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py index 282e615f20b..f6a713b838b 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py @@ -1,6 +1,6 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -from Limits import Limits +from Limits import Limits # noqa: F401 from AthenaCommon.Logging import logging log = logging.getLogger("Cabling") log.setLevel(logging.INFO) @@ -117,7 +117,7 @@ class Cabling: 'TE' : [(0,8,'EN1'),(8,16,'EN2')], 'XE' : [(0,8,'EN1'),(8,16,'EN2')], 'XS' : [(0,8,'EN1')], - 'MBTSSI' : [(0,12,'NIM1'),(12,24,'NIM2')], + 'MBTSSI' : [(0,16,'NIM1'),(16,32,'NIM2')], 'MBTS' : [(0,1,'NIM1'), (1,2,'NIM2')], 'LUCID' : [(0,6,'CTPCAL')], 'ZDC' : [(0,3,'CTPCAL')], @@ -146,7 +146,7 @@ class Cabling: @staticmethod def calcBitnum(thrtype): # get the widths for the threshold types is defined in L1Common - exec("nbits = Limits.%s_bitnum" % thrtype) + nbits = getattr(Limits,'%s_bitnum' % thrtype) return nbits @@ -264,8 +264,7 @@ class InputCable: """ Gets the cable assignment from L1Common """ - exec("cable = Limits.%s_cable" % thrtype) - + cable = getattr(Limits,'%s_cable' % thrtype) # we change the format for run 2, the tuple now contains also the bit multiplicity, as it is not constant per type infosize = (len(cable)-1)/cable[0] diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py new file mode 100644 index 00000000000..9518eba3d33 --- /dev/null +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py @@ -0,0 +1,113 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + + +class CoreLut(object): + + # LUT 0-19 of size 15 : tip 0 - 299 + # LUT 20-36 of size 12 : tip 300 - 503 + # LUT 37 of size 8 : tip 504 - 511 + + # maps LUT number to index of first TIP + lutDef = { + 0 : 0, + 1 : 15, + 2 : 30, + 3 : 45, + 4 : 60, + 5 : 75, + 6 : 90, + 7 : 105, + 8 : 120, + 9 : 135, + 10 : 150, + 11 : 165, + 12 : 180, + 13 : 195, + 14 : 210, + 15 : 225, + 16 : 240, + 17 : 255, + 18 : 270, + 19 : 285, + 20 : 300, + 21 : 312, + 22 : 324, + 23 : 336, + 24 : 348, + 25 : 360, + 26 : 372, + 27 : 384, + 28 : 396, + 29 : 408, + 30 : 420, + 31 : 432, + 32 : 444, + 33 : 456, + 34 : 468, + 35 : 480, + 36 : 492, + 37 : 504 + } + + + def __init__(self): + pass + + @staticmethod + def getLutSize(lutnumber): + if lutnumber>=0 and lutnumber<20 : return 15 + if lutnumber>=20 and lutnumber<37 : return 12 + if lutnumber==37: return 8 + raise RuntimeError("CoreLut.py getLutSize(): LUT number %i does not exist" % lutnumber) + + + @staticmethod + def getLutRange(lutnumber): + if lutnumber>=0 and lutnumber<20 : + begin = 15 * lutnumber + end = begin + 14 + elif lutnumber>=20 and lutnumber<37 : + begin = 300 + 12 * (lutnumber-16) + end = begin + 11 + elif lutnumber==37: + begin = 504 + end = 511 + else: + raise RuntimeError("CoreLut.py getLutRange(): LUT number %i does not exist" % lutnumber) + return (begin,end) + + + + @staticmethod + def getLutAndBitFromTIP(tip): + tip = int(tip) + if tip>=0 and tip<300: + lut = tip/15 + elif tip>=300 and tip<504: + lut = (tip-300)/12 + 20 + elif tip>=504 and tip<512: + lut = 37 + else: + raise RuntimeError("CoreLut.py getLutAndBitFromTIP(tip): tip %i does not exist" % tip) + return lut + + + + @staticmethod + def getLutAndBit(connector, signal): + firstTIPofConnector = [320, 384, 448] # last if 511 + + tip = firstTIPofConnector[ connector ] + signal + + return CoreLut.getLutAndBitFromTIP(tip) + + + @staticmethod + def isOnOneLut(connector, phase, listOfCableBits): + + occupiedLuts = set([ CoreLut.getLutAndBit(connector,2*b + phase)[0] for b in listOfCableBits]) + + if len(occupiedLuts)>1: + raise RuntimeError("logic stretches over more than one LUT") + +coreLut = CoreLut() diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py index 38da63573d2..d5edaa71200 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py @@ -50,13 +50,13 @@ class Limits: @staticmethod def getCTPdataformat(version): module = __import__('CTPfragment.CTPdataformat_v%i' % version, globals(), locals(), ['CTPdataformat_v%i' % version], -1) - exec("CTPdataformat = module.CTPdataformat_v%i" % version) + CTPdataformat = getattr(module,'CTPdataformat_v%i' % version) return CTPdataformat @staticmethod def getL1Common(version): module = __import__('L1Common.L1Common_v%i' % version, globals(), locals(), ['L1Common_v%i' % version], -1) - exec("L1Common = module.L1Common_v%i" % version) + L1Common = getattr(module,'L1Common_v%i' % version) return L1Common @staticmethod diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py index ce8e6f034e6..33f3f152a44 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py @@ -2,7 +2,7 @@ __all__ = ['Logic', 'Not'] -from copy import copy,deepcopy +from copy import copy from Lvl1MenuUtil import log diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py index 80fdc158b1a..d79e5bd0abe 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py @@ -4,8 +4,7 @@ Lvl1 specific flags """ -from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer, jobproperties -from TriggerMenu.menu.CommonSliceHelper import AllowedList +from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer from AthenaCommon.Logging import logging from Limits import Limits diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py index 22361ed88a3..c512d276fb0 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py @@ -1,7 +1,7 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -from Lvl1Thresholds import LVL1Thresholds, LVL1Threshold, ThresholdValue -from Lvl1MenuItems import LVL1MenuItems, LVL1MenuItem +from Lvl1Thresholds import LVL1Thresholds +from Lvl1MenuItems import LVL1MenuItems from Lvl1MonCounters import Lvl1MonCounters from CaloInfo import CaloInfo from MuctpiInfo import MuctpiInfo @@ -128,7 +128,6 @@ class Lvl1Menu: All other checks should be implemented in TrigConfStorage/src/CheckConsistency.cxx This method is only for quick solutions but should be intermediate """ - from Lvl1Flags import Lvl1Flags success = True diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py index 1678d4c0c04..74e2dd53a55 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py @@ -1,6 +1,6 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -from PrescaleHelper import getCutFromPrescale, getPrescaleFromCut, maxPrescaleCut +from PrescaleHelper import getCutFromPrescale, getPrescaleFromCut from Lvl1MenuUtil import oldStyle from AthenaCommon.Logging import logging @@ -171,7 +171,6 @@ class PrescaleHandler(object): self.items = menuitems self.itemsByPartition = {} - from Lvl1Flags import Lvl1Flags for item in menuitems: self.itemsByPartition.setdefault(item.partition,[]).append(item) diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py index 857b4a7b32a..66fadaf367d 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py @@ -1,6 +1,6 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -__all__ = ['log', 'idgen', 'binstr', 'get_smk_psk_Name', 'applyLVL1Prescale', 'oldStyle'] +__all__ = ['log', 'idgen', 'binstr', 'get_smk_psk_Name', 'oldStyle'] from AthenaCommon.Logging import logging log = logging.getLogger("TriggerConfigL1") diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py index 4d0cd678b6a..0937b945ba2 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py @@ -3,7 +3,6 @@ from Limits import CaloLimits as CL IsolationOff = CL.IsolationOff -from Lvl1MenuUtil import log from copy import deepcopy class ThresholdValue: diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py index 8732502202b..2fdfe268bdb 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py @@ -1,8 +1,5 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -from TriggerJobOpts.TriggerFlags import TriggerFlags as TF - class TT: """ Trigger type logic diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py index 0d7e538daac..ac13db2527a 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py @@ -8,7 +8,7 @@ from PrescaleHelper import getCutFromPrescale from Logic import Logic from Lvl1Condition import Lvl1InternalTrigger, ThrCondition from CaloInfo import MinimumTOBPt -from Lvl1MonCounters import Lvl1MonCounters, Lvl1CtpinCounter, Lvl1CtpmonCounter +from Lvl1MonCounters import Lvl1CtpinCounter, Lvl1CtpmonCounter from AthenaCommon.Logging import logging -- GitLab From 7869c54d55a46d9f48d473ca317b2df634af3a3e Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Fri, 16 Nov 2018 21:34:37 +0100 Subject: [PATCH 010/135] update copyright statements to 2018 Former-commit-id: a25f3dbb91537c6a9f5044cf0b374ad2c57fe58b --- Trigger/TrigT1/L1Common/python/__init__.py | 2 +- Trigger/TrigT1/L1Common/scripts/XMLtoHeader.py | 2 +- Trigger/TrigT1/L1CommonCore/L1CommonCore/CTPdataformatVersion.h | 2 +- Trigger/TrigT1/TrigT1BCM/TrigT1BCM/TrigT1BCM.h | 2 +- Trigger/TrigT1/TrigT1BCM/src/TrigT1BCM.cxx | 2 +- .../TrigT1CTMonitoring/python/TrigT1CTMonitoringConfig.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/CheckItemDeadtimes.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/CoolHelper.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/GetItemOutput.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadLumiBcid.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadPbmCounters.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_plot.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_reader.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_py.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/check_ctp_deadtime.py | 2 +- .../TrigT1/TrigT1CTMonitoring/scripts/cool_plot_lvl1rates.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_livetime.py | 2 +- .../TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates.py | 2 +- .../TrigT1CTMonitoring/scripts/cool_read_lvl1rates_get_lumi.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_plot.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_reader.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_py.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_readconfig.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_plot.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_reader.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_py.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/fillLVL1histograms.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_RunStatus.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_lb2time.py | 2 +- .../TrigT1/TrigT1CTMonitoring/scripts/l1ct_read_counter_conf.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_runNr.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ctpy.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/scripts/read_bunchgroups.py | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.cxx | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.h | 2 +- .../TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.cxx | 2 +- Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/BunchGroupTrigger.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPConstants.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPDataDumper.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPSimulation.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItem.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItemNode.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerThreshold.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPUtil.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CustomBit.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/EventInfo.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ISpecialTrigger.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ItemMap.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgLogger.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgWriter.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/PrescaledClockTrigger.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/RandomTrigger.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ResultBuilder.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/SpecialTrigger.h | 2 +- Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ThresholdMap.h | 2 +- Trigger/TrigT1/TrigT1CTP/doc/packagedoc.h | 2 +- Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPAlgorithmConfig.py | 2 +- Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPConfig.py | 2 +- Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPMonitoring.py | 2 +- Trigger/TrigT1/TrigT1CTP/python/__init__.py | 2 +- Trigger/TrigT1/TrigT1CTP/src/BunchGroupTrigger.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/CTPConstants.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/CTPDataDumper.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItem.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItemNode.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/CTPTriggerThreshold.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/CTPUtil.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/CustomBit.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/EventInfo.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/ItemMap.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/MsgLogger.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/MsgWriter.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/PrescaledClockTrigger.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/RandomTrigger.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/ResultBuilder.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/SpecialTrigger.cxx | 2 +- Trigger/TrigT1/TrigT1CTP/src/ThresholdMap.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.h | 2 +- .../TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.h | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.h | 2 +- .../TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.h | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.h | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.h | 2 +- .../TrigT1EventAthenaPool/src/JetElementCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.h | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.h | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.cxx | 2 +- .../TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.h | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.h | 2 +- .../TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.cxx | 2 +- .../TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.h | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCnv_p1.cxx | 2 +- .../TrigT1EventTPCnv/src/CMMJetHitsCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMMRoICnv_p1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CMXCPTobCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCnv_p1.cxx | 2 +- .../TrigT1EventTPCnv/src/CMXJetHitsCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CMXJetTobCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CMXRoICnv_p1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CPMHitsCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CPMRoICollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CPMTobRoICollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/CPMTowerCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p2.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/JEMHitsCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/JEMRoICollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/JEMTobRoICollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCnv_p1.cxx | 2 +- .../TrigT1EventTPCnv/src/JetElementCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/MuCTPI_RDOCnv_p1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCnv_p1.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/src/RODHeaderCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/RoIBResultCnv_p1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/TrigT1EventTPCnv.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCnv_p1.cxx | 2 +- .../TrigT1EventTPCnv/src/TriggerTowerCollectionCnv_tlp1.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMMCPHitsCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMMEtSumsCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMMJetHitsCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMMRoICnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPHitsCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPTobCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMXEtSumsCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetHitsCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetTobCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CMXRoICnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CPMHitsCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CPMRoICnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTobRoICnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTowerCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p2_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/JEMEtSumsCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/JEMHitsCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/JEMRoICnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/JEMTobRoICnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/JetElementCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/MuCTPI_RDOCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/RODHeaderCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1EventTPCnv/test/RoIBResultCnv_p1_test.cxx | 2 +- .../TrigT1/TrigT1EventTPCnv/test/TriggerTowerCnv_p1_test.cxx | 2 +- Trigger/TrigT1/TrigT1Lucid/TrigT1Lucid/TrigT1Lucid.h | 2 +- Trigger/TrigT1/TrigT1Lucid/src/TrigT1Lucid.cxx | 2 +- Trigger/TrigT1/TrigT1MBTS/TrigT1MBTS/TrigT1MBTS.h | 2 +- Trigger/TrigT1/TrigT1MBTS/doc/packagedoc.h | 2 +- Trigger/TrigT1/TrigT1MBTS/src/TrigT1MBTS.cxx | 2 +- Trigger/TrigT1/TrigT1Monitoring/doc/packagedoc.h | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.h | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.cxx | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.h | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.cxx | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.h | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.cxx | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.h | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.cxx | 2 +- Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/doc/packagedoc.h | 2 +- .../TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py | 2 +- Trigger/TrigT1/TrigT1Muctpi/python/__init__.py | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.h | 2 +- .../TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.cxx | 2 +- .../TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/Configuration.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/CorruptedFileException.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/Detector.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiBitMasks.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/MultiplicityCalcType.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/NoMoreDataException.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/SectorConstants.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/TestPatternMethods.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgType.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventSource.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.h | 2 +- .../TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.h | 2 +- .../TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.h | 2 +- .../TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.h | 2 +- .../TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.h | 2 +- .../TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.h | 2 +- .../TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.cxx | 2 +- .../TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.h | 2 +- .../TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.cxx | 2 +- .../TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityStrategy.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/StrategyName.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.h | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.cxx | 2 +- Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.h | 2 +- .../TrigT1/TrigT1RPCRecRoiSvc/TrigT1RPCRecRoiSvc/RPCRecRoiSvc.h | 2 +- .../TrigT1/TrigT1RPCRecRoiSvc/python/TrigT1RPCRecRoiConfig.py | 2 +- Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/__init__.py | 2 +- Trigger/TrigT1/TrigT1RPCRecRoiSvc/src/RPCRecRoiSvc.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMAVERSION.h | 2 +- .../TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMROCompare.h | 2 +- .../TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMReprocessing.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1Def.h | 2 +- .../TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcConf.h | 2 +- .../TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcTrig.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Matrix.h | 2 +- .../TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOut.h | 2 +- .../TrigT1RPChardware/MatrixReadOutStructure.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/NOBXS.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Pad.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOut.h | 2 +- .../TrigT1RPChardware/TrigT1RPChardware/PadReadOutStructure.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCROD.h | 2 +- .../TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODDecode.h | 2 +- .../TrigT1RPChardware/TrigT1RPChardware/RPCRODStructure.h | 2 +- .../TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRXRODDecode.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCReadOut.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOut.h | 2 +- .../TrigT1RPChardware/TrigT1RPChardware/RXReadOutStructure.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RpcBook.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorL.h | 2 +- .../TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogic.h | 2 +- .../TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOut.h | 2 +- .../TrigT1RPChardware/SectorLogicRXReadOutStructure.h | 2 +- .../TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOut.h | 2 +- .../TrigT1RPChardware/SectorLogicReadOutStructure.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/crc8.h | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/CMROCompare.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/CMReprocessing.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/Matrix.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOut.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOutStructure.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/Pad.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/PadReadOut.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/PadReadOutStructure.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/RPCROD.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/RPCRODDecode.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/RPCRODStructure.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/RPCRXRODDecode.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/RPCReadOut.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/RXReadOut.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/RXReadOutStructure.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/RpcBook.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/SectorL.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/SectorLogic.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOut.cxx | 2 +- .../TrigT1RPChardware/src/SectorLogicRXReadOutStructure.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOut.cxx | 2 +- .../TrigT1RPChardware/src/SectorLogicReadOutStructure.cxx | 2 +- Trigger/TrigT1/TrigT1RPChardware/src/crc8.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAdata.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMApatterns.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAreadout.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAtrigger.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/MuonSimuTrack.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADdata.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADpatterns.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADreadout.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PATTERNidentity.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCbytestream.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdata.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdigit.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawData.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawDigit.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuData.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuDigit.h | 2 +- .../TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCtrigDataObject.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLdata.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLpatterns.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/ShowData.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/bitPATTERN.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/decodeSL.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/foot.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/large.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/small.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/windows.h | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/CMAdata.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/CMApatterns.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/CMAreadout.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/CMAtrigger.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/MuonSimuTrack.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/PADdata.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/PADpatterns.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/PADreadout.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/PATTERNidentity.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/RPCbytestream.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/RPCdata.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/RPCdigit.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/RPCrawData.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/RPCrawDigit.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuData.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuDigit.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/RPCtrigDataObject.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/SLdata.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/SLpatterns.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/bitPATTERN.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/decodeSL.cxx | 2 +- Trigger/TrigT1/TrigT1RPClogic/src/windows.cxx | 2 +- Trigger/TrigT1/TrigT1RPCsteering/TrigT1RPCsteering/TrigT1RPC.h | 2 +- .../TrigT1/TrigT1RPCsteering/python/TrigT1RPCsteeringConfig.py | 2 +- Trigger/TrigT1/TrigT1RPCsteering/python/__init__.py | 2 +- Trigger/TrigT1/TrigT1RPCsteering/src/TrigT1RPC.cxx | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.icc | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPRoI.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_Decoder.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RDO.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RIO.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauResult.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauRoI.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.icc | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyResult.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyRoI.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/L1TopoResult.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIResult.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIRoI.h | 2 +- .../TrigT1/TrigT1Result/TrigT1Result/MuCTPI_DataWord_Decoder.h | 2 +- .../TrigT1Result/TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RDO.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RIO.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/RecRoIBResult.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/RoIBResult.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.h | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.icc | 2 +- Trigger/TrigT1/TrigT1Result/TrigT1Result/TrigT1ResultDict.h | 2 +- Trigger/TrigT1/TrigT1Result/doc/packagedoc.h | 2 +- Trigger/TrigT1/TrigT1Result/src/CTPResult.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/CTP_Decoder.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/CTP_RDO.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/CTP_RIO.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/EMTauResult.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/EMTauRoI.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/Header.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/JetEnergyResult.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/JetEnergyRoI.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/L1TopoResult.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/MuCTPIResult.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/MuCTPIRoI.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/MuCTPI_DataWord_Decoder.cxx | 2 +- .../TrigT1/TrigT1Result/src/MuCTPI_MultiplicityWord_Decoder.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/MuCTPI_RIO.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/RecRoIBResult.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/RoIBResult.cxx | 2 +- Trigger/TrigT1/TrigT1Result/src/Trailer.cxx | 2 +- .../TrigT1ResultByteStream/CTPByteStreamCnv.h | 2 +- .../TrigT1ResultByteStream/CTPByteStreamTool.h | 2 +- .../TrigT1ResultByteStream/TrigT1ResultByteStream/CTPSrcIdMap.h | 2 +- .../TrigT1ResultByteStream/TrigT1ResultByteStream/L1SrcIdMap.h | 2 +- .../TrigT1ResultByteStream/MuCTPIByteStreamCnv.h | 2 +- .../TrigT1ResultByteStream/MuCTPIByteStreamTool.h | 2 +- .../TrigT1ResultByteStream/MuCTPISrcIdMap.h | 2 +- .../TrigT1ResultByteStream/RecCTPByteStreamCnv.h | 2 +- .../TrigT1ResultByteStream/RecCTPByteStreamTool.h | 2 +- .../TrigT1ResultByteStream/RecMuCTPIByteStreamCnv.h | 2 +- .../TrigT1ResultByteStream/RecMuCTPIByteStreamTool.h | 2 +- .../TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.h | 2 +- .../TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.icc | 2 +- .../TrigT1ResultByteStream/RecRoIBResultByteStreamTool.h | 2 +- .../TrigT1ResultByteStream/RecRoIBResultByteStreamTool.icc | 2 +- .../TrigT1ResultByteStream/RoIBResultByteStreamCnv.h | 2 +- .../TrigT1ResultByteStream/RoIBResultByteStreamCnv.icc | 2 +- .../TrigT1ResultByteStream/RoIBResultByteStreamTool.h | 2 +- .../TrigT1ResultByteStream/RoIBResultByteStreamTool.icc | 2 +- Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamCnv.cxx | 2 +- Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamTool.cxx | 2 +- Trigger/TrigT1/TrigT1ResultByteStream/src/CTPSrcIdMap.cxx | 2 +- Trigger/TrigT1/TrigT1ResultByteStream/src/L1SrcIdMap.cxx | 2 +- .../TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamCnv.cxx | 2 +- .../TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamTool.cxx | 2 +- Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPISrcIdMap.cxx | 2 +- .../TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamCnv.cxx | 2 +- .../TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamTool.cxx | 2 +- .../TrigT1ResultByteStream/src/RecMuCTPIByteStreamCnv.cxx | 2 +- .../TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx | 2 +- .../TrigT1ResultByteStream/src/RecRoIBResultByteStreamTool.cxx | 2 +- .../TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx | 2 +- Trigger/TrigT1/TrigT1RoIB/doc/packagedoc.h | 2 +- Trigger/TrigT1/TrigT1RoIB/python/TrigT1RoIBConfig.py | 2 +- Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.cxx | 2 +- Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.h | 2 +- Trigger/TrigT1/TrigT1RoIB/src/RoIBDefs.h | 2 +- Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.cxx | 2 +- Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.h | 2 +- Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.cxx | 2 +- Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.h | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/LVL1TGCTrigger.h | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/MakeCoincidenceOut.h | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCASDOut.h | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBIDOut.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBoardConnection.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCCoincidence.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionASDToPP.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionHPBToSL.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionInPP.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSB.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSL.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionSBToHPB.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDatabaseManager.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDoubletSB.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCElectronicsSystem.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCEvent.h | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoard.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoardOut.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtChipOut.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHitPattern.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCIndex.h | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerCoincidenceMap.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerSB.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlot.hh | 2 +- .../TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlotHolder.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCNumbering.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanel.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanelOut.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMap.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMatrix.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceOut.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCReadoutIndex.h | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelector.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelectorOut.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelector.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelectorOut.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCController.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCControllerOut.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSector.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSectorLogic.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoard.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoardOut.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripDoubletSB.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripHighPtBoard.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripTripletSB.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDB.h | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDBOut.h | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTileMuCoincidenceMap.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTimingManager.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireDoubletSB.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireHighPtBoard.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireTripletSB.hh | 2 +- Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TrigT1TGC_ClassDEF.h | 2 +- Trigger/TrigT1/TrigT1TGC/doc/packagedoc.h | 2 +- Trigger/TrigT1/TrigT1TGC/python/TrigT1TGCConfig.py | 2 +- Trigger/TrigT1/TrigT1TGC/python/__init__.py | 2 +- Trigger/TrigT1/TrigT1TGC/src/LVL1TGCTrigger.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/MakeCoincidenceOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCASDOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCBIDOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCBoardConnection.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCConnectionASDToPP.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCConnectionHPBToSL.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCConnectionInPP.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSB.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSL.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCConnectionSBToHPB.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCDatabaseManager.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCDoubletSB.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCElectronicsSystem.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCEvent.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoard.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoardOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCHighPtChipOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCHitPattern.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCIndex.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCInnerCoincidenceMap.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCInnerSB.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlot.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlotHolder.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanel.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanelOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMap.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMatrix.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCReadoutIndex.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelector.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelectorOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSLSelector.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSLSelectorOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSSCController.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSSCControllerOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSector.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSectorLogic.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoard.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoardOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCStripHighPtBoard.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCStripTripletSB.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCTMDB.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCTMDBOut.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCTileMuCoincidenceMap.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCTimingManager.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCWireHighPtBoard.cxx | 2 +- Trigger/TrigT1/TrigT1TGC/src/TGCWireTripletSB.cxx | 2 +- .../TrigT1/TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h | 2 +- Trigger/TrigT1/TrigT1TGCRecRoiSvc/doc/packagedoc.h | 2 +- .../TrigT1/TrigT1TGCRecRoiSvc/python/TrigT1TGCRecRoiConfig.py | 2 +- Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/__init__.py | 2 +- Trigger/TrigT1/TrigT1TGCRecRoiSvc/src/TGCRecRoiSvc.cxx | 2 +- Trigger/TrigT1/TrigT1TRT/TrigT1TRT/TrigT1TRT.h | 2 +- Trigger/TrigT1/TrigT1TRT/src/TrigT1TRT.cxx | 2 +- Trigger/TrigT1/TrigT1ZDC/TrigT1ZDC/TrigT1ZDC.h | 2 +- Trigger/TrigT1/TrigT1ZDC/doc/packagedoc.h | 2 +- Trigger/TrigT1/TrigT1ZDC/src/TrigT1ZDC.cxx | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/CTPInfo.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/CaloInfo.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Condition.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MonCounters.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/MuctpiInfo.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/PrescaleHelper.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py | 2 +- .../TriggerCommon/TriggerMenu/python/l1/TriggerTypeDefRun1.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/XMLReader.py | 2 +- Trigger/TriggerCommon/TriggerMenu/python/l1/__init__.py | 2 +- 670 files changed, 670 insertions(+), 670 deletions(-) diff --git a/Trigger/TrigT1/L1Common/python/__init__.py b/Trigger/TrigT1/L1Common/python/__init__.py index 74583d364ec..10eda52d215 100644 --- a/Trigger/TrigT1/L1Common/python/__init__.py +++ b/Trigger/TrigT1/L1Common/python/__init__.py @@ -1,2 +1,2 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration diff --git a/Trigger/TrigT1/L1Common/scripts/XMLtoHeader.py b/Trigger/TrigT1/L1Common/scripts/XMLtoHeader.py index 028c1148dd4..c294b1daf3b 100644 --- a/Trigger/TrigT1/L1Common/scripts/XMLtoHeader.py +++ b/Trigger/TrigT1/L1Common/scripts/XMLtoHeader.py @@ -1,6 +1,6 @@ #!/usr/bin/python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import os.path import sys import getopt diff --git a/Trigger/TrigT1/L1CommonCore/L1CommonCore/CTPdataformatVersion.h b/Trigger/TrigT1/L1CommonCore/L1CommonCore/CTPdataformatVersion.h index fbb3de24e2b..26f756eb057 100644 --- a/Trigger/TrigT1/L1CommonCore/L1CommonCore/CTPdataformatVersion.h +++ b/Trigger/TrigT1/L1CommonCore/L1CommonCore/CTPdataformatVersion.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #pragma message( "The package L1CommonCore is obsolete and will be removed" ) diff --git a/Trigger/TrigT1/TrigT1BCM/TrigT1BCM/TrigT1BCM.h b/Trigger/TrigT1/TrigT1BCM/TrigT1BCM/TrigT1BCM.h index feaee5bd694..8ac64a02162 100644 --- a/Trigger/TrigT1/TrigT1BCM/TrigT1BCM/TrigT1BCM.h +++ b/Trigger/TrigT1/TrigT1BCM/TrigT1BCM/TrigT1BCM.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIG_T1_BCM_H diff --git a/Trigger/TrigT1/TrigT1BCM/src/TrigT1BCM.cxx b/Trigger/TrigT1/TrigT1BCM/src/TrigT1BCM.cxx index 4e54e3f326d..0ee162c4b1a 100644 --- a/Trigger/TrigT1/TrigT1BCM/src/TrigT1BCM.cxx +++ b/Trigger/TrigT1/TrigT1BCM/src/TrigT1BCM.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <stdint.h> diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/python/TrigT1CTMonitoringConfig.py b/Trigger/TrigT1/TrigT1CTMonitoring/python/TrigT1CTMonitoringConfig.py index 931fb0937fa..74e6486a037 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/python/TrigT1CTMonitoringConfig.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/python/TrigT1CTMonitoringConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration ## get a handle to the ApplicationManager from AthenaCommon.AppMgr import theApp diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CheckItemDeadtimes.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CheckItemDeadtimes.py index 9f5a60c16dc..5e8e49f0551 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CheckItemDeadtimes.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CheckItemDeadtimes.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import os, sys, getopt, math import CoolHelper diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CoolHelper.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CoolHelper.py index 4d5a3274533..d48768a8550 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CoolHelper.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CoolHelper.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import sys from PyCool import cool,coral diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/GetItemOutput.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/GetItemOutput.py index 1945d37be74..3862015a536 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/GetItemOutput.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/GetItemOutput.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import os, sys, getopt, math import CoolHelper diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadLumiBcid.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadLumiBcid.py index 346f7d12d71..db881d089ba 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadLumiBcid.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadLumiBcid.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import sys,getopt,os, math from PyCool import cool,coral diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadPbmCounters.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadPbmCounters.py index ea4d7fb7926..13cd7c051a0 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadPbmCounters.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadPbmCounters.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import sys,getopt,os, math from PyCool import cool,coral diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_plot.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_plot.py index 3a35c9176ab..7aac9cc05a7 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_plot.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_plot.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # L1CT crew, Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_reader.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_reader.py index da4c12eae73..9689b7eb864 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_reader.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_reader.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # Level 1 Central Trigger crew, # Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_py.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_py.py index 9a701e2d20f..340444fbc06 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_py.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_py.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # Level 1 Central Trigger crew, # Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/check_ctp_deadtime.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/check_ctp_deadtime.py index 16bc6fcb038..dee806db49a 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/check_ctp_deadtime.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/check_ctp_deadtime.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import sys,getopt,os from PyCool import cool,coral diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_plot_lvl1rates.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_plot_lvl1rates.py index 09247d94126..eec6f4ccd7a 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_plot_lvl1rates.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_plot_lvl1rates.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # L1CT crew, Johan.Lundberg@cern.ch, CERN, 2010 # diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_livetime.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_livetime.py index 600fe9f6af8..f0c8498ff37 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_livetime.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_livetime.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # TODO: check for overflows of counters! # TODO: option to print out counters instead of rates diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates.py index e3bd3a4f469..7317016330c 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # TODO: check for overflows of counters! # TODO: option to print out counters instead of rates diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates_get_lumi.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates_get_lumi.py index a08ef9320e2..0cd70e61172 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates_get_lumi.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates_get_lumi.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # TODO: check for overflows of counters! # TODO: option to print out counters instead of rates diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_plot.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_plot.py index b6a18e3abde..7d72e1fd5a0 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_plot.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_plot.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # L1CT crew, Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_reader.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_reader.py index 5684dcf1f14..7afd526a016 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_reader.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_reader.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # Level 1 Central Trigger crew, # Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_py.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_py.py index 74b770a1a64..9718896b4a4 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_py.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_py.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # Level 1 Central Trigger crew, # Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_readconfig.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_readconfig.py index f433caf668b..6c34427bb0d 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_readconfig.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_readconfig.py @@ -1,6 +1,6 @@ #!/usr/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration #!/bin/env python2.5 # diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_plot.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_plot.py index 3b9cca0a59c..ab7844b4ca4 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_plot.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_plot.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # L1CT crew, Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_reader.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_reader.py index 08f526b42a0..37e6bebbe6d 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_reader.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_reader.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # Level 1 Central Trigger crew, # Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_py.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_py.py index 65d028d1900..42ae2fa47a2 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_py.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_py.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # Level 1 Central Trigger crew, # Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/fillLVL1histograms.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/fillLVL1histograms.py index b587f10ff5e..193e730c7e7 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/fillLVL1histograms.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/fillLVL1histograms.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # set the folder description for the trigger schema (not set by default) import sys,getopt,os diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_RunStatus.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_RunStatus.py index 82c51b71f1f..f8a86ae4179 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_RunStatus.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_RunStatus.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration ## ## Central Trigger Crew, Johan Lundberg, 2009 # diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_lb2time.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_lb2time.py index 443e015f2dc..bddb61ae3ca 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_lb2time.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_lb2time.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # Level 1 Central Trigger crew, # Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_read_counter_conf.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_read_counter_conf.py index c50e01fa9de..3924bc02d38 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_read_counter_conf.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_read_counter_conf.py @@ -1,6 +1,6 @@ #!/usr/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration #!/bin/env python2.5 # diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_runNr.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_runNr.py index a6566e0b88a..3fb5176c12a 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_runNr.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_runNr.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration ## ## Central Trigger Crew, Johan Lundberg, 2009 # diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ctpy.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ctpy.py index 45711ea62f5..b81bdfec0e1 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ctpy.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ctpy.py @@ -1,6 +1,6 @@ #!/bin/env python2.5 -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # Level 1 Central Trigger crew, # Johan.Lundberg@cern.ch, CERN, 2009 diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/read_bunchgroups.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/read_bunchgroups.py index 014d72772fb..9e046a1044f 100755 --- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/read_bunchgroups.py +++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/read_bunchgroups.py @@ -1,6 +1,6 @@ #!/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import sys,getopt,os from PyCool import cool,coral diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.cxx b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.cxx index 393d6735bb1..a96097d02bd 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.cxx +++ b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /// Gaudi includes diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.h b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.h index 984bac770cd..850741fe7d7 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.h +++ b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1_CTMONITORING_BSMONITORING_H diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.cxx b/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.cxx index ab65afc805e..84ba68154b1 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.cxx +++ b/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // STL includes: diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.h b/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.h index 248e1d5eac1..705cb4aa684 100644 --- a/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.h +++ b/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CTMONITORING_DERIVESIMULATIONINPUTS_H diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/BunchGroupTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/BunchGroupTrigger.h index a075545bcfc..06f70f36d9d 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/BunchGroupTrigger.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/BunchGroupTrigger.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CTP_BUNCH_GROUP_TRIGGER_H diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPConstants.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPConstants.h index b4b98403ee5..c2c28ea07f2 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPConstants.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPConstants.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPDataDumper.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPDataDumper.h index 194620516b6..6b6ee13bdd9 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPDataDumper.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPDataDumper.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPSimulation.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPSimulation.h index 1a8efae5d2d..207568a851c 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPSimulation.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPSimulation.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItem.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItem.h index 0c5ba3a76c7..70d98fe340c 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItem.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItem.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItemNode.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItemNode.h index 1a2ffc1ca13..3d21f009acb 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItemNode.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItemNode.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerThreshold.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerThreshold.h index 14e0f8bc5d1..a38508a79b7 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerThreshold.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerThreshold.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPUtil.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPUtil.h index 4c265b3b317..0977e0cd3f4 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPUtil.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPUtil.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CustomBit.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CustomBit.h index fad9b8be76a..1ed211e19a5 100644 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CustomBit.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CustomBit.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/EventInfo.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/EventInfo.h index 6024c1f9819..08cfed385cf 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/EventInfo.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/EventInfo.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CTP_EVENTINFO_H diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ISpecialTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ISpecialTrigger.h index 0451dab8a92..7fff61f7540 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ISpecialTrigger.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ISpecialTrigger.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CTP_ISPECIAL_TRIGGER_H diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ItemMap.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ItemMap.h index 4de5e655704..190e64f1c9a 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ItemMap.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ItemMap.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgLogger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgLogger.h index 27335d93268..55bcaa61009 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgLogger.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgLogger.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CTP_MSGLOGGER_H diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgWriter.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgWriter.h index ffe7912a1a7..35f1c1f00e8 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgWriter.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgWriter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CTP_MSGWRITER_H diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/PrescaledClockTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/PrescaledClockTrigger.h index ef76bac1843..6488c87406f 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/PrescaledClockTrigger.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/PrescaledClockTrigger.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CTP_PRESCALED_CLOCK_TRIGGER_H diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/RandomTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/RandomTrigger.h index 835684ff872..0788d4f3100 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/RandomTrigger.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/RandomTrigger.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CTP_RANDOM_TRIGGER_H diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ResultBuilder.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ResultBuilder.h index 8042cfead0f..28aa9c214e3 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ResultBuilder.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ResultBuilder.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/SpecialTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/SpecialTrigger.h index a748c2b712a..b5036cd5d05 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/SpecialTrigger.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/SpecialTrigger.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1CTP_SPECIAL_TRIGGER_H diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ThresholdMap.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ThresholdMap.h index 9f0e04cf83a..169cf5efe62 100755 --- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ThresholdMap.h +++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ThresholdMap.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/doc/packagedoc.h b/Trigger/TrigT1/TrigT1CTP/doc/packagedoc.h index 95c2e65b713..c4a3af78178 100644 --- a/Trigger/TrigT1/TrigT1CTP/doc/packagedoc.h +++ b/Trigger/TrigT1/TrigT1CTP/doc/packagedoc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPAlgorithmConfig.py b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPAlgorithmConfig.py index 108dd5f3531..fb8ab68c150 100755 --- a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPAlgorithmConfig.py +++ b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPAlgorithmConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration ## get a handle to the default top-level algorithm sequence from AthenaCommon.AlgSequence import AlgSequence diff --git a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPConfig.py b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPConfig.py index 7a377c7490f..3dbfcce8953 100755 --- a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPConfig.py +++ b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from TrigT1CTP.TrigT1CTPConf import * diff --git a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPMonitoring.py b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPMonitoring.py index f4e63f7b82b..055a168211b 100644 --- a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPMonitoring.py +++ b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPMonitoring.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from TrigMonitorBase.TrigGenericMonitoringToolConfig import defineHistogram, TrigGenericMonitoringToolConfig diff --git a/Trigger/TrigT1/TrigT1CTP/python/__init__.py b/Trigger/TrigT1/TrigT1CTP/python/__init__.py index 4be847f2362..a06fe23f111 100755 --- a/Trigger/TrigT1/TrigT1CTP/python/__init__.py +++ b/Trigger/TrigT1/TrigT1CTP/python/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # # $Id: __init__.py,v 1.4 2008-06-10 13:48:37 efeld Exp $ diff --git a/Trigger/TrigT1/TrigT1CTP/src/BunchGroupTrigger.cxx b/Trigger/TrigT1/TrigT1CTP/src/BunchGroupTrigger.cxx index f37598542d0..1eac40d958e 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/BunchGroupTrigger.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/BunchGroupTrigger.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CTP/BunchGroupTrigger.h" diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPConstants.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPConstants.cxx index d08cd729760..0be2fb74631 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/CTPConstants.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/CTPConstants.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPDataDumper.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPDataDumper.cxx index 2a2d38f071e..53e01733352 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/CTPDataDumper.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/CTPDataDumper.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx index 56a9dc82300..84aefde472f 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // STL includes: diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItem.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItem.cxx index 38907a1d54d..beab386acb3 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItem.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItem.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItemNode.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItemNode.cxx index ddf8a31c49a..976bd6e964a 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItemNode.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItemNode.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <cassert> diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerThreshold.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerThreshold.cxx index fef7a551542..b54a11726d1 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerThreshold.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerThreshold.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPUtil.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPUtil.cxx index 3781ab34058..0c39ac29c53 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/CTPUtil.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/CTPUtil.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/CustomBit.cxx b/Trigger/TrigT1/TrigT1CTP/src/CustomBit.cxx index 2917a586fd0..01af8dd4e09 100644 --- a/Trigger/TrigT1/TrigT1CTP/src/CustomBit.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/CustomBit.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/EventInfo.cxx b/Trigger/TrigT1/TrigT1CTP/src/EventInfo.cxx index 23b8654433a..7b14e718257 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/EventInfo.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/EventInfo.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/ItemMap.cxx b/Trigger/TrigT1/TrigT1CTP/src/ItemMap.cxx index 498f0daf5bd..2d7ce375ec5 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/ItemMap.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/ItemMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/MsgLogger.cxx b/Trigger/TrigT1/TrigT1CTP/src/MsgLogger.cxx index 31ce6c14215..f8ca0ad3698 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/MsgLogger.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/MsgLogger.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/MsgWriter.cxx b/Trigger/TrigT1/TrigT1CTP/src/MsgWriter.cxx index 17d5c504f0e..6fe0ab253c0 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/MsgWriter.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/MsgWriter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/PrescaledClockTrigger.cxx b/Trigger/TrigT1/TrigT1CTP/src/PrescaledClockTrigger.cxx index c0d592f07ab..344f88086da 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/PrescaledClockTrigger.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/PrescaledClockTrigger.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/RandomTrigger.cxx b/Trigger/TrigT1/TrigT1CTP/src/RandomTrigger.cxx index 9616abad5ed..fadf9b16842 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/RandomTrigger.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/RandomTrigger.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/ResultBuilder.cxx b/Trigger/TrigT1/TrigT1CTP/src/ResultBuilder.cxx index 621142d74ba..d21739c6c72 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/ResultBuilder.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/ResultBuilder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1CTP/src/SpecialTrigger.cxx b/Trigger/TrigT1/TrigT1CTP/src/SpecialTrigger.cxx index d5bfbde344b..cc1ba5cbacf 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/SpecialTrigger.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/SpecialTrigger.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CTP/SpecialTrigger.h" diff --git a/Trigger/TrigT1/TrigT1CTP/src/ThresholdMap.cxx b/Trigger/TrigT1/TrigT1CTP/src/ThresholdMap.cxx index b31fc4d9273..3ca545def37 100755 --- a/Trigger/TrigT1/TrigT1CTP/src/ThresholdMap.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/ThresholdMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.cxx index b7277feb59c..2918d71d770 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.h index 52984913a05..24a2df3e1e9 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.cxx index 72e5bd60793..b9edeb443ea 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.h index 9deb75e80c5..c57fad3d0e5 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.cxx index dd74f6c1d90..9a5f04fde4f 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.h index 078f1ace1ed..861729471ca 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.cxx index 16809081b94..c735340621f 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.h index 369d7b741e1..e6069bb2a28 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.cxx index 0c58f9da53a..818fd2825e0 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.h index d670739b79e..50341bf347d 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.cxx index d135e56cb52..fc9e17b348e 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.h index 6201e8a3edf..4ce671c54d2 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.cxx index 6935116d0f1..3a59d61506f 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.h index 987e579b0c3..476db70e565 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.cxx index 9f26a223f60..2c0c9b4d294 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.h index c80918b4842..8a585292967 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.cxx index 6c43f9f66e2..1cc4b8f3c15 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.h index c71e09d8367..d4dd9643b0d 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.cxx index 13fbd106fcc..34de049b3f8 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.h index d603c74cf31..0a08261f9ce 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.cxx index bab4346292c..53da59042cf 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.h index 34d04eca567..ee0f545e984 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.cxx index 1270553c4bd..2e1509922ad 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.h index e2880197ffc..cc03fbc3ee9 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.cxx index b11d0c24a8d..1526ec5792d 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.h index 8242a053210..f001f973067 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.cxx index 909a77d70c7..96fb207c327 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.h index 4d107c15578..584d7e3caca 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.cxx index 9e336d30652..ca4ff0f73ee 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.h index 60ea8949bca..75f5634be0f 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1EVENTATHENAPOOL_CTP_RDOCNV_H diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.cxx index 45fe8c6643f..3f28f7530ba 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.h index ce21a8a2279..9f35b83ab93 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.cxx index 8f99e9ac7eb..473aaa19fa8 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.h index b32842c5f0f..5b55426f1f4 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.cxx index d30cc1c80e5..1fe3e548caa 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.h index 8f86a0543af..b123bf6bd3a 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.cxx index 84480ba005f..15208fd44d5 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.h index caed626a5a4..9f252883de0 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.cxx index 920c859ba7f..3b7baa1cb70 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.h index f46e83bf3b8..d5d939b3a08 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.cxx index 97ad8333c4b..c98ef284f0b 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.h index 2aa8faa8050..5f82e428c67 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1EVENTATHENAPOOL_MUCTPI_RDOCNV_H diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.cxx index 3c2e22db1da..ce70c5d27c7 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.h index a39cfed6c50..52115025163 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.cxx index 15a67492c2d..dcdbdf56d80 100755 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.h index a07e959890e..b384f1aac16 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1EVENTATHENAPOOL_ROIBRESULTCNV_H diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.cxx index 93648312431..c18aa0a8164 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.h index ceba4b85b27..31ee17252b7 100644 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.h +++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCnv_p1.cxx index 58881adccdf..59bd5e8d5c1 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMMCPHits.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCollectionCnv_tlp1.cxx index 18ad8528957..dc367afd742 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCnv_p1.cxx index 8b59b5be7d0..4cd8e7a783b 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMMEtSums.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCollectionCnv_tlp1.cxx index 3766bbb2858..0c62ab4ce3d 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCnv_p1.cxx index 0efe4c3d16b..74cc4b2c8b7 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMMJetHits.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCollectionCnv_tlp1.cxx index 9efd154a458..208b457ac48 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMRoICnv_p1.cxx index dbb00b7614f..82b6d8998c7 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMRoICnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMRoICnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMMRoI.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCnv_p1.cxx index 7b8425de53a..4b0310955d8 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMXCPHits.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCollectionCnv_tlp1.cxx index b4758b02fac..450d0c01984 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCnv_p1.cxx index ed502e2340e..3b7997cf9ab 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMXCPTob.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCollectionCnv_tlp1.cxx index 18ddb524dd2..601394b8751 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCnv_p1.cxx index 2365cce2b1f..875cf53b456 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMXEtSums.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCollectionCnv_tlp1.cxx index c5015007951..9fa9c19959a 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCnv_p1.cxx index 545aa41dedb..9aea2bfb1ab 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMXJetHits.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCollectionCnv_tlp1.cxx index af54d49aa0f..a7416caf55d 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCnv_p1.cxx index 6e217eecbae..965413b030c 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMXJetTob.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCollectionCnv_tlp1.cxx index 2c5982c6b55..f6e28c9386d 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXRoICnv_p1.cxx index 4afd032b3de..f4c5d36c2b2 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXRoICnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXRoICnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CMXRoI.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCnv_p1.cxx index 009fa7e6854..5e6b0d462aa 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CPMHits.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCollectionCnv_tlp1.cxx index 526c04ebfc6..28cf553e410 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICnv_p1.cxx index 8a68ddfb1b0..da138b5f257 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CPMRoI.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICollectionCnv_tlp1.cxx index e985a207d5a..50b13779448 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICnv_p1.cxx index 62150031ba5..c71e67fb51e 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CPMTobRoI.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICollectionCnv_tlp1.cxx index d61c9fa247a..f5f7edfeec7 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCnv_p1.cxx index b5942e2a3d3..a070c4d3f09 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/CPMTower.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCollectionCnv_tlp1.cxx index d024ff07e27..f434d9ef09b 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p1.cxx index f2feb842847..896315e435d 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p2.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p2.cxx index 9da284fe7cc..892d442f91a 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p2.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p2.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCnv_p1.cxx index a697b1da549..e7d4dad3b88 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/JEMEtSums.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCollectionCnv_tlp1.cxx index e837a93c219..0f3260c849e 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCnv_p1.cxx index 835b875f059..d47cefce959 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/JEMHits.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCollectionCnv_tlp1.cxx index 1bbbc32dacb..8733dcb968a 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICnv_p1.cxx index aa7b78a531d..9cffff1a94f 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/JEMRoI.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICollectionCnv_tlp1.cxx index b27d5a122b0..d3f8d719a60 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICnv_p1.cxx index 933ac3c8c87..119827d1bb7 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/JEMTobRoI.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICollectionCnv_tlp1.cxx index 84e6ee20344..ae45941e6c9 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCnv_p1.cxx index 52c4c1e53e5..acd9640d18a 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/JetElement.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCollectionCnv_tlp1.cxx index 8e67a9962b6..02800606d85 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/MuCTPI_RDOCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/MuCTPI_RDOCnv_p1.cxx index 0642641d36e..65172cd1b15 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/MuCTPI_RDOCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/MuCTPI_RDOCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCnv_p1.cxx index 326825e98db..bab2479f311 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/RODHeader.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCollectionCnv_tlp1.cxx index a19ea0ad495..cddb0ea4254 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/RoIBResultCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/RoIBResultCnv_p1.cxx index 85c4c5f855e..0226d83941b 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/RoIBResultCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/RoIBResultCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/TrigT1EventTPCnv.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/TrigT1EventTPCnv.cxx index 1f5a67f8827..a688db8e903 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/TrigT1EventTPCnv.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/TrigT1EventTPCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // generate the T/P converter entries diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCnv_p1.cxx index d730fbedd1d..3c7b39985b5 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCnv_p1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1CaloEvent/TriggerTower.h" diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCollectionCnv_tlp1.cxx index 6a9dd3cdba8..225a92e9511 100755 --- a/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCollectionCnv_tlp1.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCollectionCnv_tlp1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMCPHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMCPHitsCnv_p1_test.cxx index 8c9c2eab8b3..34cfa0b16ef 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMCPHitsCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMCPHitsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMEtSumsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMEtSumsCnv_p1_test.cxx index 517dd34e871..da4a7a3f666 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMEtSumsCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMEtSumsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMJetHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMJetHitsCnv_p1_test.cxx index 91447db2a77..942d5e0ba05 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMJetHitsCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMJetHitsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMRoICnv_p1_test.cxx index e5ab9081198..f6ac7b14d29 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMRoICnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMRoICnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPHitsCnv_p1_test.cxx index 195d014656f..c8ef9ffa723 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPHitsCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPHitsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPTobCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPTobCnv_p1_test.cxx index 8f44e1b00b4..b3f23cea563 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPTobCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPTobCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXEtSumsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXEtSumsCnv_p1_test.cxx index 60a2271c505..5be002758dd 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXEtSumsCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXEtSumsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetHitsCnv_p1_test.cxx index 9c936a0c2af..73c9bb94741 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetHitsCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetHitsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetTobCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetTobCnv_p1_test.cxx index 43456a0b27b..80cc7233f3e 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetTobCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetTobCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXRoICnv_p1_test.cxx index 603713d6ea6..c246ccdf4e2 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXRoICnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXRoICnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMHitsCnv_p1_test.cxx index c027388cd45..6161f8076d0 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMHitsCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMHitsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMRoICnv_p1_test.cxx index dec5c610df9..399d2fa96d7 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMRoICnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMRoICnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTobRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTobRoICnv_p1_test.cxx index 65d0505c847..22a499e0c76 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTobRoICnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTobRoICnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTowerCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTowerCnv_p1_test.cxx index f7b4e7a6a75..8707985c18a 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTowerCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTowerCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p1_test.cxx index 926c1a26b02..a18bfaf0868 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p2_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p2_test.cxx index 412d2377ae4..d1c417ba4c1 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p2_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p2_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMEtSumsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMEtSumsCnv_p1_test.cxx index dab09e192d0..d0038b0e886 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMEtSumsCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMEtSumsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMHitsCnv_p1_test.cxx index 46fa6733ac0..6e09a1e8e15 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMHitsCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMHitsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMRoICnv_p1_test.cxx index b72af47bc3d..2c5d838d388 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMRoICnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMRoICnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMTobRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMTobRoICnv_p1_test.cxx index c0b75c5a065..77f915f15a8 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMTobRoICnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMTobRoICnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JetElementCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JetElementCnv_p1_test.cxx index bb797bc6211..7feb3c5c3d8 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JetElementCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JetElementCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/MuCTPI_RDOCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/MuCTPI_RDOCnv_p1_test.cxx index 9200426d342..96fd198802d 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/MuCTPI_RDOCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/MuCTPI_RDOCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/RODHeaderCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/RODHeaderCnv_p1_test.cxx index db9cd11a5b8..7302667746e 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/RODHeaderCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/RODHeaderCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/RoIBResultCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/RoIBResultCnv_p1_test.cxx index 2e65f2cfa49..3fa54bda98a 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/RoIBResultCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/RoIBResultCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/TriggerTowerCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/TriggerTowerCnv_p1_test.cxx index 926d1c78040..e1e15573d6e 100644 --- a/Trigger/TrigT1/TrigT1EventTPCnv/test/TriggerTowerCnv_p1_test.cxx +++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/TriggerTowerCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id$ diff --git a/Trigger/TrigT1/TrigT1Lucid/TrigT1Lucid/TrigT1Lucid.h b/Trigger/TrigT1/TrigT1Lucid/TrigT1Lucid/TrigT1Lucid.h index 588e8c78d97..3c63de97fe3 100644 --- a/Trigger/TrigT1/TrigT1Lucid/TrigT1Lucid/TrigT1Lucid.h +++ b/Trigger/TrigT1/TrigT1Lucid/TrigT1Lucid/TrigT1Lucid.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIG_T1_LUCID_H diff --git a/Trigger/TrigT1/TrigT1Lucid/src/TrigT1Lucid.cxx b/Trigger/TrigT1/TrigT1Lucid/src/TrigT1Lucid.cxx index 284d0adbbb7..78156294741 100644 --- a/Trigger/TrigT1/TrigT1Lucid/src/TrigT1Lucid.cxx +++ b/Trigger/TrigT1/TrigT1Lucid/src/TrigT1Lucid.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1Lucid/TrigT1Lucid.h" diff --git a/Trigger/TrigT1/TrigT1MBTS/TrigT1MBTS/TrigT1MBTS.h b/Trigger/TrigT1/TrigT1MBTS/TrigT1MBTS/TrigT1MBTS.h index 39e7c8cb8e6..af607858c85 100644 --- a/Trigger/TrigT1/TrigT1MBTS/TrigT1MBTS/TrigT1MBTS.h +++ b/Trigger/TrigT1/TrigT1MBTS/TrigT1MBTS/TrigT1MBTS.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1MBTS_H diff --git a/Trigger/TrigT1/TrigT1MBTS/doc/packagedoc.h b/Trigger/TrigT1/TrigT1MBTS/doc/packagedoc.h index 7d14c2b9c42..167b5c79aa9 100644 --- a/Trigger/TrigT1/TrigT1MBTS/doc/packagedoc.h +++ b/Trigger/TrigT1/TrigT1MBTS/doc/packagedoc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1MBTS/src/TrigT1MBTS.cxx b/Trigger/TrigT1/TrigT1MBTS/src/TrigT1MBTS.cxx index 69aa43efa4a..3bc4692d50c 100644 --- a/Trigger/TrigT1/TrigT1MBTS/src/TrigT1MBTS.cxx +++ b/Trigger/TrigT1/TrigT1MBTS/src/TrigT1MBTS.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1MBTS/TrigT1MBTS.h" diff --git a/Trigger/TrigT1/TrigT1Monitoring/doc/packagedoc.h b/Trigger/TrigT1/TrigT1Monitoring/doc/packagedoc.h index 08269ef3d54..5be2b651d5e 100644 --- a/Trigger/TrigT1/TrigT1Monitoring/doc/packagedoc.h +++ b/Trigger/TrigT1/TrigT1Monitoring/doc/packagedoc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx index 9d549720a64..41dd136a8ab 100644 --- a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx +++ b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ******************************************************************** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.h index 1d8eb9188ec..182fc401664 100644 --- a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.h +++ b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ******************************************************************** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.cxx index 001076f45a1..bb78be92bb2 100755 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.cxx +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ******************************************************************** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.h index 63eebd7aabb..9ee5e1f51b0 100755 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.h +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ******************************************************************** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.cxx index 1e978bba280..3ec28f9fc24 100644 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.cxx +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ******************************************************************** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.h index 5efddd62a81..8dfc7e19128 100644 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.h +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx index e0f706a641b..8f0e33e0f6f 100755 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <map> diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h index e0957f42ced..6c9a32461b5 100755 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ******************************************************************** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.cxx index 09f379b0ff8..7bcb938a72e 100755 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.cxx +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ******************************************************************** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.h index 8ec32c00d2d..a92b970fab8 100755 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.h +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ******************************************************************** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.cxx index 38f1283bfa9..2c5b603a7ef 100644 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.cxx +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ******************************************************************** diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.h index a3118b50e97..073446934e3 100644 --- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.h +++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Muctpi/doc/packagedoc.h b/Trigger/TrigT1/TrigT1Muctpi/doc/packagedoc.h index 07abe24b4f3..c4a7fe4f532 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/doc/packagedoc.h +++ b/Trigger/TrigT1/TrigT1Muctpi/doc/packagedoc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py b/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py index 22c2de37f83..92083d42c15 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py +++ b/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration ## get a handle to the default top-level algorithm sequence from AthenaCommon.AlgSequence import AlgSequence diff --git a/Trigger/TrigT1/TrigT1Muctpi/python/__init__.py b/Trigger/TrigT1/TrigT1Muctpi/python/__init__.py index f0cb7ef91c4..670f0c6952e 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/python/__init__.py +++ b/Trigger/TrigT1/TrigT1Muctpi/python/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # File: TrigT1Muctpi/__init__.py # Author: berge@cern.ch diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx index 2b2f04de4fe..2f59f619c37 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: L1Muctpi.cxx 794528 2017-01-30 12:36:33Z fwinkl $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h index 438a42df857..f9ab2367a37 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: L1Muctpi.h 681356 2015-07-08 12:17:52Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.cxx index 42fcf88dce2..55d8bc36666 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: L1MuctpiPatGen.cxx 441850 2011-06-06 14:50:52Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.h index e4aa30d0803..2ed6821a02a 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: L1MuctpiPatGen.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.cxx index 64eb31ac846..14563d6919f 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: L1MuctpiTestReadResults.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.h index 0125fb3664e..61e852a4d17 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: L1MuctpiTestReadResults.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx index dfdb7317017..7d2db622c24 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: L1MuctpiTool.cxx 794528 2017-01-30 12:36:33Z fwinkl $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h index ad6e5385e65..1916095e9b8 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1MUCTPI_L1MUCTPITOOL_H diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.cxx index 53b41de5e82..db2159ba5c6 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: BitOp.cxx 796872 2017-02-13 15:03:25Z fwinkl $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.h index d75f4ba1e06..dfbd3cad8ce 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: BitOp.h 796872 2017-02-13 15:03:25Z fwinkl $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Configuration.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Configuration.h index 6a867bdef73..f999a1fda99 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Configuration.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Configuration.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Configuration.h 515239 2012-08-28 11:39:45Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.cxx index 1f9e2c3e55f..0b61e6ffb5a 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Converter.cxx 707664 2015-11-13 05:36:00Z ssnyder $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.h index 3ee7f62922c..3083a78b63e 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Converter.h 707664 2015-11-13 05:36:00Z ssnyder $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/CorruptedFileException.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/CorruptedFileException.h index 572478e83ec..fb68fca4427 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/CorruptedFileException.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/CorruptedFileException.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: CorruptedFileException.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Detector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Detector.h index d5e3e95f9b8..a5db3ded440 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Detector.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Detector.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Detector.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.cxx index 85e22902d43..1054f11d4ff 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EventID.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.h index 88a59b46c82..8cda8df3548 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EventID.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.cxx index 686af9cf363..9f9755d1e1e 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EventIDSingleton.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.h index 9c78eb6e2c3..a6c0b783aa4 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EventIDSingleton.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.cxx index 53b944e2e3c..1a0a0e6d043 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: GenTestPattern.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.h index 01921b107ba..aa8ed7bff74 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: GenTestPattern.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.cxx index 88419beb4f8..ccf0b3abd72 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.h index 2b12b5320e0..216888744e6 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1MUCTPI_MIOCTL1TOPOCONVERTER_H diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiBitMasks.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiBitMasks.h index 26a5ce4534e..165cd397ad1 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiBitMasks.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiBitMasks.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MuctpiBitMasks.h 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.cxx index 8576a0fc1a4..966f410bb0f 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MuctpiSim.cxx 726107 2016-02-25 11:04:42Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.h index 3bff22b7332..88e16ec110c 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MuctpiSim.h 726107 2016-02-25 11:04:42Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MultiplicityCalcType.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MultiplicityCalcType.h index 5d0f8ac57e7..ffd3e5b1ba2 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MultiplicityCalcType.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MultiplicityCalcType.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MultiplicityCalcType.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.cxx index afebecffb59..f15f5269e49 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MuonCandidate.cxx 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.h index e42d8869119..b0bdad70371 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MuonCandidate.h 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/NoMoreDataException.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/NoMoreDataException.h index 279dc72d8ea..ac28a540d63 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/NoMoreDataException.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/NoMoreDataException.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: NoMoreDataException.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.cxx index c8d7b3444d7..e9950e17b7f 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: PtMultiplicitySet.cxx 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.h index 76a9496ba3c..7967ed12667 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: PtMultiplicitySet.h 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.cxx index c456a7d7b7d..242600bd9c0 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: RandomCandidateRange.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.h index 1dea1e1f921..ccd80838cec 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: RandomCandidateRange.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/SectorConstants.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/SectorConstants.h index 4c0a2f55f09..69ad93a2861 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/SectorConstants.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/SectorConstants.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: SectorConstants.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/TestPatternMethods.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/TestPatternMethods.h index 7f07924c7b0..370c096b21a 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/TestPatternMethods.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/TestPatternMethods.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: TestPatternMethods.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.cxx index 1cdc800b3e8..bfa2f91f9f5 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Verifyer.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.h index 572bf46a8a4..bdee2657b0d 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Verifyer.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.cxx index 38b3da39b42..470acc9c930 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MsgLogger.cxx 706709 2015-11-09 12:10:23Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.h b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.h index 8c4d7d4c9dd..14f5926ef88 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MsgLogger.h 472835 2011-12-06 21:05:16Z stelzer $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgType.h b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgType.h index c4ce3ca4e12..35d0d894488 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgType.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgType.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MsgType.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.cxx index b3ad8f4acad..0827d4359aa 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MsgWriter.cxx 796122 2017-02-08 03:23:15Z ssnyder $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.h b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.h index 1e57575d119..85633c10bd5 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MsgWriter.h 472835 2011-12-06 21:05:16Z stelzer $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.cxx index 3dff59d47ee..c2059c03865 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Lvl1Mibak.cxx 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.h index f99d0a303a4..1d6d4e5956a 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Lvl1Mibak.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.cxx index c7b03aad9c5..20b03642433 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MibakStreamEvent.cxx 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.h index 03f1e389229..123a57d2ad9 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MibakStreamEvent.h 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.cxx index 4bc0c73fe96..3b0ea7e07a6 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MictpData.cxx 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.h index a7b8a893c70..33226b26179 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MictpData.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.cxx index 3f8ef563af6..72e02e14c35 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MictpModule.cxx 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.h index c62d75bf0a2..714c1554116 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MictpModule.h 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.cxx index ddcd064b674..bd768d4f021 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: BarrelSector.cxx 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.h index f77cd9d756c..0c4cc483361 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: BarrelSector.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.cxx index 0305eb599fc..67a213fbc70 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EndcapSector.cxx 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.h index caf1000628e..ab132a812f9 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EndcapSector.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.cxx index 044eaa34fc6..e1150cae32b 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EventReader.cxx 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.h index 12d302502f6..d658c26cda7 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EventReader.h 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.cxx index 30397b09b33..266bfc1602b 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EventReaderFactory.cxx 472835 2011-12-06 21:05:16Z stelzer $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.h index c95f697c530..3d3ee2c3f4e 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EventReaderFactory.h 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventSource.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventSource.h index 90b4a53d0da..f85f383a9d7 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventSource.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventSource.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: EventSource.h 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.cxx index 8891431c41e..59c06a3ac6f 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: ExclusiveMultStrategy.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.h index b724bd17494..0e4121cc677 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: ExclusiveMultStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.cxx index 7d6eba03a30..46212e6d72b 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: ForwardSector.cxx 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.h index 0557028f579..9b207807a66 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: ForwardSector.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.cxx index 76d268578ba..7ec0237d80d 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: InclusiveMultStrategy.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.h index 9527b0dfaa6..03af50641a5 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: InclusiveMultStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.cxx index 2d0771e015c..842763a65db 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTBBOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.h index 9030b9a24a8..3e715c5c890 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTBBOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.cxx index af3bc64f1de..be79f6bd3a8 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTBEOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.h index 12cb614d106..bbdabbf29c0 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTBEOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.cxx index 9cb3bb3511d..812c668ee60 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTEEOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.h index b6d78de022a..246c7dc7961 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTEEOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.cxx index e2b5fccf8fb..66a40c20b4d 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTEFOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.h index bbcd1efeaf0..20fee67d586 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTEFOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.cxx index d34b3d86981..049f710c0f4 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTFFOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.h index 68ac208b5b4..e7a4f4730a5 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTFFOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.cxx index abdb2edbb6f..52ea42ae88d 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTMultiplicityCalculator.cxx 650693 2015-03-01 16:53:48Z masato $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.h index 23d847cfebf..7a2b6cb84aa 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTMultiplicityCalculator.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.cxx index 9f6d22922f3..a5bdad7bf84 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTOverlapCalculatorBase.cxx 448474 2011-07-13 09:01:48Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.h index f9614592e41..79b659be473 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTOverlapCalculatorBase.h 707664 2015-11-13 05:36:00Z ssnyder $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.cxx index 0c50af3351c..d46b6b9d1d8 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTStrategy.cxx 650693 2015-03-01 16:53:48Z masato $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.h index b7860b90dc3..fa7a79800e0 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: LUTStrategy.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.cxx index b91ee0986ce..9cc79f67890 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MioctData.cxx 439423 2011-05-25 21:22:40Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.h index 26e24b65d40..d015b7f930c 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MioctData.h 439303 2011-05-25 15:20:17Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.cxx index a8ca59b6aee..cef6e357d80 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MioctID.cxx 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.h index c749de176b4..59352fb23fc 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MioctID.h 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.cxx index ce3f86b9b22..5d3590dd0df 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MioctModule.cxx 795106 2017-02-02 11:21:27Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.h index 90c75fdc16d..ae5eb2f4de4 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MioctModule.h 678659 2015-06-26 14:54:31Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.cxx index 0934932384f..cbb00ae5840 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MioctSectorSet.cxx 472835 2011-12-06 21:05:16Z stelzer $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.h index bbc64a9eb77..023b9863d7b 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MioctSectorSet.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.cxx index 99df6925312..a1a752f6a44 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MultiplicityLogic.cxx 472835 2011-12-06 21:05:16Z stelzer $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.h index 104f5924137..a24172b8ca7 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MultiplicityLogic.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityStrategy.h index 1fe5c8bd3ac..47156b1fff5 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityStrategy.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityStrategy.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MultiplicityStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.cxx index 9dc8d550471..ada773cdcb3 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: NullStrategy.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.h index 416f907af3f..d65dc42492d 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: NullStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.cxx index 02daebc8594..883915efe79 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: OverlapLogic.cxx 650693 2015-03-01 16:53:48Z masato $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.h index 2eeb3cbc7f8..a3dbdb4649d 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: OverlapLogic.h 650693 2015-03-01 16:53:48Z masato $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.cxx index 2f33fb84862..8004f54e887 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: OverlapStrategy.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.h index aacdbc7a87a..f446acce491 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: OverlapStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.cxx index dca670700a1..83faf51fbf0 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Sector.cxx 796872 2017-02-13 15:03:25Z fwinkl $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.h index cb05918d0ad..abd95b4c0ab 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: Sector.h 796872 2017-02-13 15:03:25Z fwinkl $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.cxx index 0603ad537ad..1ee2c6bccfe 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: SectorID.cxx 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.h index baef5bd5833..73cffda6d82 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: SectorID.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.cxx index ae53bc59bec..333d333786c 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: SectorLogicReader.cxx 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.h index 884b72f50e6..1acae7ddd71 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: SectorLogicReader.h 364083 2011-05-06 09:09:55Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.cxx index a86b5565d43..23915944457 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: SectorLogicSource.cxx 700318 2015-10-13 14:13:15Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.h index defdfa4e229..dc471a399a0 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: SectorLogicSource.h 681356 2015-07-08 12:17:52Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/StrategyName.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/StrategyName.h index b89a03b0cd8..1ed3d56804a 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/StrategyName.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/StrategyName.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: StrategyName.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.cxx index e4bcfca80d6..d44416c6952 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: XMLMultCalculator.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.h index 79910a98406..4ee974ae143 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: XMLMultCalculator.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.cxx index 34badc82207..c2f614c3f33 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: XMLMultStrategy.cxx 472835 2011-12-06 21:05:16Z stelzer $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.h index a7450ec0da2..1284cfbd411 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: XMLMultStrategy.h 701446 2015-10-19 15:19:09Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.cxx index 72499786f51..8bc254c0dec 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodDaqProcessor.cxx 624535 2014-10-28 10:02:49Z stelzer $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.h index b59054c82aa..f37a76da1f7 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodDaqProcessor.h 439423 2011-05-25 21:22:40Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.cxx index 78ad2f87611..6763f5c3a9e 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodEventReader.cxx 441850 2011-06-06 14:50:52Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.h index 137ac313ec1..660ba10410f 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodEventReader.h 439423 2011-05-25 21:22:40Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.cxx index a8bc3483ca4..9ff8d9fafdf 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodExtractor.cxx 441850 2011-06-06 14:50:52Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.h index ef5bb0c521c..c41c4268527 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodExtractor.h 439423 2011-05-25 21:22:40Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.cxx index d285d620eff..fecfe4c031f 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodFiFoContent.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.h index d6c0d235a02..67ebafeeeed 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodFiFoContent.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.cxx index 1c46d04f25b..83c10c92ea5 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodLvl2Processor.cxx 726107 2016-02-25 11:04:42Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.h index b300715ce30..b1ac367d6b2 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodLvl2Processor.h 726107 2016-02-25 11:04:42Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.cxx index 484be28ee76..d057a81aeb2 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodModule.cxx 439303 2011-05-25 15:20:17Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.h index d4448333b77..7c236c20222 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodModule.h 726107 2016-02-25 11:04:42Z wengler $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.cxx index d5281369376..38aaa4e569d 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.cxx +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodTestRamIn.cxx 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.h index 3a0d59f36ca..4c1d1b49423 100644 --- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.h +++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: MirodTestRamIn.h 362102 2011-04-28 13:17:28Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/TrigT1RPCRecRoiSvc/RPCRecRoiSvc.h b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/TrigT1RPCRecRoiSvc/RPCRecRoiSvc.h index 99736f95cea..19dde7fcb82 100755 --- a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/TrigT1RPCRecRoiSvc/RPCRecRoiSvc.h +++ b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/TrigT1RPCRecRoiSvc/RPCRecRoiSvc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1_RPCRECROISVC_H diff --git a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/TrigT1RPCRecRoiConfig.py b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/TrigT1RPCRecRoiConfig.py index 9d2705b091c..48e20ff24f9 100755 --- a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/TrigT1RPCRecRoiConfig.py +++ b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/TrigT1RPCRecRoiConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # $Id: TrigT1RPCRecRoiConfig.py 301203 2010-05-26 12:08:22Z krasznaa $ # diff --git a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/__init__.py b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/__init__.py index f3d4aacf577..b16168c0c3c 100755 --- a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/__init__.py +++ b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # File: TrigT1RPCRecRoiConfig/__init__.py diff --git a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/src/RPCRecRoiSvc.cxx b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/src/RPCRecRoiSvc.cxx index d4093ad9e39..b02dbe07787 100755 --- a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/src/RPCRecRoiSvc.cxx +++ b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/src/RPCRecRoiSvc.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <cmath> diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMAVERSION.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMAVERSION.h index be83a04de68..081cf27a1f7 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMAVERSION.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMAVERSION.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef CMAVERSION diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMROCompare.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMROCompare.h index 1b098a22f55..941daff4fe5 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMROCompare.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMROCompare.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef CMROCompare_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMReprocessing.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMReprocessing.h index b3371150024..f6d116a2cc6 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMReprocessing.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMReprocessing.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef CMReprocessing_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1Def.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1Def.h index 9fb78359390..cdf59a9b27d 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1Def.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1Def.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef Lvl1Def_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcConf.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcConf.h index a50647061b1..7ec618fed18 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcConf.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcConf.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef Lvl1RpcConf_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcTrig.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcTrig.h index 9d67d845ccd..ec6f1c070ee 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcTrig.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcTrig.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef Lvl1RpcTrig_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Matrix.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Matrix.h index bde6287b7b6..c19d16bc19c 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Matrix.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Matrix.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef Matrix_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOut.h index 86b52c5941b..3a7a34e0f1a 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOut.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOut.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef MatrixReadOut_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOutStructure.h index ee9158a9d7a..709b8fdede5 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOutStructure.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOutStructure.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef MatrixReadOutStructure_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/NOBXS.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/NOBXS.h index 5ff915efb4b..b5e2f2886e0 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/NOBXS.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/NOBXS.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef NOBXS_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Pad.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Pad.h index b0b52896e0c..84b5c9972ae 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Pad.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Pad.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "NOBXS.h" diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOut.h index 6fd62385e35..534bf719854 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOut.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOut.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef PadReadOut_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOutStructure.h index 1438a49c260..9efeb157311 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOutStructure.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOutStructure.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef PadReadOutStructure_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCROD.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCROD.h index e4452956bdc..7ec812d32a7 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCROD.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCROD.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RPCROD_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODDecode.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODDecode.h index fdbe33617ea..8be8b2b9971 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODDecode.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODDecode.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RPCRODDecode_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODStructure.h index c9681b9cae8..d770a45a202 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODStructure.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODStructure.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RPCRODStructure_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRXRODDecode.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRXRODDecode.h index d23cff7bce1..9dac177f27f 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRXRODDecode.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRXRODDecode.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RPCRXRODDecode_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCReadOut.h index ba497ea5014..00230168f4e 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCReadOut.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCReadOut.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RPCReadOut_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOut.h index 3e142d205fe..1176307a7ba 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOut.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOut.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RXReadOut_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOutStructure.h index de0367b7aa0..dea0b737328 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOutStructure.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOutStructure.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RXReadOutStructure_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RpcBook.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RpcBook.h index 9c3af51f307..83dd193875e 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RpcBook.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RpcBook.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RPCBOOK_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorL.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorL.h index ac220e2c2a7..92d70409609 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorL.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorL.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "NOBXS.h" diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogic.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogic.h index 333ff18459c..ecc80288eb4 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogic.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogic.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef SectorLogic_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOut.h index 5b0e657b626..db3059c782e 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOut.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOut.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef SectorLogicRXReadOut_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOutStructure.h index a7a77420c00..55e972434c0 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOutStructure.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOutStructure.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef SectorLogicRXReadOutStructure_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOut.h index 05ce0c6b82e..5faef476144 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOut.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOut.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef SectorLogicReadOut_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOutStructure.h index 84e883d2e0a..4c8b67f73b2 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOutStructure.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOutStructure.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef SectorLogicReadOutStructure_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/crc8.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/crc8.h index 1a788fe7848..c25bee685ec 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/crc8.h +++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/crc8.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef crc8_H diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/CMROCompare.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/CMROCompare.cxx index 49ffefeb5a3..ea38d04e16b 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/CMROCompare.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/CMROCompare.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/CMReprocessing.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/CMReprocessing.cxx index fc72c4540ac..83fd6aa5044 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/CMReprocessing.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/CMReprocessing.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/Matrix.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/Matrix.cxx index 6cb16c30f5f..8cb8d2fd795 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/Matrix.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/Matrix.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOut.cxx index 2bff4790813..db59009db3a 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOut.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOutStructure.cxx index ec271ded41d..29c0cd0d539 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOutStructure.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOutStructure.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/Pad.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/Pad.cxx index ab2985d379b..7d187714469 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/Pad.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/Pad.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOut.cxx index 4e64494500a..422aaf8c1a7 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOut.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOutStructure.cxx index 78ad84d1ce6..115edad3a33 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOutStructure.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOutStructure.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCROD.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCROD.cxx index 44c9b7e3ed6..8a89b5b2f95 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCROD.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCROD.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODDecode.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODDecode.cxx index a6f46aa46bd..6b40f8e3cf1 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODDecode.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODDecode.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODStructure.cxx index b71fc39bd21..b35602667fc 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODStructure.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODStructure.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRXRODDecode.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRXRODDecode.cxx index 34dee67d86b..523040db861 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRXRODDecode.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRXRODDecode.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCReadOut.cxx index a7052941982..ed813977a70 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCReadOut.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCReadOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOut.cxx index 0b5f89e972b..c39f2251773 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOut.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOutStructure.cxx index 8885a09eccd..5fd869f1ee8 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOutStructure.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOutStructure.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RpcBook.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RpcBook.cxx index c98bc5a14fa..c75dfa5a64e 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/RpcBook.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/RpcBook.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPChardware/RpcBook.h" diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorL.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorL.cxx index 40e0789d4ed..25d97eb629b 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorL.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorL.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogic.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogic.cxx index ac5673ab1c3..279b8db8c90 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogic.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogic.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //****************************************************************************// diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOut.cxx index b815db5af16..ef3e2c8a202 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOut.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOutStructure.cxx index b93087b4038..f674db87a93 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOutStructure.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOutStructure.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOut.cxx index 61b7e00c479..b4f12221401 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOut.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOutStructure.cxx index 9bcfbcd3a5e..3281a8425d0 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOutStructure.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOutStructure.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include<fstream> diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/crc8.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/crc8.cxx index b8ff20b6e1c..d2774acc619 100755 --- a/Trigger/TrigT1/TrigT1RPChardware/src/crc8.cxx +++ b/Trigger/TrigT1/TrigT1RPChardware/src/crc8.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAdata.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAdata.h index 7d939bf19d9..2745382daa1 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAdata.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAdata.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef CMADATA_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMApatterns.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMApatterns.h index ff683af66d7..94417b168b3 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMApatterns.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMApatterns.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef CMAPATTERNS_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAreadout.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAreadout.h index e0603168efd..c6982a4d2e4 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAreadout.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAreadout.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAtrigger.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAtrigger.h index 02fffcdb12a..41145162856 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAtrigger.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAtrigger.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/MuonSimuTrack.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/MuonSimuTrack.h index 99d5f9f499b..c7c2c4632d0 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/MuonSimuTrack.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/MuonSimuTrack.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADdata.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADdata.h index a71fa29867d..8f617f9d544 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADdata.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADdata.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef PADDATA_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADpatterns.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADpatterns.h index da1ad1faafa..4825a086373 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADpatterns.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADpatterns.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADreadout.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADreadout.h index 730153e767c..3b366794777 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADreadout.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADreadout.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PATTERNidentity.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PATTERNidentity.h index f13c190bc28..1fa82085c05 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PATTERNidentity.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PATTERNidentity.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef PATTERNIDENTITY_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCbytestream.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCbytestream.h index 8e1a5533f99..45163364c14 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCbytestream.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCbytestream.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdata.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdata.h index acc4ae1a71d..7a35dc416b4 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdata.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdata.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdigit.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdigit.h index 49659d8bb0f..b072cc678ee 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdigit.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdigit.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RPCDIGIT_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawData.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawData.h index 07d38f80526..b2d59822dad 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawData.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawData.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawDigit.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawDigit.h index 773414545d9..977f5ef2593 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawDigit.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawDigit.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef SIMUDIGIT_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuData.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuData.h index bf0e49cc425..baf33adf8b0 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuData.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuData.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuDigit.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuDigit.h index 350a77a7a76..fc6d72e54b3 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuDigit.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuDigit.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef SIMUDIGIT_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCtrigDataObject.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCtrigDataObject.h index acdd98b54e3..bc5e716070f 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCtrigDataObject.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCtrigDataObject.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef DATAOBJECT_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLdata.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLdata.h index 5a79d34e457..313246964a9 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLdata.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLdata.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef SLDATA_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLpatterns.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLpatterns.h index 8d4232d130f..245d5a8376f 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLpatterns.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLpatterns.h @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/ShowData.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/ShowData.h index d76543df515..18c436c9f2d 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/ShowData.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/ShowData.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/bitPATTERN.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/bitPATTERN.h index e6af6cb9e9c..6bbd98a4c0c 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/bitPATTERN.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/bitPATTERN.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef BITPATTERN_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/decodeSL.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/decodeSL.h index d1bcd31ecc0..af143940754 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/decodeSL.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/decodeSL.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/foot.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/foot.h index 5d701e5d7b6..01ab3ac6253 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/foot.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/foot.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef ATRIG_FOOT_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/large.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/large.h index 66f59bfaf4c..1fe7ad2eff1 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/large.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/large.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef ATRIG_LARGE_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/small.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/small.h index 6549ee3cf6e..fd87eb5ddb6 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/small.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/small.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef ATRIG_SMALL_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/windows.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/windows.h index 9afc2a8829d..9f86c542a50 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/windows.h +++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/windows.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef WINDOWS_H diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/CMAdata.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/CMAdata.cxx index 47ab4ce98a3..8e1cefb4f34 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/CMAdata.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/CMAdata.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/CMAdata.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/CMApatterns.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/CMApatterns.cxx index bc832115659..359c4aa819a 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/CMApatterns.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/CMApatterns.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <math.h> diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/CMAreadout.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/CMAreadout.cxx index bc7c1b6ad6e..1e8feef5115 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/CMAreadout.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/CMAreadout.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/CMAreadout.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/CMAtrigger.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/CMAtrigger.cxx index 387500f8062..e560e09a210 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/CMAtrigger.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/CMAtrigger.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/CMAtrigger.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/MuonSimuTrack.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/MuonSimuTrack.cxx index 03c1c58b060..389c20a25d1 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/MuonSimuTrack.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/MuonSimuTrack.cxx @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/PADdata.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/PADdata.cxx index 6a195f2ca6a..bc00ef73279 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/PADdata.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/PADdata.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/PADdata.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/PADpatterns.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/PADpatterns.cxx index 0d0b2a584b5..05280975ef9 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/PADpatterns.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/PADpatterns.cxx @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/PADreadout.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/PADreadout.cxx index 0596b3422f2..bc5162da92a 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/PADreadout.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/PADreadout.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/PADreadout.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/PATTERNidentity.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/PATTERNidentity.cxx index cbc8796179f..ffc75bb69c0 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/PATTERNidentity.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/PATTERNidentity.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/PATTERNidentity.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCbytestream.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCbytestream.cxx index a42e53fcdd4..8557e3aa7df 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCbytestream.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCbytestream.cxx @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCdata.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCdata.cxx index 7bb0df97b83..52ed12e4a13 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCdata.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCdata.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/RPCdata.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCdigit.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCdigit.cxx index 48c0c66ca07..15532eaaf30 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCdigit.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCdigit.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <math.h> diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawData.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawData.cxx index cf749cdea84..33bdaa49973 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawData.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawData.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/RPCrawData.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawDigit.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawDigit.cxx index 4ac2a31567b..2bacbbef28a 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawDigit.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawDigit.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/RPCrawDigit.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuData.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuData.cxx index 07fa8f5436d..be1500cdbc1 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuData.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuData.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/RPCsimuData.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuDigit.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuDigit.cxx index 5cce763fe86..4d6ef5ec4ff 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuDigit.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuDigit.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/RPCsimuDigit.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCtrigDataObject.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCtrigDataObject.cxx index ba222379013..10333e22099 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCtrigDataObject.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCtrigDataObject.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iomanip> diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/SLdata.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/SLdata.cxx index 18c93a7e6f8..8c382104b0f 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/SLdata.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/SLdata.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/SLdata.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/SLpatterns.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/SLpatterns.cxx index 1e8df518a8a..a4f6c0859ee 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/SLpatterns.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/SLpatterns.cxx @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/bitPATTERN.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/bitPATTERN.cxx index 1484164aeb5..a15ef72d16b 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/bitPATTERN.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/bitPATTERN.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/bitPATTERN.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/decodeSL.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/decodeSL.cxx index ded2ea0463a..24513fcf0dc 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/decodeSL.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/decodeSL.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPClogic/decodeSL.h" diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/windows.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/windows.cxx index 97eb0f9dee1..37ba75d6a9d 100755 --- a/Trigger/TrigT1/TrigT1RPClogic/src/windows.cxx +++ b/Trigger/TrigT1/TrigT1RPClogic/src/windows.cxx @@ -1,7 +1,7 @@ /* // -*- C++ -*- */ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1RPCsteering/TrigT1RPCsteering/TrigT1RPC.h b/Trigger/TrigT1/TrigT1RPCsteering/TrigT1RPCsteering/TrigT1RPC.h index 58a20fea33b..c2c56e53b76 100755 --- a/Trigger/TrigT1/TrigT1RPCsteering/TrigT1RPCsteering/TrigT1RPC.h +++ b/Trigger/TrigT1/TrigT1RPCsteering/TrigT1RPCsteering/TrigT1RPC.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef RPCMuonTrigger_H diff --git a/Trigger/TrigT1/TrigT1RPCsteering/python/TrigT1RPCsteeringConfig.py b/Trigger/TrigT1/TrigT1RPCsteering/python/TrigT1RPCsteeringConfig.py index 2629d8ab43d..38c189a02bd 100755 --- a/Trigger/TrigT1/TrigT1RPCsteering/python/TrigT1RPCsteeringConfig.py +++ b/Trigger/TrigT1/TrigT1RPCsteering/python/TrigT1RPCsteeringConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from TrigT1RPCsteering.TrigT1RPCsteeringConf import * from AthenaCommon.GlobalFlags import globalflags diff --git a/Trigger/TrigT1/TrigT1RPCsteering/python/__init__.py b/Trigger/TrigT1/TrigT1RPCsteering/python/__init__.py index a9420b89e53..c0638976cf3 100755 --- a/Trigger/TrigT1/TrigT1RPCsteering/python/__init__.py +++ b/Trigger/TrigT1/TrigT1RPCsteering/python/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # File: TrigT1RPCsteeringConfig/__init__.py diff --git a/Trigger/TrigT1/TrigT1RPCsteering/src/TrigT1RPC.cxx b/Trigger/TrigT1/TrigT1RPCsteering/src/TrigT1RPC.cxx index c12c54294fa..96dcc112c76 100755 --- a/Trigger/TrigT1/TrigT1RPCsteering/src/TrigT1RPC.cxx +++ b/Trigger/TrigT1/TrigT1RPCsteering/src/TrigT1RPC.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1RPCsteering/TrigT1RPC.h" diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h index 916c5943948..a8f71039a94 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.icc b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.icc index e4a7d33b731..b3ba29a3675 100644 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.icc +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.icc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // tdaq-common includes for CTP format definition diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPRoI.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPRoI.h index ff390d79b0f..1e73bc7881e 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPRoI.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPRoI.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_Decoder.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_Decoder.h index 914a0b752ed..ca544ba89b7 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_Decoder.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_Decoder.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1_CTP_DECODER_H diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RDO.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RDO.h index 774ac68f453..e3c0e3476c0 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RDO.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RDO.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // TO DO: encapsulate logic from raw data words! And fill the data diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RIO.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RIO.h index 612254b9b94..bee2652336d 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RIO.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RIO.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /* ********************************************************** diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauResult.h index e79ecfa350d..e10d5e934df 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauResult.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauResult.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /* ********************************************************** diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauRoI.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauRoI.h index fcd5ac48fce..debc54cd44c 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauRoI.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauRoI.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /* ********************************************************** diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.h index 1818e471d22..23e35fe1404 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.icc b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.icc index 3ba55a76c4c..bf1488d05ff 100644 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.icc +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.icc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyResult.h index 885be510428..cfb0f36402f 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyResult.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyResult.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /* ********************************************************** diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyRoI.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyRoI.h index 46912cd535d..e08e198a9f9 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyRoI.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyRoI.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /* ********************************************************** diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/L1TopoResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/L1TopoResult.h index 5888ae14bc3..3e436710b0c 100644 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/L1TopoResult.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/L1TopoResult.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULT_L1TOPORESULT_H diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIResult.h index 41d35f7a17f..ec0489d46da 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIResult.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIResult.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULT_MUCTPIRESULT_H diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIRoI.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIRoI.h index 6dcebe46090..0e1c683c68c 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIRoI.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIRoI.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULT_MUCTPIROI_H diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_DataWord_Decoder.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_DataWord_Decoder.h index 7453b318676..d6c2de27e02 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_DataWord_Decoder.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_DataWord_Decoder.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULT_MUCTPI_DATAWORD_DECODER_H diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h index e99285208e9..29e1f185bb5 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULT_MUCTPI_MULTIPLICITYWORD_DECODER_H diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RDO.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RDO.h index aae7e77883c..97d63e18a70 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RDO.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RDO.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULT_MUCTPI_RDO_H diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RIO.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RIO.h index 91aa2de542e..ce6d64dac2e 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RIO.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RIO.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULT_MUCTPI_RIO_H diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/RecRoIBResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/RecRoIBResult.h index 8f63e680578..b1d0830f33e 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/RecRoIBResult.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/RecRoIBResult.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /* ********************************************************** diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/RoIBResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/RoIBResult.h index 310d337d8de..f2b84102526 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/RoIBResult.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/RoIBResult.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.h index 0ba86b33002..89fad78cffa 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.icc b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.icc index 760bb07b0c8..7cb724a62fc 100644 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.icc +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.icc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/TrigT1ResultDict.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/TrigT1ResultDict.h index ccc11cc5b67..1334190baf5 100755 --- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/TrigT1ResultDict.h +++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/TrigT1ResultDict.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /* diff --git a/Trigger/TrigT1/TrigT1Result/doc/packagedoc.h b/Trigger/TrigT1/TrigT1Result/doc/packagedoc.h index 87b17b9f3c0..5c2f44df929 100644 --- a/Trigger/TrigT1/TrigT1Result/doc/packagedoc.h +++ b/Trigger/TrigT1/TrigT1Result/doc/packagedoc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1Result/src/CTPResult.cxx b/Trigger/TrigT1/TrigT1Result/src/CTPResult.cxx index beb07da0513..f47d2399fa0 100755 --- a/Trigger/TrigT1/TrigT1Result/src/CTPResult.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/CTPResult.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/CTP_Decoder.cxx b/Trigger/TrigT1/TrigT1Result/src/CTP_Decoder.cxx index ced997806f6..9a37b65293a 100755 --- a/Trigger/TrigT1/TrigT1Result/src/CTP_Decoder.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/CTP_Decoder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/CTP_RDO.cxx b/Trigger/TrigT1/TrigT1Result/src/CTP_RDO.cxx index d00a7105d9d..ce1e091f651 100755 --- a/Trigger/TrigT1/TrigT1Result/src/CTP_RDO.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/CTP_RDO.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/CTP_RIO.cxx b/Trigger/TrigT1/TrigT1Result/src/CTP_RIO.cxx index 063fc1680ee..3b878df48b8 100755 --- a/Trigger/TrigT1/TrigT1Result/src/CTP_RIO.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/CTP_RIO.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "GaudiKernel/Bootstrap.h" diff --git a/Trigger/TrigT1/TrigT1Result/src/EMTauResult.cxx b/Trigger/TrigT1/TrigT1Result/src/EMTauResult.cxx index 76332a59a22..e24cdee5142 100755 --- a/Trigger/TrigT1/TrigT1Result/src/EMTauResult.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/EMTauResult.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/EMTauRoI.cxx b/Trigger/TrigT1/TrigT1Result/src/EMTauRoI.cxx index 1ba8b221b4b..1176f9c807f 100755 --- a/Trigger/TrigT1/TrigT1Result/src/EMTauRoI.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/EMTauRoI.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/Header.cxx b/Trigger/TrigT1/TrigT1Result/src/Header.cxx index 465e771bcb8..5ddd0bcd293 100755 --- a/Trigger/TrigT1/TrigT1Result/src/Header.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/Header.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/JetEnergyResult.cxx b/Trigger/TrigT1/TrigT1Result/src/JetEnergyResult.cxx index dfa3a1dd4fd..483d29ceeb7 100755 --- a/Trigger/TrigT1/TrigT1Result/src/JetEnergyResult.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/JetEnergyResult.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/JetEnergyRoI.cxx b/Trigger/TrigT1/TrigT1Result/src/JetEnergyRoI.cxx index 596671e4f2f..6acf5c90902 100755 --- a/Trigger/TrigT1/TrigT1Result/src/JetEnergyRoI.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/JetEnergyRoI.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/L1TopoResult.cxx b/Trigger/TrigT1/TrigT1Result/src/L1TopoResult.cxx index 9186f6f1952..1708ec2b088 100644 --- a/Trigger/TrigT1/TrigT1Result/src/L1TopoResult.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/L1TopoResult.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1Result/L1TopoResult.h" diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPIResult.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPIResult.cxx index 57831e17685..3f3c40efae0 100755 --- a/Trigger/TrigT1/TrigT1Result/src/MuCTPIResult.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPIResult.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPIRoI.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPIRoI.cxx index eb06c8a3889..23bb73c9e31 100755 --- a/Trigger/TrigT1/TrigT1Result/src/MuCTPIRoI.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPIRoI.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_DataWord_Decoder.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_DataWord_Decoder.cxx index b92c50dacd2..3ade8210f10 100755 --- a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_DataWord_Decoder.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_DataWord_Decoder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_MultiplicityWord_Decoder.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_MultiplicityWord_Decoder.cxx index 85fdfcab007..5e01c7b8007 100755 --- a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_MultiplicityWord_Decoder.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_MultiplicityWord_Decoder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_RIO.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_RIO.cxx index fd1eaf5a927..7d04ee430d4 100755 --- a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_RIO.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_RIO.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/RecRoIBResult.cxx b/Trigger/TrigT1/TrigT1Result/src/RecRoIBResult.cxx index b0cb6689665..e28e24ec9f8 100755 --- a/Trigger/TrigT1/TrigT1Result/src/RecRoIBResult.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/RecRoIBResult.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1Result/src/RoIBResult.cxx b/Trigger/TrigT1/TrigT1Result/src/RoIBResult.cxx index 10eb7e07845..2f4a66c7bb5 100755 --- a/Trigger/TrigT1/TrigT1Result/src/RoIBResult.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/RoIBResult.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1Result/src/Trailer.cxx b/Trigger/TrigT1/TrigT1Result/src/Trailer.cxx index 06d8b074b1e..c3b6c17c121 100755 --- a/Trigger/TrigT1/TrigT1Result/src/Trailer.cxx +++ b/Trigger/TrigT1/TrigT1Result/src/Trailer.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamCnv.h index 98cf450d92e..6036434596b 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamCnv.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamCnv.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_CTPBYTESTREAMCNV_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamTool.h index a22cfe453f9..6d7358bdd1f 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamTool.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamTool.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_CTPBYTESTREAMTOOL_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPSrcIdMap.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPSrcIdMap.h index caee42dca38..548e9f611c0 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPSrcIdMap.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPSrcIdMap.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_CTPSRCIDMAP_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/L1SrcIdMap.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/L1SrcIdMap.h index deb797aaed7..359eba7cb25 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/L1SrcIdMap.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/L1SrcIdMap.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_L1SRCIDMAP_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamCnv.h index 4e95eaf6160..e5eae54bfd7 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamCnv.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamCnv.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_MUCTPIBYTESTREAMCNV_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamTool.h index af689afc3a1..d0ce8534983 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamTool.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamTool.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_MUCTPIBYTESTREAMTOOL_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPISrcIdMap.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPISrcIdMap.h index 791a5a3d68c..66c757cffa8 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPISrcIdMap.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPISrcIdMap.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_MUCTPISRCIDMAP_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamCnv.h index e8ab5a37bb0..0a5eed5e95a 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamCnv.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamCnv.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_RECCTPBYTESTREAMCNV_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamTool.h index eafbd1c97c2..bf489c062ae 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamTool.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamTool.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_RECCTPBYTESTREAMTOOL_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamCnv.h index 093c57fd33f..3e2dfbddf3c 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamCnv.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamCnv.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_RECMUCTPIBYTESTREAMCNV_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamTool.h index c1361b68792..f9d326607d3 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamTool.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamTool.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_RECMUCTPIBYTESTREAMTOOL_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.h index ece0869796f..35ca48a4416 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_RECROIBRESULTBYTESTREAMCNV_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.icc b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.icc index 21265c38ce6..4ae484f8d9d 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.icc +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.icc @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_RECROIBRESULTBYTESTREAMCNV_ICC diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.h index 5a3f16f1b77..3613fdd71b4 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_RECROIBRESULTBYTESTREAMTOOL_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.icc b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.icc index d7e60439aef..14b85ba382a 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.icc +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.icc @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_RECROIBRESULTBYTESTREAMTOOL_ICC diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.h index 2bfc6ebecfa..1e6f4be66fc 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_ROIBRESULTBYTESTREAMCNV_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.icc b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.icc index dc1276a561f..6cac6272f31 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.icc +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.icc @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_ROIBRESULTBYTESTREAMCNV_ICC diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.h index 9aebc8c7304..8a65af43920 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_ROIBRESULTBYTESTREAMTOOL_H diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc index e7aefb7de35..33cdc1f7021 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc +++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1RESULTBYTESTREAM_ROIBRESULTBYTESTREAMTOOL_ICC diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamCnv.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamCnv.cxx index f1469ce7750..23b7841c34e 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamCnv.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamTool.cxx index 2ba4234c93b..f0ef7876299 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamTool.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // CTP data format include(s): diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPSrcIdMap.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPSrcIdMap.cxx index ebf0f1aadf6..beac4995592 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPSrcIdMap.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPSrcIdMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/L1SrcIdMap.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/L1SrcIdMap.cxx index 18b998cb3b5..e921881c290 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/L1SrcIdMap.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/L1SrcIdMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamCnv.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamCnv.cxx index 636c7c0691f..6610c55ed47 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamCnv.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamTool.cxx index 37682f660cc..a54ae1195bc 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamTool.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1ResultByteStream/MuCTPIByteStreamTool.h" diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPISrcIdMap.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPISrcIdMap.cxx index d227080819f..8db3b7d9a42 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPISrcIdMap.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPISrcIdMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "eformat/SourceIdentifier.h" diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamCnv.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamCnv.cxx index 0e2da6a2ff4..d270aa8e290 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamCnv.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamTool.cxx index 1c8d7c07cd4..f29af7aaf38 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamTool.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // Trigger include(s): diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamCnv.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamCnv.cxx index e19d179067b..e495669ae0e 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamCnv.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx index 268804a2b38..dfa48f6f920 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "ByteStreamData/RawEvent.h" diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecRoIBResultByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecRoIBResultByteStreamTool.cxx index edc87335dba..fbdd4c7e2f8 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecRoIBResultByteStreamTool.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecRoIBResultByteStreamTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx index cfe4d626f0c..48994284fee 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <sstream> diff --git a/Trigger/TrigT1/TrigT1RoIB/doc/packagedoc.h b/Trigger/TrigT1/TrigT1RoIB/doc/packagedoc.h index 7a361a29aca..fdfbc5b95f2 100644 --- a/Trigger/TrigT1/TrigT1RoIB/doc/packagedoc.h +++ b/Trigger/TrigT1/TrigT1RoIB/doc/packagedoc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1RoIB/python/TrigT1RoIBConfig.py b/Trigger/TrigT1/TrigT1RoIB/python/TrigT1RoIBConfig.py index 100b8a2132e..265c1e32998 100644 --- a/Trigger/TrigT1/TrigT1RoIB/python/TrigT1RoIBConfig.py +++ b/Trigger/TrigT1/TrigT1RoIB/python/TrigT1RoIBConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from TrigT1RoIB.TrigT1RoIBConf import ROIB__RoIBuilder diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.cxx b/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.cxx index 1c4260893d8..bb338ce4e53 100644 --- a/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.cxx +++ b/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: RecRoIBTester.cxx 550415 2013-06-10 09:36:28Z pottgen $ diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.h b/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.h index c01beff0205..ad922acffea 100644 --- a/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.h +++ b/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: RecRoIBTester.h 500598 2012-05-14 15:39:58Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBDefs.h b/Trigger/TrigT1/TrigT1RoIB/src/RoIBDefs.h index 9cf82314357..0fa69c483d8 100644 --- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBDefs.h +++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBDefs.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /* ********************************************************** diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.cxx b/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.cxx index a4309409298..ff566ad3b6b 100644 --- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.cxx +++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: RoIBTester.cxx 500598 2012-05-14 15:39:58Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.h b/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.h index a4f0a36894a..6edd6feeb6d 100644 --- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.h +++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: RoIBTester.h 500598 2012-05-14 15:39:58Z krasznaa $ diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.cxx b/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.cxx index 58bd414ac71..419dd3824e4 100644 --- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.cxx +++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: RoIBuilder.cxx 667020 2015-05-13 20:40:26Z stelzer $ diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.h b/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.h index d0e5e4eba56..05614322378 100644 --- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.h +++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1ROIB_ROIBUILDER_H diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/LVL1TGCTrigger.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/LVL1TGCTrigger.h index e8ce5e29621..c3ab2a8fe06 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/LVL1TGCTrigger.h +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/LVL1TGCTrigger.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // LVL1TGCTrigger.h diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/MakeCoincidenceOut.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/MakeCoincidenceOut.h index 15b48696837..518d5ae04e9 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/MakeCoincidenceOut.h +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/MakeCoincidenceOut.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // MakeCoincidenceOut.h diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCASDOut.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCASDOut.h index c53040acbdd..3133c6e3eb6 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCASDOut.h +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCASDOut.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBIDOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBIDOut.hh index 6304ef26967..394c970d723 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBIDOut.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBIDOut.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCBIDOut_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBoardConnection.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBoardConnection.hh index 5d416383a54..2e0ffe9a89d 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBoardConnection.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBoardConnection.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCBoardConnection.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCCoincidence.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCCoincidence.hh index 9702239a9a5..e87bfeefde2 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCCoincidence.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCCoincidence.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCCoincidence_h diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionASDToPP.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionASDToPP.hh index c2fa574c4dc..cf736a1d658 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionASDToPP.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionASDToPP.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCConnectionASDToPP.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionHPBToSL.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionHPBToSL.hh index c46a5ecb8cd..5f43e60316a 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionHPBToSL.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionHPBToSL.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // table of connection between High-Pt Board and Sector Logic diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionInPP.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionInPP.hh index f3b62d6c94f..aca24089d23 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionInPP.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionInPP.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCConnectionInPP.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSB.hh index 4095cbd6019..033c234163a 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSB.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSB.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // Table of connection between Patch Panel and Slave Board. diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSL.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSL.hh index 58402b8f8eb..583ebcd801b 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSL.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSL.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // Table of connection between Patch Panel and Sector Logic. diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionSBToHPB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionSBToHPB.hh index 5ab46294e99..ddf3822b1ad 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionSBToHPB.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionSBToHPB.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // Table of connection between Slave Board and High-Pt Board. diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDatabaseManager.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDatabaseManager.hh index e143b36286f..808a0b3d251 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDatabaseManager.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDatabaseManager.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCDatabaseManager_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDoubletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDoubletSB.hh index 64ba5dc9426..6a7d036ba9d 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDoubletSB.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDoubletSB.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCDoubletSB_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCElectronicsSystem.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCElectronicsSystem.hh index b21c38d2c40..90020d94c78 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCElectronicsSystem.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCElectronicsSystem.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCElectronicsSystem_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCEvent.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCEvent.h index 4e79b261b99..271f8752578 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCEvent.h +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCEvent.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoard.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoard.hh index 802dc231fa7..481428e9a0a 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoard.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoard.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCHighPtBoard_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoardOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoardOut.hh index a7d4c4e8bb6..f98a170a895 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoardOut.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoardOut.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCHighPtBoardOut_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtChipOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtChipOut.hh index 837785e944e..61cbbee0497 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtChipOut.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtChipOut.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCHighPtChipOut_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHitPattern.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHitPattern.hh index f7ec56a0655..59b676c3521 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHitPattern.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHitPattern.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCHitPattern.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCIndex.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCIndex.h index 2fe4f7b46a4..4acee486533 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCIndex.h +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCIndex.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerCoincidenceMap.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerCoincidenceMap.hh index 7913919f731..2bc8a39f97c 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerCoincidenceMap.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerCoincidenceMap.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCInnerCoincidenceMap_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerSB.hh index b208b69729b..ecc194e7e3c 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerSB.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerSB.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCInnerSB_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlot.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlot.hh index 72b5c40dd69..ba0c872af10 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlot.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlot.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCInnerTrackletSlot_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlotHolder.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlotHolder.hh index 6156a40e143..276d7f79721 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlotHolder.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlotHolder.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCInnerTrackletSlotHolder_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCNumbering.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCNumbering.hh index 64704e6770e..98b71c2ea81 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCNumbering.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCNumbering.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCNumbering_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanel.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanel.hh index 72d173843a5..30d6ceb2a46 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanel.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanel.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCPatchPanel.hh,v 1.4 2008-08-10 11:36:44 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanelOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanelOut.hh index b8ef48cc684..7c52214454d 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanelOut.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanelOut.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCPatchPanelOut.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMap.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMap.hh index d18c45fea00..87c10590f52 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMap.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMap.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCRPhiCoincidenceMap_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMatrix.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMatrix.hh index 7006db83f9d..84b860565c8 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMatrix.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMatrix.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCRPhiCoincidenceMatrix_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceOut.hh index fad4205a6f6..61734c01294 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceOut.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceOut.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCRPhiCoincidenceOut_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCReadoutIndex.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCReadoutIndex.h index b5d2188e752..b9f4cbc12c8 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCReadoutIndex.h +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCReadoutIndex.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelector.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelector.hh index 50263b85680..20308034b9e 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelector.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelector.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCSLPreSelector_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelectorOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelectorOut.hh index 1129d6ab238..88c5f77ed2c 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelectorOut.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelectorOut.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCSLPreSelectorOut_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelector.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelector.hh index ca1a5b1b513..0b3b0a7d44f 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelector.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelector.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCSLSelector_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelectorOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelectorOut.hh index 4424ac2ea22..04f4135a643 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelectorOut.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelectorOut.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCSLSelectorOut_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCController.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCController.hh index 19259d8d7af..6959239f39f 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCController.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCController.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCSSCController_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCControllerOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCControllerOut.hh index 98a79cfcf68..b8e91acaf97 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCControllerOut.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCControllerOut.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCSSCControllerOut_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSector.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSector.hh index 2ea8640dc2c..fd8701b23f8 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSector.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSector.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCSector_h diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSectorLogic.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSectorLogic.hh index de58f3970bd..d3db2d150e6 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSectorLogic.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSectorLogic.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGGSectorLogic_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoard.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoard.hh index d327f5ddc24..b42a350a40a 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoard.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoard.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCSlaveBoard_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoardOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoardOut.hh index 67aac6e3f12..c912bb3197f 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoardOut.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoardOut.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCSlaveBoardOut_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripDoubletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripDoubletSB.hh index 02f2a547284..a5f3b8a8841 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripDoubletSB.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripDoubletSB.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCStripDoubletSB_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripHighPtBoard.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripHighPtBoard.hh index 49b2190ae3a..27be283a118 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripHighPtBoard.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripHighPtBoard.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCStripHighPtBoard_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripTripletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripTripletSB.hh index 5b373b12a52..f476f74113d 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripTripletSB.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripTripletSB.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCStripTripletSB_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDB.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDB.h index 8768cf8b349..3ba49777029 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDB.h +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDB.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDBOut.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDBOut.h index 7d527dbaf88..7d01b1cdee9 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDBOut.h +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDBOut.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTileMuCoincidenceMap.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTileMuCoincidenceMap.hh index 0952c23c80d..f796e314f44 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTileMuCoincidenceMap.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTileMuCoincidenceMap.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCTileMuCoincidenceMap_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTimingManager.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTimingManager.hh index f41cd5cc0d6..fbef4bef2d4 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTimingManager.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTimingManager.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCTimingManager.hh,v 1.1.1.10 2003-11-03 10:18:18 mishino Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireDoubletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireDoubletSB.hh index 68a2cd65c23..13a70172f89 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireDoubletSB.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireDoubletSB.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCWireDoubletSB_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireHighPtBoard.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireHighPtBoard.hh index fff09d89660..ab0f0ce392d 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireHighPtBoard.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireHighPtBoard.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCWireHighPtBoard_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireTripletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireTripletSB.hh index 6451452d246..efaf3d52794 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireTripletSB.hh +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireTripletSB.hh @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TGCWireTripletSB_hh diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TrigT1TGC_ClassDEF.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TrigT1TGC_ClassDEF.h index 3464eae2ab4..c64c5e628bb 100644 --- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TrigT1TGC_ClassDEF.h +++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TrigT1TGC_ClassDEF.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef __TrigT1TGC_ClassDEF_H__ diff --git a/Trigger/TrigT1/TrigT1TGC/doc/packagedoc.h b/Trigger/TrigT1/TrigT1TGC/doc/packagedoc.h index b61ea3cdaf5..fa8b72c28b2 100644 --- a/Trigger/TrigT1/TrigT1TGC/doc/packagedoc.h +++ b/Trigger/TrigT1/TrigT1TGC/doc/packagedoc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1TGC/python/TrigT1TGCConfig.py b/Trigger/TrigT1/TrigT1TGC/python/TrigT1TGCConfig.py index a4d6f6e2926..abadac30133 100755 --- a/Trigger/TrigT1/TrigT1TGC/python/TrigT1TGCConfig.py +++ b/Trigger/TrigT1/TrigT1TGC/python/TrigT1TGCConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from TrigT1TGC.TrigT1TGCConf import * from AthenaCommon.AlgSequence import AlgSequence diff --git a/Trigger/TrigT1/TrigT1TGC/python/__init__.py b/Trigger/TrigT1/TrigT1TGC/python/__init__.py index 8114fb167af..800c0d2bbdd 100755 --- a/Trigger/TrigT1/TrigT1TGC/python/__init__.py +++ b/Trigger/TrigT1/TrigT1TGC/python/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # File: TrigT1TGCConfig/__init__.py diff --git a/Trigger/TrigT1/TrigT1TGC/src/LVL1TGCTrigger.cxx b/Trigger/TrigT1/TrigT1TGC/src/LVL1TGCTrigger.cxx index 6df6d365e42..2799e13466f 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/LVL1TGCTrigger.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/LVL1TGCTrigger.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // STL diff --git a/Trigger/TrigT1/TrigT1TGC/src/MakeCoincidenceOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/MakeCoincidenceOut.cxx index af62e2913ca..a904c69c483 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/MakeCoincidenceOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/MakeCoincidenceOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // MakeCoincidenceOut.cxx diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCASDOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCASDOut.cxx index f43a86143ef..d79ccb4c0c6 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCASDOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCASDOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCBIDOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCBIDOut.cxx index 0412e4d5521..b85d01a43b8 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCBIDOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCBIDOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCBIDOut.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCBoardConnection.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCBoardConnection.cxx index b284ae50c40..7a2d0e43374 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCBoardConnection.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCBoardConnection.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCBoardConnection.cxx,v 1.3 2009-01-08 10:06:48 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionASDToPP.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionASDToPP.cxx index 28332eb73b6..92a2900430c 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionASDToPP.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionASDToPP.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionHPBToSL.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionHPBToSL.cxx index 66d5b709c45..76b7c3b4f24 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionHPBToSL.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionHPBToSL.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCConnectionHPBToSL.cxx,v 1.2 2006-06-22 00:26:35 nkanaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionInPP.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionInPP.cxx index 710437c343b..5c0d04095fd 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionInPP.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionInPP.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCConnectionInPP.cxx,v 1.4 2009-03-20 17:48:53 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSB.cxx index 9deb6e6a820..fe247e6d4f2 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSB.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSB.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCConnectionPPToSB.cxx,v 1.2 2006-06-22 00:26:35 nkanaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSL.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSL.cxx index fe2398e0031..09e1c6438fb 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSL.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSL.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCConnectionPPToSL.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionSBToHPB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionSBToHPB.cxx index 406ef9b8ba5..fef3f02744a 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionSBToHPB.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionSBToHPB.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCConnectionSBToHPB.cxx,v 1.3 2009-03-15 18:07:55 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCDatabaseManager.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCDatabaseManager.cxx index 3d573b9f583..a6ccc51b4dd 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCDatabaseManager.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCDatabaseManager.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCDatabaseManager.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCDoubletSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCDoubletSB.cxx index 63acb3bbc09..d5ed1032576 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCDoubletSB.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCDoubletSB.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCDoubletSB.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCElectronicsSystem.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCElectronicsSystem.cxx index 4871ef15da9..fc9c7530def 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCElectronicsSystem.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCElectronicsSystem.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCElectronicsSystem.cxx,v 1.13 2009-05-04 11:39:44 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCEvent.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCEvent.cxx index 745902f5e0c..c5ea6520f62 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCEvent.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCEvent.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoard.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoard.cxx index 93d274753e4..79ef1c2c5c8 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoard.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoard.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCHighPtBoardOut.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoardOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoardOut.cxx index 271b680fe3d..c4b5c059bee 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoardOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoardOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCHighPtBoardOut.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtChipOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtChipOut.cxx index ef669ba3cf1..98e236cfad4 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtChipOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtChipOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCHighPtChipOut.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCHitPattern.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCHitPattern.cxx index 338cc9fd12a..93b874c37d6 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCHitPattern.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCHitPattern.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCHitPattern.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCIndex.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCIndex.cxx index c161946d140..4ef71b2fb41 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCIndex.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCIndex.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerCoincidenceMap.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerCoincidenceMap.cxx index 9ba54d032e2..2b35f58553c 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerCoincidenceMap.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerCoincidenceMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerSB.cxx index fea94fc1e62..03bad2d4869 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerSB.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerSB.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ref. SOS054V06,SOS053V04 diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlot.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlot.cxx index eea9f641b86..ead29d98bb9 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlot.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlot.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCInnerTrackletSlot.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlotHolder.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlotHolder.cxx index 5345cb0c890..a8952f4b8a4 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlotHolder.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlotHolder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCInnerTrackletSlotHolder.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanel.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanel.cxx index 1f48a43457d..c0ef49582c2 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanel.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanel.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCPatchPanel.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanelOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanelOut.cxx index e4c209545a9..bfd7c5956e1 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanelOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanelOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCPatchPanelOut.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMap.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMap.cxx index cbfd125c51b..3856e87c511 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMap.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMatrix.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMatrix.cxx index a28de54b067..fc3341a357e 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMatrix.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMatrix.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCRPhiCoincidenceMatrix.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceOut.cxx index e97f808f82d..964d0a2318a 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCReadoutIndex.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCReadoutIndex.cxx index c8b01a740af..3755664b25e 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCReadoutIndex.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCReadoutIndex.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelector.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelector.cxx index 5c4221e2d01..eba72ec964d 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelector.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelector.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCSectorLogic.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelectorOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelectorOut.cxx index 7296a294a02..2341ff37b74 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelectorOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelectorOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCSLPreSelectorOut.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelector.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelector.cxx index 79ec1dec431..01bd88c1036 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelector.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelector.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCSLSelector.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelectorOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelectorOut.cxx index b99e0a39fe1..341e1c302b8 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelectorOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelectorOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCSLSelectorOut.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSSCController.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSSCController.cxx index 450bef383ec..3338da6a420 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSSCController.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSSCController.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCSSCController.cxx,v 1.6 2009-03-15 18:07:55 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSSCControllerOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSSCControllerOut.cxx index 5eb40fa61c0..190f43d9f58 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSSCControllerOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSSCControllerOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCSSCControllerOut.cxx,v 1.5 2005-11-29 08:12:40 nkanaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSector.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSector.cxx index ed64618ddad..914c8db26a4 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSector.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSector.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCSector.cxx,v 1.10 2009-05-14 01:28:04 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSectorLogic.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSectorLogic.cxx index 894dffee565..a1dc6e95b15 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSectorLogic.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSectorLogic.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // $Id: TGCSectorLogic.cxx,v 1.14 2009-03-15 18:07:55 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoard.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoard.cxx index f81bab87773..37447521607 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoard.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoard.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCSlaveBoard.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoardOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoardOut.cxx index 047381b8237..bd06d8843dd 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoardOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoardOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCSlaveBoardOut.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCStripHighPtBoard.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCStripHighPtBoard.cxx index 60021fb025d..9739c272282 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCStripHighPtBoard.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCStripHighPtBoard.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGC/TGCStripHighPtBoard.hh" diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCStripTripletSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCStripTripletSB.cxx index 1da491fd4ad..9faa0e27f46 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCStripTripletSB.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCStripTripletSB.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCStripTripletSB.cxx,v 1.6 2009-05-14 01:28:04 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCTMDB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCTMDB.cxx index 6a7ce7aeaca..4a9384a4e41 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCTMDB.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCTMDB.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCTMDBOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCTMDBOut.cxx index 57140afbb74..272ac323454 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCTMDBOut.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCTMDBOut.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ==================================================================== diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCTileMuCoincidenceMap.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCTileMuCoincidenceMap.cxx index 1081ba9a287..f62ef2de556 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCTileMuCoincidenceMap.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCTileMuCoincidenceMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <iostream> diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCTimingManager.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCTimingManager.cxx index 0cc36e3659a..36dbc90d1b5 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCTimingManager.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCTimingManager.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //$Id: TGCTimingManager.cxx,v 1.4 2009-05-13 02:53:51 isaya Exp $ diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCWireHighPtBoard.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCWireHighPtBoard.cxx index 3f7a8f33f95..c7a339da633 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCWireHighPtBoard.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCWireHighPtBoard.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ref. SOS063V07,S0S061V04 diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCWireTripletSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCWireTripletSB.cxx index f6b35cc9b2f..ac41036dd7f 100644 --- a/Trigger/TrigT1/TrigT1TGC/src/TGCWireTripletSB.cxx +++ b/Trigger/TrigT1/TrigT1TGC/src/TGCWireTripletSB.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ref. SOS051V07,S0S052V06 diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h index aa207b5c0a8..4e1d48cf7d7 100755 --- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h +++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1_TGCRECROISVC_H diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/doc/packagedoc.h b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/doc/packagedoc.h index fc23249ba83..2d300dd43fb 100644 --- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/doc/packagedoc.h +++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/doc/packagedoc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/TrigT1TGCRecRoiConfig.py b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/TrigT1TGCRecRoiConfig.py index 203932cc185..bc4e2a37f86 100755 --- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/TrigT1TGCRecRoiConfig.py +++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/TrigT1TGCRecRoiConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # $Id: TrigT1TGCRecRoiConfig.py 301207 2010-05-26 12:16:53Z krasznaa $ # diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/__init__.py b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/__init__.py index e8d6976fa68..c8a8e1d91ad 100755 --- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/__init__.py +++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # File: TrigT1TGCRecRoiConfig/__init__.py diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/src/TGCRecRoiSvc.cxx b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/src/TGCRecRoiSvc.cxx index 7a3d446243a..7e7bc7f19da 100755 --- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/src/TGCRecRoiSvc.cxx +++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/src/TGCRecRoiSvc.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h" diff --git a/Trigger/TrigT1/TrigT1TRT/TrigT1TRT/TrigT1TRT.h b/Trigger/TrigT1/TrigT1TRT/TrigT1TRT/TrigT1TRT.h index 6cabb026f1c..c7b12b3d157 100644 --- a/Trigger/TrigT1/TrigT1TRT/TrigT1TRT/TrigT1TRT.h +++ b/Trigger/TrigT1/TrigT1TRT/TrigT1TRT/TrigT1TRT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIG_T1_TRT_H diff --git a/Trigger/TrigT1/TrigT1TRT/src/TrigT1TRT.cxx b/Trigger/TrigT1/TrigT1TRT/src/TrigT1TRT.cxx index 471174736aa..572f375aaf8 100644 --- a/Trigger/TrigT1/TrigT1TRT/src/TrigT1TRT.cxx +++ b/Trigger/TrigT1/TrigT1TRT/src/TrigT1TRT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include <stdint.h> diff --git a/Trigger/TrigT1/TrigT1ZDC/TrigT1ZDC/TrigT1ZDC.h b/Trigger/TrigT1/TrigT1ZDC/TrigT1ZDC/TrigT1ZDC.h index 0b3fed26fa3..5d5d92c11b5 100644 --- a/Trigger/TrigT1/TrigT1ZDC/TrigT1ZDC/TrigT1ZDC.h +++ b/Trigger/TrigT1/TrigT1ZDC/TrigT1ZDC/TrigT1ZDC.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIG_T1_ZDC_H diff --git a/Trigger/TrigT1/TrigT1ZDC/doc/packagedoc.h b/Trigger/TrigT1/TrigT1ZDC/doc/packagedoc.h index f40e1c811ca..7b0e1d1cb02 100644 --- a/Trigger/TrigT1/TrigT1ZDC/doc/packagedoc.h +++ b/Trigger/TrigT1/TrigT1ZDC/doc/packagedoc.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** diff --git a/Trigger/TrigT1/TrigT1ZDC/src/TrigT1ZDC.cxx b/Trigger/TrigT1/TrigT1ZDC/src/TrigT1ZDC.cxx index d0556b271ff..793b3115e69 100644 --- a/Trigger/TrigT1/TrigT1ZDC/src/TrigT1ZDC.cxx +++ b/Trigger/TrigT1/TrigT1ZDC/src/TrigT1ZDC.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrigT1ZDC/TrigT1ZDC.h" diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py index 43e00921ff0..0ce0e5a4847 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from Limits import Limits from Lvl1Flags import Lvl1Flags diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/CTPInfo.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/CTPInfo.py index c19cb82c933..9111407367e 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/CTPInfo.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/CTPInfo.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from BunchGroupSet import BunchGroupSet from Lvl1MenuUtil import oldStyle diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py index f6a713b838b..ddb7272a491 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from Limits import Limits # noqa: F401 from AthenaCommon.Logging import logging diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/CaloInfo.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/CaloInfo.py index c2735dafb47..ed69578bb3c 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/CaloInfo.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/CaloInfo.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from Lvl1MenuUtil import log from Lvl1MenuUtil import oldStyle diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py index 9518eba3d33..fe17fae1319 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration class CoreLut(object): diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py index d5edaa71200..192d05a1826 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ This temporarily holds CTP sizes diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py index 33f3f152a44..3e44501697d 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration __all__ = ['Logic', 'Not'] diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Condition.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Condition.py index 882a5f470ec..2803ae8d770 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Condition.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Condition.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from Logic import Logic diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py index d79e5bd0abe..64ab976b79c 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ Lvl1 specific flags diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py index c512d276fb0..c099fe517c0 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from Lvl1Thresholds import LVL1Thresholds from Lvl1MenuItems import LVL1MenuItems diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py index 74e2dd53a55..bbdd2db903d 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from PrescaleHelper import getCutFromPrescale, getPrescaleFromCut from Lvl1MenuUtil import oldStyle diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py index 66fadaf367d..4fc4c16fdaa 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration __all__ = ['log', 'idgen', 'binstr', 'get_smk_psk_Name', 'oldStyle'] diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MonCounters.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MonCounters.py index 34e84410ab1..2559756c458 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MonCounters.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MonCounters.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py index 0937b945ba2..8d889c80abf 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from Limits import CaloLimits as CL IsolationOff = CL.IsolationOff diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/MuctpiInfo.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/MuctpiInfo.py index b50ff1f4da5..843a147f603 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/MuctpiInfo.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/MuctpiInfo.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration class MuctpiInfo: def __init__(self, low_pt=0, high_pt=0, max_cand=13): diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/PrescaleHelper.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/PrescaleHelper.py index 39dcb8eeb36..d6453638378 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/PrescaleHelper.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/PrescaleHelper.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ The prescaling uses a pseudo-random binary sequence generator of 24 bit width (31 bit internal) diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py index 2fdfe268bdb..8bc046d5eed 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration class TT: """ diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDefRun1.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDefRun1.py index 6b537c15350..ef07604c0ab 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDefRun1.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDefRun1.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from TriggerJobOpts.TriggerFlags import TriggerFlags as TF diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py index ac13db2527a..5e46847f99f 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from Lvl1Thresholds import LVL1Threshold, LVL1TopoInput, ThresholdValue from Lvl1MenuItems import LVL1MenuItem diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLReader.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLReader.py index 85d90a28916..917a2abba9f 100755 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLReader.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLReader.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import xml.etree.cElementTree as ET diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/__init__.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/__init__.py index 74583d364ec..10eda52d215 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/l1/__init__.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/__init__.py @@ -1,2 +1,2 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -- GitLab From 3b8bcdead4cce41f0eff0d08bbbbc6804f9ed6b0 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Wed, 14 Nov 2018 16:51:08 +0100 Subject: [PATCH 011/135] Revive SimulationFlavor enum and use as a property of BaseSimulationSelector Former-commit-id: 6f38506fd01699a1acfda0fe50f42f6fb6dff6c7 --- .../ISF_Interfaces/SimulationFlavor.h | 14 ++++-- .../python/ISF_SimulationSelectorsConfig.py | 48 +++++++++++++++++-- .../python/SimulationFlavor.py | 13 +++++ .../src/BaseSimulationSelector.cxx | 24 ++++++++-- .../src/BaseSimulationSelector.h | 6 ++- 5 files changed, 91 insertions(+), 14 deletions(-) create mode 100644 Simulation/ISF/ISF_SimulationSelectors/python/SimulationFlavor.py diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/SimulationFlavor.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/SimulationFlavor.h index ca63b9275bd..ea1f6e939fc 100644 --- a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/SimulationFlavor.h +++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/SimulationFlavor.h @@ -18,11 +18,17 @@ namespace ISF { /** enum to make the code more readable */ enum SimulationDefinitions { UndefinedSim = 0, - FatrasSim = 1, - Geant4Sim = 2, - FastCaloSim = 3 + ParticleKiller = 1, + Fatras = 2, + Geant4 = 3, + FastCaloSim = 4, + FastCaloSimV2 = 5, + Parametric = 6, + FatrasPileup = 7, + FastCaloSimPileup = 8, + NFlavors = 9 }; } -#endif +#endif diff --git a/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py b/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py index 30643742bab..fe3e9f4fd19 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py +++ b/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ ISF_SimulationSelectors configurations for ISF Elmar Ritsch, 04/02/2013 @@ -8,7 +8,7 @@ from AthenaCommon import CfgMgr from AthenaCommon.Constants import * # FATAL,ERROR etc. from AthenaCommon.SystemOfUnits import * - +from ISF_SimulationSelectors import SimulationFlavor ### DefaultSimSelector configurations def getDefaultSimSelector(name="ISF_DefaultSimSelector", **kwargs): @@ -16,15 +16,18 @@ def getDefaultSimSelector(name="ISF_DefaultSimSelector", **kwargs): def getDefaultParticleKillerSelector(name="ISF_DefaultParticleKillerSelector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_ParticleKillerSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.ParticleKiller) return getDefaultSimSelector(name, **kwargs ) def getPileupParticleKillerSelector(name="ISF_PileupParticleKillerSelector", **kwargs): - kwargs.setdefault("PileupBCID" , [1] ) + kwargs.setdefault("PileupBCID" , [1] ) kwargs.setdefault("Simulator" , 'ISF_ParticleKillerSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.ParticleKiller) return CfgMgr.ISF__KinematicPileupSimSelector(name, **kwargs) def getDefaultGeant4Selector(name="ISF_DefaultGeant4Selector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getDefaultSimSelector(name, **kwargs ) def getDefaultAFIIGeant4Selector(name="ISF_DefaultAFIIGeant4Selector", **kwargs): @@ -37,42 +40,52 @@ def getDefaultLongLivedGeant4Selector(name="ISF_DefaultLongLivedGeant4Selector", def getFullGeant4Selector(name="ISF_FullGeant4Selector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_FullGeant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getDefaultSimSelector(name, **kwargs ) def getPassBackGeant4Selector(name="ISF_PassBackGeant4Selector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_PassBackGeant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getDefaultSimSelector(name, **kwargs ) def getDefaultFastCaloSimSelector(name="ISF_DefaultFastCaloSimSelector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_FastCaloSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim) return getDefaultSimSelector(name, **kwargs ) def getDefaultLegacyAFIIFastCaloSimSelector(name="ISF_DefaultLegacyAFIIFastCaloSimSelector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_LegacyAFIIFastCaloSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim) return getDefaultSimSelector(name, **kwargs ) def getDefaultFastCaloSimV2Selector(name="ISF_DefaultFastCaloSimV2Selector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_FastCaloSimSvcV2') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSimV2) return getDefaultSimSelector(name, **kwargs ) def getFastHitConvAlgFastCaloSimSelector(name="ISF_FastHitConvAlgFastCaloSimSelector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_FastHitConvAlgFastCaloSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim) return getDefaultSimSelector(name, **kwargs ) def getFastHitConvAlgLegacyAFIIFastCaloSimSelector(name="ISF_FastHitConvAlgLegacyAFIIFastCaloSimSelector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_FastHitConvAlgLegacyAFIIFastCaloSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim) return getDefaultSimSelector(name, **kwargs ) def getDefaultFatrasSelector(name="ISF_DefaultFatrasSelector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_FatrasSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras) return getDefaultSimSelector(name, **kwargs ) def getDefaultFatrasNewExtrapolationSelector(name="ISF_DefaultFatrasNewExtrapolationSelector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_FatrasNewExtrapolationSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras) return getDefaultSimSelector(name, **kwargs ) def getDefaultParametricSimulationSelector(name="ISF_DefaultParametricSimulationSelector", **kwargs): kwargs.setdefault("Simulator" , 'ISF_ParametricSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Parametric) return getDefaultSimSelector(name, **kwargs ) ### PileUpSimSelector Configurations @@ -83,23 +96,27 @@ def getPileupSimSelector(name="ISF_PileupSimSelector", **kwargs): def getFatrasPileupSelector(name="ISF_FatrasPileupSelector", **kwargs): kwargs.setdefault("PileupBCID" , [1] ) kwargs.setdefault("Simulator" , 'ISF_FatrasPileupSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FatrasPileup) return getPileupSimSelector(name, **kwargs ) def getFatrasPileupSelector_noHits(name="ISF_FatrasPileupSelector_noHits", **kwargs): kwargs.setdefault("PileupBCID" , [2] ) kwargs.setdefault("Simulator" , 'ISF_FatrasPileupSimSvc_noHits') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FatrasPileup) return getPileupSimSelector(name, **kwargs ) def getFastCaloSimPileupSelector(name="ISF_FastCaloSimPileupSelector", **kwargs): from FastChainPileup.FastChain_jobProperties import FastChain_Flags kwargs.setdefault("PileupBCID" , FastChain_Flags.FastChainBCID() ) kwargs.setdefault("Simulator" , 'ISF_FastCaloSimPileupSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSimPileup) return getPileupSimSelector(name, **kwargs ) def getFastCaloSimPileupOTSelector(name="ISF_FastCaloSimPileupOTSelector", **kwargs): from FastChainPileup.FastChain_jobProperties import FastChain_Flags kwargs.setdefault("PileupBCID" , FastChain_Flags.FastChainBCID() ) kwargs.setdefault("Simulator" , 'ISF_FastCaloSimPileupOTSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSimPileup) return getPileupSimSelector(name, **kwargs ) ### KinematicSimSelector Configurations @@ -107,11 +124,13 @@ def getFastCaloSimPileupOTSelector(name="ISF_FastCaloSimPileupOTSelector", **kwa def getElectronGeant4Selector(name="ISF_ElectronGeant4Selector", **kwargs): kwargs.setdefault('ParticlePDG' , 11) kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return CfgMgr.ISF__KinematicSimSelector(name, **kwargs) def getNeutralGeant4Selector(name="ISF_NeutralGeant4Selector", **kwargs): kwargs.setdefault('Charge' , 0) kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return CfgMgr.ISF__KinematicSimSelector(name, **kwargs) def getMuonSelector(name="ISF_MuonSelector", **kwargs): @@ -120,26 +139,31 @@ def getMuonSelector(name="ISF_MuonSelector", **kwargs): def getMuonGeant4Selector(name="ISF_MuonGeant4Selector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getMuonSelector(name, **kwargs) def getMuonAFIIGeant4Selector(name="ISF_MuonAFIIGeant4Selector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_AFIIGeant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getMuonGeant4Selector(name, **kwargs) def getMuonFatrasSelector(name="ISF_MuonFatrasSelector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_FatrasSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras) return getMuonSelector(name, **kwargs) def getMuonFatrasPileupSelector(name="ISF_MuonFatrasPileupSelector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_FatrasPileupSimSvc') - kwargs.setdefault("PileupBCID" , [1]) + kwargs.setdefault("PileupBCID" , [1]) kwargs.setdefault('ParticlePDG' , 13) + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras) return getPileupSimSelector(name, **kwargs) def getWithinEta5FastCaloSimSelector(name="ISF_WithinEta5FastCaloSimSelector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_FastCaloSimSvc') kwargs.setdefault('MinPosEta' , -5.0 ) kwargs.setdefault('MaxPosEta' , 5.0 ) + kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim) return CfgMgr.ISF__KinematicSimSelector(name, **kwargs) def getEtaGreater5ParticleKillerSimSelector(name="ISF_EtaGreater5ParticleKillerSimSelector", **kwargs): @@ -147,13 +171,15 @@ def getEtaGreater5ParticleKillerSimSelector(name="ISF_EtaGreater5ParticleKillerS kwargs.setdefault('MinPosEta' , -5.0 ) kwargs.setdefault('MaxPosEta' , 5.0 ) kwargs.setdefault('InvertCuts' , True ) + kwargs.setdefault('SimulationFlavor', SimulationFlavor.ParticleKiller) return CfgMgr.ISF__KinematicSimSelector(name, **kwargs) - + def getEtaGreater5PileupParticleKillerSimSelector(name="ISF_EtaGreater5PileupParticleKillerSimSelector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_ParticleKillerSvc') kwargs.setdefault('MinPosEta' , -5.0 ) kwargs.setdefault('MaxPosEta' , 5.0 ) kwargs.setdefault('InvertCuts' , True ) + kwargs.setdefault('SimulationFlavor', SimulationFlavor.ParticleKiller) return CfgMgr.ISF__KinematicPileupSimSelector(name, **kwargs) ### ConeSimSelector Configurations @@ -167,10 +193,12 @@ def getPhotonConeSelector(name="ISF_PhotonConeSelector", **kwargs): def getPhotonConeFatrasSelector(name="ISF_PhotonConeFatrasSelector", **kwargs): kwargs.setdefault('Simulator', 'ISF_FatrasSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras) return getPhotonConeSelector(name, **kwargs) def getPhotonConeGeant4Selector(name="ISF_PhotonConeGeant4Selector", **kwargs): kwargs.setdefault('Simulator', 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getPhotonConeSelector(name, **kwargs) def getHiggsLeptonsConeSimSelector(name="ISF_HiggsLeptonsConeSimSelector", **kwargs): @@ -186,6 +214,7 @@ def getHiggsLeptonsConeSimSelector(name="ISF_HiggsLeptonsConeSimSelector", **kwa def getHiggsLeptonsConeGeant4Selector(name="ISF_HiggsLeptonsConeGeant4Selector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getHiggsLeptonsConeSimSelector(name, **kwargs) def getElectronsMuonsConeSimSelector(name="ISF_ElectronsMuonsConeSimSelector", **kwargs): @@ -199,6 +228,7 @@ def getHiggsLeptonsConeGeant4CaloSelector(name="ISF_HiggsLeptonsConeGeant4CaloSe def getWLeptonsConeGeant4Selector(name="ISF_WLeptonsConeGeant4Selector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) kwargs.setdefault('ConeCreatorMinPt' , 0. ) kwargs.setdefault('ConeSize' , 0.4 ) kwargs.setdefault('CheckConeCreatorAncestors' , True ) @@ -212,6 +242,7 @@ def getZLeptonsDirectionConeGeant4Selector(name="ISF_ZLeptonsDirectionConeGeant4 # this selector picks all particles with a mometum direction # within DeltaR<ConeSize relative to the Z decay leopton directions kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) kwargs.setdefault('ConeCreatorMinPt' , 0. ) kwargs.setdefault('ConeSize' , 0.4 ) kwargs.setdefault('CheckConeCreatorAncestors' , True ) @@ -229,6 +260,7 @@ def getZLeptonsPositionConeGeant4Selector(name="ISF_ZLeptonsPositionConeGeant4Se def getJPsiLeptonsConeGeant4Selector(name="ISF_JPsiLeptonsConeGeant4Selector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) kwargs.setdefault('ConeCreatorMinPt' , 0. ) kwargs.setdefault('ConeSize' , 0.4 ) kwargs.setdefault('CheckConeCreatorAncestors' , True ) @@ -251,10 +283,12 @@ def getBHadronProductsSimSelector(name="ISF_BHadronProductsSimSelector", **kwarg def getBHadronProductsGeant4Selector(name="ISF_BHadronProductsGeant4Selector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getBHadronProductsSimSelector(name, **kwargs) def getBHadronProductsFatrasSelector(name="ISF_BHadronProductsFatrasSelector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_FatrasSimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras) return getBHadronProductsSimSelector(name, **kwargs) def getTauProductsSimSelector(name="ISF_TauProductsSimSelector", **kwargs): @@ -266,6 +300,7 @@ def getTauProductsSimSelector(name="ISF_TauProductsSimSelector", **kwargs): def getTauProductsGeant4Selector(name="ISF_TauProductsGeant4Selector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getTauProductsSimSelector(name, **kwargs) def getZProductsSimSelector(name="ISF_ZProductsSimSelector", **kwargs): @@ -277,6 +312,7 @@ def getZProductsSimSelector(name="ISF_ZProductsSimSelector", **kwargs): def getZProductsGeant4Selector(name="ISF_ZProductsGeant4Selector", **kwargs): kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return getZProductsSimSelector(name, **kwargs) ### HistorySimSelector Configurations @@ -285,10 +321,12 @@ def getSubDetStickyGeant4SimSelector(name="ISF_SubDetStickyGeant4SimSelector", * kwargs.setdefault('PrevSimSvc' , 'ISF_Geant4SimSvc') kwargs.setdefault('RequiresUnchangedGeoID' , True ) kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return CfgMgr.ISF__HistorySimSelector(name, **kwargs) def getGlobalStickyGeant4SimSelector(name="ISF_GlobalStickyGeant4SimSelector", **kwargs): kwargs.setdefault('PrevSimSvc' , 'ISF_Geant4SimSvc') kwargs.setdefault('RequiresUnchangedGeoID' , False ) kwargs.setdefault('Simulator' , 'ISF_Geant4SimSvc') + kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4) return CfgMgr.ISF__HistorySimSelector(name, **kwargs) diff --git a/Simulation/ISF/ISF_SimulationSelectors/python/SimulationFlavor.py b/Simulation/ISF/ISF_SimulationSelectors/python/SimulationFlavor.py new file mode 100644 index 00000000000..e2e3b63bab4 --- /dev/null +++ b/Simulation/ISF/ISF_SimulationSelectors/python/SimulationFlavor.py @@ -0,0 +1,13 @@ +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + +UndefinedSim = 0 +ParticleKiller = 1 +Fatras = 2 +Geant4 = 3 +FastCaloSim = 4 +FastCaloSimV2 = 5 +Parametric = 6 +FatrasPileup = 7 +FastCaloSimPileup = 8 +NFlavors = 9 + diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.cxx index c3716c20644..27335317eeb 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.cxx +++ b/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "BaseSimulationSelector.h" @@ -13,14 +13,32 @@ ISF::BaseSimulationSelector::BaseSimulationSelector(const std::string& type, con base_class(type, name, parent), m_simulator("DefaultSimulator", name), m_isDynamic(false), - m_invertCuts(false), - m_simflavor(ISF::UndefinedSim) + m_invertCuts(false) { declareProperty("Simulator", m_simulator ); declareProperty("IsDynamic", m_isDynamic ); declareProperty("InvertCuts", m_invertCuts ); + declareProperty("SimulationFlavor", m_simFlavorProp); + m_simFlavorProp.verifier().setLower(ISF::UndefinedSim+1); + m_simFlavorProp.verifier().setUpper(ISF::NFlavors-1); + m_simFlavorProp.declareUpdateHandler(&ISF::BaseSimulationSelector::SimulationFlavorHandler, this); } +void ISF::BaseSimulationSelector::SimulationFlavorHandler(Property&) +{ + // FIXME would probably be better to have this in SimulationFlavor.h + switch(m_simFlavorProp.value()) + { + case 1: m_simflavor = ISF::ParticleKiller; break; + case 2: m_simflavor = ISF::Fatras; break; + case 3: m_simflavor = ISF::Geant4; break; + case 4: m_simflavor = ISF::FastCaloSim; break; + case 5: m_simflavor = ISF::FastCaloSimV2; break; + case 6: m_simflavor = ISF::Parametric; break; + case 7: m_simflavor = ISF::FatrasPileup; break; + case 8: m_simflavor = ISF::FastCaloSimPileup; break; + } +} /** Gaudi sysInitialize() method */ StatusCode ISF::BaseSimulationSelector::sysInitialize() diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.h b/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.h index d951c53db93..d22225c9092 100644 --- a/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.h +++ b/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef ISF_SIMULATIONSELECTORS_BASESIMULATIONSELECTOR_H @@ -71,7 +71,9 @@ class BaseSimulationSelector : public extends<AthAlgTool, ISimulationSelector> { ServiceHandle<ISimulationSvc> m_simulator; //!< simulation service assigned to a single advisor bool m_isDynamic; //!< this selector is either dynamic or static bool m_invertCuts; //!< invert the result given by passesCuts(..) method - ISF::SimulationFlavor m_simflavor; //!< simulation flavor + Gaudi::CheckedProperty<unsigned short> m_simFlavorProp{0}; //!< the simulation flavour that this selector will select + void SimulationFlavorHandler(Property&); + ISF::SimulationFlavor m_simflavor{ISF::UndefinedSim}; //!< simulation flavor }; -- GitLab From 42dad1ce8e332168a910c8b0bdebd882e8780da3 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Thu, 15 Nov 2018 15:14:59 +0100 Subject: [PATCH 012/135] SimKernelMT now uses a map from SimulationFlavor to ISimulationSvc Former-commit-id: 8c57ccf6e9c5d08a3c1b836af418336e2f540e43 --- .../ISF_Algorithms/src/SimKernelMT.cxx | 29 +++++++++++++++++-- .../ISF_Core/ISF_Algorithms/src/SimKernelMT.h | 3 ++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx index 233075164ed..18ab0a62746 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx @@ -65,14 +65,36 @@ StatusCode ISF::SimKernelMT::initialize() { // info screen output ATH_MSG_INFO("The following routing chains are defined:"); for ( short geoID=AtlasDetDescr::fFirstAtlasRegion; geoID<AtlasDetDescr::fNumAtlasRegions ; ++geoID) { + auto& localSelectors = m_simSelectors[geoID]; ATH_MSG_INFO( AtlasDetDescr::AtlasRegionHelper::getName(geoID) - << " (GeoID=" << geoID << "): \t" << m_simSelectors[geoID]); + << " (GeoID=" << geoID << "): \t" << localSelectors); + for (auto& selector: localSelectors) + { + auto flavor = selector->simFlavor(); + auto itr = m_simSvcMap.find(flavor); + if (itr == m_simSvcMap.end() ) + { + // New flavour add it to the map. + m_simSvcMap[flavor] = &**(selector->simulator()); + continue; + } + if ( itr->second == &**(selector->simulator()) ) + { + continue; // OK - multiple selectors can point to the same simulator + } + ATH_MSG_FATAL("Two ISimulationSvc instances with the same flavor in this job!\n Check your configuration!"); + return StatusCode::FAILURE; + } } ATH_CHECK( m_inputEvgenKey.initialize() ); ATH_CHECK( m_outputTruthKey.initialize() ); ATH_CHECK( m_particleKillerSimulationSvc.retrieve() ); + if ( m_simSvcMap.find(ISF::ParticleKiller) == m_simSvcMap.end() ) + { + m_simSvcMap[ISF::ParticleKiller] = &*m_particleKillerSimulationSvc; + } ATH_CHECK( m_inputConverter.retrieve() ); return StatusCode::SUCCESS; @@ -120,15 +142,16 @@ StatusCode ISF::SimKernelMT::finalize() { /// Returns the simulator to use for the given particle ISF::ISimulationSvc& ISF::SimKernelMT::identifySimulator(const ISF::ISFParticle& particle) { AtlasDetDescr::AtlasRegion geoID = particle.nextGeoID(); + auto& localSelectors = m_simSelectors[geoID]; for (auto& selector: localSelectors) { bool selected = selector->selfSelect(particle); if (selected) { - return **selector->simulator(); + return *m_simSvcMap.at(selector->simFlavor()); } } ATH_MSG_WARNING("No simulator found for particle (" << particle << ")." << " Will send it to " << m_particleKillerSimulationSvc); - return *m_particleKillerSimulationSvc; + return *m_simSvcMap.at(ISF::ParticleKiller); } diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h index 9c05947186a..c8ef7495fe9 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h @@ -87,6 +87,9 @@ private: /// The simulation selectors defining the "routing chain" std::array<ToolHandleArray<ISimulationSelector>, AtlasDetDescr::fNumAtlasRegions> m_simSelectors; + /// Map of the simulation flavours used in this job to the corresponding Simulation Services + std::map<ISF::SimulationFlavor, ISimulationSvc*> m_simSvcMap; + /// When no appropriate simulator can be found for a given particle, the particle is sent to this "particle killer": ServiceHandle<ISimulationSvc> m_particleKillerSimulationSvc; }; -- GitLab From 893b267bce2fa9d6bbff159568ad10ccbb0f1e12 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Thu, 15 Nov 2018 21:35:18 +0100 Subject: [PATCH 013/135] Whitespace clean-up of ISF_Interfaces classes Former-commit-id: a9eb7a9a26586056c8a439814008ec0043481705 --- .../ISF_Interfaces/BaseSimulationSvc.h | 23 ++--- .../ISF_Interfaces/ISimulationSvc.h | 94 +++++++++---------- 2 files changed, 52 insertions(+), 65 deletions(-) diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulationSvc.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulationSvc.h index d37e3b59941..7a11a6e5b5b 100644 --- a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulationSvc.h +++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulationSvc.h @@ -1,11 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// BaseSimulationSvc.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - #ifndef ISF_BASESIMULATIONSVC_H #define ISF_BASESIMULATIONSVC_H 1 @@ -47,12 +43,7 @@ namespace ISF { BaseSimulationSvc( const std::string& name, ISvcLocator* pSvcLocator): base_class(name,pSvcLocator), m_evtStore( "StoreGateSvc/StoreGateSvc", name ), - m_detStore( "StoreGateSvc/DetectorStore", name ), - m_simDescr(), - m_screenOutputPrefix("isf >> "), - m_chronoSvcName("ChronoStatSvc"), - m_chrono(0), - m_particleBroker(0) + m_detStore( "StoreGateSvc/DetectorStore", name ) { // to be set to a unique descriptor declareProperty( "Identifier", @@ -219,19 +210,19 @@ namespace ISF { protected: /** The simulator service descriptor */ - std::string m_simDescr; + std::string m_simDescr{""}; /** Screen output refinement - can be changed by declareProperty() */ - std::string m_screenOutputPrefix; + std::string m_screenOutputPrefix{"isf >> "}; /** Name of the timing service - can be set by declareProperty()*/ - std::string m_chronoSvcName; + std::string m_chronoSvcName{"ChronoStatSvc"}; /** The timing service for general usage */ - IChronoStatSvc* m_chrono; + IChronoStatSvc* m_chrono{}; /** The particle service used to push particles into the simulation */ - IParticleBroker* m_particleBroker; + IParticleBroker* m_particleBroker{}; }; diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulationSvc.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulationSvc.h index 3b0853ef497..132c7602117 100644 --- a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulationSvc.h +++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulationSvc.h @@ -1,10 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// ISimulationSvc.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// #ifndef ISF_INTERFACES_ISIMULATIONSVC_H #define ISF_INTERFACES_ISIMULATIONSVC_H 1 @@ -26,53 +23,53 @@ namespace ISF { class IParticleBroker; /** @ class ISimulationSvc - + Main interface of either geometrical of flavor simulation service. - The SimulationSvc does not take ownership of the StackParticle. + The SimulationSvc does not take ownership of the StackParticle. The IStackSvc and ITruthSvc handles are provided by the kernel to force one unique configuration. - + @ author Andreas.Salzburger -at- cern.ch, Michael.Duehrssen -at- cern.ch , Elmar.Ritsch -at- cern.ch - */ - class ISimulationSvc : virtual public IInterface { - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - ISimulationSvc() : m_ssvcID( ISF::fUndefinedSimID) { }; - - /// Creates the InterfaceID and interfaceID() method - DeclareInterfaceID(ISimulationSvc, 1, 0); - - /** Inform the SimulationSvc about the ParticleBroker */ - virtual StatusCode setParticleBroker( IParticleBroker *broker) = 0; - - /** Simulation call for vectors of particles*/ - virtual StatusCode simulateVector(const ConstISFParticleVector &particles) = 0; - - /** Simulation call for individual particles*/ - virtual StatusCode simulate(const ISFParticle& isp) = 0; - - /** Return the simulation service descriptor */ - virtual std::string& simSvcDescriptor() = 0; - - /** Setup Event chain - in case of a begin-of event action is needed, - to be called by simulation kernel */ - virtual StatusCode setupEvent() = 0; - - /** Release Event chain - in case of an end-of event action is needed, - to be called by simulation kernel */ - virtual StatusCode releaseEvent() = 0; - - /** Assign a simulation service ID */ - inline void assignSimSvcID(SimSvcID id); - - /** Return the simulation service ID */ - inline SimSvcID simSvcID(); - - private: - SimSvcID m_ssvcID; - }; + */ + class ISimulationSvc : virtual public IInterface { + + /////////////////////////////////////////////////////////////////// + // Public methods: + /////////////////////////////////////////////////////////////////// + public: + ISimulationSvc() { }; + + /// Creates the InterfaceID and interfaceID() method + DeclareInterfaceID(ISimulationSvc, 1, 0); + + /** Inform the SimulationSvc about the ParticleBroker */ + virtual StatusCode setParticleBroker( IParticleBroker *broker) = 0; + + /** Simulation call for vectors of particles*/ + virtual StatusCode simulateVector(const ConstISFParticleVector &particles) = 0; + + /** Simulation call for individual particles*/ + virtual StatusCode simulate(const ISFParticle& isp) = 0; + + /** Return the simulation service descriptor */ + virtual std::string& simSvcDescriptor() = 0; + + /** Setup Event chain - in case of a begin-of event action is needed, + to be called by simulation kernel */ + virtual StatusCode setupEvent() = 0; + + /** Release Event chain - in case of an end-of event action is needed, + to be called by simulation kernel */ + virtual StatusCode releaseEvent() = 0; + + /** Assign a simulation service ID */ + inline void assignSimSvcID(SimSvcID id); + + /** Return the simulation service ID */ + inline SimSvcID simSvcID(); + + private: + SimSvcID m_ssvcID{ISF::fUndefinedSimID}; + }; /** inline methods */ inline void ISimulationSvc::assignSimSvcID(SimSvcID id) { m_ssvcID = id; } @@ -81,4 +78,3 @@ namespace ISF { } #endif //> !ISF_INTERFACES_ISIMULATIONSVC_H - -- GitLab From dc7dc1ff2327e977fadb836d06f66961f5206a33 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Thu, 15 Nov 2018 23:37:05 +0100 Subject: [PATCH 014/135] Initial implementations of ISimulatorTool and BaseSimulatorTool for ISF MT Former-commit-id: d0b1afa5717225efa0f21b7bcc620ac1d8fba16b --- .../ISF_Interfaces/BaseSimulatorTool.h | 127 ++++++++++++++++++ .../ISF_Interfaces/ISimulatorTool.h | 54 ++++++++ 2 files changed, 181 insertions(+) create mode 100644 Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulatorTool.h create mode 100644 Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulatorTool.h diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulatorTool.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulatorTool.h new file mode 100644 index 00000000000..dec2ba66ae0 --- /dev/null +++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulatorTool.h @@ -0,0 +1,127 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef ISF_INTERFACES_BASESIMULATORTOOL_H +#define ISF_INTERFACES_BASESIMULATORTOOL_H 1 + +// STL includes +#include <string> + +// Gaudi +#include "GaudiKernel/ServiceHandle.h" +#include "GaudiKernel/ToolHandle.h" +#include "GaudiKernel/IChronoStatSvc.h" + +// Athena +#include "AthenaKernel/IOVSvcDefs.h" +#include "AthenaBaseComps/AthAlgTool.h" + +// DetectorDescription +#include "AtlasDetDescr/AtlasRegion.h" +#include "AtlasDetDescr/AtlasRegionHelper.h" + +// ISF includes +#include "ISF_Interfaces/ISimulatorTool.h" +#include "ISF_Event/ISFParticle.h" +#include "ISF_Event/SimSvcID.h" + +namespace ISF { + + /** @class BaseSimulatorTool + + Concrete base class for all simulator Tools + + */ + class BaseSimulatorTool : public extends<AthAlgTool, ISimulatorTool> { + public: + + //** Constructor with parameters */ + BaseSimulatorTool(const std::string& type, const std::string& name, const IInterface* parent) + : base_class(type, name, parent) + { + // Service handling + declareProperty("ChronoStatService", m_chronoSvcName ); + } + + /** Destructor */ + virtual ~BaseSimulatorTool() {} + + /** Gaudi sysInitialize() methods */ + virtual StatusCode sysInitialize() override + { + ATH_CHECK( AthAlgTool::sysInitialize() ); + ATH_CHECK( serviceLocator()->service(m_chronoSvcName, m_chrono ) ); + return StatusCode::SUCCESS; + } + + /** */ + virtual StatusCode initialize() override + { + return StatusCode::SUCCESS; + } + + /** Setup Event chain - in case of a begin-of event action is needed */ + virtual StatusCode setupEvent() override + { return StatusCode::FAILURE; } + + /** Setup Event chain - in case of a begin-of event action is needed (called by ISimulationSvc) */ + virtual StatusCode setupEventST() override + { return StatusCode::FAILURE; } + + /** */ + virtual StatusCode simulate( const ISFParticle& , ISFParticleContainer& ) override + { return StatusCode::FAILURE; } + + /** Simulation call for vectors of particles */ + virtual StatusCode simulateVector(const ConstISFParticleVector& particles, ISFParticleContainer& secondaries) override + { + // this implementation is a wrapper in case the simulator does + // implement particle-vector input + + // simulate each particle individually + for (auto* cisp : particles) { + ATH_MSG_VERBOSE( "Starting simulation of particle: " << (*cisp) ); + ATH_CHECK(this->simulate(*cisp, secondaries)); + } + return StatusCode::SUCCESS; + + } + + /** Release Event chain - in case of an end-of event action is needed */ + virtual StatusCode releaseEvent() override + { return StatusCode::FAILURE; } + + /** Release Event chain - in case of an end-of event action is needed (called by ISimulationSvc) */ + virtual StatusCode releaseEventST() override + { return StatusCode::FAILURE; } + + /** wrapper call to start chrono with given tag */ + const ChronoEntity* chronoStart(const IChronoSvc::ChronoTag& tag ) { + if (m_chrono) return m_chrono->chronoStart( tag); + return nullptr; + } + + /** wrapper call to stop chrono with given tag */ + const ChronoEntity* chronoStop(const IChronoSvc::ChronoTag& tag ) { + if (m_chrono) return m_chrono->chronoStop( tag); + return nullptr; + } + + private: + /** Default constructor */ + BaseSimulatorTool(); + + protected: + /** Name of the timing service - can be set by declareProperty()*/ + std::string m_chronoSvcName{"ChronoStatSvc"}; + + /** The timing service for general usage */ + IChronoStatSvc* m_chrono{}; + + }; + +} + + +#endif //> !ISF_INTERFACES_BASESIMULATORTOOL_H diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulatorTool.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulatorTool.h new file mode 100644 index 00000000000..8d6c4280cda --- /dev/null +++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulatorTool.h @@ -0,0 +1,54 @@ +// -*- c++ -*- + +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef ISF_ISIMULATORTOOL_H +#define ISF_ISIMULATORTOOL_H + +// Gaudi +#include "GaudiKernel/IAlgTool.h" + +// ISF +#include "ISF_Interfaces/SimulationFlavor.h" + +#include "ISF_Event/ISFParticle.h" +#include "ISF_Event/ISFParticleContainer.h" +#include "ISF_Event/ISFParticleVector.h" + +namespace ISF { + +class ISimulatorTool : virtual public IAlgTool { +public: + DeclareInterfaceID(ISimulatorTool, 1, 0); + + /** Simulation call for individual particles*/ + virtual StatusCode simulate(const ISFParticle& isp, ISFParticleContainer& secondaries ) = 0; + + /** Simulation call for vectors of particles*/ + virtual StatusCode simulateVector(const ConstISFParticleVector &particles, ISFParticleContainer& secondaries) = 0; + + /** Create data containers for an event */ + virtual StatusCode setupEvent() = 0; + + /** Create data containers for an event (called by ISimulationSvc) */ + virtual StatusCode setupEventST() = 0; + + /** Finalise data containers for an event */ + virtual StatusCode releaseEvent() = 0; + + /** Finalise data containers for an event (called by ISimulationSvc) */ + virtual StatusCode releaseEventST() = 0; + + /** return the simulation flavor */ + virtual ISF::SimulationFlavor simFlavor() const = 0; + + /** Migration path, allowing simulatortool to act as a particle broker, does not need to be implemented **/ + virtual void push( ISF::ISFParticle*, const ISF::ISFParticle* ) { return; }; + +}; + +} + +#endif -- GitLab From a19776953dd6f88ddd41655db0d1df68239f554f Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Fri, 28 Sep 2018 17:30:47 +0200 Subject: [PATCH 015/135] Create ParticleKillerSimTool which is called by ParticleKillerSimSvc and will be called by SimKernelMT in the future Former-commit-id: 776fb0df8cbd1e01adc46bfb38fc6162858655d4 --- .../ISF_Algorithms/test/SimKernelMT_test.cxx | 2 +- .../ISF_Services/python/ISF_ServicesConfig.py | 4 +- .../ISF_Services/src/ParticleKillerSimSvc.cxx | 40 ++----------- .../ISF_Services/src/ParticleKillerSimSvc.h | 57 ++++++++----------- .../ISF_Tools/python/ISF_ToolsConfig.py | 4 +- .../ISF_Tools/python/ISF_ToolsConfigDb.py | 4 +- .../ISF_Tools/src/ParticleKillerSimTool.cxx | 37 ++++++++++++ .../ISF_Tools/src/ParticleKillerSimTool.h | 44 ++++++++++++++ .../src/components/ISF_Tools_entries.cxx | 3 +- 9 files changed, 123 insertions(+), 72 deletions(-) create mode 100644 Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.cxx create mode 100644 Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.h diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx index 460e6ca72ae..b99fd796743 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx @@ -38,7 +38,7 @@ namespace ISFTesting { // Globally used services and tools // -const std::string particleKillerSimulationSvcName = "ISF::ParticleKillerSimSvc/ParticleKillerSimSvc"; +const std::string particleKillerSimulationSvcName = "ISF::ParticleKillerSimSvc/ISF_ParticleKillerSvc"; const std::string fullInputConverter = "ISF::InputConverter/InputConverter"; // Athena Service to mock an InputConverter diff --git a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfig.py b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfig.py index 36f87a3673e..b34858f748a 100644 --- a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfig.py +++ b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ Tools configurations for ISF @@ -62,9 +62,9 @@ def getAFIIGeoIDSvc(name="ISF_AFIIGeoIDSvc", **kwargs): def getParticleKillerSvc(name="ISF_ParticleKillerSvc", **kwargs): kwargs.setdefault('Identifier', "ParticleKiller") + kwargs.setdefault('SimulatorTool', "ISF_ParticleKillerTool") return CfgMgr.ISF__ParticleKillerSimSvc(name, **kwargs) - def getGenParticleFilters(): genParticleFilterList = [] genParticleFilterList = ['ISF_ParticleFinalStateFilter'] # not used for Quasi-stable particle simulation diff --git a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.cxx b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.cxx index 7f78101df05..269a95f885d 100644 --- a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.cxx +++ b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.cxx @@ -1,11 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// ParticleKillerSimSvc.cxx, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - // class header include #include "ParticleKillerSimSvc.h" @@ -24,40 +20,16 @@ ISF::ParticleKillerSimSvc::~ParticleKillerSimSvc() /** framework methods */ StatusCode ISF::ParticleKillerSimSvc::initialize() { - ATH_MSG_INFO ( m_screenOutputPrefix << "initialize() ..."); - return StatusCode::SUCCESS; -} - -/** framework methods */ -StatusCode ISF::ParticleKillerSimSvc::finalize() -{ - ATH_MSG_INFO ( m_screenOutputPrefix << "finalize() ..."); - return StatusCode::SUCCESS; -} - -StatusCode ISF::ParticleKillerSimSvc::setupEvent() -{ - ATH_MSG_DEBUG ( m_screenOutputPrefix << "setup Event"); - return StatusCode::SUCCESS; -} - -StatusCode ISF::ParticleKillerSimSvc::releaseEvent() -{ - ATH_MSG_DEBUG ( m_screenOutputPrefix << "release Event"); + ATH_CHECK (m_simulatorTool.retrieve()); return StatusCode::SUCCESS; } /** Simulation Call */ StatusCode ISF::ParticleKillerSimSvc::simulate(const ISF::ISFParticle& particle) { - - // give a screen output that you entered ParticleKillerSimSvc - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Particle '" << particle - << "' received for simulation." ); - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Killing this particle, since this" - << "is the soul purpose of this 'simulation engine'." ); - - // particle 'simulation' done - // (memory management, ie delete, of the ISFParticle is done inside the ISFKernel) + ATH_MSG_VERBOSE( m_screenOutputPrefix << " simulate" ); + ISFParticleContainer secondaries; + ATH_CHECK(m_simulatorTool->simulate( particle, secondaries)); + ATH_MSG_VERBOSE( "Returned "<< secondaries.size() << " secondaries."); return StatusCode::SUCCESS; } diff --git a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.h b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.h index 5900edb24fd..2c62b3a7b2c 100644 --- a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.h +++ b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.h @@ -1,11 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// ParticleKillerSimSvc.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - #ifndef ISF_PARTICLEKILLERSIMSVC_H #define ISF_PARTICLEKILLERSIMSVC_H 1 @@ -14,41 +10,38 @@ // ISF includes #include "ISF_Interfaces/BaseSimulationSvc.h" +#include "ISF_Interfaces/ISimulatorTool.h" +#include "ISF_Event/ISFParticleContainer.h" namespace ISF { /** @class ParticleKillerSimSvc - + This ISF SimulationService does literally nothing with the particles handed over in the simulate(...) call. Thus those particles will be removed from further simulation in ISF. - + @author Elmar.Ritsch -at- cern.ch - */ - class ParticleKillerSimSvc : public ISF::BaseSimulationSvc { - - public: - //** Constructor with parameters */ - ParticleKillerSimSvc( const std::string& name, ISvcLocator* pSvcLocator ); - - /** Destructor */ - virtual ~ParticleKillerSimSvc(); - - /** Athena algorithm's interface methods */ - StatusCode initialize(); - StatusCode finalize(); - - /** Simulation Call */ - StatusCode simulate(const ISF::ISFParticle& isp); - - /** Setup Event chain - in case of a begin-of event action is needed */ - StatusCode setupEvent(); - - /** Release Event chain - in case of an end-of event action is needed */ - StatusCode releaseEvent(); - - private: - }; + */ + class ParticleKillerSimSvc : public ISF::BaseSimulationSvc { + + public: + //** Constructor with parameters */ + ParticleKillerSimSvc( const std::string& name, ISvcLocator* pSvcLocator ); + + /** Destructor */ + virtual ~ParticleKillerSimSvc(); + + /** Athena algorithm's interface methods */ + virtual StatusCode initialize() override; + + /** Simulation Call */ + virtual StatusCode simulate(const ISF::ISFParticle& isp) override; + + private: + PublicToolHandle<ISF::ISimulatorTool> m_simulatorTool{this, "SimulatorTool", "ISF__ParticleKillerSimTool", ""}; + + }; } diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfig.py b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfig.py index e0395f06a0c..3df793f628d 100644 --- a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfig.py +++ b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ Tools configurations for ISF @@ -137,3 +137,5 @@ def getParticleOrderingTool(name="ISF_ParticleOrderingTool", **kwargs): kwargs.setdefault('OrderCavern' , 1 ) return CfgMgr.ISF__GenericParticleOrderingTool(name, **kwargs) +def getParticleKillerTool(name="ISF_ParticleKillerTool", **kwargs): + return CfgMgr.ISF__ParticleKillerSimTool(name, **kwargs) diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigDb.py b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigDb.py index ac3356a7296..1963ca7ce1b 100644 --- a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigDb.py +++ b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigDb.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ Configuration database for ISF_Tools @@ -29,3 +29,5 @@ addTool("ISF_Tools.ISF_ToolsConfig.getMC18EntryLayerFilter" , "I addTool("ISF_Tools.ISF_ToolsConfig.getMC18LLPEntryLayerFilter" , "ISF_MC18LLPEntryLayerFilter" ) addTool("ISF_Tools.ISF_ToolsConfig.getValidationEntryLayerFilter" , "ISF_ValidationEntryLayerFilter" ) addTool("ISF_Tools.ISF_ToolsConfig.getStoppedParticleFilter" , "ISF_StoppedParticleFilter" ) + +addTool("ISF_Tools.ISF_ToolsConfig.getParticleKillerTool" , "ISF_ParticleKillerTool" ) diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.cxx b/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.cxx new file mode 100644 index 00000000000..b75d9522d9a --- /dev/null +++ b/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.cxx @@ -0,0 +1,37 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#include "./ParticleKillerSimTool.h" + +ISF::ParticleKillerSimTool::ParticleKillerSimTool(const std::string& type, const std::string& name, const IInterface* parent) + : BaseSimulatorTool(type, name, parent) +{ +} + +ISF::ParticleKillerSimTool::~ParticleKillerSimTool() { + +} + +StatusCode ISF::ParticleKillerSimTool::initialize() { + return StatusCode::SUCCESS; +} + +StatusCode ISF::ParticleKillerSimTool::simulate( const ISFParticle& isp, ISFParticleContainer& ) { + + // give a screen output that you entered ParticleKillerSimSvc + ATH_MSG_VERBOSE( "Particle '" << isp << "' received for simulation." ); + ATH_MSG_VERBOSE( "Killing this particle, since this" + << "is the soul purpose of this 'simulation engine'." ); + + // particle 'simulation' done + // (memory management, ie delete, of the ISFParticle is done inside the ISFKernel) + return StatusCode::SUCCESS; +} + +StatusCode ISF::ParticleKillerSimTool::simulateVector(const ConstISFParticleVector& particles, ISFParticleContainer& secondaries) { + for (auto isp : particles) { + ATH_CHECK(simulate(*isp, secondaries)); + } + return StatusCode::SUCCESS; +} diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.h b/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.h new file mode 100644 index 00000000000..79f8a6d3fca --- /dev/null +++ b/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.h @@ -0,0 +1,44 @@ +// -*- c++ -*- + +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef ISF_PARTICLEKILLERSIMTOOL_h +#define ISF_PARTICLEKILLERSIMTOOL_h + +//Gaudi +#include "GaudiKernel/ServiceHandle.h" +#include "GaudiKernel/ToolHandle.h" // for ToolHandleArray + +//Athena +#include "AthenaBaseComps/AthAlgTool.h" + +// ISF +#include "ISF_Interfaces/BaseSimulatorTool.h" + +namespace ISF { + +class ParticleKillerSimTool : public BaseSimulatorTool { +public: + ParticleKillerSimTool( const std::string& type, const std::string& name, const IInterface* parent); + + ~ParticleKillerSimTool(); + + virtual StatusCode initialize() override; + + virtual StatusCode simulate( const ISFParticle& isp, ISFParticleContainer& ) override; + + /** */ + virtual StatusCode simulateVector(const ConstISFParticleVector& particles, ISFParticleContainer& ) override; + + virtual StatusCode setupEvent() override { return StatusCode::SUCCESS; }; + + virtual StatusCode releaseEvent() override { return StatusCode::SUCCESS; }; + + virtual ISF::SimulationFlavor simFlavor() const override { return ISF::ParticleKiller; }; +}; + +} + +#endif diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/src/components/ISF_Tools_entries.cxx b/Simulation/ISF/ISF_Core/ISF_Tools/src/components/ISF_Tools_entries.cxx index 1bccb0e4c78..1301c6983a4 100644 --- a/Simulation/ISF/ISF_Core/ISF_Tools/src/components/ISF_Tools_entries.cxx +++ b/Simulation/ISF/ISF_Core/ISF_Tools/src/components/ISF_Tools_entries.cxx @@ -5,6 +5,7 @@ #include "../KinematicParticleFilter.h" #include "../CosmicEventFilterTool.h" #include "../GenericParticleOrderingTool.h" +#include "../ParticleKillerSimTool.h" DECLARE_COMPONENT( ISF::ParticleHelper ) DECLARE_COMPONENT( ISF::MemoryMonitoringTool ) @@ -13,4 +14,4 @@ DECLARE_COMPONENT( ISF::EntryLayerFilter ) DECLARE_COMPONENT( ISF::KinematicParticleFilter ) DECLARE_COMPONENT( ISF::CosmicEventFilterTool ) DECLARE_COMPONENT( ISF::GenericParticleOrderingTool ) - +DECLARE_COMPONENT( ISF::ParticleKillerSimTool ) -- GitLab From f59fcd668500c36c3833a8fb4f5a4207a84e3dd5 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Wed, 26 Sep 2018 11:14:26 +0200 Subject: [PATCH 016/135] Migrate FastCaloSimSvc so that just calls methods of FastCaloSimTool This commit moves all the guts of FastCaloSimSvc into FastCaloSimTool except for the parts related to using the ParticleBroker. Disable punchThroughTool if it shouldn't be used. Former-commit-id: 62f189eda07cc7d251e055163bb589adccc47ea4 --- .../python/AdditionalConfig.py | 35 +- .../python/ISF_FastCaloSimServicesConfig.py | 80 ++-- .../python/ISF_FastCaloSimServicesConfigDb.py | 8 +- .../src/FastCaloSimSvc.cxx | 413 +--------------- .../src/FastCaloSimSvc.h | 104 +--- .../src/FastCaloTool.cxx | 453 ++++++++++++++++++ .../src/FastCaloTool.h | 112 +++++ .../ISF_FastCaloSimServices_entries.cxx | 3 +- 8 files changed, 676 insertions(+), 532 deletions(-) create mode 100644 Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.cxx create mode 100644 Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.h diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py index cc621513659..2973f8d11c6 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ Tools configurations for ISF_FastCaloSimServices @@ -871,3 +871,36 @@ def getFastHitConvAlg(name="ISF_FastHitConvAlg", **kwargs): # kwargs.setdefault("doPileup", False) from FastCaloSimHit.FastCaloSimHitConf import FastHitConv return FastHitConv(name, **kwargs ) + +def getFastCaloToolBase(name="ISF_FastCaloToolBase", **kwargs): + from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags + kwargs.setdefault("BatchProcessMcTruth" , False ) + kwargs.setdefault("SimulateUndefinedBarcodeParticles", False ) + kwargs.setdefault("CaloCellsOutputName" , ISF_FastCaloSimFlags.CaloCellsName() ) + kwargs.setdefault("PunchThroughTool" , 'ISF_PunchThroughTool' ) + kwargs.setdefault("DoPunchThroughSimulation" , False ) + kwargs.setdefault("CaloCellMakerTools_setup" , [ 'ISF_EmptyCellBuilderTool' ] ) + kwargs.setdefault("CaloCellMakerTools_simulate" , [ 'ISF_FastShowerCellBuilderTool' ]) + kwargs.setdefault("CaloCellMakerTools_release" , [ #'ISF_AddNoiseCellBuilderTool', + 'ISF_CaloCellContainerFinalizerTool', + 'ISF_FastHitConvertTool' ]) + kwargs.setdefault("Extrapolator" , 'ISF_NITimedExtrapolator') + # register the FastCaloSim random number streams + from G4AtlasApps.SimFlags import simFlags + if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()): + simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 ) + return CfgMgr.ISF__FastCaloTool(name, **kwargs) + +def getFastCaloTool(name="ISF_FastCaloTool", **kwargs): + return getFastCaloToolBase(name, **kwargs) + +def getFastCaloPileupTool(name="ISF_FastCaloPileupTool", **kwargs): + from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags + kwargs.setdefault("CaloCellsOutputName" , ISF_FastCaloSimFlags.CaloCellsName()+'PileUp' ) + kwargs.setdefault("CaloCellMakerTools_simulate" , [ 'ISF_PileupFastShowerCellBuilderTool' ]) + return getFastCaloToolBase(name, **kwargs) + +def getLegacyAFIIFastCaloTool(name="ISF_LegacyAFIIFastCaloTool", **kwargs): + kwargs.setdefault("BatchProcessMcTruth" , True ) + kwargs.setdefault("CaloCellMakerTools_simulate" , [ 'ISF_LegacyFastShowerCellBuilderTool' ] ) + return getFastCaloToolBase(name, **kwargs) diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py index 318ddd16765..62e8ded1c78 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py @@ -10,61 +10,18 @@ from AthenaCommon import CfgMgr from FastChainPileup.FastChain_jobProperties import FastChain_Flags #### FastCaloSimSvc def getFastCaloSimSvc(name="ISF_FastCaloSimSvc", **kwargs): - from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags - kwargs.setdefault("BatchProcessMcTruth" , False ) - kwargs.setdefault("SimulateUndefinedBarcodeParticles", False ) - kwargs.setdefault("Identifier" , 'FastCaloSim' ) - kwargs.setdefault("CaloCellsOutputName" , ISF_FastCaloSimFlags.CaloCellsName() ) - kwargs.setdefault("PunchThroughTool" , 'ISF_PunchThroughTool' ) - kwargs.setdefault("DoPunchThroughSimulation" , False ) - kwargs.setdefault("CaloCellMakerTools_setup" , [ 'ISF_EmptyCellBuilderTool' ] ) - kwargs.setdefault("CaloCellMakerTools_simulate" , [ 'ISF_FastShowerCellBuilderTool' ]) - kwargs.setdefault("CaloCellMakerTools_release" , [ #'ISF_AddNoiseCellBuilderTool', - 'ISF_CaloCellContainerFinalizerTool', - 'ISF_FastHitConvertTool' ]) - kwargs.setdefault("Extrapolator" , 'ISF_NITimedExtrapolator') - # register the FastCaloSim random number streams - from G4AtlasApps.SimFlags import simFlags - if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()): - simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 ) + kwargs.setdefault("SimulatorTool", 'ISF_FastCaloTool') + kwargs.setdefault("Identifier", 'FastCaloSim') return CfgMgr.ISF__FastCaloSimSvc(name, **kwargs ) -def getFastCaloSimPileupOTSvc(name="ISF_FastCaloSimPileupOTSvc", **kwargs): - from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags - kwargs.setdefault("BatchProcessMcTruth" , False ) - kwargs.setdefault("SimulateUndefinedBarcodeParticles", False ) - kwargs.setdefault("Identifier" , 'FastCaloSim' ) - kwargs.setdefault("CaloCellsOutputName" , ISF_FastCaloSimFlags.CaloCellsName()+'PileUp' ) - kwargs.setdefault("PunchThroughTool" , 'ISF_PunchThroughTool' ) - kwargs.setdefault("DoPunchThroughSimulation" , False ) - #kwargs.setdefault("PUWeights" , FastChain_Flags.FastChainPUWeights() ) - kwargs.setdefault("PUWeights_lar_bapre" , FastChain_Flags.FastChainPUWeights_lar_bapre() ) - kwargs.setdefault("PUWeights_lar_hec" , FastChain_Flags.FastChainPUWeights_lar_hec() ) - kwargs.setdefault("PUWeights_lar_em" , FastChain_Flags.FastChainPUWeights_lar_em() ) - kwargs.setdefault("PUWeights_tile" , FastChain_Flags.FastChainPUWeights_tile() ) - kwargs.setdefault("CaloCellMakerTools_setup" , [ 'ISF_EmptyCellBuilderTool' ] ) - kwargs.setdefault("CaloCellMakerTools_simulate" , [ 'ISF_FastShowerCellBuilderTool' ]) - kwargs.setdefault("CaloCellMakerTools_release" , [ #'ISF_AddNoiseCellBuilderTool', - 'ISF_CaloCellContainerFinalizerTool', - 'ISF_FastHitConvertTool' ]) - kwargs.setdefault("Extrapolator" , 'ISF_NITimedExtrapolator') - # register the FastCaloSim random number streams - from G4AtlasApps.SimFlags import simFlags - if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()): - simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 ) - return CfgMgr.ISF__FastCaloSimSvcPU(name, **kwargs ) - #### Pileup FastCaloSim def getFastCaloSimPileupSvc(name="ISF_FastCaloSimPileupSvc", **kwargs): - from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags - kwargs.setdefault("CaloCellsOutputName" , ISF_FastCaloSimFlags.CaloCellsName()+'PileUp' ) - kwargs.setdefault("CaloCellMakerTools_simulate" , [ 'ISF_PileupFastShowerCellBuilderTool' ]) + kwargs.setdefault("SimulatorTool", 'ISF_FastCaloPileupTool') return getFastCaloSimSvc(name, **kwargs) #### Legacy FastCaloSim def getLegacyAFIIFastCaloSimSvc(name="ISF_LegacyAFIIFastCaloSimSvc", **kwargs): - kwargs.setdefault("BatchProcessMcTruth" , True ) - kwargs.setdefault("CaloCellMakerTools_simulate" , [ 'ISF_LegacyFastShowerCellBuilderTool' ] ) + kwargs.setdefault("SimulatorTool", 'ISF_LegacyAFIIFastCaloTool') return getFastCaloSimSvc(name, **kwargs) def getFastHitConvAlgFastCaloSimSvc(name="ISF_FastHitConvAlgFastCaloSimSvc",**kwargs): @@ -84,6 +41,31 @@ def getFastHitConvAlgLegacyAFIIFastCaloSimSvc(name="ISF_FastHitConvAlgLegacyAFII kwargs.setdefault("BatchProcessMcTruth" , True ) return getFastHitConvAlgFastCaloSimSvc(name, **kwargs) +def getFastCaloSimPileupOTSvc(name="ISF_FastCaloSimPileupOTSvc", **kwargs): + from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags + kwargs.setdefault("BatchProcessMcTruth" , False ) + kwargs.setdefault("SimulateUndefinedBarcodeParticles", False ) + kwargs.setdefault("Identifier" , 'FastCaloSim' ) + kwargs.setdefault("CaloCellsOutputName" , ISF_FastCaloSimFlags.CaloCellsName()+'PileUp' ) + kwargs.setdefault("PunchThroughTool" , 'ISF_PunchThroughTool' ) + kwargs.setdefault("DoPunchThroughSimulation" , False ) + #kwargs.setdefault("PUWeights" , FastChain_Flags.FastChainPUWeights() ) + kwargs.setdefault("PUWeights_lar_bapre" , FastChain_Flags.FastChainPUWeights_lar_bapre() ) + kwargs.setdefault("PUWeights_lar_hec" , FastChain_Flags.FastChainPUWeights_lar_hec() ) + kwargs.setdefault("PUWeights_lar_em" , FastChain_Flags.FastChainPUWeights_lar_em() ) + kwargs.setdefault("PUWeights_tile" , FastChain_Flags.FastChainPUWeights_tile() ) + kwargs.setdefault("CaloCellMakerTools_setup" , [ 'ISF_EmptyCellBuilderTool' ] ) + kwargs.setdefault("CaloCellMakerTools_simulate" , [ 'ISF_FastShowerCellBuilderTool' ]) + kwargs.setdefault("CaloCellMakerTools_release" , [ #'ISF_AddNoiseCellBuilderTool', + 'ISF_CaloCellContainerFinalizerTool', + 'ISF_FastHitConvertTool' ]) + kwargs.setdefault("Extrapolator" , 'ISF_NITimedExtrapolator') + # register the FastCaloSim random number streams + from G4AtlasApps.SimFlags import simFlags + if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()): + simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 ) + return CfgMgr.ISF__FastCaloSimSvcPU(name, **kwargs ) + #### FastCaloSimV2 def getFastCaloSimSvcV2(name="ISF_FastCaloSimSvcV2", **kwargs): from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags @@ -100,8 +82,8 @@ def getFastCaloSimSvcV2(name="ISF_FastCaloSimSvcV2", **kwargs): from G4AtlasApps.SimFlags import simFlags if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()): simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 ) - + kwargs.setdefault("RandomStream" , ISF_FastCaloSimFlags.RandomStreamName()) kwargs.setdefault("RandomSvc" , simFlags.RandomSvc.get_Value() ) - + return CfgMgr.ISF__FastCaloSimSvcV2(name, **kwargs ) diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigDb.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigDb.py index 34fe225868e..70399972113 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigDb.py +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigDb.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ Configuration database for ISF_FastCaloSimServices @@ -20,6 +20,11 @@ addTool("ISF_FastCaloSimServices.AdditionalConfig.getCaloNoiseTool", addTool("ISF_FastCaloSimServices.AdditionalConfig.getAddNoiseCellBuilderTool", "ISF_AddNoiseCellBuilderTool") addTool("ISF_FastCaloSimServices.AdditionalConfig.getCaloCellContainerFinalizerTool", "ISF_CaloCellContainerFinalizerTool") addTool("ISF_FastCaloSimServices.AdditionalConfig.getFastHitConvertTool", "ISF_FastHitConvertTool") + +addTool("ISF_FastCaloSimServices.AdditionalConfig.getFastCaloTool", "ISF_FastCaloTool") +addTool("ISF_FastCaloSimServices.AdditionalConfig.getFastCaloPileupTool", "ISF_FastCaloPileupTool") +addTool("ISF_FastCaloSimServices.AdditionalConfig.getLegacyAFIIFastCaloTool", "ISF_LegacyAFIIFastCaloTool") + addAlgorithm("ISF_FastCaloSimServices.AdditionalConfig.getFastHitConvAlg", "ISF_FastHitConvAlg") addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getNativeFastCaloSimSvc", "ISF_NativeFastCaloSimSvc") @@ -27,7 +32,6 @@ addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSim addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSimPileupSvc", "ISF_FastCaloSimPileupSvc") addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSimPileupOTSvc", "ISF_FastCaloSimPileupOTSvc") addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastHitConvAlgFastCaloSimSvc", "ISF_FastHitConvFastCaloSimSvc") -addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSimSvcBase", "ISF_FastCaloSimSvcBase") addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getLegacyAFIIFastCaloSimSvc", "ISF_LegacyAFIIFastCaloSimSvc") addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastHitConvAlgLegacyAFIIFastCaloSimSvc", "ISF_FastHitConvAlgLegacyAFIIFastCaloSimSvc") addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSimSvcV2", "ISF_FastCaloSimSvcV2") diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.cxx index 2ae2cbcc483..a6a4af6f39c 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.cxx +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.cxx @@ -4,431 +4,46 @@ // class header include #include "FastCaloSimSvc.h" - -// StoreGate -#include "StoreGate/StoreGateSvc.h" #include "ISF_Interfaces/IParticleBroker.h" -// ISF includes -#include "ISF_Event/ISFParticle.h" -#include "ISF_Event/ISFParticleContainer.h" - -// HepMC include needed for FastCaloSim -#include "HepMC/GenParticle.h" -#include "HepMC/GenVertex.h" -#include "HepMC/SimpleVector.h" -#include "CLHEP/Units/SystemOfUnits.h" -// McEventCollection -#include "GeneratorObjects/McEventCollection.h" -// Calo Cell includes -#include "CaloEvent/CaloCell.h" -#include "CaloEvent/CaloCellContainer.h" -#include "NavFourMom/INavigable4MomentumCollection.h" -// Barcode -#include "BarcodeEvent/Barcode.h" -// use FastShowerCellBuilderTool for actual simulation -//#include "FastSimulationEvent/GenParticleEnergyDepositMap.h" -#include "FastCaloSim/FastShowerCellBuilderTool.h" -// PunchThrough Tool -#include "ISF_FastCaloSimInterfaces/IPunchThroughTool.h" - /** Constructor **/ ISF::FastCaloSimSvc::FastCaloSimSvc(const std::string& name,ISvcLocator* svc) : - BaseSimulationSvc(name, svc), - m_extrapolator(), - m_ownPolicy(static_cast<int>(SG::VIEW_ELEMENTS)), - m_batchProcessMcTruth(false), - m_simulateUndefinedBCs(false), - m_caloCellsOutputName("AllCalo"), - m_caloCellHack(false), - m_doPunchThrough(false), - m_caloCellMakerTools_setup(), - m_caloCellMakerTools_simulate(), - m_caloCellMakerTools_release(), - m_punchThroughTool(""), - m_theContainer(0) + BaseSimulationSvc(name, svc) { - // where to go - declareProperty("OwnPolicy", m_ownPolicy) ; - declareProperty("CaloCellMakerTools_setup" , m_caloCellMakerTools_setup) ; - declareProperty("CaloCellMakerTools_simulate", m_caloCellMakerTools_simulate) ; - declareProperty("CaloCellMakerTools_release" , m_caloCellMakerTools_release) ; - declareProperty("PunchThroughTool", m_punchThroughTool); - declareProperty("CaloCellsOutputName", m_caloCellsOutputName) ; - declareProperty("CaloCellHack", m_caloCellHack) ; - declareProperty("DoPunchThroughSimulation", m_doPunchThrough) ; - declareProperty("Extrapolator", m_extrapolator ); - declareProperty("SimulateUndefinedBarcodeParticles", - m_simulateUndefinedBCs, - "Whether or not to simulate paritcles with undefined barcode" ); - declareProperty("BatchProcessMcTruth", - m_batchProcessMcTruth=false, - "Run the FastShowerCellBuilders on the McTruth at the end of the event" ); } -ISF::FastCaloSimSvc::~FastCaloSimSvc() +ISF::FastCaloSimSvc::~FastCaloSimSvc() {} /** framework methods */ StatusCode ISF::FastCaloSimSvc::initialize() { - ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ..."); - - // access tools and store them - if ( retrieveTools<ICaloCellMakerTool>(m_caloCellMakerTools_setup).isFailure() ) - return StatusCode::FAILURE; - if ( retrieveTools<ICaloCellMakerTool>(m_caloCellMakerTools_simulate).isFailure() ) - return StatusCode::FAILURE; - if ( retrieveTools<ICaloCellMakerTool>(m_caloCellMakerTools_release).isFailure() ) - return StatusCode::FAILURE; - - if (m_doPunchThrough && m_punchThroughTool.retrieve().isFailure() ) - { - ATH_MSG_ERROR (m_punchThroughTool.propertyName() << ": Failed to retrieve tool " << m_punchThroughTool.type()); - return StatusCode::FAILURE; - } - - // Get TimedExtrapolator - if (!m_extrapolator.empty() && m_extrapolator.retrieve().isFailure()) - return StatusCode::FAILURE; - - ATH_MSG_DEBUG( m_screenOutputPrefix << " Output CaloCellContainer Name " << m_caloCellsOutputName ); - if (m_ownPolicy==SG::OWN_ELEMENTS){ - ATH_MSG_INFO( m_screenOutputPrefix << "...will OWN its cells." ); - } - else - { - ATH_MSG_INFO( m_screenOutputPrefix << "...will VIEW its cells." ); - } + ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ..."); - if (m_caloCellHack){ - ATH_MSG_WARNING( m_screenOutputPrefix << " CaloCellContainer: " << m_caloCellsOutputName << "will be read in and modified !. To be used with care. " ); - } + ATH_CHECK ( m_simulatorTool.retrieve() ); - return StatusCode::SUCCESS; -} - -/** framework methods */ -StatusCode ISF::FastCaloSimSvc::finalize() -{ - ATH_MSG_INFO ( m_screenOutputPrefix << "Finalizing ..."); - return StatusCode::SUCCESS; + return StatusCode::SUCCESS; } StatusCode ISF::FastCaloSimSvc::setupEvent() -{ - ATH_MSG_DEBUG ( m_screenOutputPrefix << "setup Event"); - - if (!m_caloCellHack) { - - m_theContainer = new CaloCellContainer(static_cast<SG::OwnershipPolicy>(m_ownPolicy)); - - StatusCode sc=StatusCode::SUCCESS; - sc=evtStore()->record(m_theContainer,m_caloCellsOutputName); - - if (sc.isFailure()) { - ATH_MSG_FATAL( m_screenOutputPrefix << "cannot record CaloCellContainer " << m_caloCellsOutputName ); - return StatusCode::FAILURE; - } - - // also symLink as INavigable4MomentumCollection! - INavigable4MomentumCollection* theNav4Coll = 0; - sc = evtStore()->symLink(m_theContainer,theNav4Coll); - - if (sc.isFailure()) { - ATH_MSG_WARNING( m_screenOutputPrefix << "Error symlinking CaloCellContainer to INavigable4MomentumCollection " ); - return StatusCode::FAILURE; - } - } - else { - // take CaloCellContainer from input and cast away constness - const CaloCellContainer * theConstContainer ; - - StatusCode sc=StatusCode::SUCCESS; - sc=evtStore()->retrieve(theConstContainer,m_caloCellsOutputName); - if (sc.isFailure() || theConstContainer==0) - { - ATH_MSG_FATAL( m_screenOutputPrefix << "Could not retrieve CaloCellContainer " << m_caloCellsOutputName ); - return StatusCode::FAILURE; - } - m_theContainer = const_cast<CaloCellContainer *> (theConstContainer); - } - - // loop on setup tools - ToolHandleArray<ICaloCellMakerTool>::iterator itrTool=m_caloCellMakerTools_setup.begin(); - ToolHandleArray<ICaloCellMakerTool>::iterator endTool=m_caloCellMakerTools_setup.end(); - for (;itrTool!=endTool;++itrTool){ - ATH_MSG_DEBUG( m_screenOutputPrefix << "Calling tool " << itrTool->name() ); - std::string chronoName=this->name()+"_"+ itrTool->name(); - - if (m_chrono) m_chrono -> chronoStart( chronoName); - StatusCode sc = (*itrTool)->process(m_theContainer); - if (m_chrono) { - m_chrono -> chronoStop( chronoName ); - ATH_MSG_DEBUG( m_screenOutputPrefix << "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " ); - } - - if (sc.isFailure()) { - ATH_MSG_ERROR( m_screenOutputPrefix << "Error executing tool " << itrTool->name() ); - } - } - - // loop on simulate tools - itrTool=m_caloCellMakerTools_simulate.begin(); - endTool=m_caloCellMakerTools_simulate.end(); - for (;itrTool!=endTool;++itrTool) { - FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*(*itrTool))); - if(fcs) { - if(fcs->setupEvent().isFailure()) { - ATH_MSG_ERROR( m_screenOutputPrefix << "Error executing tool " << itrTool->name() << " in setupEvent"); - return StatusCode::FAILURE; - } - } - } - - return StatusCode::SUCCESS; +{ + return m_simulatorTool->setupEventST(); } StatusCode ISF::FastCaloSimSvc::releaseEvent() -{ - ATH_MSG_DEBUG ( m_screenOutputPrefix << "release Event"); - - // the return value - StatusCode sc = StatusCode::SUCCESS; - - // (1.) batch processing of all particles from McTruth - // (for MC12 parametrization) - // - if ( m_batchProcessMcTruth) { - // -> run the FastShowerCellBuilder tools - // (in Python they should be configured to pick up the modified truth collection) - ToolHandleArray<ICaloCellMakerTool>::iterator itrTool=m_caloCellMakerTools_simulate.begin(); - ToolHandleArray<ICaloCellMakerTool>::iterator endTool=m_caloCellMakerTools_simulate.end(); - for (;itrTool!=endTool;++itrTool) { - FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*(*itrTool))); - if(!fcs) { - ATH_MSG_WARNING( m_screenOutputPrefix << "tool " << itrTool->name()<< "is not a FastShowerCellBuilderTool" ); - continue; - } - - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Calling tool " << itrTool->name() ); - - if( fcs->process(m_theContainer).isFailure()) { - ATH_MSG_WARNING( m_screenOutputPrefix << "batch simulation of FastCaloSim particles failed" ); - sc = StatusCode::FAILURE; - } - } - } // <-- end of batch particle processing - - // (2.) finalize simulation tools in a loop - // - ToolHandleArray<ICaloCellMakerTool>::iterator itrTool=m_caloCellMakerTools_simulate.begin(); - ToolHandleArray<ICaloCellMakerTool>::iterator endTool=m_caloCellMakerTools_simulate.end(); - for (;itrTool!=endTool;++itrTool) { - FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*(*itrTool))); - if(fcs) { - if(fcs->releaseEvent().isFailure()) { - ATH_MSG_ERROR( m_screenOutputPrefix << "Error executing tool " << itrTool->name() << " in releaseEvent"); - return StatusCode::FAILURE; - } - } - } - - // (3.) run release tools in a loop - // - itrTool=m_caloCellMakerTools_release.begin(); - endTool=m_caloCellMakerTools_release.end(); - for (;itrTool!=endTool;++itrTool){ - ATH_MSG_DEBUG( m_screenOutputPrefix << "Calling tool " << itrTool->name() ); - std::string chronoName=this->name()+"_"+ itrTool->name(); - - if (m_chrono) m_chrono -> chronoStart( chronoName); - sc = (*itrTool)->process(m_theContainer); - if (m_chrono) { - m_chrono -> chronoStop( chronoName ); - ATH_MSG_DEBUG( m_screenOutputPrefix << "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " ); - } - - if (sc.isFailure()) { - ATH_MSG_ERROR( m_screenOutputPrefix << "Error executing tool " << itrTool->name() ); - } - } - - return StatusCode::SUCCESS; +{ + return m_simulatorTool->releaseEventST(); } - /** Simulation Call */ StatusCode ISF::FastCaloSimSvc::simulate(const ISF::ISFParticle& isfp) { - // read the particle's barcode - Barcode::ParticleBarcode bc = isfp.barcode(); -//lets do punch-through here -//---------------------------------------------------------- - - // punch-through simulation - - if (m_doPunchThrough) { - // call punch-through simulation - const ISF::ISFParticleContainer* isfpVec = m_punchThroughTool->computePunchThroughParticles(isfp); - - // add punch-through particles to the ISF particle broker - if (isfpVec) { - ISF::ISFParticleContainer::const_iterator partIt = isfpVec->begin(); - ISF::ISFParticleContainer::const_iterator partItEnd = isfpVec->end(); - for ( ; partIt!=partItEnd; ++partIt) { - m_particleBroker->push( *partIt, &isfp); - } + ISF::ISFParticleContainer secondaries; + ATH_CHECK(m_simulatorTool->simulate(isfp, secondaries)); + if (not secondaries.empty()) { + for (auto particle : secondaries) { + m_particleBroker->push( particle, &isfp); } } - - // (a.) batch process mode, ignore the incoming particle for now - if ( m_batchProcessMcTruth) { - ATH_MSG_DEBUG("particle is ignored now, will run Calo simulation using ID McTruth at the end of the event"); - return StatusCode::SUCCESS; - } - // (b.) throw away particles with undefined Barcode if m_simulateUndefinedBCs==False - else if ( (!m_simulateUndefinedBCs) && (bc == Barcode::fUndefinedBarcode)) { - ATH_MSG_DEBUG("particle has undefined barcode, will not simulate it"); - return StatusCode::SUCCESS; - } - // (c.) individual particle processing - ATH_MSG_DEBUG("particle is simulated individually"); - return processOneParticle( isfp); -} - - -StatusCode ISF::FastCaloSimSvc::processOneParticle( const ISF::ISFParticle& isfp) { - ATH_MSG_VERBOSE ( m_screenOutputPrefix << "Simulating pdgid = "<< isfp.pdgCode()); - - ToolHandleArray<ICaloCellMakerTool>::iterator itrTool=m_caloCellMakerTools_simulate.begin(); - ToolHandleArray<ICaloCellMakerTool>::iterator endTool=m_caloCellMakerTools_simulate.end(); - - std::vector<Trk::HitInfo>* hitVector= caloHits(isfp); - - if (!hitVector || !hitVector->size()) { - ATH_MSG_WARNING ( "ISF_FastCaloSim: no hits in calo"); - return StatusCode::FAILURE; - } - - // loop on tools - for (;itrTool!=endTool;++itrTool) { - FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*(*itrTool))); - if(!fcs) { - ATH_MSG_WARNING( m_screenOutputPrefix << "tool " << itrTool->name()<< "is not a FastShowerCellBuilderTool" ); - continue; - } - - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Calling tool " << itrTool->name() ); - std::string chronoName=this->name()+"_"+ itrTool->name(); - - if (m_chrono) m_chrono->chronoStart( chronoName); - - //sc = (*itrTool)->process(m_theContainer); - if(fcs->process_particle(m_theContainer,hitVector, - isfp.momentum(),isfp.mass(),isfp.pdgCode(),isfp.barcode()).isFailure()) { - ATH_MSG_WARNING( m_screenOutputPrefix << "simulation of particle pdgid=" << isfp.pdgCode()<< " failed" ); - return StatusCode::FAILURE; - } - - if (m_chrono) m_chrono->chronoStop( chronoName ); - //ATH_MSG_DEBUG( m_screenOutputPrefix << "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " ); - } //end of for-loop - - if(hitVector) { - for(std::vector<Trk::HitInfo>::iterator it = hitVector->begin();it < hitVector->end();++it) { - if((*it).trackParms) { - delete (*it).trackParms; - (*it).trackParms=0; - } - } - delete hitVector; - } - - // ATH_MSG_VERBOSE ( m_screenOutputPrefix << "kill the particle in the end"); return StatusCode::SUCCESS; } - - -std::vector<Trk::HitInfo>* ISF::FastCaloSimSvc::caloHits(const ISF::ISFParticle& isp) const -{ - // Start calo extrapolation - ATH_MSG_VERBOSE ("[ fastCaloSim transport ] processing particle "<<isp.pdgCode() ); - - std::vector<Trk::HitInfo>* hitVector = new std::vector<Trk::HitInfo>; - - int absPdg = abs(isp.pdgCode()); - bool charged = isp.charge()*isp.charge() > 0 ; - - // particle Hypothesis for the extrapolation - - Trk::ParticleHypothesis pHypothesis = m_pdgToParticleHypothesis.convert(isp.pdgCode(),isp.charge()); - - // geantinos not handled by PdgToParticleHypothesis - fix there - if ( absPdg == 999 ) pHypothesis = Trk::geantino; - - // choose the extrapolator - //const Trk::ITimedExtrapolator* processor = &(*m_extrapolator); - - // input parameters : curvilinear parameters - Trk::CurvilinearParameters inputPar(isp.position(),isp.momentum(),isp.charge()); - - // stable vs. unstable check : ADAPT for FASTCALOSIM - //double freepath = ( !m_particleDecayHelper.empty()) ? m_particleDecayHelper->freePath(isp) : - 1.; - double freepath = -1.; - ATH_MSG_VERBOSE( "[ fatras transport ] Particle free path : " << freepath); - // path limit -> time limit ( TODO : extract life-time directly from decay helper ) - double tDec = freepath > 0. ? freepath : -1.; - int decayProc = 0; - - /* stable particles only for the moment - // beta calculated here for further use in validation - double mass = m_particleMasses.mass[pHypothesis]; - double mom = isp.momentum().mag(); - double beta = mom/sqrt(mom*mom+mass*mass); - - if ( tDec>0.) { - tDec = tDec/beta/CLHEP::c_light + isp.timeStamp(); - decayProc = 201; - } - */ - - Trk::TimeLimit timeLim(tDec,isp.timeStamp(),decayProc); - - // prompt decay - //if ( freepath>0. && freepath<0.01 ) { - // if (!m_particleDecayHelper.empty()) { - // ATH_MSG_VERBOSE( "[ fatras transport ] Decay is triggered for input particle."); - // m_particleDecayHelper->decay(isp); - // } - // return 0; - //} - - // presample interactions - ADAPT FOR FASTCALOSIM ( non-interacting ) - Trk::PathLimit pathLim(-1.,0); - //if (absPdg!=999 && pHypothesis<99) pathLim = m_samplingTool->sampleProcess(mom,isp.charge(),pHypothesis); - - Trk::GeometrySignature nextGeoID = static_cast<Trk::GeometrySignature>(isp.nextGeoID()); - - // save Calo entry hit (fallback info) - hitVector->push_back(Trk::HitInfo(inputPar.clone(),isp.timeStamp(),nextGeoID,0.)); - - const Trk::TrackParameters* eParameters = 0; - - if ( !charged ) { - - eParameters = m_extrapolator->transportNeutralsWithPathLimit(inputPar,pathLim,timeLim,Trk::alongMomentum,pHypothesis,hitVector,nextGeoID); - - } else { - - eParameters = m_extrapolator->extrapolateWithPathLimit(inputPar,pathLim,timeLim,Trk::alongMomentum,pHypothesis,hitVector,nextGeoID); - - } - // save Calo exit hit (fallback info) - if (eParameters) hitVector->push_back(Trk::HitInfo(eParameters,timeLim.time,nextGeoID,0.)); - - ATH_MSG_VERBOSE( "[ fastCaloSim transport ] number of intersections "<< hitVector->size()); - - return hitVector; - -} diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.h index 2ec65d4361d..a8c4303e595 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.h +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.h @@ -7,106 +7,50 @@ // STL includes #include <string> -#include <set> +// #include <set> -// FrameWork includes +// Gaudi #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" -#include "GaudiKernel/IChronoStatSvc.h" -#include "CaloInterface/ICaloCellMakerTool.h" -#include "AthenaBaseComps/AthService.h" // ISF includes #include "ISF_Interfaces/BaseSimulationSvc.h" - -// Tracking includes -#include "TrkExInterfaces/ITimedExtrapolator.h" -#include "TrkEventPrimitives/PdgToParticleHypothesis.h" - -// forward declarations -class ITrackingGeometrySvc; -class CaloCellContainer; - -namespace HepMC { - class GenEvent; -} - -namespace Trk { - class TrackingVolume; - class TrackingGeometry; -} +#include "ISF_Interfaces/ISimulatorTool.h" namespace ISF { - class ISFParticle; - class ITruthSvc; - class IPunchThroughTool; - /** @class FastCaloSimSvc - - @author Michael.Duehrssen -at- cern.ch - */ - class FastCaloSimSvc : public BaseSimulationSvc { - public: - - //** Constructor with parameters */ - FastCaloSimSvc( const std::string& name, ISvcLocator* pSvcLocator ); - - /** Destructor */ - virtual ~FastCaloSimSvc(); - - /** Athena algorithm's interface methods */ - StatusCode initialize(); - StatusCode finalize(); - - /** Simulation Call */ - StatusCode simulate(const ISFParticle& isp); - - /** Setup Event chain - in case of a begin-of event action is needed */ - StatusCode setupEvent(); - - /** Release Event chain - in case of an end-of event action is needed */ - StatusCode releaseEvent(); - - private: - /** Default constructor */ - FastCaloSimSvc(); - - /** process the given particle */ - StatusCode processOneParticle( const ISF::ISFParticle &isfp); - - /** extrapolation through Calo */ - std::vector<Trk::HitInfo>* caloHits(const ISF::ISFParticle &isfp) const; + @author Michael.Duehrssen -at- cern.ch + */ + class FastCaloSimSvc : public BaseSimulationSvc { + public: - /** The Extrapolator setup */ - ToolHandle<Trk::ITimedExtrapolator> m_extrapolator; + //** Constructor with parameters */ + FastCaloSimSvc( const std::string& name, ISvcLocator* pSvcLocator ); - /** whether CellContainer to be created will own (default) its cells or not */ - int m_ownPolicy; + /** Destructor */ + virtual ~FastCaloSimSvc(); - // particle processing mode - bool m_batchProcessMcTruth; //!< process particles from McTruth at end of event + /** Athena algorithm's interface methods */ + virtual StatusCode initialize() override; - bool m_simulateUndefinedBCs; //!< do/don't simulate undefined barcode particles + /** Simulation Call */ + virtual StatusCode simulate(const ISFParticle& isp) override; - std::string m_caloCellsOutputName; + /** Setup Event chain - in case of a begin-of event action is needed */ + virtual StatusCode setupEvent() override; - // authorise input to be the same as output (to be done with care) - bool m_caloCellHack ; - //check if punch through simulation is used - bool m_doPunchThrough; + /** Release Event chain - in case of an end-of event action is needed */ + virtual StatusCode releaseEvent() override; - Trk::PdgToParticleHypothesis m_pdgToParticleHypothesis; + private: + /** Default constructor */ + FastCaloSimSvc(); - // list of tools to be used - ToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_setup ; - ToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_simulate ; - ToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_release ; - ToolHandle< IPunchThroughTool > m_punchThroughTool; - CaloCellContainer * m_theContainer; + PublicToolHandle<ISimulatorTool> m_simulatorTool{this, "SimulatorTool", "", ""}; - }; + }; } #endif //> !ISF_FASTCALOSIMSVC_H diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.cxx new file mode 100644 index 00000000000..5e5750d5d57 --- /dev/null +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.cxx @@ -0,0 +1,453 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#include "GaudiKernel/IChronoStatSvc.h" + +#include "FastCaloTool.h" + +// HepMC include needed for FastCaloSim +#include "HepMC/GenParticle.h" +#include "HepMC/GenVertex.h" +#include "HepMC/SimpleVector.h" +#include "CLHEP/Units/SystemOfUnits.h" + +// ISF includes +#include "ISF_Event/ISFParticle.h" +#include "ISF_Event/ISFParticleContainer.h" + +// McEventCollection +#include "GeneratorObjects/McEventCollection.h" + +// Calo Cell includes +#include "CaloEvent/CaloCell.h" +#include "CaloEvent/CaloCellContainer.h" +#include "NavFourMom/INavigable4MomentumCollection.h" + +// Barcode +#include "BarcodeEvent/Barcode.h" +// use FastShowerCellBuilderTool for actual simulation +//#include "FastSimulationEvent/GenParticleEnergyDepositMap.h" +#include "FastCaloSim/FastShowerCellBuilderTool.h" + +ISF::FastCaloTool::FastCaloTool(const std::string& type, const std::string& name, const IInterface* parent) + : BaseSimulatorTool(type, name, parent) + , m_ownPolicy(static_cast<int>(SG::VIEW_ELEMENTS)) + // , m_caloCellMakerTools_setup() + // , m_caloCellMakerTools_simulate() + // , m_caloCellMakerTools_release() +{ + declareProperty("OwnPolicy", m_ownPolicy) ; + declareProperty("CaloCellsOutputName", m_caloCellsOutputName) ; + declareProperty("CaloCellHack", m_caloCellHack) ; + declareProperty("DoPunchThroughSimulation", m_doPunchThrough) ; + declareProperty("SimulateUndefinedBarcodeParticles", + m_simulateUndefinedBCs, + "Whether or not to simulate paritcles with undefined barcode" ); + declareProperty("BatchProcessMcTruth", + m_batchProcessMcTruth=false, + "Run the FastShowerCellBuilders on the McTruth at the end of the event" ); +} + +ISF::FastCaloTool::~FastCaloTool() { + +} + +StatusCode ISF::FastCaloTool::initialize() { + + ATH_CHECK( BaseSimulatorTool::initialize() ); + + ATH_CHECK( commonInitialize() ); + + // Output data handle + ATH_CHECK( m_caloCellKey.initialize() ); + + return StatusCode::SUCCESS; +} + +/** framework methods */ +StatusCode ISF::FastCaloTool::commonInitialize() +{ + // access tools and store them + ATH_CHECK (m_caloCellMakerTools_setup.retrieve()); + ATH_CHECK (m_caloCellMakerTools_simulate.retrieve()); + ATH_CHECK (m_caloCellMakerTools_release.retrieve()); + + if (m_doPunchThrough) { + ATH_CHECK(m_punchThroughTool.retrieve()); + } + else { + m_punchThroughTool.disable(); + } + + // Get TimedExtrapolator + if (!m_extrapolator.empty()) { + ATH_CHECK(m_extrapolator.retrieve()); + } + + ATH_MSG_DEBUG( " Output CaloCellContainer Name " << m_caloCellsOutputName ); + if (m_ownPolicy==SG::OWN_ELEMENTS) { + ATH_MSG_INFO( "...will OWN its cells." ); + } + else { + ATH_MSG_INFO( "...will VIEW its cells." ); + } + + if (m_caloCellHack) { + ATH_MSG_WARNING( " CaloCellContainer: " << m_caloCellsOutputName << "will be read in and modified !. To be used with care. " ); + } + + return StatusCode::SUCCESS; +} + +StatusCode ISF::FastCaloTool::setupEventST() +{ + ATH_MSG_DEBUG ( "setupEvent"); + + if (!m_caloCellHack) { + + m_theContainer = new CaloCellContainer(static_cast<SG::OwnershipPolicy>(m_ownPolicy)); + + StatusCode sc=StatusCode::SUCCESS; + sc=evtStore()->record(m_theContainer,m_caloCellsOutputName); + + if (sc.isFailure()) { + ATH_MSG_FATAL( "cannot record CaloCellContainer " << m_caloCellsOutputName ); + return StatusCode::FAILURE; + } + + // also symLink as INavigable4MomentumCollection! + INavigable4MomentumCollection* theNav4Coll = 0; + sc = evtStore()->symLink(m_theContainer,theNav4Coll); + + if (sc.isFailure()) { + ATH_MSG_WARNING( "Error symlinking CaloCellContainer to INavigable4MomentumCollection " ); + return StatusCode::FAILURE; + } + } + else { + // take CaloCellContainer from input and cast away constness + const CaloCellContainer * theConstContainer ; + + StatusCode sc=StatusCode::SUCCESS; + sc=evtStore()->retrieve(theConstContainer,m_caloCellsOutputName); + if (sc.isFailure() || theConstContainer==0) + { + ATH_MSG_FATAL( "Could not retrieve CaloCellContainer " << m_caloCellsOutputName ); + return StatusCode::FAILURE; + } + m_theContainer = const_cast<CaloCellContainer *> (theConstContainer); + } + + return this->commonSetup(); +} + +StatusCode ISF::FastCaloTool::setupEvent() +{ + ATH_MSG_DEBUG ( "setupEvent"); + + if (!m_caloCellHack) { + m_theContainer = new CaloCellContainer(static_cast<SG::OwnershipPolicy>(m_ownPolicy)); + } + else { + // take CaloCellContainer from input and cast away constness + const CaloCellContainer * theConstContainer ; + ATH_CHECK(evtStore()->retrieve(theConstContainer,m_caloCellsOutputName)); + if (!theConstContainer) { + ATH_MSG_FATAL( "Could not retrieve CaloCellContainer " << m_caloCellsOutputName ); + return StatusCode::FAILURE; + } + m_theContainer = const_cast<CaloCellContainer *> (theConstContainer); + } + + return this->commonSetup(); +} + +StatusCode ISF::FastCaloTool::commonSetup() +{ + // loop on setup tools + for ( auto tool : m_caloCellMakerTools_setup) { + ATH_MSG_DEBUG( "Calling tool " << tool->name() ); + std::string chronoName=this->name()+"_"+ tool->name(); + + if (m_chrono) m_chrono -> chronoStart( chronoName); + StatusCode sc = tool->process(m_theContainer); + if (m_chrono) { + m_chrono -> chronoStop( chronoName ); + ATH_MSG_DEBUG( "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " ); + } + + if (sc.isFailure()) { + ATH_MSG_ERROR( "Error executing tool " << tool->name() ); + } + } + + // loop on simulate tools + for ( auto tool : m_caloCellMakerTools_simulate) { + FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*tool)); + if(fcs) { + if(fcs->setupEvent().isFailure()) { + ATH_MSG_ERROR( "Error executing tool " << tool->name() << " in setupEvent"); + return StatusCode::FAILURE; + } + } + } + + return StatusCode::SUCCESS; +} + +StatusCode ISF::FastCaloTool::simulate(const ISFParticle& isp, ISFParticleContainer& secondaries) +{ + + ATH_MSG_VERBOSE( "FastCaloTool " << name() << " simulate()" ); + + // read the particle's barcode + Barcode::ParticleBarcode bc = isp.barcode(); + //lets do punch-through here + //---------------------------------------------------------- + + // punch-through simulation + + if (m_doPunchThrough) { + // call punch-through simulation + const ISF::ISFParticleContainer* isfpVec = m_punchThroughTool->computePunchThroughParticles(isp); + + // return punch-through particles as secondaries + if (isfpVec) { + /*ISF::ISFParticleContainer::const_iterator partIt = isfpVec->begin(); + ISF::ISFParticleContainer::const_iterator partItEnd = isfpVec->end(); + + for ( ; partIt!=partItEnd; ++partIt) { + secondaries.push_back( *partIt ); + }*/ + secondaries = *isfpVec; + } + } + + // (a.) batch process mode, ignore the incoming particle for now + if ( m_batchProcessMcTruth) { + ATH_MSG_DEBUG("particle is ignored now, will run Calo simulation using ID McTruth at the end of the event"); + return StatusCode::SUCCESS; + } + // (b.) throw away particles with undefined Barcode if m_simulateUndefinedBCs==False + else if ( (!m_simulateUndefinedBCs) && (bc == Barcode::fUndefinedBarcode)) { + ATH_MSG_DEBUG("particle has undefined barcode, will not simulate it"); + return StatusCode::SUCCESS; + } + // (c.) individual particle processing + ATH_MSG_DEBUG("particle is simulated individually"); + return processOneParticle( isp); +} + + +StatusCode ISF::FastCaloTool::processOneParticle( const ISF::ISFParticle& isfp) { + ATH_MSG_VERBOSE ( "Simulating pdgid = "<< isfp.pdgCode()); + + std::vector<Trk::HitInfo>* hitVector= caloHits(isfp); + + if (!hitVector || !hitVector->size()) { + ATH_MSG_WARNING ( "ISF_FastCaloSim: no hits in calo"); + return StatusCode::FAILURE; + } + + // loop on tools + for ( auto tool : m_caloCellMakerTools_simulate) { + FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*tool)); + if(!fcs) { + ATH_MSG_WARNING( "tool " << tool->name()<< "is not a FastShowerCellBuilderTool" ); + continue; + } + + ATH_MSG_VERBOSE( "Calling tool " << tool->name() ); + std::string chronoName=this->name()+"_"+ tool->name(); + + if (m_chrono) m_chrono->chronoStart( chronoName); + + //sc = tool->process(m_theContainer); + if(fcs->process_particle(m_theContainer,hitVector, + isfp.momentum(),isfp.mass(),isfp.pdgCode(),isfp.barcode()).isFailure()) { + ATH_MSG_WARNING( "simulation of particle pdgid=" << isfp.pdgCode()<< " failed" ); + return StatusCode::FAILURE; + } + + if (m_chrono) m_chrono->chronoStop( chronoName ); + //ATH_MSG_DEBUG( "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " ); + } //end of for-loop + + if(hitVector) { + for(std::vector<Trk::HitInfo>::iterator it = hitVector->begin();it < hitVector->end();++it) { + if((*it).trackParms) { + delete (*it).trackParms; + (*it).trackParms=0; + } + } + delete hitVector; + } + + // ATH_MSG_VERBOSE ( "kill the particle in the end"); + return StatusCode::SUCCESS; +} + + +std::vector<Trk::HitInfo>* ISF::FastCaloTool::caloHits(const ISF::ISFParticle& isp) const +{ + // Start calo extrapolation + ATH_MSG_VERBOSE ("[ fastCaloSim transport ] processing particle "<<isp.pdgCode() ); + + std::vector<Trk::HitInfo>* hitVector = new std::vector<Trk::HitInfo>; + + int absPdg = abs(isp.pdgCode()); + bool charged = isp.charge()*isp.charge() > 0 ; + + // particle Hypothesis for the extrapolation + + Trk::ParticleHypothesis pHypothesis = m_pdgToParticleHypothesis.convert(isp.pdgCode(),isp.charge()); + + // geantinos not handled by PdgToParticleHypothesis - fix there + if ( absPdg == 999 ) pHypothesis = Trk::geantino; + + // choose the extrapolator + //const Trk::ITimedExtrapolator* processor = &(*m_extrapolator); + + // input parameters : curvilinear parameters + Trk::CurvilinearParameters inputPar(isp.position(),isp.momentum(),isp.charge()); + + // stable vs. unstable check : ADAPT for FASTCALOSIM + //double freepath = ( !m_particleDecayHelper.empty()) ? m_particleDecayHelper->freePath(isp) : - 1.; + double freepath = -1.; + ATH_MSG_VERBOSE( "[ fatras transport ] Particle free path : " << freepath); + // path limit -> time limit ( TODO : extract life-time directly from decay helper ) + double tDec = freepath > 0. ? freepath : -1.; + int decayProc = 0; + + /* stable particles only for the moment + // beta calculated here for further use in validation + double mass = m_particleMasses.mass[pHypothesis]; + double mom = isp.momentum().mag(); + double beta = mom/sqrt(mom*mom+mass*mass); + + if ( tDec>0.) { + tDec = tDec/beta/CLHEP::c_light + isp.timeStamp(); + decayProc = 201; + } + */ + + Trk::TimeLimit timeLim(tDec,isp.timeStamp(),decayProc); + + // prompt decay + //if ( freepath>0. && freepath<0.01 ) { + // if (!m_particleDecayHelper.empty()) { + // ATH_MSG_VERBOSE( "[ fatras transport ] Decay is triggered for input particle."); + // m_particleDecayHelper->decay(isp); + // } + // return 0; + //} + + // presample interactions - ADAPT FOR FASTCALOSIM ( non-interacting ) + Trk::PathLimit pathLim(-1.,0); + //if (absPdg!=999 && pHypothesis<99) pathLim = m_samplingTool->sampleProcess(mom,isp.charge(),pHypothesis); + + Trk::GeometrySignature nextGeoID = static_cast<Trk::GeometrySignature>(isp.nextGeoID()); + + // save Calo entry hit (fallback info) + hitVector->push_back(Trk::HitInfo(inputPar.clone(),isp.timeStamp(),nextGeoID,0.)); + + const Trk::TrackParameters* eParameters = 0; + + if ( !charged ) { + + eParameters = m_extrapolator->transportNeutralsWithPathLimit(inputPar,pathLim,timeLim,Trk::alongMomentum,pHypothesis,hitVector,nextGeoID); + + } else { + + eParameters = m_extrapolator->extrapolateWithPathLimit(inputPar,pathLim,timeLim,Trk::alongMomentum,pHypothesis,hitVector,nextGeoID); + + } + // save Calo exit hit (fallback info) + if (eParameters) hitVector->push_back(Trk::HitInfo(eParameters,timeLim.time,nextGeoID,0.)); + + ATH_MSG_VERBOSE( "[ fastCaloSim transport ] number of intersections "<< hitVector->size()); + + return hitVector; + +} + + +StatusCode ISF::FastCaloTool::releaseEvent() { + + ATH_MSG_VERBOSE( "FastCaloTool " << name() << " releaseEvent() " ); + + // Run the version of releaseEvent that returns the output collection + // Run the normal method + ATH_CHECK(this->releaseEventST()); + if ( m_theContainer ) { + + // Record with WriteHandle + SG::WriteHandle< CaloCellContainer > caloCellHandle( m_caloCellKey, Gaudi::Hive::currentContext() ); + ATH_CHECK( caloCellHandle.record( std::make_unique< CaloCellContainer >( *m_theContainer ) ) ); + return StatusCode::SUCCESS; + } + return StatusCode::FAILURE; +} + +StatusCode ISF::FastCaloTool::releaseEventST() +{ + ATH_MSG_DEBUG ( "release Event"); + + // the return value + StatusCode sc = StatusCode::SUCCESS; + + // (1.) batch processing of all particles from McTruth + // (for MC12 parametrization) + // + if ( m_batchProcessMcTruth) { + // -> run the FastShowerCellBuilder tools + // (in Python they should be configured to pick up the modified truth collection) + for ( auto tool : m_caloCellMakerTools_simulate) { + FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*tool)); + if(!fcs) { + ATH_MSG_WARNING( "tool " << tool->name()<< "is not a FastShowerCellBuilderTool" ); + continue; + } + + ATH_MSG_VERBOSE( "Calling tool " << tool->name() ); + + if( fcs->process(m_theContainer).isFailure()) { + ATH_MSG_WARNING( "batch simulation of FastCaloSim particles failed" ); + sc = StatusCode::FAILURE; + } + } + } // <-- end of batch particle processing + + // (2.) finalize simulation tools in a loop + // + for ( auto tool : m_caloCellMakerTools_simulate) { + FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*tool)); + if(fcs) { + if(fcs->releaseEvent().isFailure()) { + ATH_MSG_ERROR( "Error executing tool " << tool->name() << " in releaseEvent"); + return StatusCode::FAILURE; + } + } + } + + // (3.) run release tools in a loop + // + for ( auto tool : m_caloCellMakerTools_release) { + ATH_MSG_DEBUG( "Calling tool " << tool->name() ); + std::string chronoName=this->name()+"_"+ tool->name(); + + if (m_chrono) m_chrono -> chronoStart( chronoName); + sc = tool->process(m_theContainer); + if (m_chrono) { + m_chrono -> chronoStop( chronoName ); + ATH_MSG_DEBUG( "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " ); + } + + if (sc.isFailure()) { + ATH_MSG_ERROR( "Error executing tool " << tool->name() ); + } + } + + return StatusCode::SUCCESS; +} diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.h new file mode 100644 index 00000000000..6856b4b58cf --- /dev/null +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.h @@ -0,0 +1,112 @@ +// -*- c++ -*- + +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef ISF_FASTCALOTOOL_h +#define ISF_FASTCALOTOOL_h + +// STL includes +#include <string> + +//Gaudi +#include "GaudiKernel/ServiceHandle.h" +#include "GaudiKernel/ToolHandle.h" + +//Athena +#include "AthenaBaseComps/AthAlgTool.h" + +// DetectorDescription +#include "AtlasDetDescr/AtlasRegion.h" + +//ISF +#include "ISF_Interfaces/BaseSimulatorTool.h" +#include "ISF_Event/ISFParticleContainer.h" +#include "ISF_FastCaloSimInterfaces/IPunchThroughTool.h" + +// Tracking includes +#include "TrkExInterfaces/ITimedExtrapolator.h" +#include "TrkEventPrimitives/PdgToParticleHypothesis.h" + +// forward declarations +class ITrackingGeometrySvc; +class CaloCellContainer; + +namespace Trk { + class TrackingVolume; + class TrackingGeometry; +} + + +//Calo +#include "CaloInterface/ICaloCellMakerTool.h" +#include "CaloEvent/CaloCellContainer.h" + +namespace ISF { + +class FastCaloTool : public BaseSimulatorTool { +public: + FastCaloTool( const std::string& type, const std::string& name, const IInterface* parent); + + ~FastCaloTool(); + + StatusCode initialize() override; + + virtual StatusCode simulate( const ISFParticle& isp, ISFParticleContainer& ); + + virtual StatusCode setupEventST() override; + + virtual StatusCode setupEvent() override; + + virtual StatusCode releaseEventST() override; + + virtual StatusCode releaseEvent() override; + + virtual SimulationFlavor simFlavor() const override { return ISF::FastCaloSim; }; +private: + StatusCode commonInitialize(); // TEMP + + /** Called by setupEvent() and setupEventMT() */ + StatusCode commonSetup(); + + /** process the given particle */ + StatusCode processOneParticle( const ISF::ISFParticle &isfp); + + /** extrapolation through Calo */ + std::vector<Trk::HitInfo>* caloHits(const ISF::ISFParticle &isfp) const; + + /** The Extrapolator setup */ + PublicToolHandle<Trk::ITimedExtrapolator> m_extrapolator{this, "Extrapolator", "", ""}; + + /** whether CellContainer to be created will own (default) its cells or not */ + int m_ownPolicy; + + // particle processing mode + bool m_batchProcessMcTruth{false}; //!< process particles from McTruth at end of event + + bool m_simulateUndefinedBCs{false}; //!< do/don't simulate undefined barcode particles + + std::string m_caloCellsOutputName{"AllCalo"}; + + // authorise input to be the same as output (to be done with care) + bool m_caloCellHack{false}; + //check if punch through simulation is used + bool m_doPunchThrough{false}; + + Trk::PdgToParticleHypothesis m_pdgToParticleHypothesis; + + // list of tools to be used + PublicToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_setup{this, "CaloCellMakerTools_setup", {}, ""}; + PublicToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_simulate{this, "CaloCellMakerTools_simulate", {}, ""}; + PublicToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_release{this, "CaloCellMakerTools_release", {}, ""}; + PublicToolHandle< IPunchThroughTool > m_punchThroughTool{this, "PunchThroughTool", "", ""}; + CaloCellContainer * m_theContainer{}; + + SG::WriteHandleKey< CaloCellContainer > m_caloCellKey{ this, "CaloCells", "DefaultCaloCellContainer", "The name of the output CaloCellContainer" }; + +}; + +} + +#endif diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/components/ISF_FastCaloSimServices_entries.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/components/ISF_FastCaloSimServices_entries.cxx index 75ed07a1c06..703317432b7 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/components/ISF_FastCaloSimServices_entries.cxx +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/components/ISF_FastCaloSimServices_entries.cxx @@ -1,8 +1,9 @@ #include "../FastCaloSimSvc.h" #include "../FastCaloSimSvcV2.h" #include "../FastCaloSimSvcPU.h" +#include "../FastCaloTool.h" DECLARE_COMPONENT( ISF::FastCaloSimSvc ) DECLARE_COMPONENT( ISF::FastCaloSimSvcV2 ) DECLARE_COMPONENT( ISF::FastCaloSimSvcPU ) - +DECLARE_COMPONENT( ISF::FastCaloTool ) -- GitLab From 025c770704c12c403a5508ab749684f6d0d0ec4b Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Wed, 26 Sep 2018 20:55:31 +0200 Subject: [PATCH 017/135] Migrate Geant4SimSvc so that just calls methods of Geant4Tool This commit moves all the guts of `Geant4SimSvc` into `Geant4Tool`. Still not ready to be used with `SimKernelMT` due to `ParticleBroker` usage in the `TrackProcessorUserActions`. Also tidying up logging of classes in the `ISF_Geant4Services` package. Former-commit-id: 2c9cc9f2140d4e9d8db6ddacefb8df8b0097b2a5 --- .../python/ISF_Geant4ServicesConfig.py | 45 ++-- .../python/ISF_Geant4ServicesConfigDb.py | 18 +- .../ISF_Geant4Services/src/Geant4SimSvc.cxx | 166 +------------- .../ISF_Geant4Services/src/Geant4SimSvc.h | 60 +---- .../ISF_Geant4Services/src/Geant4Tool.cxx | 211 ++++++++++++++++++ .../ISF_Geant4Services/src/Geant4Tool.h | 91 ++++++++ .../components/ISF_Geant4Services_entries.cxx | 3 +- 7 files changed, 372 insertions(+), 222 deletions(-) create mode 100644 Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.cxx create mode 100644 Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.h diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py index 129bdd5ba24..128dd8291d7 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py @@ -1,16 +1,13 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration """ Tools configurations for ISF KG Tan, 17/06/2012 """ -from AthenaCommon.CfgGetter import getPrivateTool,getPrivateToolClone,getPublicTool,getPublicToolClone,\ - getService,getServiceClone,getAlgorithm,getAlgorithmClone - +from AthenaCommon import CfgMgr from AthenaCommon.Constants import * # FATAL,ERROR etc. from AthenaCommon.SystemOfUnits import * -from AthenaCommon.DetFlags import DetFlags from ISF_Config.ISF_jobProperties import ISF_Flags # IMPORTANT: Flags must be set before tools are retrieved @@ -39,27 +36,47 @@ def getIGeant4(**kwargs): return i def getGeant4SimSvc(name="ISF_Geant4SimSvc", **kwargs): - from ISF_Config.ISF_jobProperties import ISF_Flags - kwargs.setdefault('FullGeant4' , False ) - kwargs.setdefault('SimulationTool' , 'ISFG4TransportTool' ) + kwargs.setdefault('SimulatorTool' , 'ISF_Geant4Tool' ) kwargs.setdefault('Identifier' , "Geant4" ) - kwargs.setdefault('PrintTimingInfo' , ISF_Flags.DoTimeMonitoring() ) + kwargs.setdefault('FullGeant4' , False ) return getIGeant4(**kwargs).getSimSvc() -def getFullGeant4SimSvc(name="ISF_Geant4SimSvc", **kwargs): +def getFullGeant4SimSvc(name="ISF_FullGeant4SimSvc", **kwargs): + kwargs.setdefault('SimulatorTool' , 'ISF_FullGeant4Tool' ) kwargs.setdefault('FullGeant4' , True ) - kwargs.setdefault('SimulationTool' , 'FullG4TransportTool' ) return getGeant4SimSvc(name, **kwargs) def getLongLivedGeant4SimSvc(name="ISF_LongLivedGeant4SimSvc", **kwargs): - kwargs.setdefault('SimulationTool' , 'QuasiStableG4TransportTool') + kwargs.setdefault('SimulatorTool' , 'ISF_LongLivedGeant4Tool') return getFullGeant4SimSvc(name, **kwargs) def getPassBackGeant4SimSvc(name="ISF_PassBackGeant4SimSvc", **kwargs): kwargs.setdefault('FullGeant4' , False ) - kwargs.setdefault('SimulationTool' , 'PassBackG4TransportTool' ) + kwargs.setdefault('SimulatorTool' , 'ISF_PassBackGeant4Tool' ) return getGeant4SimSvc(name, **kwargs) def getAFIIGeant4SimSvc(name="ISF_AFIIGeant4SimSvc", **kwargs): - kwargs.setdefault('SimulationTool' , 'AFII_G4TransportTool') + kwargs.setdefault('SimulatorTool' , 'ISF_AFIIGeant4Tool') return getPassBackGeant4SimSvc(name, **kwargs) + +def getGeant4Tool(name="ISF_Geant4Tool", **kwargs): + from ISF_Config.ISF_jobProperties import ISF_Flags + kwargs.setdefault('SimulationTool' , 'ISFG4TransportTool' ) + kwargs.setdefault('PrintTimingInfo' , ISF_Flags.DoTimeMonitoring() ) + return CfgMgr.ISF__Geant4Tool(name, **kwargs) + +def getFullGeant4Tool(name="ISF_FullGeant4Tool", **kwargs): + kwargs.setdefault('SimulationTool' , 'FullG4TransportTool' ) + return getGeant4Tool(name, **kwargs) + +def getLongLivedGeant4Tool(name="ISF_LongLivedGeant4Tool", **kwargs): + kwargs.setdefault('SimulationTool' , 'QuasiStableG4TransportTool') + return getFullGeant4Tool(name, **kwargs) + +def getPassBackGeant4Tool(name="ISF_PassBackGeant4Tool", **kwargs): + kwargs.setdefault('SimulationTool' , 'PassBackG4TransportTool' ) + return getGeant4Tool(name, **kwargs) + +def getAFIIGeant4Tool(name="ISF_AFIIGeant4Tool", **kwargs): + kwargs.setdefault('SimulationTool' , 'AFII_G4TransportTool') + return getPassBackGeant4Tool(name, **kwargs) diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py index 4e87590a35a..cd70a35bcb1 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py @@ -1,8 +1,20 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from AthenaCommon.CfgGetter import addService addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getGeant4SimSvc", "ISF_Geant4SimSvc") addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getFullGeant4SimSvc", "ISF_FullGeant4SimSvc") addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getPassBackGeant4SimSvc", "ISF_PassBackGeant4SimSvc") -addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getAFIIGeant4SimSvc", "ISF_AFIIGeant4SimSvc") -addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getLongLivedGeant4SimSvc", "ISF_LongLivedGeant4SimSvc") +addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getAFIIGeant4SimSvc", "ISF_AFIIGeant4SimSvc") +addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getLongLivedGeant4SimSvc", "ISF_LongLivedGeant4SimSvc") + +addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getGeant4Tool", "ISF_Geant4Tool") +addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getFullGeant4Tool", "ISF_FullGeant4Tool") +addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getLongLivedGeant4Tool", "ISF_LongLivedGeant4Tool") +addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getPassBackGeant4Tool", "ISF_PassBackGeant4Tool") +addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getAFIIGeant4Tool", "ISF_AFIIGeant4Tool") + +#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getGeant4MTTool", "ISF_Geant4MTTool") +#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getFullGeant4MTTool", "ISF_FullGeant4MTTool") +#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getLongLivedGeant4MTTool", "ISF_LongLivedGeant4MTTool") +#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getPassBackGeant4MTTool", "ISF_PassBackGeant4MTTool") +#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getAFIIGeant4MTTool", "ISF_AFIIGeant4MTTool") diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.cxx index 3a5de9df772..2718c5a84e1 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.cxx +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.cxx @@ -1,46 +1,14 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// TransportSimSvc.cxx, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - // class header #include "Geant4SimSvc.h" -// StoreGate -#include "StoreGate/StoreGateSvc.h" -// Remaining ISF include -#include "ISF_Interfaces/ITruthSvc.h" -#include "ISF_Event/ISFParticle.h" - -#include "G4AtlasInterfaces/IDetectorGeometrySvc.h" -#include "ISF_Geant4Interfaces/ITransportTool.h" - -// Geant4 classes -#include "G4Timer.hh" -#include "G4SDManager.hh" - - /** Constructor **/ iGeant4::Geant4SimSvc::Geant4SimSvc(const std::string& name,ISvcLocator* svc) : - BaseSimulationSvc(name, svc), - m_detGeoSvc("DetectorGeometrySvc", name), - m_simulationTool("ISFG4TransportTool"), - m_configTool(""), - m_doTiming(true), - m_accumulatedEventTime(0.), - m_accumulatedEventTimeSq(0.), - m_nrOfEntries(0), - m_runTimer(0), - m_eventTimer(0) + BaseSimulationSvc(name, svc) { - declareProperty("SimulationTool" , m_simulationTool ); - declareProperty("DetectorGeometrySvc", m_detGeoSvc ); - declareProperty("G4ConfigTool" , m_configTool ); - - declareProperty("PrintTimingInfo", m_doTiming ); } iGeant4::Geant4SimSvc::~Geant4SimSvc() @@ -49,151 +17,39 @@ iGeant4::Geant4SimSvc::~Geant4SimSvc() /** framework methods */ StatusCode iGeant4::Geant4SimSvc::initialize() { - ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ..."); - - // create G4Timers if enabled - if (m_doTiming) { - m_runTimer = new G4Timer(); - m_eventTimer = new G4Timer(); - m_runTimer->Start(); - } - - // retrieve simulation tool - if ( retrieveTool<iGeant4::ITransportTool>(m_simulationTool).isFailure() ) { - ATH_MSG_FATAL( m_screenOutputPrefix << " Cannot retrieve simulation tool! Abort." ); - return StatusCode::FAILURE; - } - - ATH_MSG_INFO ( m_screenOutputPrefix << m_simulationTool->name() ); - - if (m_detGeoSvc.retrieve().isFailure()) { - ATH_MSG_FATAL("Could not retrieve DetectorGeometrySvc."); - return StatusCode::FAILURE; - } - - // retrieve (and run) the Geant4 Python Config tool - if ( !m_configTool.empty() && m_configTool.retrieve().isFailure() ){ - ATH_MSG_FATAL( m_screenOutputPrefix << " Cannot retrieve Geant4 Python Config Tool! Abort." ); - return StatusCode::FAILURE; - } - - ATH_CHECK(m_senDetTool.retrieve()); - ATH_CHECK(m_fastSimTool.retrieve()); - + ATH_CHECK (m_simulatorTool.retrieve()); return StatusCode::SUCCESS; } /** framework methods */ StatusCode iGeant4::Geant4SimSvc::finalize() { - ATH_MSG_INFO ( m_screenOutputPrefix << "Finalizing ..." ); - - if (m_doTiming) { - m_runTimer->Stop(); - float runTime=m_runTimer->GetUserElapsed()+m_runTimer->GetSystemElapsed(); - float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : runTime; - float sigma=( m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)- - avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0; - ATH_MSG_INFO("*****************************************"<<endmsg<< - "** **"<<endmsg<< - " End of run - time spent is "<<std::setprecision(4) << - runTime<<endmsg<< - " Average time per event was "<<std::setprecision(4) << - avgTimePerEvent <<" +- "<< std::setprecision(4) << sigma<<endmsg<< - "** **"<<endmsg<< - "*****************************************"); - } - return StatusCode::SUCCESS; } StatusCode iGeant4::Geant4SimSvc::setupEvent() { - ATH_MSG_DEBUG ( m_screenOutputPrefix << "setup Event" ); - - ATH_CHECK(m_senDetTool->BeginOfAthenaEvent()); - - m_nrOfEntries++; - if (m_doTiming) m_eventTimer->Start(); - - // make sure SD collections are properly initialized in every Athena event - G4SDManager::GetSDMpointer()->PrepareNewEvent(); - - return StatusCode::SUCCESS; + return m_simulatorTool->setupEventST(); } StatusCode iGeant4::Geant4SimSvc::releaseEvent() { - ATH_MSG_DEBUG ( m_screenOutputPrefix << "release Event" ); - /** @todo : strip hits of the tracks ... */ - - /* todo: ELLI: the following is copied in from the PyG4AtlasAlg: - -> this somehow needs to be moved into C++ - and put into releaseEvent() ( or setupEvent() ?) - - from ISF_Geant4Example import AtlasG4Eng - from ISF_Geant4Example.ISF_SimFlags import simFlags - if self.doFirstEventG4SeedsCheck : - if simFlags.SeedsG4.statusOn: - rnd = AtlasG4Eng.G4Eng.menu_G4RandomNrMenu() - rnd.set_Seed(simFlags.SeedsG4.get_Value()) - self.doFirstEventG4SeedsCheck = False - if self.RndG4Menu.SaveStatus: - self.RndG4Menu.Menu.saveStatus('G4Seeds.txt') - */ - - // print per-event timing info if enabled - if (m_doTiming) { - m_eventTimer->Stop(); - - double eventTime=m_eventTimer->GetUserElapsed()+m_eventTimer->GetSystemElapsed(); - if (m_nrOfEntries>1) { - m_accumulatedEventTime +=eventTime; - m_accumulatedEventTimeSq+=eventTime*eventTime; - } - - float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : eventTime; - float sigma=(m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)- - avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0.; - - ATH_MSG_INFO("\t Event nr. "<<m_nrOfEntries<<" took " << std::setprecision(4) << - eventTime << " s. New average " << std::setprecision(4) << - avgTimePerEvent<<" +- "<<std::setprecision(4) << sigma); - } - - ATH_CHECK(m_senDetTool->EndOfAthenaEvent()); - ATH_CHECK(m_fastSimTool->EndOfAthenaEvent()); - - return StatusCode::SUCCESS; + return m_simulatorTool->releaseEventST(); } /** Simulation Call */ StatusCode iGeant4::Geant4SimSvc::simulate(const ISF::ISFParticle& isp) { - // give a screen output that you entered Geant4SimSvc - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Particle " << isp << " received for simulation." ); - - /** Process ParticleState from particle stack */ - StatusCode success = m_simulationTool->process(isp); - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Simulation done" ); - - // Geant4 call done - return success; + ISF::ISFParticleContainer secondaries; // filled, but not used + ATH_CHECK(m_simulatorTool->simulate(isp, secondaries)); + return StatusCode::SUCCESS; } /** Simulation Call */ StatusCode iGeant4::Geant4SimSvc::simulateVector(const ISF::ConstISFParticleVector& particles) { - // give a screen output that you entered Geant4SimSvc - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Vector of particles received for simulation." ); - - - /** Process ParticleState from particle stack */ - StatusCode success = m_simulationTool->processVector(particles); - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Simulation done for vector of particles" ); - - - // Geant4 call done - return success; + ISF::ISFParticleContainer secondaries; // filled, but not used + ATH_CHECK (m_simulatorTool->simulateVector(particles,secondaries)); + return StatusCode::SUCCESS; } diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.h index c8627a0c46e..9943f0bf6ac 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.h +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.h @@ -1,44 +1,26 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// Geant4SimSvc.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - #ifndef ISF_GEANT4SIMSVC_H #define ISF_GEANT4SIMSVC_H 1 // STL includes #include <string> -// FrameWork includes +// Gaudi #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" -#include "GaudiKernel/ServiceHandle.h" -#include "AthenaBaseComps/AthService.h" // ISF includes #include "ISF_Interfaces/BaseSimulationSvc.h" - -#include "G4AtlasInterfaces/ISensitiveDetectorMasterTool.h" -#include "G4AtlasInterfaces/IFastSimulationMasterTool.h" - -class IDetectorGeometrySvc; -class G4Timer; - -namespace ISF { - class ISFParticle; - class ITruthSvc; -} +#include "ISF_Interfaces/ISimulatorTool.h" +#include "ISF_Event/ISFParticleContainer.h" namespace iGeant4 { - class ITransportTool; - /** @class Geant4SimSvc - @author Andreas.Salzburger -at- cern.ch */ class Geant4SimSvc : public ISF::BaseSimulationSvc { @@ -50,46 +32,26 @@ namespace iGeant4 { virtual ~Geant4SimSvc(); /** Athena algorithm's interface methods */ - StatusCode initialize(); - StatusCode finalize(); + virtual StatusCode initialize() override; + virtual StatusCode finalize() override; /** Simulation Call */ - StatusCode simulate(const ISF::ISFParticle& isp); - + virtual StatusCode simulate(const ISF::ISFParticle& isp) override; /** Simulation Call for vector of ISF particles */ - StatusCode simulateVector(const ISF::ConstISFParticleVector& particles); + virtual StatusCode simulateVector(const ISF::ConstISFParticleVector& particles) override; /** Setup Event chain - in case of a begin-of event action is needed */ - StatusCode setupEvent(); + virtual StatusCode setupEvent() override; /** Release Event chain - in case of an end-of event action is needed */ - StatusCode releaseEvent(); + virtual StatusCode releaseEvent() override; private: /** Default constructor */ Geant4SimSvc(); - ServiceHandle<IDetectorGeometrySvc> m_detGeoSvc; - - /** Track Creation & transport */ - ToolHandle<iGeant4::ITransportTool> m_simulationTool; //!< Pointer to the TrackCreator AlgTool - - /** Geant4 Python Configuration Tool */ - ToolHandle<IAlgTool> m_configTool; //!< Pointer to the G4 Python Config Tool - - PublicToolHandle<ISensitiveDetectorMasterTool> m_senDetTool{this, "SensitiveDetectorMasterTool", "SensitiveDetectorMasterTool", ""}; - PublicToolHandle<IFastSimulationMasterTool> m_fastSimTool{this, "FastSimulationMasterTool", "FastSimulationMasterTool", ""}; - - // timing checks - bool m_doTiming; - //float m_runTime; - float m_accumulatedEventTime; - float m_accumulatedEventTimeSq; - unsigned int m_nrOfEntries; - - G4Timer* m_runTimer; - G4Timer* m_eventTimer; + PublicToolHandle<ISF::ISimulatorTool> m_simulatorTool{this, "SimulatorTool", "", ""}; }; } diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.cxx new file mode 100644 index 00000000000..0921f5005e3 --- /dev/null +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.cxx @@ -0,0 +1,211 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#include "./Geant4Tool.h" + +// Remaining ISF include +#include "ISF_Event/ISFParticle.h" + +// Geant4 classes +#include "G4Timer.hh" +#include "G4SDManager.hh" + +#include "AtlasDetDescr/AtlasRegionHelper.h" + +ISF::Geant4Tool::Geant4Tool(const std::string& type, const std::string& name, const IInterface* parent) + : BaseSimulatorTool(type, name, parent) +{ + declareProperty("PrintTimingInfo", m_doTiming ); +} + +ISF::Geant4Tool::~Geant4Tool() +{ + +} + +StatusCode ISF::Geant4Tool::finalize() +{ + ATH_MSG_INFO ( "Finalizing ..." ); + + if (m_doTiming) { + m_runTimer->Stop(); + float runTime=m_runTimer->GetUserElapsed()+m_runTimer->GetSystemElapsed(); + float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : runTime; + float sigma=( m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)- + avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0; + ATH_MSG_INFO("*****************************************"<<endmsg<< + "** **"<<endmsg<< + " End of run - time spent is "<<std::setprecision(4) << + runTime<<endmsg<< + " Average time per event was "<<std::setprecision(4) << + avgTimePerEvent <<" +- "<< std::setprecision(4) << sigma<<endmsg<< + "** **"<<endmsg<< + "*****************************************"); + } + + return StatusCode::SUCCESS; +} + +StatusCode ISF::Geant4Tool::initialize() +{ + ATH_MSG_INFO ( "Initializing ..."); + + ATH_CHECK( BaseSimulatorTool::initialize() ); + + // create G4Timers if enabled + if (m_doTiming) { + m_runTimer = new G4Timer(); + m_eventTimer = new G4Timer(); + m_runTimer->Start(); + } + + // retrieve simulation tool + ATH_CHECK (m_g4TransportTool.retrieve()); + + ATH_MSG_INFO ( m_g4TransportTool->name() ); + + ATH_CHECK (m_detGeoSvc.retrieve()); + + // retrieve (and run) the Geant4 Python Config tool + if (!m_configTool.empty()) { + ATH_CHECK (m_configTool.retrieve()); + } + + ATH_CHECK(m_senDetTool.retrieve()); + ATH_CHECK(m_fastSimTool.retrieve()); + + return StatusCode::SUCCESS; +} + +StatusCode ISF::Geant4Tool::simulate( const ISFParticle& isp, ISFParticleContainer& secondaries ) { + + // give a screen output that you entered Geant4SimSvc + ATH_MSG_VERBOSE( "Particle " << isp << " received for simulation." ); + + ATH_MSG_INFO( "BEN BEN BEN gingersnap" ); + + /** Process ParticleState from particle stack */ + StatusCode success = m_g4TransportTool->process(isp); + ATH_MSG_VERBOSE( "Simulation done" ); + + // return any secondaries associated with this particle + auto searchResult = m_secondariesMap.find( &isp ); + if ( searchResult == m_secondariesMap.end() ) { + + ATH_MSG_VERBOSE( "Found no secondaries" ); + + } else { + + ATH_MSG_VERBOSE( "Found secondaries: " << searchResult->second.size() ); + secondaries = searchResult->second; + m_secondariesMap.erase( searchResult ); + } + + // Geant4 call done + return success; +} + +StatusCode ISF::Geant4Tool::simulateVector( const ISF::ConstISFParticleVector& particles, ISFParticleContainer& secondaries ) { + + ATH_MSG_DEBUG (name() << ".simulateVector(...) : Received a vector of " << particles.size() << " particles for simulation."); + /** Process ParticleState from particle stack */ + ATH_CHECK (m_g4TransportTool->processVector(particles)); + ATH_MSG_VERBOSE( "Simulation done" ); + + for (auto* cisp : particles) { + auto* isp = const_cast<ISFParticle*>(cisp); + // return any secondaries associated with this particle + auto searchResult = m_secondariesMap.find( isp ); + if ( searchResult == m_secondariesMap.end() ) { + + ATH_MSG_VERBOSE( "Found no secondaries" ); + + } else { + + ATH_MSG_VERBOSE( "Found secondaries: " << searchResult->second.size() ); + secondaries.splice( end(secondaries), std::move(searchResult->second) ); //append vector + m_secondariesMap.erase( searchResult ); + } + } + // Geant4 call done + return StatusCode::SUCCESS; +} + +StatusCode ISF::Geant4Tool::setupEvent() +{ + ATH_MSG_DEBUG ( "setup Event" ); + + ATH_CHECK(m_senDetTool->BeginOfAthenaEvent()); + + m_nrOfEntries++; + if (m_doTiming) m_eventTimer->Start(); + + // make sure SD collections are properly initialized in every Athena event + G4SDManager::GetSDMpointer()->PrepareNewEvent(); + + return StatusCode::SUCCESS; +} + +StatusCode ISF::Geant4Tool::setupEventST() +{ + return setupEvent(); +} + +StatusCode ISF::Geant4Tool::releaseEvent() +{ + ATH_MSG_DEBUG ( "release Event" ); + /** @todo : strip hits of the tracks ... */ + + /* todo: ELLI: the following is copied in from the PyG4AtlasAlg: + -> this somehow needs to be moved into C++ + and put into releaseEvent() ( or setupEvent() ?) + + from ISF_Geant4Example import AtlasG4Eng + from ISF_Geant4Example.ISF_SimFlags import simFlags + if self.doFirstEventG4SeedsCheck : + if simFlags.SeedsG4.statusOn: + rnd = AtlasG4Eng.G4Eng.menu_G4RandomNrMenu() + rnd.set_Seed(simFlags.SeedsG4.get_Value()) + self.doFirstEventG4SeedsCheck = False + if self.RndG4Menu.SaveStatus: + self.RndG4Menu.Menu.saveStatus('G4Seeds.txt') + */ + + // print per-event timing info if enabled + if (m_doTiming) { + m_eventTimer->Stop(); + + double eventTime=m_eventTimer->GetUserElapsed()+m_eventTimer->GetSystemElapsed(); + if (m_nrOfEntries>1) { + m_accumulatedEventTime +=eventTime; + m_accumulatedEventTimeSq+=eventTime*eventTime; + } + + float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : eventTime; + float sigma=(m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)- + avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0.; + + ATH_MSG_INFO("\t Event nr. "<<m_nrOfEntries<<" took " << std::setprecision(4) << + eventTime << " s. New average " << std::setprecision(4) << + avgTimePerEvent<<" +- "<<std::setprecision(4) << sigma); + } + + ATH_CHECK(m_senDetTool->EndOfAthenaEvent()); + ATH_CHECK(m_fastSimTool->EndOfAthenaEvent()); + + return StatusCode::SUCCESS; +} + +StatusCode ISF::Geant4Tool::releaseEventST() +{ + return releaseEvent(); +} + +// Act as particle broker for G4 secondaries +void ISF::Geant4Tool::push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent ) +{ + ATH_MSG_VERBOSE( "Caught secondary particle push() from Geant4" ); + + m_secondariesMap[ parent ].push_back( particle ); +} diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.h new file mode 100644 index 00000000000..d5f2fe1c7ad --- /dev/null +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.h @@ -0,0 +1,91 @@ +// -*- c++ -*- + +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef ISF_GEANT4TOOL_h +#define ISF_GEANT4TOOL_h + +#include <unordered_map> + +//Gaudi +#include "GaudiKernel/ServiceHandle.h" +#include "GaudiKernel/ToolHandle.h" + +//Athena +#include "AthenaBaseComps/AthAlgTool.h" + +// DetectorDescription +#include "AtlasDetDescr/AtlasRegion.h" + +// G4Atlas +#include "G4AtlasInterfaces/IDetectorGeometrySvc.h" +#include "G4AtlasInterfaces/ISensitiveDetectorMasterTool.h" +#include "G4AtlasInterfaces/IFastSimulationMasterTool.h" + +//ISF +#include "ISF_Interfaces/BaseSimulatorTool.h" +#include "ISF_Interfaces/ISimulationSelector.h" +#include "ISF_Geant4Interfaces/ITransportTool.h" + +class G4Timer; + +namespace ISF { + + class Geant4Tool : public BaseSimulatorTool { + public: + Geant4Tool( const std::string& type, const std::string& name, const IInterface* parent); + + ~Geant4Tool(); + + virtual StatusCode initialize() override; + + virtual StatusCode finalize() override; + + virtual StatusCode simulate( const ISFParticle& isp, ISFParticleContainer& secondaries ) override; + + virtual StatusCode simulateVector( const ConstISFParticleVector& particles, ISFParticleContainer& secondaries ) override; + + virtual StatusCode setupEvent() override; + + virtual StatusCode setupEventST() override; + + virtual StatusCode releaseEvent() override; + + virtual StatusCode releaseEventST() override; + + virtual ISF::SimulationFlavor simFlavor() const override { return ISF::Geant4; }; + + virtual void push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent ) override; + + private: + + ServiceHandle<IDetectorGeometrySvc> m_detGeoSvc{this, "DetectorGeometrySvc", "DetectorGeometrySvc", ""}; + + /** Track Creation & transport */ + PublicToolHandle<iGeant4::ITransportTool> m_g4TransportTool{this, "SimulationTool", "ISFG4TransportTool", ""}; //!< Pointer to the TrackCreator AlgTool + + /** Geant4 Python Configuration Tool */ + PublicToolHandle<IAlgTool> m_configTool{this, "G4ConfigTool", "", ""}; //!< Pointer to the G4 Python Config Tool + + PublicToolHandle<ISensitiveDetectorMasterTool> m_senDetTool{this, "SensitiveDetectorMasterTool", "SensitiveDetectorMasterTool", ""}; + PublicToolHandle<IFastSimulationMasterTool> m_fastSimTool{this, "FastSimulationMasterTool", "FastSimulationMasterTool", ""}; + + // timing checks + bool m_doTiming{true}; + //float m_runTime; + float m_accumulatedEventTime{0.}; + float m_accumulatedEventTimeSq{0.}; + unsigned int m_nrOfEntries{0}; + + G4Timer* m_runTimer{nullptr}; + G4Timer* m_eventTimer{nullptr}; + + // store secondary particles that have been pushed back + std::unordered_map< ISF::ISFParticle const*, ISF::ISFParticleContainer > m_secondariesMap; + }; + +} + +#endif diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx index 9cfecd74985..862f0ab0075 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx @@ -1,4 +1,5 @@ #include "../Geant4SimSvc.h" +#include "../Geant4Tool.h" DECLARE_COMPONENT( iGeant4::Geant4SimSvc ) - +DECLARE_COMPONENT( ISF::Geant4Tool ) -- GitLab From e993d09e8dfebbe1e4105189e210598929e82d64 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Mon, 8 Oct 2018 15:18:37 +0200 Subject: [PATCH 018/135] Merging Geant4Tool and G4TransportTool The `G4TransportTool` is only used by the `Geant4Tool` `ISimulatorTool` implementation, so it makes sense to merge the two tools into one. The next steps are to remove the, now obsolete, ISF_Geant4Interfaces package, then look again at the differences between the merged `G4TransportTool` and `G4AtlasAlg` to attempt to unify the code. Former-commit-id: 0434379d495c522cef37ce31b0511c74965db1a7 --- .../python/ISF_Geant4ServicesConfig.py | 22 -- .../python/ISF_Geant4ServicesConfigDb.py | 12 - .../ISF_Geant4Services/src/Geant4Tool.cxx | 211 ------------------ .../ISF_Geant4Services/src/Geant4Tool.h | 91 -------- .../components/ISF_Geant4Services_entries.cxx | 2 - .../python/ISF_Geant4ToolsConfig.py | 29 ++- .../python/ISF_Geant4ToolsConfigDb.py | 13 +- .../ISF_Geant4Tools/src/TransportTool.cxx | 174 +++++++++++++-- .../ISF_Geant4Tools/src/TransportTool.h | 56 +++-- 9 files changed, 222 insertions(+), 388 deletions(-) delete mode 100644 Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.cxx delete mode 100644 Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.h diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py index 128dd8291d7..24da430154f 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py @@ -58,25 +58,3 @@ def getPassBackGeant4SimSvc(name="ISF_PassBackGeant4SimSvc", **kwargs): def getAFIIGeant4SimSvc(name="ISF_AFIIGeant4SimSvc", **kwargs): kwargs.setdefault('SimulatorTool' , 'ISF_AFIIGeant4Tool') return getPassBackGeant4SimSvc(name, **kwargs) - -def getGeant4Tool(name="ISF_Geant4Tool", **kwargs): - from ISF_Config.ISF_jobProperties import ISF_Flags - kwargs.setdefault('SimulationTool' , 'ISFG4TransportTool' ) - kwargs.setdefault('PrintTimingInfo' , ISF_Flags.DoTimeMonitoring() ) - return CfgMgr.ISF__Geant4Tool(name, **kwargs) - -def getFullGeant4Tool(name="ISF_FullGeant4Tool", **kwargs): - kwargs.setdefault('SimulationTool' , 'FullG4TransportTool' ) - return getGeant4Tool(name, **kwargs) - -def getLongLivedGeant4Tool(name="ISF_LongLivedGeant4Tool", **kwargs): - kwargs.setdefault('SimulationTool' , 'QuasiStableG4TransportTool') - return getFullGeant4Tool(name, **kwargs) - -def getPassBackGeant4Tool(name="ISF_PassBackGeant4Tool", **kwargs): - kwargs.setdefault('SimulationTool' , 'PassBackG4TransportTool' ) - return getGeant4Tool(name, **kwargs) - -def getAFIIGeant4Tool(name="ISF_AFIIGeant4Tool", **kwargs): - kwargs.setdefault('SimulationTool' , 'AFII_G4TransportTool') - return getPassBackGeant4Tool(name, **kwargs) diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py index cd70a35bcb1..6c0b7c5e68b 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py @@ -6,15 +6,3 @@ addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getFullGeant4SimSvc", addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getPassBackGeant4SimSvc", "ISF_PassBackGeant4SimSvc") addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getAFIIGeant4SimSvc", "ISF_AFIIGeant4SimSvc") addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getLongLivedGeant4SimSvc", "ISF_LongLivedGeant4SimSvc") - -addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getGeant4Tool", "ISF_Geant4Tool") -addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getFullGeant4Tool", "ISF_FullGeant4Tool") -addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getLongLivedGeant4Tool", "ISF_LongLivedGeant4Tool") -addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getPassBackGeant4Tool", "ISF_PassBackGeant4Tool") -addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getAFIIGeant4Tool", "ISF_AFIIGeant4Tool") - -#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getGeant4MTTool", "ISF_Geant4MTTool") -#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getFullGeant4MTTool", "ISF_FullGeant4MTTool") -#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getLongLivedGeant4MTTool", "ISF_LongLivedGeant4MTTool") -#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getPassBackGeant4MTTool", "ISF_PassBackGeant4MTTool") -#addTool("ISF_Geant4Services.ISF_Geant4ServicesConfig.getAFIIGeant4MTTool", "ISF_AFIIGeant4MTTool") diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.cxx deleted file mode 100644 index 0921f5005e3..00000000000 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.cxx +++ /dev/null @@ -1,211 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ - -#include "./Geant4Tool.h" - -// Remaining ISF include -#include "ISF_Event/ISFParticle.h" - -// Geant4 classes -#include "G4Timer.hh" -#include "G4SDManager.hh" - -#include "AtlasDetDescr/AtlasRegionHelper.h" - -ISF::Geant4Tool::Geant4Tool(const std::string& type, const std::string& name, const IInterface* parent) - : BaseSimulatorTool(type, name, parent) -{ - declareProperty("PrintTimingInfo", m_doTiming ); -} - -ISF::Geant4Tool::~Geant4Tool() -{ - -} - -StatusCode ISF::Geant4Tool::finalize() -{ - ATH_MSG_INFO ( "Finalizing ..." ); - - if (m_doTiming) { - m_runTimer->Stop(); - float runTime=m_runTimer->GetUserElapsed()+m_runTimer->GetSystemElapsed(); - float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : runTime; - float sigma=( m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)- - avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0; - ATH_MSG_INFO("*****************************************"<<endmsg<< - "** **"<<endmsg<< - " End of run - time spent is "<<std::setprecision(4) << - runTime<<endmsg<< - " Average time per event was "<<std::setprecision(4) << - avgTimePerEvent <<" +- "<< std::setprecision(4) << sigma<<endmsg<< - "** **"<<endmsg<< - "*****************************************"); - } - - return StatusCode::SUCCESS; -} - -StatusCode ISF::Geant4Tool::initialize() -{ - ATH_MSG_INFO ( "Initializing ..."); - - ATH_CHECK( BaseSimulatorTool::initialize() ); - - // create G4Timers if enabled - if (m_doTiming) { - m_runTimer = new G4Timer(); - m_eventTimer = new G4Timer(); - m_runTimer->Start(); - } - - // retrieve simulation tool - ATH_CHECK (m_g4TransportTool.retrieve()); - - ATH_MSG_INFO ( m_g4TransportTool->name() ); - - ATH_CHECK (m_detGeoSvc.retrieve()); - - // retrieve (and run) the Geant4 Python Config tool - if (!m_configTool.empty()) { - ATH_CHECK (m_configTool.retrieve()); - } - - ATH_CHECK(m_senDetTool.retrieve()); - ATH_CHECK(m_fastSimTool.retrieve()); - - return StatusCode::SUCCESS; -} - -StatusCode ISF::Geant4Tool::simulate( const ISFParticle& isp, ISFParticleContainer& secondaries ) { - - // give a screen output that you entered Geant4SimSvc - ATH_MSG_VERBOSE( "Particle " << isp << " received for simulation." ); - - ATH_MSG_INFO( "BEN BEN BEN gingersnap" ); - - /** Process ParticleState from particle stack */ - StatusCode success = m_g4TransportTool->process(isp); - ATH_MSG_VERBOSE( "Simulation done" ); - - // return any secondaries associated with this particle - auto searchResult = m_secondariesMap.find( &isp ); - if ( searchResult == m_secondariesMap.end() ) { - - ATH_MSG_VERBOSE( "Found no secondaries" ); - - } else { - - ATH_MSG_VERBOSE( "Found secondaries: " << searchResult->second.size() ); - secondaries = searchResult->second; - m_secondariesMap.erase( searchResult ); - } - - // Geant4 call done - return success; -} - -StatusCode ISF::Geant4Tool::simulateVector( const ISF::ConstISFParticleVector& particles, ISFParticleContainer& secondaries ) { - - ATH_MSG_DEBUG (name() << ".simulateVector(...) : Received a vector of " << particles.size() << " particles for simulation."); - /** Process ParticleState from particle stack */ - ATH_CHECK (m_g4TransportTool->processVector(particles)); - ATH_MSG_VERBOSE( "Simulation done" ); - - for (auto* cisp : particles) { - auto* isp = const_cast<ISFParticle*>(cisp); - // return any secondaries associated with this particle - auto searchResult = m_secondariesMap.find( isp ); - if ( searchResult == m_secondariesMap.end() ) { - - ATH_MSG_VERBOSE( "Found no secondaries" ); - - } else { - - ATH_MSG_VERBOSE( "Found secondaries: " << searchResult->second.size() ); - secondaries.splice( end(secondaries), std::move(searchResult->second) ); //append vector - m_secondariesMap.erase( searchResult ); - } - } - // Geant4 call done - return StatusCode::SUCCESS; -} - -StatusCode ISF::Geant4Tool::setupEvent() -{ - ATH_MSG_DEBUG ( "setup Event" ); - - ATH_CHECK(m_senDetTool->BeginOfAthenaEvent()); - - m_nrOfEntries++; - if (m_doTiming) m_eventTimer->Start(); - - // make sure SD collections are properly initialized in every Athena event - G4SDManager::GetSDMpointer()->PrepareNewEvent(); - - return StatusCode::SUCCESS; -} - -StatusCode ISF::Geant4Tool::setupEventST() -{ - return setupEvent(); -} - -StatusCode ISF::Geant4Tool::releaseEvent() -{ - ATH_MSG_DEBUG ( "release Event" ); - /** @todo : strip hits of the tracks ... */ - - /* todo: ELLI: the following is copied in from the PyG4AtlasAlg: - -> this somehow needs to be moved into C++ - and put into releaseEvent() ( or setupEvent() ?) - - from ISF_Geant4Example import AtlasG4Eng - from ISF_Geant4Example.ISF_SimFlags import simFlags - if self.doFirstEventG4SeedsCheck : - if simFlags.SeedsG4.statusOn: - rnd = AtlasG4Eng.G4Eng.menu_G4RandomNrMenu() - rnd.set_Seed(simFlags.SeedsG4.get_Value()) - self.doFirstEventG4SeedsCheck = False - if self.RndG4Menu.SaveStatus: - self.RndG4Menu.Menu.saveStatus('G4Seeds.txt') - */ - - // print per-event timing info if enabled - if (m_doTiming) { - m_eventTimer->Stop(); - - double eventTime=m_eventTimer->GetUserElapsed()+m_eventTimer->GetSystemElapsed(); - if (m_nrOfEntries>1) { - m_accumulatedEventTime +=eventTime; - m_accumulatedEventTimeSq+=eventTime*eventTime; - } - - float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : eventTime; - float sigma=(m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)- - avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0.; - - ATH_MSG_INFO("\t Event nr. "<<m_nrOfEntries<<" took " << std::setprecision(4) << - eventTime << " s. New average " << std::setprecision(4) << - avgTimePerEvent<<" +- "<<std::setprecision(4) << sigma); - } - - ATH_CHECK(m_senDetTool->EndOfAthenaEvent()); - ATH_CHECK(m_fastSimTool->EndOfAthenaEvent()); - - return StatusCode::SUCCESS; -} - -StatusCode ISF::Geant4Tool::releaseEventST() -{ - return releaseEvent(); -} - -// Act as particle broker for G4 secondaries -void ISF::Geant4Tool::push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent ) -{ - ATH_MSG_VERBOSE( "Caught secondary particle push() from Geant4" ); - - m_secondariesMap[ parent ].push_back( particle ); -} diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.h deleted file mode 100644 index d5f2fe1c7ad..00000000000 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4Tool.h +++ /dev/null @@ -1,91 +0,0 @@ -// -*- c++ -*- - -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ISF_GEANT4TOOL_h -#define ISF_GEANT4TOOL_h - -#include <unordered_map> - -//Gaudi -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/ToolHandle.h" - -//Athena -#include "AthenaBaseComps/AthAlgTool.h" - -// DetectorDescription -#include "AtlasDetDescr/AtlasRegion.h" - -// G4Atlas -#include "G4AtlasInterfaces/IDetectorGeometrySvc.h" -#include "G4AtlasInterfaces/ISensitiveDetectorMasterTool.h" -#include "G4AtlasInterfaces/IFastSimulationMasterTool.h" - -//ISF -#include "ISF_Interfaces/BaseSimulatorTool.h" -#include "ISF_Interfaces/ISimulationSelector.h" -#include "ISF_Geant4Interfaces/ITransportTool.h" - -class G4Timer; - -namespace ISF { - - class Geant4Tool : public BaseSimulatorTool { - public: - Geant4Tool( const std::string& type, const std::string& name, const IInterface* parent); - - ~Geant4Tool(); - - virtual StatusCode initialize() override; - - virtual StatusCode finalize() override; - - virtual StatusCode simulate( const ISFParticle& isp, ISFParticleContainer& secondaries ) override; - - virtual StatusCode simulateVector( const ConstISFParticleVector& particles, ISFParticleContainer& secondaries ) override; - - virtual StatusCode setupEvent() override; - - virtual StatusCode setupEventST() override; - - virtual StatusCode releaseEvent() override; - - virtual StatusCode releaseEventST() override; - - virtual ISF::SimulationFlavor simFlavor() const override { return ISF::Geant4; }; - - virtual void push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent ) override; - - private: - - ServiceHandle<IDetectorGeometrySvc> m_detGeoSvc{this, "DetectorGeometrySvc", "DetectorGeometrySvc", ""}; - - /** Track Creation & transport */ - PublicToolHandle<iGeant4::ITransportTool> m_g4TransportTool{this, "SimulationTool", "ISFG4TransportTool", ""}; //!< Pointer to the TrackCreator AlgTool - - /** Geant4 Python Configuration Tool */ - PublicToolHandle<IAlgTool> m_configTool{this, "G4ConfigTool", "", ""}; //!< Pointer to the G4 Python Config Tool - - PublicToolHandle<ISensitiveDetectorMasterTool> m_senDetTool{this, "SensitiveDetectorMasterTool", "SensitiveDetectorMasterTool", ""}; - PublicToolHandle<IFastSimulationMasterTool> m_fastSimTool{this, "FastSimulationMasterTool", "FastSimulationMasterTool", ""}; - - // timing checks - bool m_doTiming{true}; - //float m_runTime; - float m_accumulatedEventTime{0.}; - float m_accumulatedEventTimeSq{0.}; - unsigned int m_nrOfEntries{0}; - - G4Timer* m_runTimer{nullptr}; - G4Timer* m_eventTimer{nullptr}; - - // store secondary particles that have been pushed back - std::unordered_map< ISF::ISFParticle const*, ISF::ISFParticleContainer > m_secondariesMap; - }; - -} - -#endif diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx index 862f0ab0075..27f524a42c6 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx @@ -1,5 +1,3 @@ #include "../Geant4SimSvc.h" -#include "../Geant4Tool.h" DECLARE_COMPONENT( iGeant4::Geant4SimSvc ) -DECLARE_COMPONENT( ISF::Geant4Tool ) diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py index 2aa9494308b..a519ea1dc9c 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py @@ -69,7 +69,7 @@ def getAFII_G4TrackProcessorUserActionTool(name='AFII_G4TrackProcessorUserAction ## ----------------------------------------------------------------------------- ### Base Version -def getG4TransportTool(name='ISFG4TransportTool', **kwargs): +def getGeant4Tool(name="ISF_Geant4Tool", **kwargs): from G4AtlasApps.SimFlags import simFlags kwargs.setdefault('RandomGenerator', 'athena') kwargs.setdefault('RandomNumberService', simFlags.RandomSvc()) @@ -87,24 +87,29 @@ def getG4TransportTool(name='ISFG4TransportTool', **kwargs): kwargs.setdefault('MultiThreading', is_hive) # Set commands for the G4AtlasAlg kwargs.setdefault("G4Commands", simFlags.G4Commands.get_Value()) - from ISF_Geant4Tools.ISF_Geant4ToolsConf import iGeant4__G4TransportTool - return iGeant4__G4TransportTool(name, **kwargs) -### Specialized Versions -def getFullG4TransportTool(name='FullG4TransportTool', **kwargs): + from ISF_Config.ISF_jobProperties import ISF_Flags + kwargs.setdefault('PrintTimingInfo' , ISF_Flags.DoTimeMonitoring() ) + kwargs.setdefault('SenDetMasterTool', 'SensitiveDetectorMasterTool') + kwargs.setdefault('FastSimMasterTool', 'FastSimulationMasterTool') + from AthenaCommon import CfgMgr + return CfgMgr.iGeant4__G4TransportTool(name, **kwargs) + +def getFullGeant4Tool(name="ISF_FullGeant4Tool", **kwargs): kwargs.setdefault('UserActionSvc','G4UA::ISFFullUserActionSvc') - return getG4TransportTool(name, **kwargs) + return getGeant4Tool(name, **kwargs) -def getPassBackG4TransportTool(name='PassBackG4TransportTool', **kwargs): +### Specialized Versions +def getPassBackGeant4Tool(name="ISF_PassBackGeant4Tool", **kwargs): kwargs.setdefault('UserActionSvc','G4UA::ISFPassBackUserActionSvc') - return getG4TransportTool(name, **kwargs) + return getGeant4Tool(name, **kwargs) -def getAFII_G4TransportTool(name='AFII_G4TransportTool', **kwargs): +def getAFIIGeant4Tool(name="ISF_AFIIGeant4Tool", **kwargs): kwargs.setdefault('UserActionSvc','G4UA::ISF_AFIIUserActionSvc') - return getG4TransportTool(name, **kwargs) + return getPassBackGeant4Tool(name, **kwargs) -def getQuasiStableG4TransportTool(name='QuasiStableG4TransportTool', **kwargs): +def getLongLivedGeant4Tool(name="ISF_LongLivedGeant4Tool", **kwargs): kwargs.setdefault('UserActionSvc','G4UA::ISFQuasiStableUserActionSvc') kwargs.setdefault('InputConverter', 'ISF_LongLivedInputConverter') - return getG4TransportTool(name, **kwargs) + return getFullGeant4Tool(name, **kwargs) ## ----------------------------------------------------------------------------- diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigDb.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigDb.py index d0da9840d9f..4b85828a7d2 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigDb.py +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigDb.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration from AthenaCommon.CfgGetter import addTool @@ -14,9 +14,8 @@ addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getFullG4TrackProcessorUserAction addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getPassBackG4TrackProcessorUserActionTool" , "PassBackG4TrackProcessorUserActionTool") addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getAFII_G4TrackProcessorUserActionTool" , "AFII_G4TrackProcessorUserActionTool") - -addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getG4TransportTool" , "ISFG4TransportTool") -addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getFullG4TransportTool" , "FullG4TransportTool") -addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getPassBackG4TransportTool" , "PassBackG4TransportTool") -addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getAFII_G4TransportTool" , "AFII_G4TransportTool") -addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getQuasiStableG4TransportTool" , "QuasiStableG4TransportTool") +addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getGeant4Tool", "ISF_Geant4Tool") +addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getFullGeant4Tool", "ISF_FullGeant4Tool") +addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getLongLivedGeant4Tool", "ISF_LongLivedGeant4Tool") +addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getPassBackGeant4Tool", "ISF_PassBackGeant4Tool") +addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getAFIIGeant4Tool", "ISF_AFIIGeant4Tool") diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx index 3904af1fa0b..776b5d61ae9 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // class header @@ -33,6 +33,10 @@ #include "G4TransportationManager.hh" #include "G4UImanager.hh" #include "G4ScoringManager.hh" +#include "G4Timer.hh" +#include "G4SDManager.hh" + +#include "AtlasDetDescr/AtlasRegionHelper.h" // call_once mutexes #include <mutex> @@ -40,10 +44,10 @@ static std::once_flag initializeOnceFlag; static std::once_flag finalizeOnceFlag; //________________________________________________________________________ -iGeant4::G4TransportTool::G4TransportTool(const std::string& t, - const std::string& n, - const IInterface* p ) - : base_class(t,n,p) +iGeant4::G4TransportTool::G4TransportTool(const std::string& type, + const std::string& name, + const IInterface* parent ) + : ISF::BaseSimulatorTool(type, name, parent) { declareProperty("Dll", m_libList); declareProperty("Physics", m_physList); @@ -56,6 +60,7 @@ iGeant4::G4TransportTool::G4TransportTool(const std::string& t, declareProperty("MultiThreading", m_useMT, "Multi-threading specific settings"); //declareProperty("KillAllNeutrinos", m_KillAllNeutrinos=true); //declareProperty("KillLowEPhotons", m_KillLowEPhotons=-1.); + declareProperty("PrintTimingInfo", m_doTiming ); } @@ -68,6 +73,15 @@ StatusCode iGeant4::G4TransportTool::initialize() { ATH_MSG_VERBOSE("initialize"); + ATH_CHECK( ISF::BaseSimulatorTool::initialize() ); + + // create G4Timers if enabled + if (m_doTiming) { + m_runTimer = new G4Timer(); + m_eventTimer = new G4Timer(); + m_runTimer->Start(); + } + ATH_CHECK(m_inputConverter.retrieve()); // One-time initialization @@ -84,6 +98,16 @@ StatusCode iGeant4::G4TransportTool::initialize() if (m_recordFlux) G4ScoringManager::GetScoringManager(); + ATH_CHECK (m_detGeoSvc.retrieve()); + + // retrieve (and run) the Geant4 Python Config tool + if (!m_configTool.empty()) { + ATH_CHECK (m_configTool.retrieve()); + } + + ATH_CHECK(m_senDetTool.retrieve()); + ATH_CHECK(m_fastSimTool.retrieve()); + return StatusCode::SUCCESS; } @@ -174,6 +198,22 @@ StatusCode iGeant4::G4TransportTool::finalize() return StatusCode::FAILURE; } + if (m_doTiming) { + m_runTimer->Stop(); + float runTime=m_runTimer->GetUserElapsed()+m_runTimer->GetSystemElapsed(); + float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : runTime; + float sigma=( m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)- + avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0; + ATH_MSG_INFO("*****************************************"<<endmsg<< + "** **"<<endmsg<< + " End of run - time spent is "<<std::setprecision(4) << + runTime<<endmsg<< + " Average time per event was "<<std::setprecision(4) << + avgTimePerEvent <<" +- "<< std::setprecision(4) << sigma<<endmsg<< + "** **"<<endmsg<< + "*****************************************"); + } + return StatusCode::SUCCESS; } @@ -188,23 +228,28 @@ void iGeant4::G4TransportTool::finalizeOnce() } //________________________________________________________________________ -StatusCode iGeant4::G4TransportTool::process(const ISF::ISFParticle& isp) -{ - ATH_MSG_VERBOSE("process(...)"); +StatusCode iGeant4::G4TransportTool::simulate( const ISF::ISFParticle& isp, ISF::ISFParticleContainer& secondaries ) { + // give a screen output that you entered Geant4SimSvc + ATH_MSG_VERBOSE( "Particle " << isp << " received for simulation." ); + + /** Process ParticleState from particle stack */ // wrap the given ISFParticle into a STL vector of ISFParticles with length 1 // (minimizing code duplication) const ISF::ConstISFParticleVector ispVector(1, &isp); - return this->processVector(ispVector); + StatusCode success = this->simulateVector(ispVector, secondaries); + ATH_MSG_VERBOSE( "Simulation done" ); + + // Geant4 call done + return success; } //________________________________________________________________________ -StatusCode iGeant4::G4TransportTool::processVector(const ISF::ConstISFParticleVector& ispVector) -{ - ATH_MSG_VERBOSE("processVector(...)"); - ATH_MSG_DEBUG("processing vector of "<<ispVector.size()<<" particles"); +StatusCode iGeant4::G4TransportTool::simulateVector( const ISF::ConstISFParticleVector& particles, ISF::ISFParticleContainer& secondaries ) { - G4Event* inputEvent = m_inputConverter->ISF_to_G4Event(ispVector, genEvent()); + ATH_MSG_DEBUG (name() << ".simulateVector(...) : Received a vector of " << particles.size() << " particles for simulation."); + /** Process ParticleState from particle stack */ + G4Event* inputEvent = m_inputConverter->ISF_to_G4Event(particles, genEvent()); if (!inputEvent) { ATH_MSG_ERROR("ISF Event conversion failed "); return StatusCode::FAILURE; @@ -231,9 +276,110 @@ StatusCode iGeant4::G4TransportTool::processVector(const ISF::ConstISFParticleVe // } // not implemented yet... need to get particle stack from Geant4 and convert to ISFParticle + ATH_MSG_VERBOSE( "Simulation done" ); + + for (auto* cisp : particles) { + auto* isp = const_cast<ISF::ISFParticle*>(cisp); + // return any secondaries associated with this particle + auto searchResult = m_secondariesMap.find( isp ); + if ( searchResult == m_secondariesMap.end() ) { + + ATH_MSG_VERBOSE( "Found no secondaries" ); + + } else { + + ATH_MSG_VERBOSE( "Found secondaries: " << searchResult->second.size() ); + secondaries.splice( end(secondaries), std::move(searchResult->second) ); //append vector + m_secondariesMap.erase( searchResult ); + } + } + // Geant4 call done return StatusCode::SUCCESS; } +//________________________________________________________________________ +StatusCode iGeant4::G4TransportTool::setupEvent() +{ + ATH_MSG_DEBUG ( "setup Event" ); + + ATH_CHECK(m_senDetTool->BeginOfAthenaEvent()); + + m_nrOfEntries++; + if (m_doTiming) m_eventTimer->Start(); + + // make sure SD collections are properly initialized in every Athena event + G4SDManager::GetSDMpointer()->PrepareNewEvent(); + + return StatusCode::SUCCESS; +} + +//________________________________________________________________________ +StatusCode iGeant4::G4TransportTool::setupEventST() +{ + return setupEvent(); +} + +//________________________________________________________________________ +StatusCode iGeant4::G4TransportTool::releaseEvent() +{ + ATH_MSG_DEBUG ( "release Event" ); + /** @todo : strip hits of the tracks ... */ + + /* todo: ELLI: the following is copied in from the PyG4AtlasAlg: + -> this somehow needs to be moved into C++ + and put into releaseEvent() ( or setupEvent() ?) + + from ISF_Geant4Example import AtlasG4Eng + from ISF_Geant4Example.ISF_SimFlags import simFlags + if self.doFirstEventG4SeedsCheck : + if simFlags.SeedsG4.statusOn: + rnd = AtlasG4Eng.G4Eng.menu_G4RandomNrMenu() + rnd.set_Seed(simFlags.SeedsG4.get_Value()) + self.doFirstEventG4SeedsCheck = False + if self.RndG4Menu.SaveStatus: + self.RndG4Menu.Menu.saveStatus('G4Seeds.txt') + */ + + // print per-event timing info if enabled + if (m_doTiming) { + m_eventTimer->Stop(); + + double eventTime=m_eventTimer->GetUserElapsed()+m_eventTimer->GetSystemElapsed(); + if (m_nrOfEntries>1) { + m_accumulatedEventTime +=eventTime; + m_accumulatedEventTimeSq+=eventTime*eventTime; + } + + float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : eventTime; + float sigma=(m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)- + avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0.; + + ATH_MSG_INFO("\t Event nr. "<<m_nrOfEntries<<" took " << std::setprecision(4) << + eventTime << " s. New average " << std::setprecision(4) << + avgTimePerEvent<<" +- "<<std::setprecision(4) << sigma); + } + + ATH_CHECK(m_senDetTool->EndOfAthenaEvent()); + ATH_CHECK(m_fastSimTool->EndOfAthenaEvent()); + + return StatusCode::SUCCESS; +} + +//________________________________________________________________________ +StatusCode iGeant4::G4TransportTool::releaseEventST() +{ + return releaseEvent(); +} + +//________________________________________________________________________ +// Act as particle broker for G4 secondaries +void iGeant4::G4TransportTool::push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent ) +{ + ATH_MSG_VERBOSE( "Caught secondary particle push() from Geant4" ); + + m_secondariesMap[ parent ].push_back( particle ); +} + //________________________________________________________________________ HepMC::GenEvent* iGeant4::G4TransportTool::genEvent() const { diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h index c5cc02f36bb..78464c4839c 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h @@ -1,25 +1,21 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// G4TransportTool.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - #ifndef ISF_GEANT4TOOLS_TRANSPORTTOOL_H #define ISF_GEANT4TOOLS_TRANSPORTTOOL_H -// Base class headers -#include "AthenaBaseComps/AthAlgTool.h" -#include "ISF_Geant4Interfaces/ITransportTool.h" - // STL headers #include <string> +#include <unordered_map> // Gaudi headers #include "GaudiKernel/ToolHandle.h" #include "GaudiKernel/ServiceHandle.h" +// DetectorDescription +#include "AtlasDetDescr/AtlasRegion.h" + // Athena headers #include "AthenaKernel/IAtRndmGenSvc.h" #include "G4AtlasInterfaces/IG4AtlasSvc.h" @@ -30,6 +26,8 @@ #include "G4AtlasInterfaces/IPhysicsListTool.h" // ISF includes +#include "ISF_Interfaces/BaseSimulatorTool.h" +#include "ISF_Interfaces/ISimulationSelector.h" #include "ISF_Interfaces/IInputConverter.h" #include "ISF_Geant4Tools/IG4RunManagerHelper.h" @@ -56,8 +54,7 @@ namespace iGeant4 class G4AtlasRunManager; - class G4TransportTool : public extends<AthAlgTool, ITransportTool> - { + class G4TransportTool : public ISF::BaseSimulatorTool { public: /** Constructor */ @@ -80,11 +77,21 @@ namespace iGeant4 /// This is done (for now) because we get multiple tool instances in hive. void finalizeOnce(); - /** Creates a new ParticleState from a given ParticleState, universal transport tool */ - virtual StatusCode process(const ISF::ISFParticle& isp) override final; + virtual StatusCode simulate( const ISF::ISFParticle& isp, ISF::ISFParticleContainer& secondaries ) override; + + virtual StatusCode simulateVector( const ISF::ConstISFParticleVector& particles, ISF::ISFParticleContainer& secondaries ) override; + + virtual StatusCode setupEvent() override; + + virtual StatusCode setupEventST() override; - /** Creates a new ParticleState from a given ParticleState, universal transport tool */ - virtual StatusCode processVector(const std::vector<const ISF::ISFParticle*>& particles) override final; + virtual StatusCode releaseEvent() override; + + virtual StatusCode releaseEventST() override; + + virtual ISF::SimulationFlavor simFlavor() const override { return ISF::Geant4; }; + + virtual void push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent ) override; private: @@ -95,6 +102,21 @@ namespace iGeant4 /// @name Configurable Properties /// @{ + /** Geant4 Python Configuration Tool */ + PublicToolHandle<IAlgTool> m_configTool{this, "G4ConfigTool", "", ""}; //!< Pointer to the G4 Python Config Tool + + // timing checks + bool m_doTiming{true}; + //float m_runTime; + float m_accumulatedEventTime{0.}; + float m_accumulatedEventTimeSq{0.}; + unsigned int m_nrOfEntries{0}; + + G4Timer* m_runTimer{nullptr}; + G4Timer* m_eventTimer{nullptr}; + + // store secondary particles that have been pushed back + std::unordered_map< ISF::ISFParticle const*, ISF::ISFParticleContainer > m_secondariesMap; std::string m_mcEventCollectionName{"TruthEvent"}; /// Helper Tool to provide G4RunManager PublicToolHandle<ISF::IG4RunManagerHelper> m_g4RunManagerHelper{this, "G4RunManagerHelper", "iGeant4::G4RunManagerHelper/G4RunManagerHelper", ""}; @@ -123,9 +145,9 @@ namespace iGeant4 /// Physics List Tool PublicToolHandle<IPhysicsListTool> m_physListTool{this, "PhysicsListTool", "PhysicsListToolBase", ""}; /// Sensitive Detector Master Tool - ToolHandle<ISensitiveDetectorMasterTool> m_senDetTool{this, "SenDetMasterTool", "SensitiveDetectorMasterTool", ""}; + PublicToolHandle<ISensitiveDetectorMasterTool> m_senDetTool{this, "SenDetMasterTool", "SensitiveDetectorMasterTool", ""}; /// Fast Simulation Master Tool - ToolHandle<IFastSimulationMasterTool> m_fastSimTool{this, "FastSimMasterTool", "FastSimulationMasterTool", ""}; + PublicToolHandle<IFastSimulationMasterTool> m_fastSimTool{this, "FastSimMasterTool", "FastSimulationMasterTool", ""}; /// @} }; -- GitLab From 154681bad6db59faa67e009fc2e2f40d4da9d697 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Mon, 8 Oct 2018 15:30:02 +0200 Subject: [PATCH 019/135] Remove obsolete ISF_Geant4Interfaces package Former-commit-id: 57a512c0d8ee0785ecd8239bb9469bc0ef6456da --- Projects/AthSimulation/package_filters.txt | 1 - .../ISF_Geant4Interfaces/CMakeLists.txt | 14 ----- .../ISF_Geant4Interfaces/ITransportTool.h | 57 ------------------- .../ISF_Geant4Services/CMakeLists.txt | 3 +- .../ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt | 1 - .../ISF_Geant4Tools/src/MCTruthUserAction.h | 9 ++- .../src/TrackProcessorUserActionBase.h | 4 +- 7 files changed, 6 insertions(+), 83 deletions(-) delete mode 100644 Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/CMakeLists.txt delete mode 100644 Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/ISF_Geant4Interfaces/ITransportTool.h diff --git a/Projects/AthSimulation/package_filters.txt b/Projects/AthSimulation/package_filters.txt index b3b5eaae318..cd07f57f835 100644 --- a/Projects/AthSimulation/package_filters.txt +++ b/Projects/AthSimulation/package_filters.txt @@ -289,7 +289,6 @@ + Simulation/ISF/ISF_Geant4/ISF_Geant4CommonServices + Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools + Simulation/ISF/ISF_Geant4/ISF_Geant4Event -+ Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces + Simulation/ISF/ISF_Geant4/ISF_Geant4Services + Simulation/ISF/ISF_Geant4/ISF_Geant4Tools + Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/CMakeLists.txt b/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/CMakeLists.txt deleted file mode 100644 index 73de2129c20..00000000000 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -################################################################################ -# Package: ISF_Geant4Interfaces -################################################################################ - -# Declare the package name: -atlas_subdir( ISF_Geant4Interfaces ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - GaudiKernel ) - -# Install files from the package: -atlas_install_headers( ISF_Geant4Interfaces ) - diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/ISF_Geant4Interfaces/ITransportTool.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/ISF_Geant4Interfaces/ITransportTool.h deleted file mode 100644 index cd65f31db15..00000000000 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/ISF_Geant4Interfaces/ITransportTool.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/////////////////////////////////////////////////////////////////// -// ITransportTool.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - -#ifndef ISF_GEANT4INTERFACES_ITRANSPORTTOOL_H -#define ISF_GEANT4INTERFACES_ITRANSPORTTOOL_H - -// Gaudi -#include "GaudiKernel/IAlgTool.h" - -namespace Trk{ - class Track; -} - -namespace ISF { - class ISFParticle; -} - -namespace iGeant4 { - - /** - @class ITransportTool - - universal transport tool - - - return of new ISFParticle on the next detector boundary - - return 0 indicates that the particle did not reach the associated detector boundary - - @author Robert Harrington - @author Andreas Schaelicke - - */ - - class ITransportTool : virtual public IAlgTool { - public: - - /** Virtual destructor */ - virtual ~ITransportTool(){} - - /// Creates the InterfaceID and interfaceID() method - DeclareInterfaceID(ITransportTool, 1, 0); - - /** Processes ISF particle */ - virtual StatusCode process(const ISF::ISFParticle& isp) = 0; - - /** Processes vector of ISF particles */ - virtual StatusCode processVector(const std::vector<const ISF::ISFParticle*>& ispVector) = 0; - }; - -} // end of namespace - -#endif - diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/CMakeLists.txt b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/CMakeLists.txt index 1e6f60b8eab..c15a46b47f0 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/CMakeLists.txt +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/CMakeLists.txt @@ -13,8 +13,7 @@ atlas_depends_on_subdirs( PUBLIC Control/StoreGate Simulation/G4Atlas/G4AtlasInterfaces Simulation/ISF/ISF_Core/ISF_Event - Simulation/ISF/ISF_Core/ISF_Interfaces - Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces ) + Simulation/ISF/ISF_Core/ISF_Interfaces ) # External dependencies: find_package( CLHEP ) diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt index 32899dd784c..9285829915a 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt @@ -22,7 +22,6 @@ atlas_depends_on_subdirs( PUBLIC Simulation/ISF/ISF_Core/ISF_Event Simulation/ISF/ISF_Core/ISF_Interfaces Simulation/ISF/ISF_Geant4/ISF_Geant4Event - Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces Simulation/ISF/ISF_HepMC/ISF_HepMC_Event ) # External dependencies: diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/MCTruthUserAction.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/MCTruthUserAction.h index 8cce4638f7d..b032a530899 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/MCTruthUserAction.h +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/MCTruthUserAction.h @@ -1,12 +1,11 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -#ifndef ISF_Geant4Interfaces_MCTruthUserAction_H -#define ISF_Geant4Interfaces_MCTruthUserAction_H +#ifndef ISF_Geant4Tools_MCTruthUserAction_H +#define ISF_Geant4Tools_MCTruthUserAction_H -//#include "ISF_Geant4Interfaces/IMCTruthUserAction.h" #include <string> @@ -61,4 +60,4 @@ namespace G4UA{ } // namespace G4UA -#endif // ISF_Geant4Interfaces_MCTruthUserAction_H +#endif // ISF_Geant4Tools_MCTruthUserAction_H diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TrackProcessorUserActionBase.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TrackProcessorUserActionBase.h index 43ddce5efa4..7dc0cdb9d41 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TrackProcessorUserActionBase.h +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TrackProcessorUserActionBase.h @@ -1,12 +1,10 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef ISF_GEANT4TOOLS_TRACKPROCESSORUSERACTIONBASE_H #define ISF_GEANT4TOOLS_TRACKPROCESSORUSERACTIONBASE_H -//#include "ISF_Geant4Interfaces/ITrackProcessorUserAction.h" - #include <string> #include "G4UserTrackingAction.hh" -- GitLab From 7264380b704b359d739d8bca8330fb8e0f5528bd Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Mon, 8 Oct 2018 16:19:31 +0200 Subject: [PATCH 020/135] Drop unused G4ConfigTool Former-commit-id: cba4835cd2cf9ada8d76c34b1f92bb858f13d042 --- .../ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx | 5 ----- .../ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h | 2 -- 2 files changed, 7 deletions(-) diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx index 776b5d61ae9..f42b450ca9f 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx @@ -100,11 +100,6 @@ StatusCode iGeant4::G4TransportTool::initialize() ATH_CHECK (m_detGeoSvc.retrieve()); - // retrieve (and run) the Geant4 Python Config tool - if (!m_configTool.empty()) { - ATH_CHECK (m_configTool.retrieve()); - } - ATH_CHECK(m_senDetTool.retrieve()); ATH_CHECK(m_fastSimTool.retrieve()); diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h index 78464c4839c..28f161efc3d 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h @@ -102,8 +102,6 @@ namespace iGeant4 /// @name Configurable Properties /// @{ - /** Geant4 Python Configuration Tool */ - PublicToolHandle<IAlgTool> m_configTool{this, "G4ConfigTool", "", ""}; //!< Pointer to the G4 Python Config Tool // timing checks bool m_doTiming{true}; -- GitLab From ac76135449f92e0dad73b1657d739234ec1d9223 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Fri, 5 Oct 2018 16:29:16 +0200 Subject: [PATCH 021/135] Migrate FatrasSimSvc so that just calls methods of FatrasSimTool This commit moves all the guts of FatrasSimSvc into FatrasSimTool except for the parts related to using the ParticleBroker. Former-commit-id: 9e6a0a3f6b504f0ee97599c805dfb74149f8f11a --- .../python/ISF_FatrasServicesConfig.py | 88 +++++++++++++------ .../python/ISF_FatrasServicesConfigDb.py | 8 ++ .../ISF_FatrasServices/src/FatrasSimSvc.cxx | 78 ++++------------ .../ISF_FatrasServices/src/FatrasSimSvc.h | 50 ++++------- .../ISF_FatrasServices/src/FatrasSimTool.cxx | 68 ++++++++++++++ .../ISF_FatrasServices/src/FatrasSimTool.h | 55 ++++++++++++ .../components/ISF_FatrasServices_entries.cxx | 2 + 7 files changed, 228 insertions(+), 121 deletions(-) create mode 100644 Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.cxx create mode 100644 Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.h diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py index 70446d182ad..08008f5f695 100644 --- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py @@ -704,50 +704,84 @@ def getFatrasSimEngine(name="ISF_FatrasSimEngine", **kwargs): from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__TransportEngine return iFatras__TransportEngine(name, **kwargs ) + +def getFatrasPileupSimTool(name="ISF_FatrasPileupSimTool", **kwargs): + kwargs.setdefault("SimHitCreatorID" , getPublicTool('ISF_FatrasPileupSimHitCreatorID')) + return getFatrasSimTool(name, **kwargs) + + +## FatrasSimulationSvc Configurations def getFatrasSimServiceID(name="ISF_FatrasSimSvc", **kwargs): kwargs.setdefault("Identifier" , "Fatras") + kwargs.setdefault("SimulatorTool" , "ISF_FatrasSimulatorToolST") + from ISF_FatrasServices.ISF_FatrasServicesConf import iFatras__FatrasSimSvc + return iFatras__FatrasSimSvc(name, **kwargs ) + + +def getFatrasNewExtrapolationSimServiceID(name="ISF_FatrasNewExtrapolationSimSvc", **kwargs): + kwargs.setdefault("SimulatorTool" , "ISF_FatrasNewExtrapolationSimulatorToolST") + return getFatrasSimServiceID(name, **kwargs ) + + +def getFatrasGeoIDFixSimServiceID(name="ISF_FatrasGeoIDFixSimSvc", **kwargs): + kwargs.setdefault("EnableGeoIDOverride" , True ) + kwargs.setdefault("GeoIDOverrideZ" , 3150. ) + kwargs.setdefault("GeoIDOverride" , 3 ) # ISF::fAtlasCalo + return getFatrasSimServiceID(name, **kwargs ) + + +def getFatrasPileupSimServiceID(name="ISF_FatrasPileupSimSvc", **kwargs): + kwargs.setdefault("SimulatorTool" , "ISF_FatrasPileupSimulatorToolST") + return getFatrasSimServiceID(name, **kwargs) + + +## FatrasSimulatorTool Configurations +def getFatrasSimulatorToolST(name="ISF_FatrasSimulatorToolST", **kwargs): kwargs.setdefault("IDSimulationTool" , getPublicTool('ISF_FatrasSimTool')) kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasSimTool')) - # set the output level kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral()) - # register Fatras random number stream if not already registered from G4AtlasApps.SimFlags import SimFlags,simFlags if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasRnd" ): simFlags.RandomSeedList.addSeed( "FatrasRnd", 81234740, 23474923 ) + return CfgMgr.ISF__FatrasSimTool(name, **kwargs) - from ISF_FatrasServices.ISF_FatrasServicesConf import iFatras__FatrasSimSvc - return iFatras__FatrasSimSvc(name, **kwargs ) -def getFatrasNewExtrapolationSimServiceID(name="ISF_FatrasNewExtrapolationSimSvc", **kwargs): - kwargs.setdefault("Identifier" , "Fatras") +def getFatrasSimulatorTool(name="ISF_FatrasSimulatorTool", **kwargs): + kwargs.setdefault("IDSimulationSelectors" , [ 'ISF_DefaultFatrasSelector' ] ) + kwargs.setdefault("CaloSimulationSelectors" , [ 'ISF_MuonFatrasSelector' ] ) + kwargs.setdefault("MSSimulationSelectors" , [ 'ISF_DefaultFatrasSelector' ] ) + return getFatrasSimulatorToolST(name, **kwargs) + + +def getFatrasNewExtrapolationSimulatorToolST(name="ISF_FatrasNewExtrapolationSimulatorToolST", **kwargs): kwargs.setdefault("IDSimulationTool" , getPublicTool('ISF_FatrasSimEngine')) - kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasSimTool')) kwargs.setdefault("UseSimulationTool" , True) + return getFatrasSimulatorToolST(name, **kwargs) - # set the output level - kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral()) - - # register Fatras random number stream if not already registered - from G4AtlasApps.SimFlags import SimFlags,simFlags - if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasRnd" ): - simFlags.RandomSeedList.addSeed( "FatrasRnd", 81234740, 23474923 ) - from ISF_FatrasServices.ISF_FatrasServicesConf import iFatras__FatrasSimSvc - return iFatras__FatrasSimSvc(name, **kwargs ) +def getFatrasNewExtrapolationSimulatorTool(name="ISF_FatrasSNewExtrapolationimulatorTool", **kwargs): + kwargs.setdefault("IDSimulationSelectors" , [ 'ISF_DefaultFatrasSelector' ] ) + kwargs.setdefault("CaloSimulationSelectors" , [ 'ISF_MuonFatrasSelector' ] ) + kwargs.setdefault("MSSimulationSelectors" , [ 'ISF_DefaultFatrasSelector' ] ) + return getFatrasNewExtrapolationSimulatorToolST(name, **kwargs) -def getFatrasGeoIDFixSimServiceID(name="ISF_FatrasGeoIDFixSimSvc", **kwargs): - kwargs.setdefault("EnableGeoIDOverride" , True ) - kwargs.setdefault("GeoIDOverrideZ" , 3150. ) - kwargs.setdefault("GeoIDOverride" , 3 ) # ISF::fAtlasCalo - return getFatrasSimServiceID(name, **kwargs ) -def getFatrasPileupSimTool(name="ISF_FatrasPileupSimTool", **kwargs): - kwargs.setdefault("SimHitCreatorID" , getPublicTool('ISF_FatrasPileupSimHitCreatorID')) - return getFatrasSimTool(name, **kwargs) - -def getFatrasPileupSimServiceID(name="ISF_FatrasPileupSimSvc", **kwargs): +def getFatrasPileupSimulatorToolST(name="ISF_FatrasPileupSimulatorToolST", **kwargs): kwargs.setdefault("IDSimulationTool", getPublicTool('ISF_FatrasPileupSimTool')) kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasSimTool')) - return getFatrasSimServiceID(name, **kwargs) + return getFatrasSimulatorToolST(name, **kwargs) + + +def getFatrasPileupSimulatorTool(name="ISF_FatrasPileupSimulatorTool", **kwargs): + kwargs.setdefault("IDSimulationSelectors" , [ 'ISF_DefaultFatrasSelector' ] ) + kwargs.setdefault("CaloSimulationSelectors" , [ 'ISF_MuonFatrasSelector' ] ) + kwargs.setdefault("MSSimulationSelectors" , [ 'ISF_DefaultFatrasSelector' ] ) + return getFatrasPileupSimulatorToolST(name, **kwargs) + + +#def getFatrasPileupSimulatorTool_noHits(name="ISF_FatrasPileupTool_noHits", **kwargs): +# kwargs.setdefault("SimService", "ISF_FatrasPileupSimSvc_noHits" ) +# return CfgMgr.ISF__FatrasSimTool(name, **kwargs) + diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfigDb.py b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfigDb.py index 326a1c60250..5cbb63294b8 100644 --- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfigDb.py +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfigDb.py @@ -65,3 +65,11 @@ addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupHitCreatorPi addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupHitCreatorSCT", "ISF_FatrasPileupHitCreatorSCT") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupHitCreatorTRT", "ISF_FatrasPileupHitCreatorTRT") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimHitCreatorID", "ISF_FatrasPileupSimHitCreatorID") + +addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimulatorToolST" , "ISF_FatrasSimulatorToolST" ) +addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimulatorTool" , "ISF_FatrasSimulatorTool" ) +addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasNewExtrapolationSimulatorToolST" , "ISF_FatrasNewExtrapolationSimulatorToolST" ) +addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasNewExtrapolationSimulatorTool" , "ISF_FatrasNewExtrapolationSimulatorTool" ) +addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimulatorToolST" , "ISF_FatrasPileupSimulatorToolST" ) +addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimulatorTool" , "ISF_FatrasPileupSimulatorTool" ) +#addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimulatorTool_noHits" , "ISF_FatrasPileupSimulatorTool_noHits" ) diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.cxx index 319a1955066..b47a6ff1a9c 100644 --- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.cxx +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.cxx @@ -4,93 +4,51 @@ // class header include #include "FatrasSimSvc.h" - -// Remaining ISF include #include "ISF_Interfaces/IParticleBroker.h" -#include "ISF_Interfaces/ITruthSvc.h" -#include "ISF_Interfaces/IParticleFilter.h" -#include "ISF_Event/ISFParticle.h" -#include "ISF_Interfaces/IParticleProcessor.h" /** Constructor **/ iFatras::FatrasSimSvc::FatrasSimSvc(const std::string& name, ISvcLocator* svc) : - BaseSimulationSvc(name, svc), - m_IDsimulationTool(""), - m_useExtrapolator(true), // Used to run with the old extrapolator setup - m_simulationTool(""), - m_particleFilter("") + BaseSimulationSvc(name, svc) { - // retrieve the simulation tool and the transport tool - declareProperty("IDSimulationTool", m_IDsimulationTool); - declareProperty("UseSimulationTool", m_useExtrapolator); - declareProperty("SimulationTool", m_simulationTool); - declareProperty("ParticleFilter", m_particleFilter); } -iFatras::FatrasSimSvc::~FatrasSimSvc() +iFatras::FatrasSimSvc::~FatrasSimSvc() {} /** framework methods */ StatusCode iFatras::FatrasSimSvc::initialize() { - ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ..."); - // retrieve simulation tool - if ( retrieveTool<ISF::IParticleProcessor>(m_IDsimulationTool).isFailure() ) - return StatusCode::FAILURE; - // retrieve simulation tool - if ( m_useExtrapolator ) { - if ( retrieveTool<ISF::IParticleProcessor>(m_simulationTool).isFailure() ) - return StatusCode::FAILURE; - } else ATH_MSG_INFO ( m_screenOutputPrefix << "Using only Extrapolation Engine Tools..."); - // retrieve particle filter - if ( !m_particleFilter.empty() && retrieveTool<ISF::IParticleFilter>(m_particleFilter).isFailure()) - return StatusCode::FAILURE; - - return StatusCode::SUCCESS; + ATH_CHECK (m_simulatorTool.retrieve()); + return StatusCode::SUCCESS; } /** framework methods */ StatusCode iFatras::FatrasSimSvc::finalize() { - ATH_MSG_INFO ( m_screenOutputPrefix << "Finalizing ..."); - return StatusCode::SUCCESS; + return StatusCode::SUCCESS; } StatusCode iFatras::FatrasSimSvc::setupEvent() -{ - ATH_MSG_DEBUG ( m_screenOutputPrefix << "setup Event"); - return StatusCode::SUCCESS; -} +{ + return m_simulatorTool->setupEventST(); // empty method +} -StatusCode iFatras::FatrasSimSvc::releaseEvent() -{ - ATH_MSG_DEBUG ( m_screenOutputPrefix << "release Event"); - return StatusCode::SUCCESS; +StatusCode iFatras::FatrasSimSvc::releaseEvent() +{ + return m_simulatorTool->releaseEventST(); // empty method } /** Simulation Call */ -StatusCode iFatras::FatrasSimSvc::simulate(const ISF::ISFParticle& isp) +StatusCode iFatras::FatrasSimSvc::simulate(const ISF::ISFParticle& isfp) { - - // give a screen output that you entered FatrasSimSvc - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Particle " << isp << " received for simulation." ); - - // now decide what to do with the particle - if (!m_particleFilter.empty() && !m_particleFilter->passFilter(isp)){ - ATH_MSG_VERBOSE( m_screenOutputPrefix << "ISFParticle " << isp << " does not pass selection. Ignore."); - return StatusCode::SUCCESS; - } - /** Process Particle from particle broker */ - ISF::ISFParticle* newIsp = (isp.nextGeoID()==AtlasDetDescr::fAtlasID || isp.nextGeoID()==AtlasDetDescr::fAtlasForward) ? m_IDsimulationTool->process(isp) : m_simulationTool->process(isp); - ATH_MSG_VERBOSE( m_screenOutputPrefix << "Simulation created : " << ( newIsp ? "" : "no") << " new particle"); - - if (newIsp) { - // new particle into the stack - m_particleBroker->push(newIsp, &isp); + ISF::ISFParticleContainer secondaries; + ATH_CHECK(m_simulatorTool->simulate(isfp, secondaries)); + if (not secondaries.empty()) { + for (auto particle : secondaries) { + m_particleBroker->push( particle, &isfp); + } } // Fatras call done return StatusCode::SUCCESS; } - - diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.h b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.h index c53e33fe61f..65dd73f77d2 100644 --- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.h +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.h @@ -11,63 +11,45 @@ // FrameWork includes #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" -#include "AthenaBaseComps/AthService.h" // ISF includes #include "ISF_Interfaces/BaseSimulationSvc.h" - -// DetectorDescription -#include "AtlasDetDescr/AtlasRegion.h" - -// Tracking includes -#include "TrkTrack/TrackCollection.h" - -namespace ISF { - class IParticleFilter; - class IParticleProcessor; - class ISFParticle; - class ITruthSvc; -} +#include "ISF_Interfaces/ISimulatorTool.h" namespace iFatras { /** @class FatrasSimSvc - + @author Andreas.Salzburger -at- cern.ch */ - class FatrasSimSvc : public ISF::BaseSimulationSvc { + class FatrasSimSvc : public ISF::BaseSimulationSvc { - public: + public: //** Constructor with parameters */ FatrasSimSvc( const std::string& name, ISvcLocator* pSvcLocator ); - + /** Destructor */ - virtual ~FatrasSimSvc(); - + virtual ~FatrasSimSvc(); + /** Athena algorithm's interface methods */ - StatusCode initialize(); - StatusCode finalize(); + virtual StatusCode initialize() override; + virtual StatusCode finalize() override; /** Simulation Call */ - StatusCode simulate(const ISF::ISFParticle& isp); - + virtual StatusCode simulate(const ISF::ISFParticle& isp) override; + /** Setup Event chain - in case of a begin-of event action is needed */ - StatusCode setupEvent(); + virtual StatusCode setupEvent() override; /** Release Event chain - in case of an end-of event action is needed */ - StatusCode releaseEvent(); + virtual StatusCode releaseEvent() override; - private: + private: /** Default constructor */ FatrasSimSvc(); - /** Track Creation & transport */ - ToolHandle<ISF::IParticleProcessor> m_IDsimulationTool; //!< Pointer to the transport AlgTool - bool m_useExtrapolator; //!< Boolean used to run with the old extrapolator setup - ToolHandle<ISF::IParticleProcessor> m_simulationTool; //!< Pointer to the transport AlgTool - ToolHandle<ISF::IParticleFilter> m_particleFilter; //!< the particle filter concerning kinematic cuts, etc. - - }; + PublicToolHandle<ISF::ISimulatorTool> m_simulatorTool{this, "SimulatorTool", "", ""}; + }; } diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.cxx new file mode 100644 index 00000000000..d9a2390fcf7 --- /dev/null +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.cxx @@ -0,0 +1,68 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#include "./FatrasSimTool.h" + +ISF::FatrasSimTool::FatrasSimTool(const std::string& type, const std::string& name, const IInterface* parent) + : BaseSimulatorTool(type, name, parent) +{ + declareProperty("UseSimulationTool", m_useExtrapolator); +} + +ISF::FatrasSimTool::~FatrasSimTool() { + +} + +StatusCode ISF::FatrasSimTool::initialize() { + + ATH_CHECK( BaseSimulatorTool::initialize() ); + + // retrieve simulation tool + ATH_CHECK( m_IDsimulationTool.retrieve() ); + + // retrieve simulation tool + if ( m_useExtrapolator ) { + ATH_CHECK( m_simulationTool.retrieve() ); + } + else { + m_simulationTool.disable(); + ATH_MSG_INFO ( "Using only Extrapolation Engine Tools..."); + } + + // retrieve particle filter + if ( !m_particleFilter.empty() ) { + ATH_CHECK( m_particleFilter.retrieve() ); + } + return StatusCode::SUCCESS; +} + +StatusCode ISF::FatrasSimTool::simulate( const ISFParticle& isp, ISFParticleContainer& secondaries) { + + // give a screen output that you entered FatrasSimSvc + ATH_MSG_VERBOSE( "Particle " << isp << " received for simulation." ); + + // now decide what to do with the particle + if (!m_particleFilter.empty() && !m_particleFilter->passFilter(isp)){ + ATH_MSG_VERBOSE( "ISFParticle " << isp << " does not pass selection. Ignore."); + return StatusCode::SUCCESS; + } + /** Process Particle from particle broker */ + ISF::ISFParticle* newIsp = (isp.nextGeoID()==AtlasDetDescr::fAtlasID || isp.nextGeoID()==AtlasDetDescr::fAtlasForward) ? m_IDsimulationTool->process(isp) : m_simulationTool->process(isp); + ATH_MSG_VERBOSE( "Simulation created : " << ( newIsp ? "" : "no") << " new particle"); + + if (newIsp) { + // new particle into the stack + secondaries.push_back(newIsp); + } + + // Fatras call done + return StatusCode::SUCCESS; +} + +// Act as particle broker for secondaries +void ISF::FatrasSimTool::push( ISF::ISFParticle * /*particle*/, const ISF::ISFParticle * /*parent*/ ) +{ + ATH_MSG_VERBOSE( "Caught secondary particle push() from Fatras" ); + return; +} diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.h b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.h new file mode 100644 index 00000000000..287c45125eb --- /dev/null +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.h @@ -0,0 +1,55 @@ +// -*- c++ -*- + +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef ISF_FATRASSIMTOOL_h +#define ISF_FATRASSIMTOOL_h + +//Gaudi +#include "GaudiKernel/ServiceHandle.h" +#include "GaudiKernel/ToolHandle.h" // for ToolHandleArray + +// ISF +#include "ISF_Interfaces/BaseSimulatorTool.h" +#include "ISF_Interfaces/IParticleFilter.h" +#include "ISF_Interfaces/IParticleProcessor.h" + +namespace ISF { + + class FatrasSimTool : public BaseSimulatorTool { + public: + FatrasSimTool( const std::string& type, const std::string& name, const IInterface* parent); + + ~FatrasSimTool(); + + virtual StatusCode initialize() override; + + virtual StatusCode simulate( const ISFParticle& isp, ISFParticleContainer& ) override; + + virtual StatusCode setupEvent() override { return StatusCode::SUCCESS; }; + + virtual StatusCode setupEventST() override { return setupEvent(); }; + + virtual StatusCode releaseEvent() override { return StatusCode::SUCCESS; }; + + virtual StatusCode releaseEventST() override { return releaseEvent(); }; + + virtual ISF:: SimulationFlavor simFlavor() const override { return ISF::Fatras; }; + + virtual void push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent ) override; + + private: + + /** Track Creation & transport */ + PublicToolHandle<ISF::IParticleProcessor> m_IDsimulationTool{this, "IDSimulationTool", "", ""}; //!< Pointer to the transport AlgTool + bool m_useExtrapolator{true}; //!< Boolean used to run with the old extrapolator setup + PublicToolHandle<ISF::IParticleProcessor> m_simulationTool{this, "SimulationTool", "", ""}; //!< Pointer to the transport AlgTool + PublicToolHandle<ISF::IParticleFilter> m_particleFilter{this, "ParticleFilter", "", ""}; //!< the particle filter concerning kinematic cuts, etc. + + }; + +} + +#endif diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/components/ISF_FatrasServices_entries.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/components/ISF_FatrasServices_entries.cxx index b7fba9de56c..070de08a974 100644 --- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/components/ISF_FatrasServices_entries.cxx +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/components/ISF_FatrasServices_entries.cxx @@ -1,4 +1,6 @@ #include "../FatrasSimSvc.h" +#include "../FatrasSimTool.h" DECLARE_COMPONENT( iFatras::FatrasSimSvc ) +DECLARE_COMPONENT( ISF::FatrasSimTool ) -- GitLab From ff5cc5e4ba44237d20296cbc7e7c8f8be03639b2 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Fri, 16 Nov 2018 16:52:29 +0100 Subject: [PATCH 022/135] Re-write of SimKernelMT to use SimulatorTools directly Former-commit-id: 32ae430b1ce53f0495d10b367686ee8df99e6f4f --- .../ISF_Algorithms/src/SimKernelMT.cxx | 161 +++- .../ISF_Core/ISF_Algorithms/src/SimKernelMT.h | 22 +- .../ISF_Algorithms/test/SimKernelMT_test.cxx | 909 ++++++++++-------- 3 files changed, 620 insertions(+), 472 deletions(-) diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx index 18ab0a62746..aa7b6ac32ff 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** @@ -25,8 +25,10 @@ ISF::SimKernelMT::SimKernelMT( const std::string& name, ISvcLocator* pSvcLocator m_inputEvgenKey(), m_outputTruthKey(), m_inputConverter("", name), - m_simSelectors(), - m_particleKillerSimulationSvc("", name) + m_simulationTools(), // FIXME make private + m_particleKillerTool(""), // FIXME make private + m_geoIDSvc("", name), + m_simSelectors() //FIXME make private { declareProperty("InputEvgenCollection", m_inputEvgenKey, @@ -39,15 +41,20 @@ ISF::SimKernelMT::SimKernelMT( const std::string& name, ISvcLocator* pSvcLocator "Input McEventCollection->ISFParticleContainer conversion service."); // routing tools - declareProperty("ForwardBeamPipeSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasForward] ); - declareProperty("InDetSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasID] ); + declareProperty("BeamPipeSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasForward] ); + declareProperty("IDSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasID] ); declareProperty("CaloSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasCalo] ); declareProperty("MSSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasMS] ); declareProperty("CavernSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasCavern] ); - declareProperty("ParticleKillerSimulationSvc", - m_particleKillerSimulationSvc, - "Simulation Service to use when particle is not selected by any SimulationSelector in the routing chain."); + declareProperty("SimulationTools", m_simulationTools ); + + declareProperty("ParticleKillerTool", + m_particleKillerTool, + "Simulation Tool to use when particle is not selected by any SimulationSelector in the routing chain."); + declareProperty("GeoIDSvc", + m_geoIDSvc, + "Since InputConverter doesn't set Geo ID yet, do it here"); } @@ -57,6 +64,32 @@ ISF::SimKernelMT::~SimKernelMT() { StatusCode ISF::SimKernelMT::initialize() { + ATH_CHECK( m_simulationTools.retrieve() ); + for (auto& curSimTool: m_simulationTools) { + if ( curSimTool ) { + const auto flavor = curSimTool->simFlavor(); + auto itr = m_simToolMap.find(flavor); + if (itr != m_simToolMap.end() ) + { + ATH_MSG_FATAL("Two ISimulatorTool instances (" << itr->second->name() << "," << curSimTool->name() << ") with the same flavor in this job!\n Check your configuration!"); + return StatusCode::FAILURE; + } + // New flavour add it to the map. + m_simToolMap[flavor] = &*curSimTool; + } + } + ATH_CHECK( m_particleKillerTool.retrieve() ); + const ISF::SimulationFlavor pkFlavor = m_particleKillerTool->simFlavor(); + if ( m_simToolMap.find(pkFlavor) == m_simToolMap.end() ) + { + m_simToolMap[pkFlavor] = &*m_particleKillerTool; + } + else + { + ATH_MSG_WARNING("Two ISimulatorTool instances (" << m_simToolMap.find(ISF::ParticleKiller)->second->name() << "," << m_particleKillerTool->name() << ") with the same flavor in this job!\n Check your configuration!"); + } + + ATH_MSG_INFO("The following Simulators will be used in this job: \t" << m_simulationTools << "\n" << m_particleKillerTool); // retrieve simulation selectors (i.e. the "routing chain") for ( auto& selectorsToolHandleArray: m_simSelectors ) { ATH_CHECK( selectorsToolHandleArray.retrieve() ); @@ -70,39 +103,42 @@ StatusCode ISF::SimKernelMT::initialize() { << " (GeoID=" << geoID << "): \t" << localSelectors); for (auto& selector: localSelectors) { - auto flavor = selector->simFlavor(); - auto itr = m_simSvcMap.find(flavor); - if (itr == m_simSvcMap.end() ) - { - // New flavour add it to the map. - m_simSvcMap[flavor] = &**(selector->simulator()); - continue; - } - if ( itr->second == &**(selector->simulator()) ) + const auto flavor = selector->simFlavor(); + auto itr = m_simToolMap.find(flavor); + if (itr == m_simToolMap.end() ) { - continue; // OK - multiple selectors can point to the same simulator + ATH_MSG_WARNING("Map from SimulationFlavor to SimulatorTool:"); + for(auto& entry: m_simToolMap) + { + ATH_MSG_WARNING("SimulationFlavor: " << entry.first << ", SimulatorTool Name: "<< entry.second->name()); + } + ATH_MSG_FATAL("No SimulationTool with flavor " << flavor << " expected by " << selector->name() << " found in this job!\n Check your configuration!"); + return StatusCode::FAILURE; } - ATH_MSG_FATAL("Two ISimulationSvc instances with the same flavor in this job!\n Check your configuration!"); - return StatusCode::FAILURE; - } + } } ATH_CHECK( m_inputEvgenKey.initialize() ); ATH_CHECK( m_outputTruthKey.initialize() ); - ATH_CHECK( m_particleKillerSimulationSvc.retrieve() ); - if ( m_simSvcMap.find(ISF::ParticleKiller) == m_simSvcMap.end() ) - { - m_simSvcMap[ISF::ParticleKiller] = &*m_particleKillerSimulationSvc; - } ATH_CHECK( m_inputConverter.retrieve() ); + ATH_CHECK( m_geoIDSvc.retrieve() ); + return StatusCode::SUCCESS; } StatusCode ISF::SimKernelMT::execute() { + // Release the event from all simulators (TODO: make the tools do this) + for (auto& curSimTool: m_simulationTools) { + if ( curSimTool ) { + ATH_CHECK(curSimTool->setupEvent()); + ATH_MSG_DEBUG( "Event setup done for " << curSimTool->name() ); + } + } + SG::ReadHandle<McEventCollection> inputEvgen(m_inputEvgenKey); if (!inputEvgen.isValid()) { ATH_MSG_FATAL("Unable to read input GenEvent collection '" << inputEvgen.key() << "'"); @@ -117,19 +153,62 @@ StatusCode ISF::SimKernelMT::execute() { ISFParticleContainer simParticles; // particles for ISF simulation bool isPileup = false; ATH_CHECK( m_inputConverter->convert(*outputTruth, simParticles, isPileup) ); - // loop until there are no more particles to simulate - while ( simParticles.size() ) { - ISFParticle* curParticle = simParticles.back(); - simParticles.pop_back(); - auto& simSvc = identifySimulator(*curParticle); - - ATH_CHECK( simSvc.simulate( std::move(*curParticle) ).isSuccess() ); - // TODO: this is work in progress and newSecondaries should actually be - // returned by the simulate() call above - ISFParticleContainer newSecondaries; - simParticles.splice( end(simParticles), std::move(newSecondaries) ); + // loop until there are no more particles to simulate + while (simParticles.size() ) { + ISF::ConstISFParticleVector particles{}; + ISimulatorTool* lastSimulator{}; + while ( simParticles.size() ) { + auto particlePtr = simParticles.front(); + ISFParticle& curParticle(*particlePtr); + simParticles.pop_front(); + + // Get the geo ID for the particle (should happen in inputConverter really) + /*AtlasDetDescr::AtlasRegion geoID =*/ m_geoIDSvc->identifyAndRegNextGeoID(curParticle); + + auto& simTool = identifySimulator(curParticle); + if (&simTool==lastSimulator){ particles.push_back(particlePtr); } + else { + if (not particles.empty()) { + ISFParticleContainer newSecondaries; + //ATH_CHECK( simTool.simulate( std::move(curParticle), newSecondaries ) ); + ATH_CHECK( simTool.simulateVector( particles, newSecondaries ) ); + // add any returned ISFParticles to the list of particles to be simulated + simParticles.splice( end(simParticles), std::move(newSecondaries) ); + // delete simulated particles + for (auto usedParticle: particles) { + ISF::ISFParticle *curPart = const_cast<ISF::ISFParticle*>(usedParticle); //FIXME const_cast badness + delete curPart; + } + particles.clear(); + } + particles.push_back(particlePtr); + lastSimulator=&simTool; + } + } + //clean-up unsimulated particles + if (not particles.empty()) { + ISFParticleContainer newSecondaries; + if(!lastSimulator) { ATH_MSG_FATAL("Particles with no assigned simulator. Bail!"); return StatusCode::FAILURE; } + ATH_CHECK( lastSimulator->simulateVector( particles, newSecondaries ) ); + // add any returned ISFParticles to the list of particles to be simulated + simParticles.splice( end(simParticles), std::move(newSecondaries) ); + // delete simulated particles + for (auto usedParticle: particles) { + ISF::ISFParticle *curPart = const_cast<ISF::ISFParticle*>(usedParticle); //FIXME const_cast badness + delete curPart; + } + particles.clear(); + } } + // Release the event from all simulators (TODO: make the tools do this) + for (auto& curSimTool: m_simulationTools) { + if ( curSimTool ) { + ATH_CHECK(curSimTool->releaseEvent()); + ATH_MSG_DEBUG( "releaseEvent() completed for " << curSimTool->name() ); + } + } + return StatusCode::SUCCESS; } @@ -140,18 +219,18 @@ StatusCode ISF::SimKernelMT::finalize() { /// Returns the simulator to use for the given particle -ISF::ISimulationSvc& ISF::SimKernelMT::identifySimulator(const ISF::ISFParticle& particle) { +ISF::ISimulatorTool& ISF::SimKernelMT::identifySimulator(const ISF::ISFParticle& particle) const { AtlasDetDescr::AtlasRegion geoID = particle.nextGeoID(); auto& localSelectors = m_simSelectors[geoID]; for (auto& selector: localSelectors) { bool selected = selector->selfSelect(particle); if (selected) { - return *m_simSvcMap.at(selector->simFlavor()); + return *m_simToolMap.at(selector->simFlavor()); } } ATH_MSG_WARNING("No simulator found for particle (" << particle << ")." - << " Will send it to " << m_particleKillerSimulationSvc); - return *m_simSvcMap.at(ISF::ParticleKiller); + << " Will send it to " << m_particleKillerTool->name()); + return *m_particleKillerTool; } diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h index c8ef7495fe9..37139171184 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** @@ -13,8 +13,10 @@ // Interfaces to ISF Tools and Services #include "ISF_Interfaces/IInputConverter.h" -#include "ISF_Interfaces/ISimulationSvc.h" +#include "ISF_Interfaces/ISimulatorTool.h" +#include "ISF_Interfaces/IGeoIDSvc.h" #include "ISF_Interfaces/ISimulationSelector.h" +#include "ISF_Interfaces/SimulationFlavor.h" // DetectorDescription #include "AtlasDetDescr/AtlasRegion.h" @@ -30,7 +32,7 @@ // STL includes #include <array> - +#include <map> // forward declarations namespace ISFTesting { @@ -74,7 +76,7 @@ public: private: /// Returns the simulator to use for the given particle - ISimulationSvc& identifySimulator(const ISF::ISFParticle& particle); + ISimulatorTool& identifySimulator(const ISF::ISFParticle& particle) const; /// Input Generator Truth collection SG::ReadHandleKey<McEventCollection> m_inputEvgenKey; @@ -84,14 +86,20 @@ private: /// Input converter service (from Generator->ISF particle types) ServiceHandle<IInputConverter> m_inputConverter; + /// Simulation Tools + ToolHandleArray<ISimulatorTool> m_simulationTools; + + /// When no appropriate simulator can be found for a given particle, the particle is sent to this "particle killer": + ToolHandle<ISimulatorTool> m_particleKillerTool; + + ServiceHandle<IGeoIDSvc> m_geoIDSvc; + /// The simulation selectors defining the "routing chain" std::array<ToolHandleArray<ISimulationSelector>, AtlasDetDescr::fNumAtlasRegions> m_simSelectors; /// Map of the simulation flavours used in this job to the corresponding Simulation Services - std::map<ISF::SimulationFlavor, ISimulationSvc*> m_simSvcMap; + std::map<ISF::SimulationFlavor, ISimulatorTool*> m_simToolMap; - /// When no appropriate simulator can be found for a given particle, the particle is sent to this "particle killer": - ServiceHandle<ISimulationSvc> m_particleKillerSimulationSvc; }; } // namespace ISF diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx index b99fd796743..94333ecf1a8 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** @@ -36,57 +36,57 @@ namespace ISFTesting { -// Globally used services and tools -// -const std::string particleKillerSimulationSvcName = "ISF::ParticleKillerSimSvc/ISF_ParticleKillerSvc"; -const std::string fullInputConverter = "ISF::InputConverter/InputConverter"; + // Globally used services and tools + // + const std::string particleKillerSimulatorToolName = "ISF::ParticleKillerSimTool/ISF__ParticleKillerSimTool"; + const std::string fullInputConverter = "ISF::InputConverter/InputConverter"; -// Athena Service to mock an InputConverter -// -const std::string mockInputConverterName = "ISFTesting::MockInputConverter/MyTestInputConverter"; + // Athena Service to mock an InputConverter + // + const std::string mockInputConverterName = "ISFTesting::MockInputConverter/MyTestInputConverter"; -class MockInputConverter : public extends<AthService, ISF::IInputConverter> { + class MockInputConverter : public extends<AthService, ISF::IInputConverter> { -public: - MockInputConverter(const std::string& name, ISvcLocator* svc) - : base_class(name,svc) - { }; - virtual ~MockInputConverter() { }; + public: + MockInputConverter(const std::string& name, ISvcLocator* svc) + : base_class(name,svc) + { }; + virtual ~MockInputConverter() { }; - MOCK_METHOD0(finalize, StatusCode()); - MOCK_CONST_METHOD3(convert, StatusCode(const McEventCollection&, - ISF::ISFParticleContainer&, - bool)); - MOCK_CONST_METHOD3(convertHepMCToG4Event, StatusCode(McEventCollection&, - G4Event*&, - bool)); - MOCK_CONST_METHOD2(ISF_to_G4Event, G4Event*(const std::vector<const ISF::ISFParticle*>&, - HepMC::GenEvent*)); + MOCK_METHOD0(finalize, StatusCode()); + MOCK_CONST_METHOD3(convert, StatusCode(const McEventCollection&, + ISF::ISFParticleContainer&, + bool)); + MOCK_CONST_METHOD3(convertHepMCToG4Event, StatusCode(McEventCollection&, + G4Event*&, + bool)); + MOCK_CONST_METHOD2(ISF_to_G4Event, G4Event*(const std::vector<const ISF::ISFParticle*>&, + HepMC::GenEvent*)); -}; // MockInputConverter class + }; // MockInputConverter class -DECLARE_COMPONENT( MockInputConverter ) + DECLARE_COMPONENT( MockInputConverter ) -// Athena Service to mock an SimulationService -// -const std::string mockSimulationSvcName = "ISFTesting::MockSimulationSvc/MyTestSimulationSvc"; + // Athena Service to mock a GeoIDSvc + // + const std::string mockGeoIDSvcName = "ISFTesting::MockGeoIDSvc/MyMockGeoIDSvc"; -class MockSimulationSvc : public ISF::BaseSimulationSvc { + class MockGeoIDSvc : public extends<AthService, ISF::IGeoIDSvc> { -public: - MockSimulationSvc(const std::string& name, ISvcLocator* svc) - : ISF::BaseSimulationSvc(name, svc) - { }; - virtual ~MockSimulationSvc() { }; + public: + MockGeoIDSvc(const std::string& name, ISvcLocator* svc) + : base_class(name,svc) + { }; + MOCK_METHOD0(initialize, StatusCode()); + MOCK_METHOD0(finalize, StatusCode()); - MOCK_METHOD0(finalize, StatusCode()); - MOCK_METHOD1(simulate, StatusCode(const ISF::ISFParticle&)); - MOCK_METHOD0(setupEvent, StatusCode()); - MOCK_METHOD0(releaseEvent, StatusCode()); -}; // MockSimulationSvc class + MOCK_CONST_METHOD2(inside, ISF::InsideType(const Amg::Vector3D &, AtlasDetDescr::AtlasRegion)); + MOCK_CONST_METHOD1(identifyGeoID, AtlasDetDescr::AtlasRegion(const Amg::Vector3D &)); + MOCK_CONST_METHOD2(identifyNextGeoID, AtlasDetDescr::AtlasRegion(const Amg::Vector3D &, const Amg::Vector3D &)); + }; -DECLARE_COMPONENT( MockSimulationSvc ) + DECLARE_COMPONENT( MockGeoIDSvc ) // MockGeoIDSvc class // Athena Tool to mock a SimulationSelector @@ -97,8 +97,7 @@ class MockSimulationSelector : public extends<AthAlgTool, ISF::ISimulationSelect public: MockSimulationSelector(const std::string& type, const std::string& name, const IInterface* svclocator) - : base_class(type, name, svclocator), - m_simulator(mockSimulationSvcName, name) + : base_class(type, name, svclocator) { }; virtual ~MockSimulationSelector() { }; @@ -108,27 +107,57 @@ public: // dummy methods implementing in pure virtual interface methods (to make class non-abstract) StatusCode initialize() { - ATH_CHECK( m_simulator.retrieve() ); - return StatusCode::SUCCESS; - }; - ServiceHandle<ISF::ISimulationSvc>* simulator() { return &m_simulator; }; + ATH_MSG_INFO ("initializing MockSimulationSelector: " << name()); + return StatusCode::SUCCESS; }; + ServiceHandle<ISF::ISimulationSvc>* simulator() { return nullptr; }; bool isDynamic() { return false; }; - ISF::SimSvcID simSvcID() { return m_simulator->simSvcID(); }; - ISF::SimulationFlavor simFlavor() { return ISF::UndefinedSim; }; + ISF::SimSvcID simSvcID() { return 0; }; + virtual ISF::SimulationFlavor simFlavor() override { return ISF::Fatras; } void initializeSelector() { }; void beginEvent() { }; void endEvent() { }; void update(const ISF::ISFParticle& ) { }; bool selfSelect(const ISF::ISFParticle& particle) { return passSelectorCuts(particle); }; -private: - ServiceHandle<ISF::ISimulationSvc> m_simulator; //!< simulation service assigned to a single advisor - }; // MockSimulationSelector class DECLARE_COMPONENT( MockSimulationSelector ) +// Athena Tool to mock a SimulatorTool +// +const std::string mockSimulatorToolName = "ISFTesting::MockSimulatorTool/MyTestSimulatorTool"; + +class MockSimulatorTool : public extends<AthAlgTool, ISF::ISimulatorTool> { + +public: + MockSimulatorTool(const std::string& type, const std::string& name, const IInterface* svclocator) + : base_class(type, name, svclocator) + { + }; + virtual ~MockSimulatorTool() { }; + + MOCK_METHOD0(finalize, StatusCode()); + MOCK_METHOD0(setupEvent, StatusCode()); + MOCK_METHOD2(simulate, StatusCode(const ISF::ISFParticle&, ISF::ISFParticleContainer&)); + MOCK_METHOD2(simulateVector, StatusCode(const ISF::ConstISFParticleVector&, ISF::ISFParticleContainer&)); + MOCK_METHOD0(releaseEvent, StatusCode()); + MOCK_CONST_METHOD1(bid, int(const ISF::ISFParticle&)); + + // dummy methods implementing in pure virtual interface methods (to make class non-abstract) + virtual StatusCode initialize() override { + ATH_MSG_INFO ("initializing MockSimulatorTool: " << name()); + return StatusCode::SUCCESS; + }; + virtual StatusCode setupEventST() override { return StatusCode::FAILURE; }; + virtual StatusCode releaseEventST() override { return StatusCode::FAILURE; }; + virtual ISF::SimulationFlavor simFlavor() const override { return ISF::Fatras; }; + +}; // MockSimulatorTool + +DECLARE_COMPONENT( MockSimulatorTool ) + + // Gaudi Test fixture that provides a clean Gaudi environment for // each individual test case class GaudiFixture { @@ -187,462 +216,494 @@ protected: }; -// Test fixture specifically for SimKernelMT AthAlgorithm -class SimKernelMT_test: public ::testing::Test, public GaudiFixture { + // Test fixture specifically for SimKernelMT AthAlgorithm + class SimKernelMT_test: public ::testing::Test, public GaudiFixture { -protected: - virtual void SetUp() override { - // the tested AthAlgorithm - m_alg = new ISF::SimKernelMT{"SimKernelMT", m_svcLoc}; - EXPECT_TRUE( m_alg->setProperty("ParticleKillerSimulationSvc", particleKillerSimulationSvcName).isSuccess() ); + protected: + virtual void SetUp() override { + // the tested AthAlgorithm + m_alg = new ISF::SimKernelMT{"SimKernelMT", m_svcLoc}; + EXPECT_TRUE( m_alg->setProperty("ParticleKillerTool", particleKillerSimulatorToolName).isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("GeoIDSvc", mockGeoIDSvcName).isSuccess() ); - // retrieve mocked Athena components - m_mockInputConverter = retrieveService<MockInputConverter>(mockInputConverterName); - m_mockSimulationSvc = retrieveService<MockSimulationSvc>(mockSimulationSvcName); - m_mockSimulationSelector = retrieveTool<MockSimulationSelector>(mockSimulationSelectorName); - } + // retrieve mocked Athena components + m_mockGeoIDSvc = retrieveService<MockGeoIDSvc>(mockGeoIDSvcName); + m_mockInputConverter = retrieveService<MockInputConverter>(mockInputConverterName); + m_mockSimulatorTool = retrieveTool<MockSimulatorTool>(mockSimulatorToolName); + m_mockSimulationSelector = retrieveTool<MockSimulationSelector>(mockSimulationSelectorName); + } - virtual void TearDown() override { - // let the Gaudi ServiceManager finalize all services - ASSERT_TRUE( m_svcMgr->finalize().isSuccess() ); + virtual void TearDown() override { + // let the Gaudi ServiceManager finalize all services + ASSERT_TRUE( m_svcMgr->finalize().isSuccess() ); - // release tested AthAlgorithm - delete m_alg; - // release various service instances - delete m_mockInputConverter; - delete m_mockSimulationSvc; - } + // release tested AthAlgorithm + delete m_alg; + // release various service instances + delete m_mockGeoIDSvc; + delete m_mockInputConverter; + } - template<typename T> - T* retrieveService(const std::string& name) { - T* service = nullptr; - SmartIF<IService>& serviceSmartPointer = m_svcLoc->service(name); - service = dynamic_cast<T*>(serviceSmartPointer.get()); - EXPECT_NE(nullptr, service); - if(!service) { - return nullptr; + template<typename T> + T* retrieveService(const std::string& name) { + T* service = nullptr; + SmartIF<IService>& serviceSmartPointer = m_svcLoc->service(name); + service = dynamic_cast<T*>(serviceSmartPointer.get()); + EXPECT_NE(nullptr, service); + if(!service) { + return nullptr; + } + EXPECT_TRUE( service->setProperties().isSuccess() ); + EXPECT_TRUE( service->configure().isSuccess() ); + EXPECT_TRUE( m_svcMgr->addService(service).isSuccess() ); + // assert that finalize() gets called once per test case + EXPECT_CALL( *service, finalize() ) + .Times(1) + .WillOnce(::testing::Return(StatusCode::SUCCESS)); + + return service; } - EXPECT_TRUE( service->setProperties().isSuccess() ); - EXPECT_TRUE( service->configure().isSuccess() ); - EXPECT_TRUE( m_svcMgr->addService(service).isSuccess() ); - // assert that finalize() gets called once per test case - EXPECT_CALL( *service, finalize() ) - .Times(1) - .WillOnce(::testing::Return(StatusCode::SUCCESS)); - return service; - } + template<typename T> + T* retrieveTool(const std::string& name) { + IAlgTool* toolInterface = nullptr; + EXPECT_TRUE( m_toolSvc->retrieveTool(name, toolInterface).isSuccess() ); + EXPECT_NE(nullptr, toolInterface); + + T* tool = dynamic_cast<T*>(toolInterface); + EXPECT_NE(nullptr, tool); + if(!tool) { + return nullptr; + } + + EXPECT_TRUE( tool->setProperties().isSuccess() ); + EXPECT_TRUE( tool->configure().isSuccess() ); - template<typename T> - T* retrieveTool(const std::string& name) { - IAlgTool* toolInterface = nullptr; - EXPECT_TRUE( m_toolSvc->retrieveTool(name, toolInterface).isSuccess() ); - EXPECT_NE(nullptr, toolInterface); + // assert that finalize() gets called once per test case + EXPECT_CALL( *tool, finalize() ) + .Times(1) + .WillOnce(::testing::Return(StatusCode::SUCCESS)); - T* tool = dynamic_cast<T*>(toolInterface); - EXPECT_NE(nullptr, tool); - if(!tool) { - return nullptr; + return tool; } - EXPECT_TRUE( tool->setProperties().isSuccess() ); - EXPECT_TRUE( tool->configure().isSuccess() ); + void setEmptyInputOutputCollections() { + auto inputEvgen = std::make_unique<McEventCollection>(); + SG::WriteHandle<McEventCollection> inputEvgenHandle{"emptyTestInputEvgenCollection"}; + inputEvgenHandle.record( std::move(inputEvgen) ); - // assert that finalize() gets called once per test case - EXPECT_CALL( *tool, finalize() ) - .Times(1) - .WillOnce(::testing::Return(StatusCode::SUCCESS)); + EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "emptyTestInputEvgenCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); + } - return tool; - } + // wrappers for private methods + // NB: This works because CollectionMerger_test is a friend of the tested + // CollectionMerger class + // + template<typename ...Args> + ISF::ISimulatorTool& identifySimulator(Args&... args) { + return m_alg->identifySimulator(std::forward<Args>(args)...); + } - void setEmptyInputOutputCollections() { - auto inputEvgen = std::make_unique<McEventCollection>(); - SG::WriteHandle<McEventCollection> inputEvgenHandle{"emptyTestInputEvgenCollection"}; - inputEvgenHandle.record( std::move(inputEvgen) ); + // the tested AthAlgorithm + ISF::SimKernelMT* m_alg; - EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "emptyTestInputEvgenCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); - } + // mocked Athena components + ISFTesting::MockGeoIDSvc* m_mockGeoIDSvc = nullptr; + ISFTesting::MockInputConverter* m_mockInputConverter = nullptr; + ISFTesting::MockSimulatorTool* m_mockSimulatorTool = nullptr; + ISFTesting::MockSimulationSelector* m_mockSimulationSelector = nullptr; - // wrappers for private methods - // NB: This works because CollectionMerger_test is a friend of the tested - // CollectionMerger class - // - template<typename ...Args> - ISF::ISimulationSvc& identifySimulator(Args&... args) { - return m_alg->identifySimulator(std::forward<Args>(args)...); - } + }; // SimKernelMT_test fixture - // the tested AthAlgorithm - ISF::SimKernelMT* m_alg; - // mocked Athena components - ISFTesting::MockInputConverter* m_mockInputConverter = nullptr; - ISFTesting::MockSimulationSvc* m_mockSimulationSvc = nullptr; - ISFTesting::MockSimulationSelector* m_mockSimulationSelector = nullptr; + // checks if the two given HepMC::GenEvent instances are equal. + // returns true if they are equal, false otherwise + bool GenEventsEq(const HepMC::GenEvent& a, const HepMC::GenEvent& b) { + HepMC::GenEvent::vertex_const_iterator aVertexIterator = a.vertices_begin(); + HepMC::GenEvent::vertex_const_iterator bVertexIterator = b.vertices_begin(); + const auto& aVertexIteratorEnd = a.vertices_end(); + const auto& bVertexIteratorEnd = b.vertices_end(); -}; // SimKernelMT_test fixture + bool eventsAreEqual = true; + do { + bool endReached = (aVertexIterator == aVertexIteratorEnd) || + (bVertexIterator == bVertexIteratorEnd); + if (endReached) { + break; + } -// checks if the two given HepMC::GenEvent instances are equal. -// returns true if they are equal, false otherwise -bool GenEventsEq(const HepMC::GenEvent& a, const HepMC::GenEvent& b) { - HepMC::GenEvent::vertex_const_iterator aVertexIterator = a.vertices_begin(); - HepMC::GenEvent::vertex_const_iterator bVertexIterator = b.vertices_begin(); - const auto& aVertexIteratorEnd = a.vertices_end(); - const auto& bVertexIteratorEnd = b.vertices_end(); + eventsAreEqual = **aVertexIterator == **bVertexIterator; - bool eventsAreEqual = true; + ++aVertexIterator; + ++bVertexIterator; + } while(eventsAreEqual); - do { - bool endReached = (aVertexIterator == aVertexIteratorEnd) || - (bVertexIterator == bVertexIteratorEnd); - if (endReached) { - break; - } + return eventsAreEqual; + } - eventsAreEqual = **aVertexIterator == **bVertexIterator; - ++aVertexIterator; - ++bVertexIterator; - } while(eventsAreEqual); + // matcher to check if the given McEventCollection contains one HepMC::GenEvent that's + // equal to the given expectedGenEvent + MATCHER_P(ContainsOneGenEventEq, expectedGenEvent, "is equal to expected HepMC::GenEvent") { + const auto& actualMcEventCollection = arg; - return eventsAreEqual; -} + size_t expectedCollectionSize = 1; + auto actualCollectionSize = actualMcEventCollection.size(); + if (expectedCollectionSize!=actualCollectionSize) { + return false; + } + size_t firstEventNum = 0; + const auto* actualGenEvent = actualMcEventCollection[firstEventNum]; + return GenEventsEq(expectedGenEvent, *actualGenEvent); + } -// matcher to check if the given McEventCollection contains one HepMC::GenEvent that's -// equal to the given expectedGenEvent -MATCHER_P(ContainsOneGenEventEq, expectedGenEvent, "is equal to expected HepMC::GenEvent") { - const auto& actualMcEventCollection = arg; - size_t expectedCollectionSize = 1; - auto actualCollectionSize = actualMcEventCollection.size(); - if (expectedCollectionSize!=actualCollectionSize) { - return false; + TEST_F(SimKernelMT_test, unsetInputOutputCollections_expectInitializeFailure) { + ASSERT_TRUE( m_alg->initialize().isFailure() ); } - size_t firstEventNum = 0; - const auto* actualGenEvent = actualMcEventCollection[firstEventNum]; - return GenEventsEq(expectedGenEvent, *actualGenEvent); -} + TEST_F(SimKernelMT_test, unsetInputCollection_expectInitializeFailure) { + EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); -TEST_F(SimKernelMT_test, unsetInputOutputCollections_expectInitializeFailure) { - ASSERT_TRUE( m_alg->initialize().isFailure() ); -} + ASSERT_TRUE( m_alg->initialize().isFailure() ); + } -TEST_F(SimKernelMT_test, unsetInputCollection_expectInitializeFailure) { - EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); + TEST_F(SimKernelMT_test, unsetOutputCollection_expectInitializeFailure) { + EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); - ASSERT_TRUE( m_alg->initialize().isFailure() ); -} + ASSERT_TRUE( m_alg->initialize().isFailure() ); + } -TEST_F(SimKernelMT_test, unsetOutputCollection_expectInitializeFailure) { - EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); + TEST_F(SimKernelMT_test, unsetInputConverter_expectInitializeFailure) { + EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); - ASSERT_TRUE( m_alg->initialize().isFailure() ); -} + ASSERT_TRUE( m_alg->initialize().isFailure() ); + } -TEST_F(SimKernelMT_test, unsetInputConverter_expectInitializeFailure) { - EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); + TEST_F(SimKernelMT_test, allPropertiesSet_expectInitializeSuccess) { + EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "SomeRandomInputCollectionKey").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "SomeRandomOutputCollectionKey").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); - ASSERT_TRUE( m_alg->initialize().isFailure() ); -} + ASSERT_TRUE( m_alg->initialize().isSuccess() ); + } -TEST_F(SimKernelMT_test, allPropertiesSet_expectInitializeSuccess) { - EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "SomeRandomInputCollectionKey").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "SomeRandomOutputCollectionKey").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); + TEST_F(SimKernelMT_test, nonexistingInputOutputCollections_expectFailure) { + EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "DoesntExistInputCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "DoesntExistOutputCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); - ASSERT_TRUE( m_alg->initialize().isSuccess() ); -} + ASSERT_TRUE( m_alg->initialize().isSuccess() ); + ASSERT_TRUE( m_alg->execute().isFailure() ); + } -TEST_F(SimKernelMT_test, nonexistingInputOutputCollections_expectFailure) { - EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "DoesntExistInputCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "DoesntExistOutputCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); + TEST_F(SimKernelMT_test, nonexistingOutputCollection_expectCreationOfOutputCollection) { + EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); - ASSERT_TRUE( m_alg->initialize().isSuccess() ); - ASSERT_TRUE( m_alg->execute().isFailure() ); -} + auto inputEvgen = std::make_unique<McEventCollection>(); + SG::WriteHandle<McEventCollection> testInputEvgenHandle{"testInputEvgenCollection"}; + testInputEvgenHandle.record( std::move(inputEvgen) ); + ASSERT_TRUE( m_alg->initialize().isSuccess() ); + ASSERT_TRUE( m_alg->execute().isSuccess() ); + SG::ReadHandle<McEventCollection> testOutputTruthHandle("testOutputTruthCollection"); + ASSERT_TRUE( testOutputTruthHandle.isValid() ); + } -TEST_F(SimKernelMT_test, nonexistingOutputCollection_expectCreationOfOutputCollection) { - EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); - auto inputEvgen = std::make_unique<McEventCollection>(); - SG::WriteHandle<McEventCollection> testInputEvgenHandle{"testInputEvgenCollection"}; - testInputEvgenHandle.record( std::move(inputEvgen) ); + TEST_F(SimKernelMT_test, emptyInputCollection_expectSuccess) { + auto inputEvgen = std::make_unique<McEventCollection>(); + auto* genEvent = new HepMC::GenEvent{}; - ASSERT_TRUE( m_alg->initialize().isSuccess() ); - ASSERT_TRUE( m_alg->execute().isSuccess() ); - SG::ReadHandle<McEventCollection> testOutputTruthHandle("testOutputTruthCollection"); - ASSERT_TRUE( testOutputTruthHandle.isValid() ); -} + inputEvgen->push_back(genEvent); + SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"}; + inputEvgenHandle.record( std::move(inputEvgen) ); + EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); + EXPECT_TRUE( m_alg->initialize().isSuccess() ); -TEST_F(SimKernelMT_test, emptyInputCollection_expectSuccess) { - auto inputEvgen = std::make_unique<McEventCollection>(); - auto* genEvent = new HepMC::GenEvent{}; + ASSERT_TRUE( m_alg->execute().isSuccess() ); + } - inputEvgen->push_back(genEvent); - SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"}; - inputEvgenHandle.record( std::move(inputEvgen) ); - EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); - EXPECT_TRUE( m_alg->initialize().isSuccess() ); + TEST_F(SimKernelMT_test, filledInputCollection_expectFullConversion) { + auto* genEvent = new HepMC::GenEvent{}; + HepMC::GenParticle* genPart = new HepMC::GenParticle{}; + HepMC::FourVector mom{12.3, 45.6, 78.9, 0.12}; + HepMC::GenParticle* genPart2 = new HepMC::GenParticle{mom, + 11, // pdg id (e-) + 1 // status + }; + auto* genVertex = new HepMC::GenVertex{}; + genVertex->add_particle_out(genPart); + genVertex->add_particle_out(genPart2); + genEvent->add_vertex(genVertex); - ASSERT_TRUE( m_alg->execute().isSuccess() ); -} + auto inputEvgen = std::make_unique<McEventCollection>(); + inputEvgen->push_back(genEvent); + SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"}; + inputEvgenHandle.record( std::move(inputEvgen) ); + EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); + EXPECT_TRUE( m_alg->initialize().isSuccess() ); -TEST_F(SimKernelMT_test, filledInputCollection_expectFullConversion) { - auto* genEvent = new HepMC::GenEvent{}; - HepMC::GenParticle* genPart = new HepMC::GenParticle{}; - HepMC::FourVector mom{12.3, 45.6, 78.9, 0.12}; - HepMC::GenParticle* genPart2 = new HepMC::GenParticle{mom, - 11, // pdg id (e-) - 1 // status - }; - auto* genVertex = new HepMC::GenVertex{}; - genVertex->add_particle_out(genPart); - genVertex->add_particle_out(genPart2); - genEvent->add_vertex(genVertex); - - auto inputEvgen = std::make_unique<McEventCollection>(); - inputEvgen->push_back(genEvent); - SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"}; - inputEvgenHandle.record( std::move(inputEvgen) ); - - EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() ); - EXPECT_TRUE( m_alg->initialize().isSuccess() ); - - ASSERT_NE( m_mockInputConverter, nullptr ); - EXPECT_CALL( *m_mockInputConverter, convert(ContainsOneGenEventEq(*genEvent), - ::testing::_, - ::testing::_) ) + ASSERT_NE( m_mockInputConverter, nullptr ); + EXPECT_CALL( *m_mockInputConverter, convert(ContainsOneGenEventEq(*genEvent), + ::testing::_, + ::testing::_) ) .WillOnce(::testing::Return(StatusCode::SUCCESS)); - ASSERT_TRUE( m_alg->execute().isSuccess() ); -} + ASSERT_TRUE( m_alg->execute().isSuccess() ); + } -TEST_F(SimKernelMT_test, emptyInputEvgenCollection_expectInitializeSuccess) { - this->setEmptyInputOutputCollections(); - EXPECT_TRUE( m_alg->initialize().isSuccess() ); + TEST_F(SimKernelMT_test, emptyInputEvgenCollection_expectInitializeSuccess) { + this->setEmptyInputOutputCollections(); + EXPECT_TRUE( m_alg->initialize().isSuccess() ); - ASSERT_TRUE( m_alg->execute().isSuccess() ); -} + ASSERT_TRUE( m_alg->execute().isSuccess() ); + } -TEST_F(SimKernelMT_test, emptySimulationSelectors_expectInitializeSuccess) { - EXPECT_TRUE( m_alg->setProperty("ForwardBeamPipeSimulationSelectors", "[]").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "[]").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "[]").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "[]").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "[]").isSuccess() ); - this->setEmptyInputOutputCollections(); + TEST_F(SimKernelMT_test, specifyASimulationTool_expectInitializeSuccess) { + EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() ); + this->setEmptyInputOutputCollections(); + EXPECT_TRUE( m_alg->initialize().isSuccess() ); - ASSERT_TRUE( m_alg->initialize().isSuccess() ); -} + ASSERT_TRUE( m_alg->execute().isSuccess() ); + } -TEST_F(SimKernelMT_test, filledSimulationSelectors_expectInitializeSuccess) { - EXPECT_TRUE( m_alg->setProperty("ForwardBeamPipeSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); //mockSimulationSelectorName); - EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); - this->setEmptyInputOutputCollections(); + TEST_F(SimKernelMT_test, emptySimulationSelectors_expectInitializeSuccess) { + EXPECT_TRUE( m_alg->setProperty("BeamPipeSimulationSelectors", "[]").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "[]").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "[]").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "[]").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "[]").isSuccess() ); + this->setEmptyInputOutputCollections(); - ASSERT_TRUE( m_alg->initialize().isSuccess() ); -} + ASSERT_TRUE( m_alg->initialize().isSuccess() ); + } -TEST_F(SimKernelMT_test, identifySimulator_particleInsideInnerDetectorAndInnerDetectorSimulationSelectorAcceptingParticle_expectInnerDetectorSimulatorReturned) { - EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); - this->setEmptyInputOutputCollections(); - EXPECT_TRUE( m_alg->initialize().isSuccess() ); - - Amg::Vector3D position(0., 1., 0.); // close to the origin - Amg::Vector3D momentum(1., 2., 3.); - ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasID, ISF::fUndefinedSimID); - const ISF::ISFParticle particle(position, - momentum, - 123.*Gaudi::Units::GeV, // mass - -1., // charge - 11, // PDG code - 0.2*Gaudi::Units::second, // time - particleOrigin, - 123 // BCID - ); - - ASSERT_NE( m_mockSimulationSelector, nullptr ); - EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) ) - .WillOnce(::testing::Return(true)); - - const auto* actualSimulationSvcPtr = &this->identifySimulator(particle); - - const auto* expectedSimulationSvcPtr = m_mockSimulationSvc; - ASSERT_EQ(expectedSimulationSvcPtr, actualSimulationSvcPtr); -} + TEST_F(SimKernelMT_test, filledSimulationSelectors_expectInitializeFailure) { + EXPECT_TRUE( m_alg->setProperty("BeamPipeSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); //mockSimulationSelectorName); + EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + this->setEmptyInputOutputCollections(); + ASSERT_TRUE( m_alg->initialize().isFailure() ); + } -TEST_F(SimKernelMT_test, identifySimulator_particleInsideInnerDetectorAndInnerDetectorSimulationSelectorNotAcceptingParticle_expectParticleKillerSimulatorReturned) { - EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); - this->setEmptyInputOutputCollections(); - EXPECT_TRUE( m_alg->initialize().isSuccess() ); - - Amg::Vector3D position(0., 1., 0.); // close to the origin - Amg::Vector3D momentum(1., 2., 3.); - ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasID, ISF::fUndefinedSimID); - const ISF::ISFParticle particle(position, - momentum, - 123.*Gaudi::Units::GeV, // mass - -1., // charge - 11, // PDG code - 0.2*Gaudi::Units::second, // time - particleOrigin, - 123 // BCID - ); - - ASSERT_NE( m_mockSimulationSelector, nullptr ); - EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) ) - .WillOnce(::testing::Return(false)); - - const auto* actualSimulationSvcPtr = &this->identifySimulator(particle); - const std::string parentName = m_alg->name(); - ServiceHandle<ISF::ISimulationSvc> particleKillerSimulationSvc(particleKillerSimulationSvcName, parentName); - const ISF::ISimulationSvc* expectedSimulationSvcPtr = &*particleKillerSimulationSvc; - - ASSERT_EQ(expectedSimulationSvcPtr, actualSimulationSvcPtr); -} + TEST_F(SimKernelMT_test, filledSimulationSelectors_expectInitializeSuccess) { + EXPECT_TRUE( m_alg->setProperty("ParticleKillerTool", mockSimulatorToolName).isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("BeamPipeSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); //mockSimulationSelectorName); + EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + this->setEmptyInputOutputCollections(); -TEST_F(SimKernelMT_test, identifySimulator_particleInsideCaloAndOnlyInnerDetectorSimulationSelectorPresent_expectSimulationSelectorNotCalledAndParticleKillerSimulatorReturned) { - EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); - this->setEmptyInputOutputCollections(); - EXPECT_TRUE( m_alg->initialize().isSuccess() ); - - Amg::Vector3D position(0., 1., 0.); // close to the origin - Amg::Vector3D momentum(1., 2., 3.); - ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasCalo, ISF::fUndefinedSimID); - const ISF::ISFParticle particle(position, - momentum, - 123.*Gaudi::Units::GeV, // mass - -1., // charge - 11, // PDG code - 0.2*Gaudi::Units::second, // time - particleOrigin, - 123 // BCID - ); - - ASSERT_NE( m_mockSimulationSelector, nullptr ); - EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(::testing::_) ) - .Times(0); - - const auto* actualSimulationSvcPtr = &this->identifySimulator(particle); - const std::string parentName = m_alg->name(); - ServiceHandle<ISF::ISimulationSvc> particleKillerSimulationSvc(particleKillerSimulationSvcName, parentName); - const ISF::ISimulationSvc* expectedSimulationSvcPtr = &*particleKillerSimulationSvc; - - ASSERT_EQ(expectedSimulationSvcPtr, actualSimulationSvcPtr); -} + ASSERT_TRUE( m_alg->initialize().isSuccess() ); + } -TEST_F(SimKernelMT_test, identifySimulator_particleInsideCaloAndCaloSimulationSelectorSelectingParticle_expectSimulatorReturned) { - EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); - this->setEmptyInputOutputCollections(); - EXPECT_TRUE( m_alg->initialize().isSuccess() ); - - Amg::Vector3D position(0., 1., 0.); // close to the origin - Amg::Vector3D momentum(1., 2., 3.); - ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasCalo, ISF::fUndefinedSimID); - const ISF::ISFParticle particle(position, - momentum, - 123.*Gaudi::Units::GeV, // mass - -1., // charge - 11, // PDG code - 0.2*Gaudi::Units::second, // time - particleOrigin, - 123 // BCID - ); - - ASSERT_NE( m_mockSimulationSelector, nullptr ); - EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) ) - .WillOnce(::testing::Return(true)); - - const auto* actualSimulationSvcPtr = &this->identifySimulator(particle); - const ISF::ISimulationSvc* expectedSimulationSvcPtr = m_mockSimulationSvc; - - ASSERT_EQ(expectedSimulationSvcPtr, actualSimulationSvcPtr); -} + TEST_F(SimKernelMT_test, identifySimulator_particleInsideInnerDetectorAndInnerDetectorSimulationSelectorAcceptingParticle_expectInnerDetectorSimulatorReturned) { + EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + this->setEmptyInputOutputCollections(); + EXPECT_TRUE( m_alg->initialize().isSuccess() ); + + Amg::Vector3D position(0., 1., 0.); // close to the origin + Amg::Vector3D momentum(1., 2., 3.); + ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasID, ISF::fUndefinedSimID); + const ISF::ISFParticle particle(position, + momentum, + 123.*Gaudi::Units::GeV, // mass + -1., // charge + 11, // PDG code + 0.2*Gaudi::Units::second, // time + particleOrigin, + 123 // BCID + ); + + ASSERT_NE( m_mockSimulationSelector, nullptr ); + EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) ) + .WillOnce(::testing::Return(true)); + + const auto* actualSimulatorToolPtr = &this->identifySimulator(particle); + + const auto* expectedSimulatorToolPtr = m_mockSimulatorTool; + ASSERT_EQ(expectedSimulatorToolPtr, actualSimulatorToolPtr); + } -TEST_F(SimKernelMT_test, filledInputCollectionAndEmptySimulationSelectors_expectConvertedParticleSentToParticleKiller) { - auto* genEvent = new HepMC::GenEvent{}; - HepMC::FourVector mom{12.3, 45.6, 78.9, 1234.5}; - HepMC::GenParticle* genPart = new HepMC::GenParticle{mom, - 11, // pdg id (e-) - 1 // status - }; - HepMC::FourVector pos{9., 8., 7., 678.9}; - auto* genVertex = new HepMC::GenVertex{pos}; - genVertex->add_particle_out(genPart); - genEvent->add_vertex(genVertex); - - auto inputEvgen = std::make_unique<McEventCollection>(); - inputEvgen->push_back(genEvent); - SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"}; - inputEvgenHandle.record( std::move(inputEvgen) ); - - EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("ParticleKillerSimulationSvc", mockSimulationSvcName).isSuccess() ); - EXPECT_TRUE( m_alg->setProperty("InputConverter", fullInputConverter).isSuccess() ); - EXPECT_TRUE( m_alg->initialize().isSuccess() ); - - Amg::Vector3D position(9., 8., 7.); - Amg::Vector3D momentum(12.3, 45.6, 78.9); - ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fUndefinedAtlasRegion, ISF::fEventGeneratorSimID); - ISF::TruthBinding* truthBinding = new ISF::TruthBinding(genPart); - - ISF::ISFParticle convertedParticle(position, - momentum, - 0.510999*Gaudi::Units::MeV, // e- mass - -1., // charge - 11, // e- PDG code - 678.9/Gaudi::Units::c_light*Gaudi::Units::ns, // time - particleOrigin, - 0, // BCID - 10001, // barcode + TEST_F(SimKernelMT_test, identifySimulator_particleInsideInnerDetectorAndInnerDetectorSimulationSelectorNotAcceptingParticle_expectParticleKillerSimulatorReturned) { + EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + this->setEmptyInputOutputCollections(); + EXPECT_TRUE( m_alg->initialize().isSuccess() ); + + Amg::Vector3D position(0., 1., 0.); // close to the origin + Amg::Vector3D momentum(1., 2., 3.); + ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasID, ISF::fUndefinedSimID); + const ISF::ISFParticle particle(position, + momentum, + 123.*Gaudi::Units::GeV, // mass + -1., // charge + 11, // PDG code + 0.2*Gaudi::Units::second, // time + particleOrigin, + 123 // BCID + ); + + ASSERT_NE( m_mockSimulationSelector, nullptr ); + EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) ) + .WillOnce(::testing::Return(false)); + + const auto* actualSimulatorToolPtr = &this->identifySimulator(particle); + ToolHandle<ISF::ISimulatorTool> particleKillerSimulatorTool(particleKillerSimulatorToolName); + const ISF::ISimulatorTool* expectedSimulatorToolPtr = &*particleKillerSimulatorTool; + + ASSERT_EQ(expectedSimulatorToolPtr, actualSimulatorToolPtr); + } + + + TEST_F(SimKernelMT_test, identifySimulator_particleInsideCaloAndOnlyInnerDetectorSimulationSelectorPresent_expectSimulationSelectorNotCalledAndParticleKillerSimulatorReturned) { + EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + this->setEmptyInputOutputCollections(); + EXPECT_TRUE( m_alg->initialize().isSuccess() ); + + Amg::Vector3D position(0., 1., 0.); // close to the origin + Amg::Vector3D momentum(1., 2., 3.); + ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasCalo, ISF::fUndefinedSimID); + const ISF::ISFParticle particle(position, + momentum, + 123.*Gaudi::Units::GeV, // mass + -1., // charge + 11, // PDG code + 0.2*Gaudi::Units::second, // time + particleOrigin, + 123 // BCID + ); + + ASSERT_NE( m_mockSimulationSelector, nullptr ); + EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(::testing::_) ) + .Times(0); + + const auto* actualSimulatorToolPtr = &this->identifySimulator(particle); + ToolHandle<ISF::ISimulatorTool> particleKillerSimulatorTool(particleKillerSimulatorToolName); + const ISF::ISimulatorTool* expectedSimulatorToolPtr = &*particleKillerSimulatorTool; + + ASSERT_EQ(expectedSimulatorToolPtr, actualSimulatorToolPtr); + } + + + TEST_F(SimKernelMT_test, identifySimulator_particleInsideCaloAndCaloSimulationSelectorSelectingParticle_expectSimulatorReturned) { + EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); + this->setEmptyInputOutputCollections(); + EXPECT_TRUE( m_alg->initialize().isSuccess() ); + + Amg::Vector3D position(0., 1., 0.); // close to the origin + Amg::Vector3D momentum(1., 2., 3.); + ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasCalo, ISF::fUndefinedSimID); + const ISF::ISFParticle particle(position, + momentum, + 123.*Gaudi::Units::GeV, // mass + -1., // charge + 11, // PDG code + 0.2*Gaudi::Units::second, // time + particleOrigin, + 123 // BCID + ); + + ASSERT_NE( m_mockSimulationSelector, nullptr ); + EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) ) + .WillOnce(::testing::Return(true)); + + const auto* actualSimulatorToolPtr = &this->identifySimulator(particle); + const auto* expectedSimulatorToolPtr = m_mockSimulatorTool; + + ASSERT_EQ(expectedSimulatorToolPtr, actualSimulatorToolPtr); + } + + + TEST_F(SimKernelMT_test, filledInputCollectionAndEmptySimulationTools_expectConvertedParticleSentToParticleKiller) { + auto* genEvent = new HepMC::GenEvent{}; + HepMC::FourVector mom{12.3, 45.6, 78.9, 1234.5}; + HepMC::GenParticle* genPart = new HepMC::GenParticle{mom, + 11, // pdg id (e-) + 1 // status + }; + HepMC::FourVector pos{9., 8., 7., 678.9}; + auto* genVertex = new HepMC::GenVertex{pos}; + genVertex->add_particle_out(genPart); + genEvent->add_vertex(genVertex); + + auto inputEvgen = std::make_unique<McEventCollection>(); + inputEvgen->push_back(genEvent); + SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"}; + inputEvgenHandle.record( std::move(inputEvgen) ); + + EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("ParticleKillerTool", mockSimulatorToolName).isSuccess() ); + EXPECT_TRUE( m_alg->setProperty("InputConverter", fullInputConverter).isSuccess() ); + EXPECT_TRUE( m_alg->initialize().isSuccess() ); + + Amg::Vector3D position(9., 8., 7.); + Amg::Vector3D momentum(12.3, 45.6, 78.9); + ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fUndefinedAtlasRegion, ISF::fEventGeneratorSimID); + ISF::TruthBinding* truthBinding = new ISF::TruthBinding(genPart); + + ISF::ISFParticle convertedParticle(position, + momentum, + 0.510999*Gaudi::Units::MeV, // e- mass + -1., // charge + 11, // e- PDG code + 678.9/Gaudi::Units::c_light*Gaudi::Units::ns, // time + particleOrigin, + 0, // BCID + 10001, // barcode truthBinding - ); + ); + + ASSERT_NE( m_mockSimulatorTool, nullptr ); + EXPECT_CALL( *m_mockSimulatorTool, simulateVector(::testing::_,::testing::_) ) + .Times(1) + .WillOnce(::testing::Return(StatusCode::SUCCESS)); - ASSERT_NE( m_mockSimulationSvc, nullptr ); - EXPECT_CALL( *m_mockSimulationSvc, simulate(convertedParticle) ) - .Times(1) - .WillOnce(::testing::Return(StatusCode::SUCCESS)); + ASSERT_NE( m_mockGeoIDSvc, nullptr ); + EXPECT_CALL( *m_mockGeoIDSvc, identifyNextGeoID(::testing::_,::testing::_) ) + .Times(1) + .WillOnce(::testing::Return(AtlasDetDescr::fAtlasID)); - ASSERT_TRUE( m_alg->execute().isSuccess() ); -} + ASSERT_TRUE( m_alg->execute().isSuccess() ); + } } // namespace ISFTesting -- GitLab From da67dacca1315e0abc48e213ae56563c30d93002 Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Fri, 16 Nov 2018 17:18:18 +0100 Subject: [PATCH 023/135] Add Initial MT Configurations for ISF Only the full G4 versions will work initially and then only in single-threaded Athena. Former-commit-id: 34421ca0122d2a0455409bf6825d5b5b37369cab --- .../ISF/ISF_Config/python/FlagSetters.py | 15 ++++ .../ISF_Config/python/ISF_ConfigConfigDb.py | 5 ++ .../ISF/ISF_Config/python/ISF_MainConfig.py | 74 +++++++++++++++++++ 3 files changed, 94 insertions(+) diff --git a/Simulation/ISF/ISF_Config/python/FlagSetters.py b/Simulation/ISF/ISF_Config/python/FlagSetters.py index 105d1495807..5273430f51f 100644 --- a/Simulation/ISF/ISF_Config/python/FlagSetters.py +++ b/Simulation/ISF/ISF_Config/python/FlagSetters.py @@ -50,12 +50,18 @@ def configureFlagsFullG4(): ISF_Flags.HITSMergingRequired = False return +def configureFlagsFullG4MT(): + return configureFlagsFullG4() + def configureFlagsFullG4_LongLived(): configureFlagsFullG4() from G4AtlasApps.SimFlags import simFlags simFlags.SimulationFlavour = "FullG4_LongLived" return +def configureFlagsFullG4MT_LongLived(): + return configureFlagsFullG4_LongLived() + def configureFlagsFullG4_IDOnly(): configureFlagsFullG4() from G4AtlasApps.SimFlags import simFlags @@ -74,6 +80,9 @@ def configureFlagsPassBackG4(): simFlags.SimulationFlavour = "PassBackG4" return +def configureFlagsPassBackG4MT(): + return configureFlagsPassBackG4() + def configureFlagsCosmicsG4(): configureFlagsFullG4() return @@ -113,6 +122,9 @@ def configureFlagsATLFASTII(): ISF_Flags.UsingGeant4 = True return +def configureFlagsATLFASTIIMT(): + return configureFlagsATLFASTII() + def configureFlagsATLFASTII_PileUp(): from G4AtlasApps.SimFlags import simFlags simFlags.SimulationFlavour = "ATLFASTII_PileUp" @@ -135,6 +147,9 @@ def configureFlagsATLFASTIIF(): TrkDetFlags.TRT_BuildStrawLayers=True return +def configureFlagsATLFASTIIFMT(): + return configureFlagsATLFASTIIF() + def configureFlagsFatras_newExtrapolation(): configureFlagsATLFASTIIF() from G4AtlasApps.SimFlags import simFlags diff --git a/Simulation/ISF/ISF_Config/python/ISF_ConfigConfigDb.py b/Simulation/ISF/ISF_Config/python/ISF_ConfigConfigDb.py index 7a9f891bb2c..9e8f8cad9ac 100644 --- a/Simulation/ISF/ISF_Config/python/ISF_ConfigConfigDb.py +++ b/Simulation/ISF/ISF_Config/python/ISF_ConfigConfigDb.py @@ -22,7 +22,9 @@ addAlgorithm("ISF_Config.ISF_MainConfig.getInput_MultiParticleTest", "ISF_Inp addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_GenericSimulator", "ISF_Kernel_GenericSimulator") #addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FromJobProperties", "ISF_Kernel_FromJobProperties") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4", "ISF_Kernel_FullG4") +addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4MT", "ISF_Kernel_FullG4MT") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4_LongLived", "ISF_Kernel_FullG4_LongLived") +addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4MT_LongLived", "ISF_Kernel_FullG4MT_LongLived") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4_IDOnly", "ISF_Kernel_FullG4_IDOnly") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4_IDCalo", "ISF_Kernel_FullG4_IDCalo") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_StoppingG4", "ISF_Kernel_StoppingG4") @@ -31,9 +33,12 @@ addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_MC12G4_longLived", "ISF_Ker addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_MC12G4_IDOnly", "ISF_Kernel_MC12G4_IDOnly")# Legacy only addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_MC12G4_IDCalo", "ISF_Kernel_MC12G4_IDCalo")# Legacy only addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_PassBackG4", "ISF_Kernel_PassBackG4") +addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_PassBackG4MT", "ISF_Kernel_PassBackG4MT") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_CosmicsG4", "ISF_Kernel_CosmicsG4") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTII", "ISF_Kernel_ATLFASTII") +addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTIIMT", "ISF_Kernel_ATLFASTIIMT") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTIIF", "ISF_Kernel_ATLFASTIIF") +addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTIIFMT", "ISF_Kernel_ATLFASTIIFMT") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTIIF_PileUp", "ISF_Kernel_ATLFASTIIF_PileUp") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTII_PileUp", "ISF_Kernel_ATLFASTII_PileUp") addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_G4HS_FastPileup", "ISF_Kernel_G4HS_FastPileup") diff --git a/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py b/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py index 39d2df6681b..eea1b5ba1c7 100644 --- a/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py +++ b/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py @@ -200,10 +200,36 @@ def getKernel_GenericSimulator(name="ISF_Kernel_GenericSimulator", **kwargs): topSequence += SimKernel return SimKernel +############## Simulator: GenericSimulatorMT ############### +def getKernel_GenericSimulatorMT(name="ISF_Kernel_GenericSimulatorMT", **kwargs): + kwargs.setdefault("InputEvgenCollection", "BeamTruthEvent" ) + kwargs.setdefault("OutputTruthCollection", "TruthEvent" ) + kwargs.setdefault("ParticleKillerTool", "ISF_ParticleKillerTool" ) + kwargs.setdefault("GeoIDSvc", "ISF_GeoIDSvc" ) + kwargs.setdefault("InputConverter", "ISF_InputConverter") + kwargs.setdefault("OutputLevel", 1) + #from G4AtlasApps.SimFlags import simFlags + #kwargs.setdefault("TruthRecordService", simFlags.TruthStrategy.TruthServiceName()) + #kwargs.setdefault("MemoryMonitoringTool", "ISF_MemoryMonitor") + #kwargs.setdefault("DoCPUMonitoring", ISF_Flags.DoTimeMonitoring()) + #kwargs.setdefault("DoMemoryMonitoring", ISF_Flags.DoMemoryMonitoring()) + + from ISF_Algorithms.ISF_AlgorithmsConf import ISF__SimKernelMT + SimKernelMT = ISF__SimKernelMT(name, **kwargs) + ##FIXME shouldn't really be doing this here + from AthenaCommon.AlgSequence import AlgSequence + topSequence = AlgSequence() + topSequence += SimKernelMT + return SimKernelMT + ############## Simulator: GenericSimulatorNoG4 ############### def getKernel_GenericSimulatorNoG4(name="ISF_Kernel_GenericSimulatorNoG4", **kwargs): return getKernel_GenericSimulator(name, **kwargs) +############## Simulator: GenericSimulatorNoG4MT ############### +def getKernel_GenericSimulatorNoG4MT(name="ISF_Kernel_GenericSimulatorNoG4MT", **kwargs): + return getKernel_GenericSimulatorMT(name, **kwargs) + ############## Simulator: MultiSimTest ############### def getKernel_MultiSimTest(name="ISF_Kernel_MultiSimTest", **kwargs): kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_DefaultGeant4Selector' ] ) @@ -229,10 +255,25 @@ def getKernel_GenericG4Only(name="ISF_Kernel_GenericG4Only", **kwargs): kwargs.setdefault("CavernSimulationSelectors" , [ 'ISF_DefaultParticleKillerSelector' ] ) return getKernel_GenericSimulator(name, **kwargs) +############## Simulator: GenericG4OnlyMT ############### +def getKernel_GenericG4OnlyMT(name="ISF_Kernel_GenericG4OnlyMT", **kwargs): + kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_FullGeant4Selector' ] ) + kwargs.setdefault("IDSimulationSelectors" , [ 'ISF_FullGeant4Selector' ] ) + kwargs.setdefault("CaloSimulationSelectors" , [ 'ISF_FullGeant4Selector' ] ) + kwargs.setdefault("MSSimulationSelectors" , [ 'ISF_FullGeant4Selector' ] ) + kwargs.setdefault("CavernSimulationSelectors" , [ 'ISF_DefaultParticleKillerSelector' ] ) + return getKernel_GenericSimulatorMT(name, **kwargs) + ############## Simulator: FullG4 ############### def getKernel_FullG4(name="ISF_Kernel_FullG4", **kwargs): return getKernel_GenericG4Only(name, **kwargs) +############## Simulator: FullG4MT ############### +def getKernel_FullG4MT(name="ISF_Kernel_FullG4MT", **kwargs): + kwargs.setdefault("SimulationTools", ["ISF_ParticleKillerTool", + "ISF_FullGeant4Tool"]) + return getKernel_GenericG4OnlyMT(name, **kwargs) + ############## Simulator: FullG4_longLived ############### def getKernel_FullG4_LongLived(name="ISF_Kernel_FullG4_LongLived", **kwargs): kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_DefaultLongLivedGeant4Selector' ] ) @@ -243,6 +284,13 @@ def getKernel_FullG4_LongLived(name="ISF_Kernel_FullG4_LongLived", **kwargs): kwargs.setdefault("InputConverter" , 'ISF_LongLivedInputConverter' ) return getKernel_GenericG4Only(name, **kwargs) +############## Simulator: FullG4MT_longLived ############### +def getKernel_FullG4MT_LongLived(name="ISF_Kernel_FullG4MT_LongLived", **kwargs): + kwargs.setdefault("SimulationTools", ["ISF_ParticleKillerTool", + "ISF_LongLivedGeant4Tool"]) + kwargs.setdefault("InputConverter", 'ISF_LongLivedInputConverter') + return getKernel_GenericG4OnlyMT(name, **kwargs) + ############## Simulator: FullG4_IDOnly ############### def getKernel_FullG4_IDOnly(name="ISF_Kernel_FullG4_IDOnly", **kwargs): kwargs.setdefault("CaloSimulationSelectors" , [ 'ISF_DefaultParticleKillerSelector' ] ) @@ -264,6 +312,12 @@ def getKernel_PassBackG4(name="ISF_Kernel_PassBackG4", **kwargs): kwargs.setdefault("CavernSimulationSelectors" , [ 'ISF_DefaultParticleKillerSelector' ] ) return getKernel_GenericSimulator(name, **kwargs) +############## Simulator: PassBackG4MT ############### +def getKernel_PassBackG4MT(name="ISF_Kernel_PassBackG4MT", **kwargs): + kwargs.setdefault("SimulationTools", ["ISF_ParticleKillerTool", + "ISF_PassBackGeant4Tool"]) + return getKernel_GenericSimulator(name, **kwargs) + ############## Simulator: CosmicsG4 ############### def getKernel_CosmicsG4(name="ISF_Kernel_CosmicsG4", **kwargs): kwargs.setdefault("CavernSimulationSelectors" , [ 'ISF_FullGeant4Selector' ] ) @@ -326,6 +380,16 @@ def getKernel_ATLFASTII(name="ISF_Kernel_ATLFASTII", **kwargs): simFlags.SimulationFlavour = "AtlfastII" # TODO: can we rename this to "ATLFASTII" ? return getKernel_GenericSimulator(name, **kwargs) +############## Simulator: ATLFASTIIMT ############### +def getKernel_ATLFASTIIMT(name="ISF_Kernel_ATLFASTIIMT", **kwargs): + kwargs.setdefault("SimulationTools", ["ISF_FastParticleKillerTool", + "ISF_LegacyAFIIFastCaloTool", + "ISF_AFIIGeant4Tool"]) + # set the simFlags accordingly (TODO: is this even needed?) + from G4AtlasApps.SimFlags import simFlags + simFlags.SimulationFlavour = "ATLFASTII" + return getKernel_GenericSimulatorMT(name, **kwargs) + ############## Simulator: ATLFASTIIF ############### def getKernel_ATLFASTIIF(name="ISF_Kernel_ATLFASTIIF", **kwargs): kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_DefaultParticleKillerSelector' ] ) @@ -340,6 +404,16 @@ def getKernel_ATLFASTIIF(name="ISF_Kernel_ATLFASTIIF", **kwargs): simFlags.SimulationFlavour = "ATLFASTIIF" return getKernel_GenericSimulatorNoG4(name, **kwargs) +############## Simulator: ATLFASTIIFMT ############### +def getKernel_ATLFASTIIFMT(name="ISF_Kernel_ATLFASTIIFMT", **kwargs): + kwargs.setdefault("SimulationTools", ["ISF_FastParticleKillerTool", + "ISF_FastCaloTool", + "ISF_FatrasTool"]) + # set the simFlags accordingly (TODO: is this even needed?) + from G4AtlasApps.SimFlags import simFlags + simFlags.SimulationFlavour = "ATLFASTIIF" + return getKernel_GenericSimulatorNoG4MT(name, **kwargs) + ############## Simulator: Fatras_newExtrapolation ############### def getKernel_Fatras_newExtrapolation(name="ISF_Kernel_Fatras_newExtrapolation", **kwargs): kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_DefaultFatrasNewExtrapolationSelector' ] ) -- GitLab From e47f3d6b5645471251b09de5587243f5a77bb13e Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sat, 17 Nov 2018 21:31:15 +0100 Subject: [PATCH 024/135] updating getOnlineId in MuonMDT_CablingMap as const function Former-commit-id: 47933c35ecf3ea0352023e7928c02441dfdce6b1 --- .../MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h | 8 ++++---- .../MuonCablingData/src/MuonMDT_CablingMap.cxx | 8 ++++---- .../MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx | 4 ++++ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h index 1c8e34e58bf..c2ee5f755af 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h @@ -66,10 +66,10 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> { MdtSubdetectorMap* getSubdetectorMap(uint8_t subdetectorId) const; /** return the ROD id of a given chamber, given station, eta, phi */ - uint32_t getROBId(int station, int eta, int phi); + uint32_t getROBId(int station, int eta, int phi) const; /** return the ROD id of a given chamber, given the hash id */ - uint32_t getROBId(const IdentifierHash stationCode); + uint32_t getROBId(const IdentifierHash stationCode) const; /** return a vector of HashId lists for a given list of ROD's */ const std::vector<IdentifierHash> getChamberHashVec(const std::vector< uint32_t> &ROBId_list) const; @@ -90,7 +90,7 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> { bool getOnlineId(int stationName, int stationEta, int stationPhi, int multiLayer, int layer, int tube, uint8_t& subdetectorId, uint8_t& rodId, uint8_t& csmId, - uint8_t& tdcId, uint8_t& channelId); + uint8_t& tdcId, uint8_t& channelId) const; private: @@ -113,7 +113,7 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> { ListOfROD* m_listOfROD; /** private function to compute a station code for the chamber to ROD map */ - bool getStationCode(int station, int eta, int phi, IdentifierHash& mdtIdHash); + bool getStationCode(int station, int eta, int phi, IdentifierHash& mdtIdHash) const; /** Pointer to the MdtIdHelper */ const MdtIdHelper* m_mdtIdHelper; diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx index 7765b16154f..9e598e05fea 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx @@ -367,7 +367,7 @@ bool MuonMDT_CablingMap::addChamberToRODMap(int station, int eta, int phi, * */ bool MuonMDT_CablingMap::getStationCode(int station, int eta, int phi, - IdentifierHash& mdtHashId) + IdentifierHash& mdtHashId) const { // create the station identifier Identifier elementId = m_mdtIdHelper->elementID(station,eta,phi); @@ -387,7 +387,7 @@ bool MuonMDT_CablingMap::getStationCode(int station, int eta, int phi, * return the ROBid of a given station, identified through station, eta, phi * */ -uint32_t MuonMDT_CablingMap::getROBId(int station, int eta, int phi) +uint32_t MuonMDT_CablingMap::getROBId(int station, int eta, int phi) const { int rodId = 0; @@ -407,7 +407,7 @@ uint32_t MuonMDT_CablingMap::getROBId(int station, int eta, int phi) } // get the ROBid given the identifier hash -uint32_t MuonMDT_CablingMap::getROBId(const IdentifierHash stationCode) +uint32_t MuonMDT_CablingMap::getROBId(const IdentifierHash stationCode) const { int rodId = 0; @@ -587,7 +587,7 @@ bool MuonMDT_CablingMap::getOnlineId(int stationName, int stationEta, int statio int multiLayer, int layer, int tube, uint8_t& subdetectorId, uint8_t& rodId, uint8_t& csmId, uint8_t& tdcId, - uint8_t& channelId) + uint8_t& channelId) const { diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx index f2f37b26e61..6d032dfc921 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx @@ -183,8 +183,12 @@ bool MdtTestCabling::testMap() // test the back-conversion to online indeces m_chronoSvc->chronoStart(m_chrono3); + /* cabling = m_cablingSvc->getOnlineId(station,eta,phi,multi,layer,tube, newSubdet,newRod,newCsm,newAmt,newChan); + */ + cabling = readCdo->getOnlineId(station,eta,phi,multi,layer,tube,newSubdet,newRod,newCsm,newAmt,newChan); + m_chronoSvc->chronoStop(m_chrono3); if (!cabling) { -- GitLab From 6c5bbd0867605c1e7698e6ee8629e4e240d7f43b Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sat, 17 Nov 2018 21:42:29 +0100 Subject: [PATCH 025/135] migrated all cablingSvc to the readCdo in MdtTestCabling.cxx Former-commit-id: 3b29be187acaed0ffcad06a445fb95d5059fc752 --- .../MuonMDT_Cabling/src/MdtTestCabling.cxx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx index 6d032dfc921..e192962881c 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx @@ -259,12 +259,24 @@ bool MdtTestCabling::testMapTiming() bool found; + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==0){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return false; + } + // m_chronoSvc->chronoStart(m_chrono1); for (int i = 0 ; i<1000 ; i++) { + /* found = m_cablingSvc->getOfflineId(1,1,1,1,1, stationName,stationEta,stationPhi, multiLayer,layer,tube); + */ + found = readCdo->getOfflineId(1,1,1,1,1, + stationName,stationEta,stationPhi, + multiLayer,layer,tube); if (!found) { ATH_MSG_FATAL( " coul dnot find the test channel" ); return found; @@ -273,9 +285,14 @@ bool MdtTestCabling::testMapTiming() //found = m_cablingSvc->getOfflineId(1,1,1,1,1, // stationName,stationEta,stationPhi, // multiLayer,layer,tube); + /* found = m_cablingSvc->getOfflineId(1,1,1,1,3, stationName,stationEta,stationPhi, multiLayer,layer,tube); + */ + found = readCdo->getOfflineId(1,1,1,1,3, + stationName,stationEta,stationPhi, + multiLayer,layer,tube); if (!found) { ATH_MSG_FATAL( " coul dnot find the test channel" ); return false; -- GitLab From 7e6f950f4a6a08cd86c6caae634cf86cea15b422 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sat, 17 Nov 2018 21:46:34 +0100 Subject: [PATCH 026/135] readCdo check if nullptr rather than 0 Former-commit-id: 8ec6bceaf12dd4bd22b81e2de32fcc6f1bc7a878 --- .../MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx index e192962881c..f84a3ac0a60 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx @@ -67,7 +67,7 @@ bool MdtTestCabling::testMap() SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; const MuonMDT_CablingMap* readCdo{*readHandle}; - if(readCdo==0){ + if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return false; } @@ -261,7 +261,7 @@ bool MdtTestCabling::testMapTiming() SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; const MuonMDT_CablingMap* readCdo{*readHandle}; - if(readCdo==0){ + if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return false; } -- GitLab From 5a9e59ea2294ff9d440a0a34ff82b829cf3f68ba Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sun, 18 Nov 2018 11:36:06 +0100 Subject: [PATCH 027/135] removing MuonMDT_CablingSvc from MdtTestCabling Former-commit-id: c70e9f5fb49ae027f7f6b9a0281cac3aa928af03 --- .../MuonMDT_Cabling/MdtTestCabling.h | 6 ---- .../MuonMDT_Cabling/src/MdtTestCabling.cxx | 33 +------------------ 2 files changed, 1 insertion(+), 38 deletions(-) diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h index 62d24c2bcdd..0f2accdc90c 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h @@ -16,14 +16,10 @@ ***********************************************/ #include "GaudiKernel/IChronoStatSvc.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" #include "MuonIdHelpers/MdtIdHelper.h" #include "AthenaBaseComps/AthAlgorithm.h" #include "GaudiKernel/ServiceHandle.h" -// old cabling service -//#include "MDTcabling/IMDTcablingSvc.h" - #include "MuonCablingData/MuonMDT_CablingMap.h" #include "StoreGate/ReadCondHandleKey.h" @@ -41,8 +37,6 @@ class MdtTestCabling : public AthAlgorithm { private: - ServiceHandle<MuonMDT_CablingSvc> m_cablingSvc; - const MdtIdHelper* m_mdtIdHelper; // test initialize function diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx index f84a3ac0a60..f43b20b69ee 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx @@ -3,14 +3,12 @@ */ #include "MuonMDT_Cabling/MdtTestCabling.h" -//#include "MuonCablingData/MuonMDT_CablingMap.h" #include "StoreGate/StoreGateSvc.h" #include "StoreGate/DataHandle.h" MdtTestCabling::MdtTestCabling(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name,pSvcLocator), - m_cablingSvc("MuonMDT_CablingSvc", name), m_mdtIdHelper(0), m_chronoSvc("ChronoStatSvc", name) { @@ -22,7 +20,6 @@ MdtTestCabling::~MdtTestCabling() { } StatusCode MdtTestCabling::initialize() { ATH_CHECK( m_chronoSvc.retrieve() ); - ATH_CHECK( m_cablingSvc.retrieve() ); // initialize the pointer to the MdtIdHelper ServiceHandle<StoreGateSvc> detStore ("DetectorStore", name()); @@ -73,7 +70,6 @@ bool MdtTestCabling::testMap() } // print the list of ROBids - //std::vector<uint32_t> robVector = m_cablingSvc->getAllROBId(); std::vector<uint32_t> robVector = readCdo->getAllROBId(); std::cout << "============================= List of ROBids:" << std::endl; for (unsigned int i=0 ; i<robVector.size() ; ++i) { @@ -82,13 +78,9 @@ bool MdtTestCabling::testMap() std::cout << "=============================================" << std::endl; // loop on the hardware objects to get online identifiers - // if (m_debug) { + ATH_MSG_DEBUG( "in testMap()" ); - //} - //DataHandle<MuonMDT_CablingMap> cablingMap = m_cablingSvc->getCablingMap(); - //if (m_debug) { ATH_MSG_DEBUG( "retrieved the map from the service" ); - //} std::map<uint8_t, MdtSubdetectorMap*, std::less<uint8_t> >* listOfSubdet; std::map<uint8_t, MdtSubdetectorMap*, std::less<uint8_t> >::const_iterator it_sub; @@ -152,12 +144,6 @@ bool MdtTestCabling::testMap() int tube=0; m_chronoSvc->chronoStart(m_chrono1); - /* - bool cabling = m_cablingSvc->getOfflineId(subdetectorId,rodId,csmId, - amtId,chanId, - station,eta,phi,multi, - layer,tube); - */ bool cabling = readCdo->getOfflineId(subdetectorId,rodId,csmId, amtId,chanId, station,eta,phi,multi, @@ -183,10 +169,6 @@ bool MdtTestCabling::testMap() // test the back-conversion to online indeces m_chronoSvc->chronoStart(m_chrono3); - /* - cabling = m_cablingSvc->getOnlineId(station,eta,phi,multi,layer,tube, - newSubdet,newRod,newCsm,newAmt,newChan); - */ cabling = readCdo->getOnlineId(station,eta,phi,multi,layer,tube,newSubdet,newRod,newCsm,newAmt,newChan); m_chronoSvc->chronoStop(m_chrono3); @@ -269,11 +251,6 @@ bool MdtTestCabling::testMapTiming() // m_chronoSvc->chronoStart(m_chrono1); for (int i = 0 ; i<1000 ; i++) { - /* - found = m_cablingSvc->getOfflineId(1,1,1,1,1, - stationName,stationEta,stationPhi, - multiLayer,layer,tube); - */ found = readCdo->getOfflineId(1,1,1,1,1, stationName,stationEta,stationPhi, multiLayer,layer,tube); @@ -282,14 +259,6 @@ bool MdtTestCabling::testMapTiming() return found; } - //found = m_cablingSvc->getOfflineId(1,1,1,1,1, - // stationName,stationEta,stationPhi, - // multiLayer,layer,tube); - /* - found = m_cablingSvc->getOfflineId(1,1,1,1,3, - stationName,stationEta,stationPhi, - multiLayer,layer,tube); - */ found = readCdo->getOfflineId(1,1,1,1,3, stationName,stationEta,stationPhi, multiLayer,layer,tube); -- GitLab From 17b29bc5457760ed651f132812ccd1b2cae0c8e0 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sun, 18 Nov 2018 13:02:41 +0100 Subject: [PATCH 028/135] migrated MuonMDT_CablingSvc to readCdo in MdtDigitToMdtRDO Former-commit-id: 511222ef85b94ba9e4e2ec0e835ebcfa31b022b0 --- .../MuonByteStreamCnvTest/CMakeLists.txt | 7 ++-- .../MuonByteStreamCnvTest/MdtDigitToMdtRDO.h | 7 ++-- .../src/MdtDigitToMdtRDO.cxx | 34 +++++++++++-------- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt index 246bb445e22..bab36140a34 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt @@ -28,18 +28,19 @@ atlas_depends_on_subdirs( PUBLIC MuonSpectrometer/MuonCnv/MuonTGC_CnvTools MuonSpectrometer/MuonDigitContainer MuonSpectrometer/MuonIdHelpers - MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData ) + MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData + MuonSpectrometer/MuonCablings/MuonCablingData ) # Component(s) in the package: atlas_add_library( MuonByteStreamCnvTestLib src/*.cxx PUBLIC_HEADERS MuonByteStreamCnvTest LINK_LIBRARIES AthenaBaseComps GaudiKernel MuonReadoutGeometry MuonRDO StoreGateLib SGtests RPCcablingInterfaceLib TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib MuonMDT_CablingLib TGCcablingInterfaceLib MuonIdHelpersLib - PRIVATE_LINK_LIBRARIES EventInfo MuonDigitContainer MuonPrepRawData ) + PRIVATE_LINK_LIBRARIES EventInfo MuonDigitContainer MuonPrepRawData MuonCablingData ) atlas_add_component( MuonByteStreamCnvTest src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps StoreGateLib SGtests GaudiKernel RPCcablingInterfaceLib MuonReadoutGeometry MuonRDO TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib EventInfo MuonMDT_CablingLib TGCcablingInterfaceLib MuonDigitContainer MuonIdHelpersLib MuonPrepRawData MuonByteStreamCnvTestLib ) + LINK_LIBRARIES AthenaBaseComps StoreGateLib SGtests GaudiKernel RPCcablingInterfaceLib MuonReadoutGeometry MuonRDO TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib EventInfo MuonMDT_CablingLib TGCcablingInterfaceLib MuonDigitContainer MuonIdHelpersLib MuonPrepRawData MuonByteStreamCnvTestLib MuonCablingData ) # Install files from the package: atlas_install_python_modules( python/*.py ) diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h index d0374bdd2aa..b59e720d29a 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h @@ -10,7 +10,9 @@ #include "MuonDigitContainer/MdtDigitContainer.h" #include "MuonRDO/MdtCsmContainer.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" + +#include "MuonCablingData/MuonMDT_CablingMap.h" +#include "StoreGate/ReadCondHandleKey.h" class MdtIdHelper; @@ -31,11 +33,12 @@ class MdtDigitToMdtRDO : public AthAlgorithm { protected: - ServiceHandle<MuonMDT_CablingSvc> m_cabling; const MdtIdHelper* m_mdtIdHelper; bool m_BMEpresent; SG::WriteHandleKey<MdtCsmContainer> m_csmContainerKey{this,"OutputObjectName","MDTCSM","WriteHandleKey for Output MdtCsmContainer"}; SG::ReadHandleKey<MdtDigitContainer> m_digitContainerKey{this,"InputObjectName","MDT_DIGITS","ReadHandleKey for Input MdtDigitContainer"}; + SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; + }; #endif diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx index 5f6ce979da6..aa2a8b43479 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx @@ -6,8 +6,6 @@ #include "MuonDigitContainer/MdtDigitCollection.h" #include "MuonDigitContainer/MdtDigit.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" - #include "MuonRDO/MdtCsmIdHash.h" #include "MuonRDO/MdtCsmContainer.h" #include "MuonRDO/MdtCsm.h" @@ -27,7 +25,6 @@ using namespace std; MdtDigitToMdtRDO::MdtDigitToMdtRDO(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name, pSvcLocator), - m_cabling("MuonMDT_CablingSvc", name), m_mdtIdHelper(0), m_BMEpresent(false) { @@ -43,7 +40,7 @@ StatusCode MdtDigitToMdtRDO::initialize() ATH_CHECK( m_digitContainerKey.initialize() ); ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_digitContainerKey ); ATH_CHECK( detStore()->retrieve(m_mdtIdHelper,"MDTIDHELPER") ); - ATH_CHECK( m_cabling.retrieve() ); + ATH_CHECK( m_readKey.initialize() ); if ( fillTagInfo().isFailure() ) { ATH_MSG_WARNING( "Could not fill the tagInfo for MDT cabling" ); @@ -95,6 +92,13 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { MdtCsmIdHash hashF; + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==0){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return StatusCode::FAILURE; + } + // Iterate on the collections collection_iterator it_coll = container->begin(); for ( ; it_coll != container->end(); ++it_coll) @@ -113,8 +117,8 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { uint8_t link; uint8_t tdc; uint8_t channel; - - bool cabling = m_cabling->getOnlineId(name, eta, phi, + + bool cabling = readCdo->getOnlineId(name, eta, phi, 1, 1, 1, subsystem, mrod, link, tdc, channel); @@ -165,9 +169,9 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { if ( name == 53 ) { uint8_t subsystem_2ndcsm, mrod_2ndcsm, link_2ndcsm, tdc_2ndcsm, channel_2ndcsm; - cabling = m_cabling->getOnlineId(name, eta, phi, 1, 1, 43, - subsystem_2ndcsm, mrod_2ndcsm, - link_2ndcsm, tdc_2ndcsm, channel_2ndcsm); + cabling = readCdo->getOnlineId(name, eta, phi, 1, 1, 43, + subsystem_2ndcsm, mrod_2ndcsm, + link_2ndcsm, tdc_2ndcsm, channel_2ndcsm); if (!cabling) { ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : " ); @@ -196,10 +200,10 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { int tube = m_mdtIdHelper->tube(channelId); // Get the online Id of the channel - cabling = m_cabling->getOnlineId(name, eta, phi, - multilayer, layer, tube, - subsystem, mrod, link, - tdc, channel); + cabling = readCdo->getOnlineId(name, eta, phi, + multilayer, layer, tube, + subsystem, mrod, link, + tdc, channel); if (!cabling) { ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : " ); @@ -267,7 +271,9 @@ StatusCode MdtDigitToMdtRDO::fillTagInfo() const { return StatusCode::FAILURE; std::string cablingType=""; - if (m_cabling->usingOldCabling() ) { + //if (m_cabling->usingOldCabling() ) { + //if (readCdo->usingOldCabling() ) { //it was only implemeted in the Svc for Run2 + if ( false ) { //this should be false from Run2, so the switch can be removed for Run3 cablingType="OldMDT_Cabling"; } else { -- GitLab From b7dd46bdac71b82bbc0f062bd924503b0413982a Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sun, 18 Nov 2018 14:02:04 +0100 Subject: [PATCH 029/135] Revert "migrated MuonMDT_CablingSvc to readCdo in MdtDigitToMdtRDO" This reverts commit 17b29bc5457760ed651f132812ccd1b2cae0c8e0 [formerly 511222ef85b94ba9e4e2ec0e835ebcfa31b022b0]. Former-commit-id: 19c98c7606999ace3d457984f20653311f6504a6 --- .../MuonByteStreamCnvTest/CMakeLists.txt | 7 ++-- .../MuonByteStreamCnvTest/MdtDigitToMdtRDO.h | 7 ++-- .../src/MdtDigitToMdtRDO.cxx | 34 ++++++++----------- 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt index bab36140a34..246bb445e22 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt @@ -28,19 +28,18 @@ atlas_depends_on_subdirs( PUBLIC MuonSpectrometer/MuonCnv/MuonTGC_CnvTools MuonSpectrometer/MuonDigitContainer MuonSpectrometer/MuonIdHelpers - MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData - MuonSpectrometer/MuonCablings/MuonCablingData ) + MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData ) # Component(s) in the package: atlas_add_library( MuonByteStreamCnvTestLib src/*.cxx PUBLIC_HEADERS MuonByteStreamCnvTest LINK_LIBRARIES AthenaBaseComps GaudiKernel MuonReadoutGeometry MuonRDO StoreGateLib SGtests RPCcablingInterfaceLib TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib MuonMDT_CablingLib TGCcablingInterfaceLib MuonIdHelpersLib - PRIVATE_LINK_LIBRARIES EventInfo MuonDigitContainer MuonPrepRawData MuonCablingData ) + PRIVATE_LINK_LIBRARIES EventInfo MuonDigitContainer MuonPrepRawData ) atlas_add_component( MuonByteStreamCnvTest src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps StoreGateLib SGtests GaudiKernel RPCcablingInterfaceLib MuonReadoutGeometry MuonRDO TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib EventInfo MuonMDT_CablingLib TGCcablingInterfaceLib MuonDigitContainer MuonIdHelpersLib MuonPrepRawData MuonByteStreamCnvTestLib MuonCablingData ) + LINK_LIBRARIES AthenaBaseComps StoreGateLib SGtests GaudiKernel RPCcablingInterfaceLib MuonReadoutGeometry MuonRDO TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib EventInfo MuonMDT_CablingLib TGCcablingInterfaceLib MuonDigitContainer MuonIdHelpersLib MuonPrepRawData MuonByteStreamCnvTestLib ) # Install files from the package: atlas_install_python_modules( python/*.py ) diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h index b59e720d29a..d0374bdd2aa 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h @@ -10,9 +10,7 @@ #include "MuonDigitContainer/MdtDigitContainer.h" #include "MuonRDO/MdtCsmContainer.h" - -#include "MuonCablingData/MuonMDT_CablingMap.h" -#include "StoreGate/ReadCondHandleKey.h" +#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" class MdtIdHelper; @@ -33,12 +31,11 @@ class MdtDigitToMdtRDO : public AthAlgorithm { protected: + ServiceHandle<MuonMDT_CablingSvc> m_cabling; const MdtIdHelper* m_mdtIdHelper; bool m_BMEpresent; SG::WriteHandleKey<MdtCsmContainer> m_csmContainerKey{this,"OutputObjectName","MDTCSM","WriteHandleKey for Output MdtCsmContainer"}; SG::ReadHandleKey<MdtDigitContainer> m_digitContainerKey{this,"InputObjectName","MDT_DIGITS","ReadHandleKey for Input MdtDigitContainer"}; - SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; - }; #endif diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx index aa2a8b43479..5f6ce979da6 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx @@ -6,6 +6,8 @@ #include "MuonDigitContainer/MdtDigitCollection.h" #include "MuonDigitContainer/MdtDigit.h" +#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" + #include "MuonRDO/MdtCsmIdHash.h" #include "MuonRDO/MdtCsmContainer.h" #include "MuonRDO/MdtCsm.h" @@ -25,6 +27,7 @@ using namespace std; MdtDigitToMdtRDO::MdtDigitToMdtRDO(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name, pSvcLocator), + m_cabling("MuonMDT_CablingSvc", name), m_mdtIdHelper(0), m_BMEpresent(false) { @@ -40,7 +43,7 @@ StatusCode MdtDigitToMdtRDO::initialize() ATH_CHECK( m_digitContainerKey.initialize() ); ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_digitContainerKey ); ATH_CHECK( detStore()->retrieve(m_mdtIdHelper,"MDTIDHELPER") ); - ATH_CHECK( m_readKey.initialize() ); + ATH_CHECK( m_cabling.retrieve() ); if ( fillTagInfo().isFailure() ) { ATH_MSG_WARNING( "Could not fill the tagInfo for MDT cabling" ); @@ -92,13 +95,6 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { MdtCsmIdHash hashF; - SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; - const MuonMDT_CablingMap* readCdo{*readHandle}; - if(readCdo==0){ - ATH_MSG_ERROR("Null pointer to the read conditions object"); - return StatusCode::FAILURE; - } - // Iterate on the collections collection_iterator it_coll = container->begin(); for ( ; it_coll != container->end(); ++it_coll) @@ -117,8 +113,8 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { uint8_t link; uint8_t tdc; uint8_t channel; - - bool cabling = readCdo->getOnlineId(name, eta, phi, + + bool cabling = m_cabling->getOnlineId(name, eta, phi, 1, 1, 1, subsystem, mrod, link, tdc, channel); @@ -169,9 +165,9 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { if ( name == 53 ) { uint8_t subsystem_2ndcsm, mrod_2ndcsm, link_2ndcsm, tdc_2ndcsm, channel_2ndcsm; - cabling = readCdo->getOnlineId(name, eta, phi, 1, 1, 43, - subsystem_2ndcsm, mrod_2ndcsm, - link_2ndcsm, tdc_2ndcsm, channel_2ndcsm); + cabling = m_cabling->getOnlineId(name, eta, phi, 1, 1, 43, + subsystem_2ndcsm, mrod_2ndcsm, + link_2ndcsm, tdc_2ndcsm, channel_2ndcsm); if (!cabling) { ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : " ); @@ -200,10 +196,10 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { int tube = m_mdtIdHelper->tube(channelId); // Get the online Id of the channel - cabling = readCdo->getOnlineId(name, eta, phi, - multilayer, layer, tube, - subsystem, mrod, link, - tdc, channel); + cabling = m_cabling->getOnlineId(name, eta, phi, + multilayer, layer, tube, + subsystem, mrod, link, + tdc, channel); if (!cabling) { ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : " ); @@ -271,9 +267,7 @@ StatusCode MdtDigitToMdtRDO::fillTagInfo() const { return StatusCode::FAILURE; std::string cablingType=""; - //if (m_cabling->usingOldCabling() ) { - //if (readCdo->usingOldCabling() ) { //it was only implemeted in the Svc for Run2 - if ( false ) { //this should be false from Run2, so the switch can be removed for Run3 + if (m_cabling->usingOldCabling() ) { cablingType="OldMDT_Cabling"; } else { -- GitLab From b2d8b549183fafc8b5be1427f5cd9a33e0cab687 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sun, 18 Nov 2018 17:20:18 +0100 Subject: [PATCH 030/135] adding readCdo in MdtDigitToMdtRDO Former-commit-id: 7cacde5d412c618d21bc63a40d7ca30825df77ff --- .../MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt | 7 ++++--- .../MuonByteStreamCnvTest/MdtDigitToMdtRDO.h | 5 +++++ .../MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx | 8 ++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt index 246bb445e22..ef63407e2ca 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt @@ -28,18 +28,19 @@ atlas_depends_on_subdirs( PUBLIC MuonSpectrometer/MuonCnv/MuonTGC_CnvTools MuonSpectrometer/MuonDigitContainer MuonSpectrometer/MuonIdHelpers - MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData ) + MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData + MuonSpectrometer/MuonCablings/MuonCablingData ) # Component(s) in the package: atlas_add_library( MuonByteStreamCnvTestLib src/*.cxx PUBLIC_HEADERS MuonByteStreamCnvTest LINK_LIBRARIES AthenaBaseComps GaudiKernel MuonReadoutGeometry MuonRDO StoreGateLib SGtests RPCcablingInterfaceLib TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib MuonMDT_CablingLib TGCcablingInterfaceLib MuonIdHelpersLib - PRIVATE_LINK_LIBRARIES EventInfo MuonDigitContainer MuonPrepRawData ) + PRIVATE_LINK_LIBRARIES EventInfo MuonDigitContainer MuonPrepRawData MuonCablingData ) atlas_add_component( MuonByteStreamCnvTest src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps StoreGateLib SGtests GaudiKernel RPCcablingInterfaceLib MuonReadoutGeometry MuonRDO TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib EventInfo MuonMDT_CablingLib TGCcablingInterfaceLib MuonDigitContainer MuonIdHelpersLib MuonPrepRawData MuonByteStreamCnvTestLib ) + LINK_LIBRARIES AthenaBaseComps StoreGateLib SGtests GaudiKernel RPCcablingInterfaceLib MuonReadoutGeometry MuonRDO TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib EventInfo MuonMDT_CablingLib TGCcablingInterfaceLib MuonDigitContainer MuonIdHelpersLib MuonPrepRawData MuonByteStreamCnvTestLib MuonCablingData ) # Install files from the package: atlas_install_python_modules( python/*.py ) diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h index d0374bdd2aa..1d6c3bc8755 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h @@ -12,6 +12,9 @@ #include "MuonRDO/MdtCsmContainer.h" #include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" +#include "MuonCablingData/MuonMDT_CablingMap.h" +#include "StoreGate/ReadCondHandleKey.h" + class MdtIdHelper; ///////////////////////////////////////////////////////////////////////////// @@ -36,6 +39,8 @@ class MdtDigitToMdtRDO : public AthAlgorithm { bool m_BMEpresent; SG::WriteHandleKey<MdtCsmContainer> m_csmContainerKey{this,"OutputObjectName","MDTCSM","WriteHandleKey for Output MdtCsmContainer"}; SG::ReadHandleKey<MdtDigitContainer> m_digitContainerKey{this,"InputObjectName","MDT_DIGITS","ReadHandleKey for Input MdtDigitContainer"}; + SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; + }; #endif diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx index 5f6ce979da6..2a748b23c20 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx @@ -44,6 +44,7 @@ StatusCode MdtDigitToMdtRDO::initialize() ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_digitContainerKey ); ATH_CHECK( detStore()->retrieve(m_mdtIdHelper,"MDTIDHELPER") ); ATH_CHECK( m_cabling.retrieve() ); + ATH_CHECK( m_readKey.initialize() ); if ( fillTagInfo().isFailure() ) { ATH_MSG_WARNING( "Could not fill the tagInfo for MDT cabling" ); @@ -95,6 +96,13 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { MdtCsmIdHash hashF; + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==0){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return StatusCode::FAILURE; + } + // Iterate on the collections collection_iterator it_coll = container->begin(); for ( ; it_coll != container->end(); ++it_coll) -- GitLab From 03a897a6c9ee6485f7cae6e48c50f886c1f2a624 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sun, 18 Nov 2018 18:45:09 +0100 Subject: [PATCH 031/135] replaced MuonMDT_CablingSvc to readCdo in MdtDigitToMdtRDO Former-commit-id: 2fc7a8aa0062896a8b275ab69ed52e5af0c430b1 --- .../src/MdtDigitToMdtRDO.cxx | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx index 2a748b23c20..0fcda897682 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx @@ -122,10 +122,10 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { uint8_t tdc; uint8_t channel; - bool cabling = m_cabling->getOnlineId(name, eta, phi, - 1, 1, 1, - subsystem, mrod, link, - tdc, channel); + bool cabling = readCdo->getOnlineId(name, eta, phi, + 1, 1, 1, + subsystem, mrod, link, + tdc, channel); if (!cabling) { ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : " ); @@ -173,10 +173,10 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { if ( name == 53 ) { uint8_t subsystem_2ndcsm, mrod_2ndcsm, link_2ndcsm, tdc_2ndcsm, channel_2ndcsm; - cabling = m_cabling->getOnlineId(name, eta, phi, 1, 1, 43, - subsystem_2ndcsm, mrod_2ndcsm, - link_2ndcsm, tdc_2ndcsm, channel_2ndcsm); - + cabling = readCdo->getOnlineId(name, eta, phi, 1, 1, 43, + subsystem_2ndcsm, mrod_2ndcsm, + link_2ndcsm, tdc_2ndcsm, channel_2ndcsm); + if (!cabling) { ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : " ); ATH_MSG_ERROR( name << " " @@ -204,10 +204,10 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { int tube = m_mdtIdHelper->tube(channelId); // Get the online Id of the channel - cabling = m_cabling->getOnlineId(name, eta, phi, - multilayer, layer, tube, - subsystem, mrod, link, - tdc, channel); + cabling = readCdo->getOnlineId(name, eta, phi, + multilayer, layer, tube, + subsystem, mrod, link, + tdc, channel); if (!cabling) { ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : " ); @@ -273,7 +273,7 @@ StatusCode MdtDigitToMdtRDO::fillTagInfo() const { ServiceHandle<ITagInfoMgr> tagInfoMgr ("TagInfoMgr", name()); if (tagInfoMgr.retrieve().isFailure()) return StatusCode::FAILURE; - + /* std::string cablingType=""; if (m_cabling->usingOldCabling() ) { cablingType="OldMDT_Cabling"; @@ -281,7 +281,9 @@ StatusCode MdtDigitToMdtRDO::fillTagInfo() const { else { cablingType="NewMDT_Cabling"; } - + */ + //this should be new from Run2 so the switch can be removed + std::string cablingType="NewMDT_Cabling"; StatusCode sc = tagInfoMgr->addTag("MDT_CablingType",cablingType); if(sc.isFailure()) { -- GitLab From a568192a9d5cfeda7804bf442332c065e732ccca Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sun, 18 Nov 2018 19:40:08 +0100 Subject: [PATCH 032/135] removed MuonMDT_CablingSvc from MdtDigitToMdtRDO Former-commit-id: 46c8b146c93afc97b5c084ed23f433980d89059a --- .../MuonByteStreamCnvTest/MdtDigitToMdtRDO.h | 2 -- .../MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx | 4 ---- 2 files changed, 6 deletions(-) diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h index 1d6c3bc8755..b59e720d29a 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h @@ -10,7 +10,6 @@ #include "MuonDigitContainer/MdtDigitContainer.h" #include "MuonRDO/MdtCsmContainer.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" #include "MuonCablingData/MuonMDT_CablingMap.h" #include "StoreGate/ReadCondHandleKey.h" @@ -34,7 +33,6 @@ class MdtDigitToMdtRDO : public AthAlgorithm { protected: - ServiceHandle<MuonMDT_CablingSvc> m_cabling; const MdtIdHelper* m_mdtIdHelper; bool m_BMEpresent; SG::WriteHandleKey<MdtCsmContainer> m_csmContainerKey{this,"OutputObjectName","MDTCSM","WriteHandleKey for Output MdtCsmContainer"}; diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx index 0fcda897682..4eb890ba8bf 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx @@ -6,8 +6,6 @@ #include "MuonDigitContainer/MdtDigitCollection.h" #include "MuonDigitContainer/MdtDigit.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" - #include "MuonRDO/MdtCsmIdHash.h" #include "MuonRDO/MdtCsmContainer.h" #include "MuonRDO/MdtCsm.h" @@ -27,7 +25,6 @@ using namespace std; MdtDigitToMdtRDO::MdtDigitToMdtRDO(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name, pSvcLocator), - m_cabling("MuonMDT_CablingSvc", name), m_mdtIdHelper(0), m_BMEpresent(false) { @@ -43,7 +40,6 @@ StatusCode MdtDigitToMdtRDO::initialize() ATH_CHECK( m_digitContainerKey.initialize() ); ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_digitContainerKey ); ATH_CHECK( detStore()->retrieve(m_mdtIdHelper,"MDTIDHELPER") ); - ATH_CHECK( m_cabling.retrieve() ); ATH_CHECK( m_readKey.initialize() ); if ( fillTagInfo().isFailure() ) { -- GitLab From be03affe65896f9a542a6e4156bd5c8652562bf2 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sun, 18 Nov 2018 20:18:35 +0100 Subject: [PATCH 033/135] removed MuonMDT_CablingSvc from MdtRDO_Decoder Former-commit-id: f9e54019bf07b73502b97ca1bbc5bf18c09310ff --- .../MuonMDT_CnvTools/src/MdtRDO_Decoder.cxx | 24 ++--------- .../MuonMDT_CnvTools/src/MdtRDO_Decoder.h | 43 +++++++++++-------- 2 files changed, 30 insertions(+), 37 deletions(-) diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.cxx index 6a3ec2d7bb5..67880443b04 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "MdtRDO_Decoder.h" @@ -8,19 +8,13 @@ using namespace Muon; MdtRDO_Decoder::MdtRDO_Decoder(const std::string& type, const std::string& name,const IInterface* parent) : AthAlgTool(type,name,parent), - m_mdtIdHelper(0), - m_cablingSvc(0) + m_mdtIdHelper(0) { declareInterface< Muon::IMDT_RDO_Decoder >( this ); } StatusCode MdtRDO_Decoder::initialize() { - - if (StatusCode::SUCCESS != service("MuonMDT_CablingSvc", m_cablingSvc)) { - ATH_MSG_ERROR(" Can't get MuonMDT_CablingSvc "); - return StatusCode::FAILURE; - } - + StoreGateSvc * detStore; StatusCode status = service("DetectorStore", detStore); if (status.isFailure()) { @@ -36,7 +30,7 @@ StatusCode MdtRDO_Decoder::initialize() { else { ATH_MSG_DEBUG(" Found the MdtIdHelper. "); } - + ATH_CHECK( m_readKey.initialize() ); return StatusCode::SUCCESS; } @@ -47,13 +41,3 @@ StatusCode MdtRDO_Decoder::finalize() } -//void MdtRDO_Decoder::set(const MdtIdHelper * mdtIdHelper, const MDTcablingSvc* mdtCabling) -//{ -// m_mdtIdHelper = mdtIdHelper; -// m_cablingSvc = mdtCabling; -//} - - - - - diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h index 583ecde58a9..71956744cbf 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef MUONBYTESTREAMMDTRDODECODER_H @@ -10,7 +10,8 @@ #include "MuonRDO/MdtAmtHit.h" #include "MuonDigitContainer/MdtDigit.h" #include "MuonIdHelpers/MdtIdHelper.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" +#include "MuonCablingData/MuonMDT_CablingMap.h" +#include "StoreGate/ReadCondHandleKey.h" #include "MuonMDT_CnvTools/IMDT_RDO_Decoder.h" @@ -31,10 +32,7 @@ namespace Muon { const IInterface* parent ) ; virtual StatusCode initialize(); - virtual StatusCode finalize(); - - - // void set(const MdtIdHelper * mdtIdHelper, const MDTcablingSvc* mdtCabling); + virtual StatusCode finalize(); MdtDigit * getDigit(const MdtAmtHit * amtHit, uint16_t& subdetId, uint16_t& mrodId, uint16_t& csmId) const; @@ -45,7 +43,7 @@ namespace Muon { private: const MdtIdHelper * m_mdtIdHelper; - MuonMDT_CablingSvc* m_cablingSvc; + SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; }; @@ -67,14 +65,18 @@ inline MdtDigit* Muon::MdtRDO_Decoder::getDigit(const MdtAmtHit* amtHit, uint16_ uint16_t fine = amtHit->fine(); int width = (int) amtHit->width(); - bool cab = m_cablingSvc->getOfflineId((uint8_t) subdetId, (uint8_t) mrodId, - (uint8_t) csmId, (uint8_t) tdc, - (uint8_t) chan, - stationName, stationEta, stationPhi, - multiLayer, tubeLayer, tube); - - - + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==0){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return NULL; + } + bool cab = readCdo->getOfflineId((uint8_t) subdetId, (uint8_t) mrodId, + (uint8_t) csmId, (uint8_t) tdc, + (uint8_t) chan, + stationName, stationEta, stationPhi, + multiLayer, tubeLayer, tube); + if (!cab) return NULL; Identifier chanId = m_mdtIdHelper->channelID(stationName, stationEta, stationPhi, @@ -104,8 +106,15 @@ inline Identifier Muon::MdtRDO_Decoder::getOfflineData(const MdtAmtHit* amtHit, uint16_t coarse = amtHit->coarse(); uint16_t fine = amtHit->fine(); width = (int) amtHit->width(); - - bool cab = m_cablingSvc->getOfflineId(subdetId, mrodId, csmId, tdc, chan, + + Identifier chanIdDefault; + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==0){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return chanIdDefault; + } + bool cab = readCdo->getOfflineId(subdetId, mrodId, csmId, tdc, chan, stationName, stationEta, stationPhi, multiLayer, tubeLayer, tube); -- GitLab From aa547f502f79ccd158cb07a1e355b868e20cd08d Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Sun, 18 Nov 2018 21:39:23 +0100 Subject: [PATCH 034/135] my readCdo check if nullptr rather than 0 Former-commit-id: 0489841ed4130dc94dbfc6981a2c9b8326327f9a --- .../MuonAlignErrorTool/src/AlignmentErrorTool.cxx | 2 +- .../MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx | 4 ++-- .../MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h | 4 ++-- .../MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataTool.cxx | 2 +- .../MuonCondSvc/src/MuonAlignmentErrorDbAlg.cxx | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx b/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx index 344de640956..851b0c882a2 100644 --- a/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx +++ b/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx @@ -79,7 +79,7 @@ void AlignmentErrorTool::makeAlignmentDeviations (const Trk::Track& track, std:: SG::ReadCondHandle<MuonAlignmentErrorData> readHandle{m_readKey}; const MuonAlignmentErrorData* readCdo{*readHandle}; - if(readCdo==0){ + if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); std::cout<<"ckato Null pointer to the read conditions object"<<std::endl; return; diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx index 110c4f7e80e..4bc4baf9de8 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx @@ -66,7 +66,7 @@ StatusCode MuonMDT_CablingAlg::execute(){ SG::ReadCondHandle<CondAttrListCollection> readHandleMez{ m_readKeyMez }; const CondAttrListCollection* readCdoMez{*readHandleMez}; - if(readCdoMez==0){ + if(readCdoMez==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return StatusCode::FAILURE; } @@ -80,7 +80,7 @@ StatusCode MuonMDT_CablingAlg::execute(){ SG::ReadCondHandle<CondAttrListCollection> readHandleMap{ m_readKeyMap }; const CondAttrListCollection* readCdoMap{*readHandleMap}; - if(readCdoMap==0){ + if(readCdoMap==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return StatusCode::FAILURE; } diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h index 71956744cbf..8c5c85053be 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h @@ -67,7 +67,7 @@ inline MdtDigit* Muon::MdtRDO_Decoder::getDigit(const MdtAmtHit* amtHit, uint16_ SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; const MuonMDT_CablingMap* readCdo{*readHandle}; - if(readCdo==0){ + if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return NULL; } @@ -110,7 +110,7 @@ inline Identifier Muon::MdtRDO_Decoder::getOfflineData(const MdtAmtHit* amtHit, Identifier chanIdDefault; SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; const MuonMDT_CablingMap* readCdo{*readHandle}; - if(readCdo==0){ + if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return chanIdDefault; } diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataTool.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataTool.cxx index 695bafcc870..08e0993f433 100644 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataTool.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataTool.cxx @@ -164,7 +164,7 @@ StatusCode Muon::MdtRdoToPrepDataTool::decode( const std::vector<uint32_t>& robI { SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; const MuonMDT_CablingMap* readCdo{*readHandle}; - if(readCdo==0){ + if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return StatusCode::FAILURE; } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MuonAlignmentErrorDbAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MuonAlignmentErrorDbAlg.cxx index 4c76add8d4e..cad8d2fe9e7 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MuonAlignmentErrorDbAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MuonAlignmentErrorDbAlg.cxx @@ -45,7 +45,7 @@ StatusCode MuonAlignmentErrorDbAlg::execute(){ const CondAttrListCollection* readCdo{*readHandle}; //const CondAttrListCollection* atrc(0); //readCdo = *readHandle; - if(readCdo==0){ + if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return StatusCode::FAILURE; } -- GitLab From 82df013e736958594410e5b0d9f68dc659162b04 Mon Sep 17 00:00:00 2001 From: amete <serhanmete@gmail.com> Date: Mon, 19 Nov 2018 10:49:48 +0100 Subject: [PATCH 035/135] Convert counters to atomic type and be explicit about overridden members Former-commit-id: cb01705612c6f525012fb7a2af66a5390b119f45 --- .../PerfMonVTune/src/VTuneProfilerService.h | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h index c036730d8f7..fea9cf1ba3d 100644 --- a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h @@ -1,6 +1,9 @@ #ifndef VTUNE_PROFILERSERVICE_H #define VTUNE_PROFILERSERVICE_H +// STD include(s): +#include <atomic> + // Gaudi/Athena include(s): #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/IIncidentListener.h" @@ -25,25 +28,25 @@ class VTuneProfilerService : public AthService, /// Function declaring the interface(s) implemented by the service virtual StatusCode queryInterface( const InterfaceID& riid, - void** ppvIF ); + void** ppvIF ) override; /// Standard Gaudi initialization function - virtual StatusCode initialize(); + virtual StatusCode initialize() override; /// Standard Gaudi finalization function - virtual StatusCode finalize(); + virtual StatusCode finalize() override; /// Resume profiling - virtual StatusCode resumeProfiling(); + virtual StatusCode resumeProfiling() override; /// Pause profiling - virtual StatusCode pauseProfiling(); + virtual StatusCode pauseProfiling() override; /// Is the profiling running at the moment? - virtual bool isProfilingRunning() const; + virtual bool isProfilingRunning() const override; /// Function handling incoming incidents - virtual void handle( const Incident& inc ); + virtual void handle( const Incident& inc ) override; private: @@ -57,10 +60,10 @@ class VTuneProfilerService : public AthService, int m_pauseEvent; /// Is the profiling running at the moment? - bool m_running; + std::atomic<bool> m_running; /// Number of events processed so far - int m_processedEvents; + std::atomic<int> m_processedEvents; }; // class IVTuneProfilerSvc -- GitLab From 375b5f63ea6978bda86da4ba49c34e39ca57c488 Mon Sep 17 00:00:00 2001 From: amete <serhanmete@gmail.com> Date: Mon, 19 Nov 2018 14:22:48 +0100 Subject: [PATCH 036/135] Restructure API calls Former-commit-id: c6df2773c956a303a4f6f6d7995b962743bdf33b --- .../PerfMonVTune/src/VTuneProfileRunner.h | 18 ++++++++ .../PerfMonVTune/src/VTuneProfilerService.cxx | 43 ++++++------------- .../PerfMonVTune/src/VTuneProfilerService.h | 9 ++-- 3 files changed, 34 insertions(+), 36 deletions(-) create mode 100644 Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h new file mode 100644 index 00000000000..4a115695359 --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h @@ -0,0 +1,18 @@ +#ifndef VTUNE_PROFILERUNNER_H +#define VTUNE_PROFILERUNNER_H + +// VTune include(s) +#include <ittnotify.h> + +class VTuneProfileRunner { + + public: + + /// Standard constructor uses the API to resume collection + VTuneProfileRunner() { __itt_resume(); } + /// Standard destructor uses the API to pause collection + ~VTuneProfileRunner() { __itt_pause(); } + +}; + +#endif // VTUNE_PROFILERUNNER_H diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx index b7d0b915fe7..739fd4a4325 100644 --- a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx @@ -1,6 +1,3 @@ -// VTune include(s) -#include <ittnotify.h> - // Gaudi/Athena include(s): #include "AthenaKernel/errorcheck.h" @@ -19,7 +16,8 @@ static const std::string ENDEVTLOOP_INCIDENT_NAME = "EndEvtLoop"; VTuneProfilerService::VTuneProfilerService( const std::string& name, ISvcLocator* svcloc ) : AthService( name, svcloc ), m_incidentSvc( "IncidentSvc", name ), - m_running( false ), m_processedEvents( 0 ) { + m_processedEvents( 0 ) { + //m_running( false ), m_processedEvents( 0 ) { declareProperty( "ResumeEvent", m_resumeEvent = 0, "Event in which to resume the profiling." ); @@ -28,17 +26,6 @@ VTuneProfilerService::VTuneProfilerService( const std::string& name, ISvcLocator "profiles the entire event-loop." ); } -/** - * Destructor - */ -VTuneProfilerService::~VTuneProfilerService() { - - if( m_running ) { - __itt_pause(); // Pause - } - -} - /** * QueryInterface */ @@ -97,7 +84,7 @@ StatusCode VTuneProfilerService::finalize() { StatusCode VTuneProfilerService::resumeProfiling() { // Check whether the profiling is already running: - if( m_running ) { + if( m_runner ) { ATH_MSG_INFO( "VTune profiling already running!" ); return StatusCode::SUCCESS; } @@ -106,10 +93,7 @@ StatusCode VTuneProfilerService::resumeProfiling() { ATH_MSG_INFO( "Starting VTune profiling." ); // Resume VTune - __itt_resume(); - - // Set the flag - m_running = true; + m_runner = std::make_unique< VTuneProfileRunner >(); return StatusCode::SUCCESS; } @@ -120,7 +104,7 @@ StatusCode VTuneProfilerService::resumeProfiling() { StatusCode VTuneProfilerService::pauseProfiling() { // Check whether the profiling is already running: - if( !m_running ) { + if( !m_runner ) { ATH_MSG_INFO( "VTune profiling is not running!" ); return StatusCode::SUCCESS; } @@ -128,11 +112,8 @@ StatusCode VTuneProfilerService::pauseProfiling() { // Print information ATH_MSG_INFO( "Stopping VTune profiling." ); - // Resume VTune - __itt_pause(); - - // Set the flag - m_running = false; + // Pause VTune + m_runner.reset(); return StatusCode::SUCCESS; } @@ -142,7 +123,7 @@ StatusCode VTuneProfilerService::pauseProfiling() { */ bool VTuneProfilerService::isProfilingRunning() const { - return m_running; + return (m_runner!=nullptr); } @@ -155,13 +136,13 @@ void VTuneProfilerService::handle( const Incident& inc ) { // Pause the profiling after the last event // if( inc.type() == ENDEVTLOOP_INCIDENT_NAME ) { - if( m_running ) { + if( m_runner ) { if( pauseProfiling().isFailure() ) { REPORT_MESSAGE( MSG::ERROR ) << "Could not pause the profiling"; } - return; } + return; } // @@ -169,7 +150,7 @@ void VTuneProfilerService::handle( const Incident& inc ) { // if( inc.type() == BEGINEVENT_INCIDENT_NAME ) { if( m_resumeEvent == m_processedEvents && - !m_running ) { + !m_runner ) { if( resumeProfiling().isFailure() ) { REPORT_MESSAGE( MSG::ERROR ) << "Could not resume the profiling"; @@ -177,7 +158,7 @@ void VTuneProfilerService::handle( const Incident& inc ) { } if( m_pauseEvent == m_processedEvents ) { if( pauseProfiling().isFailure() && - m_running ) { + m_runner ) { REPORT_MESSAGE( MSG::ERROR ) << "Could not pause the profiling"; } diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h index fea9cf1ba3d..2c68239311b 100644 --- a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h @@ -3,6 +3,7 @@ // STD include(s): #include <atomic> +#include <memory> // Gaudi/Athena include(s): #include "GaudiKernel/ServiceHandle.h" @@ -11,6 +12,7 @@ #include "AthenaBaseComps/AthService.h" // Local include(s): +#include "VTuneProfileRunner.h" #include "PerfMonVTune/IVTuneProfilerSvc.h" @@ -23,9 +25,6 @@ class VTuneProfilerService : public AthService, /// Standard Gaudi service constructor VTuneProfilerService( const std::string& name, ISvcLocator* svcloc ); - /// Destructor - virtual ~VTuneProfilerService(); - /// Function declaring the interface(s) implemented by the service virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvIF ) override; @@ -59,8 +58,8 @@ class VTuneProfilerService : public AthService, /// Property: Event in which profiling should pause int m_pauseEvent; - /// Is the profiling running at the moment? - std::atomic<bool> m_running; + /// Unique ptr to the VTuneProfileRunner + std::unique_ptr< VTuneProfileRunner > m_runner; /// Number of events processed so far std::atomic<int> m_processedEvents; -- GitLab From c5e1fc7681d0bef2fdbfa5e790f5a16e9d40eaeb Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Mon, 19 Nov 2018 14:32:26 +0100 Subject: [PATCH 037/135] migrated MuonMDT_CablingSvc to readCdo in MdtDataPreparator Former-commit-id: 7f05adcbacfedecd6947d015fd01e48c823ed63b --- .../TrigL2MuonSA/MdtDataPreparator.h | 10 ++++---- .../TrigL2MuonSA/src/MdtDataPreparator.cxx | 23 +++++++++++-------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MdtDataPreparator.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MdtDataPreparator.h index 98964798fb3..c572d1402cd 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MdtDataPreparator.h +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MdtDataPreparator.h @@ -29,7 +29,8 @@ #include "TrigL2MuonSA/RpcFitResult.h" #include "TrigL2MuonSA/TgcFitResult.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" +#include "MuonCablingData/MuonMDT_CablingMap.h" +#include "StoreGate/ReadCondHandleKey.h" #include "MuonPrepRawData/MuonPrepDataContainer.h" @@ -130,10 +131,7 @@ namespace TrigL2MuonSA { ToolHandle<Muon::IMuonRawDataProviderTool> m_mdtRawDataProvider; //ToolHandle<Muon::IMuonRawDataProviderTool> m_mdtRawDataProvider { // this, "MDT_RawDataProvider", "Muon::MDT_RawDataProviderTool", "MDTRawDataProviderTool"}; - - // Cabling - ServiceHandle<MuonMDT_CablingSvc> m_mdtCabling; - + // Geometry Services const MuonGM::MuonDetectorManager* m_muonMgr; const MuonGM::MdtReadoutElement* m_mdtReadout; @@ -171,6 +169,8 @@ namespace TrigL2MuonSA { int m_BMGid; std::map<Identifier, std::vector<Identifier> > m_DeadChannels; + SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; + }; } // namespace TrigL2MuonSA diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MdtDataPreparator.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MdtDataPreparator.cxx index 36cae716dbf..fc2898a5a19 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MdtDataPreparator.cxx +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MdtDataPreparator.cxx @@ -58,7 +58,6 @@ TrigL2MuonSA::MdtDataPreparator::MdtDataPreparator(const std::string& type, m_storeGateSvc( "StoreGateSvc", name ), m_activeStore( "ActiveStoreSvc", name ), m_mdtRawDataProvider("Muon::MDT_RawDataProviderTool"), - m_mdtCabling("MuonMDT_CablingSvc", name), m_regionSelector("RegSelSvc", name ), m_robDataProvider("ROBDataProviderSvc", name), m_recMuonRoIUtils(), @@ -120,9 +119,7 @@ StatusCode TrigL2MuonSA::MdtDataPreparator::initialize() ATH_CHECK( m_mdtRegionDefiner.retrieve() ); ATH_MSG_DEBUG("Retrieved service " << m_mdtRegionDefiner); - // initialize the NEW cabling service - ATH_CHECK( m_mdtCabling.retrieve()); - ATH_MSG_DEBUG("Retrieved the new cabling service "); + ATH_CHECK( m_readKey.initialize() ); // retrieve the mdtidhelper ServiceHandle<StoreGateSvc> detStore("DetectorStore", name()); @@ -290,12 +287,19 @@ StatusCode TrigL2MuonSA::MdtDataPreparator::getMdtHits(const LVL1::RecMuonRoI* ATH_MSG_DEBUG("size of the hashids in getMdtHits " << mdtHashList.size()); if (roi) delete roi; + + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==nullptr){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return StatusCode::FAILURE; + } bool redundant; for(int hash_iter=0; hash_iter<(int)mdtHashList.size(); hash_iter++){ redundant = false; - uint32_t newROBId = m_mdtCabling->getROBId(mdtHashList[hash_iter]); + uint32_t newROBId = readCdo->getROBId(mdtHashList[hash_iter]); for (int rob_iter=0; rob_iter<(int)v_robIds.size(); rob_iter++){ if(newROBId == v_robIds[rob_iter]) @@ -525,13 +529,14 @@ bool TrigL2MuonSA::MdtDataPreparator::decodeMdtCsm(const MdtCsm* csm, unsigned short int MrodId = csm->MrodId(); unsigned short int LinkId = csm->CsmId(); - MuonMDT_CablingMap* cablingMap = m_mdtCabling->getCablingMap(); - if (!cablingMap) { - ATH_MSG_DEBUG("Null pointer to MuonMDT_CablingMap"); + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==nullptr){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); return true; } - MdtSubdetectorMap* subdetectorMap = cablingMap->getSubdetectorMap(SubsystemId); + MdtSubdetectorMap* subdetectorMap = readCdo->getSubdetectorMap(SubsystemId); if (!subdetectorMap) { ATH_MSG_DEBUG("Null pointer to MdtSubdetectorMap"); return true; -- GitLab From 562adb73bad86635ba172d64667da604d137cca4 Mon Sep 17 00:00:00 2001 From: amete <serhanmete@gmail.com> Date: Mon, 19 Nov 2018 16:06:57 +0100 Subject: [PATCH 038/135] Adding a driver script that runs athena transforms through VTune Former-commit-id: 599daea9ba4d75ce6c47083b9082e73fc8b0a364 --- .../PerfMonVTune/scripts/vtune_athena.py | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100755 Control/PerformanceMonitoring/PerfMonVTune/scripts/vtune_athena.py diff --git a/Control/PerformanceMonitoring/PerfMonVTune/scripts/vtune_athena.py b/Control/PerformanceMonitoring/PerfMonVTune/scripts/vtune_athena.py new file mode 100755 index 00000000000..673ebba0b9e --- /dev/null +++ b/Control/PerformanceMonitoring/PerfMonVTune/scripts/vtune_athena.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python + +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + +import glob +import logging +import multiprocessing +import os +import subprocess +import sys +import uuid + +# Setting logging options +fmt = '%(asctime)s :: %(levelname)-8s :: %(message)s' +datefmt = '%m/%d/%Y %H:%M' +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.DEBUG, + format=fmt, + datefmt=datefmt, + filename='./vtune_athena.log', + filemode='w') +console = logging.StreamHandler() +formatter = logging.Formatter(fmt,datefmt=datefmt) +console.setFormatter(formatter) +logger.addHandler(console) + +#### +## Check Athena Setup +#### +def checkAthenaSetup(): + try: + a = subprocess.check_output(['athena','--version']) + logger.debug('Athena version information \n %s',a) + except: + logger.fatal('Athena is not setup!') + sys.exit(-1) + +#### +## Check VTune Setup +#### +def checkVTuneSetup(): + try: + a = subprocess.check_output(['amplxe-cl','--version']) + logger.debug('VTune version information \n %s',a) + except: + logger.fatal('VTune is not setup!') + sys.exit(-1) + +#### +## AutoGen a jobOptions fragment +#### +def generateJOFragment(fileName,firstEvent,lastEvent): + logger.info('Creating jOptions fragment %s', fileName) + with open('{}'.format(fileName),'w') as f: + f.write('# Auto generated jobOptions fragment to setup Athena VTune profiler') + f.write('\ninclude(\'PerfMonVTune/VTuneProfileEventLoop_preInclude.py\')') + f.write('\n\nfrom AthenaCommon.AppMgr import ServiceMgr') + f.write('\nServiceMgr.VTuneProfilerService.ResumeEvent = {}'.format(firstEvent)) + f.write('\nServiceMgr.VTuneProfilerService.PauseEvent = {}'.format(lastEvent)) + +#### +## Main Function +#### +def main(): + ''' Main function that parses user inputs, prepares and runs the tests ''' + + from optparse import OptionParser + parser=OptionParser(usage='%prog [options]', + version='%prog 0.1.0') + + parser.add_option('--log-level', + type='choice', + action='store', + dest='logLevel', + choices=['critical','error','warning','info','debug'], + default='info', + help='Logging level (default: info)') + + parser.add_option('--collect', + type='choice', + action='store', + dest='collect', + choices=['hotspots','threading','memory-consumption', + 'hpc-performance','memory-access','cpugpu-concurrency', + 'gpu-hotspots','gpu-profiling','graphics-rendering', + 'fpga-interaction','io','system-overview'], + default='hotspots', + help='Run the specified analysis type and collect data into a result (default: hotspots)') + + parser.add_option('--strategy', + type='string', + dest='strategy', + default=':trace:trace', + help='Run the specified strategy and collect data into a result. (default: :trace:trace)') + + parser.add_option('--tf', + type='string', + dest='tf', + default='', + help='Run the specified transformation command and collect data into a result.') + + parser.add_option('--resumeEvent', + type='int', + dest='start', + default=0, + help='Start the profiling from the specified event (default: 0).') + + parser.add_option('--pauseEvent', + type='int', + dest='stop', + default=-1, + help='Start the profiling at the specified event (default: -1).') + + (options,args) = parser.parse_args() + + logger.info(76*'-') + + # Set logging level + logger.setLevel(options.logLevel.upper()) + + # Check the Athena and VTune setups + checkAthenaSetup() + checkVTuneSetup() + + # Perpare the JO fragment + joFragment = 'PerfMonVTune_autoSetup.py' + generateJOFragment(joFragment, options.start, options.stop) + + # Prepare the transformation command to execute + if not options.tf: + logger.fatal('The transformation command is empty, quitting...') + sys.exit(-1) + + args = options.tf.split() + if 'preInclude' in args: + index = args.index('--preInclude') + args.insert(index+1,joFragment) + else: + args.extend(['--preInclude',joFragment]) + + # Run the command + cmd = ( 'amplxe-cl' + + ' -collect ' + options.collect + + ' -strategy ' + options.strategy + + ' -start-paused -- ' ) + cmd += ' '.join(args) + + logger.info('Running the full command "{}"'.format(cmd)) + subprocess.call(cmd,shell=True) + + logger.info('All done...') + logger.info(76*'-') + +if __name__ == '__main__': + main() -- GitLab From 86c6c5cee36b49c4b113c8178425eef8e126affc Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Mon, 19 Nov 2018 16:12:24 +0100 Subject: [PATCH 039/135] migrated MuonMDT_CablingSvc to readCdo in MDT_RawDataProviderTool Former-commit-id: 4fe429c037a432e210d664fef194881dc35333da --- .../MuonCablingData/MuonMDT_CablingMap.h | 3 ++ .../src/MuonMDT_CablingMap.cxx | 26 +++++++++++++- .../src/MuonMDT_CablingSvc.cxx | 2 +- .../src/MDT_RawDataProviderTool.cxx | 35 +++++++++---------- .../src/MDT_RawDataProviderTool.h | 10 ++++-- 5 files changed, 52 insertions(+), 24 deletions(-) diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h index c2ee5f755af..b4af30a6ede 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h @@ -71,6 +71,9 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> { /** return the ROD id of a given chamber, given the hash id */ uint32_t getROBId(const IdentifierHash stationCode) const; + /** get the robs corresponding to a vector of hashIds, copied from Svc before the readCdo migration */ + std::vector<uint32_t> getROBId(const std::vector<IdentifierHash>& mdtHashVector) const; + /** return a vector of HashId lists for a given list of ROD's */ const std::vector<IdentifierHash> getChamberHashVec(const std::vector< uint32_t> &ROBId_list) const; diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx index 9e598e05fea..a66b346cbc4 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "MuonCablingData/MuonMDT_CablingMap.h" @@ -407,6 +407,7 @@ uint32_t MuonMDT_CablingMap::getROBId(int station, int eta, int phi) const } // get the ROBid given the identifier hash + uint32_t MuonMDT_CablingMap::getROBId(const IdentifierHash stationCode) const { int rodId = 0; @@ -423,6 +424,29 @@ uint32_t MuonMDT_CablingMap::getROBId(const IdentifierHash stationCode) const return rodId; } +//get the robs corresponding to a vector of hashIds, copied from Svc before the readCdo migration + +std::vector<uint32_t> MuonMDT_CablingMap::getROBId(const std::vector<IdentifierHash>& mdtHashVector) const +{ + std::vector<uint32_t> robVector; + + for ( unsigned int i = 0 ; i<mdtHashVector.size() ; ++i ) { + + int robId = getROBId(mdtHashVector[i]); + if (robId==0) { + + *m_log << MSG::ERROR << "ROB id not found for Hash Id: " << mdtHashVector[i] << endmsg; + + } else { + *m_log << MSG::VERBOSE << "Found ROB id 0x" << MSG::hex << robId << MSG::dec << " for hashId " << mdtHashVector[i] << endmsg; + } + robVector.push_back(robId); + } + *m_log << MSG::VERBOSE << "Size of ROB vector is: " << robVector.size() << endmsg; + + return robVector; +} + const std::vector<IdentifierHash>& MuonMDT_CablingMap::getChamberHashVec(const uint32_t ROBId) const { RODToChamberMap::const_iterator Rob_it = m_RODToChamber->find(ROBId); diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingSvc.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingSvc.cxx index a61f1284396..f3e99a74619 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingSvc.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingSvc.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx index ab52b421601..1a7323f9061 100644 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx @@ -8,7 +8,6 @@ #include "StoreGate/StoreGateSvc.h" #include "GaudiKernel/IJobOptionsSvc.h" #include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" // using namespace OFFLINE_FRAGMENTS_NAMESPACE; @@ -21,7 +20,6 @@ Muon::MDT_RawDataProviderTool::MDT_RawDataProviderTool(const std::string& t, //m_lastLvl1ID(0), m_decoder("MdtROD_Decoder/MdtROD_Decoder", this), m_muonMgr(0), - m_mdtCabling(0), m_robDataProvider ("ROBDataProviderSvc",n) { declareInterface<Muon::IMuonRawDataProviderTool>(this); @@ -43,20 +41,6 @@ StatusCode Muon::MDT_RawDataProviderTool::initialize() return sc; } - ATH_MSG_VERBOSE("Getting cabling"); - - // get MDT cablingSvc - StatusCode status = service("MuonMDT_CablingSvc", m_mdtCabling); - - if (status.isFailure()) { - ATH_MSG_FATAL("Could not get MuonMDT_CablingSvc !"); - m_mdtCabling = 0; - return StatusCode::FAILURE; - } - else { - ATH_MSG_DEBUG(" Found the MuonMDT_CablingSvc. "); - } - ATH_MSG_VERBOSE("Getting m_robDataProvider"); // Get ROBDataProviderSvc @@ -164,6 +148,7 @@ StatusCode Muon::MDT_RawDataProviderTool::initialize() } ATH_CHECK( m_rdoContainerKey.initialize() ); + ATH_CHECK( m_readKey.initialize() ); ATH_MSG_INFO("initialize() successful in " << name()); return StatusCode::SUCCESS; @@ -177,12 +162,24 @@ StatusCode Muon::MDT_RawDataProviderTool::finalize() // the new one StatusCode Muon::MDT_RawDataProviderTool::convert() //call decoding function using list of all detector ROBId's { - return convert(m_mdtCabling->getAllROBId()); - } + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==nullptr){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return StatusCode::FAILURE; + } + return convert(readCdo->getAllROBId()); +} StatusCode Muon::MDT_RawDataProviderTool::convert(const std::vector<IdentifierHash>& HashVec) { - return convert(m_mdtCabling->getROBId(HashVec)); + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==nullptr){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return StatusCode::FAILURE; + } + return convert(readCdo->getROBId(HashVec)); } StatusCode Muon::MDT_RawDataProviderTool::convert(const std::vector<uint32_t>& robIds) diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h index 16dd5a607cb..f9e62bd8dd1 100644 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h @@ -14,11 +14,14 @@ #include <vector> #include <set> #include <string> + +#include "MuonCablingData/MuonMDT_CablingMap.h" +#include "StoreGate/ReadCondHandleKey.h" + class MdtCsmContainer; class StoreGateSvc; class ActiveStoreSvc; -class MuonMDT_CablingSvc; class IROBDataProviderSvc; namespace MuonGM { @@ -66,10 +69,11 @@ class MDT_RawDataProviderTool : virtual public IMuonRawDataProviderTool, virtual ActiveStoreSvc* m_activeStore; unsigned int m_maxhashtoUse; bool m_useContainer; - /// MDT cabling Svc - MuonMDT_CablingSvc * m_mdtCabling; // Rob Data Provider handle ServiceHandle<IROBDataProviderSvc> m_robDataProvider; + + SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; + }; } -- GitLab From 2b68320b04029c49dde403db4619200e26a21286 Mon Sep 17 00:00:00 2001 From: Tomasz Bold <tomasz.bold@gmail.com> Date: Mon, 19 Nov 2018 20:38:23 +0100 Subject: [PATCH 040/135] tests changed to run in ART Former-commit-id: 4ca4b91bec87ef179d6f574bc9e16b645de6a8e1 --- .../TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh | 4 ++-- .../TrigUpgradeTest/test/test_calo_run_data.sh | 4 ++-- .../TrigUpgradeTest/test/test_egamma_run_data.sh | 3 +-- .../TrigUpgradeTest/test/test_electron_menu.sh | 3 +-- .../TrigUpgradeTest/test/test_emu_l1_decoding.sh | 4 ++-- .../TrigUpgradeTest/test/test_emu_step_processing.sh | 4 ++-- .../TrigValidation/TrigUpgradeTest/test/test_full_menu.sh | 4 ++-- .../TrigUpgradeTest/test/test_id_calo_run_data.sh | 4 ++-- .../TrigUpgradeTest/test/test_id_run_data.sh | 4 ++-- .../TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh | 4 ++-- Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh | 7 ++++--- .../TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh | 5 +++-- Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh | 4 ++-- Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh | 4 ++-- .../TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh | 5 +++-- .../TrigUpgradeTest/test/test_mu_run_data.sh | 4 ++-- Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh | 5 +++-- .../TrigUpgradeTest/test/test_photon_menu.sh | 4 ++-- .../TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh | 3 +-- .../TrigUpgradeTest/test/test_view_schedule.sh | 5 +++-- 20 files changed, 43 insertions(+), 41 deletions(-) diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh index b97b8b8224f..98d955a644e 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master +# art-include: master/Athena + athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/bjet.menu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh index 16a72603708..2eb89baded3 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" -c 'doID=False' TrigUpgradeTest/IDCalo.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh index a324dd2bbc4..196f90ecc10 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh @@ -1,6 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master +# art-include: master/Athena athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/egamma.withViews.py && checkxAOD.py myESD.pool.root && diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh index db4e7f79ea4..0889d8ee798 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh @@ -1,5 +1,4 @@ #!/bin/sh -# art-type: build -# art-ci: master +# art-include: master/Athena athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/electron.menu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh index a705f0d27c9..5e8d6b27b24 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena.py --threads=1 TrigUpgradeTest/EmuL1DecodingTest.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh index f92b2e530b1..92e6e7b0388 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena.py --threads=1 TrigUpgradeTest/EmuStepProcessingTest.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh index 70a72752f3c..9452ada28d3 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/fullMenu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh index 9214468ffdc..829ea820092 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/IDCalo.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh index 7e4a92036da..b4ca274911c 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" -c 'doCalo=False' TrigUpgradeTest/IDCalo.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh index cda1c694539..fed9a9733eb 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1" -c 'doCalo=False;' TrigUpgradeTest/IDCalo.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh index 947fdae9501..bbcd7729d1e 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh @@ -1,5 +1,6 @@ #!/bin/sh -# art-type: build -# art-ci: master -# 150 events + +# art-include: master/Athena + +# 15 events athena --threads=1 --evtMax=15 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/simpleJetJob.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh index 6e7d545a238..7466b6cf62c 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh @@ -1,5 +1,6 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena + # 150 events athena --threads=1 --evtMax=15 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/jet.menu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh index 346d96f0a7d..db7aa3d70e4 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena.py --threads=1 -c "doL1Sim=True" --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1" TrigUpgradeTest/testHLT_MT.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh index 1a5e7889880..5d0b0cffc59 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena.py --threads=1 TrigUpgradeTest/mergeTest.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh index 2e0d843aa3d..634a76ab3bd 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh @@ -1,6 +1,7 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena + ### BSfile ### athena --threads=1 --skipEvents=30 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/mu.menu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh index 2cace0f291d..78bb4549807 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh @@ -1,6 +1,6 @@ #!/bin/sh -# art-type: build -# art-ci: master +# art-include: master/Athena + ### BSfile ### athena --threads=1 --skipEvents=30 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" -c 'doL2CB=False;doL2ISO=False' TrigUpgradeTest/mu.withViews.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh index 230fceffbe3..b09ed77c6e2 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh @@ -1,6 +1,7 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena + rm -rf newJOtest.py bootstrap.pkl bootstrap.py # this is a hack to pre-confgure scheduler and other MT services, diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh index e78fdccb34c..c3359e833fc 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh @@ -1,5 +1,5 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena athena --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/photon.menu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh index 98627a608a9..a0affa31b80 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh @@ -1,5 +1,4 @@ #!/bin/sh -# art-type: build -# art-ci: master +# art-include: master/Athena athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/tau.menu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh index 86842bd4e06..47fed358070 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh @@ -1,6 +1,7 @@ #!/bin/sh -# art-type: build -# art-ci: master + +# art-include: master/Athena + if [ -z ${THREADS+x} ]; then export THREADS=2; fi athena.py --threads=$THREADS AthViews/ViewScheduling.py unset THREADS -- GitLab From c3328b8b277c20fad2925caa619228b04aad6c72 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Mon, 19 Nov 2018 23:12:43 +0100 Subject: [PATCH 041/135] migrated MuonMDT_CablingSvc to readCdo in MDT_Hid2RESrcID, MdtCsmContByteStreamTool, and MdtROD_Decoder Former-commit-id: 28d702e69e391c4309c784c3ececf1fc2afe9134 --- .../MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx | 33 ++++++++++++------- .../MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h | 11 ++++--- .../src/MdtCsmContByteStreamTool.cxx | 12 ++----- .../src/MdtCsmContByteStreamTool.h | 2 -- .../MuonMDT_CnvTools/src/MdtROD_Decoder.cxx | 19 ++++++----- .../MuonMDT_CnvTools/src/MdtROD_Decoder.h | 6 ++-- 6 files changed, 45 insertions(+), 38 deletions(-) diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx index 2619c9958af..e9d32c3447a 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx @@ -23,15 +23,17 @@ using eformat::helper::SourceIdentifier; MDT_Hid2RESrcID::MDT_Hid2RESrcID() : - m_cabling(0), m_mdtIdHelper(0), m_specialROBNumber(0) + m_mdtIdHelper(0), m_specialROBNumber(0), m_readKey("MuonMDT_CablingMap") { } -void MDT_Hid2RESrcID::set(MuonMDT_CablingSvc* p_cabling, const MdtIdHelper* mdtIdHelper) { +void MDT_Hid2RESrcID::set(const MdtIdHelper* mdtIdHelper) { // Initialize the cabling Service m_mdtIdHelper = mdtIdHelper; - m_cabling = p_cabling; + m_readKey.initialize(); + //ATH_CHECK( m_readKey.initialize() ); + //return StatusCode::SUCCESS; } uint32_t MDT_Hid2RESrcID::getRodID(const Identifier& offlineId) { @@ -63,15 +65,22 @@ uint32_t MDT_Hid2RESrcID::getRodID(const Identifier& offlineId) { int multilayer = m_mdtIdHelper->multilayer(offlineId); int tubelayer = m_mdtIdHelper->tubeLayer(offlineId); int tube = m_mdtIdHelper->tube(offlineId); - - online = m_cabling->getOnlineId(station_name, station_eta, - station_phi, multilayer,tubelayer, - tube, - SubsystemId, - MrodId, - LinkId, - TdcId, - ChannelId); + + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==nullptr){ + //ATH_MSG_ERROR("Null pointer to the read conditions object"); + log << MSG::ERROR << "Null pointer to the read conditions object" << endmsg; + return 0; + } + online = readCdo->getOnlineId(station_name, station_eta, + station_phi, multilayer,tubelayer, + tube, + SubsystemId, + MrodId, + LinkId, + TdcId, + ChannelId); if (!online) { log << MSG::DEBUG << "ROD Id of the Station " << MSG::hex << "0x" << offlineId diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h index f6e0103da65..e30e1331fdc 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h @@ -8,12 +8,13 @@ #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/StatusCode.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" +#include "StoreGate/ReadCondHandle.h" +#include "MuonCablingData/MuonMDT_CablingMap.h" +#include "StoreGate/ReadCondHandleKey.h" #include "MuonIdHelpers/MdtIdHelper.h" #include "Identifier/Identifier.h" - #include <stdint.h> #include <map> @@ -36,7 +37,7 @@ public: /** intialize the cabling service */ - void set(MuonMDT_CablingSvc* p_cabling, const MdtIdHelper* m_mdtIdHelper); + void set(const MdtIdHelper* m_mdtIdHelper); /** TMP method for sector 13 data */ void setSpecialROBNumber(int specialROBNumber) {m_specialROBNumber=specialROBNumber;} @@ -58,11 +59,13 @@ public: private: - MuonMDT_CablingSvc* m_cabling; const MdtIdHelper* m_mdtIdHelper; int m_specialROBNumber; + //SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; + SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey; + }; #endif diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx index 83dfa98295a..6336e8ef0af 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx @@ -5,8 +5,6 @@ #include "MdtCsmContByteStreamTool.h" #include "MdtROD_Encoder.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" - #include "MuonRDO/MdtCsm.h" #include "MuonRDO/MdtCsmContainer.h" @@ -24,7 +22,6 @@ Muon::MdtCsmContByteStreamTool::MdtCsmContByteStreamTool ( const std::string& type, const std::string& name,const IInterface* parent ) : AthAlgTool(type,name,parent), - m_cabling(0), m_hid2re(0), m_mdtIdHelper(0) { @@ -39,11 +36,6 @@ Muon::MdtCsmContByteStreamTool::MdtCsmContByteStreamTool StatusCode Muon::MdtCsmContByteStreamTool::initialize() { - if (StatusCode::SUCCESS != service("MuonMDT_CablingSvc", m_cabling)) { - ATH_MSG_ERROR(" Can't get MuonMDT_CablingSvc "); - return StatusCode::FAILURE; - } - StoreGateSvc * detStore; StatusCode status = service("DetectorStore", detStore); if (status.isFailure()) { @@ -63,7 +55,7 @@ StatusCode Muon::MdtCsmContByteStreamTool::initialize() { } m_hid2re = new MDT_Hid2RESrcID (); - m_hid2re->set(m_cabling, mdt_id); + m_hid2re->set(mdt_id); m_mdtIdHelper = mdt_id; @@ -81,7 +73,7 @@ StatusCode Muon::MdtCsmContByteStreamTool::convert(CONTAINER* cont, RawEventWrit MsgStream& log ) { m_fea.clear(); - m_fea.idMap().set(m_cabling, m_mdtIdHelper); + m_fea.idMap().set(m_mdtIdHelper); FullEventAssembler<MDT_Hid2RESrcID>::RODDATA* theROD ; diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.h index b92201b2857..2dad648dc76 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.h @@ -18,7 +18,6 @@ class MdtCsmContainer; class MsgStream; -class MuonMDT_CablingSvc; #include <string> @@ -65,7 +64,6 @@ public: private: - MuonMDT_CablingSvc* m_cabling; MDT_Hid2RESrcID* m_hid2re; const MdtIdHelper* m_mdtIdHelper; diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx index 86a80ed5cd1..a1556a2fe44 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx @@ -25,7 +25,7 @@ static const InterfaceID IID_IMdtROD_Decoder MdtROD_Decoder::MdtROD_Decoder ( const std::string& type, const std::string& name,const IInterface* parent ) : AthAlgTool(type,name,parent), - m_EvtStore(0), m_hid2re(0), m_cabling(0), m_mdtIdHelper(0), m_rodReadOut(0), m_csmReadOut(0), + m_EvtStore(0), m_hid2re(0), m_mdtIdHelper(0), m_rodReadOut(0), m_csmReadOut(0), m_amtReadOut(0), m_hptdcReadOut(0), m_BMEpresent(false), m_BMGpresent(false), m_BMEid(-1), m_BMGid(-1) // m_debug(false), // m_log (msgSvc(), name) @@ -72,12 +72,7 @@ StatusCode MdtROD_Decoder::initialize() { // Here the mapping service has to be initialized - if (StatusCode::SUCCESS != service("MuonMDT_CablingSvc", m_cabling)) { - ATH_MSG_ERROR(" Can't get MuonMDT_CablingSvc "); - return StatusCode::FAILURE; - } - m_hid2re->set(m_cabling,m_mdtIdHelper); - + m_hid2re->set(m_mdtIdHelper); // Initialize decoding classes m_rodReadOut = new MdtRODReadOut(); @@ -96,6 +91,8 @@ StatusCode MdtROD_Decoder::initialize() { ATH_MSG_INFO("Processing configuration for layouts with BMG chambers."); m_BMGid = m_mdtIdHelper->stationNameIndex("BMG"); } + + ATH_CHECK( m_readKey.initialize() ); return StatusCode::SUCCESS; } @@ -287,7 +284,13 @@ StatusCode MdtROD_Decoder::fillCollections(const OFFLINE_FRAGMENTS_NAMESPACE::RO bool cab; - cab = m_cabling->getOfflineId(subdetId, mrodId, csmId, tdc, cha, + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + const MuonMDT_CablingMap* readCdo{*readHandle}; + if(readCdo==nullptr){ + ATH_MSG_ERROR("Null pointer to the read conditions object"); + return StatusCode::FAILURE; + } + cab = readCdo->getOfflineId(subdetId, mrodId, csmId, tdc, cha, StationName, StationEta, StationPhi, MultiLayer, TubeLayer, Tube); diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h index 23e78745c42..0eb69231efe 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h @@ -16,7 +16,8 @@ #include "MuonIdHelpers/MdtIdHelper.h" #include "MDT_Hid2RESrcID.h" -#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h" +#include "MuonCablingData/MuonMDT_CablingMap.h" +#include "StoreGate/ReadCondHandleKey.h" #include <stdint.h> #include <map> @@ -81,7 +82,7 @@ private: StoreGateSvc *m_EvtStore; MDT_Hid2RESrcID* m_hid2re; - MuonMDT_CablingSvc* m_cabling; + SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; const MdtIdHelper* m_mdtIdHelper; @@ -101,6 +102,7 @@ private: // bool m_debug; //!< If true, output debugging information //MsgStream m_log; + }; /* -- GitLab From b4d2ee1f4fbf5dfa5d4bc8886487fef1a73f22e4 Mon Sep 17 00:00:00 2001 From: John Kenneth Anders <janders@lxplus088.cern.ch> Date: Tue, 20 Nov 2018 13:34:26 +0100 Subject: [PATCH 042/135] Cherry pick of 21.0 MR15040 by hand Former-commit-id: 6a39da11b754ed710a63b20aed82595d0baf9147 --- .../test_expressstream_1_run276689_collisions.sh | 5 +++++ .../test_expressstream_2_run276689_collisions.sh | 5 +++++ .../test_expressstream_3_run276689_collisions.sh | 5 +++++ .../test_expressstream_4_run276689_collisions.sh | 5 +++++ ..._expressstream_4_run276689_collisions_rawtoall.sh | 5 +++++ Tools/Tier0ChainTests/test/test_q220.sh | 5 +++++ Tools/Tier0ChainTests/test/test_q220_mp.sh | 9 +++++++-- Tools/Tier0ChainTests/test/test_q221.sh | 5 +++++ Tools/Tier0ChainTests/test/test_q221_mp.sh | 8 +++++++- Tools/Tier0ChainTests/test/test_q223.sh | 5 +++++ Tools/Tier0ChainTests/test/test_q223_mp.sh | 8 +++++++- Tools/Tier0ChainTests/test/test_q431.sh | 5 +++++ Tools/Tier0ChainTests/test/test_q431_mp.sh | 5 +++++ .../test/test_reco_with_derived_outputs.sh | 5 +++++ .../test/test_reco_with_derived_outputs_2.sh | 12 +++++++----- .../test/test_reprocessing_with_derived_outputs.sh | 6 ++++++ .../test/test_run00184169_egamma_collisions.sh | 5 +++++ 17 files changed, 94 insertions(+), 9 deletions(-) diff --git a/Tools/Tier0ChainTests/test/test_expressstream_1_run276689_collisions.sh b/Tools/Tier0ChainTests/test/test_expressstream_1_run276689_collisions.sh index 14362be5b02..a89f74c2d23 100755 --- a/Tools/Tier0ChainTests/test/test_expressstream_1_run276689_collisions.sh +++ b/Tools/Tier0ChainTests/test/test_expressstream_1_run276689_collisions.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --outputHISTFile=myMergedMonitoring_express_0.root --AMI=f628 --maxEvents=25 --outputESDFile=myESD_express_0.pool.root --outputAODFile=myAOD_express_0.AOD.pool.root --outputTAGFile=myTAG_express_0.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0220._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0221._SFO-ALL._0001.1 --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_expressstream_2_run276689_collisions.sh b/Tools/Tier0ChainTests/test/test_expressstream_2_run276689_collisions.sh index 819407d2a67..d5205555cf3 100755 --- a/Tools/Tier0ChainTests/test/test_expressstream_2_run276689_collisions.sh +++ b/Tools/Tier0ChainTests/test/test_expressstream_2_run276689_collisions.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --outputHISTFile=myMergedMonitoring_express_1.root --AMI=f628 --maxEvents=25 --outputESDFile=myESD_express_1.pool.root --outputAODFile=myAOD_express_1.AOD.pool.root --outputTAGFile=myTAG_express_1.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0222._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0223._SFO-ALL._0001.1 --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_expressstream_3_run276689_collisions.sh b/Tools/Tier0ChainTests/test/test_expressstream_3_run276689_collisions.sh index f017940c238..08e9a5c3642 100755 --- a/Tools/Tier0ChainTests/test/test_expressstream_3_run276689_collisions.sh +++ b/Tools/Tier0ChainTests/test/test_expressstream_3_run276689_collisions.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --outputHISTFile=myMergedMonitoring_express_2.root --AMI=f628 --maxEvents=300 --outputESDFile=myESD_express_2.pool.root --outputAODFile=myAOD_express_2.AOD.pool.root --outputTAGFile=myTAG_express_2.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0224._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0225._SFO-ALL._0001.1 --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions.sh b/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions.sh index 97bf8642a33..7b4f2853bcc 100755 --- a/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions.sh +++ b/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --outputHISTFile=myMergedMonitoring_express_3.root --AMI=f628 --maxEvents=30 --outputESDFile=myESD_express_3.pool.root --outputAODFile=myAOD_express_3.AOD.pool.root --outputTAGFile=myTAG_express_3.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0226._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0227._SFO-ALL._0001.1 --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions_rawtoall.sh b/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions_rawtoall.sh index bd6ed04ebe7..ab608ccfa34 100755 --- a/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions_rawtoall.sh +++ b/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions_rawtoall.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --outputHISTFile=myMergedMonitoring_express_3.root --AMI=f628 --maxEvents=30 --outputESDFile=myESD_express_3.pool.root --outputAODFile=myAOD_express_3.AOD.pool.root --outputTAGFile=myTAG_express_3.root --ignoreErrors=False --steering=doRAWtoALL --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0226._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0227._SFO-ALL._0001.1 --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_q220.sh b/Tools/Tier0ChainTests/test/test_q220.sh index 366709a60ac..bd2d1be252b 100755 --- a/Tools/Tier0ChainTests/test/test_q220.sh +++ b/Tools/Tier0ChainTests/test/test_q220.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --AMI=q220 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_cos.00251363.physics_IDCosmic.merge.RAW._lb0057._SFO-ALL._0001.1 --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_q220_mp.sh b/Tools/Tier0ChainTests/test/test_q220_mp.sh index ea6e2a0a9fe..6a6a2fa9025 100755 --- a/Tools/Tier0ChainTests/test/test_q220_mp.sh +++ b/Tools/Tier0ChainTests/test/test_q220_mp.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena -Reco_tf.py --AMI=q220 --athenaopts='--nprocs=2' --maxEvents=100 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_cos.00251363.physics_IDCosmic.merge.RAW._lb0057._SFO-ALL._0001.1 - +Reco_tf.py --AMI=q220 --athenaopts='--nprocs=2' --maxEvents=100 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root +echo "art-result: $? Reco" \ No newline at end of file diff --git a/Tools/Tier0ChainTests/test/test_q221.sh b/Tools/Tier0ChainTests/test/test_q221.sh index 8d61a6c03e4..030db729e40 100755 --- a/Tools/Tier0ChainTests/test/test_q221.sh +++ b/Tools/Tier0ChainTests/test/test_q221.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --AMI=q221 --outputRDOFile=myRDO.pool.root --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputHITSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc15_13TeV.410500.PowhegPythia8EvtGen_A14_ttbar_hdamp172p5_nonallhad.simul.HITS.e4797_s2726.50events.pool.root --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_q221_mp.sh b/Tools/Tier0ChainTests/test/test_q221_mp.sh index 9a71a838704..81e98aa1d20 100755 --- a/Tools/Tier0ChainTests/test/test_q221_mp.sh +++ b/Tools/Tier0ChainTests/test/test_q221_mp.sh @@ -2,6 +2,12 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena -Reco_tf.py --AMI=q221 --athenaopts='--nprocs=2' --maxEvents=100 --outputRDOFile=myRDO.pool.root --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputHITSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc15_13TeV.410500.PowhegPythia8EvtGen_A14_ttbar_hdamp172p5_nonallhad.simul.HITS.e4797_s2726.50events.pool.root +Reco_tf.py --AMI=q221 --athenaopts='--nprocs=2' --maxEvents=100 --outputRDOFile=myRDO.pool.root --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root +echo "art-result: $? Reco" diff --git a/Tools/Tier0ChainTests/test/test_q223.sh b/Tools/Tier0ChainTests/test/test_q223.sh index 869d4f3cbf8..2fe49544b5b 100755 --- a/Tools/Tier0ChainTests/test/test_q223.sh +++ b/Tools/Tier0ChainTests/test/test_q223.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --AMI=q223 --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_comm.00264034.physics_MinBias.daq.RAW._lb0644._SFO-6._0001.data --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_q223_mp.sh b/Tools/Tier0ChainTests/test/test_q223_mp.sh index 790fca0c999..ce58bd42645 100755 --- a/Tools/Tier0ChainTests/test/test_q223_mp.sh +++ b/Tools/Tier0ChainTests/test/test_q223_mp.sh @@ -2,6 +2,12 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena -Reco_tf.py --AMI=q223 --athenaopts='--nprocs=2' --maxEvents=100 --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_comm.00264034.physics_MinBias.daq.RAW._lb0644._SFO-6._0001.data +Reco_tf.py --AMI=q223 --athenaopts='--nprocs=2' --maxEvents=100 --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root +echo "art-result: $? Reco" diff --git a/Tools/Tier0ChainTests/test/test_q431.sh b/Tools/Tier0ChainTests/test/test_q431.sh index b3f21d32a76..c5184d0ce03 100755 --- a/Tools/Tier0ChainTests/test/test_q431.sh +++ b/Tools/Tier0ChainTests/test/test_q431.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --AMI=q431 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00297447.physics_Main.daq.RAW._lb0555._SFO-1._0001.data --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_q431_mp.sh b/Tools/Tier0ChainTests/test/test_q431_mp.sh index 00348f398e1..b8ea6551adb 100755 --- a/Tools/Tier0ChainTests/test/test_q431_mp.sh +++ b/Tools/Tier0ChainTests/test/test_q431_mp.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --AMI=q431 --athenaopts='--nprocs=2' --maxEvents=100 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00297447.physics_Main.daq.RAW._lb0555._SFO-1._0001.data diff --git a/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs.sh b/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs.sh index e92d1edda90..7af56ac75e8 100755 --- a/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs.sh +++ b/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --conditionsTag all:CONDBR2-BLKPA-2017-05 --ignoreErrors 'False' --autoConfiguration='everything' --maxEvents '250' --geometryVersion all:ATLAS-R2-2015-04-00-00 --steering='doRAWtoALL' --inputBSFile '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00306451.physics_Main.daq.RAW._lb0948._SFO-4._0001.data' --outputDRAW_EGZFile 'myDRAW_EGZ.data' --outputDESDM_IDALIGNFile 'myDESDM_IDALIGN.pool.root' --outputDESDM_SGLELFile 'myDESDM_SGLEL.pool.root' --outputDESDM_SLTTMUFile 'myDESDM_SLTTMU.pool.root' --outputDAOD_IDTRKVALIDFile 'myDAOD_IDTRKVALID.pool.root' --outputDRAW_ZMUMUFile 'myDRAW_ZMUMU.data' --outputAODFile 'myAOD.pool.root' --outputDRAW_TAUMUHFile 'myDRAW_TAUMUH.data' --outputDESDM_EGAMMAFile 'myDESDM_EGAMMA.pool.root' --outputDESDM_MCPFile 'myDESDM_MCP.pool.root' --outputDESDM_CALJETFile 'myDESDM_CALJET.pool.root' --outputDESDM_PHOJETFile 'myDESDM_PHOJET.pool.root' --outputDESDM_TILEMUFile 'myDESDM_TILEMU.pool.root' --outputDRAW_RPVLLFile 'myDRAW_RPVLL.data' --outputDESDM_EXOTHIPFile 'myDESDM_EXOTHIP.pool.root' --outputESDFile 'myESD.pool.root' --outputHISTFile 'myHIST.root' --outputDAOD_IDTIDEFile 'myDAOD_IDTIDE.pool.root' --imf False echo "art-result: $?" diff --git a/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs_2.sh b/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs_2.sh index a61a3428886..0d69aeab0d6 100755 --- a/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs_2.sh +++ b/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs_2.sh @@ -2,14 +2,16 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --outputDESDM_IDALIGNFile=IDALIGN_Main_0.pool.root --outputDESDM_SLTTMUFile=SLTTMU_Main_0.pool.root --outputDRAW_ZMUMUFile=ZMUMU_Main_0.data --outputDAOD_IDTIDEFile=IDTIDE_Main_0.AOD.pool.root --outputDESDM_MCPFile=MCP_Main_0.pool.root --outputDRAW_TOPSLMUFile=TOPSLMU_Main_0.data --outputDRAW_EGZFile=EGZ_Main_0.data --outputDESDM_PHOJETFile=PHOJET_Main_0.pool.root --outputDESDM_TILEMUFile=TILEMU_Main_0.pool.root --outputDRAW_RPVLLFile=RPVLL_Main_0.data --outputDAOD_IDTRKVALIDFile=IDTRKVALID_Main_0.AOD.pool.root --outputHISTFile=myMergedMonitoring_Main_0.root --AMI=f739 --outputDESDM_EXOTHIPFile=EXOTHIP_Main_0.pool.root --outputDESDM_SGLELFile=SGLEL_Main_0.pool.root --maxEvents=500 --outputESDFile=myESD_Main_0.pool.root --outputDESDM_EGAMMAFile=EGAMMA_Main_0.pool.root --outputAODFile=myAOD_Main_0.AOD.pool.root --outputTAGFile=myTAG_Main_0.root --ignoreErrors=False --conditionsTag=CONDBR2-BLKPA-2017-05 --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00304008.physics_Main.daq.RAW._lb0838._SFO-6._0001.data --outputDRAW_TAUMUHFile=TAUMUH_Main_0.data --outputDESDM_CALJETFile=CALJET_Main_0.pool.root --imf False echo "art-result: $?" ArtPackage=$1 ArtJobName=$2 -art.py compare grid --entries 10 ${ArtPackage} ${ArtJobName} -echo "art-result: $?" - -art.py compare grid --days=3 --entries 10 ${ArtPackage} ${ArtJobName} -echo "art-result: $?" +art.py compare grid --entries 2 ${ArtPackage} ${ArtJobName} +echo "art-result: $? Diff" diff --git a/Tools/Tier0ChainTests/test/test_reprocessing_with_derived_outputs.sh b/Tools/Tier0ChainTests/test/test_reprocessing_with_derived_outputs.sh index 09e500d3f82..a66cba7c757 100755 --- a/Tools/Tier0ChainTests/test/test_reprocessing_with_derived_outputs.sh +++ b/Tools/Tier0ChainTests/test/test_reprocessing_with_derived_outputs.sh @@ -2,5 +2,11 @@ # # art-description: RecoTrf # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --outputDESDM_IDALIGNFile=IDALIGN_Main_0.pool.root --outputDESDM_SLTTMUFile=SLTTMU_Main_0.pool.root --outputDRAW_ZMUMUFile=ZMUMU_Main_0.data --outputDAOD_IDTIDEFile=IDTIDE_Main_0.AOD.pool.root --outputDESDM_MCPFile=MCP_Main_0.pool.root --outputDRAW_TOPSLMUFile=TOPSLMU_Main_0.data --outputDRAW_EGZFile=EGZ_Main_0.data --outputDESDM_PHOJETFile=PHOJET_Main_0.pool.root --outputDESDM_TILEMUFile=TILEMU_Main_0.pool.root --outputDRAW_RPVLLFile=RPVLL_Main_0.data --outputDAOD_IDTRKVALIDFile=IDTRKVALID_Main_0.AOD.pool.root --outputHISTFile=myMergedMonitoring_Main_0.root --AMI=r9050 --outputDESDM_EXOTHIPFile=EXOTHIP_Main_0.pool.root --outputDESDM_SGLELFile=SGLEL_Main_0.pool.root --maxEvents=500 --outputESDFile=myESD_Main_0.pool.root --outputDESDM_EGAMMAFile=EGAMMA_Main_0.pool.root --outputAODFile=myAOD_Main_0.AOD.pool.root --outputTAGFile=myTAG_Main_0.root --ignoreErrors=False --conditionsTag=CONDBR2-BLKPA-2016-25 --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00304008.physics_Main.daq.RAW._lb0838._SFO-6._0001.data --outputDRAW_TAUMUHFile=TAUMUH_Main_0.data --outputDESDM_CALJETFile=CALJET_Main_0.pool.root --athenaopts=--nprocs=4 --imf False +echo "art-result: $? Reco" diff --git a/Tools/Tier0ChainTests/test/test_run00184169_egamma_collisions.sh b/Tools/Tier0ChainTests/test/test_run00184169_egamma_collisions.sh index dab46d8179c..7796a3bd04d 100755 --- a/Tools/Tier0ChainTests/test/test_run00184169_egamma_collisions.sh +++ b/Tools/Tier0ChainTests/test/test_run00184169_egamma_collisions.sh @@ -2,6 +2,11 @@ # # art-description: RecoTrf with beamType=collisions # art-type: grid +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: 21.3/Athena +# art-include: 21.9/Athena Reco_tf.py --outputHISTFile=myMergedMonitoring_Egamma_0.root --maxEvents=500 --outputESDFile=myESD_Egamma_0.pool.root --outputAODFile=myAOD_Egamma_0.AOD.pool.root --outputTAGFile=myTAG_Egamma_0.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data11_7TeV.00184169.physics_Egamma.merge.RAW._lb0900._SFO-10._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data11_7TeV.00184169.physics_Egamma.merge.RAW._lb0900._SFO-11._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data11_7TeV.00184169.physics_Egamma.merge.RAW._lb0900._SFO-12._0001.1 --preExec='rec.doTrigger=False;' --imf False echo "art-result: $?" -- GitLab From 1e69f0567fef5e4431a847abe502ae22cf66f01b Mon Sep 17 00:00:00 2001 From: Kristian Bjoerke <krbjeork@cern.ch> Date: Wed, 14 Nov 2018 14:50:34 +0100 Subject: [PATCH 043/135] Updating naming according to ATLAS code guidelines This commit contains changes related to: - According to ATLAS code guidelines header files should begin and end with multiple-inclusion protection [header-guards]. The header-guards should have the format '#ifndef PACKAGE_CLASS_H' Fixed interface and implementation header so that the CLASS part was written correctly. - According to ATLAS Coding Guidelines one should use names that are English and self-descriptive. [meaningful-names]. Former-commit-id: c0457ae2d6ce7ce1927063d6816144dbf008711e --- .../src/SCTRawContByteStreamCnv.cxx | 26 +++++++++---------- .../src/SCTRawContByteStreamCnv.h | 12 ++++----- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx index f964b1044e3..c402dbcde73 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx @@ -18,9 +18,9 @@ /// ------------------------------------------------------ /// constructor -SCTRawContByteStreamCnv::SCTRawContByteStreamCnv(ISvcLocator* svcloc) : - Converter(ByteStream_StorageType, classID(),svcloc), - m_tool{"SCTRawContByteStreamTool"}, +SCTRawContByteStreamCnv::SCTRawContByteStreamCnv(ISvcLocator* svcLoc) : + Converter(ByteStream_StorageType, classID(),svcLoc), + m_rawContByteStreamTool{"SCTRawContByteStreamTool"}, m_byteStreamEventAccess{"ByteStreamCnvSvc", "SCTRawContByteStreamCnv"}, m_log{msgSvc(), "SCTRawContByteStreamCnv"} { @@ -40,8 +40,8 @@ SCTRawContByteStreamCnv::initialize() m_log << MSG::INFO << "Retrieved service " << m_byteStreamEventAccess << endmsg; /** Retrieve byte stream tool */ - ATH_CHECK(m_tool.retrieve()); - m_log << MSG::INFO << "Retrieved tool " << m_tool << endmsg; + ATH_CHECK(m_rawContByteStreamTool.retrieve()); + m_log << MSG::INFO << "Retrieved tool " << m_rawContByteStreamTool << endmsg; return StatusCode::SUCCESS; } @@ -50,25 +50,25 @@ SCTRawContByteStreamCnv::initialize() /// convert SCT Raw Data in the container into ByteStream StatusCode -SCTRawContByteStreamCnv::createRep(DataObject* pObj, IOpaqueAddress*& pAddr) +SCTRawContByteStreamCnv::createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress) { /** get RawEvent pointer */ - RawEventWrite* re{m_byteStreamEventAccess->getRawEvent()}; + RawEventWrite* rawEvtWrite{m_byteStreamEventAccess->getRawEvent()}; /** get IDC for SCT Raw Data */ - SCT_RDO_Container* cont{nullptr}; - StoreGateSvc::fromStorable(pObj, cont); - if (cont==nullptr) { + SCT_RDO_Container* sctRDOCont{nullptr}; + StoreGateSvc::fromStorable(pDataObject, sctRDOCont); + if (sctRDOCont==nullptr) { m_log << MSG::ERROR << " Can not cast to SCTRawContainer " << endmsg; return StatusCode::FAILURE; } /** set up the IOpaqueAddress for Storegate */ - std::string nm{pObj->registry()->name()}; - pAddr = new ByteStreamAddress(classID(), nm, ""); + std::string dataObjectName{pDataObject->registry()->name()}; + pOpaqueAddress = new ByteStreamAddress(classID(), dataObjectName, ""); /** now use the tool to do the conversion */ - ATH_CHECK(m_tool->convert(cont, re, m_log)); + ATH_CHECK(m_rawContByteStreamTool->convert(sctRDOCont, rawEvtWrite, m_log)); return StatusCode::SUCCESS; } diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h index a762d1893ee..c0d57f462a4 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h @@ -2,8 +2,8 @@ Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -#ifndef SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTRAWEVENTCNV_H -#define SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTRAWEVENTCNV_H +#ifndef SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H +#define SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H // Gaudi #include "GaudiKernel/Converter.h" @@ -34,7 +34,7 @@ extern long ByteStream_StorageType; class SCTRawContByteStreamCnv: public Converter { public: - SCTRawContByteStreamCnv(ISvcLocator* svcloc); + SCTRawContByteStreamCnv(ISvcLocator* svcLoc); typedef SCT_RDO_Container SCTRawContainer; @@ -51,12 +51,12 @@ class SCTRawContByteStreamCnv: public Converter { { return StatusCode::FAILURE;} /** this creates the RawEvent fragments for the SCT */ - virtual StatusCode createRep(DataObject* pObj, IOpaqueAddress*& pAddr); + virtual StatusCode createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress); private: /** for BS infrastructure */ - ToolHandle<ISCTRawContByteStreamTool> m_tool; + ToolHandle<ISCTRawContByteStreamTool> m_rawContByteStreamTool; ServiceHandle<IByteStreamEventAccess> m_byteStreamEventAccess; MsgStream m_log; }; -#endif // SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTRAWEVENTCNV_H +#endif // SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H -- GitLab From a504a1187e9aa91185e8f279f8a79f885b83b78a Mon Sep 17 00:00:00 2001 From: Kristian Bjoerke <krbjeork@cern.ch> Date: Mon, 19 Nov 2018 14:29:43 +0100 Subject: [PATCH 044/135] Updating includes according to ATLAS code guidelines This commit contains changes related to: - Using forward declaration instead of including a header file [forward-declarations]. - Ordering of #include statements after dependency [include-ordering]. Former-commit-id: b4cde6649e025bca21b5942480dd6467e652e131 --- .../src/SCTRawContByteStreamCnv.cxx | 12 ++++++------ .../src/SCTRawContByteStreamCnv.h | 14 ++++---------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx index c402dbcde73..111f4fdfcc7 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx @@ -4,17 +4,17 @@ #include "SCTRawContByteStreamCnv.h" -// Gaudi -#include "GaudiKernel/DataObject.h" - -// Athena -#include "AthenaBaseComps/AthCheckMacros.h" +#include "SCT_RawDataByteStreamCnv/ISCTRawContByteStreamTool.h" #include "ByteStreamCnvSvcBase/ByteStreamAddress.h" #include "ByteStreamData/RawEvent.h" #include "ByteStreamCnvSvcBase/IByteStreamEventAccess.h" -#include "SCT_RawDataByteStreamCnv/ISCTRawContByteStreamTool.h" + +#include "AthenaBaseComps/AthCheckMacros.h" #include "StoreGate/StoreGateSvc.h" +#include "GaudiKernel/DataObject.h" +#include "GaudiKernel/MsgStream.h" + /// ------------------------------------------------------ /// constructor diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h index c0d57f462a4..0bd94750179 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h @@ -5,22 +5,16 @@ #ifndef SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H #define SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H -// Gaudi +#include "ByteStreamCnvSvcBase/IByteStreamEventAccess.h" +#include "InDetRawData/InDetRawDataCLASS_DEF.h" + #include "GaudiKernel/Converter.h" #include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" - -// C++ Standard Library -#include <string> - -// Athena -#include "InDetRawData/InDetRawDataCLASS_DEF.h" -#include "ByteStreamCnvSvcBase/IByteStreamEventAccess.h" class DataObject; class ISCTRawContByteStreamTool; +class MsgStream; -/** Externals */ extern long ByteStream_StorageType; /** the converter for writing BS from SCT Raw Data -- GitLab From 88eea16a44f1d7374cbc35f8a7e7705de7b8677e Mon Sep 17 00:00:00 2001 From: Kristian Bjoerke <krbjeork@cern.ch> Date: Mon, 19 Nov 2018 15:52:15 +0100 Subject: [PATCH 045/135] Define a public virtual destructor for class According to ATLAS code guidelines a class with at least one virtual method must have a public virtual destructor [virtual-destructor]. Former-commit-id: 37576f44a6a1b9b1f4fd483dbe95cb83b6eea1e9 --- .../SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h index 0bd94750179..ae24e6004b6 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h @@ -29,6 +29,8 @@ class SCTRawContByteStreamCnv: public Converter { public: SCTRawContByteStreamCnv(ISvcLocator* svcLoc); + + virtual ~SCTRawContByteStreamCnv() = default; typedef SCT_RDO_Container SCTRawContainer; -- GitLab From fe20da9f7594fad91ed7050c676244d69367c625 Mon Sep 17 00:00:00 2001 From: Kristian Bjoerke <krbjeork@cern.ch> Date: Tue, 20 Nov 2018 12:25:05 +0100 Subject: [PATCH 046/135] Replace typdef alias with complete definition According to ATLAS code guidelines one should avoid using typedefs as alias for class definitions [avoid-typedef]. Former-commit-id: 2a25026d9980a730077f84528aa564b32f405bd9 --- .../SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h index ae24e6004b6..2c5399e78d3 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h @@ -32,12 +32,10 @@ class SCTRawContByteStreamCnv: public Converter { virtual ~SCTRawContByteStreamCnv() = default; - typedef SCT_RDO_Container SCTRawContainer; - /** Storage type and class ID */ virtual long repSvcType() const { return ByteStream_StorageType;} static long storageType() { return ByteStream_StorageType; } - static const CLID& classID() { return ClassID_traits<SCTRawContainer>::ID(); } + static const CLID& classID() { return ClassID_traits<SCT_RDO_Container>::ID(); } /** initialize */ virtual StatusCode initialize(); -- GitLab From f8f70d6dfc8d63c3a91d838ce8d2c94af9d67ec2 Mon Sep 17 00:00:00 2001 From: Kristian Bjoerke <krbjeork@cern.ch> Date: Tue, 20 Nov 2018 14:52:33 +0100 Subject: [PATCH 047/135] Implemented Doxygen comments According to ATLAS Coding Guidelines comments are to follow the Doxygen style commenting [doxygen-comments], written in complete English sentences [english-comments]. In a header file comments describing functions and attributes is to be included [comment-functions]. Comments are not complete, needs to be reviewed and made complete at a later stage! Former-commit-id: 9427c0b1f6f811d5fc0e282583ae68f69b79d080 --- .../src/SCTRawContByteStreamCnv.cxx | 20 ++++----- .../src/SCTRawContByteStreamCnv.h | 44 ++++++++++++++----- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx index 111f4fdfcc7..443c2f21549 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx @@ -15,8 +15,7 @@ #include "GaudiKernel/DataObject.h" #include "GaudiKernel/MsgStream.h" -/// ------------------------------------------------------ -/// constructor +// Constructor SCTRawContByteStreamCnv::SCTRawContByteStreamCnv(ISvcLocator* svcLoc) : Converter(ByteStream_StorageType, classID(),svcLoc), @@ -26,8 +25,7 @@ SCTRawContByteStreamCnv::SCTRawContByteStreamCnv(ISvcLocator* svcLoc) : { } -/// ------------------------------------------------------ -/// initialize +// Initialize StatusCode SCTRawContByteStreamCnv::initialize() @@ -35,27 +33,27 @@ SCTRawContByteStreamCnv::initialize() ATH_CHECK(Converter::initialize()); m_log << MSG::DEBUG<< " initialize " << endmsg; - /** Retrieve ByteStreamCnvSvc */ + // Retrieve ByteStreamCnvSvc ATH_CHECK(m_byteStreamEventAccess.retrieve()); m_log << MSG::INFO << "Retrieved service " << m_byteStreamEventAccess << endmsg; - /** Retrieve byte stream tool */ + // Retrieve byte stream tool ATH_CHECK(m_rawContByteStreamTool.retrieve()); m_log << MSG::INFO << "Retrieved tool " << m_rawContByteStreamTool << endmsg; return StatusCode::SUCCESS; } -/// ------------------------------------------------------ +// Method to create RawEvent fragments /// convert SCT Raw Data in the container into ByteStream StatusCode SCTRawContByteStreamCnv::createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress) { - /** get RawEvent pointer */ + // Get RawEvent pointer RawEventWrite* rawEvtWrite{m_byteStreamEventAccess->getRawEvent()}; - /** get IDC for SCT Raw Data */ + // Get IDC for SCT Raw Data SCT_RDO_Container* sctRDOCont{nullptr}; StoreGateSvc::fromStorable(pDataObject, sctRDOCont); if (sctRDOCont==nullptr) { @@ -63,11 +61,11 @@ SCTRawContByteStreamCnv::createRep(DataObject* pDataObject, IOpaqueAddress*& pOp return StatusCode::FAILURE; } - /** set up the IOpaqueAddress for Storegate */ + // Set up the IOpaqueAddress for Storegate std::string dataObjectName{pDataObject->registry()->name()}; pOpaqueAddress = new ByteStreamAddress(classID(), dataObjectName, ""); - /** now use the tool to do the conversion */ + // Use the tool to do the conversion ATH_CHECK(m_rawContByteStreamTool->convert(sctRDOCont, rawEvtWrite, m_log)); return StatusCode::SUCCESS; diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h index 2c5399e78d3..8098044f66b 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h @@ -17,19 +17,24 @@ class MsgStream; extern long ByteStream_StorageType; -/** the converter for writing BS from SCT Raw Data - * This will do the conversion on demand, triggered by the - * ByteStreamAddressProviderSvc. - * Since it is not possible to configure a Converter with - * Python Configurables, we use a service (SCTRawContByteStreamService) - * which in turn uses the lightweight SCT_RodEncoder class, - * to do the actual converting. */ - +/** + * @class SCTRawContByteStreamCnv + * + * @brief Converter for writing ByteStream from SCT Raw Data + * + * This will do the conversion on demand, triggered by the ByteStreamAddressProviderSvc. + * Since it is not possible to configure a Converter with Python Configurables, + * we use a service (SCTRawContByteStreamService) which in turn uses the lightweight + * SCT_RodEncoder class, to do the actual converting. + */ class SCTRawContByteStreamCnv: public Converter { public: + + /** Constructor */ SCTRawContByteStreamCnv(ISvcLocator* svcLoc); + /** Destructor */ virtual ~SCTRawContByteStreamCnv() = default; /** Storage type and class ID */ @@ -37,20 +42,35 @@ class SCTRawContByteStreamCnv: public Converter { static long storageType() { return ByteStream_StorageType; } static const CLID& classID() { return ClassID_traits<SCT_RDO_Container>::ID(); } - /** initialize */ + /** Initialize */ virtual StatusCode initialize(); - /** create Obj is not used ! */ + /** createObj method (not used!) */ virtual StatusCode createObj(IOpaqueAddress*, DataObject*&) { return StatusCode::FAILURE;} - /** this creates the RawEvent fragments for the SCT */ + /** + * @brief Method to convert SCT Raw Data into ByteStream + * + * Gets pointer to RawEvent, get ID container of SCT RDO. + * Sets up opaque address for Storegate. + * + * Uses SCT RawContByteStreamTool to convert Raw Data to ByteStream. + * + * @param pDataObject Pointer to data object + * @param pOpaqueAddress Opaque address to object + */ virtual StatusCode createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress); private: - /** for BS infrastructure */ + + /** Tool to do coversion from SCT RDO container to ByteStream */ ToolHandle<ISCTRawContByteStreamTool> m_rawContByteStreamTool; + + /** Interface for accessing raw data */ ServiceHandle<IByteStreamEventAccess> m_byteStreamEventAccess; + + /** Object used to transmit messages and log errors */ MsgStream m_log; }; #endif // SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H -- GitLab From 36192bd64099f9832d49241c63abeb9ac66fbf9c Mon Sep 17 00:00:00 2001 From: Tomasz Bold <tomasz.bold@gmail.com> Date: Tue, 20 Nov 2018 16:34:23 +0100 Subject: [PATCH 048/135] re-added art-type directive Former-commit-id: 1b7d09b8fd749b49f1e7a75d5d3706b189d1d657 --- Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh | 1 + .../TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh | 2 +- .../TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh | 1 + .../TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh | 1 + .../TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh | 2 +- .../TrigUpgradeTest/test/test_emu_step_processing.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh | 2 +- .../TrigUpgradeTest/test/test_id_calo_run_data.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh | 1 + Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh | 2 +- Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh | 1 + .../TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh | 2 +- 20 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh index 98d955a644e..e1cfed2abf3 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh @@ -1,4 +1,5 @@ #!/bin/sh +# art-type: build # art-include: master/Athena diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh index 2eb89baded3..4727fb42048 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" -c 'doID=False' TrigUpgradeTest/IDCalo.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh index 196f90ecc10..44ab78d69ad 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh @@ -1,4 +1,5 @@ #!/bin/sh +# art-type: build # art-include: master/Athena athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/egamma.withViews.py && diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh index 0889d8ee798..b21261ce9b5 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh @@ -1,4 +1,5 @@ #!/bin/sh +# art-type: build # art-include: master/Athena athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/electron.menu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh index 5e8d6b27b24..b617c9c5c06 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena.py --threads=1 TrigUpgradeTest/EmuL1DecodingTest.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh index 92e6e7b0388..e5c6f3b6144 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena.py --threads=1 TrigUpgradeTest/EmuStepProcessingTest.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh index 9452ada28d3..4c8037990f9 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/fullMenu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh index 829ea820092..decde7324fe 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/IDCalo.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh index b4ca274911c..77a536f83b9 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" -c 'doCalo=False' TrigUpgradeTest/IDCalo.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh index fed9a9733eb..6fc1161a46e 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1" -c 'doCalo=False;' TrigUpgradeTest/IDCalo.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh index bbcd7729d1e..be6de97ce92 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena # 15 events diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh index 7466b6cf62c..2f2dd305f8b 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena # 150 events diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh index db7aa3d70e4..a5f3c1777ca 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena.py --threads=1 -c "doL1Sim=True" --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1" TrigUpgradeTest/testHLT_MT.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh index 5d0b0cffc59..40c8cfd73d7 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena.py --threads=1 TrigUpgradeTest/mergeTest.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh index 634a76ab3bd..9b7c0023b5e 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh index 78bb4549807..4c224f5d6ea 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh @@ -1,4 +1,5 @@ #!/bin/sh +# art-type: build # art-include: master/Athena diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh index b09ed77c6e2..c47e94566fc 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena rm -rf newJOtest.py bootstrap.pkl bootstrap.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh index c3359e833fc..3d51cb706c2 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena athena --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/photon.menu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh index a0affa31b80..0ae0b6c39a7 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh @@ -1,4 +1,5 @@ #!/bin/sh +# art-type: build # art-include: master/Athena athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/tau.menu.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh index 47fed358070..5f69c724fd0 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh @@ -1,5 +1,5 @@ #!/bin/sh - +# art-type: build # art-include: master/Athena if [ -z ${THREADS+x} ]; then export THREADS=2; fi -- GitLab From 6249cd887a788268454088935d098e1cc52dda8e Mon Sep 17 00:00:00 2001 From: christos <christos@cern.ch> Date: Tue, 20 Nov 2018 19:02:54 +0000 Subject: [PATCH 049/135] Use buffer() for all counters to be incremented Former-commit-id: 00b79c46ae0203d3d4f3bb0428d3103ac89f6506 --- .../egammaAlgs/src/egammaSelectedTrackCopy.cxx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx index 4477e902a4f..8a9856773bb 100644 --- a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx +++ b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx @@ -104,27 +104,30 @@ StatusCode egammaSelectedTrackCopy::execute() ATH_MSG_DEBUG ("Track Particle container size: " <<trackTES->size() ); //Local counters + auto allClusters = m_AllClusters.buffer(); + auto selectedClusters = m_SelectedClusters.buffer(); + auto allTracks= m_AllTracks.buffer(); auto selectedTracks = m_SelectedTracks.buffer() ; auto allSiTracks = m_AllSiTracks.buffer(); auto selectedSiTracks = m_SelectedSiTracks.buffer(); - auto allTRTTracks = m_AllTRTTracks.buffer() ; + auto allTRTTracks = m_AllTRTTracks.buffer(); auto selectedTRTTracks = m_SelectedTRTTracks.buffer(); // // lets first check which clusters to seed on; std::vector<const xAOD::CaloCluster *> passingClusters; for(const xAOD::CaloCluster* cluster : *clusterTES ){ + ++allClusters; if (m_egammaCaloClusterSelector->passSelection(cluster)) { passingClusters.push_back(cluster); + ++selectedClusters; } } - m_AllClusters+=clusterTES->size(); - m_SelectedClusters+=passingClusters.size(); - m_AllTracks+=trackTES->size(); - //Extrapolation Cache + //Extrapolation Cache IEMExtrapolationTools::Cache cache{}; for(const xAOD::TrackParticle* track : *trackTES){ ATH_MSG_DEBUG ("Check Track with Eta "<< track->eta()<< " Phi " << track->phi()<<" Pt " <<track->pt()); + ++allTracks; bool isTRT=false; int nhits(0); uint8_t dummy(0); -- GitLab From 85fef2dc1ba6ec162506df7a6b135f5ad86268fd Mon Sep 17 00:00:00 2001 From: christos <christos@cern.ch> Date: Tue, 20 Nov 2018 19:27:21 +0000 Subject: [PATCH 050/135] Modify thresholds for InDet EM ROI Former-commit-id: 32b1b09b39aca9bbaf40be44424b79f16f231fc6 --- .../InDetRecExample/share/InDetRecCaloSeededROISelection.py | 2 +- .../TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecCaloSeededROISelection.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecCaloSeededROISelection.py index 8831f403ddf..dab9d4f4d41 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecCaloSeededROISelection.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecCaloSeededROISelection.py @@ -15,7 +15,7 @@ egammaCaloClusterROISelector = ToolFactory( egammaCaloToolsConf.egammaCaloCluste name = 'caloClusterROISelector', egammaCheckEnergyDepositTool = egammaCheckEnergyDepositTool, EMEtRanges = [1500.,2500.], - EMFCuts = [0.9,0.85], + EMFCuts = [0.85,0.8], RetaCut = [0.7,0.65] ) # diff --git a/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx b/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx index 0c2054cd6ec..be596ca5fd2 100755 --- a/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx +++ b/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx @@ -32,7 +32,7 @@ InDet::TRT_TrackSegmentsFinder::TRT_TrackSegmentsFinder m_nsegmentsTotal = 0 ; m_useCaloSeeds = false ; m_minNumberDCs = 9 ; - m_ClusterEt = 2000.0 ; + m_ClusterEt = 2500.0 ; declareProperty("SegmentsMakerTool",m_segmentsMakerTool); declareProperty("SegmentsLocation" ,m_foundSegments ); declareProperty("useCaloSeeds" ,m_useCaloSeeds ); -- GitLab From 5db64c7debef1daf7ceb1df540414670e4e17770 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Tue, 20 Nov 2018 20:49:31 +0100 Subject: [PATCH 051/135] setting doWriteESD and doWriteAOD True in MuonCombinedRec_myTopOptions.py Former-commit-id: 33787753d0b545b62405a40714558ab112272d97 --- .../share/MuonCombinedRec_myTopOptions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_myTopOptions.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_myTopOptions.py index 4a3cd606c4c..127c0386c32 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_myTopOptions.py +++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_myTopOptions.py @@ -309,8 +309,8 @@ athenaCommonFlags.SkipEvents = 0 # Output setup #-------------------------------------------------------------------------------- #recFlags.doTruth=False -rec.doWriteESD = False -rec.doWriteAOD = False +rec.doWriteESD = True +rec.doWriteAOD = True ##### no more flags after this line ##### -- GitLab From ba0b429604707a062464e0ba8513e1fcce566078 Mon Sep 17 00:00:00 2001 From: James Beacham <j.beacham@cern.ch> Date: Tue, 20 Nov 2018 20:13:10 +0000 Subject: [PATCH 052/135] Merge branch 'referenceCoherentNoise' into '21.0' LArMonTools modified to be able to set the output file name from JO See merge request atlas/athena!16010 (cherry picked from commit 40178cfcd988b6787813789b3992270b2d2d05a2 [formerly 72230d76aa83d198c7c50c2906c33b0dd58770f6]) 50ef29f1 LArMonTools modified to be able to set the output file name from JO Former-commit-id: 7f4f53087d87c0762079ee1da8a9a61e8ff5befe --- .../LArMonTools/share/LArMonOutputFileName.py | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/LArCalorimeter/LArMonTools/share/LArMonOutputFileName.py b/LArCalorimeter/LArMonTools/share/LArMonOutputFileName.py index 6017f5765af..2e4dfc659dc 100755 --- a/LArCalorimeter/LArMonTools/share/LArMonOutputFileName.py +++ b/LArCalorimeter/LArMonTools/share/LArMonOutputFileName.py @@ -1,14 +1,20 @@ + +rootHisto="RootHistos" +if 'OutName' in dir(): + rootHisto='RootHistos_%(stuff)s' % {"stuff" : OutName} + + if not online: if not runAccumulator: if not 'RootHistOutputFileName' in dir(): if Type == 'Delay': - RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_Wave_avg_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "partition" : Partition} + RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_Wave_avg_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "partition" : Partition} elif Type == 'Pedestal': - RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition} + RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition} elif Type == 'Cosmic': - RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type} + RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type} else: - RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_avg_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition} + RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s_avg_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition} if Type == "Pedestal": if not 'RootHistReferenceFileName' in dir(): RootHistReferenceFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "No" : RefRunNumber, "Type" : Type, "partition" : Partition} @@ -21,19 +27,19 @@ if not online: else: if Type == 'Delay': if not 'RootHistOutputFileName' in dir(): - RootHistOutputFileName = '%(dir)s/RootHistos_%(No)d_%Wave_trans_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition} + RootHistOutputFileName = '%(dir)s/%(rootHisto)s_%(No)d_%Wave_trans_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition} if not 'DelayOutputFile' in dir(): DelayOutputFile = '%(dir)s/RootHistos_%(No)d_%(Type)s_trans_%(partition)s.root' % {"dir" : OutputNtupleDir, "No" : RunNumber, "Type" : Type, "partition" : Partition} elif Type == 'Pedestal': if not 'RootHistOutputFileName' in dir(): - RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition} + RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition} if not 'RootHistReferenceFileName' in dir(): RootHistReferenceFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "No" : RefRunNumber, "Type" : Type, "partition" : Partition} elif Type == 'Cosmic': if not 'RootHistOutputFileName' in dir(): - RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type} + RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type} if not 'RootHistReferenceFileName' in dir(): RootHistReferenceFileName='%(dir)s/RootHistos_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "No" : RefRunNumber, "Type" : Type} else: if not 'RootHistOutputFileName' in dir(): - RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_trans_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition} + RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s_trans_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition} -- GitLab From c9730dbc3491b64a8d6123198b1961e1f0f23b78 Mon Sep 17 00:00:00 2001 From: Julie Hart Kirk <julie.kirk@stfc.ac.uk> Date: Tue, 20 Nov 2018 20:32:33 +0000 Subject: [PATCH 053/135] Merge branch 'trigger-ART-fix' into '21.1' Fix to rootcomp.py command in trigger ART tests See merge request atlas/athena!16092 (cherry picked from commit 2fa8ae3e81593c72357ce3c6a11c066e558370ac [formerly a2b5ebd3161fefcdbbee6371a118fe1f7406afec]) 6722f176 Fix to rootcomp command in trigger ART tests Former-commit-id: 1363b7b8c06aded947145032da590d6bb2e6de05 --- .../TriggerTest/test/exec_art_triggertest_post.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh b/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh index c2cac9f9814..ec20d8262a6 100755 --- a/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh +++ b/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh @@ -46,7 +46,7 @@ fi if [ -f ${REF_FOLDER}/expert-monitoring.root ]; then echo $(date "+%FT%H:%M %Z")" Running rootcomp" - timeout 10m rootcomp.py ${REF_FOLDER}/expert-monitoring.root | tee rootcompout.log + timeout 10m rootcomp.py ${REF_FOLDER}/expert-monitoring.root expert-monitoring.root | tee rootcompout.log echo "art-result: ${PIPESTATUS[0]} RootComp" echo $(date "+%FT%H:%M %Z")" Running checkcounts" timeout 10m trigtest_checkcounts.sh 0 expert-monitoring.root ${REF_FOLDER}/expert-monitoring.root HLT | tee checkcountout.log -- GitLab From 60a1f3c5aeb20138ddee99be61e1d8a87cc54e21 Mon Sep 17 00:00:00 2001 From: Tadej Novak <tadej.novak@cern.ch> Date: Wed, 21 Nov 2018 09:26:07 +0100 Subject: [PATCH 054/135] Muon raw data provider tool name update Former-commit-id: 7ff01ac6162eee65194d0bc4f19e99de8a944b14 --- .../share/MuonOverlay_jobOptions.py | 24 ------------------- .../MuonByteStream/src/CscRawDataProvider.cxx | 3 +-- .../MuonByteStream/src/MdtRawDataProvider.cxx | 3 +-- .../MuonByteStream/src/RpcRawDataProvider.cxx | 3 +-- .../MuonByteStream/src/TgcRawDataProvider.cxx | 3 +-- 5 files changed, 4 insertions(+), 32 deletions(-) diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/MuonOverlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/MuonOverlay_jobOptions.py index 2b9f4638648..a7c48ff98dd 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/MuonOverlay_jobOptions.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/MuonOverlay_jobOptions.py @@ -34,49 +34,25 @@ if DetFlags.overlay.MDT_on() or DetFlags.overlay.CSC_on() or DetFlags.overlay.RP include("MuonCnvExample/MuonReadBS_jobOptions.py") if DetFlags.overlay.CSC_on(): - if overlayFlags.isDataOverlay(): - ToolSvc.CscRawDataProviderTool.RdoLocation = overlayFlags.dataStore()+"+CSCRDO" job += getAlgorithm("CscOverlay") - #job.CscOverlay.OutputLevel=VERBOSE - #svcMgr.MessageSvc.defaultLimit=100000 - #print job.CscOverlay - #print "ACH123: Setting DEBUG v99" - #job.CscOverlay.MakeRDOTool.OutputLevel=DEBUG - #job.CscOverlay.MakeRDOTool.cscCalibTool.OutputLevel=DEBUG - #job.CscOverlay.OutputLevel=DEBUG - #MessageSvc.debugLimit = 100000 - #print "ACH123: NumSamples = 2 for MakeRDOTool" - #job.CscOverlay.MakeRDOTool.NumSamples=2 if DetFlags.overlay.MDT_on(): job += CfgGetter.getAlgorithm("MdtRdoToMdtDigitOverlayAlg") job += CfgGetter.getAlgorithm("MDT_OverlayDigitizer") job += CfgGetter.getAlgorithm("MdtOverlay") job += CfgGetter.getAlgorithm("OverlayMdtDigitToMdtRDO") - if overlayFlags.isDataOverlay(): - ToolSvc.MdtRawDataProviderTool.RdoLocation = overlayFlags.dataStore()+"+MDTCSM" - #job.MdtOverlay.OutputLevel = VERBOSE - #job.OverlayMdtDigitToMdtRDO.OutputLevel = VERBOSE if DetFlags.overlay.RPC_on(): job += CfgGetter.getAlgorithm("RpcRdoToRpcDigitOverlayAlg") job += CfgGetter.getAlgorithm("RPC_OverlayDigitizer") job += CfgGetter.getAlgorithm("RpcOverlay") job += CfgGetter.getAlgorithm("OverlayRpcDigitToRpcRDO") - if overlayFlags.isDataOverlay(): - ToolSvc.RpcRawDataProviderTool.RdoLocation = overlayFlags.dataStore()+"+RPCPAD" - #job.RpcOverlay.OutputLevel = VERBOSE - #job.OverlayRpcDigitToRpcRDO.OutputLevel = VERBOSE if DetFlags.overlay.TGC_on(): job += CfgGetter.getAlgorithm("TgcRdoToTgcDigitOverlayAlg") job += CfgGetter.getAlgorithm("TGC_OverlayDigitizer") job += CfgGetter.getAlgorithm("TgcOverlay") job += CfgGetter.getAlgorithm("OverlayTgcDigitToTgcRDO") - if overlayFlags.isDataOverlay(): - ToolSvc.TgcRawDataProviderTool.RdoLocation = overlayFlags.dataStore()+"+TGCRDO" - #job.TgcOverlay.OutputLevel = VERBOSE - #job.OverlayTgcDigitToTgcRDO.OutputLevel = VERBOSE # storegate dump #StoreGateSvc = Service( "StoreGateSvc" ) diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx index 05715f30929..03f43545e4e 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx @@ -14,7 +14,7 @@ Muon::CscRawDataProvider::CscRawDataProvider(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name, pSvcLocator), - m_rawDataTool ("Muon::CSC_RawDataProviderTool/CSC_RawDataProviderTool", this) + m_rawDataTool ("Muon::CSC_RawDataProviderTool/CscRawDataProviderTool", this) { declareProperty ("ProviderTool", m_rawDataTool); } @@ -54,4 +54,3 @@ StatusCode Muon::CscRawDataProvider::execute() { return StatusCode::SUCCESS; } - diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx index 079edc50a88..7a13fba74b1 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx @@ -11,7 +11,7 @@ Muon::MdtRawDataProvider::MdtRawDataProvider(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name, pSvcLocator), - m_rawDataTool ("Muon::MDT_RawDataProviderTool/MDT_RawDataProviderTool", this) + m_rawDataTool ("Muon::MDT_RawDataProviderTool/MdtRawDataProviderTool", this) { declareProperty ("ProviderTool", m_rawDataTool); } @@ -48,4 +48,3 @@ StatusCode Muon::MdtRawDataProvider::execute() { return StatusCode::SUCCESS; } - diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx index d6ed14ef777..a2112ffe368 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx @@ -11,7 +11,7 @@ Muon::RpcRawDataProvider::RpcRawDataProvider(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name, pSvcLocator), - m_rawDataTool ("Muon::RPC_RawDataProviderTool/RPC_RawDataProviderTool", this), + m_rawDataTool ("Muon::RPC_RawDataProviderTool/RpcRawDataProviderTool", this), m_regionSelector ("RegSelSvc",name) { declareProperty ("ProviderTool", m_rawDataTool); @@ -85,4 +85,3 @@ StatusCode Muon::RpcRawDataProvider::execute() { return StatusCode::SUCCESS; } - diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx index e8cb6d3b9b4..37b9087a3e0 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx @@ -18,7 +18,7 @@ Muon::TgcRawDataProvider::TgcRawDataProvider(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name, pSvcLocator), m_robDataProvider ("ROBDataProviderSvc",name), - m_rawDataTool ("Muon::TGC_RawDataProviderTool/TGC_RawDataProviderTool", this) + m_rawDataTool ("Muon::TGC_RawDataProviderTool/TgcRawDataProviderTool", this) { declareProperty ("ProviderTool", m_rawDataTool); } @@ -70,4 +70,3 @@ StatusCode Muon::TgcRawDataProvider::execute() return StatusCode::SUCCESS; } - -- GitLab From 01c2c4b54595eeec04188311b442306c8c44f9e1 Mon Sep 17 00:00:00 2001 From: Julie Kirk <Julie.Kirk@cern.ch> Date: Wed, 21 Nov 2018 09:35:37 +0100 Subject: [PATCH 055/135] Updates to ART tests - add regtest files to output Update to trigger ART tests so that the file athena.regtest is copied to the output directory. This is needed for updating references and debugging problems modified: Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh modified: Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh Former-commit-id: caf58d7a0d5869efcf76cde61e4d19b1ef01a4c2 --- Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh | 1 + .../TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh | 1 + .../TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh | 1 + .../TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh | 1 + .../TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh | 1 + .../TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh | 1 + .../TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh | 1 + .../TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh | 1 + .../TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh | 1 + .../TriggerTest/test/test_physics_pp_v7_aod_grid.sh | 1 + .../TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh | 1 + .../TriggerTest/test/test_physics_pp_v7_chainorder_build.sh | 1 + .../TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh | 1 + .../TriggerTest/test/test_physics_pp_v7_primaries_build.sh | 1 + .../TriggerTest/test/test_physics_pp_v7_primaries_grid.sh | 1 + .../TriggerTest/test/test_physics_pp_v7_tight_grid.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh | 1 + .../TriggerTest/test/test_slice_bphysics_aod_grid.sh | 1 + .../TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh | 1 + .../TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh | 1 + .../TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh | 1 + .../TrigValidation/TriggerTest/test/test_slice_electron_build.sh | 1 + .../TrigValidation/TriggerTest/test/test_slice_electron_grid.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh | 1 + .../TrigValidation/TriggerTest/test/test_slice_minbias_build.sh | 1 + .../TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh | 1 + .../TriggerTest/test/test_slice_minbias_hmt_grid.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh | 1 + Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh | 1 + 41 files changed, 41 insertions(+) diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh index be9ae8819b0..73d3840b6ea 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="mc_hi_v4_grid" export MENU="MC_HI_v4" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh index 8eb3a8efcfa..70b767c496d 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh @@ -18,6 +18,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="mc_hi_v5_grid" export MENU="MC_HI_v5" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh index 44a3d363e7c..55915640d27 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="mc_pp_v7_build" export MENU="MC_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh index a08f198e72a..aa5165441ee 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh @@ -21,6 +21,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="mc_pp_v7_grid" export MENU="MC_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh index c9c7cf4a36e..73a447b6a7e 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="mc_pp_v7_loose_grid" export MENU="MC_pp_v7_loose_mc_prescale" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh index 82ba75aab8b..36d751a119a 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="mc_pp_v7_nops_aod_ftk_build" export MENU="MC_pp_v7_no_prescale" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh index ade2e2a57d4..ba7b2f3ae00 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="mc_pp_v7_nops_aod_ftk_grid" export MENU="MC_pp_v7_no_prescale" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh index 5497bc02ed7..25593464c95 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="mc_pp_v7_tight_grid" export MENU="MC_pp_v7_tight_mc_prescale" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh index 512ae2aaf8e..8ae6fa30128 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_hi_v4_build" export MENU="Physics_HI_v4" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh index 2ff6299cd5e..88d2d234347 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_hi_v4_grid" export MENU="Physics_HI_v4" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh index 120b8527adc..1c0b679bd58 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh @@ -18,6 +18,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_hi_v5_build" export MENU="Physics_HI_v5" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh index 38f3c83c811..89866ebd0b6 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh @@ -18,6 +18,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_hi_v5_grid" export MENU="Physics_HI_v5" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh index 5a5a71f3934..fe200878fef 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_pp_v7_aod_grid" export MENU="Physics_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh index 1a94c97b5eb..17785fb306b 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_pp_v7_build" export MENU="Physics_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh index fbcdab08397..807cf5d415a 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_pp_v7_chainorder_build" export MENU="Physics_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh index edce3c6cc2b..ed40ae525ea 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh @@ -21,6 +21,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_pp_v7_grid" export MENU="Physics_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh index 66b04c9d57d..c611d6f0db8 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh @@ -16,6 +16,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_pp_v7_build_primaries" export MENU="Physics_pp_v7_primaries" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh index aa6c9e02466..c7c4baa8be5 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh @@ -16,6 +16,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="physics_pp_v7_grid_primaries" export MENU="Physics_pp_v7_primaries" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh index d313447a8d0..68fcf6c4cab 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export MENU="Physics_pp_v7_tight_physics_prescale" export EVENTS="500" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh index 91c9b48c4d2..4b768e7661e 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_bjet_build" export SLICE="bjet" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh index f6845600f51..d99ff307daf 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_bjet_grid" export SLICE="bjet" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh index f72d360519c..5b04d847554 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_bphysics_aod_grid" export SLICE="bphysics" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh index 8d4c3c34228..4287965d4a5 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_bphysics_build" export SLICE="bphysics" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh index 1c8e105b1b5..ffc13d9c0aa 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_bphysics_grid" export SLICE="bphysics" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh index 4d84e74c0c9..8e588f1851b 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_bphysicsexo_aod_grid" export SLICE="mubphysics" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh index 38f86e3dc55..8e4f81931f9 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_electron_build" export SLICE="egamma" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh index c09f7030634..ea42d84b821 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_electron_grid" export SLICE="egamma" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh index 92023fd8aef..60e43d805fc 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_id_build" export EVENTS="10" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh index e5d08da24f7..ac076c4a7a6 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_jet_build" export SLICE="jet" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh index 4520102479c..7640a265710 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_jet_grid" export SLICE="jet" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh index a2f17fba182..419c2afad7b 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_l1_build" export EVENTS="10" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh index 27cf358ba9e..a259b6b14a9 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh @@ -23,6 +23,7 @@ export NAME="slice_l1_grid" export JOBOPTIONS="TriggerTest/testLVL1CTPAthenaTrigRDO.py" +# art-output: *.regtest source exec_athena_art_trigger_validation.sh source exec_art_triggertest_post.sh diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh index d281dd3e1e1..7ee9148b526 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_met_build" export SLICE="met" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh index 0fc58c96e91..0a9f2a8f597 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_met_grid" export SLICE="met" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh index c5c19166152..5cc105a4c3b 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_minbias_build" export SLICE="minbias" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh index a5d353f1089..aec3e6de360 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_minbias_grid" export SLICE="minbias" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh index 78dbdc4feb4..a27477e0460 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_minbias_hmt_grid" export SLICE="minbiasEnhanced" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh index eb749ea51a1..07604baf6d4 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_muon_build" export SLICE="muon" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh index 353f627d326..dec5ebe03a5 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_muon_grid" export SLICE="muon" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh index f9731ad143c..03131a73f1c 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_tau_build" export SLICE="tau" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh index 153bd8357ef..15d585d96b9 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_tau_grid" export SLICE="tau" -- GitLab From 222388f5a6308b120ef452b5688311984bea73ff Mon Sep 17 00:00:00 2001 From: amete <serhanmete@gmail.com> Date: Wed, 21 Nov 2018 10:46:51 +0100 Subject: [PATCH 056/135] Clean-up initialization and finalization bits Former-commit-id: 06d82e58ecc89dc317b8d319afe8bb08745fa482 --- .../PerfMonVTune/src/VTuneProfilerService.cxx | 20 +++++-------------- .../PerfMonVTune/src/VTuneProfilerService.h | 3 --- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx index 739fd4a4325..6b8f3232644 100644 --- a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx @@ -17,13 +17,13 @@ VTuneProfilerService::VTuneProfilerService( const std::string& name, ISvcLocator : AthService( name, svcloc ), m_incidentSvc( "IncidentSvc", name ), m_processedEvents( 0 ) { - //m_running( false ), m_processedEvents( 0 ) { declareProperty( "ResumeEvent", m_resumeEvent = 0, "Event in which to resume the profiling." ); declareProperty( "PauseEvent", m_pauseEvent = -1, "Event in which to pause the profiling. Negative number " "profiles the entire event-loop." ); + } /** @@ -42,6 +42,7 @@ StatusCode VTuneProfilerService::queryInterface( const InterfaceID& riid, } return AthService::queryInterface( riid, ppvIF ); + } @@ -51,8 +52,7 @@ StatusCode VTuneProfilerService::queryInterface( const InterfaceID& riid, StatusCode VTuneProfilerService::initialize() { // Print information - ATH_MSG_INFO( "Initializing VTuneProfilerService - Package version: " - << PACKAGE_VERSION ); + ATH_MSG_INFO( "Initializing VTuneProfilerService" ); // Set up listening to the incidents CHECK( m_incidentSvc.retrieve() ); @@ -66,18 +66,6 @@ StatusCode VTuneProfilerService::initialize() { } -/** - * Finalize the service - */ -StatusCode VTuneProfilerService::finalize() { - - // Print information - ATH_MSG_INFO( "Finalizing VTuneProfilerService - Package version: " - << PACKAGE_VERSION ); - - return StatusCode::SUCCESS; -} - /** * Resume the profiling */ @@ -96,6 +84,7 @@ StatusCode VTuneProfilerService::resumeProfiling() { m_runner = std::make_unique< VTuneProfileRunner >(); return StatusCode::SUCCESS; + } /** @@ -116,6 +105,7 @@ StatusCode VTuneProfilerService::pauseProfiling() { m_runner.reset(); return StatusCode::SUCCESS; + } /** diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h index 2c68239311b..1f30298142c 100644 --- a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h @@ -32,9 +32,6 @@ class VTuneProfilerService : public AthService, /// Standard Gaudi initialization function virtual StatusCode initialize() override; - /// Standard Gaudi finalization function - virtual StatusCode finalize() override; - /// Resume profiling virtual StatusCode resumeProfiling() override; -- GitLab From 47bd3e759b08232affc0a73008d73b8e14463511 Mon Sep 17 00:00:00 2001 From: Tadej Novak <tadej.novak@cern.ch> Date: Wed, 21 Nov 2018 10:58:38 +0100 Subject: [PATCH 057/135] OverlayBS: Do not try to set LAr conditions if LAr is disabled Former-commit-id: 8065c406d1adb892c19139ecab5cae9ddecce70a --- .../share/skeleton.OverlayBS_tf.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayBS_tf.py b/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayBS_tf.py index 2f932b47201..97e46743aef 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayBS_tf.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayBS_tf.py @@ -226,12 +226,12 @@ print "overlay_trf: final outStream = ", outStream ServiceMgr.MessageSvc.OutputLevel = INFO ServiceMgr.MessageSvc.Format = "% F%45W%S%7W%R%T %0W%M" -if hasattr(runArgs, 'fSampltag'): - conddb.addFolderWithTag("LAR_OFL","/LAR/ElecCalibMC/fSampl", runArgs.fSampltag + digitizationFlags.physicsList.get_Value(),force=True,forceMC=True,className="LArfSamplMC") - +if DetFlags.overlay.LAr_on() : + if hasattr(runArgs, 'fSampltag'): + conddb.addFolderWithTag("LAR_OFL","/LAR/ElecCalibMC/fSampl", runArgs.fSampltag + digitizationFlags.physicsList.get_Value(),force=True,forceMC=True,className="LArfSamplMC") + else: + raise RuntimeError ("--fSampltag not specified on command-line - see --help message") -else: - raise RuntimeError ("--fSampltag not specified on command-line - see --help message") #if DetFlags.overlay.Signal_on(): # InputDBConnection = "COOLOFL_LAR/COMP200" # conddb.addFolder("","/LAR/ElecCalibOfl/AutoCorrs/AutoCorr"+"<dbConnection>"+InputDBConnection+"</dbConnection>") -- GitLab From 3369e87d9dc18a9f650ed683a40eebd1e72a7925 Mon Sep 17 00:00:00 2001 From: Nick Styles <nicholas.styles@cern.ch> Date: Wed, 21 Nov 2018 11:57:50 +0100 Subject: [PATCH 058/135] Change HI config (temporarily, while longer term solution is in progress) to address ATLASRECTS-4691 Former-commit-id: fcd913c41b0186061ed1d77446c273f75051a68b --- .../InDetExample/InDetRecExample/python/InDetJobProperties.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py index 9b1cc0da380..2ec6f97f360 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py @@ -1311,7 +1311,7 @@ class InDetJobProperties(JobPropertyContainer): self.checkThenSet(self.priVtxCutLevel , 1 ) self.checkThenSet(self.doTrackSegmentsPixelPrdAssociation, False) self.checkThenSet(self.perigeeExpression , 'Vertex') - self.checkThenSet(self.doRefitInvalidCov ,True) + #self.checkThenSet(self.doRefitInvalidCov ,True) temporarily commenting out due to ATLASRECTS-4691 # --- special case SLHC elif (self.doSLHC()): -- GitLab From 39f6cc71fa70dc5d015d6a321208df2c79e7ae4e Mon Sep 17 00:00:00 2001 From: Goetz Gaycken <goetz.gaycken@cern.ch> Date: Mon, 15 Oct 2018 20:06:36 +0200 Subject: [PATCH 059/135] Migrate the ZdcAnalyisTool to data handles. Now data handles are used when not in XAOD_STANDALONE or XAOD_MANACORE mode. Former-commit-id: b2b32104e24ac3195c09b84dbf7fcd1620ac082d --- .../ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx | 61 ++++++++++++++----- .../ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h | 13 +++- 2 files changed, 57 insertions(+), 17 deletions(-) diff --git a/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx b/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx index b044c9abf42..e3be12b810a 100644 --- a/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx +++ b/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx @@ -7,7 +7,9 @@ #include "TEnv.h" #include "TSystem.h" #include "ZdcAnalysis/ZdcSincInterp.h" -#include "xAODEventInfo/EventInfo.h" +#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) +# include "xAODEventInfo/EventInfo.h" +#endif #include "TFile.h" #include <sstream> #include <memory> @@ -17,9 +19,16 @@ namespace ZDC { - ZdcAnalysisTool::ZdcAnalysisTool(const std::string& name) : asg::AsgTool(name), m_name(name), m_init(false), - m_writeAux(false), m_eventReady(false), + ZdcAnalysisTool::ZdcAnalysisTool(const std::string& name) : asg::AsgTool(name), m_name(name), +#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) + m_init(false), +#endif + m_writeAux(false), m_runNumber(0), m_lumiBlock(0), +#if ( !defined(XAOD_STANDALONE) ) && ( !defined(XAOD_MANACORE) ) + m_eventInfoKey("EventInfo"), + m_ZdcModuleWriteKey("ZdcSums"), +#endif m_splines{{{{0,0,0,0}},{{0,0,0,0}}}}, m_zdcTriggerEfficiency(0) { @@ -28,6 +37,10 @@ namespace ZDC #endif declareProperty("ZdcModuleContainerName",m_zdcModuleContainerName="ZdcModules","Location of ZDC processed data"); +#if ( !defined(XAOD_STANDALONE) ) && ( !defined(XAOD_MANACORE) ) + declareProperty("EventInfoKey", m_eventInfoKey, "Location of the event info."); + declareProperty("ZdcModuleWriteKey", m_ZdcModuleWriteKey, "Output location of ZDC reprocessed data"); +#endif declareProperty("Configuration", m_configuration = "PbPb2015"); declareProperty("FlipEMDelay",m_flipEMDelay=false); declareProperty("LowGainOnly",m_lowGainOnly=false); @@ -582,7 +595,15 @@ StatusCode ZdcAnalysisTool::initializeTool() ATH_MSG_INFO("DeltaTCut: "<<m_deltaTCut); ATH_MSG_INFO("ChisqRatioCut: "<<m_ChisqRatioCut); +#if ( !defined(XAOD_STANDALONE) ) && ( !defined(XAOD_MANACORE) ) + ATH_CHECK( m_eventInfoKey.initialize()); + ATH_CHECK( m_zdcModuleContainerName.initialize()); + ATH_CHECK( m_ZdcModuleWriteKey.initialize() ); +#endif + +#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) m_init = true; +#endif return StatusCode::SUCCESS; } @@ -656,14 +677,13 @@ StatusCode ZdcAnalysisTool::recoZdcModule(const xAOD::ZdcModule& module) StatusCode ZdcAnalysisTool::recoZdcModules(const xAOD::ZdcModuleContainer& moduleContainer) { - if (!m_eventReady) - { - ATH_MSG_INFO("Event not ready for ZDC reco!"); - return StatusCode::FAILURE; - } - +#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey); + if (!eventInfo.isValid()) return StatusCode::FAILURE; +#else const xAOD::EventInfo* eventInfo = 0; ATH_CHECK(evtStore()->retrieve(eventInfo,"EventInfo")); +#endif // check for new run number, if new, possibly update configuration and/or calibrations // @@ -839,8 +859,13 @@ StatusCode ZdcAnalysisTool::recoZdcModules(const xAOD::ZdcModuleContainer& modul zdc_sum->auxdecor<unsigned int>("ModuleMask") = (getModuleMask()>>(4*iside)) & 0xF; } +#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) + ATH_CHECK( SG::WriteHandle<xAOD::ZdcModuleContainer>(m_ZdcModuleWriteKey).record( std::move(newModuleContainer), + std::move(newModuleAuxContainer))); +#else ATH_CHECK( evtStore()->record( newModuleContainer.release() , "ZdcSums" + m_auxSuffix) ) ; ATH_CHECK( evtStore()->record( newModuleAuxContainer.release() , "ZdcSums" + m_auxSuffix +"Aux.") ); +#endif return StatusCode::SUCCESS; } @@ -919,20 +944,26 @@ void ZdcAnalysisTool::setTimeCalibrations(unsigned int runNumber) fCalib->Close(); } -StatusCode ZdcAnalysisTool::reprocessZdc() +StatusCode ZdcAnalysisTool::reprocessZdc() { +#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) if (!m_init) { ATH_MSG_INFO("Tool not initialized!"); return StatusCode::FAILURE; } - m_eventReady = false; +#endif + //std::cout << "Trying to retrieve " << m_zdcModuleContainerName << std::endl; - m_zdcModules = 0; - ATH_CHECK(evtStore()->retrieve(m_zdcModules,m_zdcModuleContainerName)); - m_eventReady = true; +#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) + SG::ReadHandle<xAOD::ZdcModuleContainer> zdc_modules(m_zdcModuleContainerName); + if (!zdc_modules.isValid()) return StatusCode::FAILURE; +#else + xAOD::ZdcModuleContainer *zdc_modules = nullptr; + ATH_CHECK(evtStore()->retrieve(zdc_modules,m_zdcModuleContainerName)); +#endif - ATH_CHECK(recoZdcModules(*m_zdcModules)); + ATH_CHECK(recoZdcModules(*zdc_modules)); return StatusCode::SUCCESS; } diff --git a/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h b/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h index 5761a93128c..9c07dd24a62 100644 --- a/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h +++ b/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h @@ -6,6 +6,9 @@ #define ZDCANALYSIS_ZDCANALYSISTOOL_H #include "AsgTools/AsgTool.h" +#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) +# include "xAODEventInfo/EventInfo.h" +#endif #include "xAODForward/ZdcModuleContainer.h" #include "xAODTrigL1Calo/TriggerTowerContainer.h" @@ -78,7 +81,9 @@ class ZdcAnalysisTool : public virtual IZdcAnalysisTool, public asg::AsgTool // Data members // std::string m_name; +#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) bool m_init; +#endif std::string m_configuration; std::string m_zdcAnalysisConfigPath; std::string m_zdcEnergyCalibFileName; @@ -88,15 +93,19 @@ class ZdcAnalysisTool : public virtual IZdcAnalysisTool, public asg::AsgTool bool m_writeAux; std::string m_auxSuffix; - bool m_eventReady; unsigned int m_runNumber; unsigned int m_lumiBlock; // internal functions TF1* m_tf1SincInterp; +#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) + SG::ReadHandleKey<xAOD::EventInfo> m_eventInfoKey; + SG::ReadHandleKey<xAOD::ZdcModuleContainer> m_zdcModuleContainerName; + SG::WriteHandleKey<xAOD::ZdcModuleContainer> m_ZdcModuleWriteKey; +#else std::string m_zdcModuleContainerName; - const xAOD::ZdcModuleContainer* m_zdcModules; +#endif bool m_flipEMDelay; bool m_lowGainOnly; bool m_combineDelay; -- GitLab From 2e3a50569457c242e39a4a81a8c124beea321438 Mon Sep 17 00:00:00 2001 From: Goetz Gaycken <goetz.gaycken@cern.ch> Date: Wed, 21 Nov 2018 13:32:54 +0100 Subject: [PATCH 060/135] Remove optional non data handle based data retrieval. Former-commit-id: de5ec5384b7e0651e4732eebefccf1adbe0fefa0 --- .../ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx | 40 ------------------- .../ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h | 11 +---- 2 files changed, 1 insertion(+), 50 deletions(-) diff --git a/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx b/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx index e3be12b810a..f3480cb92fe 100644 --- a/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx +++ b/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx @@ -7,9 +7,6 @@ #include "TEnv.h" #include "TSystem.h" #include "ZdcAnalysis/ZdcSincInterp.h" -#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) -# include "xAODEventInfo/EventInfo.h" -#endif #include "TFile.h" #include <sstream> #include <memory> @@ -20,15 +17,10 @@ namespace ZDC { ZdcAnalysisTool::ZdcAnalysisTool(const std::string& name) : asg::AsgTool(name), m_name(name), -#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) - m_init(false), -#endif m_writeAux(false), m_runNumber(0), m_lumiBlock(0), -#if ( !defined(XAOD_STANDALONE) ) && ( !defined(XAOD_MANACORE) ) m_eventInfoKey("EventInfo"), m_ZdcModuleWriteKey("ZdcSums"), -#endif m_splines{{{{0,0,0,0}},{{0,0,0,0}}}}, m_zdcTriggerEfficiency(0) { @@ -37,10 +29,8 @@ namespace ZDC #endif declareProperty("ZdcModuleContainerName",m_zdcModuleContainerName="ZdcModules","Location of ZDC processed data"); -#if ( !defined(XAOD_STANDALONE) ) && ( !defined(XAOD_MANACORE) ) declareProperty("EventInfoKey", m_eventInfoKey, "Location of the event info."); declareProperty("ZdcModuleWriteKey", m_ZdcModuleWriteKey, "Output location of ZDC reprocessed data"); -#endif declareProperty("Configuration", m_configuration = "PbPb2015"); declareProperty("FlipEMDelay",m_flipEMDelay=false); declareProperty("LowGainOnly",m_lowGainOnly=false); @@ -595,15 +585,10 @@ StatusCode ZdcAnalysisTool::initializeTool() ATH_MSG_INFO("DeltaTCut: "<<m_deltaTCut); ATH_MSG_INFO("ChisqRatioCut: "<<m_ChisqRatioCut); -#if ( !defined(XAOD_STANDALONE) ) && ( !defined(XAOD_MANACORE) ) ATH_CHECK( m_eventInfoKey.initialize()); ATH_CHECK( m_zdcModuleContainerName.initialize()); ATH_CHECK( m_ZdcModuleWriteKey.initialize() ); -#endif -#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) - m_init = true; -#endif return StatusCode::SUCCESS; } @@ -677,13 +662,8 @@ StatusCode ZdcAnalysisTool::recoZdcModule(const xAOD::ZdcModule& module) StatusCode ZdcAnalysisTool::recoZdcModules(const xAOD::ZdcModuleContainer& moduleContainer) { -#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey); if (!eventInfo.isValid()) return StatusCode::FAILURE; -#else - const xAOD::EventInfo* eventInfo = 0; - ATH_CHECK(evtStore()->retrieve(eventInfo,"EventInfo")); -#endif // check for new run number, if new, possibly update configuration and/or calibrations // @@ -859,14 +839,8 @@ StatusCode ZdcAnalysisTool::recoZdcModules(const xAOD::ZdcModuleContainer& modul zdc_sum->auxdecor<unsigned int>("ModuleMask") = (getModuleMask()>>(4*iside)) & 0xF; } -#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) ATH_CHECK( SG::WriteHandle<xAOD::ZdcModuleContainer>(m_ZdcModuleWriteKey).record( std::move(newModuleContainer), std::move(newModuleAuxContainer))); -#else - ATH_CHECK( evtStore()->record( newModuleContainer.release() , "ZdcSums" + m_auxSuffix) ) ; - ATH_CHECK( evtStore()->record( newModuleAuxContainer.release() , "ZdcSums" + m_auxSuffix +"Aux.") ); -#endif - return StatusCode::SUCCESS; } @@ -946,22 +920,8 @@ void ZdcAnalysisTool::setTimeCalibrations(unsigned int runNumber) StatusCode ZdcAnalysisTool::reprocessZdc() { -#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) - if (!m_init) - { - ATH_MSG_INFO("Tool not initialized!"); - return StatusCode::FAILURE; - } -#endif - - //std::cout << "Trying to retrieve " << m_zdcModuleContainerName << std::endl; -#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) SG::ReadHandle<xAOD::ZdcModuleContainer> zdc_modules(m_zdcModuleContainerName); if (!zdc_modules.isValid()) return StatusCode::FAILURE; -#else - xAOD::ZdcModuleContainer *zdc_modules = nullptr; - ATH_CHECK(evtStore()->retrieve(zdc_modules,m_zdcModuleContainerName)); -#endif ATH_CHECK(recoZdcModules(*zdc_modules)); diff --git a/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h b/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h index 9c07dd24a62..3b401b9b571 100644 --- a/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h +++ b/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h @@ -6,9 +6,7 @@ #define ZDCANALYSIS_ZDCANALYSISTOOL_H #include "AsgTools/AsgTool.h" -#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) -# include "xAODEventInfo/EventInfo.h" -#endif +#include "xAODEventInfo/EventInfo.h" #include "xAODForward/ZdcModuleContainer.h" #include "xAODTrigL1Calo/TriggerTowerContainer.h" @@ -81,9 +79,6 @@ class ZdcAnalysisTool : public virtual IZdcAnalysisTool, public asg::AsgTool // Data members // std::string m_name; -#if ( defined(XAOD_STANDALONE) ) || ( defined(XAOD_MANACORE) ) - bool m_init; -#endif std::string m_configuration; std::string m_zdcAnalysisConfigPath; std::string m_zdcEnergyCalibFileName; @@ -99,13 +94,9 @@ class ZdcAnalysisTool : public virtual IZdcAnalysisTool, public asg::AsgTool // internal functions TF1* m_tf1SincInterp; -#if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) SG::ReadHandleKey<xAOD::EventInfo> m_eventInfoKey; SG::ReadHandleKey<xAOD::ZdcModuleContainer> m_zdcModuleContainerName; SG::WriteHandleKey<xAOD::ZdcModuleContainer> m_ZdcModuleWriteKey; -#else - std::string m_zdcModuleContainerName; -#endif bool m_flipEMDelay; bool m_lowGainOnly; bool m_combineDelay; -- GitLab From ed4f2fc4177a81921b4e2a23939d0a8328891b9b Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Wed, 21 Nov 2018 16:13:36 +0100 Subject: [PATCH 061/135] add time burning option to MTCalibPebHypoTool also change the tool input from a vector to a single object (no need for multiple inputs) Former-commit-id: 6ec3aabde193a328bef99ecbb9c4e190503cfb90 --- .../TrigExPartialEB/share/MTCalibPeb.py | 4 ++ .../TrigExPartialEB/src/MTCalibPebHypoAlg.cxx | 9 +-- .../src/MTCalibPebHypoTool.cxx | 66 +++++++++++++++---- .../TrigExPartialEB/src/MTCalibPebHypoTool.h | 30 ++++++--- 4 files changed, 84 insertions(+), 25 deletions(-) diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py index dd5a507f2dc..599385c5751 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py @@ -55,9 +55,13 @@ hypo.HypoOutputDecisions = "MTCalibPebDecisions" hypoTool1 = MTCalibPebHypoTool("HLT_MTCalibPeb1") hypoTool1.RandomAcceptRate = 0.75 +hypoTool1.BurnTimePerCycleMillisec = 200 +hypoTool1.NumBurnCycles = 3 hypoTool2 = MTCalibPebHypoTool("HLT_MTCalibPeb2") hypoTool2.RandomAcceptRate = 0.25 +hypoTool2.BurnTimePerCycleMillisec = 1000 +hypoTool2.NumBurnCycles = 10 hypo.HypoTools = [hypoTool1, hypoTool2] diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoAlg.cxx b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoAlg.cxx index b752081e438..9d8a72ff20b 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoAlg.cxx +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoAlg.cxx @@ -28,6 +28,7 @@ MTCalibPebHypoAlg::~MTCalibPebHypoAlg() {} // ============================================================================= StatusCode MTCalibPebHypoAlg::initialize() { ATH_MSG_INFO("Initialising " << name()); + ATH_CHECK(m_hypoTools.retrieve()); return StatusCode::SUCCESS; } @@ -36,6 +37,7 @@ StatusCode MTCalibPebHypoAlg::initialize() { // ============================================================================= StatusCode MTCalibPebHypoAlg::finalize() { ATH_MSG_INFO("Finalising " << name()); + ATH_CHECK(m_hypoTools.release()); return StatusCode::SUCCESS; } @@ -50,12 +52,11 @@ StatusCode MTCalibPebHypoAlg::execute_r(const EventContext& eventContext) const auto aux = std::make_unique<DecisionAuxContainer>(); decisions->setStore(aux.get()); - // Prepare input for hypo tools - std::vector<MTCalibPebHypoTool::Input> toolInput; - // Create new decision Decision* newd = newDecisionIn(decisions.get()); // DecisionContainer decisions owns the pointer - toolInput.emplace_back(newd); + + // Prepare input for hypo tools + MTCalibPebHypoTool::Input toolInput(newd, eventContext); // Call the hypo tools for (const auto& tool: m_hypoTools) { diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx index ecb5371e293..c94abfa7cfe 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx @@ -2,15 +2,37 @@ Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ +// Trigger includes #include "MTCalibPebHypoTool.h" + +// Athena includes +#include "AthenaKernel/Timeout.h" + +// System includes #include <random> +#include <thread> // Local implementation-specific helper methods namespace { + /// Returns a reference to static thread-local random number generator + std::mt19937& threadLocalGenerator() { + static thread_local std::random_device rd; // used only to ensure different seeds for mt19937 + static thread_local std::mt19937 generator(rd()); + return generator; + } + /// Basic random real number generation + template<typename T> T randomRealNumber(const T min, const T max) { + std::uniform_real_distribution<T> distribution(min, max); + return distribution(threadLocalGenerator()); + } + /// Basic random integer generation + template<typename T> T randomInteger(const T min, const T max) { + std::uniform_int_distribution<T> distribution(min, max); + return distribution(threadLocalGenerator()); + } + /// Random bool with a given true rate bool randomAccept(const double acceptRate) { - static thread_local std::mt19937 generator; - std::uniform_real_distribution<double> distribution(0.0, 1.0); - return (distribution(generator) < acceptRate); + return (randomRealNumber(0.0, 1.0) < acceptRate); } } @@ -35,17 +57,37 @@ StatusCode MTCalibPebHypoTool::initialize() { } // ============================================================================= -StatusCode MTCalibPebHypoTool::decide(const std::vector<MTCalibPebHypoTool::Input>& inputs) const { +StatusCode MTCalibPebHypoTool::decide(const MTCalibPebHypoTool::Input& input) const { - bool accept = randomAccept(m_acceptRate); - for (auto& in : inputs) { - if (accept) { - ATH_MSG_DEBUG("Decision " << m_decisionId << " is accept"); - TrigCompositeUtils::addDecisionID(m_decisionId, in.decision); - } - else { - ATH_MSG_DEBUG("Decision " << m_decisionId << " is reject"); + // --------------------------------------------------------------------------- + // Burn CPU time + // --------------------------------------------------------------------------- + for (unsigned int iCycle = 0; iCycle < m_numBurnCycles; ++iCycle) { + if (Athena::Timeout::instance(input.eventContext).reached()) { + if (m_failOnTimeout) { + ATH_MSG_ERROR("Timeout reached in CPU time burning cycle # " << iCycle+1 << " and FailOnTimeout is true"); + return StatusCode::FAILURE; + } + ATH_MSG_INFO("Timeout reached in CPU time burning cycle # " << iCycle+1); + break; } + unsigned int burnTime = m_burnTimeRandomly + ? randomInteger<unsigned int>(0, m_burnTimePerCycleMillisec) + : m_burnTimePerCycleMillisec.value(); + ATH_MSG_VERBOSE("CPU time burning cycle # " << iCycle+1 << ", burn time [ms] = " << burnTime); + std::this_thread::sleep_for(std::chrono::milliseconds(burnTime)); + } + + // --------------------------------------------------------------------------- + // Random accept decision + // --------------------------------------------------------------------------- + bool accept = randomAccept(m_acceptRate); + if (accept) { + ATH_MSG_DEBUG("Decision " << m_decisionId << " is accept"); + TrigCompositeUtils::addDecisionID(m_decisionId, input.decision); + } + else { + ATH_MSG_DEBUG("Decision " << m_decisionId << " is reject"); } return StatusCode::SUCCESS; diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h index 2fa92ae5974..d46d97904a8 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h @@ -15,9 +15,6 @@ // TDAQ includes #include "eformat/StreamTag.h" -// System includes -#include <random> - /** @class MTCalibPebHypoTool * @brief Base class for tools used by MTCalibPebHypoAlg **/ @@ -33,23 +30,38 @@ public: // ------------------------- Public types ------------------------------------ struct Input { - Input(TrigCompositeUtils::Decision* d) - : decision(d) {} + Input(TrigCompositeUtils::Decision* d, const EventContext& ctx) + : decision(d), eventContext(ctx) {} TrigCompositeUtils::Decision* decision; + const EventContext& eventContext; }; // ------------------------- Specific methods of this class ------------------ /// Decides whether to accept the event - StatusCode decide(const std::vector<Input>& inputs) const; + StatusCode decide(const Input& input) const; private: // ------------------------- Properties -------------------------------------- Gaudi::Property<double> m_acceptRate { - this, - "RandomAcceptRate", - -1, + this, "RandomAcceptRate", -1, "Rate of random accepts, <=0 is never, >=1 is always" }; + Gaudi::Property<unsigned int> m_burnTimePerCycleMillisec { + this, "BurnTimePerCycleMillisec", 0, + "Burn time per cycle in milliseconds" + }; + Gaudi::Property<unsigned int> m_numBurnCycles { + this, "NumBurnCycles", 0, + "Number of time burning cycles" + }; + Gaudi::Property<bool> m_burnTimeRandomly { + this, "BurnTimeRandomly", true, + "If true, burn time per cycle is a random value from uniform distribution between 0 and the given value" + }; + Gaudi::Property<bool> m_failOnTimeout { + this, "FailOnTimeout", true, + "If true, the execution will return StatusCode::FAILURE when Athena timeout is detected" + }; // ------------------------- Other private members --------------------------- /// The decision id of the tool instance -- GitLab From 5b75d259734ba71c1cfb2fea1056c5255b7d40a7 Mon Sep 17 00:00:00 2001 From: astruebi <antonia.struebig@cern.ch> Date: Wed, 21 Nov 2018 16:56:54 +0100 Subject: [PATCH 062/135] addition of low pT chains to primary menu, ATR-19121 Former-commit-id: 718068b324e5a4b325b76f4cc6cec3b23d062c9f --- .../python/menu/Physics_pp_v7_primaries.py | 51 ++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py b/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py index e23a2e89872..f075bed74e3 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py @@ -70,11 +70,23 @@ def setupMenu(): ['mu20_ivarmedium_L1MU10_2J20', 'L1_MU10_2J20', [], [PhysicsStream], ['RATE:MuonJet', 'BW:Muon','BW:Jet'], -1], ['mu20_ivarmedium_L1MU10_2J15_J20', 'L1_MU10_2J15_J20', [], [PhysicsStream], ['RATE:MuonJet', 'BW:Muon','BW:Jet'], -1], + #low pt + ['mu6_nomucomb', 'L1_MU6', [], [PhysicsStream], ['RATE:SingleMuon', 'BW:Muon'], -1], + ['mu8', 'L1_MU6', [], [PhysicsStream], ['RATE:SingleMuon', 'BW:Muon'], -1], + ['mu10', 'L1_MU10', [], [PhysicsStream], ['RATE:SingleMuon', 'BW:Muon'], -1], + + ['2mu4', 'L1_2MU4', [], [PhysicsStream], ['RATE:MultiMuon', 'BW:Muon'], -1], + ] if TriggerFlags.doFTK(): TriggerFlags.MuonSlice.signatures = TriggerFlags.MuonSlice.signatures() + [ + + ['mu6_idperf_FTK_L1MU6_FTK', 'L1_MU6_FTK', [], [PhysicsStream, 'express'], ['RATE:IDMonitoring', 'BW:Muon', 'BW:ID'], -1], + ['mu6_idperf_FTKRefit_L1MU6_FTK', 'L1_MU6_FTK', [], [PhysicsStream, 'express'], ['RATE:IDMonitoring', 'BW:Muon', 'BW:ID'], -1], + ['mu22_mu8noL1_FTKFS_L1MU20MU21_FTK', 'L1_MU20MU21_FTK', ['L1_MU20_FTK',''], [PhysicsStream], ['RATE:MultiMuon','BW:Muon'], -1,['serial',-1,['mu22','mu8noL1_FTKFS']]], + ] @@ -145,6 +157,13 @@ def setupMenu(): ['10j40_L16J15', 'L1_6J15' , [], [PhysicsStream], ['RATE:MultiJet', 'BW:Jet'], -1], + #low pT + ['j15', 'L1_RD0_FILLED', [], [PhysicsStream], ['RATE:SingleJet', 'BW:Jet'], -1], + ['j45', 'L1_J15', [], [PhysicsStream], ['RATE:SingleJet', 'BW:Jet'], -1], + ['j175', 'L1_J50', [], [PhysicsStream], ['RATE:SingleJet', 'BW:Jet'], -1], + + ['j45_320eta490', 'L1_J15.31ETA49', [], [PhysicsStream], ['RATE:SingleJet', 'BW:Jet'], -1], + ] @@ -154,7 +173,10 @@ def setupMenu(): ['j225_gsc360_bmv2c2085_split', 'L1_J100', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1], ['j55_gsc75_bmv2c2060_split_3j55_gsc75_boffperf_split_L14J20', 'L1_4J20', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1], ['3j35_gsc55_bmv2c2070_split_L13J35.0ETA23', 'L1_3J35.0ETA23', [], [PhysicsStream], ['RATE:MultiBJet', 'BW:BJet'], -1], - + + #low pT + ['j35_gsc45_boffperf_split_L1J15', 'L1_J15', [], [PhysicsStream,'express'], ['RATE:SingleBJet', 'BW:BJet'], -1], + ['j45_gsc60_bmv2c1085_split_L1J12', 'L1_J12', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1], ] # BjetSlice @@ -162,6 +184,10 @@ def setupMenu(): if TriggerFlags.doFTK(): TriggerFlags.BjetSlice.signatures = TriggerFlags.BjetSlice.signatures() + [ + ['j35_boffperf_split_FTK_L1J15_FTK', 'L1_J15_FTK', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1], + ['j35_boffperf_split_FTKVtx_L1J15_FTK', 'L1_J15_FTK', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1], + ['j35_boffperf_split_FTKRefit_L1J15_FTK', 'L1_J15_FTK', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1], + ] # Additional FTK for BjetSlise @@ -169,7 +195,20 @@ def setupMenu(): TriggerFlags.METSlice.signatures = [ ['xe110_pufit_L1XE50', 'L1_XE50',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1], ['xe110_pufit_L1XE55', 'L1_XE55',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1], + + #low pT + ['xe35', 'L1_XE35',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1], + ['xe90_pufit_L1XE50', 'L1_XE50', [], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1], + ] + + if TriggerFlags.doFTK(): + TriggerFlags.METSlice.signatures = TriggerFlags.METSlice.signatures() + [ + + ['xe35_trkmht_FTK', 'L1_XE35',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1], + + ] + TriggerFlags.TauSlice.signatures = [ @@ -193,6 +232,9 @@ def setupMenu(): if TriggerFlags.doFTK(): TriggerFlags.TauSlice.signatures = TriggerFlags.TauSlice.signatures() + [ + ['tau12_idperf_FTK', 'L1_TAU12IM_FTK', [], [PhysicsStream], ['RATE:SingleTau', 'BW:Tau'], -1], + ['tau12_perf_FTKNoPrec', 'L1_TAU12IM_FTK', [], [PhysicsStream], ['RATE:SingleTau', 'BW:Tau'], -1], + ] @@ -243,6 +285,10 @@ def setupMenu(): ['e140_lhloose_nod0_L1EM24VHI', 'L1_EM24VHI', [], [PhysicsStream], ['RATE:SingleElectron', 'BW:Egamma'],-1], ['e32_lhtight_nod0_ivarloose', 'L1_EM24VHI', [], [PhysicsStream], ['RATE:SingleElectron', 'BW:Egamma'],-1], + #low pT + ['g10_loose', 'L1_EM7', [], [PhysicsStream], ['RATE:SinglePhoton', 'BW:Egamma'],-1], + + ['e9_lhvloose_nod0_L1EM7', 'L1_EM7', [], [PhysicsStream], ['RATE:SingleElectron', 'BW:Egamma'],-1], ] @@ -251,6 +297,7 @@ def setupMenu(): ['mu6_mu4_bJpsimumu', 'L1_MU6_2MU4', ['L1_MU6','L1_MU4'], [BPhysicsStream], [RATE_BphysTag,BW_BphysTag], -1], ['mu6_mu4_bUpsimumu', 'L1_MU6_2MU4', ['L1_MU6','L1_MU4'], [BPhysicsStream], [RATE_BphysTag,BW_BphysTag], -1], + ['mu11_mu6_bTau', 'L1_MU11_2MU6', ['L1_MU11','L1_MU6'], [BPhysicsStream, 'express'], [RATE_BphysTag,BW_BphysTag], -1], ] @@ -346,6 +393,8 @@ def setupMenu(): #Beamspot chanis first try ATR-9847 TriggerFlags.BeamspotSlice.signatures = [ + ['beamspot_allTE_trkfast_peb_L13J15', 'L1_3J15', [], ["BeamSpot"], ['RATE:BeamSpot', 'BW:BeamSpot'], -1], + ] -- GitLab From 7e6ab3b38f9309adf07dc024eb49735fd9a1712c Mon Sep 17 00:00:00 2001 From: James Beacham <j.beacham@cern.ch> Date: Sat, 17 Nov 2018 20:53:37 +0000 Subject: [PATCH 063/135] Merge branch 'ATLASSIM-3557_TMT_1' into '21.0' ATLASSIM-3557 for pixel TMT: Moving TMT geometry from boolean unit to assembly See merge request atlas/athena!12375 Former-commit-id: 22cbf2f95bbe994a60b791ada8e1ca6aff3426b5 --- .../PixelGeoModel/src/GeoPixelTMT.cxx | 80 ++++++++++++------- 1 file changed, 52 insertions(+), 28 deletions(-) diff --git a/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx b/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx index 0aad3fca077..d69eca5bfd3 100644 --- a/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx +++ b/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx @@ -14,6 +14,7 @@ #include "GeoModelKernel/GeoLogVol.h" #include "GeoModelKernel/GeoPhysVol.h" #include "GeoModelKernel/GeoMaterial.h" +#include "GeoModelKernel/GeoNameTag.h" #include "GeoModelKernel/GeoTransform.h" #include "GeoModelKernel/GeoShapeShift.h" @@ -32,8 +33,25 @@ GeoPixelTMT::~GeoPixelTMT(){ } GeoVPhysVol* GeoPixelTMT::Build() { - const GeoShape * lastShape = 0; - double totVolume = 0; + + std::cout << " new implementation of the Pixel TMT " << std::endl; + + // we want to use a assemby, tehrefor we need to dummy volume to trigger the mechanism + const GeoMaterial* ether = mat_mgr->getMaterial("special::Ether"); + GeoBox* dummybox= new GeoBox(4711., 4711., 4711.); + GeoLogVol* dummyTMT = new GeoLogVol("TMT",dummybox,ether); + GeoPhysVol* theTMT = new GeoPhysVol(dummyTMT); + + // get the material by dividing the total material by the volume per layer, + // the weight is only stored in DB for the whole TMT layer + // we will commonly use TMT as name for the stuff + std::string matName = gmt_mgr->getMaterialName("TMT", gmt_mgr->GetLD()); + + double volume = 12647.7; // this number seems to be wrong + const GeoMaterial* material = mat_mgr->getMaterialForVolume(matName,volume); + GeoNameTag* tag = new GeoNameTag("TMT"); + + // this part is unchanged: reading the DB, creating the shapes of the volumes and defining their position HepGeom::RotateX3D traprot(180.*CLHEP::deg); int halfNModule = m_gmt_mgr->PixelNModule()/2; @@ -82,42 +100,48 @@ GeoVPhysVol* GeoPixelTMT::Build() { //assuming 'shape' cannot be null. shape->ref(); + // end of the old part + // now we put everything into the assembly if (!perModule) { // For middle section and others - totVolume += shape->volume(); - HepGeom::Translate3D trans(xpos,ypos,zpos); - lastShape = addShape(lastShape, shape, trans); - + + // create the colume, move it to the correct relative position and add it to the assembly + + GeoLogVol* tmpLogVol= new GeoLogVol("TMT",shape,material); + GeoPhysVol* tmpPhysVol= new GeoPhysVol(tmpLogVol); + GeoTransform* trans = new GeoTransform(HepGeom::Translate3D(xpos,ypos,zpos)); + + theTMT->add(tag); + theTMT->add(trans); + theTMT->add(tmpPhysVol); + } else { // Once per module, copied in +z and -z side. + // we will add the same volume many times, need to create it only once + + GeoLogVol* tmpLogVol= new GeoLogVol("TMT",shape,material); + GeoPhysVol* tmpPhysVol= new GeoPhysVol(tmpLogVol); + for (int ii = 0; ii < halfNModule; ii++) { - totVolume += shape->volume() * 2;// added twice below - double zshift = m_gmt_mgr->PixelModuleZPosition(1) * ii; + + // move the dublicates to the correct relative position and add it to the assembly + double zshift = gmt_mgr->PixelModuleZPosition(1) * ii; + + GeoTransform* transPos = new GeoTransform(HepGeom::Translate3D(xpos,ypos,zpos+zshift)); + theTMT->add(tag); + theTMT->add(transPos); + theTMT->add(tmpPhysVol); - HepGeom::Translate3D transPos(xpos,ypos,zpos+zshift); - lastShape = addShape(lastShape, shape, transPos); + GeoTransform* transNeg = new GeoTransform(HepGeom::Translate3D(xpos,ypos,-(zpos+zshift))*HepGeom::RotateX3D(180*CLHEP::deg)); + theTMT->add(tag); + theTMT->add(transNeg); + theTMT->add(tmpPhysVol); - HepGeom::Transform3D transNeg = HepGeom::Translate3D(xpos,ypos,-(zpos+zshift))*HepGeom::RotateX3D(180*CLHEP::deg); - lastShape = addShape(lastShape, shape, transNeg); } } shape->unref(); //this will delete shape if it was never added } + // Return the assembly + return theTMT; - if(lastShape==0) { - msg(MSG::ERROR) << "There is no shape for GeoPixelTMT in "<<__FILE__<<":"<<__LINE__<<endmsg; - exit(EXIT_FAILURE); - } else { - const GeoShape * tmtShape = lastShape; - // don't trust boolean volume - // double totVolume = tmtShape->volume(); - //std::cout << "TMT volume " << totVolume/CLHEP::cm3 << std::endl; - std::string matName = m_gmt_mgr->getMaterialName("TMT", m_gmt_mgr->GetLD()); - const GeoMaterial* trapMat = m_mat_mgr->getMaterialForVolume(matName,totVolume); - GeoLogVol* theTMT = new GeoLogVol("TMT",tmtShape,trapMat); - - // No need to set m_transform as default transform is OK. - - return new GeoPhysVol(theTMT); - } } const GeoShape * -- GitLab From 36e2e5aacf44e9c2a56baf4215e833440dd93331 Mon Sep 17 00:00:00 2001 From: astruebi <antonia.struebig@cern.ch> Date: Wed, 21 Nov 2018 17:21:20 +0100 Subject: [PATCH 064/135] commenting out Bjet chain, bmv2c1085 not implemented yet Former-commit-id: 3d73b4eea2864374506aa66bf1d9063f987d0318 --- .../TriggerMenu/python/menu/Physics_pp_v7_primaries.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py b/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py index f075bed74e3..2920c08f9ab 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py @@ -176,7 +176,7 @@ def setupMenu(): #low pT ['j35_gsc45_boffperf_split_L1J15', 'L1_J15', [], [PhysicsStream,'express'], ['RATE:SingleBJet', 'BW:BJet'], -1], - ['j45_gsc60_bmv2c1085_split_L1J12', 'L1_J12', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1], +# ['j45_gsc60_bmv2c1085_split_L1J12', 'L1_J12', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1], ] # BjetSlice @@ -202,11 +202,11 @@ def setupMenu(): ] - if TriggerFlags.doFTK(): + if TriggerFlags.doFTK(): TriggerFlags.METSlice.signatures = TriggerFlags.METSlice.signatures() + [ - + ['xe35_trkmht_FTK', 'L1_XE35',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1], - + ] -- GitLab From 5121d0386c1fa1a0782efd8fdf5e610be28572c2 Mon Sep 17 00:00:00 2001 From: christos <christos@cern.ch> Date: Wed, 21 Nov 2018 17:10:43 +0000 Subject: [PATCH 065/135] Change the variable we cut on TRT_SeededTrackFinder from cluster E to Et Former-commit-id: ebef55efc55d1a2046d15cca0bc581900d4c0ad6 --- .../TRT_SeededTrackFinder_ATL.h | 2 +- .../src/TRT_SeededTrackFinder_ATL.cxx | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/TRT_SeededTrackFinderTool/TRT_SeededTrackFinder_ATL.h b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/TRT_SeededTrackFinderTool/TRT_SeededTrackFinder_ATL.h index 0ffabc0c178..eb7d133c059 100755 --- a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/TRT_SeededTrackFinderTool/TRT_SeededTrackFinder_ATL.h +++ b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/TRT_SeededTrackFinderTool/TRT_SeededTrackFinder_ATL.h @@ -210,7 +210,7 @@ namespace InDet{ std::list<double> m_caloE ; double m_phiWidth ; double m_etaWidth ; - double m_ClusterE ; + double m_ClusterEt ; MsgStream& dumpconditions(MsgStream& out) const; MsgStream& dumpevent (MsgStream& out) const; diff --git a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx index 5470c32fea7..16096e6b331 100755 --- a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx +++ b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx @@ -105,7 +105,7 @@ InDet::TRT_SeededTrackFinder_ATL::TRT_SeededTrackFinder_ATL m_searchInCaloROI = false ; m_phiWidth = .3 ; m_etaWidth = 4.0 ; - m_ClusterE = 15000.0 ; + m_ClusterEt = 12000.0 ; declareInterface<ITRT_SeededTrackFinder>(this); @@ -133,7 +133,7 @@ InDet::TRT_SeededTrackFinder_ATL::TRT_SeededTrackFinder_ATL declareProperty("SearchInCaloROI" ,m_searchInCaloROI); declareProperty("phiWidth" ,m_phiWidth ); declareProperty("etaWidth" ,m_etaWidth ); - declareProperty("CaloClusterE" ,m_ClusterE ); + declareProperty("CaloClusterEt" ,m_ClusterEt ); } @@ -383,7 +383,6 @@ void InDet::TRT_SeededTrackFinder_ATL::newEvent() m_nprint=1; msg(MSG::DEBUG) << (*this) << endmsg; } - // Get the calo ROI: // if(m_searchInCaloROI ) { @@ -395,13 +394,12 @@ void InDet::TRT_SeededTrackFinder_ATL::newEvent() if (calo.isValid()) { - CaloClusterROI_Collection::const_iterator c = calo->begin(), ce = calo->end(); + for( const Trk::CaloClusterROI* c : *calo) { - for(; c!=ce; ++c) { - if ( (*c)->energy() < m_ClusterE) continue; - double x = (*c)->globalPosition().x(); - double y = (*c)->globalPosition().y(); - double z = (*c)->globalPosition().z(); + if ( (c->energy()*sin(c->globalPosition().theta())) < m_ClusterEt) {continue;} + double x = c->globalPosition().x(); + double y = c->globalPosition().y(); + double z = c->globalPosition().z(); m_caloF.push_back(atan2(y,x)); m_caloE.push_back(atan2(1.,z/sqrt(x*x+y*y))); } -- GitLab From 4b7fd495ab0ca0e39ba087b5231911d7154e0d97 Mon Sep 17 00:00:00 2001 From: Jyoti Prakash Biswal <jyoti.prakash.biswal@cern.ch> Date: Wed, 21 Nov 2018 19:57:40 +0100 Subject: [PATCH 066/135] Missing move assignment operator -- fixed! 'TrkDetDescrTPCnv' package added and HomogeneousLayerMaterialCnv_p1.cxx modified thereafter. Coverity issue# 113579 Former-commit-id: 59b905a66c52cafc63b855ca6f9d7161b24c1dae --- .../src/TrkGeometry/HomogeneousLayerMaterialCnv_p1.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Tracking/TrkDetDescr/TrkDetDescrTPCnv/src/TrkGeometry/HomogeneousLayerMaterialCnv_p1.cxx b/Tracking/TrkDetDescr/TrkDetDescrTPCnv/src/TrkGeometry/HomogeneousLayerMaterialCnv_p1.cxx index b4e8439f63c..1efdc3abb97 100644 --- a/Tracking/TrkDetDescr/TrkDetDescrTPCnv/src/TrkGeometry/HomogeneousLayerMaterialCnv_p1.cxx +++ b/Tracking/TrkDetDescr/TrkDetDescrTPCnv/src/TrkGeometry/HomogeneousLayerMaterialCnv_p1.cxx @@ -21,7 +21,7 @@ void HomogeneousLayerMaterialCnv_p1::persToTrans( const Trk::HomogeneousLayerMat // create the persistent material properties // pointer to converter (will be auto-retrieved) ITPConverterFor<Trk::MaterialProperties> *materialCnv = 0; - transObj->m_fullMaterial = createTransFromPStore( &materialCnv, persObj->material, mlog ); + transObj->m_fullMaterial = std::unique_ptr<Trk::MaterialProperties>( createTransFromPStore( &materialCnv, persObj->material, mlog )); transObj->m_splitFactor = persObj->splitFactor; } @@ -35,6 +35,6 @@ void HomogeneousLayerMaterialCnv_p1::transToPers( const Trk::HomogeneousLayerMat // create the persistent material properties // pointer to converter (will be auto-retrieved) - ITPConverterFor<Trk::MaterialProperties> *materialCnv = 0; - persObj->material = toPersistent( &materialCnv, transObj->m_fullMaterial, mlog ); + ITPConverterFor<Trk::MaterialProperties> *materialCnv = 0; + persObj->material = toPersistent( &materialCnv, transObj->m_fullMaterial.get(), mlog ); } -- GitLab From cd58eb2ef7a926de48a3d2b3365f7ac5d8301cbb Mon Sep 17 00:00:00 2001 From: Leonid Serkin <leonid.serkin@cern.ch> Date: Wed, 21 Nov 2018 20:05:44 +0000 Subject: [PATCH 067/135] Update InDetGlobalTrackMonTool.cxx Former-commit-id: d756c2f4a4704b5debaf485c0183bd2e304d8d71 --- .../InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx index 226a845fa9b..8a60234e936 100644 --- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx +++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx @@ -233,7 +233,7 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms() registerManHist( m_Trk_eta_phi_Tight, "InDetGlobal/Track", detailsInterval, "Trk_Tight_eta_phi","Distribution of eta vs phi for combined tracks passing monitoring selection", - m_nBinsEta, -c_etaRange, c_etaRange, + m_nBinsEta, -m_c_etaRange, m_c_etaRange, m_nBinsPhi, -M_PI, M_PI, "eta", "#phi_{0}" ).ignore(); -- GitLab From bd44c5a9a46ff29f432c12f3e710efac103bcb21 Mon Sep 17 00:00:00 2001 From: amete <serhanmete@gmail.com> Date: Wed, 21 Nov 2018 21:16:34 +0100 Subject: [PATCH 068/135] Adding copyright statements that were missing Former-commit-id: 1c49bfaa10985513c0cbeed1d8ce6ae558e455a9 --- .../PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h | 4 ++++ .../PerfMonVTune/src/VTuneProfileRunner.h | 4 ++++ .../PerfMonVTune/src/VTuneProfilerService.cxx | 4 ++++ .../PerfMonVTune/src/VTuneProfilerService.h | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h b/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h index ea4e7658f8c..00cbb293daf 100644 --- a/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h +++ b/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h @@ -1,3 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + #ifndef VTUNE_IPROFILERSERVICE_H #define VTUNE_IPROFILERSERVICE_H diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h index 4a115695359..93d37d9f284 100644 --- a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h @@ -1,3 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + #ifndef VTUNE_PROFILERUNNER_H #define VTUNE_PROFILERUNNER_H diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx index 6b8f3232644..b2bd167ab9f 100644 --- a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx @@ -1,3 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + // Gaudi/Athena include(s): #include "AthenaKernel/errorcheck.h" diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h index 1f30298142c..4dfb058b80d 100644 --- a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h +++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h @@ -1,3 +1,7 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + #ifndef VTUNE_PROFILERSERVICE_H #define VTUNE_PROFILERSERVICE_H -- GitLab From ecaaf6ba7aac4a6d9b2f30cf57196b79b4902688 Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Tue, 20 Nov 2018 15:50:31 +0100 Subject: [PATCH 069/135] AGDDControl: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: 652e1ef51be9187692dadc94cd8d85a7712bb8e5 --- .../AGDDControl/AGDD2GeoModelBuilder.h | 6 +++--- .../AGDDControl/src/AGDD2GeoModelBuilder.cxx | 16 ++++++++-------- .../AGDD/AGDDControl/src/AGDDController.cxx | 5 ++--- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/DetectorDescription/AGDD/AGDDControl/AGDDControl/AGDD2GeoModelBuilder.h b/DetectorDescription/AGDD/AGDDControl/AGDDControl/AGDD2GeoModelBuilder.h index 89b93d15389..130fe43ee2c 100644 --- a/DetectorDescription/AGDD/AGDDControl/AGDDControl/AGDD2GeoModelBuilder.h +++ b/DetectorDescription/AGDD/AGDDControl/AGDDControl/AGDD2GeoModelBuilder.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef AGDD2GeoModelBuilder_H @@ -39,7 +39,7 @@ public: ~AGDD2GeoModelBuilder() {} // elements & materials GeoElement* CreateElement(std::string); - GeoMaterial* CreateMaterial(std::string); + const GeoMaterial* CreateMaterial(std::string); void CreateElements(); void CreateMaterial(); @@ -73,7 +73,7 @@ public: private: GeoPhysVol *m_mother; - GeoMaterial* GetMMMaterial(std::string); + const GeoMaterial* GetMMMaterial(std::string); // std::map<std::string, GeoFullPhysVol*>* m_detectors; diff --git a/DetectorDescription/AGDD/AGDDControl/src/AGDD2GeoModelBuilder.cxx b/DetectorDescription/AGDD/AGDDControl/src/AGDD2GeoModelBuilder.cxx index 12ee3c84894..2eb7c7f7df8 100644 --- a/DetectorDescription/AGDD/AGDDControl/src/AGDD2GeoModelBuilder.cxx +++ b/DetectorDescription/AGDD/AGDDControl/src/AGDD2GeoModelBuilder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "AGDDControl/AGDD2GeoModelBuilder.h" @@ -99,11 +99,11 @@ GeoElement* AGDD2GeoModelBuilder::CreateElement(std::string name) else return 0; } -GeoMaterial* AGDD2GeoModelBuilder::CreateMaterial(std::string name) +const GeoMaterial* AGDD2GeoModelBuilder::CreateMaterial(std::string name) { // give priority to GeoModel's Material Manager in retrieving materials - GeoMaterial* mmMaterial=GetMMMaterial(name); + const GeoMaterial* mmMaterial=GetMMMaterial(name); if (mmMaterial) { // std::cout<<"material "<<name<<" found in Material Manager "<<std::endl; @@ -171,7 +171,7 @@ GeoMaterial* AGDD2GeoModelBuilder::CreateMaterial(std::string name) for (int i=0;i<nmat->NComponents();i++) { AGDDSimpleMaterial *el=nmat->Material(i); - GeoMaterial* g4el=CreateMaterial(el->GetName()); + const GeoMaterial* g4el=CreateMaterial(el->GetName()); g4mat->add(g4el,nmat->Composition(i)); } mat->SetMaterial(g4mat); @@ -504,7 +504,7 @@ void AGDD2GeoModelBuilder::CreatePgon(AGDDPgon* v) void AGDD2GeoModelBuilder::CreateComposition(AGDDComposition *v) { static int ifirst=1; - static GeoMaterial *ether=0; + static const GeoMaterial *ether=0; static GeoShape* fakeVol=0; if (ifirst) { @@ -581,7 +581,7 @@ void AGDD2GeoModelBuilder::CreateVolume(AGDDVolume* v) { // std::cout<<" this is CreateVolume"<<std::endl; - GeoMaterial *mat=CreateMaterial(ALIAS(v->GetMaterial())); + const GeoMaterial *mat=CreateMaterial(ALIAS(v->GetMaterial())); void* p=v->GetVolume(); if (!p) @@ -801,14 +801,14 @@ void AGDD2GeoModelBuilder::CreateUbeam(AGDDUbeam *b) } } -GeoMaterial* AGDD2GeoModelBuilder::GetMMMaterial(std::string name) +const GeoMaterial* AGDD2GeoModelBuilder::GetMMMaterial(std::string name) { StoreGateSvc* pDetStore=0; ISvcLocator* svcLocator = Gaudi::svcLocator(); StatusCode sc=svcLocator->service("DetectorStore",pDetStore); if(sc.isSuccess()) { - DataHandle<StoredMaterialManager> theMaterialManager; + const StoredMaterialManager* theMaterialManager = nullptr; sc = pDetStore->retrieve(theMaterialManager, "MATERIALS"); if(sc.isSuccess()) { diff --git a/DetectorDescription/AGDD/AGDDControl/src/AGDDController.cxx b/DetectorDescription/AGDD/AGDDControl/src/AGDDController.cxx index 12da852f55d..0768a24a6c1 100644 --- a/DetectorDescription/AGDD/AGDDControl/src/AGDDController.cxx +++ b/DetectorDescription/AGDD/AGDDControl/src/AGDDController.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "AGDDControl/AGDDController.h" @@ -22,7 +22,6 @@ #include "GeoModelKernel/GeoPVConstLink.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include <map> #include <vector> #include <string> @@ -167,7 +166,7 @@ void AGDDController::UseGeoModelDetector(std::string name) { std::cout<<"AGDDController could not get at the detector store!"<<std::endl; } - const DataHandle<GeoModelExperiment> theExpt; + const GeoModelExperiment* theExpt = nullptr; sc=pDetStore->retrieve( theExpt,"ATLAS"); if (sc.isFailure()) { -- GitLab From 98cce189a0ee0ac3c6b7b733505b837686c21143 Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Wed, 21 Nov 2018 22:19:55 +0100 Subject: [PATCH 070/135] Update atlasexternals to 2.0.15. Update atlasexterals version to 2.0.15. - Updates to gcc plugins. - cmake script fixes. - Fix to a specific version of acts. - Update lwtnn version. Former-commit-id: 98bae6d4873f561706e9fb13623a6adb972bade7 --- Projects/AnalysisBase/externals.txt | 2 +- Projects/AnalysisTop/externals.txt | 2 +- Projects/AthDataQuality/externals.txt | 2 +- Projects/AthSimulation/externals.txt | 2 +- Projects/Athena/externals.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Projects/AnalysisBase/externals.txt b/Projects/AnalysisBase/externals.txt index 6606bd9192b..e3db318f82c 100644 --- a/Projects/AnalysisBase/externals.txt +++ b/Projects/AnalysisBase/externals.txt @@ -6,4 +6,4 @@ # forbidden. # The version of atlas/atlasexternals to use: -AnalysisBaseExternalsVersion = 2.0.14 +AnalysisBaseExternalsVersion = 2.0.15 diff --git a/Projects/AnalysisTop/externals.txt b/Projects/AnalysisTop/externals.txt index 03ba6df37fb..7c485ccfa2a 100644 --- a/Projects/AnalysisTop/externals.txt +++ b/Projects/AnalysisTop/externals.txt @@ -1,4 +1,4 @@ # Versions of the various externals to build before starting the build of # this project, when doing a full stack nightly build. -AnalysisBaseExternalsVersion = 2.0.14 +AnalysisBaseExternalsVersion = 2.0.15 diff --git a/Projects/AthDataQuality/externals.txt b/Projects/AthDataQuality/externals.txt index dde172ddd33..86af462a8ee 100644 --- a/Projects/AthDataQuality/externals.txt +++ b/Projects/AthDataQuality/externals.txt @@ -5,4 +5,4 @@ # an "origin/" prefix before it. For tags however this is explicitly # forbidden. -AtlasExternalsVersion = 2.0.14 +AtlasExternalsVersion = 2.0.15 diff --git a/Projects/AthSimulation/externals.txt b/Projects/AthSimulation/externals.txt index a2d52f47dd2..8327969a4ff 100644 --- a/Projects/AthSimulation/externals.txt +++ b/Projects/AthSimulation/externals.txt @@ -6,7 +6,7 @@ # forbidden. # The version of atlas/atlasexternals to use: -AthSimulationExternalsVersion = 2.0.14 +AthSimulationExternalsVersion = 2.0.15 # The version of atlas/Gaudi to use: GaudiVersion = v30r3.010 diff --git a/Projects/Athena/externals.txt b/Projects/Athena/externals.txt index 5ee8843dbcb..dd47da7d7be 100644 --- a/Projects/Athena/externals.txt +++ b/Projects/Athena/externals.txt @@ -6,7 +6,7 @@ # forbidden. # The version of atlas/atlasexternals to use: -AthenaExternalsVersion = 2.0.14 +AthenaExternalsVersion = 2.0.15 # The version of atlas/Gaudi to use: GaudiVersion = v30r3.010 -- GitLab From 595e7f38927796d9de347bb5a1b422af95afcb22 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Wed, 21 Nov 2018 23:11:46 +0100 Subject: [PATCH 071/135] check status code of the readKey init in MDT_Hid2RESrcID Former-commit-id: 3353a77fe01b55dc9872b0423d22fc37222c23c9 --- .../MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx | 7 +++---- .../MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h | 3 ++- .../src/MdtCsmContByteStreamTool.cxx | 12 ++++++++++-- .../MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx | 10 ++++++---- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx index e9d32c3447a..f8d88654eb9 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx @@ -28,12 +28,11 @@ MDT_Hid2RESrcID::MDT_Hid2RESrcID() : } -void MDT_Hid2RESrcID::set(const MdtIdHelper* mdtIdHelper) { +StatusCode MDT_Hid2RESrcID::set(const MdtIdHelper* mdtIdHelper) { // Initialize the cabling Service m_mdtIdHelper = mdtIdHelper; - m_readKey.initialize(); - //ATH_CHECK( m_readKey.initialize() ); - //return StatusCode::SUCCESS; + ATH_CHECK( m_readKey.initialize() ); + return StatusCode::SUCCESS; } uint32_t MDT_Hid2RESrcID::getRodID(const Identifier& offlineId) { diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h index e30e1331fdc..3a76ddfce06 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h @@ -8,6 +8,7 @@ #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/StatusCode.h" +#include "AthenaBaseComps/AthService.h" #include "StoreGate/ReadCondHandle.h" #include "MuonCablingData/MuonMDT_CablingMap.h" #include "StoreGate/ReadCondHandleKey.h" @@ -37,7 +38,7 @@ public: /** intialize the cabling service */ - void set(const MdtIdHelper* m_mdtIdHelper); + StatusCode set(const MdtIdHelper* m_mdtIdHelper); /** TMP method for sector 13 data */ void setSpecialROBNumber(int specialROBNumber) {m_specialROBNumber=specialROBNumber;} diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx index 6336e8ef0af..2ae218a8abf 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx @@ -55,7 +55,11 @@ StatusCode Muon::MdtCsmContByteStreamTool::initialize() { } m_hid2re = new MDT_Hid2RESrcID (); - m_hid2re->set(mdt_id); + status = m_hid2re->set(mdt_id); + if ( status.isFailure() ){ + ATH_MSG_FATAL("Could not initialize MDT mapping !"); + return StatusCode::FAILURE; + } m_mdtIdHelper = mdt_id; @@ -73,7 +77,11 @@ StatusCode Muon::MdtCsmContByteStreamTool::convert(CONTAINER* cont, RawEventWrit MsgStream& log ) { m_fea.clear(); - m_fea.idMap().set(m_mdtIdHelper); + StatusCode status = m_fea.idMap().set(m_mdtIdHelper); + if ( status.isFailure() ){ + ATH_MSG_FATAL("Could not initialize MDT mapping !"); + return StatusCode::FAILURE; + } FullEventAssembler<MDT_Hid2RESrcID>::RODDATA* theROD ; diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx index a1556a2fe44..b6de2acedea 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx @@ -68,11 +68,13 @@ StatusCode MdtROD_Decoder::initialize() { return sc; } - m_hid2re=new MDT_Hid2RESrcID(); - // Here the mapping service has to be initialized - - m_hid2re->set(m_mdtIdHelper); + m_hid2re=new MDT_Hid2RESrcID(); + sc = m_hid2re->set(m_mdtIdHelper); + if ( !sc.isSuccess() ) { + ATH_MSG_ERROR(" Can't initialize MDT mapping"); + return sc; + } // Initialize decoding classes m_rodReadOut = new MdtRODReadOut(); -- GitLab From 0ca87ab4427c952adbfb47b002e4af740f356c03 Mon Sep 17 00:00:00 2001 From: John Kenneth Anders <john.kenneth.anders@cern.ch> Date: Wed, 21 Nov 2018 10:34:09 +0000 Subject: [PATCH 072/135] Merge branch '21.0-trigger-HI-ref-update' into '21.0' Run 365573 as new han config reference for the trigger in HI collisions (ATR-19105, ATLASDQ-657) See merge request atlas/athena!16086 (cherry picked from commit 235633b2747e49aab4d5d64c1a7caf21aaca7e73 [formerly 6de3e2c0a20a2af0b14ec82b8837efebc19ac1ab]) ab8f001e Changing the trigger HI reference 8f2709d7 Adding correct CentallyManagedReferences paths to HardProbes and UPC for several trigger signatures Former-commit-id: e22c74f966d1bc525a445e3bd72418e124b7425e --- .../config/CTP/heavyions_run.config | 6 ++- .../config/HLT/HLTbphys/heavyions_run.config | 45 ++++++++++------ .../config/HLT/HLTglobal/heavyions_run.config | 27 ++-------- .../config/HLT/HLTidtrk/heavyions_run.config | 3 +- .../config/HLT/HLTjet/heavyions_run.config | 12 +++-- .../config/HLT/HLTmet/heavyions_run.config | 6 ++- .../HLT/HLTmuon/heavyions_minutes10.config | 21 +++++--- .../config/HLT/HLTmuon/heavyions_run.config | 51 ++++++++++++------- .../config/L1Calo/heavyions_minutes10.config | 6 ++- .../config/L1Calo/heavyions_run.config | 40 ++++++++++----- .../config/common/heavyions_run.config | 22 ++++++-- 11 files changed, 152 insertions(+), 87 deletions(-) diff --git a/DataQuality/DataQualityConfigurations/config/CTP/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/CTP/heavyions_run.config index 94610c9f812..bc600deeb24 100644 --- a/DataQuality/DataQualityConfigurations/config/CTP/heavyions_run.config +++ b/DataQuality/DataQualityConfigurations/config/CTP/heavyions_run.config @@ -32,7 +32,8 @@ output top_level { ####################### dir CT { - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger algorithm = CTP_GatherData output = CentralTrigger/ErrorSummary @@ -245,7 +246,8 @@ dir CT { algorithm CTP_GatherData { libname = libdqm_algorithms.so name = GatherData - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm errorSummary_Entries { diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTbphys/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTbphys/heavyions_run.config index 55c9ca597f8..aeedce6f890 100644 --- a/DataQuality/DataQualityConfigurations/config/HLT/HLTbphys/heavyions_run.config +++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTbphys/heavyions_run.config @@ -78,7 +78,8 @@ dir HLT { algorithm = HLT_Histogram_Not_Empty&GatherData dir BphysMon { - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger #shifter dir holds general hists - note this is the root file shifter dir shifter { @@ -181,7 +182,8 @@ dir HLT { # for shifters hist TrigBphys_BMuMu_mass { output = HLT/TRBPH/Shifter/BMuMu - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger # algorithm = BPhys_HistKolmogorovTest_MaxDist } hist TrigBphys_BMuMu_eta { @@ -269,7 +271,8 @@ dir HLT { dir JpsiFinder { # algorithm = BPhys_HistKolmogorovTest_MaxDist algorithm = BPhys_HistNotEmpty_YellowEmpty&GatherData - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger # for experts hist TrigBphys_Jpsi_mass_central { @@ -384,7 +387,8 @@ dir HLT { #algorithm = HLT_Histogram_Not_Empty&GatherData algorithm = Bphys_YMeanNonZero&BPhys_HistNotEmpty_YellowEmpty&GatherData output = HLT/TRBPH/Shifter/Containers - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } # for experts @@ -393,27 +397,33 @@ dir HLT { # Five histograms for the offline shifter hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_pTmu1 { output = HLT/TRBPH/Expert/Containers - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_pTmu2 { output = HLT/TRBPH/Expert/Containers - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_dphi { output = HLT/TRBPH/Expert/Containers - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_deta { output = HLT/TRBPH/Expert/Containers - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_pTsum { output = HLT/TRBPH/Expert/Containers - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_mass { output = HLT/TRBPH/Expert/Containers - reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } } @@ -468,7 +478,8 @@ dir HLT { compositeAlgorithm BPhys_HistNotEmpty_YellowEmpty&GatherData { subalgs = Bins_GreaterThan_Threshold,GatherData libnames = libdqm_algorithms.so - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } compositeAlgorithm Bphys_YMeanNonZero&BPhys_HistNotEmpty_YellowEmpty&GatherData { @@ -485,7 +496,8 @@ algorithm BPhys_HistNotEmpty_YellowEmpty&GatherData { algorithm HLTbphys_Histogram_Not_Empty&GatherData { libname = libdqm_algorithms.so name = HLT_Histogram_Not_Empty&GatherData - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } # KolmogorovTest method: scale histograms first @@ -495,7 +507,8 @@ algorithm BPhys_HistKolmogorovTest_MaxDist { thresholds = BPhys_HistKolmogorovTest_MaxDist_Threshold MinStat = -1 #reference = stream=physics_Muons:CentrallyManagedReferences_Muons;CentrallyManagedReferences - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } # KolmogorovTest method: assume both histograms are scaled @@ -505,7 +518,8 @@ algorithm BPhys_HistKolmogorovTest_Prob { thresholds = BPhys_HistKolmogorovTest_Prob_Threshold MinStat = -1 #reference = stream=physics_Muons:CentrallyManagedReferences_Muons;CentrallyManagedReferences - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } # Check containers_size histogram - should have entries with non-zero container size @@ -516,7 +530,8 @@ algorithm Bphys_YMeanNonZero&BPhys_HistNotEmpty_YellowEmpty&GatherData { Bins_GreaterThan_Threshold|thresholds = BPhys_HistNotEmpty_YellowEmpty_Threshold CheckHisto_Mean|thresholds = Bphys_YMeanNonZero_Threshold #MinStat = 10 - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } ############### diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTglobal/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTglobal/heavyions_run.config index b482de4b42d..7140656321f 100644 --- a/DataQuality/DataQualityConfigurations/config/HLT/HLTglobal/heavyions_run.config +++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTglobal/heavyions_run.config @@ -47,21 +47,18 @@ reference HLT_local_reference { ####################### dir HLT { -## algorithm = HLT_Histogram_Not_Empty&GatherData -## reference = HLT_local_reference dir ResultMon { output = HLT/TRHLT hist ConfigConsistency_HLT { -## regex = 1 algorithm = HLT_Histogram_Empty description = All bins should be empty. If any bin is filled, inform the Trigger ONLINE Expert IMMEDIATELY. } hist HLTResultHLT { -## regex = 1 - algorithm = HLT_Histogram_Not_Empty&GatherData +# algorithm = HLT_Histogram_Not_Empty_with_Ref&GatherData + algorithm = HLT_Histogram_Not_Empty&GatherData } hist L1Events { @@ -74,17 +71,14 @@ dir HLT { hist HLT.*P[ST] { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } hist HLT_AllChainsRAW { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } hist AllChainsRoIs { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput description = Histogram should not be empty. If it is, contact the Trigger Offline Expert on-call. } } @@ -94,16 +88,13 @@ dir HLT { hist HLT.*P[ST] { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } hist HLT_ElectronsRAW { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } hist ElectronsRoIs { regex = 1 -## algorithm = HLT_PassInput algorithm = HLT_Histogram_Not_Empty&GatherData description = Histogram should not be empty. If it is, contact the Trigger Offline Expert and the Egamma Expert on-call. } @@ -115,16 +106,13 @@ dir HLT { hist HLT.*P[ST] { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } hist HLT_GammaRAW { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } hist GammaRoIs { regex = 1 -## algorithm = HLT_PassInput algorithm = HLT_Histogram_Not_Empty&GatherData description = Histogram should not be empty. If it is, contact the Trigger Offline Expert and the Egamma Expert on-call. } @@ -135,12 +123,10 @@ dir HLT { hist HLT.*P[ST] { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } hist HLT_JetsRAW { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } } @@ -166,16 +152,13 @@ dir HLT { hist HLT.*P[ST] { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } hist HLT_MuonsRAW { regex = 1 algorithm = HLT_Histogram_Not_Empty&GatherData -## algorithm = HLT_PassInput } hist MuonsRoIs { regex = 1 -## algorithm = HLT_PassInput algorithm = HLT_Histogram_Not_Empty&GatherData description = Histogram should not be empty. If it is, contact the Trigger Offline Expert and the Muon Expert on-call. } @@ -199,9 +182,9 @@ algorithm HLT_Histogram_Not_Empty&GatherData { algorithm HLT_Histogram_Not_Empty_with_Ref&GatherData { name = HLT_Histogram_Not_Empty&GatherData - #reference = HLT_local_reference - #reference = CentrallyManagedReferences - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger +# reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger +# reference = stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTidtrk/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTidtrk/heavyions_run.config index 55ed6514891..361a707a832 100644 --- a/DataQuality/DataQualityConfigurations/config/HLT/HLTidtrk/heavyions_run.config +++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTidtrk/heavyions_run.config @@ -25,7 +25,8 @@ reference HLTIDRef { algorithm HLTid_Histogram_Not_Empty_with_Ref&GatherData { libname = libdqm_algorithms.so name = HLT_Histogram_Not_Empty&GatherData - reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger + # reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain # reference = stream=express_express:CentrallyManagedReferences;stream=physics_Main:CentrallyManagedReferences_Main # reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences } diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTjet/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTjet/heavyions_run.config index 591cb902fd8..480bfd91ce7 100644 --- a/DataQuality/DataQualityConfigurations/config/HLT/HLTjet/heavyions_run.config +++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTjet/heavyions_run.config @@ -703,7 +703,8 @@ algorithm HLTjet_Histogram_Not_Empty&GatherData { algorithm HLTjet_Histogram_Not_Empty_with_Ref&GatherData { name = HLTjet_Histogram_Not_Empty&GatherData #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain - reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain + #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm HLTjet_PassInput { @@ -716,7 +717,8 @@ algorithm HLTjet_CheckMean { name = AlgCheckMean thresholds = HLTjet_CheckMeanThresh MinStat = 100 - reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain + #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm HLTjet_KolmogorovTest_MaxDist { @@ -724,7 +726,8 @@ algorithm HLTjet_KolmogorovTest_MaxDist { name = KolmogorovTest_MaxDist thresholds = HLTjet_KolmogorovThresh MinStat = 100 - reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain + #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm HLTjet_Bins_Diff_FromAvg { @@ -736,7 +739,8 @@ algorithm HLTjet_Bins_Diff_FromAvg { GreaterThan = 1 LessThan = 0 NSigma = 40 - reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain + #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTmet/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTmet/heavyions_run.config index 980fa46d3f7..7220ffac118 100644 --- a/DataQuality/DataQualityConfigurations/config/HLT/HLTmet/heavyions_run.config +++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTmet/heavyions_run.config @@ -28,13 +28,14 @@ output top_level { ####################### dir HLT { - algorithm = HLTmet_Histogram_Not_Empty&GatherData + #algorithm = HLTmet_Histogram_Not_Empty&GatherData ############################## # begin METMon ############################## dir METMon { + algorithm = HLTmet_Histogram_Not_Empty&GatherData dir Shifter { dir L1 { dir Primary { @@ -69,6 +70,7 @@ compositeAlgorithm HLTmet_Histogram_Not_Empty&GatherData { } algorithm HLTmet_Histogram_Not_Empty&GatherData { name = HLTmet_Histogram_Not_Empty&GatherData - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_minutes10.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_minutes10.config index 89925aa3ce2..bfc67b9e509 100644 --- a/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_minutes10.config +++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_minutes10.config @@ -31,39 +31,46 @@ dir HLT { hist L2MuonSA_eta_vs_phi_in_10LBs { output = HLT/TRMUO algorithm = alg_eta_vs_phi -reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist muComb_eta_vs_phi_in_10LBs { output = HLT/TRMUO algorithm = alg_eta_vs_phi -reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist muIso_eta_vs_phi_in_10LBs { output = HLT/TRMUO algorithm = alg_eta_vs_phi weight = 0.0 -reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist TileMu_eta_vs_phi_in_10LBs { output = HLT/TRMUO algorithm = alg_eta_vs_phi_tilemu weight = 0.0 -reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist EFMS_eta_vs_phi_in_10LBs { output = HLT/TRMUO algorithm = alg_eta_vs_phi -reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist EFSA_eta_vs_phi_in_10LBs { output = HLT/TRMUO algorithm = alg_eta_vs_phi -reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } hist EFCB_eta_vs_phi_in_10LBs { output = HLT/TRMUO algorithm = alg_eta_vs_phi -reference = CentrallyManagedReferences + #reference = CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } } } diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_run.config index ffca65af3f4..4c275cf3285 100644 --- a/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_run.config +++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_run.config @@ -2379,7 +2379,8 @@ dir HLT { algorithm TRMUO_GatherData { libname = libdqm_algorithms.so name = GatherData - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm TRMUO_GatherDataNoRef { @@ -2390,14 +2391,16 @@ algorithm TRMUO_GatherDataNoRef { compositeAlgorithm Muon_Bins_LessThan_Threshold&GatherData { subalgs = Bins_LessThan_Threshold,GatherData libnames = libdqm_algorithms.so - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm Muon_Bins_LessThan_Threshold&GatherData { name = Muon_Bins_LessThan_Threshold&GatherData BinThreshold = -1 thresholds = th_Muon_Bins_LessThan_Threshold&GatherData - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm alg_L2MuonSA_residual_barrel { @@ -2406,7 +2409,8 @@ algorithm alg_L2MuonSA_residual_barrel { SubtractFromMean = 0. MinStat = 1000 thresholds = th_L2MuonSA_residual_barrel - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm alg_L2MuonSA_residual_endcap { @@ -2415,7 +2419,8 @@ algorithm alg_L2MuonSA_residual_endcap { SubtractFromMean = 0. MinStat = 1000 thresholds = th_L2MuonSA_residual_endcap - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm alg_eta_vs_phi { @@ -2431,7 +2436,8 @@ algorithm alg_eta_vs_phi { # 10% due to barrel holes # 8294 TotalBins = 8294 - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm alg_eta_vs_phi_barrel { @@ -2447,7 +2453,8 @@ algorithm alg_eta_vs_phi_barrel { # 10% due to barrel holes # 8294 TotalBins = 8294 - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm alg_muComb_ptratio { @@ -2456,7 +2463,8 @@ algorithm alg_muComb_ptratio { SubtractFromMean = 1. MinStat = 1000 thresholds = th_muComb_ptratio - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } #for Shift @@ -2475,7 +2483,8 @@ algorithm effalgmin_ESid_mu20 { name = BinContentComp&BinContentDump thresholds = effmin_ESid_mu20_th #reference = HLTmuonShiftES20thr_Ref - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger NSigma = 2.0 LessThan = 1 PublishBins = 1 @@ -2487,7 +2496,8 @@ algorithm effalgmin_highpt3bins { name = BinContentComp&BinContentDump thresholds = effmin_highpt3bins_th #reference = HLTmuonShiftES20thr_Ref - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger NSigma = 2.0 LessThan = 1 PublishBins = 1 @@ -2499,7 +2509,8 @@ algorithm effalgmin_highpt2bins { name = BinContentComp&BinContentDump thresholds = effmin_highpt2bins_th #reference = HLTmuonShiftES20thr_Ref - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger NSigma = 2.0 LessThan = 1 PublishBins = 1 @@ -2512,7 +2523,8 @@ algorithm effalgmin_4bins { name = BinContentComp&BinContentDump thresholds = effmin_generic4bins_th # reference = HLTmuonShift2012thr_HI_Ref - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger NSigma = 2.0 LessThan = 1 PublishBins = 1 @@ -2524,7 +2536,8 @@ algorithm effalgmin_3bins { name = BinContentComp&BinContentDump thresholds = effmin_generic3bins_th #reference = HLTmuonShift2012thr_HI_Ref - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger NSigma = 2.0 LessThan = 1 PublishBins = 1 @@ -2536,7 +2549,8 @@ algorithm effalgmin_2bins { name = BinContentComp&BinContentDump thresholds = effmin_generic2bins_th #reference = HLTmuonShift2012thr_HI_Ref - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger NSigma = 2.0 LessThan = 1 PublishBins = 1 @@ -2547,7 +2561,8 @@ algorithm coarse1dcomp_mu8_L2MuonSA { libname = libdqm_algorithms.so name = BinContentComp thresholds = coarse1dcomp_mu8_L2MuonSA_th - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger NSigma = 3.0 LessThan = 1 NormRef = 1 @@ -2559,12 +2574,14 @@ algorithm coarse1dcomp_mu8_L2MuonSA { compositeAlgorithm BinContentComp&BinContentDump { subalgs = BinContentComp,BinContentDump #reference = HLTmuonShift2012thr_HI_Ref - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } compositeAlgorithm BinContentComp&BinContentDump2 { subalgs = BinContentComp,BinContentDump - reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm TRMUO_fermi_fit_mu15_MSonly_EStag_L2MuonSA_upstream_Fit { diff --git a/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_minutes10.config b/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_minutes10.config index b5f26085733..21aad98c941 100644 --- a/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_minutes10.config +++ b/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_minutes10.config @@ -30,7 +30,8 @@ output top_level { dir L1Calo { algorithm = L1Calo_GatherData - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger output = L1Calo dir PPM { dir LUT-CP { @@ -233,7 +234,8 @@ dir L1Calo { algorithm L1Calo_GatherData { libname = libdqm_algorithms.so name = GatherData - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm L1Calo_IsEmpty { diff --git a/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_run.config index a29ae668260..8318f55c566 100644 --- a/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_run.config +++ b/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_run.config @@ -3538,14 +3538,17 @@ dir HLT { hist L1_HLT_EtCor@gs { output = L1Calo/.GlobalSummary/MET description = Original location HLT/TRMET/Expert/L1_vs_HLT. L1 missing et from LVL1EnergySumRoI container, HLT missing et from LVL1EnergySumRoI container + algorithm = GatherData } hist L1_HLT_dEx@gs { output = L1Calo/.GlobalSummary/MET description = Original location HLT/TRMET/Expert/L1_vs_HLT. L1 missing et x - HLT missing et x + algorithm = GatherData } hist L1_HLT_dEy@gs { output = L1Calo/.GlobalSummary/MET description = Original location HLT/TRMET/Expert/L1_vs_HLT. L1 missing et y - HLT missing et y + algorithm = GatherData } } } @@ -3554,6 +3557,7 @@ dir HLT { hist Eff_L1_XE50@gs { output = L1Calo/.GlobalSummary/MET description = Original location HLT/TRMET/Shifter/L1. Number of events pass the L1_XE50 trigger/total number of events + algorithm = GatherData } } } @@ -3628,7 +3632,8 @@ dir HLT { dir L1Calo { hist res_etVsEta@gsEM22VHI { display = StatBox - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger output = L1Calo/.GlobalSummary/EGamma description = Original location HLT/TREG/Expert/L1_EM22VHI/AbsResolutions/L1Calo. https://twiki.cern.ch/twiki/bin/view/Atlas/TrigEgammaDataQualityAndMonitoring } @@ -3638,7 +3643,8 @@ dir HLT { dir L1Calo { hist emClusVsEmIsol@gsEM22VHI { display = StatBox - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger output = L1Calo/.GlobalSummary/EGamma description = Original location HLT/TREG/Expert/L1_EM22VHI/Distributions/L1Calo. https://twiki.cern.ch/twiki/bin/view/Atlas/TrigEgammaDataQualityAndMonitoring } @@ -3648,7 +3654,8 @@ dir HLT { dir L1Calo { hist eff_et@gsEM22VHI { display = StatBox - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger output = L1Calo/.GlobalSummary/EGamma description = Original location HLT/TREG/Expert/L1_EM22VHI/Efficiency/L1Calo } @@ -3660,7 +3667,8 @@ dir HLT { dir L1Calo { hist emClusVsEmIsol@gsEM20VH { display = StatBox - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger output = L1Calo/.GlobalSummary/EGamma description = Original location HLT/TREG/Expert/L1_EM20VH/Distributions/L1Calo. https://twiki.cern.ch/twiki/bin/view/Atlas/TrigEgammaDataQualityAndMonitoring } @@ -3670,7 +3678,8 @@ dir HLT { dir L1Calo { hist eff_et@gsEM20VH { display = StatBox - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger output = L1Calo/.GlobalSummary/EGamma description = Original location HLT/TREG/Expert/L1_EM20VH/Efficiency/L1Calo. https://twiki.cern.ch/twiki/bin/view/Atlas/TrigEgammaDataQualityAndMonitoring } @@ -3684,14 +3693,16 @@ dir HLT { dir lowest_singletau { dir TurnOnCurves { hist TProfRecoL1PtEfficiency_shifter@gs { - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger algorithm = GatherData display = StatBox output = L1Calo/.GlobalSummary/TAU description = Original location HLT/TRTAU/Shifter/lowest_singletau/TurnOnCurves } hist TProfRecoL1EtaEfficiency_shifter@gs { - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger algorithm = GatherData display = StatBox output = L1Calo/.GlobalSummary/TAU @@ -3705,7 +3716,8 @@ dir HLT { dir GLOBAL { algorithm = GatherData - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger dir Luminosity { dir AnyTrigger { hist aveMu_vs_LB@gs { @@ -3734,7 +3746,8 @@ dir GLOBAL { dir L1Calo { algorithm = L1Calo_GatherData - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger output = L1Calo dir PPM { dir SpareChannels { @@ -5532,7 +5545,8 @@ dir L1Calo { algorithm L1Calo_GatherData { libname = libdqm_algorithms.so name = GatherData - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } algorithm L1Calo_IsEmpty { @@ -5719,7 +5733,8 @@ thresholds L1Calo_JetEfficiencies { dir LVL1_Interfaces { algorithm = LVL1Iface_GatherData - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger dir L1Topo { hist l1topo_1d_CMXTobs { output = L1Interfaces/L1Topo @@ -6227,6 +6242,7 @@ dir LVL1_Interfaces { algorithm LVL1Iface_GatherData { libname = libdqm_algorithms.so name = GatherData - reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger + reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger } diff --git a/DataQuality/DataQualityConfigurations/config/common/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/common/heavyions_run.config index 6e1cbd1ba11..d46b5ac6dad 100644 --- a/DataQuality/DataQualityConfigurations/config/common/heavyions_run.config +++ b/DataQuality/DataQualityConfigurations/config/common/heavyions_run.config @@ -24,9 +24,9 @@ reference CentrallyManagedReferences_Main { reference CentrallyManagedReferences_Trigger { location = /eos/atlas/atlascerngroupdisk/data-dqm/references/,root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-dqm/references/ - file = data15_hi.00287866.express_express.merge.HIST.f1011_h329._0001.1 - path = run_287866 - info = Run 287866, express + file = data18_hi.00365573.express_express.merge.HIST.f1021_h331._0001.1 + path = run_365573 + info = Run 365573, express name = same_name } @@ -46,6 +46,14 @@ reference CentrallyManagedReference_UPC { name = same_name } +reference CentrallyManagedReferences_TriggerUPC { + location = /eos/atlas/atlascerngroupdisk/data-dqm/references/,root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-dqm/references/ + file = data18_hi.00365573.physics_UPC.merge.HIST.f1022_h331._0001.1 + path = run_365573 + info = Run 365573, physics_UPC + name = same_name +} + reference CentrallyManagedReference_HardProbes { location = /eos/atlas/atlascerngroupdisk/data-dqm/references/,root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-dqm/references/ file = data15_hi.00287866.physics_HardProbes.merge.HIST.f1011_h329._0001.1 @@ -54,6 +62,14 @@ reference CentrallyManagedReference_HardProbes { name = same_name } +reference CentrallyManagedReferences_TriggerHardProbes { + location = /eos/atlas/atlascerngroupdisk/data-dqm/references/,root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-dqm/references/ + file = data18_hi.00365573.physics_HardProbes.merge.HIST.f1021_h331._0001.1 + path = run_365573 + info = Run 365573, physics_HardProbes + name = same_name +} + #################### # Common Algorithms #################### -- GitLab From 7ec7f30a8d67faca92858d39f6f8b1c5288f9276 Mon Sep 17 00:00:00 2001 From: Andrea Coccaro <andrea.coccaro@cern.ch> Date: Wed, 21 Nov 2018 08:26:07 +0000 Subject: [PATCH 073/135] Merge branch '21.1-dev-user' into '21.1-dev' Remove unused variable See merge request atlas/athena!16057 (cherry picked from commit ca288d08f477c5d5f85424569ec4f042622ac0d9 [formerly 62a4a56ed039f05419d1e805579217c3c5e3a206]) ebece441 Remove unused variable Former-commit-id: ee2796e5979b26fc808fe9c4588b303a68270dbb --- Control/AthenaConfiguration/python/iconfTool/__init__.py | 0 .../python/iconfTool/models/__init__.py | 0 .../src/AnalysisConfig_Ntuple.cxx | 8 ++++++-- 3 files changed, 6 insertions(+), 2 deletions(-) mode change 100644 => 100755 Control/AthenaConfiguration/python/iconfTool/__init__.py mode change 100644 => 100755 Control/AthenaConfiguration/python/iconfTool/models/__init__.py diff --git a/Control/AthenaConfiguration/python/iconfTool/__init__.py b/Control/AthenaConfiguration/python/iconfTool/__init__.py old mode 100644 new mode 100755 diff --git a/Control/AthenaConfiguration/python/iconfTool/models/__init__.py b/Control/AthenaConfiguration/python/iconfTool/models/__init__.py old mode 100644 new mode 100755 diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx index 6541f5b2744..ebe4de8402c 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx @@ -1587,7 +1587,9 @@ void AnalysisConfig_Ntuple::loop() { std::vector<TIDA::Track>& tracks = offline->rois()[iroi].tracks(); - size_t Noffline = tracks.size(); + /// may well put the reporting back in, so leaving this + /// this in place + // size_t Noffline = tracks.size(); for ( std::vector<TIDA::Track>::iterator it=tracks.begin() ; it<tracks.end() ; ) { bool inc = true; @@ -1616,7 +1618,9 @@ void AnalysisConfig_Ntuple::loop() { if ( inc ) it++; } - // m_provider->msg(MSG::INFO) << "TIDA::Roi offline track reduction: " << Noffline << " -> " << tracks.size() << endmsg; + /// may well put the reporting back in, so leaving this + /// this in place + // m_provider->msg(MSG::DEBUG) << "TIDA::Roi offline track reduction: " << Noffline << " -> " << tracks.size() << endmsg; } -- GitLab From 26fb278db3c267400d86da75f7a4a2f19bc26aae Mon Sep 17 00:00:00 2001 From: Kristian Bjoerke <krbjeork@cern.ch> Date: Tue, 20 Nov 2018 15:47:10 +0100 Subject: [PATCH 074/135] Keeping style consistent within file and package According to ATLAS Coding Guidelines the style of each file should be consistent with itself [style-consistency]. Former-commit-id: 02dad114b52669462129f80cc7c6a48c532aa3ec --- .../src/SCTRawContByteStreamCnv.cxx | 7 ++----- .../src/SCTRawContByteStreamCnv.h | 16 ++++++++-------- .../src/SCTRawContByteStreamTool.cxx | 2 +- .../src/SCTRawContByteStreamTool.h | 1 - 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx index 443c2f21549..7cb06b753bc 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx @@ -27,8 +27,7 @@ SCTRawContByteStreamCnv::SCTRawContByteStreamCnv(ISvcLocator* svcLoc) : // Initialize -StatusCode -SCTRawContByteStreamCnv::initialize() +StatusCode SCTRawContByteStreamCnv::initialize() { ATH_CHECK(Converter::initialize()); m_log << MSG::DEBUG<< " initialize " << endmsg; @@ -45,10 +44,8 @@ SCTRawContByteStreamCnv::initialize() } // Method to create RawEvent fragments -/// convert SCT Raw Data in the container into ByteStream -StatusCode -SCTRawContByteStreamCnv::createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress) +StatusCode SCTRawContByteStreamCnv::createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress) { // Get RawEvent pointer RawEventWrite* rawEvtWrite{m_byteStreamEventAccess->getRawEvent()}; diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h index 8098044f66b..929449b75d0 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h @@ -27,8 +27,8 @@ extern long ByteStream_StorageType; * we use a service (SCTRawContByteStreamService) which in turn uses the lightweight * SCT_RodEncoder class, to do the actual converting. */ -class SCTRawContByteStreamCnv: public Converter { - +class SCTRawContByteStreamCnv : public Converter +{ public: /** Constructor */ @@ -37,17 +37,16 @@ class SCTRawContByteStreamCnv: public Converter { /** Destructor */ virtual ~SCTRawContByteStreamCnv() = default; + /** Initialize */ + virtual StatusCode initialize(); + /** Storage type and class ID */ - virtual long repSvcType() const { return ByteStream_StorageType;} + virtual long repSvcType() const { return ByteStream_StorageType; } static long storageType() { return ByteStream_StorageType; } static const CLID& classID() { return ClassID_traits<SCT_RDO_Container>::ID(); } - /** Initialize */ - virtual StatusCode initialize(); - /** createObj method (not used!) */ - virtual StatusCode createObj(IOpaqueAddress*, DataObject*&) - { return StatusCode::FAILURE;} + virtual StatusCode createObj(IOpaqueAddress*, DataObject*&) { return StatusCode::FAILURE; } /** * @brief Method to convert SCT Raw Data into ByteStream @@ -73,4 +72,5 @@ class SCTRawContByteStreamCnv: public Converter { /** Object used to transmit messages and log errors */ MsgStream m_log; }; + #endif // SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.cxx b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.cxx index cad10c574e9..0e779ff564f 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.cxx +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.cxx @@ -14,7 +14,7 @@ #include "StoreGate/ReadCondHandle.h" #include "eformat/SourceIdentifier.h" -// Contructor +// Constructor SCTRawContByteStreamTool::SCTRawContByteStreamTool(const std::string& type, const std::string& name, const IInterface* parent) : diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.h index cedfb6dc003..e6b87651cc7 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.h @@ -19,7 +19,6 @@ #include "GaudiKernel/ToolHandle.h" #include <mutex> -#include <string> class ISCT_RodEncoder; class ISCT_CablingTool; -- GitLab From 10d9707c6fb85e497c56d9b7e39ecfa8c6741f46 Mon Sep 17 00:00:00 2001 From: Mark Hodgkinson <m.hodgkinson@sheffield.ac.uk> Date: Thu, 22 Nov 2018 11:23:57 +0000 Subject: [PATCH 075/135] Modify EDM to allow usage of calibration hit moments. Former-commit-id: 716771804acb2aef9238b3db489f81342f6f65e2 --- Event/xAOD/xAODPFlow/Root/PFO_v1.cxx | 17 +++++++++++++++++ Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h | 4 ++++ .../versions/PFOAttributesAccessor_v1.h | 4 ++++ 3 files changed, 25 insertions(+) diff --git a/Event/xAOD/xAODPFlow/Root/PFO_v1.cxx b/Event/xAOD/xAODPFlow/Root/PFO_v1.cxx index ca6cfca0b5d..5f8e939877c 100644 --- a/Event/xAOD/xAODPFlow/Root/PFO_v1.cxx +++ b/Event/xAOD/xAODPFlow/Root/PFO_v1.cxx @@ -507,6 +507,23 @@ namespace xAOD { myAttribute = xAOD::PFODetails::eflowRec_EM_PROBABILITY; return true; } + else if (momentType == xAOD::CaloCluster::ENG_CALIB_TOT){ + myAttribute = xAOD::PFODetails::eflowRec_ENG_CALIB_TOT; + return true; + } + else if (momentType == xAOD::CaloCluster::ENG_CALIB_FRAC_EM){ + myAttribute = xAOD::PFODetails::eflowRec_ENG_CALIB_FRAC_EM; + return true; + } + else if (momentType == xAOD::CaloCluster::ENG_CALIB_FRAC_HAD){ + myAttribute = xAOD::PFODetails::eflowRec_ENG_CALIB_FRAC_HAD; + return true; + } + else if (momentType == xAOD::CaloCluster::ENG_CALIB_FRAC_REST){ + myAttribute = xAOD::PFODetails::eflowRec_ENG_CALIB_FRAC_REST; + return true; + } + else return false; } diff --git a/Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h b/Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h index e1348718b80..14136488cd9 100644 --- a/Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h +++ b/Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h @@ -91,6 +91,10 @@ namespace PFODetails eflowRec_radiusVectorCellOrdering, eflowRec_avgEdensityVectorCellOrdering, eflowRec_layerHED, + eflowRec_ENG_CALIB_TOT, + eflowRec_ENG_CALIB_FRAC_EM, + eflowRec_ENG_CALIB_FRAC_HAD, + eflowRec_ENG_CALIB_FRAC_REST, /** These variables belong to the cell-based particle flow algorithm */ cellBased_FIRST_ETA = 400, cellBased_SECOND_R, diff --git a/Event/xAOD/xAODPFlow/xAODPFlow/versions/PFOAttributesAccessor_v1.h b/Event/xAOD/xAODPFlow/xAODPFlow/versions/PFOAttributesAccessor_v1.h index f04f35555f4..b253224d125 100644 --- a/Event/xAOD/xAODPFlow/xAODPFlow/versions/PFOAttributesAccessor_v1.h +++ b/Event/xAOD/xAODPFlow/xAODPFlow/versions/PFOAttributesAccessor_v1.h @@ -95,6 +95,10 @@ namespace xAOD{ DEFINE_PFO_ACCESSOR(eflowRec_avgEdensityVectorCellOrdering); DEFINE_PFO_ACCESSOR(eflowRec_layerHED); DEFINE_PFO_ACCESSOR(eflowRec_EM_PROBABILITY); + DEFINE_PFO_ACCESSOR(eflowRec_ENG_CALIB_TOT); + DEFINE_PFO_ACCESSOR(eflowRec_ENG_CALIB_FRAC_EM); + DEFINE_PFO_ACCESSOR(eflowRec_ENG_CALIB_FRAC_HAD); + DEFINE_PFO_ACCESSOR(eflowRec_ENG_CALIB_FRAC_REST); DEFINE_PFO_ACCESSOR(cellBased_FIRST_ETA); DEFINE_PFO_ACCESSOR(cellBased_SECOND_R); DEFINE_PFO_ACCESSOR(cellBased_SECOND_LAMBDA); -- GitLab From d53f607fc546122962eb673016680fdeeb0f6bf3 Mon Sep 17 00:00:00 2001 From: Mark Hodgkinson <m.hodgkinson@sheffield.ac.uk> Date: Thu, 22 Nov 2018 11:25:09 +0000 Subject: [PATCH 076/135] Modify algorithms to allow usage of calibration hit moments maker. Add option to add calibration moments to neutral PFO, if they have been calculated. Former-commit-id: e140c42b8700feac3ed946d2adae49b6eb115547 --- .../eflowRec/PFMomentCalculatorTool.h | 6 +++ .../eflowRec/PFONeutralCreatorAlgorithm.h | 3 ++ .../eflowRec/python/eflowRecFlags.py | 9 +++- .../eflowRec/share/PFlowMTConfig.py | 42 ++++++++++++++++++- .../eflowRec/src/PFMomentCalculatorTool.cxx | 12 ++++++ .../src/PFONeutralCreatorAlgorithm.cxx | 6 +++ 6 files changed, 76 insertions(+), 2 deletions(-) diff --git a/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h b/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h index b80589e4319..2c9669c8c5a 100644 --- a/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h +++ b/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h @@ -37,9 +37,15 @@ class PFMomentCalculatorTool : public extends<AthAlgTool, IPFBaseTool> { /** Tool to calculate cluster moments */ ToolHandle<CaloClusterCollectionProcessor> m_clusterMomentsMaker{this,"CaloClusterMomentsMaker","CaloClusterMomentsMaker","Tool to calculate cluster moments"}; + /** Tool to calculate cluster moments */ + ToolHandle<CaloClusterCollectionProcessor> m_clusterCalibHitMomentsMaker2{this,"CaloCalibClusterMomentsMaker2","CaloCalibClusterMomentsMaker2","Tool to calculate calibration hit cluster moments"}; + /** Toggle whether we are in LC mode - false by default */ Gaudi::Property<bool> m_LCMode{this,"LCMode",false,"Toggle whether we are in LC mode - false by default"}; + /** Toggle usage of calibration hit truth - false by default */ + Gaudi::Property<bool> m_useCalibHitTruth{this,"UseCalibHitTruth",false,"Toggle usage of calibration hit truth - false by default"}; + }; #endif diff --git a/Reconstruction/eflowRec/eflowRec/PFONeutralCreatorAlgorithm.h b/Reconstruction/eflowRec/eflowRec/PFONeutralCreatorAlgorithm.h index d9b96de5c32..c242cafb43e 100644 --- a/Reconstruction/eflowRec/eflowRec/PFONeutralCreatorAlgorithm.h +++ b/Reconstruction/eflowRec/eflowRec/PFONeutralCreatorAlgorithm.h @@ -38,6 +38,9 @@ private: /** Bool to toggle which jetetmiss configuration we are in - EM cluster input or LC cluster input */ Gaudi::Property<bool> m_LCMode{this,"LCMode",false,"Bool to toggle which jetetmiss configuration we are in - EM cluster input or LC cluster input"}; + /** Toggle usage of calibration hit truth - false by default */ + Gaudi::Property<bool> m_useCalibHitTruth{this,"UseCalibHitTruth",false,"Toggle usage of calibration hit truth - false by default"}; + /** ReadHandleKey for eflowCaloObjectContainer */ SG::ReadHandleKey<eflowCaloObjectContainer> m_eflowCaloObjectContainerReadHandleKey{this,"eflowCaloObjectContainerName","eflowCaloObjects","ReadHandleKey for eflowCaloObjectContainer"}; diff --git a/Reconstruction/eflowRec/python/eflowRecFlags.py b/Reconstruction/eflowRec/python/eflowRecFlags.py index 02b2f603d80..3ba8ad0477c 100644 --- a/Reconstruction/eflowRec/python/eflowRecFlags.py +++ b/Reconstruction/eflowRec/python/eflowRecFlags.py @@ -106,6 +106,13 @@ class useAODReductionClusterMomentList(JobProperty): statusOn = True allowedTypes = ['bool'] StoredValue = True + +class useCalibHitTruth(JobProperty): + """ Flag to toggle use of calibration hit truth, which is off by default because most Monte Carlo samples do not contain the calibration hit truth information + """ + statusOn = True + allowedTypes = ['bool'] + StoredValue = False # Defines the container for the eflowRec flags @@ -117,7 +124,7 @@ class eflowRecFlags(JobPropertyContainer): # add the flags container to the top container jobproperties.add_Container(eflowRecFlags) -eflowJobProperties = [eflowAlgType,CalType,useLocalHadWeightsOOCC,useOverLapShowerCells,useSplitShowers,useEEtaFirstInt,recoverIsolatedTracks,UseElectronHadronID,runTauMode, useLeptons,storeLeptonCells, useLCInput, useUpdated2015ChargedShowerSubtraction,useAODReductionClusterMomentList] +eflowJobProperties = [eflowAlgType,CalType,useLocalHadWeightsOOCC,useOverLapShowerCells,useSplitShowers,useEEtaFirstInt,recoverIsolatedTracks,UseElectronHadronID,runTauMode, useLeptons,storeLeptonCells, useLCInput, useUpdated2015ChargedShowerSubtraction,useAODReductionClusterMomentList,useCalibHitTruth] for i in eflowJobProperties : jobproperties.eflowRecFlags.add_JobProperty(i) diff --git a/Reconstruction/eflowRec/share/PFlowMTConfig.py b/Reconstruction/eflowRec/share/PFlowMTConfig.py index d66a7a19d59..3df674de3d7 100644 --- a/Reconstruction/eflowRec/share/PFlowMTConfig.py +++ b/Reconstruction/eflowRec/share/PFlowMTConfig.py @@ -149,6 +149,44 @@ PFClusterMomentsMaker.MomentsNames = [ PFMomentCalculatorTool.CaloClusterMomentsMaker = PFClusterMomentsMaker + +from eflowRec.eflowRecFlags import jobproperties + +if jobproperties.eflowRecFlags.useCalibHitTruth: + + PFMomentCalculatorTool.UseCalibHitTruth=True + + from CaloCalibHitRec.CaloCalibHitRecConf import CaloCalibClusterMomentsMaker2 + PFCalibClusterMomentsMaker = CaloCalibClusterMomentsMaker2("PFCalibClusterMomentsMaker") + PFCalibClusterMomentsMaker.MomentsNames = ["ENG_CALIB_TOT" + ,"ENG_CALIB_OUT_L" + ,"ENG_CALIB_EMB0" + ,"ENG_CALIB_EME0" + ,"ENG_CALIB_TILEG3" + ,"ENG_CALIB_DEAD_TOT" + ,"ENG_CALIB_DEAD_EMB0" + ,"ENG_CALIB_DEAD_TILE0" + ,"ENG_CALIB_DEAD_TILEG3" + ,"ENG_CALIB_DEAD_EME0" + ,"ENG_CALIB_DEAD_HEC0" + ,"ENG_CALIB_DEAD_FCAL" + ,"ENG_CALIB_DEAD_LEAKAGE" + ,"ENG_CALIB_DEAD_UNCLASS" + ,"ENG_CALIB_FRAC_EM" + ,"ENG_CALIB_FRAC_HAD" + ,"ENG_CALIB_FRAC_REST"] + + PFCalibClusterMomentsMaker.CalibrationHitContainerNames = ["LArCalibrationHitInactive" + ,"LArCalibrationHitActive" + ,"TileCalibHitActiveCell" + ,"TileCalibHitInactiveCell"] + PFCalibClusterMomentsMaker.DMCalibrationHitContainerNames = ["LArCalibrationHitDeadMaterial" + ,"TileCalibHitDeadMaterial"] + + PFMomentCalculatorTool.CaloCalibClusterMomentsMaker2=PFCalibClusterMomentsMaker + + + from eflowRec.eflowRecConf import PFClusterCollectionTool PFClusterCollectionTool_default = PFClusterCollectionTool("PFClusterCollectionTool") @@ -191,5 +229,7 @@ topSequence += PFOChargedCreatorAlgorithm from eflowRec.eflowRecConf import PFONeutralCreatorAlgorithm PFONeutralCreatorAlgorithm = PFONeutralCreatorAlgorithm("PFONeutralCreatorAlgorithm") - +if jobproperties.eflowRecFlags.useCalibHitTruth: + PFONeutralCreatorAlgorithm.UseCalibHitTruth=True + topSequence += PFONeutralCreatorAlgorithm diff --git a/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx b/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx index bf26621b8df..f1a570e1999 100644 --- a/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx +++ b/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx @@ -23,6 +23,13 @@ StatusCode PFMomentCalculatorTool::initialize(){ ATH_MSG_WARNING("Cannot find CaloClusterMomentsMaker Tool"); return StatusCode::SUCCESS; } + + /* Retrieve the cluster calib hit moments maker */ + if ( m_clusterCalibHitMomentsMaker2.retrieve().isFailure() ) { + ATH_MSG_WARNING("Cannot find CaloCalibClusterMomentsMaker2 Tool"); + return StatusCode::SUCCESS; + } + return StatusCode::SUCCESS; } @@ -40,6 +47,11 @@ void PFMomentCalculatorTool::execute(const eflowCaloObjectContainer& theEflowCal /* Remake the cluster moments */ if (m_clusterMomentsMaker->execute(tempClusterContainer.get()).isFailure()) ATH_MSG_WARNING("Could not execute ClusterMomentsMaker"); + if (m_useCalibHitTruth){ + if (m_clusterCalibHitMomentsMaker2->execute(tempClusterContainer.get()).isFailure()) ATH_MSG_WARNING("Could not execute CaloCalibClusterMomentsMaker2"); + } + + } StatusCode PFMomentCalculatorTool::finalize(){ return StatusCode::SUCCESS; } diff --git a/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx b/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx index f23cb583696..453c1103ed7 100644 --- a/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx +++ b/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx @@ -120,6 +120,12 @@ void PFONeutralCreatorAlgorithm::createNeutralPFO(const eflowCaloObject& energyF this->addMoment(xAOD::CaloCluster::ISOLATION,xAOD::PFODetails::PFOAttributes::eflowRec_ISOLATION,*cluster, *thisPFO); this->addMoment(xAOD::CaloCluster::SECOND_LAMBDA,xAOD::PFODetails::PFOAttributes::eflowRec_SECOND_LAMBDA,*cluster, *thisPFO); this->addMoment(xAOD::CaloCluster::EM_PROBABILITY,xAOD::PFODetails::PFOAttributes::eflowRec_EM_PROBABILITY,*cluster, *thisPFO); + if (m_useCalibHitTruth){ + this->addMoment(xAOD::CaloCluster::ENG_CALIB_TOT,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_CALIB_TOT,*cluster, *thisPFO); + this->addMoment(xAOD::CaloCluster::ENG_CALIB_FRAC_EM,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_CALIB_FRAC_EM,*cluster, *thisPFO); + this->addMoment(xAOD::CaloCluster::ENG_CALIB_FRAC_HAD,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_CALIB_FRAC_HAD,*cluster, *thisPFO); + this->addMoment(xAOD::CaloCluster::ENG_CALIB_FRAC_REST,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_CALIB_FRAC_REST,*cluster, *thisPFO); + } } //First set all the layer energies -- GitLab From 833704a7bdb7c0c760098244324fd9824fc80263 Mon Sep 17 00:00:00 2001 From: James Beacham <j.beacham@cern.ch> Date: Tue, 20 Nov 2018 09:01:48 +0000 Subject: [PATCH 077/135] Merge branch 'GeoPixelTMT_cleanup_21.0' into '21.0' Remove extra printout from GeoPixelTMT.cxx See merge request atlas/athena!16073 Former-commit-id: ae81a66e75d762a376bb932805b96825e0e4be9c --- .../PixelGeoModel/src/GeoPixelTMT.cxx | 60 +++++++++---------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx b/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx index d69eca5bfd3..2138e77957c 100644 --- a/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx +++ b/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx @@ -3,7 +3,7 @@ */ // Build The TMT. -// This is built one time per layer. +// This is built one time per layer. // Each layer is given slightly different mass due to differences // in the measured mass. @@ -34,10 +34,8 @@ GeoPixelTMT::~GeoPixelTMT(){ GeoVPhysVol* GeoPixelTMT::Build() { - std::cout << " new implementation of the Pixel TMT " << std::endl; - // we want to use a assemby, tehrefor we need to dummy volume to trigger the mechanism - const GeoMaterial* ether = mat_mgr->getMaterial("special::Ether"); + const GeoMaterial* ether = m_mat_mgr->getMaterial("special::Ether"); GeoBox* dummybox= new GeoBox(4711., 4711., 4711.); GeoLogVol* dummyTMT = new GeoLogVol("TMT",dummybox,ether); GeoPhysVol* theTMT = new GeoPhysVol(dummyTMT); @@ -45,13 +43,13 @@ GeoVPhysVol* GeoPixelTMT::Build() { // get the material by dividing the total material by the volume per layer, // the weight is only stored in DB for the whole TMT layer // we will commonly use TMT as name for the stuff - std::string matName = gmt_mgr->getMaterialName("TMT", gmt_mgr->GetLD()); + std::string matName = m_gmt_mgr->getMaterialName("TMT", m_gmt_mgr->GetLD()); double volume = 12647.7; // this number seems to be wrong - const GeoMaterial* material = mat_mgr->getMaterialForVolume(matName,volume); + const GeoMaterial* material = m_mat_mgr->getMaterialForVolume(matName,volume); GeoNameTag* tag = new GeoNameTag("TMT"); - - // this part is unchanged: reading the DB, creating the shapes of the volumes and defining their position + + // this part is unchanged: reading the DB, creating the shapes of the volumes and defining their position HepGeom::RotateX3D traprot(180.*CLHEP::deg); int halfNModule = m_gmt_mgr->PixelNModule()/2; @@ -79,7 +77,7 @@ GeoVPhysVol* GeoPixelTMT::Build() { double zpos = 0.5*(z1+z2); double xpos = 0.5*(xbase1 + xbase2 - 0.5*(w2+w1)); - double theta = 0; + double theta = 0; if (w1 != w2 || xbase1 != xbase2) { theta = std::atan((xbase2 - xbase1 - 0.5*(w2-w1))/length); } @@ -87,14 +85,14 @@ GeoVPhysVol* GeoPixelTMT::Build() { double phi = 0; double angleydzn = 0; double angleydzp = 0; - + const GeoShape * shape = 0; if (w1 == w2 && theta == 0) { // Its a box shape = new GeoBox(0.5*w1, 0.5*widthy, 0.5*length); } else { - shape = new GeoTrap(0.5*length, theta, phi, 0.5*widthy, 0.5*w1, 0.5*w1, angleydzn, - 0.5*widthy, 0.5*w2, 0.5*w2, angleydzp); + shape = new GeoTrap(0.5*length, theta, phi, 0.5*widthy, 0.5*w1, 0.5*w1, angleydzn, + 0.5*widthy, 0.5*w2, 0.5*w2, angleydzp); // Test GeoModel volume calculation. OK. } //assuming 'shape' cannot be null. @@ -103,48 +101,48 @@ GeoVPhysVol* GeoPixelTMT::Build() { // end of the old part // now we put everything into the assembly if (!perModule) { // For middle section and others - + // create the colume, move it to the correct relative position and add it to the assembly GeoLogVol* tmpLogVol= new GeoLogVol("TMT",shape,material); GeoPhysVol* tmpPhysVol= new GeoPhysVol(tmpLogVol); GeoTransform* trans = new GeoTransform(HepGeom::Translate3D(xpos,ypos,zpos)); - + theTMT->add(tag); theTMT->add(trans); - theTMT->add(tmpPhysVol); - + theTMT->add(tmpPhysVol); + } else { // Once per module, copied in +z and -z side. // we will add the same volume many times, need to create it only once - + GeoLogVol* tmpLogVol= new GeoLogVol("TMT",shape,material); GeoPhysVol* tmpPhysVol= new GeoPhysVol(tmpLogVol); for (int ii = 0; ii < halfNModule; ii++) { - - // move the dublicates to the correct relative position and add it to the assembly - double zshift = gmt_mgr->PixelModuleZPosition(1) * ii; - GeoTransform* transPos = new GeoTransform(HepGeom::Translate3D(xpos,ypos,zpos+zshift)); - theTMT->add(tag); - theTMT->add(transPos); - theTMT->add(tmpPhysVol); + // move the dublicates to the correct relative position and add it to the assembly + double zshift = m_gmt_mgr->PixelModuleZPosition(1) * ii; + + GeoTransform* transPos = new GeoTransform(HepGeom::Translate3D(xpos,ypos,zpos+zshift)); + theTMT->add(tag); + theTMT->add(transPos); + theTMT->add(tmpPhysVol); - GeoTransform* transNeg = new GeoTransform(HepGeom::Translate3D(xpos,ypos,-(zpos+zshift))*HepGeom::RotateX3D(180*CLHEP::deg)); - theTMT->add(tag); - theTMT->add(transNeg); - theTMT->add(tmpPhysVol); + GeoTransform* transNeg = new GeoTransform(HepGeom::Translate3D(xpos,ypos,-(zpos+zshift))*HepGeom::RotateX3D(180*CLHEP::deg)); + theTMT->add(tag); + theTMT->add(transNeg); + theTMT->add(tmpPhysVol); - } + } } - shape->unref(); //this will delete shape if it was never added + shape->unref(); //this will delete shape if it was never added } // Return the assembly return theTMT; } -const GeoShape * +const GeoShape * GeoPixelTMT::addShape(const GeoShape * lastShape, const GeoShape * nextShape, const HepGeom::Transform3D & trans) { const GeoShape * shiftedShape = &(*nextShape << trans); -- GitLab From f25061ba40947444c70d0389687d808e492b9dde Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Thu, 22 Nov 2018 13:47:08 +0100 Subject: [PATCH 078/135] change INFO to DEBUG for BS output header printout Former-commit-id: b087b026b888f6eba5841e0ed70573b4937f294b --- HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx b/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx index 42095355988..c796ecd1de6 100644 --- a/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx +++ b/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx @@ -229,5 +229,5 @@ void TrigByteStreamCnvSvc::printRawEvent() { ss << "]}" << std::endl; } - ATH_MSG_INFO(ss.str()); + ATH_MSG_DEBUG(ss.str()); } -- GitLab From c9fd6a0a0428632d0caeb1046a6b987e8675cb63 Mon Sep 17 00:00:00 2001 From: Adam Edward Barton <adam.edward.barton@cern.ch> Date: Thu, 22 Nov 2018 13:03:24 +0000 Subject: [PATCH 079/135] Retiring BeamSpotSvc commit 1 Former-commit-id: d07cad013b576b142fe23a8266b08fe0fe4a82a6 --- .../InDetBeamSpotService/IBeamCondSvc.h | 2 +- .../share/InDetRecConditionsAccess.py | 13 +- .../InDetAlignmentMonitoring/CMakeLists.txt | 1 + .../src/IDAlignMonGenericTracks.cxx | 18 ++- .../src/IDAlignMonGenericTracks.h | 4 +- .../src/IDPerfMonZmumu.cxx | 8 +- .../src/TrigTrackingxAODCnvMT.cxx | 3 +- Projects/AthSimulation/package_filters.txt | 1 + .../ITrackToVertex/ITrackToVertex.h | 24 ++-- .../RecoTools/TrackToVertex/CMakeLists.txt | 1 + .../TrackToVertex/TrackToVertex.h | 61 +++++---- .../TrackToVertex/src/TrackToVertex.cxx | 116 +++++++----------- .../iPat/iPatTrackFinder/CMakeLists.txt | 1 + .../iPatTrackFinder/TrackFinder.h | 5 +- .../iPat/iPatTrackFinder/src/TrackFinder.cxx | 18 +-- .../share/FastChainSkeleton.EVGENtoRDO.py | 7 +- .../share/GeantinoMapping_jobOptions.py | 8 ++ Tracking/TrkFitter/TrkRefitAlg/CMakeLists.txt | 1 + .../TrkRefitAlg/TrkRefitAlg/ReFitTrack.h | 5 +- .../TrkFitter/TrkRefitAlg/src/ReFitTrack.cxx | 15 +-- .../share/GeantFollowingMS_jobOptions.py | 8 ++ .../share/GeantFollowing_jobOptions.py | 8 ++ .../share/GeantinoMapping_jobOptions.py | 8 ++ .../TrkParticleCreator/CMakeLists.txt | 1 + .../TrackParticleCreatorTool.h | 12 +- .../src/TrackParticleCreatorTool.cxx | 29 +++-- .../ITrackParticleCreatorTool.h | 12 +- .../TrkVertexSeedFinderUtils/CMakeLists.txt | 1 + .../src/GaussianDensityTestAlg.cxx | 12 +- .../src/GaussianDensityTestAlg.h | 5 +- .../TrigFastTrackFinder/CMakeLists.txt | 3 +- .../src/TrigFastTrackFinder.cxx | 21 ++-- .../src/TrigFastTrackFinder.h | 8 +- .../FastTrackSimWrap/DumpSp.h | 5 +- .../TrigFTK/FastTrackSimWrap/src/DumpSp.cxx | 36 +++--- Trigger/TrigFTK/TrigFTKSim/CMakeLists.txt | 1 + .../TrigFTKSim/TrigFTKSim/FTK_SGHitInput.h | 5 +- .../TrigFTK/TrigFTKSim/src/FTK_SGHitInput.cxx | 12 +- .../TrigBjetHypo/CMakeLists.txt | 1 + .../TrigBjetHypo/TrigBjetHypo/TrigBjetFex.h | 4 +- .../TrigBjetHypo/TrigBjetHypo/TrigBjetHypo.h | 4 +- .../TrigBjetHypo/src/TrigBjetFex.cxx | 23 ++-- .../TrigBjetHypo/src/TrigBjetHypo.cxx | 11 +- .../TrigBjetHypo/src/TrigBjetHypoTool.cxx | 11 +- .../TrigBjetHypo/src/TrigBjetHypoTool.h | 4 +- .../TrigBphysHypo/CMakeLists.txt | 1 + .../src/TrigBphysHelperUtilsTool.cxx | 15 +-- .../src/TrigBphysHelperUtilsTool.h | 3 +- .../TrigBphysHypo/src/TrigEFBMuMuHypo.cxx | 24 ++-- .../TrigBphysHypo/src/TrigEFBMuMuHypo.h | 4 +- .../TrigEgammaHypo/TrigEFElectronHypo.h | 6 +- .../TrigEgammaHypo/src/TrigEFElectronHypo.cxx | 49 +------- .../src/TrigEFElectronMuonAngleFexAlgo.cxx | 6 +- .../TriggerMenu/python/muon/MuonDef.py | 8 ++ .../TriggerMenu/python/muon/MuonDefIdTest.py | 6 + 55 files changed, 329 insertions(+), 350 deletions(-) diff --git a/InnerDetector/InDetConditions/InDetBeamSpotService/InDetBeamSpotService/IBeamCondSvc.h b/InnerDetector/InDetConditions/InDetBeamSpotService/InDetBeamSpotService/IBeamCondSvc.h index ef66b649e13..e178fd56254 100644 --- a/InnerDetector/InDetConditions/InDetBeamSpotService/InDetBeamSpotService/IBeamCondSvc.h +++ b/InnerDetector/InDetConditions/InDetBeamSpotService/InDetBeamSpotService/IBeamCondSvc.h @@ -12,7 +12,7 @@ #ifndef SIMULATIONBASE #include "VxVertex/RecVertex.h" #endif - +//[[deprecated("Use BeamSpotData condition object")]] class IBeamCondSvc : virtual public IInterface { public: diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py index dd4cc0a5660..854d16936cc 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py @@ -21,10 +21,6 @@ if not ('conddb' in dir()): IOVDbSvc = Service("IOVDbSvc") from IOVDbSvc.CondDB import conddb -# Conditions sequence for Athena MT -from AthenaCommon.AlgSequence import AthSequencer -condSeq = AthSequencer("AthCondSeq") - # # --- Setup BeamSpot data # @@ -40,9 +36,12 @@ except ImportError: # Protection for AthSimulationBase release which does not contain RecExConfig conddb.addFolderSplitOnline("INDET", "/Indet/Onl/Beampos", "/Indet/Beampos", className="AthenaAttributeList") - -from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg -condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" ) +# Conditions sequence for Athena MT +from AthenaCommon.AlgSequence import AthSequencer +condSeq = AthSequencer("AthCondSeq") +if not hasattr(condSeq, "BeamSpotCondAlg"): + from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg + condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" ) # diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/CMakeLists.txt b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/CMakeLists.txt index d0ff183148c..3058906eda2 100644 --- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/CMakeLists.txt +++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/CMakeLists.txt @@ -21,6 +21,7 @@ atlas_depends_on_subdirs( Event/xAOD/xAODTracking InnerDetector/InDetAlignTools/InDetAlignGenTools InnerDetector/InDetConditions/InDetBeamSpotService + InnerDetector/InDetConditions/BeamSpotConditionsData InnerDetector/InDetConditions/TRT_ConditionsServices InnerDetector/InDetDetDescr/InDetIdentifier InnerDetector/InDetDetDescr/InDetReadoutGeometry diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx index 58f6f9bdf3a..2acac3c3f00 100644 --- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx +++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx @@ -34,7 +34,6 @@ #include "TrkEventPrimitives/FitQuality.h" #include "TrkEventPrimitives/LocalParameters.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" #include "xAODEventInfo/EventInfo.h" @@ -68,7 +67,6 @@ IDAlignMonGenericTracks::IDAlignMonGenericTracks( const std::string & type, cons m_z0Range(250.0), m_etaRange(3.0), m_NTracksRange(200), - m_beamCondSvc("BeamCondSvc",name), m_hWeightInFile(0), m_etapTWeight(0) @@ -96,7 +94,6 @@ IDAlignMonGenericTracks::IDAlignMonGenericTracks( const std::string & type, cons declareProperty("etaRange" , m_etaRange); declareProperty("pTRange" , m_pTRange); declareProperty("NTracksRange" , m_NTracksRange); - declareProperty("beamCondSvc" , m_beamCondSvc); declareProperty("applyHistWeight" , m_applyHistWeight = false); declareProperty("hWeightInFileName" , m_hWeightInFileName = "hWeight.root" ); declareProperty("hWeightHistName" , m_hWeightHistName = "trk_pT_vs_eta" ); @@ -494,13 +491,13 @@ StatusCode IDAlignMonGenericTracks::initialize() ATH_CHECK (m_trackToVertexIPEstimator.retrieve()); } - if ( m_beamCondSvc.retrieve().isFailure() ) { - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Failed to retrieve beamspot service " << m_beamCondSvc << " - will use nominal beamspot at (0,0,0)" << endmsg; + if ( m_beamSpotKey.initialize().isFailure() ) { + if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Failed to retrieve beamspot service " << m_beamSpotKey << " - will use nominal beamspot at (0,0,0)" << endmsg; m_hasBeamCondSvc = false; } else { m_hasBeamCondSvc = true; - ATH_MSG_DEBUG("Retrieved service " << m_beamCondSvc); + ATH_MSG_DEBUG("Retrieved service " << m_beamSpotKey); } @@ -1705,13 +1702,14 @@ StatusCode IDAlignMonGenericTracks::fillHistograms() float beamTiltX = 0.; float beamTiltY = 0.; if (m_hasBeamCondSvc) { - Amg::Vector3D bpos = m_beamCondSvc->beamPos(); + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + Amg::Vector3D bpos = beamSpotHandle->beamPos(); beamSpotX = bpos.x(); beamSpotY = bpos.y(); beamSpotZ = bpos.z(); - beamTiltX = m_beamCondSvc->beamTilt(0); - beamTiltY = m_beamCondSvc->beamTilt(1); - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Beamspot from " << m_beamCondSvc << ": x0 = " << beamSpotX << ", y0 = " << beamSpotY + beamTiltX = beamSpotHandle->beamTilt(0); + beamTiltY = beamSpotHandle->beamTilt(1); + if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Beamspot from " << beamSpotHandle.retrieve() << ": x0 = " << beamSpotX << ", y0 = " << beamSpotY << ", z0 = " << beamSpotZ << ", tiltX = " << beamTiltX << ", tiltY = " << beamTiltY <<endmsg; diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.h b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.h index b0fafe01a03..1ceaea096af 100755 --- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.h +++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.h @@ -28,6 +28,7 @@ #include "xAODTracking/Vertex.h" #include "xAODTracking/VertexContainer.h" #include <map> +#include "BeamSpotConditionsData/BeamSpotData.h" class VxContainer; class TH1F; @@ -37,7 +38,6 @@ class AtlasDetectorID; class PixelID; class SCT_ID; class TRT_ID; -class IBeamCondSvc; class EventInfo; namespace Trk { @@ -434,7 +434,7 @@ protected: ToolHandle< InDetAlignMon::TrackSelectionTool > m_trackSelection; ToolHandle<IInDetAlignHitQualSelTool> m_hitQualityTool; - ServiceHandle<IBeamCondSvc> m_beamCondSvc; + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; PublicToolHandle< Trk::ITrackToVertexIPEstimator > m_trackToVertexIPEstimator {this,"TrackToVertexIPEstimator","Trk::TrackToVertexIPEstimator",""}; diff --git a/InnerDetector/InDetMonitoring/InDetPerformanceMonitoring/src/IDPerfMonZmumu.cxx b/InnerDetector/InDetMonitoring/InDetPerformanceMonitoring/src/IDPerfMonZmumu.cxx index 9428a56201e..42ca9bc3c8e 100755 --- a/InnerDetector/InDetMonitoring/InDetPerformanceMonitoring/src/IDPerfMonZmumu.cxx +++ b/InnerDetector/InDetMonitoring/InDetPerformanceMonitoring/src/IDPerfMonZmumu.cxx @@ -547,8 +547,10 @@ void IDPerfMonZmumu::FillRecParameters(const Trk::Track* track, double charge) z0 = trkPerigee->parameters()[Trk::z0]; } } + //TODO optimize use of BeamSpotData and eventcontext const Trk::AtaStraightLine* atBL = - dynamic_cast<const Trk::AtaStraightLine*>(m_trackToVertexTool->trackAtBeamline( *track )); + dynamic_cast<const Trk::AtaStraightLine*>(m_trackToVertexTool->trackAtBeamline( *track , + m_trackToVertexTool->GetBeamLine(m_trackToVertexTool->GetBeamSpotData(Gaudi::Hive::currentContext())).get() )); if (atBL){ double qOverP = atBL->parameters()[Trk::qOverP]; if(qOverP){ @@ -597,8 +599,10 @@ StatusCode IDPerfMonZmumu::FillTruthParameters(const xAOD::TrackParticle* trackP if(truthParticle->pdgId() == muonId) charge = -1.; else if(truthParticle->pdgId() == -muonId) charge = 1.; Trk::TrackParameters* parameters = new Trk::Perigee(pos,mom,charge,pos); + //TODO optimize use of BeamSpotData and eventcontext const Trk::AtaStraightLine* atBLi = - dynamic_cast<const Trk::AtaStraightLine*>(m_trackToVertexTool->trackAtBeamline( *parameters )); + dynamic_cast<const Trk::AtaStraightLine*>(m_trackToVertexTool->trackAtBeamline( *parameters, + m_trackToVertexTool->GetBeamLine(m_trackToVertexTool->GetBeamSpotData(Gaudi::Hive::currentContext())).get() )); if(atBLi){ if (charge == 1) { double qOverP = atBLi->parameters()[Trk::qOverP]; diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigParticleCreation/src/TrigTrackingxAODCnvMT.cxx b/InnerDetector/InDetTrigRecAlgs/InDetTrigParticleCreation/src/TrigTrackingxAODCnvMT.cxx index 4b63c8d0080..7e91c1fa389 100644 --- a/InnerDetector/InDetTrigRecAlgs/InDetTrigParticleCreation/src/TrigTrackingxAODCnvMT.cxx +++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigParticleCreation/src/TrigTrackingxAODCnvMT.cxx @@ -223,7 +223,7 @@ namespace InDet //+++ DQM (SA): monitoring // ResetMon(); - auto ctx = getContext(); + const auto &ctx = getContext(); auto tpHandle = SG::makeHandle (m_trackParticleKey, ctx); ATH_CHECK( tpHandle.record (std::make_unique<xAOD::TrackParticleContainer>(), @@ -266,6 +266,7 @@ namespace InDet // if(doTiming()) m_timerMemAlloc->start(); tpCont->reserve(tracks->size()); // if(doTiming()) m_timerMemAlloc->stop(); +// const InDet::BeamSpotData* BsData = m_particleCreatorTool->CacheBeamSpotData(ctx); for(unsigned int idtr=0; idtr< tracks->size(); ++idtr) { const ElementLink<TrackCollection> trackLink(*tracks, idtr); diff --git a/Projects/AthSimulation/package_filters.txt b/Projects/AthSimulation/package_filters.txt index b3b5eaae318..c7b174953fd 100644 --- a/Projects/AthSimulation/package_filters.txt +++ b/Projects/AthSimulation/package_filters.txt @@ -160,6 +160,7 @@ + Generators/HepMCWeightSvc + Generators/McEventSelector + Generators/TruthUtils ++ InnerDetector/InDetConditions/BeamSpotConditionsData + InnerDetector/InDetConditions/InDetBeamSpotService + InnerDetector/InDetConditions/InDetCondFolders + InnerDetector/InDetConditions/InDetCondServices diff --git a/Reconstruction/RecoTools/ITrackToVertex/ITrackToVertex/ITrackToVertex.h b/Reconstruction/RecoTools/ITrackToVertex/ITrackToVertex/ITrackToVertex.h index ddebe80de75..15c890bc05a 100755 --- a/Reconstruction/RecoTools/ITrackToVertex/ITrackToVertex/ITrackToVertex.h +++ b/Reconstruction/RecoTools/ITrackToVertex/ITrackToVertex/ITrackToVertex.h @@ -22,6 +22,11 @@ namespace Rec { namespace Trk { class Track; + class StraightLineSurface; +} + +namespace InDet{ + class BeamSpotData; } namespace Reco { @@ -47,6 +52,11 @@ namespace Reco { /** AlgTool interface methods */ static const InterfaceID& interfaceID() { return IID_ITrackToVertex; }; + + /** Use this for MT Coding */ + virtual std::unique_ptr<Trk::StraightLineSurface> GetBeamLine(const InDet::BeamSpotData*) const = 0; //In C++17 make this [[nodiscard]] + + virtual const InDet::BeamSpotData* GetBeamSpotData(const EventContext &ctx) const = 0; //In C++17 make this [[nodiscard]] /** Interface method for use with TrackParticle and given vertex position - AOD */ virtual const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp, const Amg::Vector3D& gp) const = 0; @@ -64,28 +74,28 @@ namespace Reco { virtual const Trk::Perigee* perigeeAtVertex(const Trk::Track& trk, const Amg::Vector3D& gp) const = 0; /** Interface method for use with TrackParticle and the beamspot from the BeamSpotSvc - AOD*/ - virtual const Trk::Perigee* perigeeAtBeamspot(const Rec::TrackParticle& tp) const = 0; + virtual const Trk::Perigee* perigeeAtBeamspot(const Rec::TrackParticle& tp, const InDet::BeamSpotData*) const = 0; /** Interface method for use with TrackParticle and the beamspot from the BeamSpotSvc - xAOD*/ - virtual const Trk::Perigee* perigeeAtBeamspot(const xAOD::TrackParticle& tp) const = 0; + virtual const Trk::Perigee* perigeeAtBeamspot(const xAOD::TrackParticle& tp, const InDet::BeamSpotData*) const = 0; /** Interface method for use with Track and the beamspot from the BeamSpotSvc - ESD */ - virtual const Trk::Perigee* perigeeAtBeamspot(const Trk::Track& trk) const = 0; + virtual const Trk::Perigee* perigeeAtBeamspot(const Trk::Track& trk, const InDet::BeamSpotData*) const = 0; /** Interface method for use with Track and the beamline from the BeamSpotSvc - ESD */ - virtual const Trk::Perigee* perigeeAtBeamline(const Trk::Track& trk) const = 0; + virtual const Trk::Perigee* perigeeAtBeamline(const Trk::Track& trk, const InDet::BeamSpotData*) const = 0; /** Interface method for use with TrackParticle and the beamline from the BeamSpotSvc - AOD*/ virtual const Trk::TrackParameters* trackAtBeamline(const Rec::TrackParticle& tp) const = 0; /** Interface method for use with TrackParticle and the beamline from the BeamSpotSvc - xAOD*/ - virtual const Trk::TrackParameters* trackAtBeamline(const xAOD::TrackParticle& tp) const = 0; + virtual const Trk::TrackParameters* trackAtBeamline(const xAOD::TrackParticle& tp, const InDet::BeamSpotData*) const = 0; /** Interface method for use with Track and the beamline from the BeamSpotSvc - ESD */ - virtual const Trk::TrackParameters* trackAtBeamline(const Trk::Track& trk) const = 0; + virtual const Trk::TrackParameters* trackAtBeamline(const Trk::Track& trk, const Trk::StraightLineSurface*) const = 0; /** Interface method for use with Track and the beamline from the BeamSpotSvc - TrackParameters */ - virtual const Trk::TrackParameters* trackAtBeamline(const Trk::TrackParameters& tpars) const = 0; + virtual const Trk::TrackParameters* trackAtBeamline(const Trk::TrackParameters& tpars, const Trk::StraightLineSurface* ) const = 0; }; } diff --git a/Reconstruction/RecoTools/TrackToVertex/CMakeLists.txt b/Reconstruction/RecoTools/TrackToVertex/CMakeLists.txt index 8331d53dff7..8dea0f4278d 100644 --- a/Reconstruction/RecoTools/TrackToVertex/CMakeLists.txt +++ b/Reconstruction/RecoTools/TrackToVertex/CMakeLists.txt @@ -13,6 +13,7 @@ atlas_depends_on_subdirs( PUBLIC GaudiKernel Reconstruction/RecoTools/ITrackToVertex Tracking/TrkEvent/TrkNeutralParameters + InnerDetector/InDetConditions/BeamSpotConditionsData PRIVATE Control/StoreGate InnerDetector/InDetConditions/InDetBeamSpotService diff --git a/Reconstruction/RecoTools/TrackToVertex/TrackToVertex/TrackToVertex.h b/Reconstruction/RecoTools/TrackToVertex/TrackToVertex/TrackToVertex.h index 17f765046e2..53a2313c005 100755 --- a/Reconstruction/RecoTools/TrackToVertex/TrackToVertex/TrackToVertex.h +++ b/Reconstruction/RecoTools/TrackToVertex/TrackToVertex/TrackToVertex.h @@ -13,15 +13,11 @@ // Gaudi #include "AthenaBaseComps/AthAlgTool.h" #include "GaudiKernel/ToolHandle.h" -#include "GaudiKernel/ServiceHandle.h" // Trk #include "ITrackToVertex/ITrackToVertex.h" -#include "GaudiKernel/IIncidentListener.h" #include "TrkParameters/TrackParameters.h" #include "GeoPrimitives/GeoPrimitives.h" - -class IBeamCondSvc; -class IIncidentSvc; +#include "BeamSpotConditionsData/BeamSpotData.h" namespace Rec { class TrackParticle; @@ -32,7 +28,7 @@ namespace Trk { class IExtrapolator; class StraightLineSurface; } - + /** @class TrackToVertex Standard Tool to extrapolate Track/TrackParticleBase to Vertex @@ -44,8 +40,8 @@ namespace Trk { namespace Reco { - class TrackToVertex : virtual public ITrackToVertex, - public AthAlgTool, virtual public IIncidentListener + class TrackToVertex : virtual public ITrackToVertex, + public AthAlgTool { public: @@ -56,60 +52,61 @@ namespace Reco { virtual ~TrackToVertex(); /** AlgTool initailize method.*/ - StatusCode initialize(); + virtual StatusCode initialize() override; /** AlgTool finalize method */ - StatusCode finalize(); + virtual StatusCode finalize() override; - /** handle for incident service */ - void handle(const Incident& inc) ; + /** Use this for MT Coding */ + virtual std::unique_ptr<Trk::StraightLineSurface> GetBeamLine(const InDet::BeamSpotData*) const override; //In C++17 make this [[nodiscard]] + + virtual const InDet::BeamSpotData* GetBeamSpotData(const EventContext &ctx) const override; //In C++17 make this [[nodiscard]] /** Interface method for use with TrackParticle and given vertex position - AOD */ - const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp, const Amg::Vector3D& gp) const; + virtual const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp, const Amg::Vector3D& gp) const override; /** Interface method for use with xAOD::Trackparticle and given vertex position - xAOD */ - const Trk::Perigee* perigeeAtVertex(const xAOD::TrackParticle& tp, const Amg::Vector3D& gp) const; + virtual const Trk::Perigee* perigeeAtVertex(const xAOD::TrackParticle& tp, const Amg::Vector3D& gp) const override; /** Interface method for use with TrackParticle and default primary vertex from TrackParticle - AOD */ - const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp) const; + virtual const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp) const override; /** Interface method for use with TrackParticle and default primary vertex from TrackParticle - xAOD */ - const Trk::Perigee* perigeeAtVertex(const xAOD::TrackParticle& tp) const; + virtual const Trk::Perigee* perigeeAtVertex(const xAOD::TrackParticle& tp) const override; /** Interface method for use with Track and given vertex position - ESD */ - const Trk::Perigee* perigeeAtVertex(const Trk::Track& trk, const Amg::Vector3D& gp) const; + virtual const Trk::Perigee* perigeeAtVertex(const Trk::Track& trk, const Amg::Vector3D& gp) const override; /** Interface method for use with TrackParticle and the beamspot from the BeamSpotSvc - AOD*/ - const Trk::Perigee* perigeeAtBeamspot(const Rec::TrackParticle& tp) const; + virtual const Trk::Perigee* perigeeAtBeamspot(const Rec::TrackParticle& tp, const InDet::BeamSpotData*) const override; /** Interface method for use with TrackParticle and the beamspot from the BeamSpotSvc - xAOD*/ - const Trk::Perigee* perigeeAtBeamspot(const xAOD::TrackParticle& tp) const; + virtual const Trk::Perigee* perigeeAtBeamspot(const xAOD::TrackParticle& tp, const InDet::BeamSpotData*) const override; /** Interface method for use with Track and the beamspot from the BeamSpotSvc - ESD */ - const Trk::Perigee* perigeeAtBeamspot(const Trk::Track& trk) const; + virtual const Trk::Perigee* perigeeAtBeamspot(const Trk::Track& trk, const InDet::BeamSpotData*) const override; /** Interface method for use with Track and the beamline from the BeamSpotSvc - ESD */ - const Trk::Perigee* perigeeAtBeamline(const Trk::Track& trk) const; + virtual const Trk::Perigee* perigeeAtBeamline(const Trk::Track& trk, const InDet::BeamSpotData*) const override; /** Interface method for use with TrackParticle and the beamline from the BeamSpotSvc - AOD*/ - const Trk::TrackParameters* trackAtBeamline(const Rec::TrackParticle& tp) const; + virtual const Trk::TrackParameters* trackAtBeamline(const Rec::TrackParticle& tp) const override; /** Interface method for use with TrackParticle and the beamline from the BeamSpotSvc - xAOD*/ - const Trk::TrackParameters* trackAtBeamline(const xAOD::TrackParticle& tp) const; + virtual const Trk::TrackParameters* trackAtBeamline(const xAOD::TrackParticle& tp, const InDet::BeamSpotData*) const override; /** Interface method for use with Track and the beamline from the BeamSpotSvc - ESD */ - const Trk::TrackParameters* trackAtBeamline(const Trk::Track& trk) const; + virtual const Trk::TrackParameters* trackAtBeamline(const Trk::Track& trk, const Trk::StraightLineSurface* beamline) const override; /** Interface method for use with Track and the beamline from the BeamSpotSvc - TrackParameters */ - const Trk::TrackParameters* trackAtBeamline(const Trk::TrackParameters& tpars) const; - + virtual const Trk::TrackParameters* trackAtBeamline(const Trk::TrackParameters& tpars, const Trk::StraightLineSurface* beamline) const override; + + private: ToolHandle< Trk::IExtrapolator > m_extrapolator; //!< ToolHandle for Extrapolator - ServiceHandle<IBeamCondSvc> m_beamConditionsService; //!< SurfaceHandle for conditions services - ServiceHandle<IIncidentSvc> m_incidentSvc; //!< IncidentSvc to catch begin of event and end of envent - - Trk::StraightLineSurface* m_beamLine; - - static Amg::Vector3D s_origin; //!< static origin + + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; + bool m_ForceBeamSpotZero = false; + const static Amg::Vector3D s_origin; //!< static origin }; } // end of namespace diff --git a/Reconstruction/RecoTools/TrackToVertex/src/TrackToVertex.cxx b/Reconstruction/RecoTools/TrackToVertex/src/TrackToVertex.cxx index 7808b24a4c7..5b677b886ea 100755 --- a/Reconstruction/RecoTools/TrackToVertex/src/TrackToVertex.cxx +++ b/Reconstruction/RecoTools/TrackToVertex/src/TrackToVertex.cxx @@ -20,33 +20,24 @@ #include "TrkTrack/Track.h" #include "VxVertex/VxCandidate.h" #include "VxVertex/RecVertex.h" -// Beam condition services -#include "InDetBeamSpotService/IBeamCondSvc.h" -// CLHEP -//#include "CLHEP/Units/SystemOfUnits.h" - -Amg::Vector3D Reco::TrackToVertex::s_origin(0.,0.,0.); +const Amg::Vector3D Reco::TrackToVertex::s_origin(0.,0.,0.); // constructor Reco::TrackToVertex::TrackToVertex(const std::string& t, const std::string& n, const IInterface* p) : AthAlgTool(t,n,p), - m_extrapolator("Trk::Extrapolator/AtlasExtrapolator"), - m_beamConditionsService("BeamCondSvc", n), - m_incidentSvc("IncidentSvc", n), - m_beamLine(0) + m_extrapolator("Trk::Extrapolator/AtlasExtrapolator") { declareInterface<ITrackToVertex>(this); // the extrapolatr and the BeamCondSvc declareProperty("Extrapolator", m_extrapolator); - declareProperty("BeamConditionsSvc", m_beamConditionsService); + declareProperty("ForceBeamSpotZero", m_ForceBeamSpotZero); } // destructor Reco::TrackToVertex::~TrackToVertex() { - delete m_beamLine; } @@ -61,43 +52,34 @@ StatusCode Reco::TrackToVertex::initialize() ATH_MSG_WARNING( "Failed to retrieve tool " << m_extrapolator << " - extrapolations will not be performed." ); } else ATH_MSG_INFO( "Retrieved tool " << m_extrapolator); - - if ( m_beamConditionsService.retrieve().isFailure() ) - ATH_MSG_WARNING( "Failed to retrieve service " << m_beamConditionsService << " - extrapolations will be performed to (0,0,0)." ); - else - ATH_MSG_INFO( "Retrieved service " << m_beamConditionsService); - - - if (m_incidentSvc.retrieve().isFailure()){ - ATH_MSG_WARNING("Can not retrieve " << m_incidentSvc << ". Exiting."); - return StatusCode::FAILURE; - } - // register to the incident service: BeginEvent needed for memory cleanup - m_incidentSvc->addListener( this, IncidentType::BeginEvent); - - ATH_MSG_INFO( name() << " initialize() successful"); + if(!m_ForceBeamSpotZero){ + ATH_CHECK(m_beamSpotKey.initialize()); + }else{ +// m_beamSpotKey = ""; + } + ATH_MSG_DEBUG( name() << " initialize() successful"); return StatusCode::SUCCESS; } +const InDet::BeamSpotData* Reco::TrackToVertex::GetBeamSpotData(const EventContext &ctx) const { + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx }; + return beamSpotHandle.isValid() ? beamSpotHandle.retrieve() : nullptr; +} + // incident listener waiting for BeginEvent -void Reco::TrackToVertex::handle(const Incident& inc) { - - if ( inc.type() == IncidentType::BeginEvent){ - ATH_MSG_VERBOSE("'BeginEvent' incident caught. Refreshing Cache."); - delete m_beamLine; m_beamLine = 0; - // get the transform - Amg::Transform3D* beamTransform = new Amg::Transform3D(Amg::AngleAxis3D(m_beamConditionsService->beamTilt(0),Amg::Vector3D(0.,1.,0.))); - (*beamTransform) *= Amg::AngleAxis3D(m_beamConditionsService->beamTilt(1),Amg::Vector3D(1.,0.,0.)); - beamTransform->pretranslate(m_beamConditionsService->beamPos()); - // create the new beam line - m_beamLine = new Trk::StraightLineSurface(beamTransform); - } +std::unique_ptr<Trk::StraightLineSurface> Reco::TrackToVertex::GetBeamLine(const InDet::BeamSpotData* beamSpotHandle) const { + // get the transform + Amg::Transform3D* beamTransform = new Amg::Transform3D(Amg::AngleAxis3D(beamSpotHandle->beamTilt(0),Amg::Vector3D(0.,1.,0.))); + (*beamTransform) *= Amg::AngleAxis3D(beamSpotHandle->beamTilt(1),Amg::Vector3D(1.,0.,0.)); + beamTransform->pretranslate(beamSpotHandle->beamPos()); + // create the new beam line + return std::make_unique< Trk::StraightLineSurface >(beamTransform); } // finalize StatusCode Reco::TrackToVertex::finalize() { - ATH_MSG_INFO( name() << " finalize() successful"); + ATH_MSG_DEBUG( name() << " finalize() successful"); return StatusCode::SUCCESS; } @@ -180,43 +162,34 @@ const Trk::Perigee* Reco::TrackToVertex::perigeeAtVertex(const Trk::Track& track } -const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const Rec::TrackParticle& tp) const +const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const Rec::TrackParticle& tp, const InDet::BeamSpotData* beamspot) const { - Amg::Vector3D beamspot(s_origin); - if (!m_beamConditionsService.empty()) - beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position()); - return perigeeAtVertex(tp,beamspot); + return perigeeAtVertex(tp, beamspot ? beamspot->beamVtx().position() : s_origin); } -const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const xAOD::TrackParticle& tp) const +const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const xAOD::TrackParticle& tp, const InDet::BeamSpotData* beamspot) const { - Amg::Vector3D beamspot(s_origin); - if (!m_beamConditionsService.empty()) - beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position()); - return perigeeAtVertex(tp,beamspot); + return perigeeAtVertex(tp, beamspot ? beamspot->beamVtx().position() : s_origin); } -const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const Trk::Track& track) const +const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const Trk::Track& track, const InDet::BeamSpotData* beamspot) const { - Amg::Vector3D beamspot(s_origin); - if (!m_beamConditionsService.empty()) - beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position()); - return perigeeAtVertex(track,beamspot); + return perigeeAtVertex(track, beamspot ? beamspot->beamVtx().position() : s_origin); } -const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamline(const Trk::Track& track) const +const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamline(const Trk::Track& track, const InDet::BeamSpotData* beamspotptr) const { Amg::Vector3D beamspot(s_origin); float tiltx = 0.0; float tilty = 0.0; - if (!m_beamConditionsService.empty()) { - beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position()); - tiltx = m_beamConditionsService->beamTilt(0); - tilty = m_beamConditionsService->beamTilt(1); + if (beamspotptr) { + beamspot = Amg::Vector3D(beamspotptr->beamVtx().position()); + tiltx = beamspotptr->beamTilt(0); + tilty = beamspotptr->beamTilt(1); } Amg::Transform3D * amgTransf = new Amg::Transform3D(); Amg::Translation3D amgtranslation(beamspot); @@ -263,16 +236,17 @@ const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Rec::Trac //return m_extrapolator->extrapolate(tp, *m_beamLine); } -const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const xAOD::TrackParticle& tp) const +const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const xAOD::TrackParticle& tp, + const InDet::BeamSpotData* beamspotptr) const { Amg::Vector3D beamspot(s_origin); float tiltx = 0.0; float tilty = 0.0; - if (!m_beamConditionsService.empty()) { - beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position()); - tiltx = m_beamConditionsService->beamTilt(0); - tilty = m_beamConditionsService->beamTilt(1); + if (beamspotptr) { + beamspot = Amg::Vector3D(beamspotptr->beamVtx().position()); + tiltx = beamspotptr->beamTilt(0); + tilty = beamspotptr->beamTilt(1); } Amg::Transform3D * amgTransf = new Amg::Transform3D(); Amg::Translation3D amgtranslation(beamspot); @@ -297,15 +271,17 @@ const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const xAOD::Tra return vertexPerigee; } - -const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Trk::Track& trk) const + +const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Trk::Track& trk, + const Trk::StraightLineSurface* beamline) const { - return m_extrapolator->extrapolate(trk, *m_beamLine); + return m_extrapolator->extrapolate(trk, *beamline); } -const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Trk::TrackParameters& tpars) const +const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Trk::TrackParameters& tpars, + const Trk::StraightLineSurface* beamline) const { - return m_extrapolator->extrapolate(tpars,*m_beamLine); + return m_extrapolator->extrapolate(tpars, *beamline); } diff --git a/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt b/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt index 0f9cdf4b76b..93c1417b49c 100644 --- a/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt +++ b/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt @@ -15,6 +15,7 @@ atlas_depends_on_subdirs( PUBLIC Reconstruction/iPat/iPatInterfaces Reconstruction/iPat/iPatTrack Event/EventContainers + InnerDetector/InDetConditions/BeamSpotConditionsData PRIVATE InnerDetector/InDetConditions/InDetBeamSpotService InnerDetector/InDetDetDescr/InDetReadoutGeometry diff --git a/Reconstruction/iPat/iPatTrackFinder/iPatTrackFinder/TrackFinder.h b/Reconstruction/iPat/iPatTrackFinder/iPatTrackFinder/TrackFinder.h index a20006ad62f..e99002c659b 100755 --- a/Reconstruction/iPat/iPatTrackFinder/iPatTrackFinder/TrackFinder.h +++ b/Reconstruction/iPat/iPatTrackFinder/iPatTrackFinder/TrackFinder.h @@ -18,12 +18,11 @@ #include "GaudiKernel/ToolHandle.h" #include "iPatInterfaces/ITrackFinder.h" #include "iPatTrack/TrackList.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" //<<<<<< CLASS DECLARATIONS >>>>>> namespace Trk { class RecVertex; } class IAssignedHits; -class IBeamCondSvc; class ICombinationMaker; class ICandidateBuilder; class IFinderConfiguration; @@ -69,7 +68,7 @@ private: // helpers, managers, tools ToolHandle<IAssignedHits> m_assignedHits; - ServiceHandle<IBeamCondSvc> m_beamCondSvc; + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; ToolHandle<ICandidateBuilder> m_candidateBuilder; ToolHandle<ICombinationMaker> m_combination; ToolHandle<IFinderConfiguration> m_finderTolerances; diff --git a/Reconstruction/iPat/iPatTrackFinder/src/TrackFinder.cxx b/Reconstruction/iPat/iPatTrackFinder/src/TrackFinder.cxx index fca513edd52..c39b0af48c4 100755 --- a/Reconstruction/iPat/iPatTrackFinder/src/TrackFinder.cxx +++ b/Reconstruction/iPat/iPatTrackFinder/src/TrackFinder.cxx @@ -16,7 +16,6 @@ #include <iostream> #include <utility> #include "GaudiKernel/SystemOfUnits.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" #include "TrkSpacePoint/SpacePoint.h" #include "VxVertex/RecVertex.h" #include "iPatInterfaces/IAssignedHits.h" @@ -40,7 +39,6 @@ TrackFinder::TrackFinder(const std::string& type, const IInterface* parent) : AthAlgTool (type, name, parent), m_assignedHits ("AssignedHits/AssignedHits"), - m_beamCondSvc ("BeamCondSvc", name), m_candidateBuilder ("CandidateBuilder/CandidateBuilder"), m_combination ("CombinationMaker/CombinationMaker"), m_finderTolerances ("FinderTolerances/FinderTolerances"), @@ -79,16 +77,7 @@ TrackFinder::initialize() { ATH_MSG_INFO( "TrackFinder::initialize()" ); - // check BeamCondSvc service available - if (m_beamCondSvc.retrieve().isFailure()) - { - ATH_MSG_FATAL( "Failed to retrieve service " << m_beamCondSvc ); - return StatusCode::FAILURE; - } - else - { - ATH_MSG_INFO( "Retrieved service " << m_beamCondSvc ); - } + ATH_CHECK(m_beamSpotKey.initialize()); // get the Tools if (m_assignedHits.retrieve().isFailure()) @@ -664,7 +653,8 @@ TrackFinder::vertexRegionDefinition (void) { // get beam position from conditions db delete m_vertex; - Amg::Vector3D beamPosition = m_beamCondSvc->beamPos(); + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + Amg::Vector3D beamPosition = beamSpotHandle->beamPos(); // vertex for transverse vertex constraint // assume flat distribution for error (only x and y components will be used) @@ -678,6 +668,6 @@ TrackFinder::vertexRegionDefinition (void) m_vertex = new Trk::RecVertex(beamPosition,covariance); // std::cout << " beam vertex " << beamPosition << std::endl; -// << " beamSigma " << m_beamCondSvc->beamSigma(2) << std::endl; +// << " beamSigma " << beamSpotHandle->beamSigma(2) << std::endl; } diff --git a/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py b/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py index e4c1ca199d5..c462bd0bc10 100644 --- a/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py +++ b/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py @@ -77,7 +77,12 @@ pmon_properties.PerfMonFlags.doMonitoring=True pmon_properties.PerfMonFlags.doSemiDetailedMonitoring=True - +# Conditions sequence for Athena MT +from AthenaCommon.AlgSequence import AthSequencer +condSeq = AthSequencer("AthCondSeq") +if not hasattr(condSeq, "BeamSpotCondAlg"): + from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg + condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" ) #####################Back to Skeleton.EVGENtoHIT.py###################### diff --git a/Tracking/Acts/ActsGeometry/share/GeantinoMapping_jobOptions.py b/Tracking/Acts/ActsGeometry/share/GeantinoMapping_jobOptions.py index 992f16b3a09..b6414415fe5 100644 --- a/Tracking/Acts/ActsGeometry/share/GeantinoMapping_jobOptions.py +++ b/Tracking/Acts/ActsGeometry/share/GeantinoMapping_jobOptions.py @@ -143,5 +143,13 @@ topSeq += getAlgorithm("BeamEffectsAlg", tryDefaultConfigurable=True) ## Populate alg sequence topSeq += getAlgorithm("G4AtlasAlg",tryDefaultConfigurable=True) +# Conditions sequence for Athena MT +from AthenaCommon.AlgSequence import AthSequencer +condSeq = AthSequencer("AthCondSeq") +if not hasattr(condSeq, "BeamSpotCondAlg"): + from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg + condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" ) + + #--- End jobOptions.GeantinoMapping.py file ------------------------------ diff --git a/Tracking/TrkFitter/TrkRefitAlg/CMakeLists.txt b/Tracking/TrkFitter/TrkRefitAlg/CMakeLists.txt index 6c727398b50..70017f1ba32 100644 --- a/Tracking/TrkFitter/TrkRefitAlg/CMakeLists.txt +++ b/Tracking/TrkFitter/TrkRefitAlg/CMakeLists.txt @@ -13,6 +13,7 @@ atlas_depends_on_subdirs( PUBLIC Tracking/TrkEvent/TrkEventUtils Tracking/TrkEvent/TrkTrack Tracking/TrkFitter/TrkFitterUtils + InnerDetector/InDetConditions/BeamSpotConditionsData PRIVATE InnerDetector/InDetConditions/InDetBeamSpotService Tracking/TrkDetDescr/TrkSurfaces diff --git a/Tracking/TrkFitter/TrkRefitAlg/TrkRefitAlg/ReFitTrack.h b/Tracking/TrkFitter/TrkRefitAlg/TrkRefitAlg/ReFitTrack.h index bead3025482..7354f22aa09 100755 --- a/Tracking/TrkFitter/TrkRefitAlg/TrkRefitAlg/ReFitTrack.h +++ b/Tracking/TrkFitter/TrkRefitAlg/TrkRefitAlg/ReFitTrack.h @@ -22,12 +22,11 @@ #include "StoreGate/ReadHandleKey.h" #include "StoreGate/WriteHandleKey.h" #include "TrkExInterfaces/IExtrapolator.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" #include "TrkToolInterfaces/ITrackSelectorTool.h" #include "TrkToolInterfaces/IPRD_AssociationTool.h" #include "TrkToolInterfaces/ITrackSummaryTool.h" #include "TrkFitterInterfaces/ITrackFitter.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" class VxContainer; namespace Trk{ @@ -82,7 +81,7 @@ private: unsigned int m_constrainFitMode; //!< 0 - not constraint, 1 - vertex, 2 - beamspot SG::ReadHandleKey<VxContainer> m_vxContainerName; - ServiceHandle<IBeamCondSvc> m_iBeamCondSvc; //!< the beam conditions service + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; ToolHandle<Trk::IExtrapolator> m_extrapolator; //!< the extrapoaltor for the consistent measurement frame bool m_usetrackhypo; //!< Fit using particle hypothesis from input track diff --git a/Tracking/TrkFitter/TrkRefitAlg/src/ReFitTrack.cxx b/Tracking/TrkFitter/TrkRefitAlg/src/ReFitTrack.cxx index 91398e0435b..71e2448159d 100755 --- a/Tracking/TrkFitter/TrkRefitAlg/src/ReFitTrack.cxx +++ b/Tracking/TrkFitter/TrkRefitAlg/src/ReFitTrack.cxx @@ -50,7 +50,6 @@ Trk::ReFitTrack::ReFitTrack(const std::string &name, ISvcLocator *pSvcLocator) : m_trkSelectorTool(""), m_constrainFitMode(0), m_vxContainerName("VxPrimaryCandidate"), - m_iBeamCondSvc("BeamCondSvc", name), m_extrapolator("Trk::Extrapolator/InDetExtrapolator"), m_usetrackhypo(false) { @@ -71,7 +70,6 @@ Trk::ReFitTrack::ReFitTrack(const std::string &name, ISvcLocator *pSvcLocator) : // constrained fitting declareProperty("ConstrainFit", m_constrainFitMode,"mode switch if/how the track is constrained to the BS/Vx"); declareProperty("VertexCollection", m_vxContainerName,"Source for vertex to use for constraining tracks"); - declareProperty("BeamConditionsSvc", m_iBeamCondSvc,"Beam spot service in case track is constrained to the BS"); declareProperty("Extrapolator", m_extrapolator, "Extrapolator needed for coherent measurement frame."); @@ -126,12 +124,8 @@ StatusCode Trk::ReFitTrack::initialize() } // beam conditions service - if (m_constrainFitMode && !m_iBeamCondSvc.empty() ) { - if ( m_iBeamCondSvc.retrieve().isFailure() ) { - ATH_MSG_FATAL( "Failed to retrieve service " << m_iBeamCondSvc ); - return StatusCode::FAILURE; - } else - ATH_MSG_VERBOSE( "Retrieved service " << m_iBeamCondSvc); + if (m_constrainFitMode) { + ATH_CHECK(m_beamSpotKey.initialize()); } // extrapolator @@ -181,9 +175,10 @@ StatusCode Trk::ReFitTrack::execute() // constrain fit to be done if (m_constrainFitMode > 0){ - if ( m_constrainFitMode > 1 ){ + if ( m_constrainFitMode > 1 ){ + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; // get vertex position and uncertainties from BeamCondSvc - constrainVx = new Trk::RecVertex(m_iBeamCondSvc->beamVtx()); + constrainVx = new Trk::RecVertex(beamSpotHandle->beamVtx()); cleanup_constrainVx.reset( constrainVx ); ATH_MSG_DEBUG("Track fit with BeamSpot constraint (x/y/z) = " << constrainVx->position().x() << ", " diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py index 21e3b8cddf5..47d814fa730 100644 --- a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py +++ b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py @@ -356,6 +356,14 @@ topSeq += getAlgorithm("BeamEffectsAlg", tryDefaultConfigurable=True) ## Populate alg sequence topSeq += getAlgorithm("G4AtlasAlg",tryDefaultConfigurable=True) +# Conditions sequence for Athena MT +from AthenaCommon.AlgSequence import AthSequencer +condSeq = AthSequencer("AthCondSeq") +if not hasattr(condSeq, "BeamSpotCondAlg"): + from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg + condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" ) + + #AlgSequence("Streams").StreamHITS.ItemList = ['EventInfo#*'] from AthenaCommon.AppMgr import AppMgr diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py index cf553386d17..7b574ce5257 100644 --- a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py +++ b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py @@ -12,6 +12,14 @@ from AthenaCommon.AlgSequence import AlgSequence topSeq = AlgSequence() +# Conditions sequence for Athena MT +from AthenaCommon.AlgSequence import AthSequencer +condSeq = AthSequencer("AthCondSeq") +if not hasattr(condSeq, "BeamSpotCondAlg"): + from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg + condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" ) + + #topSeq.ContinueEventloopOnFPE = True from RecExConfig.RecFlags import rec as rec rec.doFloatingPointException.set_Value_and_Lock(True) diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py index 8347d6fd84f..fba841d859b 100644 --- a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py +++ b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py @@ -13,6 +13,14 @@ __version__="$Revision: 757321 $" from AthenaCommon.AlgSequence import AlgSequence topSeq = AlgSequence() +# Conditions sequence for Athena MT +from AthenaCommon.AlgSequence import AthSequencer +condSeq = AthSequencer("AthCondSeq") +if not hasattr(condSeq, "BeamSpotCondAlg"): + from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg + condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" ) + + #--- Output threshold (DEBUG, INFO, WARNING, ERROR, FATAL) ---- #from AthenaCommon.AppMgr import ServiceMgr ServiceMgr.MessageSvc.OutputLevel = INFO diff --git a/Tracking/TrkTools/TrkParticleCreator/CMakeLists.txt b/Tracking/TrkTools/TrkParticleCreator/CMakeLists.txt index c38a3af182d..a18f7f9f6c1 100644 --- a/Tracking/TrkTools/TrkParticleCreator/CMakeLists.txt +++ b/Tracking/TrkTools/TrkParticleCreator/CMakeLists.txt @@ -28,6 +28,7 @@ atlas_depends_on_subdirs( DetectorDescription/GeoPrimitives DetectorDescription/IdDictDetDescr InnerDetector/InDetConditions/InDetBeamSpotService + InnerDetector/InDetConditions/BeamSpotConditionsData InnerDetector/InDetRecEvent/InDetPrepRawData InnerDetector/InDetRecEvent/InDetRIO_OnTrack MagneticField/MagFieldInterfaces diff --git a/Tracking/TrkTools/TrkParticleCreator/TrkParticleCreator/TrackParticleCreatorTool.h b/Tracking/TrkTools/TrkParticleCreator/TrkParticleCreator/TrackParticleCreatorTool.h index ea2a5fd50d2..aa6d023263d 100755 --- a/Tracking/TrkTools/TrkParticleCreator/TrkParticleCreator/TrackParticleCreatorTool.h +++ b/Tracking/TrkTools/TrkParticleCreator/TrkParticleCreator/TrackParticleCreatorTool.h @@ -39,7 +39,6 @@ changes : 11.02.04 added docu class AtlasDetectorID; -class IBeamCondSvc; class IBLParameterSvc; namespace Rec @@ -57,6 +56,7 @@ namespace MagField class IMagFieldSvc; } +namespace InDet { class BeamSpotData; } namespace Trk { @@ -80,13 +80,14 @@ namespace Trk { i.e. the TrackParticle will not be complete @param track Pointer to a valid track (i.e. do not pass a zero!). Ownership is not taken (i.e. it will not be deleted) @param vxCandidate Pointer to a valid vxCandidate (i.e. do not pass a zero!). Ownership is not taken (i.e. it will not be deleted) + @param bsdata BeamSpot data - can be obtained with CondHandle or from a tool. @param prtOrigin @warning In my opinion, the interface is not optimal - we're not taking ownership of the Trk::Track or Vx::Candidate, so they should be passed by reference. */ Rec::TrackParticle* createParticle( const Trk::Track* track, const Trk::VxCandidate* vxCandidate, - Trk::TrackParticleOrigin prtOrigin); + Trk::TrackParticleOrigin prtOrigin) override; /** Method to construct a xAOD::TrackParticle from a Rec::TrackParticle. @param track particle @@ -106,7 +107,7 @@ namespace Trk { xAOD::TrackParticle* createParticle( const Trk::Track& track, xAOD::TrackParticleContainer* container, const xAOD::Vertex* vxCandidate, - xAOD::ParticleHypothesis prtOrigin) const; + xAOD::ParticleHypothesis prtOrigin) const override; /** Method to construct a TrackParticle from a passed Track. Currently, it will ONLY fill the MeasuredPerigee i.e. the TrackParticle will not be complete @@ -118,7 +119,7 @@ namespace Trk { xAOD::TrackParticle* createParticle( const ElementLink<TrackCollection>& trackLink, xAOD::TrackParticleContainer* container, const xAOD::Vertex* vxCandidate, - xAOD::ParticleHypothesis prtOrigin) const; + xAOD::ParticleHypothesis prtOrigin) const override; /** create a xAOD::TrackParticle out of constituents */ xAOD::TrackParticle* createParticle( const Perigee* perigee, const FitQuality* fq, const TrackInfo* trackInfo, const TrackSummary* summary, @@ -152,8 +153,10 @@ namespace Trk { /** Get the name used for the decoration of the track particle with the number of used hits for TRT dE/dx computation.*/ static const std::string & trtdEdxUsedHitsAuxName() { return s_trtdEdxUsedHitsDecorationName; } + virtual const InDet::BeamSpotData* CacheBeamSpotData(const EventContext &ctx) const override; private: + void compare( const Rec::TrackParticle& tp, const xAOD::TrackParticle& tpx ) const; void compare( const TrackParameters& tp1, const TrackParameters& tp2 ) const; /**atlas id helper*/ @@ -167,7 +170,6 @@ private: /** to query magnetic field configuration */ ServiceHandle<MagField::IMagFieldSvc> m_magFieldSvc; - ServiceHandle<IBeamCondSvc> m_beamConditionsService; ServiceHandle <IBLParameterSvc> m_IBLParameterSvc; diff --git a/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx b/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx index 188e200d693..b737e56dac0 100644 --- a/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx +++ b/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx @@ -49,7 +49,7 @@ #include "xAODTracking/TrackingPrimitives.h" #include "EventPrimitives/EventPrimitivesToStringConverter.h" #include "AtlasDetDescr/AtlasDetectorID.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" #include <map> #include <vector> #include <algorithm> @@ -111,7 +111,6 @@ namespace Trk m_trackToVertex ("Reco::TrackToVertex/TrackToVertex"), m_hitSummaryTool ("Muon::MuonHitSummaryTool/MuonHitSummaryTool"), m_magFieldSvc ("AtlasFieldSvc", n), - m_beamConditionsService("BeamCondSvc", n), m_IBLParameterSvc("IBLParameterSvc",n), m_copyExtraSummaryName {"eProbabilityComb","eProbabilityHT","TRTTrackOccupancy","TRTdEdx","TRTdEdxUsedHits"}, m_copyEProbabilities{}, @@ -238,9 +237,6 @@ namespace Trk return StatusCode::FAILURE; } - if ( m_beamConditionsService.retrieve().isFailure() ){ - ATH_MSG_WARNING( "Failed to retrieve service " << m_beamConditionsService << " - Tilts will not be filled!" ); - } StatusCode sc(StatusCode::SUCCESS); m_copyEProbabilities.clear(); @@ -296,7 +292,7 @@ namespace Trk } Rec::TrackParticle* TrackParticleCreatorTool::createParticle(const Trk::Track* track, - const Trk::VxCandidate* vxCandidate, + const Trk::VxCandidate* vxCandidate, Trk::TrackParticleOrigin prtOrigin) { if (track == 0) return 0; @@ -330,7 +326,7 @@ namespace Trk } else if (m_perigeeExpression == "BeamSpot"){ //Express parameters at beamspot - const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamspot( *track ); + const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamspot( *track, CacheBeamSpotData(Gaudi::Hive::currentContext()) ); if(!result){ ATH_MSG_WARNING("Failed to extrapolate to first Beamspot"); @@ -364,7 +360,7 @@ namespace Trk } } else if (m_perigeeExpression == "BeamLine"){ - const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamline( *track ); + const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamline( *track, CacheBeamSpotData(Gaudi::Hive::currentContext()) ); if(!result){ ATH_MSG_WARNING("Failed to extrapolate to Beamline"); @@ -510,7 +506,7 @@ namespace Trk } } }else if (m_perigeeExpression == "BeamSpot"){ //Express parameters at beamspot - const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamspot(track); + const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamspot(track, CacheBeamSpotData(Gaudi::Hive::currentContext())); if(!result){ ATH_MSG_WARNING("Failed to extrapolate to first Beamspot - No TrackParticle created."); return 0; @@ -534,7 +530,7 @@ namespace Trk } } else if (m_perigeeExpression == "BeamLine"){ - const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamline(track); + const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamline(track, CacheBeamSpotData(Gaudi::Hive::currentContext())); if(!result){ ATH_MSG_WARNING("Failed to extrapolate to Beamline - No TrackParticle created."); return 0; @@ -878,9 +874,9 @@ namespace Trk setNumberOfUsedHits(*trackparticle,summary->numberOfUsedHitsdEdx()); setNumberOfOverflowHits(*trackparticle,summary->numberOfOverflowHitsdEdx()); } - - if (!m_beamConditionsService.empty()) { - setTilt(*trackparticle,m_beamConditionsService->beamTilt(0),m_beamConditionsService->beamTilt(1)); + auto beamspot = CacheBeamSpotData(Gaudi::Hive::currentContext()); + if (beamspot) { + setTilt(*trackparticle,beamspot->beamTilt(0),beamspot->beamTilt(1)); } // Parameters if (perigee) { @@ -1088,4 +1084,11 @@ void TrackParticleCreatorTool::setTrackSummary( xAOD::TrackParticle& tp, const T } } +const InDet::BeamSpotData* TrackParticleCreatorTool::CacheBeamSpotData(const EventContext &ctx) const { +// if(ctx.evt() == m_lastEvent) return m_lastBeamSpot; + return m_trackToVertex->GetBeamSpotData(ctx); +// m_lastEvent = ctx.evt(); +// return m_lastBeamSpot; +} + } // end of namespace Trk diff --git a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackParticleCreatorTool.h b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackParticleCreatorTool.h index f6b64890945..6d03d499252 100755 --- a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackParticleCreatorTool.h +++ b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackParticleCreatorTool.h @@ -22,6 +22,10 @@ namespace Rec class TrackParticle; } +namespace InDet{ + class BeamSpotData; +} + namespace Trk { class Track; @@ -47,8 +51,8 @@ namespace Trk @warning In my opinion, the interface is not optimal - we're not taking ownership of the Trk::Track or Vx::Candidate, so they should be passed by reference. */ - virtual Rec::TrackParticle* createParticle( const Trk::Track* track, - const Trk::VxCandidate* vxCandidate = 0, + virtual Rec::TrackParticle* createParticle( const Trk::Track* track, + const Trk::VxCandidate* vxCandidate = 0, Trk::TrackParticleOrigin prtOrigin = Trk::NoVtx)=0; /** Method to construct a xAOD::TrackParticle from a Rec::TrackParticle. @@ -88,7 +92,9 @@ namespace Trk const std::vector< xAOD::ParameterPosition>& positions, xAOD::ParticleHypothesis prtOrigin = xAOD::noHypothesis, xAOD::TrackParticleContainer* container = 0 ) const = 0; - + + /** Convenience method to retrieve Beamspot Data object -- cache this once per event for optimal performance */ + virtual const InDet::BeamSpotData* CacheBeamSpotData(const EventContext &ctx) const =0; }; diff --git a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/CMakeLists.txt b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/CMakeLists.txt index 3c1de11971b..58292db2b3e 100644 --- a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/CMakeLists.txt +++ b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/CMakeLists.txt @@ -16,6 +16,7 @@ atlas_depends_on_subdirs( Tracking/TrkEvent/TrkParameters Tracking/TrkEvent/TrkParticleBase Tracking/TrkEvent/VxVertex + InnerDetector/InDetConditions/BeamSpotConditionsData PRIVATE Event/EventPrimitives Event/xAOD/xAODTruth diff --git a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.cxx b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.cxx index 2a6d3f92ae2..b3f54ef968e 100644 --- a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.cxx +++ b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.cxx @@ -35,7 +35,6 @@ GaussianDensityTestAlg::GaussianDensityTestAlg( const std::string& name, ::AthAlgorithm( name, pSvcLocator ), m_useBeamConstraint(true), m_firstEvent(true), - m_iBeamCondSvc("BeamCondSvc", name), m_iTHistSvc("THistSvc", name) { // @@ -61,7 +60,7 @@ StatusCode GaussianDensityTestAlg::initialize() ATH_CHECK( m_estimator.retrieve() ); ATH_CHECK( m_trackFilter.retrieve() ); ATH_CHECK( m_ipEstimator.retrieve() ); - + ATH_CHECK(m_beamSpotKey.initialize()); // setup histograms/trees m_h_density = new TH1F("Density", "Density", 800, -200.0, 200.0); m_h_truthDensity = new TH1F("Truth", "Truth", 800, -200.0, 200.0); @@ -139,12 +138,17 @@ void GaussianDensityTestAlg::selectTracks(const xAOD::TrackParticleContainer* tr std::vector<Trk::ITrackLink*>& trackVector) { Root::TAccept selectionPassed; + const InDet::BeamSpotData* beamspot = nullptr; + if(m_useBeamConstraint){ + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + if(beamSpotHandle.isValid()) beamspot = beamSpotHandle.retrieve(); + } for (auto itr = trackParticles->begin(); itr != trackParticles->end(); ++itr) { if (m_useBeamConstraint) { xAOD::Vertex beamposition; beamposition.makePrivateStore(); - beamposition.setPosition(m_iBeamCondSvc->beamVtx().position()); - beamposition.setCovariancePosition(m_iBeamCondSvc->beamVtx().covariancePosition()); + beamposition.setPosition(beamspot->beamVtx().position()); + beamposition.setCovariancePosition(beamspot->beamVtx().covariancePosition()); selectionPassed=m_trackFilter->accept(**itr,&beamposition); } else diff --git a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.h b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.h index 24097ae1e3a..877062ddff1 100644 --- a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.h +++ b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.h @@ -28,14 +28,13 @@ #include "xAODTruth/TruthEventContainer.h" #include "xAODTruth/TruthPileupEventContainer.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" #include "TrkVertexFitterInterfaces/IVertexTrackDensityEstimator.h" #include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h" #include "TrkVertexFitterInterfaces/ITrackToVertexIPEstimator.h" //Amg #include "GeoPrimitives/GeoPrimitives.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" #include "TH1F.h" #include "TTree.h" @@ -116,7 +115,7 @@ class GaussianDensityTestAlg // Non-property private data - ServiceHandle< IBeamCondSvc > m_iBeamCondSvc; + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; ServiceHandle< ITHistSvc > m_iTHistSvc; /// Data handle keys diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt b/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt index 43e6f51cf3f..83869014295 100644 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt @@ -13,13 +13,14 @@ atlas_depends_on_subdirs( PUBLIC Trigger/TrigEvent/TrigSteeringEvent Trigger/TrigSteer/TrigInterfaces Trigger/TrigTools/TrigInDetPattRecoTools + PRIVATE Control/AthenaBaseComps Control/StoreGate DetectorDescription/IRegionSelector - InnerDetector/InDetConditions/InDetBeamSpotService InnerDetector/InDetDetDescr/InDetIdentifier InnerDetector/InDetRecEvent/InDetPrepRawData + InnerDetector/InDetConditions/BeamSpotConditionsData InnerDetector/InDetRecEvent/InDetRIO_OnTrack InnerDetector/InDetRecEvent/SiSpacePointsSeed InnerDetector/InDetRecTools/InDetRecToolInterfaces diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx index 9072c392ffa..d78aca08cd0 100644 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx @@ -48,8 +48,6 @@ #include "TrigInDetEvent/TrigSiSpacePointBase.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" - #include "InDetIdentifier/SCT_ID.h" #include "InDetIdentifier/PixelID.h" @@ -93,7 +91,6 @@ TrigFastTrackFinder::TrigFastTrackFinder(const std::string& name, ISvcLocator* p m_ftkRefit(false), m_useBeamSpot(true), m_nfreeCut(5), - m_iBeamCondSvc(nullptr), m_nTracks(0), m_nPixSPsInRoI(0), m_nSCTSPsInRoI(0), @@ -255,7 +252,6 @@ TrigFastTrackFinder::TrigFastTrackFinder(const std::string& name, ISvcLocator* p declareMonitoredStdContainer("hit_PIXEndCapL3PhiResidual",m_pixResPhiECL3); declareMonitoredStdContainer("hit_PIXEndCapL3EtaResidual",m_pixResEtaECL3); - } //-------------------------------------------------------------------------- @@ -305,10 +301,10 @@ HLT::ErrorCode TrigFastTrackFinder::hltInitialize() { ATH_MSG_DEBUG(" TrigFastTrackFinder : MinHits set to " << m_minHits); if (m_useBeamSpot) { - StatusCode scBS = service("BeamCondSvc", m_iBeamCondSvc); - if (scBS.isFailure() || m_iBeamCondSvc == 0) { - m_iBeamCondSvc = 0; - ATH_MSG_WARNING("Could not retrieve Beam Conditions Service. "); + auto sc = m_beamSpotKey.initialize(); + if(sc.isFailure()) { + ATH_MSG_ERROR("Error initializing beamspot info"); + return HLT::BAD_JOB_SETUP; } } @@ -499,7 +495,7 @@ StatusCode TrigFastTrackFinder::findTracks(const TrigRoiDescriptor& roi, m_shift_x=0.0; m_shift_y=0.0; - if(m_useBeamSpot && m_iBeamCondSvc) { + if(m_useBeamSpot) { getBeamSpot(); } @@ -1058,13 +1054,14 @@ void TrigFastTrackFinder::assignTripletBarCodes(const std::vector<TrigInDetTripl } void TrigFastTrackFinder::getBeamSpot() { - m_vertex = m_iBeamCondSvc->beamPos(); + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + m_vertex = beamSpotHandle->beamPos(); ATH_MSG_VERBOSE("Beam spot position " << m_vertex); double xVTX = m_vertex.x(); double yVTX = m_vertex.y(); double zVTX = m_vertex.z(); - double tiltXZ = m_iBeamCondSvc->beamTilt(0); - double tiltYZ = m_iBeamCondSvc->beamTilt(1); + double tiltXZ = beamSpotHandle->beamTilt(0); + double tiltYZ = beamSpotHandle->beamTilt(1); m_shift_x = xVTX - tiltXZ*zVTX;//correction for tilt m_shift_y = yVTX - tiltYZ*zVTX;//correction for tilt ATH_MSG_VERBOSE("Beam center position: " << m_shift_x <<" "<< m_shift_y); diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.h b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.h index bb8d03fbb04..75e0611b5bd 100644 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.h +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.h @@ -24,7 +24,7 @@ #include "GaudiKernel/ToolHandle.h" #include "TrigInterfaces/FexAlgo.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" #include "TrkEventPrimitives/ParticleHypothesis.h" @@ -56,8 +56,6 @@ class IFTK_DataProviderSvc; class TrigL2LayerSetLUT; class TrigSpacePointStorage; class TrigInDetTriplet; -class IBeamCondSvc; -//class EventID; class PixelID; class SCT_ID; class AtlasDetectorID; @@ -154,8 +152,8 @@ protected: // Reconstructed tracks - IBeamCondSvc* m_iBeamCondSvc; - + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; + // Data members for monitoring int m_nTracks; diff --git a/Trigger/TrigFTK/FastTrackSimWrap/FastTrackSimWrap/DumpSp.h b/Trigger/TrigFTK/FastTrackSimWrap/FastTrackSimWrap/DumpSp.h index 6382bbd5d5f..3c03d351d55 100644 --- a/Trigger/TrigFTK/FastTrackSimWrap/FastTrackSimWrap/DumpSp.h +++ b/Trigger/TrigFTK/FastTrackSimWrap/FastTrackSimWrap/DumpSp.h @@ -50,7 +50,7 @@ #include "TrkTrackSummaryTool/TrackSummaryTool.h" #include "TrkToolInterfaces/ITrackHoleSearchTool.h" #include "InDetPrepRawData/SiClusterContainer.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" #include "InDetCondServices/ISiLorentzAngleTool.h" class AtlasDetectorID; @@ -59,7 +59,6 @@ class ITruthParameters; class TruthSelector; class PixelID; class SCT_ID; -class IBeamCondSvc; class EventID; namespace InDetDD { @@ -148,7 +147,7 @@ private: //#endif // ToolHandle<Trk::ITrackHoleSearchTool> m_holeSearchTool; - ServiceHandle<IBeamCondSvc> m_beamCondSvc; + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}; diff --git a/Trigger/TrigFTK/FastTrackSimWrap/src/DumpSp.cxx b/Trigger/TrigFTK/FastTrackSimWrap/src/DumpSp.cxx index 630a564a7c9..6101514c195 100644 --- a/Trigger/TrigFTK/FastTrackSimWrap/src/DumpSp.cxx +++ b/Trigger/TrigFTK/FastTrackSimWrap/src/DumpSp.cxx @@ -109,7 +109,7 @@ #include "GeneratorObjects/McEventCollection.h" #include "InDetReadoutGeometry/PixelDetectorManager.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" + #include "EventPrimitives/EventPrimitivesHelpers.h" @@ -132,7 +132,6 @@ DumpSp::DumpSp(const string& name, ISvcLocator* pSvcLocator) , m_trigDecTool("Trig::TrigDecisionTool/TrigDecisionTool") , m_pixelCondSummarySvc("PixelConditionsSummarySvc",name) // , m_holeSearchTool( "InDetHoleSearchTool" ) - , m_beamCondSvc("BeamCondSvc",name) , m_pixelClustersName( "PixelClusters" ) , m_sctClustersName( "SCT_Clusters" ) , m_pixelSpacePointsName( "PixelSpacePoints" ) @@ -178,7 +177,6 @@ DumpSp::DumpSp(const string& name, ISvcLocator* pSvcLocator) declareProperty("tracksTruthName" , m_tracksTruthName); declareProperty("TruthToTrackTool" , m_truthToTrack); // declareProperty("HoleSearch" , m_holeSearchTool); - declareProperty("beamCondSvc" , m_beamCondSvc); declareProperty("dumpMBTSInfo" , m_dumpMBTSInfo , "Dump X fields to output containing MBTS trigger info" ); declareProperty("useOfflineTrackSelectorTool" , m_useOfflineTrackSelectorTool); declareProperty("outputBeamSpotToWrapper" , m_outputBeamSpotToWrapper); @@ -311,13 +309,7 @@ DumpSp::initialize() m_oflraw->push( boost::iostreams::file_sink(m_outFileNameRawHits) ); // open the file } - // jordan's code for the beamline - if ( m_beamCondSvc.retrieve().isFailure() && ( m_outputBeamSpotToWrapper || !m_useSimpleCuts ) ) { - ATH_MSG_FATAL("Failed to retrieve service " << m_beamCondSvc); - return StatusCode::FAILURE; - } else { - ATH_MSG_INFO("Retrieved service " << m_beamCondSvc); - } + ATH_CHECK(m_beamSpotKey.initialize()); ATH_CHECK(m_pixelLorentzAngleTool.retrieve()); ATH_CHECK(m_sctLorentzAngleTool.retrieve()); @@ -597,8 +589,9 @@ DumpSp::dump_truth() const float truth_d0corr = track_truth_d0-( primaryVtx.y()*cos(track_truth_phi)-primaryVtx.x()*sin(track_truth_phi) ); float truth_zvertex = 0.; if ( !m_useSimpleCuts ) { // determine d0_corr based on beam position from BeamCondSvc - truth_d0corr = track_truth_d0-( m_beamCondSvc->beamPos().y()*cos(track_truth_phi)-m_beamCondSvc->beamPos().x()*sin(track_truth_phi) ); - truth_zvertex = m_beamCondSvc->beamPos().z(); + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + truth_d0corr = track_truth_d0-( beamSpotHandle->beamPos().y()*cos(track_truth_phi)-beamSpotHandle->beamPos().x()*sin(track_truth_phi) ); + truth_zvertex = beamSpotHandle->beamPos().z(); if ( showd0corrSuccess ) { ATH_MSG_DEBUG( "Beamspot from BeamCondSvc used to determine cuts in dump_truth()"); showd0corrSuccess = false; @@ -1810,15 +1803,16 @@ void DumpSp::dump_beamspot() const { if ( m_outputBeamSpotToWrapper ) { // output beam spot to wrapper - (*m_oflraw) << "V\t" << m_beamCondSvc->beamPos().x() << "\t" - << m_beamCondSvc->beamPos().y() << "\t" - << m_beamCondSvc->beamPos().z() << "\t" - << m_beamCondSvc->beamSigma(0) << "\t" - << m_beamCondSvc->beamSigma(1) << "\t" - << m_beamCondSvc->beamSigma(2) << "\t" - << m_beamCondSvc->beamSigmaXY() << "\t" - << m_beamCondSvc->beamTilt(0) << "\t" - << m_beamCondSvc->beamTilt(1) << "\n"; + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + (*m_oflraw) << "V\t" << beamSpotHandle->beamPos().x() << "\t" + << beamSpotHandle->beamPos().y() << "\t" + << beamSpotHandle->beamPos().z() << "\t" + << beamSpotHandle->beamSigma(0) << "\t" + << beamSpotHandle->beamSigma(1) << "\t" + << beamSpotHandle->beamSigma(2) << "\t" + << beamSpotHandle->beamSigmaXY() << "\t" + << beamSpotHandle->beamTilt(0) << "\t" + << beamSpotHandle->beamTilt(1) << "\n"; } } diff --git a/Trigger/TrigFTK/TrigFTKSim/CMakeLists.txt b/Trigger/TrigFTK/TrigFTKSim/CMakeLists.txt index 54340959ed3..1d24a83e9db 100644 --- a/Trigger/TrigFTK/TrigFTKSim/CMakeLists.txt +++ b/Trigger/TrigFTK/TrigFTKSim/CMakeLists.txt @@ -12,6 +12,7 @@ atlas_depends_on_subdirs( PUBLIC Control/StoreGate GaudiKernel InnerDetector/InDetConditions/InDetBeamSpotService + InnerDetector/InDetConditions/BeamSpotConditionsData InnerDetector/InDetConditions/InDetConditionsSummaryService InnerDetector/InDetDetDescr/InDetIdentifier InnerDetector/InDetDetDescr/InDetReadoutGeometry diff --git a/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTK_SGHitInput.h b/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTK_SGHitInput.h index 526b318f55c..27d79463d63 100644 --- a/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTK_SGHitInput.h +++ b/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTK_SGHitInput.h @@ -32,7 +32,6 @@ #include "TrkToolInterfaces/ITrackHoleSearchTool.h" #include "TrkExInterfaces/IExtrapolator.h" #include "TrkParameters/TrackParameters.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" #include "InDetCondServices/ISiLorentzAngleTool.h" #include "InDetReadoutGeometry/SiDetectorElementCollection.h" #include "StoreGate/StoreGateSvc.h" @@ -40,7 +39,7 @@ #include "StoreGate/ReadCondHandleKey.h" #include "HepPDT/ParticleDataTable.hh" #include "HepPDT/ParticleData.hh" - +#include "BeamSpotConditionsData/BeamSpotData.h" #include "InDetPrepRawData/SiClusterContainer.h" #include <boost/iostreams/filtering_stream.hpp> @@ -87,7 +86,7 @@ private: ToolHandle<Trk::IExtrapolator> m_extrapolator; ToolHandle<ISiLorentzAngleTool> m_pixelLorentzAngleTool{this, "LorentzAngleTool", "SiLorentzAngleTool/PixelLorentzAngleTool", "Tool to retreive Lorentz angle"}; - ServiceHandle<IBeamCondSvc> m_beamSpotSvc; + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}; diff --git a/Trigger/TrigFTK/TrigFTKSim/src/FTK_SGHitInput.cxx b/Trigger/TrigFTK/TrigFTKSim/src/FTK_SGHitInput.cxx index 74c0cf301e7..b703ce1e81e 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/FTK_SGHitInput.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/FTK_SGHitInput.cxx @@ -61,7 +61,6 @@ FTK_SGHitInput::FTK_SGHitInput(const std::string& algname, const std::string &na m_log( msgSvc() , name ), m_truthToTrack( "Trk::TruthToTrack/InDetTruthToTrack" ), m_extrapolator( "Trk::Extrapolator/AtlasExtrapolator" ), - m_beamSpotSvc( "BeamCondSvc" , name ), m_pixelClustersName( "PixelClusters" ), m_sctClustersName( "SCT_Clusters" ), m_pixelSpacePointsName( "PixelSpacePoints" ), @@ -91,7 +90,7 @@ FTK_SGHitInput::FTK_SGHitInput(const std::string& algname, const std::string &na declareProperty("tracksTruthName" , m_tracksTruthName); declareProperty("TruthToTrackTool" , m_truthToTrack); declareProperty("Extrapolator" , m_extrapolator); - declareProperty("BeamCondSvc" , m_beamSpotSvc); + declareProperty("BeamCondKey" , m_beamSpotKey); declareProperty("useOfflineTrackSelectorTool" , m_useOfflineTrackSelectorTool); declareProperty("outputBeamSpotToWrapper" , m_outputBeamSpotToWrapper); declareProperty("useSimpleCuts" , m_useSimpleCuts); @@ -130,11 +129,11 @@ StatusCode FTK_SGHitInput::initialize(){ ATH_CHECK(m_pixelLorentzAngleTool.retrieve()); - if( m_beamSpotSvc.retrieve().isFailure() ) { - m_log << MSG::FATAL << m_beamSpotSvc << " beam spot service not found" << endmsg; + if( m_beamSpotKey.initialize().isFailure() ) { + m_log << MSG::FATAL << m_beamSpotKey << " beam spot handle not found" << endmsg; return StatusCode::FAILURE; } else { - m_log << MSG::INFO << m_beamSpotSvc << " retrieved" << endmsg; + m_log << MSG::INFO << m_beamSpotKey << " retrieved" << endmsg; } if( service("DetectorStore",m_detStore).isFailure() ) { @@ -946,7 +945,8 @@ FTK_SGHitInput::read_truth_tracks() persf = Trk::PerigeeSurface(origin); } else { - persf = m_beamSpotSvc->beamPos(); + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + persf = beamSpotHandle->beamPos(); } const Trk::TrackParameters* tP = m_extrapolator->extrapolate(cParameters, persf, Trk::anyDirection, false); diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigBjetHypo/CMakeLists.txt index b51c4d80f97..bf799b86d98 100644 --- a/Trigger/TrigHypothesis/TrigBjetHypo/CMakeLists.txt +++ b/Trigger/TrigHypothesis/TrigBjetHypo/CMakeLists.txt @@ -17,6 +17,7 @@ atlas_depends_on_subdirs( PUBLIC Trigger/TrigEvent/TrigInDetEvent Trigger/TrigSteer/TrigInterfaces Trigger/TrigTools/TrigTrackJetFinderTool + InnerDetector/InDetConditions/BeamSpotConditionsData PRIVATE Control/AthContainers DetectorDescription/GeoPrimitives diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetFex.h b/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetFex.h index 46a65656659..ac6b64d8741 100755 --- a/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetFex.h +++ b/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetFex.h @@ -25,7 +25,7 @@ #include "TrigTrackJetFinderTool/ITrigTrackJetFinderTool.h" #include "VxSecVertex/VxSecVertexInfo.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" class MsgStream; @@ -298,6 +298,8 @@ class TrigBjetFex: public HLT::FexAlgo { /** @brief necessary for calibration constants for BjetProbability */ std::vector<float> m_par_0_MC, m_par_1_MC, m_par_0_DT, m_par_1_DT; + + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; }; #endif diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetHypo.h b/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetHypo.h index 418d17a88c7..a2644cfcbd7 100755 --- a/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetHypo.h +++ b/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetHypo.h @@ -16,7 +16,7 @@ #define TRIGBJETHYPO_H #include "TrigInterfaces/HypoAlgo.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" class TrigEFBjetContainer; class TrigTimerSvc; @@ -97,7 +97,7 @@ class TrigBjetHypo : public HLT::HypoAlgo { /** @brief Cut counter. */ int m_cutCounter; - + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; }; #endif diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetFex.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetFex.cxx index 7d9d044b280..ee78e8b1018 100755 --- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetFex.cxx +++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetFex.cxx @@ -30,7 +30,6 @@ #include "TrigParticle/TrigEFBjetContainer.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" #include "TrigInDetEvent/TrigVertex.h" @@ -355,8 +354,10 @@ HLT::ErrorCode TrigBjetFex::hltInitialize() { m_tuningLikelihoodSV = new TuningLikelihood(&m_sizeSV[0], &m_bSV[0], &m_uSV[0], m_sizeSV.size()); m_trigBjetTagger->fillLikelihoodMap("SVTX", m_tuningLikelihoodSV); + if(m_beamSpotKey.initialize().isFailure()) return HLT::BAD_JOB_SETUP; + // Retrieve TrigTrackJetFinder tool - StatusCode sc = m_trackJetFinderTool.retrieve(); + StatusCode sc = m_trackJetFinderTool.retrieve(); if(sc.isFailure()) { msg() << MSG::FATAL << "Failed to locate tool " << m_trackJetFinderTool << endmsg; return HLT::BAD_JOB_SETUP; @@ -903,11 +904,9 @@ HLT::ErrorCode TrigBjetFex::hltExecute(const HLT::TriggerElement* /*inputTE*/, H // ----------------------------------- // Retrieve beamspot information // ----------------------------------- - IBeamCondSvc* iBeamCondSvc; - StatusCode sc = service("BeamCondSvc", iBeamCondSvc); + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; - if (sc.isFailure() || iBeamCondSvc == 0) { - iBeamCondSvc = 0; + if (!beamSpotHandle.isValid()) { if (msgLvl() <= MSG::WARNING) msg() << MSG::WARNING << "Could not retrieve Beam Conditions Service. " << endmsg; @@ -915,9 +914,9 @@ HLT::ErrorCode TrigBjetFex::hltExecute(const HLT::TriggerElement* /*inputTE*/, H } else { - Amg::Vector3D beamSpot = iBeamCondSvc->beamPos(); + Amg::Vector3D beamSpot = beamSpotHandle->beamPos(); - int beamSpotBitMap = iBeamCondSvc->beamStatus(); + int beamSpotBitMap = beamSpotHandle->beamStatus(); // Check if beam spot is from online algorithms int beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4); @@ -927,13 +926,13 @@ HLT::ErrorCode TrigBjetFex::hltExecute(const HLT::TriggerElement* /*inputTE*/, H beamSpotStatus = ((beamSpotBitMap & 0x3) == 0x3); ATH_MSG_DEBUG( "Beam spot from service: x=" << beamSpot.x() << ", y=" << beamSpot.y() << ", z=" << beamSpot.z() - << ", tiltXZ=" << iBeamCondSvc->beamTilt(0) << ", tiltYZ=" << iBeamCondSvc->beamTilt(1) - << ", sigmaX=" << iBeamCondSvc->beamSigma(0) << ", sigmaY=" << iBeamCondSvc->beamSigma(1) << ", sigmaZ=" << iBeamCondSvc->beamSigma(2) + << ", tiltXZ=" << beamSpotHandle->beamTilt(0) << ", tiltYZ=" << beamSpotHandle->beamTilt(1) + << ", sigmaX=" << beamSpotHandle->beamSigma(0) << ", sigmaY=" << beamSpotHandle->beamSigma(1) << ", sigmaZ=" << beamSpotHandle->beamSigma(2) << ", status=" << beamSpotStatus ); m_trigBjetPrmVtxInfo->setBeamSpot(beamSpot.x(), beamSpot.y(), beamSpot.z()); - m_trigBjetPrmVtxInfo->setBeamSpotTilt(iBeamCondSvc->beamTilt(0), iBeamCondSvc->beamTilt(1)); - m_trigBjetPrmVtxInfo->setBeamSpotWidth(iBeamCondSvc->beamSigma(0), iBeamCondSvc->beamSigma(1), iBeamCondSvc->beamSigma(2)); + m_trigBjetPrmVtxInfo->setBeamSpotTilt(beamSpotHandle->beamTilt(0), beamSpotHandle->beamTilt(1)); + m_trigBjetPrmVtxInfo->setBeamSpotWidth(beamSpotHandle->beamSigma(0), beamSpotHandle->beamSigma(1), beamSpotHandle->beamSigma(2)); m_trigBjetPrmVtxInfo->setBeamSpotStatus(beamSpotStatus); ATH_MSG_DEBUG( *m_trigBjetPrmVtxInfo ); diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypo.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypo.cxx index fa0071c50da..1a8775a079a 100755 --- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypo.cxx +++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypo.cxx @@ -18,8 +18,6 @@ #include "xAODTrigger/TrigPassBits.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" - #include "xAODBTagging/BTaggingAuxContainer.h" #include "xAODBTagging/BTaggingContainer.h" #include "xAODBTagging/BTagging.h" @@ -81,7 +79,7 @@ HLT::ErrorCode TrigBjetHypo::hltInitialize() { if (m_xcutCHI2 != -20) ATH_MSG_DEBUG( " CutXCHI2 = " << m_xcutCHI2 ); if (m_xcutIP3D != -20) ATH_MSG_DEBUG( " CutXIP3D = " << m_xcutIP3D ); if (m_xcutIP2D != -20) ATH_MSG_DEBUG( " CutXIP2D = " << m_xcutIP2D ); - + if(m_beamSpotKey.initialize().isFailure()) return HLT::BAD_JOB_SETUP; return HLT::OK; } @@ -105,10 +103,9 @@ HLT::ErrorCode TrigBjetHypo::hltExecute(const HLT::TriggerElement* outputTE, boo // Retrieve beamspot information if (m_useBeamSpotFlag) { - IBeamCondSvc* iBeamCondSvc; - StatusCode sc = service("BeamCondSvc", iBeamCondSvc); + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; - if (sc.isFailure() || iBeamCondSvc == 0) { + if ( !beamSpotHandle.isValid() ) { if (msgLvl() <= MSG::WARNING) msg() << MSG::WARNING << "Could not retrieve Beam Conditions Service. " << endmsg; @@ -116,7 +113,7 @@ HLT::ErrorCode TrigBjetHypo::hltExecute(const HLT::TriggerElement* outputTE, boo } else { int beamSpotStatus = 0; - int beamSpotBitMap = iBeamCondSvc->beamStatus(); + int beamSpotBitMap = beamSpotHandle->beamStatus(); beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4); if (beamSpotStatus) beamSpotStatus = ((beamSpotBitMap & 0x3) == 0x3); diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.cxx index 912209de98e..cbf19b41912 100755 --- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.cxx +++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.cxx @@ -15,7 +15,6 @@ #include "DecisionHandling/HLTIdentifier.h" #include "TrigBjetHypoTool.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" #include "AthenaMonitoring/MonitoredScope.h" @@ -47,7 +46,7 @@ StatusCode TrigBjetHypoTool::initialize() { // ===================================== if ( retrieveTool( "Monitoring Tool",m_monTool ).isFailure() ) return StatusCode::FAILURE; // ===================================== - + if(m_beamSpotKey.initialize().isFailure()) return StatusCode::FAILURE; ATH_MSG_DEBUG( "Tool configured for chain/id: " << m_id ); return StatusCode::SUCCESS; } @@ -77,18 +76,16 @@ bool TrigBjetHypoTool::decide( const xAOD::BTagging* bTag, const TrigRoiDescrip // Retrieve beamspot information - check if this is going to be changed if (m_useBeamSpotFlag) { - - IBeamCondSvc* iBeamCondSvc; - StatusCode sc = service("BeamCondSvc", iBeamCondSvc); + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; - if (sc.isFailure() || iBeamCondSvc == 0) { + if (!beamSpotHandle.isValid()) { ATH_MSG_WARNING( "Could not retrieve Beam Conditions Service. " ); } else { int beamSpotStatus = 0; - int beamSpotBitMap = iBeamCondSvc->beamStatus(); + int beamSpotBitMap = beamSpotHandle->beamStatus(); beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4); if (beamSpotStatus) beamSpotStatus = ((beamSpotBitMap & 0x3) == 0x3); diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.h b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.h index 550a64e002a..98a50348312 100755 --- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.h +++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.h @@ -29,7 +29,7 @@ #include "DecisionHandling/HLTIdentifier.h" #include "DecisionHandling/TrigCompositeUtils.h" #include "AthenaBaseComps/AthAlgTool.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" //Not sure if these are needed, thus commeneted /* class TrigEFBjetContainer; */ @@ -114,7 +114,7 @@ class TrigBjetHypoTool : virtual public ::AthAlgTool { /** @brief DeclareProperty: to monitor method used to perform the cut. */ // float m_monitorMethod; PublicToolHandle< GenericMonitoringTool > m_monTool { this, "MonTool", "GenericMonitoringTool/MonTool", "Monitoring tool" }; - + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; }; inline const InterfaceID& TrigBjetHypoTool::interfaceID() diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigBphysHypo/CMakeLists.txt index 7731d9fcdbf..797033735e8 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/CMakeLists.txt +++ b/Trigger/TrigHypothesis/TrigBphysHypo/CMakeLists.txt @@ -23,6 +23,7 @@ atlas_depends_on_subdirs( PRIVATE Event/xAOD/xAODTrigger GaudiKernel Generators/GeneratorObjects + InnerDetector/InDetConditions/BeamSpotConditionsData InnerDetector/InDetConditions/InDetBeamSpotService Reconstruction/Particle Tracking/TrkEvent/TrkParameters diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx index 63b879352ce..c8ec3160720 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx +++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx @@ -28,7 +28,6 @@ #include "xAODTrigMuon/L2StandAloneMuon.h" -#include "InDetBeamSpotService/IBeamCondSvc.h" /////////////////////////////////////////////////////////////////// // Public methods: @@ -49,7 +48,6 @@ TrigBphysHelperUtilsTool::TrigBphysHelperUtilsTool( const std::string& type, // //declareProperty( "Property", m_nProperty ); declareProperty("VertexFitterTool", m_fitterSvc); - } // Destructor @@ -72,7 +70,10 @@ StatusCode TrigBphysHelperUtilsTool::initialize() } m_VKVFitter = dynamic_cast<Trk::TrkVKalVrtFitter*>(&(*m_fitterSvc)); } - + if(m_beamSpotKey.initialize().isFailure()){ + msg() << MSG::ERROR << "Beamspot error" << endmsg; + return StatusCode::FAILURE; + } return StatusCode::SUCCESS; } @@ -646,14 +647,14 @@ void TrigBphysHelperUtilsTool::setBeamlineDisplacement(xAOD::TrigBphys* bphys, return; } - IBeamCondSvc* iBeamCondSvc; Amg::Vector3D beamSpot(0.,0.,0.); - if ( service("BeamCondSvc", iBeamCondSvc).isFailure() || iBeamCondSvc == 0) + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; + if ( !beamSpotHandle.isValid() ) { msg() << MSG::DEBUG<< "Could not retrieve Beam Conditions Service. " << endmsg; }else { - beamSpot = iBeamCondSvc->beamPos(); - int beamSpotBitMap = iBeamCondSvc->beamStatus(); + beamSpot = beamSpotHandle->beamPos(); + int beamSpotBitMap = beamSpotHandle->beamStatus(); //* Check if beam spot is from online algorithms *// int beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4); if(msg().level() <= MSG::DEBUG) msg() << MSG::DEBUG << " beamSpotBitMap= "<< beamSpotBitMap<<" beamSpotStatus= "<<beamSpotStatus<<endmsg; diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h index 323ebe16255..58dcbef2e68 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h +++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h @@ -24,6 +24,7 @@ #include "xAODTrigBphys/TrigBphys.h" #include "TrkVKalVrtFitter/TrkVKalVrtFitter.h" #include "xAODTracking/TrackParticleContainer.h" +#include "BeamSpotConditionsData/BeamSpotData.h" // Forward declaration namespace Trk { @@ -123,7 +124,7 @@ class TrigBphysHelperUtilsTool: virtual public ::AthAlgTool // tools ToolHandle < Trk::IVertexFitter > m_fitterSvc; Trk::TrkVKalVrtFitter* m_VKVFitter; - + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; const double m_massMuon; }; diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx index 0bfb281f29b..be205b8c032 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx +++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx @@ -79,7 +79,6 @@ TrigEFBMuMuHypo::TrigEFBMuMuHypo(const std::string & name, ISvcLocator* pSvcLoca declareMonitoredVariable("CutCounter", m_mon_cutCounter); declareMonitoredVariable("MuMumass", m_mon_MuMumass ); - } TrigEFBMuMuHypo::~TrigEFBMuMuHypo() @@ -99,7 +98,10 @@ HLT::ErrorCode TrigEFBMuMuHypo::hltInitialize() msg() << MSG::DEBUG << "ApplyUpperMassCut = " << m_ApplyupperMassCut << endmsg; } - + if(m_beamSpotKey.initialize().isFailure()){ + msg() << MSG::ERROR << "Beamspot error" << endmsg; + return HLT::BAD_JOB_SETUP; + } m_lastEvent = -1; m_lastEventPassed = -1; m_countTotalEvents =0; @@ -220,20 +222,20 @@ HLT::ErrorCode TrigEFBMuMuHypo::hltExecute(const HLT::TriggerElement* outputTE, } // Beam spot - IBeamCondSvc* iBeamCondSvc; + SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey }; //JW EDM HepGeom::Point3D<double> m_beamSpot_CLHEP; Amg::Vector3D beamSpot(0.,0.,0.); - if ( service("BeamCondSvc", iBeamCondSvc).isFailure() || iBeamCondSvc == 0) - { msg() << MSG::DEBUG<< "Could not retrieve Beam Conditions Service. " << endmsg; - }else { - beamSpot = iBeamCondSvc->beamPos(); - int beamSpotBitMap = iBeamCondSvc->beamStatus(); -//* Check if beam spot is from online algorithms *// + if ( !beamSpotHandle.isValid() ) + { msg() << MSG::DEBUG<< "Could not retrieve Beam Conditions Service. " << endmsg; + }else { + beamSpot = beamSpotHandle->beamPos(); + int beamSpotBitMap = beamSpotHandle->beamStatus(); +//* Check if beam spot is from online algorithms *// int beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4); if(msgLvl() <= MSG::DEBUG) msg() << MSG::DEBUG << " beamSpotBitMap= "<< beamSpotBitMap<<" beamSpotStatus= "<<beamSpotStatus<<endmsg; //std::cout<<" BBBBBBB: beamSpot.x()= "<< beamSpot.x()<<" beamSpot.y()= "<<beamSpot.y()<<std::endl; - } - + } + m_mon_cutCounter = 0; //TrigPassBits *bits = HLT::makeTrigPassBits(trigBphysColl); diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h index db30c189236..51d1186dff5 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h +++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h @@ -29,7 +29,7 @@ #include "TrigParticle/TrigEFBphys.h" #include "TrigParticle/TrigEFBphysContainer.h" - +#include "BeamSpotConditionsData/BeamSpotData.h" #include "TrigBphysHypo/Constants.h" class TrigEFBMuMuHypo: public HLT::HypoAlgo { @@ -73,7 +73,7 @@ class TrigEFBMuMuHypo: public HLT::HypoAlgo { int m_mon_cutCounter; double m_mon_MuMumass; - + SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }; }; #endif diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/TrigEgammaHypo/TrigEFElectronHypo.h b/Trigger/TrigHypothesis/TrigEgammaHypo/TrigEgammaHypo/TrigEFElectronHypo.h index 049d85ff7aa..4ea1c16af18 100755 --- a/Trigger/TrigHypothesis/TrigEgammaHypo/TrigEgammaHypo/TrigEFElectronHypo.h +++ b/Trigger/TrigHypothesis/TrigEgammaHypo/TrigEgammaHypo/TrigEFElectronHypo.h @@ -77,9 +77,6 @@ class TrigEFElectronHypo : public HLT::HypoAlgo { HLT::ErrorCode hltExecute(const HLT::TriggerElement* outputTE, bool& pass); HLT::ErrorCode hltStart(); - /** Find the impact parameter by extrapolating to either the beam spot or (0,0) **/ - double findImpact(const xAOD::TrackParticle* track) const;//AT: copied from Offline - private: // define the properties: @@ -143,8 +140,7 @@ class TrigEFElectronHypo : public HLT::HypoAlgo { TrigTimer* m_timerPIDTool; Amg::Vector3D m_primaryVertex; //AT Jan 2010 - /** @brief Tool handle for track extrapolation to vertex */ - ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool; //AT Jan 2010 + void prepareMonitoringVars(); diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEFElectronHypo.cxx b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEFElectronHypo.cxx index f6e83a1c62a..385d034a045 100755 --- a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEFElectronHypo.cxx +++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEFElectronHypo.cxx @@ -17,7 +17,6 @@ // Removing checks for showershape checks, track particle checks // Assume that electrons must have this information // -#include <list> #include <iterator> #include <sstream> #include <map> @@ -36,7 +35,6 @@ #include "xAODEgamma/Egamma.h" #include "xAODEgammaCnv/xAODElectronMonFuncs.h" #include "VxVertex/RecVertex.h" -#include "ITrackToVertex/ITrackToVertex.h" #include "TrigTimeAlgs/TrigTimerSvc.h" #include "PATCore/AcceptData.h" #include "xAODTrigger/TrigPassBits.h" @@ -58,9 +56,7 @@ TrigEFElectronHypo::TrigEFElectronHypo(const std::string& name, ISvcLocator* pSvcLocator): HLT::HypoAlgo(name, pSvcLocator), m_lumiBlockMuTool("LumiBlockMuTool/LumiBlockMuTool"), - m_primaryVertex(Amg::Vector3D()), - m_trackToVertexTool("Reco::TrackToVertex") - + m_primaryVertex(Amg::Vector3D()) { declareProperty("AcceptAll", m_acceptAll=true); declareProperty("CaloCutsOnly", m_caloCutsOnly); @@ -76,10 +72,6 @@ TrigEFElectronHypo::TrigEFElectronHypo(const std::string& name, declareProperty("AthenaElectronLHIDSelectorToolName", m_athElectronLHIDSelectorToolName=""); declareProperty("UseAthenaElectronLHIDSelectorTool", m_useAthElectronLHIDSelector=false); - //Tool for track extrapolation to vertex - declareProperty("trackToVertexTool", m_trackToVertexTool, - "Tool for track extrapolation to vertex"); - /** Luminosity tool */ declareProperty("LuminosityTool", m_lumiBlockMuTool, "Luminosity Tool"); @@ -224,15 +216,6 @@ HLT::ErrorCode TrigEFElectronHypo::hltInitialize() if (timerSvc()) m_totalTimer = addTimer("TrigEFElectronHypoTot"); - - //retrieving TrackToVertex: - if ( m_trackToVertexTool.retrieve().isFailure() ) { - ATH_MSG_ERROR("Failed to retrieve tool " << m_trackToVertexTool); - return HLT::BAD_JOB_SETUP; - } else { - ATH_MSG_DEBUG("Retrieved tool " << m_trackToVertexTool); - } - //------------------------------------------------------------------------------- // Use egammaElectronCutIDTool to run the Offline isEM Buildre in the Hypo. // The egammaElectronCutIDToolName runs the Electron Selecton only. @@ -814,33 +797,3 @@ HLT::ErrorCode TrigEFElectronHypo::hltExecute(const HLT::TriggerElement* outputT return HLT::OK; } - -// ============================================================== -double TrigEFElectronHypo::findImpact(const xAOD::TrackParticle* track) const -{ - // - // recalculate transverse impact parameter - // in case no Vertex is provided by the user, - // beam position will be used if available - // - - double trackD0 = -9999.; - // protection against bad pointers - if (track==0) return -9999.; - - // use beam spot - const Trk::Perigee* perigee = - m_trackToVertexTool->perigeeAtBeamspot(*track); - - if (perigee==0) { - if(msgLvl() <= MSG::WARNING) msg() << MSG::WARNING <<"No perigee using beam spot; no d0 calculation"<<endmsg; - perigee = m_trackToVertexTool->perigeeAtVertex(*track, m_primaryVertex); - } - - // destroy object - if (perigee!=0) - trackD0 = perigee->parameters()[Trk::d0]; - delete perigee; - - return trackD0; -} diff --git a/Trigger/TrigHypothesis/TrigEgammaMuonCombHypo/src/TrigEFElectronMuonAngleFexAlgo.cxx b/Trigger/TrigHypothesis/TrigEgammaMuonCombHypo/src/TrigEFElectronMuonAngleFexAlgo.cxx index f42294fe922..66d688063c5 100755 --- a/Trigger/TrigHypothesis/TrigEgammaMuonCombHypo/src/TrigEFElectronMuonAngleFexAlgo.cxx +++ b/Trigger/TrigHypothesis/TrigEgammaMuonCombHypo/src/TrigEFElectronMuonAngleFexAlgo.cxx @@ -494,7 +494,7 @@ HLT::ErrorCode TrigEFElectronMuonAngleFexAlgo::hltExecute(HLT::TEConstVec& /*inp << endmsg; } } - + auto bsData = m_trackToVertexTool->GetBeamSpotData(Gaudi::Hive::currentContext()); ElectronMuonTopoInfoContainer::iterator egMuTopoInfo; for ( egMuTopoInfo = m_egMuTopoColl->begin(); egMuTopoInfo != m_egMuTopoColl->end(); ++egMuTopoInfo ) { if((*egMuTopoInfo)==0) continue; @@ -527,9 +527,9 @@ HLT::ErrorCode TrigEFElectronMuonAngleFexAlgo::hltExecute(HLT::TEConstVec& /*inp if ( msgLvl() <= MSG::DEBUG ) msg() << MSG::DEBUG << "Muon track at " << m_muon << " was matched to TrkParticle from collection no. " << iColl << " at address " << muonTP << endmsg; - const Trk::Perigee* perigeeEL = m_trackToVertexTool->perigeeAtBeamspot(*m_electron); + const Trk::Perigee* perigeeEL = m_trackToVertexTool->perigeeAtBeamspot(*m_electron, bsData); - const Trk::Perigee* perigeeMU = m_trackToVertexTool->perigeeAtBeamspot(*muonTP); + const Trk::Perigee* perigeeMU = m_trackToVertexTool->perigeeAtBeamspot(*muonTP, bsData); diff --git a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py index afc6da8f7bc..8f5531c650e 100755 --- a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py @@ -11,6 +11,14 @@ logging.getLogger().info("Importing %s",__name__) log = logging.getLogger("TriggerMenu.muon.MuonDef") +# Conditions sequence for Athena MT +from AthenaCommon.AlgSequence import AthSequencer +condSeq = AthSequencer("AthCondSeq") +if not hasattr(condSeq, "BeamSpotCondAlg"): + from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg + condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" ) + + from TriggerMenu.menu.HltConfig import * from TrigInDetConf.TrigInDetSequence import TrigInDetSequence diff --git a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDefIdTest.py b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDefIdTest.py index 172ee62cdb8..2b250ac94a5 100644 --- a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDefIdTest.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDefIdTest.py @@ -14,6 +14,12 @@ from AthenaCommon.AthenaCommonFlags import athenaCommonFlags import re from TriggerMenu.menu.HltConfig import * +# Conditions sequence for Athena MT +from AthenaCommon.AlgSequence import AthSequencer +condSeq = AthSequencer("AthCondSeq") +if not hasattr(condSeq, "BeamSpotCondAlg"): + from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg + condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" ) #----------------------------------- class L2EFChain_mu(L2EFChainDef): -- GitLab From 7520fd4072d0a0681cf1a318d8901b255b386293 Mon Sep 17 00:00:00 2001 From: Mark Hodgkinson <m.hodgkinson@sheffield.ac.uk> Date: Thu, 22 Nov 2018 13:28:22 +0000 Subject: [PATCH 080/135] Put calibration hit moment tool retrieval under the control of a bool flag. Improve code comment that describes the ToolHandle for CaloCalibClusterMomentsMaker2. Former-commit-id: 5a4c69111b6fb756a701b5968c5af381f4f59e92 --- .../eflowRec/eflowRec/PFMomentCalculatorTool.h | 4 ++-- .../eflowRec/src/PFMomentCalculatorTool.cxx | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h b/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h index 2c9669c8c5a..c1a7974bb1d 100644 --- a/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h +++ b/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h @@ -37,14 +37,14 @@ class PFMomentCalculatorTool : public extends<AthAlgTool, IPFBaseTool> { /** Tool to calculate cluster moments */ ToolHandle<CaloClusterCollectionProcessor> m_clusterMomentsMaker{this,"CaloClusterMomentsMaker","CaloClusterMomentsMaker","Tool to calculate cluster moments"}; - /** Tool to calculate cluster moments */ + /** Tool to calculate calibration hit truth cluster moments */ ToolHandle<CaloClusterCollectionProcessor> m_clusterCalibHitMomentsMaker2{this,"CaloCalibClusterMomentsMaker2","CaloCalibClusterMomentsMaker2","Tool to calculate calibration hit cluster moments"}; /** Toggle whether we are in LC mode - false by default */ Gaudi::Property<bool> m_LCMode{this,"LCMode",false,"Toggle whether we are in LC mode - false by default"}; /** Toggle usage of calibration hit truth - false by default */ - Gaudi::Property<bool> m_useCalibHitTruth{this,"UseCalibHitTruth",false,"Toggle usage of calibration hit truth - false by default"}; + Gaudi::Property<bool> m_useCalibHitTruth{this,"UseCalibHitTruth",false,"Toggle usage of calibration hit truth - false by default"};\ }; diff --git a/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx b/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx index f1a570e1999..9858d14ccb9 100644 --- a/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx +++ b/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx @@ -24,11 +24,13 @@ StatusCode PFMomentCalculatorTool::initialize(){ return StatusCode::SUCCESS; } - /* Retrieve the cluster calib hit moments maker */ - if ( m_clusterCalibHitMomentsMaker2.retrieve().isFailure() ) { - ATH_MSG_WARNING("Cannot find CaloCalibClusterMomentsMaker2 Tool"); - return StatusCode::SUCCESS; - } + /* Retrieve the cluster calib hit moments maker */ + if (m_useCalibHitTruth){ + if ( m_clusterCalibHitMomentsMaker2.retrieve().isFailure() ) { + ATH_MSG_WARNING("Cannot find CaloCalibClusterMomentsMaker2 Tool"); + return StatusCode::SUCCESS; + } + } return StatusCode::SUCCESS; } -- GitLab From 62e6feb6c34f7231345d1389251d24f5eacdfcfc Mon Sep 17 00:00:00 2001 From: Frank Winklmeier <frank.winklmeier@cern.ch> Date: Thu, 22 Nov 2018 16:43:25 +0100 Subject: [PATCH 081/135] athena.py: Fix help message The addition of the `-h/--help` option to `athena_preload.sh` as part of atlas/athena!15868 broke the help message of athena.py. Removing this option again as this script is only supposed to be `source`'d anyway. Former-commit-id: f7cb494bbc52d799d0199084f1c08e906594db6a --- Control/AthenaCommon/share/athena_preload.sh | 34 +++++++------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/Control/AthenaCommon/share/athena_preload.sh b/Control/AthenaCommon/share/athena_preload.sh index b5f7edf8a21..32bb6f5a098 100755 --- a/Control/AthenaCommon/share/athena_preload.sh +++ b/Control/AthenaCommon/share/athena_preload.sh @@ -2,22 +2,18 @@ # # Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration # -usage() { - cat <<EOF -Script to set \$LD_PRELOAD, steered by the following environment variables: - - \$TCMALLOCDIR : tcmalloc directory (enables tcmalloc if set) - \$USETCMALLOC : use tcmalloc (instead of std malloc) - \$USETCMALLOCMINIMAL : use minimal version of tcmalloc - \$ATLASMKLLIBDIR_PRELOAD : location of Intel math library - \$USEIMF : use Intel math library - \$ATHENA_ADD_PRELOAD : preload user specific library - \$ATHENA_DROP_RELOAD : are we in drop/reload mode? - -This script is used internally in athena.py. Other applications may use it e.g.: - USETCMALLOC=1 source athena_preload.sh && mycommand -EOF -} +# Script to set $LD_PRELOAD, steered by the following environment variables: +# +# $TCMALLOCDIR : tcmalloc directory (enables tcmalloc if set) +# $USETCMALLOC : use tcmalloc (instead of std malloc) +# $USETCMALLOCMINIMAL : use minimal version of tcmalloc +# $ATLASMKLLIBDIR_PRELOAD : location of Intel math library +# $USEIMF : use Intel math library +# $ATHENA_ADD_PRELOAD : preload user specific library +# $ATHENA_DROP_RELOAD : are we in drop/reload mode? +# +# This script is used internally in athena.py. Other applications may use it e.g.: +# USETCMALLOC=1 source athena_preload.sh && mycommand # Helper to prepend to LD_LIBRARY ld_preload() @@ -25,12 +21,6 @@ ld_preload() export LD_PRELOAD="$1${LD_PRELOAD:+:$LD_PRELOAD}" # set or prepend } -# Print help message -if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then - usage - exit 1 -fi - # possibly, allow user to run with full tcmalloc by setting this variable export USETCMALLOCMINIMAL if [ -z "$USETCMALLOCMINIMAL" ]; then -- GitLab From aaee5aa393e05c32e15f1e38ff2dc2a19d088778 Mon Sep 17 00:00:00 2001 From: Frank Winklmeier <frank.winklmeier@cern.ch> Date: Fri, 16 Nov 2018 17:18:34 +0100 Subject: [PATCH 082/135] Add new athenaHLT.py script The previous athenaHLT.py from HLTTestApps is now replaced by a simple wrapper script around runHLTMPPy. Most options are the same as before, but some were removed, some renamed for consistency. Former-commit-id: e011aab9d98f11488de3a22fd2d359a936a4c6d2 --- .../TrigControl/TrigCommon/CMakeLists.txt | 12 + .../TrigControl/TrigCommon/bin/athenaHLT.py | 339 ++++++++++++++++++ .../TrigControl/TrigCommon/python/AthHLT.py | 57 +++ .../TrigCommon/python/TrigPyHelper.py | 10 +- .../TrigCommon/share/LeakTracer.py | 6 +- 5 files changed, 416 insertions(+), 8 deletions(-) create mode 100755 HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py create mode 100644 HLT/Trigger/TrigControl/TrigCommon/python/AthHLT.py diff --git a/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt b/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt index e1f77dcff66..4396893f04e 100644 --- a/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt +++ b/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt @@ -8,4 +8,16 @@ atlas_subdir( TrigCommon ) # Install files from the package: atlas_install_python_modules( python/*.py ) atlas_install_joboptions( share/*.py ) +atlas_install_scripts( bin/athenaHLT.py ) +# Aliases: +atlas_add_alias( athenaHLT "athenaHLT.py" ) + +# Check python syntax: +atlas_add_test( flake8 + SCRIPT flake8 --select=F,E7,E9,W6 --ignore=E701 ${CMAKE_CURRENT_SOURCE_DIR}/python ${CMAKE_CURRENT_SOURCE_DIR}/bin + POST_EXEC_SCRIPT nopost.sh ) + +# Tests: +atlas_add_test( AthHLT + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/AthHLT.py ) diff --git a/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py b/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py new file mode 100755 index 00000000000..f9b355415ef --- /dev/null +++ b/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py @@ -0,0 +1,339 @@ +#!/bin/sh +# +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +# +# This is a script that is born as shell to setup the preloading and then +# resurrected as python script for the actual athenaHLT.py application. +# +"""date" + +# defaults +export USETCMALLOC=1 +export USEIMF=1 + +# parse command line arguments +for a in ${@} +do + case "$a" in + --leak-check*) USETCMALLOC=0;; + --stdcmalloc) USETCMALLOC=0;; + --tcmalloc) USETCMALLOC=1;; + --stdcmath) USEIMF=0;; + --imf) USEIMF=1;; + --preloadlib*) export ATHENA_ADD_PRELOAD=${a#*=};; + --no-ers-signal-handlers) export TDAQ_ERS_NO_SIGNAL_HANDLERS=1;; + esac +done + +# Do the actual preloading via LD_PRELOAD +source `which athena_preload.sh ` + +# Now resurrect ourselves as python script +python_path=`which python` +"exec" "$python_path" "-tt" "$0" "$@"; + +""" + +import sys +import os +import argparse +import ast +import collections +from datetime import datetime as dt + +from TrigCommon import AthHLT +from AthenaCommon.Logging import logging +log = logging.getLogger('athenaHLT') + +# +# The following arg_* methods are used as custom types in argparse +# +def arg_sor_time(s): + """Convert possible SOR time arguments to an OWLTime compatible string""" + fmt = '%d/%m/%y %H:%M:%S.%f' + if s=='now': return dt.now().strftime(fmt) + elif s.isdigit(): return dt.fromtimestamp(float(s)/1e9).strftime(fmt) + else: return s + +def arg_detector_mask(s): + """Convert detector mask to format expected by eformat""" + dmask = hex(int(s,16)) # Normalize input to hex-string + dmask = dmask.lower().replace('0x', '').replace('l', '') # remove markers + return '0' * (32 - len(dmask)) + dmask # (pad with 0s) + +def arg_log_level(s): + """Argument handler for log levels""" + lvls = s.split(',') + if len(lvls)==1: lvls.append('ERROR') + return lvls + +def arg_eval(s): + """Argument handler for pyton types (list, dict, ...)""" + return ast.literal_eval(s) + + +def update_pcommands(args, cdict): + """Apply modifications to pre/postcommands""" + + cdict['trigger']['precommand'].append('_run_number=%d' % args.run_number) + + if not args.oh_monitoring: + cdict['trigger']['precommand'].append("include('TrigServices/OfflineTHistSvc.py')") + + if args.perfmon: + cdict['trigger']['precommand'].insert(0, "include('TrigCommon/PerfMon.py')") + + if args.leak_check: + doLeakCheck = [] if args.leak_check=='all' else [args.leak_check] + + #early import is needed for proper offloading later + import Hephaestus.MemoryTracker as memtrack # noqa + cdict['trigger']['precommand'].insert(0, "memChkMode='leak-check';doLeakCheck=%s;" + "include('TrigCommon/LeakTracer.py')" % doLeakCheck) + +def update_run_params(args): + """Update run parameters from file/COOL""" + + if args.run_number is None: + from eformat import EventStorage + args.run_number = EventStorage.pickDataReader(args.file[0]).runNumber() + + if args.sor_time is None: + args.sort_time = arg_sor_time(str(AthHLT.get_sor_params(args.run_number)['SORTime'])) + + if args.detector_mask is None: + dmask = AthHLT.get_sor_params(args.run_number)['DetectorMask'] + if args.run_number < AthHLT.CondDB._run2: + dmask = hex(dmask) + args.detector_mask = arg_detector_mask(dmask) + + +def update_nested_dict(d, u): + """Update nested dictionary (https://stackoverflow.com/q/3232943)""" + for k, v in u.iteritems(): + if isinstance(v, collections.Mapping): + d[k] = update_nested_dict(d.get(k, {}), v) + else: + d[k] = v + return d + + +def HLTMPPy_cfgdict(args): + """Create the configuration dictionary as expected by HLTMPPy""" + + cdict = {} + cdict['HLTMPPU'] = { + 'application_name' : 'athenaHLT', + 'extra_params' : None, + 'interactive' : args.interactive, + 'log_root' : os.getcwd(), + 'module' : 'HLTMPPU', + 'num_forks' : args.nprocs, + 'num_threads' : args.threads, + 'num_slots' : args.threads, + 'partition_name' : args.partition, + 'hard_timeout' : args.timeout, + 'soft_timeout_fraction' : 0.9 + } + + cdict['datasource'] = { + 'module': 'dffileds', + 'dslibrary': 'DFFileBackend', + 'compressionFormat': 'ZLIB', + 'compressionLevel': 2, + 'file': args.file, + 'loopFiles': False, + 'numEvents': args.number_of_events, + 'outFile': args.save_output, + 'preload': False, + 'extraL1Robs': args.extra_l1r_robs, + 'skipEvents': args.skip_events + } + + cdict['global'] = { + 'date': args.sor_time, + 'detector_mask': args.detector_mask, + 'log_root': cdict['HLTMPPU']['log_root'], + 'options_file': None, + 'partition_name': args.partition, + 'run_number': args.run_number, + 'save_options': None, + 'solenoid_current': 7730, + 'toroid_current': 20400, + 'with_infrastructure': args.oh_monitoring + } + + cdict['monitoring'] = { + 'module': 'monsvcis', + 'library': 'MonSvcInfoService', + 'ISInterval': 10, + 'ISRegex': '.*', + 'ISServer': '${TDAQ_IS_SERVER=DF}', + 'ISSlots': 1, + 'OHInterval': args.oh_interval, + 'OHInclude': '.*', + 'OHExclude': '', + 'OHServerName': 'HLT-Histogramming', + 'OHSlots': 5 + } + + cdict['trigger'] = { + 'library': ['TrigServices', 'TrigPSC', 'TrigConfigSvc'], + 'joType' : args.joboptionsvc_type + } + if not args.use_database: # job options + cdict['trigger'].update({ + 'module': 'joboptions', + 'pythonSetupFile' : args.python_setup, + 'joFile': args.jobOptions, + 'SMK': None, + 'l1PSK': None, + 'l1BG': 0, + 'l1MenuConfig': 'DB', + 'precommand' : args.precommand, + 'postcommand' : args.postcommand, + 'logLevels' : args.log_level + }) + else: + cdict['trigger'].update({ + 'module': 'DBPython', + 'pythonSetupFile' : args.python_setup, + 'db_alias': args.db_server, + 'SMK': args.smk, + 'l1PSK': args.l1pks, + 'HLTPSK': args.hltpks, + 'l1BG': 0, + 'l1MenuConfig': 'DB', + 'precommand' : args.precommand, + 'postcommand' : args.postcommand, + 'logLevels' : args.log_level + }) + if args.db_type == "Coral": # DBPython (with CORAL) + cdict['trigger'].update({ + 'use_coral': True, + 'coral_server': args.db_server + }) + else: # DBPython (without CORAL) + cdict['trigger'].update({ + 'use_coral': False, + 'db_alias': args.db_server + }) + + return cdict + + +class MyHelp(argparse.Action): + """Custom help to hide/show expert groups""" + def __call__(self, parser, namespace, values, option_string=None): + + for g in parser.expert_groups: + for a in g._group_actions: + if values!='all': + a.help = argparse.SUPPRESS + + parser.print_help() + if values!='all': + print('\nUse --help=all to show all (expert) options') + sys.exit(0) + + +def main(): + parser = argparse.ArgumentParser(prog='athenaHLT.py', formatter_class= + lambda prog : argparse.ArgumentDefaultsHelpFormatter(prog, max_help_position=32, width=100), + usage = '%(prog)s [OPTION]... -f FILE jobOptions', + add_help=False) + parser.expert_groups = [] # Keep list of expert option groups + + g = parser.add_argument_group('Options') + g.add_argument('jobOptions', help='job options file') + g.add_argument('--file', '-f', action='append', required=True, help='input RAW file') + g.add_argument('--save-output', '-o', metavar='FILE', help='output file name') + g.add_argument('--number-of-events', '-n', metavar='N', default=-1, help='processes N events (<=0 means all)') + g.add_argument('--skip-events', '-k', metavar='N', default=0, help='skip N first events') + g.add_argument('--threads', metavar='N', type=int, default=1, help='number of threads') + g.add_argument('--nprocs', metavar='N', type=int, default=1, help='number of children to fork') + g.add_argument('--log-level', '-l', metavar='LVL', type=arg_log_level, default='INFO,ERROR', help='OutputLevel of athena,POOL') + g.add_argument('--precommand', '-c', metavar='CMD', action='append', default=[], + help='Python commands executed before job options or database configuration') + g.add_argument('--postcommand', '-C', metavar='CMD', action='append', default=[], + help='Python commands executed after job options or database configuration') + g.add_argument('--interactive', '-i', action='store_true', help='interactive mode') + g.add_argument('--help', '-h', nargs='?', choices=['all'], action=MyHelp, help='show help') + + g = parser.add_argument_group('Performance and debugging') + g.add_argument('--perfmon', action='store_true', help='enable PerfMon') + g.add_argument('--leak-check', metavar='<stage>', nargs='?', const='execute', + choices=['all','initialize','start','beginrun','execute','finalize','endrun','stop'], + help='Perform leak checking during <stage>') + g.add_argument('--tcmalloc', action='store_true', default=True, help='use tcmalloc') + g.add_argument('--stdcmalloc', action='store_true', help='use stdcmalloc') + g.add_argument('--stdcmath', action='store_true', help='use stdcmath library') + g.add_argument('--imf', action='store_true', help='use Intel math library') + g.add_argument('--show-includes', '-s', action='store_true', help='show printout of included files') + g.add_argument('--timeout', metavar='SEC', default=3600*10, help='timeout in seconds') + + g = parser.add_argument_group('Database') + g.add_argument('--use-database', '-b', action='store_true', help='configure from trigger database') + g.add_argument('--db-type', default='Coral', choices=['MySQL','Oracle','SQLite','Coral'], help='database type') + g.add_argument('--db-server', metavar='DB', default='TRIGGERDB', help='DB server name') + g.add_argument('--smk', type=int, default=0, help='Super Master Key') + g.add_argument('--l1psk', type=int, default=0, help='L1 prescale key') + g.add_argument('--hltpsk', type=int, default=0, help='HLT prescale key') + + g = parser.add_argument_group('Online Histogramming') + g.add_argument('--oh-monitoring', '-M', action='store_true', + help='enable OH monitoring') + g.add_argument('--oh-interval', metavar='SEC', type=int, default=5, + help='seconds between histogram publications.') + + g = parser.add_argument_group('Conditions') + g.add_argument('--run-number', '-R', metavar='RUN', type=int, + help='run number (if None, read from first event)') + g.add_argument('--sor-time', type=arg_sor_time, + help='The Start Of Run time. Three formats are accepted: ' + '1) the string "now", for current time; ' + '2) the number of nanoseconds since epoch (e.g. 1386355338658000000 or int(time.time() * 1e9)); ' + '3) human-readable "20/11/18 17:40:42.3043". If not specified the sor-time is read from COOL') + g.add_argument('--detector-mask', metavar='MASK', type=arg_detector_mask, + help='detector mask (if None, read from COOL)') + + # Expert options + g = parser.add_argument_group('Expert') + parser.expert_groups.append(g) + g.add_argument('--joboptionsvc-type', metavar='TYPE', default='JobOptionsSvc', help='JobOptionsSvc type') + g.add_argument('--msgsvc-type', metavar='TYPE', default='TrigMessageSvc', help='MessageSvc type') + g.add_argument('--python-setup', default='TrigPSC/TrigPSCPythonSetup.py', help='Python bootstrap/setup file') + g.add_argument('--partition', '-p', metavar='NAME', default='athenaHLT', help='partition name') + g.add_argument('--no-ers-signal-handlers', action='store_true', help='disable ERS signal handlers') + g.add_argument('--preloadlib', metavar='LIB', help='preload an arbitrary library') + g.add_argument('--extra-l1r-robs', metavar='ROBS', type=arg_eval, default=[], + help='List of additional ROB IDs that are considered part of the L1 result and passed to the HLT') + g.add_argument('--cfgdict', metavar='DICT', type=arg_eval, default={}, + help='HLTMPPy config dictionary with additional options, e.g.: ' + '--cfgdict \'{"global": {"log_root" : "/tmp"}}\'') + + args = parser.parse_args() + + # set default OutputLevels and file inclusion + import AthenaCommon.Logging + AthenaCommon.Logging.log.setLevel(getattr(logging, args.log_level[0])) + from AthenaCommon.Include import include + include.setShowIncludes( args.show_includes ) + + # update parameters based on SOR + update_run_params(args) + + # configure HLTMPPU and run + cdict = HLTMPPy_cfgdict(args) + + # Apply any expert-level overrides + update_nested_dict(cdict, args.cfgdict) + + # Modify pre/postcommands if necessary + update_pcommands(args, cdict) + + from HLTMPPy.runner import runHLTMPPy + runHLTMPPy(cdict) + +if "__main__" in __name__: + main() diff --git a/HLT/Trigger/TrigControl/TrigCommon/python/AthHLT.py b/HLT/Trigger/TrigControl/TrigCommon/python/AthHLT.py new file mode 100644 index 00000000000..4a4050670f6 --- /dev/null +++ b/HLT/Trigger/TrigControl/TrigCommon/python/AthHLT.py @@ -0,0 +1,57 @@ +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +# +# Utilities used in athenaHLT.py +# +from PyUtils.Decorators import memoize +from AthenaCommon.Logging import logging +log = logging.getLogger('athenaHLT') + +class CondDB: + _run2 = 236108 + def __init__(self, run): + self.run = run + def db_instance(self): + if self.run>=self._run2: + return 'CONDBR2' + else: + return 'COMP200' + def sor_folder(self): + if self.run>=self._run2: + return '/TDAQ/RunCtrl/SOR' + else: + return '/TDAQ/RunCtrl/SOR_Params' + +@memoize +def get_sor_params(run_number): + + log.info('Reading SOR record for run %s from COOL' % run_number) + + from CoolConvUtilities import AtlCoolLib + cdb = CondDB(run_number) + dbcon = AtlCoolLib.readOpen('COOLONL_TDAQ/%s' % cdb.db_instance()) + folder = dbcon.getFolder(cdb.sor_folder()) + + # need to keep sor variable while using payload (cannot do the following in + # one single line nor overwrite sor). Otherwise: 1) GC comes into play; + # 2) the object is deleted; 3) since it's a shared_ptr, the internal + # cool::IObject also gets deleted; 4) payload is not valid any longer + try: + sor = folder.findObject(run_number << 32, 0) + except Exception: + return None # This can happen for unknown run numbers + + payload = sor.payload() + return {k: payload[k] for k in payload} + + +# +# Testing (used as ctest) +# +if __name__=='__main__': + d = get_sor_params(327265) # Run-2 + print(d) + assert(d['DetectorMask']=='0000000000000000c10069fffffffff7') + + d = get_sor_params(216416) # Run-1 + print(d) + assert(d['DetectorMask']==281474976710647) diff --git a/HLT/Trigger/TrigControl/TrigCommon/python/TrigPyHelper.py b/HLT/Trigger/TrigControl/TrigCommon/python/TrigPyHelper.py index 9cdb10c6332..c489e36b1a9 100644 --- a/HLT/Trigger/TrigControl/TrigCommon/python/TrigPyHelper.py +++ b/HLT/Trigger/TrigControl/TrigCommon/python/TrigPyHelper.py @@ -1,13 +1,13 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration ###################################################################### ## @file TrigPyHelper.py ## @brief Helpers for C++ Python bindings ## @author Frank Winklmeier -## $Id: TrigPyHelper.py,v 1.1 2008-09-02 16:37:18 fwinkl Exp $ ###################################################################### -from GaudiPython import * +from GaudiPython import * # noqa +from GaudiPython import gbl, InterfaceCast from GaudiPython.Bindings import Helper, iProperty from AthenaCommon.Logging import logging @@ -32,7 +32,7 @@ class TrigApp(object): jobOptSvc = InterfaceCast(gbl.IJobOptionsSvc)(Helper.service(gbl.Gaudi.svcLocator(), "JobOptionsSvc")) if not jobOptSvc: - log.error("Cannot find JobOptionsSvc") + self.log.error("Cannot find JobOptionsSvc") return import re @@ -43,7 +43,7 @@ class TrigApp(object): for client in jobOptSvc.getClients(): for prop in jobOptSvc.getProperties(client): if reClient.match(client) and reProp.match(prop.name()): - self.log.info("Changing %s.%s from '%s' to '%s'" % \ + self.log.info("Changing %s.%s from '%s' to '%s'" % (client, prop.name(), prop.value(), newValue)) iprop = iProperty(client) setattr(iprop, prop.name(), newValue) diff --git a/HLT/Trigger/TrigControl/TrigCommon/share/LeakTracer.py b/HLT/Trigger/TrigControl/TrigCommon/share/LeakTracer.py index 324c4e6ec32..33e6ac52aff 100644 --- a/HLT/Trigger/TrigControl/TrigCommon/share/LeakTracer.py +++ b/HLT/Trigger/TrigControl/TrigCommon/share/LeakTracer.py @@ -1,13 +1,13 @@ # Job option fragment to enable the leak tracer -# doLeakCheck is set by athenaMT/PT +# doLeakCheck/memChkMode are set by athenaHLT # from Control/AthenaCommon/share/Preparation.py -if doLeakCheck != False: +if doLeakCheck is not False: from AthenaCommon.AppMgr import theApp, ServiceMgr from Hephaestus.Auditor import HephaestusAuditor theApp.AuditAlgorithms = True - ServiceMgr.AuditorSvc += HephaestusAuditor( mode = memChkMode ,auditOn = doLeakCheck ) + ServiceMgr.AuditorSvc += HephaestusAuditor( mode = memChkMode, auditOn = doLeakCheck ) del doLeakCheck del memChkMode -- GitLab From a6d50474fb416ee28d5e1bc0b142679908f26700 Mon Sep 17 00:00:00 2001 From: Frank Winklmeier <frank.winklmeier@cern.ch> Date: Wed, 21 Nov 2018 17:35:09 +0100 Subject: [PATCH 083/135] TrigPSC: OutputLevel and tracing updates for athenaHLT - The python OutputLevel is now set in athenaHLT.py - The showInclude and tracePattern OKS attributes have been removed - Remove the global `OutputLevel` and `HLTOutputLevel` variables Former-commit-id: 545e368a4392aca056090f4b4c673aeb439c294d --- .../TrigPSC/share/TrigPSCPythonDbSetup.py | 21 +---- .../TrigPSC/share/TrigPSCPythonSetup.py | 79 +++++-------------- .../TrigControl/TrigPSC/src/Config.cxx | 6 +- HLT/Trigger/TrigControl/TrigPSC/src/Psc.cxx | 4 +- 4 files changed, 23 insertions(+), 87 deletions(-) diff --git a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py index c3d8a6aac4d..e037fbfa326 100644 --- a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py +++ b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py @@ -32,22 +32,7 @@ from AthenaCommon.Constants import * import AthenaCommon.ExitCodes as ExitCodes from TrigPSC import PscConfig -logLevel=string.upper(PscConfig.optmap['LOGLEVEL']) -logLevel=string.split(logLevel,",") -if len(logLevel)==0: - logLevel=["INFO","ERROR"] - -if len(logLevel)==1: - logLevel.append("ERROR") - -## test and set log level -try: - exec( 'log.setLevel( logging.%s )' % logLevel[0] ) -except: - sys.exit( ExitCodes.OPTIONS_UNKNOWN ) - -if not os.environ.has_key( "POOL_OUTMSG_LEVEL" ): - exec 'os.environ[ "POOL_OUTMSG_LEVEL" ] = str(%s)' % logLevel[1] +logLevel=PscConfig.optmap['LOGLEVEL'].split(',')[0] ## Minimal Python bindings from GaudiPython import * @@ -55,8 +40,8 @@ from GaudiPython.Bindings import iProperty from TrigCommon.TrigPyHelper import trigApp ## Set OutputLevel in JobOptionsSvc if "-l" option was used in athenaMT/PT -if logLevel[0]!="INFO": - outputLevel = int(locals()[logLevel[0]]) +if logLevel!="INFO": + outputLevel = int(locals()[logLevel]) outputLevelProp = gbl.IntegerProperty("OutputLevel", outputLevel) ## Reset message levels diff --git a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py index 3a1a962df3e..4e049e14a61 100755 --- a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py +++ b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py @@ -39,62 +39,14 @@ else: del TriggerFlags - ### logging and messages ----------------------------------------------------- - from AthenaCommon.Logging import * - from AthenaCommon.Constants import * - import AthenaCommon.ExitCodes as ExitCodes - - from TrigPSC import PscConfig - logLevel=string.upper(PscConfig.optmap['LOGLEVEL']) - logLevel=string.split(logLevel,",") - if len(logLevel)==0: - logLevel=["INFO","ERROR"] - - if len(logLevel)==1: - logLevel.append("ERROR") - - ### FOR DEVELOPMENT: force verbose log level - logLevel=["VERBOSE","DEBUG","INFO","ERROR"] - - ## test and set log level - try: - exec( 'log.setLevel( logging.%s )' % logLevel[0] ) - except: - sys.exit( ExitCodes.OPTIONS_UNKNOWN ) - - ### file inclusion and tracing ----------------------------------------------- - from AthenaCommon.Include import Include, IncludeError, include - showincludes = eval(PscConfig.optmap['SHOWINCLUDE']) - include.setShowIncludes( showincludes ) - if showincludes: - import AthenaCommon.Include as AthCIncMod - AthCIncMod.marker = ' -#-' # distinguish bootstrap from other jo-code - - if PscConfig.optmap['TRACEPATTERN']: - import AthenaCommon.Include - AthenaCommon.Include.tracePattern = PscConfig.optmap['TRACEPATTERN'] - - # - ### gaudi -------------------------------------------------------------------- - try: - from GaudiPython import * - except ImportError: - from gaudimodule import * - + ### Athena configuration ----------------------------------------------------- + from GaudiPython import * from AthenaCommon.Configurable import * from AthenaCommon.OldStyleConfig import * - - ### set output level -------------------------------------------------------- - exec 'OUTPUTLEVEL = %s' % logLevel[0] - if not os.environ.has_key( "POOL_OUTMSG_LEVEL" ): - exec 'os.environ[ "POOL_OUTMSG_LEVEL" ] = str(%s)' % logLevel[1] - del logLevel - - OutputLevel=OUTPUTLEVEL - HLTOutputLevel=OUTPUTLEVEL - - ### Athena configuration ----------------------------------------------------- from AthenaCommon import CfgMgr + from AthenaCommon.Logging import * + from AthenaCommon.Constants import * + import AthenaCommon.ExitCodes as ExitCodes ## create the application manager and start in a non-initialised state from AthenaCommon.AppMgr import theApp @@ -110,6 +62,18 @@ else: ServiceMgr += getConfigurable(theApp.JobOptionsSvcType)("JobOptionsSvc") ServiceMgr += getConfigurable(theApp.MessageSvcType )("MessageSvc" ) + ## set OutputLevel + logLevel = PscConfig.optmap['LOGLEVEL'].upper().split(',') + + if len(logLevel) > 0: + from AthenaCommon import Constants + theApp.setOutputLevel(getattr(Constants, logLevel[0])) + + if 'POOL_OUTMSG_LEVEL' not in os.environ and len(logLevel)>1: + os.environ['POOL_OUTMSG_LEVEL'] = logLevel[1] + + del logLevel + ## set the default values try: include( pscBootstrapFile ) @@ -122,7 +86,6 @@ else: ## properties of the application manager theApp.StatusCodeCheck = False # enabled via TriggerFlags.Online.doValidation (see below) - theApp.setOutputLevel(OUTPUTLEVEL) # Configure the CoreDumpSvc if not hasattr(ServiceMgr,"CoreDumpSvc"): @@ -141,12 +104,6 @@ else: SetMaxLimits() del SetMaxLimits - ## reset include markers - if showincludes: - AthCIncMod.marker = AthCIncMod.__marker__ # reset - del AthCIncMod - del showincludes - ### run optional command before user job options script ---------------------- if PscConfig.optmap['PRECOMMAND']: print "\n" @@ -201,7 +158,7 @@ else: short_tb = [] for frame_info in tb: - if not 'AthenaCommon' in frame_info[0]: + if 'AthenaCommon' not in frame_info[0]: short_tb.append( frame_info ) print 'Shortened traceback (most recent user call last):' diff --git a/HLT/Trigger/TrigControl/TrigPSC/src/Config.cxx b/HLT/Trigger/TrigControl/TrigPSC/src/Config.cxx index 88729ef3683..1873a4d1adc 100644 --- a/HLT/Trigger/TrigControl/TrigPSC/src/Config.cxx +++ b/HLT/Trigger/TrigControl/TrigPSC/src/Config.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** @@ -248,10 +248,8 @@ bool psc::Config::didUserSetLogLevel() const //////////////////////////////////////////////////////////////////////////////// void psc::Config::setup_optmap_defaults() { - optmap["SHOWINCLUDE"] = "False"; optmap["EVENTSELECTOR"] = "NONE"; optmap["LOGLEVEL"] = "INFO"; - optmap["TRACEPATTERN"] = ""; optmap["PRECOMMAND"] = ""; optmap["POSTCOMMAND"] = ""; optmap["MUONCALBUFFERNAME"] = ""; @@ -263,8 +261,6 @@ void psc::Config::fillopt_jo(const ptree& hlt) { optmap["JOBOPTIONSPATH"] = hlt.get_child("jobOptionsPath").data(); optmap["EVENTSELECTOR"] = hlt.get_child("evtSel").data(); - optmap["SHOWINCLUDE"] = hlt.get_child("showInclude").data(); - optmap["TRACEPATTERN"] = hlt.get_child("tracePattern").data(); optmap["PYTHONSETUPFILE"] = hlt.get_child("pythonSetupFile").data(); optmap["JOBOPTIONSTYPE"] = "NONE"; optmap["LOGLEVEL"] = plevelToStr(hlt.get_child_optional("logLevels"), diff --git a/HLT/Trigger/TrigControl/TrigPSC/src/Psc.cxx b/HLT/Trigger/TrigControl/TrigPSC/src/Psc.cxx index 0469d616712..d7ab8a89b90 100644 --- a/HLT/Trigger/TrigControl/TrigPSC/src/Psc.cxx +++ b/HLT/Trigger/TrigControl/TrigPSC/src/Psc.cxx @@ -269,9 +269,7 @@ bool psc::Psc::configure(const ptree& config) pyCmds.push_back("from AthenaCommon.Include import include"); // have C++ bool representation be recognized in python: pyCmds.push_back("true, false = True, False"); - pyCmds.push_back(std::string("include.setShowIncludes(") + - m_config->getOption("SHOWINCLUDE") + std::string(")")); - if ( !psc::Utils::execPython(pyCmds) ) { + if ( !psc::Utils::execPython(pyCmds) ) { ERS_PSC_ERROR("Athena 'include' setup failed."); return false; } -- GitLab From f0d5372445a73983f71e67dbca77dd1fa7bc00fc Mon Sep 17 00:00:00 2001 From: Frank Winklmeier <frank.winklmeier@cern.ch> Date: Wed, 21 Nov 2018 17:40:58 +0100 Subject: [PATCH 084/135] TrigServices: OutputLevel cleanup - Remove hard-coded OutputLevels - Do not rely on global OutputLevel/HLTOutputLevel variables Former-commit-id: 6fd20258cbd658fea831f71ec344cca687f2a253 --- .../TrigControl/TrigServices/share/MessageSvc.py | 8 ++------ .../TrigServices/share/TrigServicesEventLoopMgr.py | 10 +--------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/HLT/Trigger/TrigControl/TrigServices/share/MessageSvc.py b/HLT/Trigger/TrigControl/TrigServices/share/MessageSvc.py index cde14a414ff..dd17ca5e0bb 100644 --- a/HLT/Trigger/TrigControl/TrigServices/share/MessageSvc.py +++ b/HLT/Trigger/TrigControl/TrigServices/share/MessageSvc.py @@ -10,8 +10,7 @@ from AthenaCommon.Constants import * # make the message service available svcMgr.MessageSvc = theApp.service( "MessageSvc" ) # already instantiated MessageSvc = svcMgr.MessageSvc - -MessageSvc.OutputLevel = OutputLevel +MessageSvc.OutputLevel = theApp.OutputLevel # Use color for different message levels # -------------------------------------- @@ -38,10 +37,7 @@ MessageSvc.errorLimit = 0 MessageSvc.fatalLimit = 0 # set message limit to unlimited when general DEBUG is requested -if (("OutputLevel" in dir()) and (OutputLevel<=DEBUG)) : - MessageSvc.defaultLimit = 0 - MessageSvc.enableSuppression = False -if (("HLTOutputLevel" in dir()) and (HLTOutputLevel<=DEBUG)) : +if MessageSvc.OutputLevel<=DEBUG : MessageSvc.defaultLimit = 0 MessageSvc.enableSuppression = False diff --git a/HLT/Trigger/TrigControl/TrigServices/share/TrigServicesEventLoopMgr.py b/HLT/Trigger/TrigControl/TrigServices/share/TrigServicesEventLoopMgr.py index 4ee0949303c..c4f65529f9e 100644 --- a/HLT/Trigger/TrigControl/TrigServices/share/TrigServicesEventLoopMgr.py +++ b/HLT/Trigger/TrigControl/TrigServices/share/TrigServicesEventLoopMgr.py @@ -31,7 +31,7 @@ svcMgr += SG__HiveMgrSvc("EventDataSvc") #svcMgr.EventDataSvc.OutputLevel = VERBOSE from GaudiHive.GaudiHiveConf import AlgResourcePool -arp=AlgResourcePool( OutputLevel = INFO ) +arp=AlgResourcePool() arp.TopAlg=["AthMasterSeq"] #this should enable control flow svcMgr += arp @@ -39,16 +39,12 @@ from AthenaCommon.AlgScheduler import AlgScheduler #AlgScheduler.setThreadPoolSize(nThreads) AlgScheduler.ShowDataDependencies(True) AlgScheduler.ShowControlFlow(True) -AlgScheduler.OutputLevel=VERBOSE from StoreGate.StoreGateConf import StoreGateSvc svcMgr += StoreGateSvc() -svcMgr.StoreGateSvc.OutputLevel = VERBOSE -svcMgr.StoreGateSvc.Dump = True from StoreGate.StoreGateConf import SGImplSvc svcMgr += SGImplSvc("SGImplSvc") -svcMgr.SGImplSvc.OutputLevel = VERBOSE # ThreadPoolService thread local initialization from GaudiHive.GaudiHiveConf import ThreadPoolSvc @@ -72,10 +68,6 @@ theApp.AuditAlgorithms=True from SGComps.SGCompsConf import SGCommitAuditor theAuditorSvc += SGCommitAuditor() -# for easier browsing of verbose logs -ClassIDSvc = Service("ClassIDSvc") -ClassIDSvc.OutputLevel = DEBUG - # ============================================================================== # Event selector and input service # ============================================================================== -- GitLab From 651d79580afc1607ce746043d49414f70e75352f Mon Sep 17 00:00:00 2001 From: Frank Winklmeier <frank.winklmeier@cern.ch> Date: Thu, 22 Nov 2018 15:45:10 +0100 Subject: [PATCH 085/135] TrigCommon: add unit test for athenaHLT command line usage Former-commit-id: f7a0e9507b0b6f212f65074a7da0125a6add1558 --- .../TrigControl/TrigCommon/CMakeLists.txt | 11 +- .../TrigControl/TrigCommon/bin/athenaHLT.py | 26 ++- .../TrigCommon/share/athenaHLT_jo_allopts.ref | 166 ++++++++++++++++++ .../TrigCommon/share/athenaHLT_jo_noopts.ref | 161 +++++++++++++++++ .../TrigCommon/share/test_athenaHLT.sh | 25 +++ 5 files changed, 379 insertions(+), 10 deletions(-) create mode 100644 HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_allopts.ref create mode 100644 HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_noopts.ref create mode 100755 HLT/Trigger/TrigControl/TrigCommon/share/test_athenaHLT.sh diff --git a/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt b/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt index 4396893f04e..e1f85d545ba 100644 --- a/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt +++ b/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt @@ -19,5 +19,12 @@ atlas_add_test( flake8 POST_EXEC_SCRIPT nopost.sh ) # Tests: -atlas_add_test( AthHLT - SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/AthHLT.py ) +atlas_add_test( test_AthHLT + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/AthHLT.py + POST_EXEC_SCRIPT nopost.sh ) + +atlas_add_test( athenaHLT_jo_noopts + SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/test_athenaHLT.sh dummy.py) + +atlas_add_test( athenaHLT_jo_allopts + SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/test_athenaHLT.sh --number-of-events 3 --skip-events 7 -l ERROR,FATAL -c 'x=1' -c 'y=2' -C 'x=2' -o out.data --threads 2 --nprocs 4 --timeout 777 --python-setup mysetup.py --partition mypart dummy.py) diff --git a/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py b/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py index f9b355415ef..4a9ad45ee08 100755 --- a/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py +++ b/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py @@ -45,9 +45,9 @@ from TrigCommon import AthHLT from AthenaCommon.Logging import logging log = logging.getLogger('athenaHLT') -# -# The following arg_* methods are used as custom types in argparse -# +## +## The following arg_* methods are used as custom types in argparse +## def arg_sor_time(s): """Convert possible SOR time arguments to an OWLTime compatible string""" fmt = '%d/%m/%y %H:%M:%S.%f' @@ -119,7 +119,10 @@ def update_nested_dict(d, u): def HLTMPPy_cfgdict(args): - """Create the configuration dictionary as expected by HLTMPPy""" + """ + Create the configuration dictionary as expected by HLTMPPy as defined in + https://gitlab.cern.ch/atlas-tdaq-software/HLTMPPU/blob/master/python/HLTMPPy/runner.py + """ cdict = {} cdict['HLTMPPU'] = { @@ -178,7 +181,7 @@ def HLTMPPy_cfgdict(args): } cdict['trigger'] = { - 'library': ['TrigServices', 'TrigPSC', 'TrigConfigSvc'], + 'library': ['TrigServices', 'TrigPSC'], 'joType' : args.joboptionsvc_type } if not args.use_database: # job options @@ -244,6 +247,7 @@ def main(): add_help=False) parser.expert_groups = [] # Keep list of expert option groups + ## Global options g = parser.add_argument_group('Options') g.add_argument('jobOptions', help='job options file') g.add_argument('--file', '-f', action='append', required=True, help='input RAW file') @@ -260,6 +264,7 @@ def main(): g.add_argument('--interactive', '-i', action='store_true', help='interactive mode') g.add_argument('--help', '-h', nargs='?', choices=['all'], action=MyHelp, help='show help') + ## Performance and debugging g = parser.add_argument_group('Performance and debugging') g.add_argument('--perfmon', action='store_true', help='enable PerfMon') g.add_argument('--leak-check', metavar='<stage>', nargs='?', const='execute', @@ -272,6 +277,7 @@ def main(): g.add_argument('--show-includes', '-s', action='store_true', help='show printout of included files') g.add_argument('--timeout', metavar='SEC', default=3600*10, help='timeout in seconds') + ## Database g = parser.add_argument_group('Database') g.add_argument('--use-database', '-b', action='store_true', help='configure from trigger database') g.add_argument('--db-type', default='Coral', choices=['MySQL','Oracle','SQLite','Coral'], help='database type') @@ -280,12 +286,14 @@ def main(): g.add_argument('--l1psk', type=int, default=0, help='L1 prescale key') g.add_argument('--hltpsk', type=int, default=0, help='HLT prescale key') + ## Online histogramming g = parser.add_argument_group('Online Histogramming') g.add_argument('--oh-monitoring', '-M', action='store_true', help='enable OH monitoring') g.add_argument('--oh-interval', metavar='SEC', type=int, default=5, help='seconds between histogram publications.') + ## Conditions g = parser.add_argument_group('Conditions') g.add_argument('--run-number', '-R', metavar='RUN', type=int, help='run number (if None, read from first event)') @@ -297,7 +305,7 @@ def main(): g.add_argument('--detector-mask', metavar='MASK', type=arg_detector_mask, help='detector mask (if None, read from COOL)') - # Expert options + ## Expert options g = parser.add_argument_group('Expert') parser.expert_groups.append(g) g.add_argument('--joboptionsvc-type', metavar='TYPE', default='JobOptionsSvc', help='JobOptionsSvc type') @@ -323,7 +331,7 @@ def main(): # update parameters based on SOR update_run_params(args) - # configure HLTMPPU and run + # get HLTMPPY config dictionary cdict = HLTMPPy_cfgdict(args) # Apply any expert-level overrides @@ -332,8 +340,10 @@ def main(): # Modify pre/postcommands if necessary update_pcommands(args, cdict) + # Run HLTMPPU from HLTMPPy.runner import runHLTMPPy runHLTMPPy(cdict) + if "__main__" in __name__: - main() + sys.exit(main()) diff --git a/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_allopts.ref b/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_allopts.ref new file mode 100644 index 00000000000..9cda86352a9 --- /dev/null +++ b/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_allopts.ref @@ -0,0 +1,166 @@ +<Configuration> + <HLTMPPUApplication> + <numForks>4</numForks> + <childLogRoot>/scratch/fwinkl/athenaHLT/HLT/Trigger/TrigControl/TrigCommon/unitTestRun</childLogRoot> + <InfoServiceLibrary>MonSvcInfoService</InfoServiceLibrary> + <softTimeoutFraction>0.9</softTimeoutFraction> + <HLTImplementationLibraries> + <library>TrigServices</library> + <library>TrigPSC</library> + </HLTImplementationLibraries> + <UID>HLTMPPy</UID> + <HardTimeout>777</HardTimeout> + <finalizeTimeout>120</finalizeTimeout> + <numberOfEventSlots>2</numberOfEventSlots> + <DataSourceLibrary>DFFileBackend</DataSourceLibrary> + <numberOfAthenaMTThreads>2</numberOfAthenaMTThreads> + <DataSource> + <HLTDFFileBackend> + <preload>False</preload> + <numEvents>3</numEvents> + <start_id>1</start_id> + <library>DFFileBackend</library> + <fileOffset>-1</fileOffset> + <UID>DataSource-is-DCM</UID> + <compressionLevel>2</compressionLevel> + <skipEvents>7</skipEvents> + <compressionFormat>ZLIB</compressionFormat> + <outputFileName>out.data</outputFileName> + <loopOverFiles>False</loopOverFiles> + <fileList> + <file>dummy.data</file> + </fileList> + <extraL1Robs/> + </HLTDFFileBackend> + </DataSource> + <InfoService> + <HLTMonInfoImpl> + <UID>hltMonSvc</UID> + <library>MonSvcInfoService</library> + <ConfigurationRules> + <ConfigurationRuleBundle> + <UID>HltpuConfigurationRuleBundle</UID> + <Rules> + <ConfigurationRule> + <ExcludeFilter></ExcludeFilter> + <Name>Dumm</Name> + <UID>HltpuOHRule</UID> + <Parameters> + <OHPublishingParameters> + <PublishInterval>5</PublishInterval> + <ROOTProvider>${TDAQ_APPLICATION_NAME}</ROOTProvider> + <OHServer>${TDAQ_OH_SERVER=HLT-Histogramming}</OHServer> + <UID>HltpuOHPublishingParameters</UID> + <NumberOfSlots>5</NumberOfSlots> + </OHPublishingParameters> + </Parameters> + <IncludeFilter>.*</IncludeFilter> + </ConfigurationRule> + <ConfigurationRule> + <ExcludeFilter></ExcludeFilter> + <Name>DummDumm</Name> + <UID>HltpuISRule</UID> + <Parameters> + <ISPublishingParameters> + <PublishInterval>10</PublishInterval> + <UID>HltpuISPublishingParameters</UID> + <NumberOfSlots>1</NumberOfSlots> + <ISServer>${TDAQ_IS_SERVER=DF}</ISServer> + </ISPublishingParameters> + </Parameters> + <IncludeFilter>.*</IncludeFilter> + </ConfigurationRule> + </Rules> + </ConfigurationRuleBundle> + </ConfigurationRules> + </HLTMonInfoImpl> + </InfoService> + </HLTMPPUApplication> + <Partition> + <UID>mypart</UID> + <LogRoot>/scratch/fwinkl/athenaHLT/HLT/Trigger/TrigControl/TrigCommon/unitTestRun</LogRoot> + <TriggerConfiguration> + <TriggerConfiguration> + <L1TriggerConfiguration> + <L1TriggerConfiguration> + <ConfigureLvl1MenuFrom>DB</ConfigureLvl1MenuFrom> + <Lvl1BunchGroupKey>0</Lvl1BunchGroupKey> + <UID>L1TrigConf</UID> + <Lvl1PrescaleKey>0</Lvl1PrescaleKey> + </L1TriggerConfiguration> + </L1TriggerConfiguration> + <hlt> + <HLTImplementationJobOptions> + <libraries> + <library>TrigServices</library> + <library>TrigPSC</library> + </libraries> + <preCommands> + <preCommand>x=1</preCommand> + <preCommand>y=2</preCommand> + <preCommand>_run_number=327265</preCommand> + <preCommand>include('TrigServices/OfflineTHistSvc.py')</preCommand> + </preCommands> + <postCommands> + <postCommand>x=2</postCommand> + </postCommands> + <UID>HLTImplementationJobOptions-1</UID> + <evtSel>NONE</evtSel> + <HLTCommonParameters> + <HLTCommonParameters> + <factoryName></factoryName> + <dllName></dllName> + <messageSvcType>TrigMessageSvc</messageSvcType> + <jobOptionsSvcType>JobOptionsSvc</jobOptionsSvcType> + </HLTCommonParameters> + </HLTCommonParameters> + <logLevels> + <logLevel>INFO</logLevel> + <logLevel>ERROR</logLevel> + </logLevels> + <pythonSetupFile>mysetup.py</pythonSetupFile> + <jobOptionsPath>dummy.py</jobOptionsPath> + </HLTImplementationJobOptions> + </hlt> + <UID>JobOptionsTriggerConfig-1</UID> + <TriggerDBConnection> + <TriggerDBConnection> + <Name>dummy</Name> + <Server>TRIGGERDB</Server> + <Alias>TRIGGERDB</Alias> + <User></User> + <Password></Password> + <Type>Coral</Type> + <SuperMasterKey>0</SuperMasterKey> + </TriggerDBConnection> + </TriggerDBConnection> + </TriggerConfiguration> + </TriggerConfiguration> + </Partition> + <ROS2ROBS/> +</Configuration> +<RunParams> + <totalTime>0</totalTime> + <run_type>Physics</run_type> + <timeEOR>1/1/70 01:00:00</timeEOR> + <det_mask>00000000000000000001fffffffffff7</det_mask> + <beam_type>0</beam_type> + <filename_tag></filename_tag> + <max_events>0</max_events> + <run_number>327265</run_number> + <timeSOR>22/11/18 11:02:32.703856</timeSOR> + <trigger_type>0</trigger_type> + <T0_project_tag></T0_project_tag> + <beam_energy>0</beam_energy> + <recording_enabled>0</recording_enabled> +</RunParams> +<Magnets> + <ToroidsCurrent> + <ts>22/11/18 11:02:32.703856</ts> + <value>20400</value> + </ToroidsCurrent> + <SolenoidCurrent> + <ts>22/11/18 11:02:32.703856</ts> + <value>7730</value> + </SolenoidCurrent> +</Magnets> diff --git a/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_noopts.ref b/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_noopts.ref new file mode 100644 index 00000000000..6083e1b27b9 --- /dev/null +++ b/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_noopts.ref @@ -0,0 +1,161 @@ +<Configuration> + <HLTMPPUApplication> + <numForks>1</numForks> + <childLogRoot>/scratch/fwinkl/athenaHLT/HLT/Trigger/TrigControl/TrigCommon/unitTestRun</childLogRoot> + <InfoServiceLibrary>MonSvcInfoService</InfoServiceLibrary> + <softTimeoutFraction>0.9</softTimeoutFraction> + <HLTImplementationLibraries> + <library>TrigServices</library> + <library>TrigPSC</library> + </HLTImplementationLibraries> + <UID>HLTMPPy</UID> + <HardTimeout>36000</HardTimeout> + <finalizeTimeout>120</finalizeTimeout> + <numberOfEventSlots>1</numberOfEventSlots> + <DataSourceLibrary>DFFileBackend</DataSourceLibrary> + <numberOfAthenaMTThreads>1</numberOfAthenaMTThreads> + <DataSource> + <HLTDFFileBackend> + <preload>False</preload> + <numEvents>-1</numEvents> + <start_id>1</start_id> + <library>DFFileBackend</library> + <fileOffset>-1</fileOffset> + <UID>DataSource-is-DCM</UID> + <compressionLevel>2</compressionLevel> + <skipEvents>0</skipEvents> + <compressionFormat>ZLIB</compressionFormat> + <loopOverFiles>False</loopOverFiles> + <fileList> + <file>dummy.data</file> + </fileList> + <extraL1Robs/> + </HLTDFFileBackend> + </DataSource> + <InfoService> + <HLTMonInfoImpl> + <UID>hltMonSvc</UID> + <library>MonSvcInfoService</library> + <ConfigurationRules> + <ConfigurationRuleBundle> + <UID>HltpuConfigurationRuleBundle</UID> + <Rules> + <ConfigurationRule> + <ExcludeFilter></ExcludeFilter> + <Name>Dumm</Name> + <UID>HltpuOHRule</UID> + <Parameters> + <OHPublishingParameters> + <PublishInterval>5</PublishInterval> + <ROOTProvider>${TDAQ_APPLICATION_NAME}</ROOTProvider> + <OHServer>${TDAQ_OH_SERVER=HLT-Histogramming}</OHServer> + <UID>HltpuOHPublishingParameters</UID> + <NumberOfSlots>5</NumberOfSlots> + </OHPublishingParameters> + </Parameters> + <IncludeFilter>.*</IncludeFilter> + </ConfigurationRule> + <ConfigurationRule> + <ExcludeFilter></ExcludeFilter> + <Name>DummDumm</Name> + <UID>HltpuISRule</UID> + <Parameters> + <ISPublishingParameters> + <PublishInterval>10</PublishInterval> + <UID>HltpuISPublishingParameters</UID> + <NumberOfSlots>1</NumberOfSlots> + <ISServer>${TDAQ_IS_SERVER=DF}</ISServer> + </ISPublishingParameters> + </Parameters> + <IncludeFilter>.*</IncludeFilter> + </ConfigurationRule> + </Rules> + </ConfigurationRuleBundle> + </ConfigurationRules> + </HLTMonInfoImpl> + </InfoService> + </HLTMPPUApplication> + <Partition> + <UID>athenaHLT</UID> + <LogRoot>/scratch/fwinkl/athenaHLT/HLT/Trigger/TrigControl/TrigCommon/unitTestRun</LogRoot> + <TriggerConfiguration> + <TriggerConfiguration> + <L1TriggerConfiguration> + <L1TriggerConfiguration> + <ConfigureLvl1MenuFrom>DB</ConfigureLvl1MenuFrom> + <Lvl1BunchGroupKey>0</Lvl1BunchGroupKey> + <UID>L1TrigConf</UID> + <Lvl1PrescaleKey>0</Lvl1PrescaleKey> + </L1TriggerConfiguration> + </L1TriggerConfiguration> + <hlt> + <HLTImplementationJobOptions> + <libraries> + <library>TrigServices</library> + <library>TrigPSC</library> + </libraries> + <preCommands> + <preCommand>_run_number=327265</preCommand> + <preCommand>include('TrigServices/OfflineTHistSvc.py')</preCommand> + </preCommands> + <postCommands/> + <UID>HLTImplementationJobOptions-1</UID> + <evtSel>NONE</evtSel> + <HLTCommonParameters> + <HLTCommonParameters> + <factoryName></factoryName> + <dllName></dllName> + <messageSvcType>TrigMessageSvc</messageSvcType> + <jobOptionsSvcType>JobOptionsSvc</jobOptionsSvcType> + </HLTCommonParameters> + </HLTCommonParameters> + <logLevels> + <logLevel>INFO</logLevel> + <logLevel>ERROR</logLevel> + </logLevels> + <pythonSetupFile>TrigPSC/TrigPSCPythonSetup.py</pythonSetupFile> + <jobOptionsPath>dummy.py</jobOptionsPath> + </HLTImplementationJobOptions> + </hlt> + <UID>JobOptionsTriggerConfig-1</UID> + <TriggerDBConnection> + <TriggerDBConnection> + <Name>dummy</Name> + <Server>TRIGGERDB</Server> + <Alias>TRIGGERDB</Alias> + <User></User> + <Password></Password> + <Type>Coral</Type> + <SuperMasterKey>0</SuperMasterKey> + </TriggerDBConnection> + </TriggerDBConnection> + </TriggerConfiguration> + </TriggerConfiguration> + </Partition> + <ROS2ROBS/> +</Configuration> +<RunParams> + <totalTime>0</totalTime> + <run_type>Physics</run_type> + <timeEOR>1/1/70 01:00:00</timeEOR> + <det_mask>00000000000000000001fffffffffff7</det_mask> + <beam_type>0</beam_type> + <filename_tag></filename_tag> + <max_events>0</max_events> + <run_number>327265</run_number> + <timeSOR>22/11/18 11:02:32.703856</timeSOR> + <trigger_type>0</trigger_type> + <T0_project_tag></T0_project_tag> + <beam_energy>0</beam_energy> + <recording_enabled>0</recording_enabled> +</RunParams> +<Magnets> + <ToroidsCurrent> + <ts>22/11/18 11:02:32.703856</ts> + <value>20400</value> + </ToroidsCurrent> + <SolenoidCurrent> + <ts>22/11/18 11:02:32.703856</ts> + <value>7730</value> + </SolenoidCurrent> +</Magnets> diff --git a/HLT/Trigger/TrigControl/TrigCommon/share/test_athenaHLT.sh b/HLT/Trigger/TrigControl/TrigCommon/share/test_athenaHLT.sh new file mode 100755 index 00000000000..4ae2f732aae --- /dev/null +++ b/HLT/Trigger/TrigControl/TrigCommon/share/test_athenaHLT.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# +# Configuration testing script for athenaHLT.py +# + +test_options=$@ + +# Cleanup any orphaned processes +trap cleanup INT TERM EXIT +function cleanup { + sid=`ps -o sess= -p $$` # our own session id + pkill -9 --parent 1 --session $sid ipc_server + pkill -9 --parent 1 --session $sid is_server +} + +# We only test the configuration stage, so these dummy values are just fine. +# Specifying run/sor/detmask avoids the COOL lookup. +file="dummy.data" +run="327265" +sortime="1542880952703855872" +detmask="00000000000000000001fffffffffff7" + +# Run only config stage (exit immediately via interactive mode) and filter final ptree +# If there was a failure, the exit code will be non-zero +echo "e" | athenaHLT.py --file ${file} --detector-mask ${detmask} --run-number ${run} --sor-time ${sortime} --interactive ${test_options} | sed -n '/<Configuration>/,/<\/Magnets>/p;/<\/Magnets>/q' | grep '<' -- GitLab From 981b9c19b5248c0edc300e15f4d027d15d61f113 Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Thu, 22 Nov 2018 17:55:28 +0100 Subject: [PATCH 086/135] implement configurable ROB requests in MTCalibPebHypoTool also allow configuring ROBs and SubDets in stream tags made by StreamTagMakerTool Former-commit-id: 9d45aefa9348361b1e7186e63812737d48af2355 --- .../TrigExPartialEB/share/MTCalibPeb.py | 16 +++++ .../src/MTCalibPebHypoTool.cxx | 62 +++++++++++++++++++ .../TrigExPartialEB/src/MTCalibPebHypoTool.h | 14 +++++ .../src/StreamTagMakerTool.cxx | 30 ++++++--- .../src/StreamTagMakerTool.h | 5 +- 5 files changed, 118 insertions(+), 9 deletions(-) diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py index 599385c5751..e219b9a8e67 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py @@ -62,6 +62,17 @@ hypoTool2 = MTCalibPebHypoTool("HLT_MTCalibPeb2") hypoTool2.RandomAcceptRate = 0.25 hypoTool2.BurnTimePerCycleMillisec = 1000 hypoTool2.NumBurnCycles = 10 +hypoTool2.ROBAccessDict = { + "01 :ADD: Preload ": [ 0x42002a, 0x42002b ], # robs for 1st preload + "02 :ADD: Preload ": [ 0x42002e, 0x42002f ], # robs for 2nd preload + "03 :GET: Retrieve ": [ 0x42002e, 0x420060 ], # robs for 1st retrieval + "04 :ADD: Preload ": [ 0x420060 ], # robs for 3rd preload + "05 :ADD: Preload ": [ 0x420064 ], # robs for 4th preload + "06 :ADD: Preload ": [ 0x42002e, 0x420060 ], # robs for 5th preload + "07 :GET: Retrieve ": [ 0x420060 ], # robs for 2nd retrieval + "08 :GET: Retrieve ": [ 0x420064 ], # robs for 3rd retrieval + "09 :COL: Ev.Build ": [ 0x0 ] # event building + } # This is just an example with a few ROBs (LAr in this case) for testing the ROBDataProvider hypo.HypoTools = [hypoTool1, hypoTool2] @@ -70,6 +81,7 @@ hypo.HypoTools = [hypoTool1, hypoTool2] ################################################################################ from TrigOutputHandling.TrigOutputHandlingConf import TriggerEDMSerialiserTool, StreamTagMakerTool, TriggerBitsMakerTool +from eformat import helper # Tool serialising EDM objects to fill the HLT result serialiser = TriggerEDMSerialiserTool() @@ -81,6 +93,10 @@ stmaker.ChainDecisions = "HLTFinalDecisions" stmaker.ChainToStream = {} stmaker.ChainToStream["HLT_MTCalibPeb1"] = "DataScouting_05_Jets" stmaker.ChainToStream["HLT_MTCalibPeb2"] = "Main" +stmaker.StreamSubDets = {} +stmaker.StreamSubDets["Main"] = [0x41, 0x42] +stmaker.StreamRobs = {} +stmaker.StreamRobs["Main"] = [0x42002e, 0x420060, 0x420064] # Tool adding HLT bits to HLT result bitsmaker = TriggerBitsMakerTool() diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx index c94abfa7cfe..14bdc419501 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx @@ -11,6 +11,7 @@ // System includes #include <random> #include <thread> +#include <sstream> // Local implementation-specific helper methods namespace { @@ -34,6 +35,22 @@ namespace { bool randomAccept(const double acceptRate) { return (randomRealNumber(0.0, 1.0) < acceptRate); } + /// ROBFragments vector print helper + std::ostream& operator<<(std::ostream& str, const IROBDataProviderSvc::VROBFRAG& robFragments) { + for (const IROBDataProviderSvc::ROBF* robf : robFragments) { + str << "---> ROB ID = 0x" << std::hex << robf->rob_source_id() << std::dec << std::endl + << " ROD ID = 0x" << std::hex << robf->rod_source_id() << std::dec << std::endl + << " ROD Level-1 ID = " << robf->rod_lvl1_id() << std::endl; + } + return str; + } + /// ROB ID vector print helper + std::string robIdVecToString(const std::vector<uint32_t>& robIdVec) { + std::ostringstream str; + for (const uint32_t robId : robIdVec) + str << "0x" << std::hex << robId << std::dec << " "; + return str.str(); + } } // ============================================================================= @@ -41,6 +58,7 @@ namespace { // ============================================================================= MTCalibPebHypoTool::MTCalibPebHypoTool(const std::string& type, const std::string& name, const IInterface* parent) : AthAlgTool(type,name,parent), + m_robDataProviderSvc("ROBDataProviderSvc", name), m_decisionId (HLT::Identifier::fromToolName(name)) {} // ============================================================================= @@ -53,6 +71,16 @@ MTCalibPebHypoTool::~MTCalibPebHypoTool() {} // ============================================================================= StatusCode MTCalibPebHypoTool::initialize() { ATH_MSG_INFO("Initialising " << name()); + ATH_CHECK(m_robDataProviderSvc.retrieve()); + return StatusCode::SUCCESS; +} + +// ============================================================================= +// Implementation of AthAlgTool::finalize +// ============================================================================= +StatusCode MTCalibPebHypoTool::finalize() { + ATH_MSG_INFO("Finalising " << name()); + ATH_CHECK(m_robDataProviderSvc.release()); return StatusCode::SUCCESS; } @@ -78,6 +106,40 @@ StatusCode MTCalibPebHypoTool::decide(const MTCalibPebHypoTool::Input& input) co std::this_thread::sleep_for(std::chrono::milliseconds(burnTime)); } + // --------------------------------------------------------------------------- + // Prefetch or retrieve ROBs + // --------------------------------------------------------------------------- + for (const auto& p : m_robAccessDict) { + // Check for timeout + if (Athena::Timeout::instance(input.eventContext).reached()) { + ATH_MSG_INFO("Timeout reached in ROB retrieval loop"); + break; + } + const std::string& instruction = p.first; + const std::vector<uint32_t>& robs = p.second; + if (instruction.find(":ADD:")!=std::string::npos) { + // Prefetch ROBs + ATH_MSG_DEBUG("Preloading ROBs: " << robIdVecToString(robs)); + m_robDataProviderSvc->addROBData(input.eventContext, robs, name()+"-ADD"); + } + if (instruction.find(":GET:")!=std::string::npos) { + // Retrieve ROBs + ATH_MSG_DEBUG("Retrieving ROBs: " << robIdVecToString(robs)); + // VROBFRAG = std::vector<const eformat::ROBFragment<const uint32_t*>* > + IROBDataProviderSvc::VROBFRAG robFragments; + m_robDataProviderSvc->getROBData(input.eventContext, robs, robFragments, name()+"-GET"); + ATH_MSG_DEBUG("Number of ROBs retrieved: " << robFragments.size()); + if (!robFragments.empty()) + ATH_MSG_DEBUG("List of ROBs found: " << std::endl << robFragments); + } + if (instruction.find(":COL:")!=std::string::npos) { + // Event building + ATH_MSG_DEBUG("Requesting full event ROBs"); + int nrobs = m_robDataProviderSvc->collectCompleteEventData(input.eventContext, name()+"-COL"); + ATH_MSG_DEBUG("Number of ROBs retrieved: " << nrobs); + } + } + // --------------------------------------------------------------------------- // Random accept decision // --------------------------------------------------------------------------- diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h index d46d97904a8..1754824922b 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h @@ -6,12 +6,16 @@ #define TRIGEXPARTIALEB_MTCALIBPEBHYPOTOOL_H // Trigger includes +#include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h" #include "DecisionHandling/HLTIdentifier.h" #include "DecisionHandling/TrigCompositeUtils.h" // Athena includes #include "AthenaBaseComps/AthAlgTool.h" +// Gaudi includes +#include "Gaudi/Parsers/Factory.h" // needed to declare less common Property types + // TDAQ includes #include "eformat/StreamTag.h" @@ -27,6 +31,7 @@ public: // ------------------------- AthAlgTool methods ------------------------------ virtual StatusCode initialize() override; + virtual StatusCode finalize() override; // ------------------------- Public types ------------------------------------ struct Input { @@ -62,6 +67,15 @@ private: this, "FailOnTimeout", true, "If true, the execution will return StatusCode::FAILURE when Athena timeout is detected" }; + Gaudi::Property<std::map<std::string,std::vector<uint32_t> > > m_robAccessDict { + this, "ROBAccessDict", {}, + "List of prefetch/retrieve operations with given ROB IDs." + "The string key has to contain :ADD: (prefetch), :GET: (retrieve), or :COL: (full event building)." + "The value is a vector of corresponding ROB IDs." + }; + + // ------------------------- Service or tool handles ------------------------- + ServiceHandle<IROBDataProviderSvc> m_robDataProviderSvc; // ------------------------- Other private members --------------------------- /// The decision id of the tool instance diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx index 9227980a999..65b2f514488 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx @@ -10,14 +10,28 @@ StreamTagMakerTool::StreamTagMakerTool( const std::string& type, const std::stri StreamTagMakerTool::~StreamTagMakerTool() {} -StatusCode StreamTagMakerTool::initialize() { - // decode mapping +StatusCode StreamTagMakerTool::initialize() { ATH_CHECK( m_finalChainDecisions.initialize() ); + // decode mapping - temporary solution for testing for ( auto& chainAndStream: m_chainToStreamProperty ) { - struct { std::string chain, stream; } conf { chainAndStream.first, chainAndStream.second }; + struct { std::string chain, stream; } conf { chainAndStream.first, chainAndStream.second }; ATH_MSG_DEBUG( "Chain " << conf.chain << " accepts events to stream " << conf.stream ); - m_mapping[ HLT::Identifier( conf.chain ) ] = eformat::helper::StreamTag( conf.stream, "physics", true ); - + // find subdets + std::set<eformat::SubDetector> dets; + const auto itSubDetMap = m_streamSubDets.value().find(conf.stream); + if (itSubDetMap != m_streamSubDets.value().cend()) { + for (const uint32_t detid : itSubDetMap->second) + dets.insert(static_cast<eformat::SubDetector>(detid & 0xFF)); // cast from uint32_t + } + // find robs + std::set<uint32_t> robs; + const auto itRobsMap = m_streamRobs.value().find(conf.stream); + if (itRobsMap != m_streamRobs.value().cend()) { + for (const uint32_t robid : itRobsMap->second) + robs.insert(robid); + } + // create the stream tag + m_mapping[ HLT::Identifier( conf.chain ) ] = eformat::helper::StreamTag( conf.stream, "physics", true, robs, dets ); } return StatusCode::SUCCESS; @@ -29,14 +43,14 @@ StatusCode StreamTagMakerTool::finalize() { StatusCode StreamTagMakerTool::fill( HLT::HLTResultMT& resultToFill ) const { - // obtain chain decisions, + // obtain chain decisions, auto chainsHandle = SG::makeHandle( m_finalChainDecisions ); // for each accepted chain lookup the map of chainID -> ST for ( TrigCompositeUtils::DecisionID chain: TrigCompositeUtils::decisionIDs( chainsHandle->at( 0 )) ) { auto mappingIter = m_mapping.find( chain ); // each chain has to have stream - if( mappingIter == m_mapping.end() ) { + if( mappingIter == m_mapping.end() ) { ATH_MSG_ERROR("Each chain has to have stream associated whereas the " << HLT::Identifier( chain ) << " does not" ); return StatusCode::FAILURE; } @@ -44,5 +58,5 @@ StatusCode StreamTagMakerTool::fill( HLT::HLTResultMT& resultToFill ) const { } ATH_MSG_DEBUG("Number of streams for event " << resultToFill.getStreamTags().size() ); - return StatusCode::SUCCESS; + return StatusCode::SUCCESS; } diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h index d3e42b474bb..3debf49a80c 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h +++ b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h @@ -10,6 +10,7 @@ #include "AthenaBaseComps/AthAlgTool.h" #include "TrigOutputHandling/HLTResultMTMakerTool.h" #include "DecisionHandling/TrigCompositeUtils.h" +#include "Gaudi/Parsers/Factory.h" // needed to declare less common Property types #include "eformat/StreamTag.h" /** @@ -29,7 +30,9 @@ public: private: SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> m_finalChainDecisions { this, "ChainDecisions", "UNDEFINED", "Container with final chain decisions" }; - Gaudi::Property<std::map<std::string, std::string>> m_chainToStreamProperty { this, "ChainToStream", {}, "Mapping from the chain name to string name, (temporary solution, will be replaced)"}; + Gaudi::Property<std::map<std::string, std::string>> m_chainToStreamProperty { this, "ChainToStream", {}, "Mapping from the chain name to string name (temporary solution, will be replaced)"}; + Gaudi::Property<std::map<std::string, std::vector<uint32_t>>> m_streamSubDets { this, "StreamSubDets", {}, "Mapping from the stream name to subdetector IDs (temporary solution, will be replaced)"}; + Gaudi::Property<std::map<std::string, std::vector<uint32_t>>> m_streamRobs { this, "StreamRobs", {}, "Mapping from the stream name to ROB IDs (temporary solution, will be replaced)"}; typedef std::map< TrigCompositeUtils::DecisionID, eformat::helper::StreamTag> ChainToStreamMap; ChainToStreamMap m_mapping; -- GitLab From adb540f4cb189b9834e29eda7e9e851a5071501a Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Thu, 22 Nov 2018 17:58:12 +0100 Subject: [PATCH 087/135] small changes to use nullptr or ATH_MSG_DEBUG Former-commit-id: d931bcd9292406634bab408f5292e03f7c073dbf --- .../MuonAlignErrorTool/src/AlignmentErrorTool.cxx | 1 - .../MuonCablingData/MuonCablingData/MdtMapBase.h | 2 +- .../MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx b/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx index 851b0c882a2..5fcd423b5cc 100644 --- a/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx +++ b/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx @@ -81,7 +81,6 @@ void AlignmentErrorTool::makeAlignmentDeviations (const Trk::Track& track, std:: const MuonAlignmentErrorData* readCdo{*readHandle}; if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); - std::cout<<"ckato Null pointer to the read conditions object"<<std::endl; return; } std::vector<deviationStr> devStrVec; diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h index cce06952d5d..cd68f71f975 100644 --- a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h +++ b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h @@ -196,7 +196,7 @@ template<class T> T* MdtMapBase<T>::findItem(uint8_t itemId) const{ if (it!=m_mapOfItems->end()) { return (*it).second; } else { - return NULL; + return nullptr; } } diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx index f43b20b69ee..6995ddad727 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx @@ -71,11 +71,11 @@ bool MdtTestCabling::testMap() // print the list of ROBids std::vector<uint32_t> robVector = readCdo->getAllROBId(); - std::cout << "============================= List of ROBids:" << std::endl; + ATH_MSG_DEBUG( "============================= List of ROBids:" ); for (unsigned int i=0 ; i<robVector.size() ; ++i) { - std::cout << std::hex << robVector[i] << std::dec << std::endl; + ATH_MSG_DEBUG( std::hex << robVector[i] << std::dec ); } - std::cout << "=============================================" << std::endl; + ATH_MSG_DEBUG( "=============================================" ); // loop on the hardware objects to get online identifiers -- GitLab From e041138e3821c5126a0714a79b75162b5432733c Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Thu, 22 Nov 2018 18:33:49 +0100 Subject: [PATCH 088/135] add configurable delay between ROB requests Former-commit-id: 0b2826eeaf38b21951809a297d4a594c7ee6202e --- .../TrigExamples/TrigExPartialEB/share/MTCalibPeb.py | 8 ++++---- .../TrigExPartialEB/src/MTCalibPebHypoTool.cxx | 1 + .../TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h | 4 ++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py index e219b9a8e67..5ce18abe2e3 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py @@ -55,13 +55,14 @@ hypo.HypoOutputDecisions = "MTCalibPebDecisions" hypoTool1 = MTCalibPebHypoTool("HLT_MTCalibPeb1") hypoTool1.RandomAcceptRate = 0.75 -hypoTool1.BurnTimePerCycleMillisec = 200 +hypoTool1.BurnTimePerCycleMillisec = 100 hypoTool1.NumBurnCycles = 3 hypoTool2 = MTCalibPebHypoTool("HLT_MTCalibPeb2") hypoTool2.RandomAcceptRate = 0.25 -hypoTool2.BurnTimePerCycleMillisec = 1000 +hypoTool2.BurnTimePerCycleMillisec = 200 hypoTool2.NumBurnCycles = 10 +hypoTool2.TimeBetweenROBReqMillisec = 100 hypoTool2.ROBAccessDict = { "01 :ADD: Preload ": [ 0x42002a, 0x42002b ], # robs for 1st preload "02 :ADD: Preload ": [ 0x42002e, 0x42002f ], # robs for 2nd preload @@ -72,7 +73,7 @@ hypoTool2.ROBAccessDict = { "07 :GET: Retrieve ": [ 0x420060 ], # robs for 2nd retrieval "08 :GET: Retrieve ": [ 0x420064 ], # robs for 3rd retrieval "09 :COL: Ev.Build ": [ 0x0 ] # event building - } # This is just an example with a few ROBs (LAr in this case) for testing the ROBDataProvider +} # This is just an example with a few ROBs (LAr in this case) for testing the ROBDataProvider hypo.HypoTools = [hypoTool1, hypoTool2] @@ -81,7 +82,6 @@ hypo.HypoTools = [hypoTool1, hypoTool2] ################################################################################ from TrigOutputHandling.TrigOutputHandlingConf import TriggerEDMSerialiserTool, StreamTagMakerTool, TriggerBitsMakerTool -from eformat import helper # Tool serialising EDM objects to fill the HLT result serialiser = TriggerEDMSerialiserTool() diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx index 14bdc419501..8f2dee375d8 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx @@ -138,6 +138,7 @@ StatusCode MTCalibPebHypoTool::decide(const MTCalibPebHypoTool::Input& input) co int nrobs = m_robDataProviderSvc->collectCompleteEventData(input.eventContext, name()+"-COL"); ATH_MSG_DEBUG("Number of ROBs retrieved: " << nrobs); } + std::this_thread::sleep_for(std::chrono::milliseconds(m_timeBetweenRobReqMillisec)); } // --------------------------------------------------------------------------- diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h index 1754824922b..a511a354cd5 100644 --- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h +++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h @@ -73,6 +73,10 @@ private: "The string key has to contain :ADD: (prefetch), :GET: (retrieve), or :COL: (full event building)." "The value is a vector of corresponding ROB IDs." }; + Gaudi::Property<unsigned int> m_timeBetweenRobReqMillisec { + this, "TimeBetweenROBReqMillisec", 0, + "Delay in milliseconds between subsequent ROB request operations from ROBAccessDict" + }; // ------------------------- Service or tool handles ------------------------- ServiceHandle<IROBDataProviderSvc> m_robDataProviderSvc; -- GitLab From e4d24e639d86901524320c7c2e651094d81fcdb0 Mon Sep 17 00:00:00 2001 From: Andrea Coccaro <andrea.coccaro@cern.ch> Date: Thu, 22 Nov 2018 13:53:57 +0000 Subject: [PATCH 089/135] Merge branch 'check_ART-ref' into '21.1' Add art-result code when references are missing See merge request atlas/athena!16122 (cherry picked from commit dae0c66672b2a1eae656812330d41aa82825776c [formerly 6b715a6c9242ad95d616b20c678d2910e60a3e26]) 2f5499ec Add art-result when references are missing 8330d17c Add art-result when references are missing Former-commit-id: a2ee98af329b1eee604e1bf0295eb745c9d922d3 --- Control/AthenaConfiguration/python/iconfTool/__init__.py | 0 .../AthenaConfiguration/python/iconfTool/models/__init__.py | 0 .../TriggerTest/test/exec_art_triggertest_post.sh | 4 +++- 3 files changed, 3 insertions(+), 1 deletion(-) mode change 100755 => 100644 Control/AthenaConfiguration/python/iconfTool/__init__.py mode change 100755 => 100644 Control/AthenaConfiguration/python/iconfTool/models/__init__.py diff --git a/Control/AthenaConfiguration/python/iconfTool/__init__.py b/Control/AthenaConfiguration/python/iconfTool/__init__.py old mode 100755 new mode 100644 diff --git a/Control/AthenaConfiguration/python/iconfTool/models/__init__.py b/Control/AthenaConfiguration/python/iconfTool/models/__init__.py old mode 100755 new mode 100644 diff --git a/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh b/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh index ec20d8262a6..010a70fe235 100755 --- a/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh +++ b/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh @@ -37,11 +37,11 @@ grep REGTEST athena.log > athena.regtest if [ -f ${REF_FOLDER}/athena.regtest ]; then echo $(date "+%FT%H:%M %Z")" Running regtest" - grep REGTEST athena.log > athena.regtest timeout 1m regtest.pl --inputfile athena.regtest --reffile ${REF_FOLDER}/athena.regtest | tee regtest.log echo "art-result: ${PIPESTATUS[0]} RegTest" else echo $(date "+%FT%H:%M %Z")" No reference athena.regtest found in ${REF_FOLDER}" + echo "art-result: 5 RegTest" fi if [ -f ${REF_FOLDER}/expert-monitoring.root ]; then @@ -53,6 +53,8 @@ if [ -f ${REF_FOLDER}/expert-monitoring.root ]; then echo "art-result: ${PIPESTATUS[0]} CheckCounts" else echo $(date "+%FT%H:%M %Z")" No reference expert-monitoring.root found in ${REF_FOLDER}" + echo "art-result: 5 RootComp" + echo "art-result: 5 CheckCounts" fi if [ -f trig_cost.root ]; then -- GitLab From ae4c53389b421d82de47dedd1da5176ceb9daab4 Mon Sep 17 00:00:00 2001 From: Frank Winklmeier <frank.winklmeier@cern.ch> Date: Fri, 23 Nov 2018 10:04:29 +0100 Subject: [PATCH 090/135] TrigCommon: temporarily disable unit tests Unit tests are not working yet until we have an updated version of HLTMPPU in the tdaq release. Former-commit-id: 70521c4c7e76c64be3b240e76ab59e95e3f6ce29 --- HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt b/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt index e1f85d545ba..f449aaaf3a8 100644 --- a/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt +++ b/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt @@ -23,8 +23,8 @@ atlas_add_test( test_AthHLT SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/AthHLT.py POST_EXEC_SCRIPT nopost.sh ) -atlas_add_test( athenaHLT_jo_noopts - SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/test_athenaHLT.sh dummy.py) +#atlas_add_test( athenaHLT_jo_noopts +# SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/test_athenaHLT.sh dummy.py) -atlas_add_test( athenaHLT_jo_allopts - SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/test_athenaHLT.sh --number-of-events 3 --skip-events 7 -l ERROR,FATAL -c 'x=1' -c 'y=2' -C 'x=2' -o out.data --threads 2 --nprocs 4 --timeout 777 --python-setup mysetup.py --partition mypart dummy.py) +#atlas_add_test( athenaHLT_jo_allopts +# SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/test_athenaHLT.sh --number-of-events 3 --skip-events 7 -l ERROR,FATAL -c 'x=1' -c 'y=2' -C 'x=2' -o out.data --threads 2 --nprocs 4 --timeout 777 --python-setup mysetup.py --partition mypart dummy.py) -- GitLab From 9a8db98392bf8378e5e5d48189a1f5c365ed2533 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Fri, 23 Nov 2018 13:08:06 +0100 Subject: [PATCH 091/135] Revert "trying to run the MdtTestCabling_jobOptions.py" This reverts commit 83f4da1c12ae59bbb8d7dba67cce4089019aa52a [formerly ae1e29f3283cb083fb538a3da5890cb5b9ed95ff]. Former-commit-id: 2505bedd6903b16c9f19fda9061e07563825258f --- MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt | 1 - .../MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt index ebe056c4f8f..2957a3b18d3 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/CMakeLists.txt @@ -37,4 +37,3 @@ atlas_add_component( MuonMDT_Cabling # Install files from the package: atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py index 56524df49c8..e913e0e09a6 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/share/MdtTestCabling_jobOptions.py @@ -11,7 +11,7 @@ from MuonByteStream.MuonByteStreamFlags import muonByteStreamFlags muonByteStreamFlags.MdtDataType = "atlas" #initialize correctly the old cabling service -#from MDTcabling.MDTcablingConfig import * +from MDTcabling.MDTcablingConfig import * topSequence=AlgSequence() -- GitLab From 709f5d4ea6e96da48549d2c54605439cbcc184d8 Mon Sep 17 00:00:00 2001 From: ckato <ckato@cern.ch> Date: Fri, 23 Nov 2018 13:38:20 +0100 Subject: [PATCH 092/135] removing commented lines Former-commit-id: e41702136bf2071bc7500f24d799c2d7012a4bb2 --- .../MuonMDT_Cabling/src/MdtTestCabling.cxx | 1 - .../MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx | 12 ++---------- .../MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h | 1 - 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx index 6995ddad727..aae40662999 100644 --- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx +++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx @@ -94,7 +94,6 @@ bool MdtTestCabling::testMap() std::map<uint8_t, MdtAmtMap*, std::less<uint8_t> >* listOfAmt; std::map<uint8_t, MdtAmtMap*, std::less<uint8_t> >::const_iterator it_amt; - //listOfSubdet = cablingMap->getListOfElements(); listOfSubdet = readCdo->getListOfElements(); // if (m_debug) { diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx index 4eb890ba8bf..82f7b729e32 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx @@ -267,18 +267,10 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const { StatusCode MdtDigitToMdtRDO::fillTagInfo() const { ServiceHandle<ITagInfoMgr> tagInfoMgr ("TagInfoMgr", name()); - if (tagInfoMgr.retrieve().isFailure()) + if (tagInfoMgr.retrieve().isFailure()){ return StatusCode::FAILURE; - /* - std::string cablingType=""; - if (m_cabling->usingOldCabling() ) { - cablingType="OldMDT_Cabling"; } - else { - cablingType="NewMDT_Cabling"; - } - */ - //this should be new from Run2 so the switch can be removed + std::string cablingType="NewMDT_Cabling"; StatusCode sc = tagInfoMgr->addTag("MDT_CablingType",cablingType); diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h index 3a76ddfce06..f112d0d279f 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h @@ -64,7 +64,6 @@ public: int m_specialROBNumber; - //SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"}; SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey; }; -- GitLab From 961004d23945d5f80038e520baa9310d4ac30f67 Mon Sep 17 00:00:00 2001 From: Kristian Bjoerke <krbjeork@cern.ch> Date: Fri, 23 Nov 2018 11:46:29 +0100 Subject: [PATCH 093/135] Re-declare virtual function with override keyword According to ATLAS Coding Guidelines virtual functions in derived classes which override methods from the base class should also be declared with the override keyword. [redeclare-virtual] Former-commit-id: 7907837342a8319fd7f83e8cf57c16622f5d0112 --- .../src/SCTRawContByteStreamCnv.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h index 929449b75d0..ed047e772bc 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h @@ -38,15 +38,15 @@ class SCTRawContByteStreamCnv : public Converter virtual ~SCTRawContByteStreamCnv() = default; /** Initialize */ - virtual StatusCode initialize(); + virtual StatusCode initialize() override; /** Storage type and class ID */ - virtual long repSvcType() const { return ByteStream_StorageType; } + virtual long repSvcType() const override { return ByteStream_StorageType; } static long storageType() { return ByteStream_StorageType; } static const CLID& classID() { return ClassID_traits<SCT_RDO_Container>::ID(); } /** createObj method (not used!) */ - virtual StatusCode createObj(IOpaqueAddress*, DataObject*&) { return StatusCode::FAILURE; } + virtual StatusCode createObj(IOpaqueAddress*, DataObject*&) override { return StatusCode::FAILURE; } /** * @brief Method to convert SCT Raw Data into ByteStream @@ -59,7 +59,7 @@ class SCTRawContByteStreamCnv : public Converter * @param pDataObject Pointer to data object * @param pOpaqueAddress Opaque address to object */ - virtual StatusCode createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress); + virtual StatusCode createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress) override; private: -- GitLab From be571469b57d3ad363e2b571ea684bedc8187d4c Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Tue, 20 Nov 2018 15:49:46 +0100 Subject: [PATCH 094/135] TileMonitoring: Fix configuration for ATN test. TileMonTopoCluster_jobOptions needs to get LAr conditions configured. Otherwise, TileRecEx tests fail because LArHVScaleCorr hasn't been configured. Former-commit-id: b9ab73e5fdc7222e812f8942c841aa49aec2ae55 --- .../TileMonitoring/share/TileMonTopoCluster_jobOptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TileCalorimeter/TileMonitoring/share/TileMonTopoCluster_jobOptions.py b/TileCalorimeter/TileMonitoring/share/TileMonTopoCluster_jobOptions.py index 8a891977410..7c62296a589 100644 --- a/TileCalorimeter/TileMonitoring/share/TileMonTopoCluster_jobOptions.py +++ b/TileCalorimeter/TileMonitoring/share/TileMonTopoCluster_jobOptions.py @@ -22,7 +22,7 @@ from AthenaCommon.GlobalFlags import globalflags include( "CaloDetMgrDetDescrCnv/CaloDetMgrDetDescrCnv_joboptions.py") include( "CaloIdCnv/CaloIdCnv_joboptions.py" ) -#include( "LArDetDescr/LArDetDescr_joboptions.py" ) +include( "LArDetDescr/LArDetDescr_joboptions.py" ) #include("LArConditionsCommon/LArConditionsCommon_comm_jobOptions.py") -- GitLab From e34757aae0abc367a383765a322d7ba94ac705c8 Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Thu, 22 Nov 2018 16:25:49 +0100 Subject: [PATCH 095/135] AthViews: Increase test timeout. Was timing out in some nightlies. Former-commit-id: a077d4f53f6b6d6e95239301ece6224f0b6ad39c --- Control/AthViews/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Control/AthViews/CMakeLists.txt b/Control/AthViews/CMakeLists.txt index 334a30f33e8..2bd4f342cc0 100644 --- a/Control/AthViews/CMakeLists.txt +++ b/Control/AthViews/CMakeLists.txt @@ -55,7 +55,8 @@ atlas_add_test( ViewCollectionMerge_test ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/test") atlas_add_test( SimpleViews SCRIPT test/test_simple_view_example.sh - PROPERTIES PASS_REGULAR_EXPRESSION "INFO view_test running with store view_9" ) + PROPERTIES PASS_REGULAR_EXPRESSION "INFO view_test running with store view_9" + TIMEOUT 300 ) atlas_add_test( ViewScheduling SCRIPT test/test_view_scheduling.sh ) -- GitLab From d281860afa357246034889798b31af19e500065e Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Thu, 22 Nov 2018 16:05:52 +0100 Subject: [PATCH 096/135] LArGeoH62003Algs: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: db65e87df24605d6133f60b0d96328d16e2685b4 --- .../src/LArDetectorConstructionH62003.cxx | 35 +++++++++---------- .../src/LArDetectorConstructionH62003.h | 4 +-- .../src/LArDetectorFactoryH62003.cxx | 8 +---- .../src/LArDetectorToolH62003.cxx | 4 +-- 4 files changed, 22 insertions(+), 29 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.cxx index 1b6ed12dc4e..d5f875ce089 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // LArDetectorConstructionH62003 @@ -27,7 +27,6 @@ #include "GeoModelKernel/GeoSerialTransformer.h" #include "GeoModelKernel/GeoXF.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" @@ -107,7 +106,7 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionH62003::GetEnvelope() if (svcLocator->service("DetectorStore", detStore, false )==StatusCode::FAILURE) { throw std::runtime_error("Error in LArDetectorConstructionH62003, cannot access DetectorStore"); } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0; StatusCode sc; @@ -126,45 +125,45 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionH62003::GetEnvelope() // Get the materials from the material manager:----------------------// // - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Air is not found."); - GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); + const GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); if (!Lead) throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Lead is not found."); - GeoMaterial *PStyrene = materialManager->getMaterial("std::Polystyrene"); + const GeoMaterial *PStyrene = materialManager->getMaterial("std::Polystyrene"); if (!PStyrene) throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Polystyrene is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Iron is not found."); - GeoMaterial *Aluminum = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Aluminum = materialManager->getMaterial("std::Aluminium"); if (!Aluminum) throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Aluminum is not found."); - GeoMaterial *Concrete = materialManager->getMaterial("std::Concrete"); + const GeoMaterial *Concrete = materialManager->getMaterial("std::Concrete"); if (!Concrete) throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Concrete is not found."); - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in LArDetectorConstructionH62003, std::LiquidArgon is not found."); - GeoMaterial *Vac = materialManager->getMaterial("std::Vacuum"); + const GeoMaterial *Vac = materialManager->getMaterial("std::Vacuum"); if (!Vac) throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Vacuum is not found."); // Rohacell foam has density: 0.011g/cm3 const std::string RohacellName = "Rohacell"; const double RoDensity = 0.011*g/cm3; - GeoElement* C=materialManager->getElement("Carbon"); - GeoElement* H=materialManager->getElement("Hydrogen"); - GeoElement* O=materialManager->getElement("Oxygen"); - GeoElement* N=materialManager->getElement("Nitrogen"); + const GeoElement* C=materialManager->getElement("Carbon"); + const GeoElement* H=materialManager->getElement("Hydrogen"); + const GeoElement* O=materialManager->getElement("Oxygen"); + const GeoElement* N=materialManager->getElement("Nitrogen"); GeoMaterial* Rohacell = new GeoMaterial(RohacellName, RoDensity); Rohacell->add(C,0.6465); Rohacell->add(H,0.07836); @@ -176,8 +175,8 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionH62003::GetEnvelope() // Stainless Steel const std::string SSteelName = "StainlessSteel"; double SSDensity = 7.9*g/cm3; - GeoElement* Fe=materialManager->getElement("Iron"); - GeoElement* Cr=materialManager->getElement("Chromium"); + const GeoElement* Fe=materialManager->getElement("Iron"); + const GeoElement* Cr=materialManager->getElement("Chromium"); GeoMaterial* StainlessSteel = new GeoMaterial(SSteelName, SSDensity); StainlessSteel->add(Fe,0.90); StainlessSteel->add(Cr,0.10); @@ -881,7 +880,7 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionH62003::GetEnvelope() return m_H62003EnvelopePhysical; } -void LArGeo::LArDetectorConstructionH62003::createAxis(GeoFullPhysVol* H62003EnvelopePhysical, GeoMaterial* mat) +void LArGeo::LArDetectorConstructionH62003::createAxis(GeoFullPhysVol* H62003EnvelopePhysical, const GeoMaterial* mat) { std::string baseName = "LAr::TBH62003::"; double axisXYHalfLength = 2.5*m; diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.h b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.h index 7bd132dac6b..fcf39f0ef43 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.h +++ b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // LArDetectorConstructionH62003 @@ -31,7 +31,7 @@ namespace LArGeo { private: - void createAxis(GeoFullPhysVol* H62003MotherPhysical, GeoMaterial* mat); + void createAxis(GeoFullPhysVol* H62003MotherPhysical, const GeoMaterial* mat); GeoFullPhysVol* m_H62003EnvelopePhysical; diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorFactoryH62003.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorFactoryH62003.cxx index 4cea9870b09..0048d6b8184 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorFactoryH62003.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorFactoryH62003.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArDetectorFactoryH62003.h" @@ -18,7 +18,6 @@ #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelUtilities/StoredPhysVol.h" -#include "StoreGate/DataHandle.h" #include "StoreGate/StoreGateSvc.h" #include "GaudiKernel/MsgStream.h" @@ -64,11 +63,6 @@ void LArGeo::LArDetectorFactoryH62003::create( GeoPhysVol* a_container ) // Get access to the material manager: - DataHandle<StoredMaterialManager> materialManager; - if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { - throw std::runtime_error("Error in LArDetectorFactoryH62003, cannot access Material Manager"); - } - LArDetectorConstructionH62003 BeamLineDets; BeamLineDets.SetFCALVisLimit(m_fcalVisLimit); BeamLineDets.SetAxisVisState(m_axisVisState); diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorToolH62003.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorToolH62003.cxx index 6edf67089a9..b2f4fb4eb23 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorToolH62003.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorToolH62003.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArDetectorToolH62003.h" @@ -52,7 +52,7 @@ StatusCode LArDetectorToolH62003::create() log << MSG::INFO << "LAr Geometry Options:" << endmsg; // Locate the top level experiment node - DataHandle<GeoModelExperiment> theExpt; + GeoModelExperiment* theExpt = nullptr; if (StatusCode::SUCCESS != detStore()->retrieve( theExpt, "ATLAS" )) { log << MSG::ERROR << "Could not find GeoModelExperiment ATLAS" << endmsg; -- GitLab From f828014f8ec167dc21c8b48759234f61c34ac8e4 Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Thu, 22 Nov 2018 16:10:44 +0100 Subject: [PATCH 097/135] LArGeoEndcap: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: c6e8be7f42003378ae2b0563fc7f69f78e01192f --- .../LArGeoEndcap/EMECSupportConstruction.h | 16 ++++++--- .../LArGeoEndcap/EndcapCryostatConstruction.h | 5 ++- .../LArGeoEndcap/src/EMECConstruction.cxx | 17 ++++----- .../src/EMECSupportConstruction.cxx | 16 +++++---- .../src/EndcapCryostatConstruction.cxx | 36 +++++++++---------- .../LArGeoEndcap/src/EndcapDMConstruction.cxx | 11 +++--- .../src/EndcapPresamplerConstruction.cxx | 7 ++-- 7 files changed, 58 insertions(+), 50 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EMECSupportConstruction.h b/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EMECSupportConstruction.h index b89d457dc7d..08d202b1adc 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EMECSupportConstruction.h +++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EMECSupportConstruction.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** @@ -95,10 +95,16 @@ class EMECSupportConstruction std::string m_BaseName; double m_Position, m_PhiStart, m_PhiSize; - GeoMaterial *m_LAr, *m_Alu, *m_Gten, *m_PermaliE730; - GeoMaterial *m_G10FeInner, *m_G10FeOuter, *m_Kapton_Cu; - GeoMaterial *m_Cable, *m_Copper; - GeoMaterial *m_Lead; + const GeoMaterial* m_LAr; + const GeoMaterial* m_Alu; + const GeoMaterial* m_Gten; + const GeoMaterial* m_PermaliE730; + const GeoMaterial* m_G10FeInner; + const GeoMaterial* m_G10FeOuter; + const GeoMaterial* m_Kapton_Cu; + const GeoMaterial* m_Cable; + const GeoMaterial* m_Copper; + const GeoMaterial* m_Lead; IRDBRecordset_ptr m_DB_EmecGeometry, m_DB_EmecWheelParameters, m_DB_mn; IRDBRecordset_ptr m_DB_boxes, m_DB_numbers, m_DB_tubes, m_DB_pcons; diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EndcapCryostatConstruction.h b/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EndcapCryostatConstruction.h index 09fa51ffa48..57d04146ad8 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EndcapCryostatConstruction.h +++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EndcapCryostatConstruction.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** @@ -18,7 +18,6 @@ #include "LArGeoHec/HEC2WheelConstruction.h" #include "LArGeoFcal/FCALConstruction.h" #include "LArGeoEndcap/EMECConstruction.h" -#include "StoreGate/DataHandle.h" class IRDBAccessSvc; class IRDBRecord; @@ -65,7 +64,7 @@ namespace LArGeo { friend class ::LArDetectorToolNV; GeoPhysVol* buildMbtsTrd(const IRDBRecord* rec - , const DataHandle<StoredMaterialManager>& matmanager + , const StoredMaterialManager* matmanager , GeoPhysVol* parent); }; diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECConstruction.cxx index a7dc1ef3001..0c866b27039 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // EMECConstruction @@ -147,17 +147,17 @@ GeoFullPhysVol* LArGeo::EMECConstruction::GetEnvelope(bool bPos) << "================================================" << std::endl; - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if(StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0; ////////////////////////////////////////////////////////////////// // Get materials from the manager ////////////////////////////////////////////////////////////////// - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if(!LAr) throw std::runtime_error("Error in EMECConstruction, std::LiquidArgon is not found."); - GeoMaterial* innerAbsorberMaterial = 0; + const GeoMaterial* innerAbsorberMaterial = 0; std::string innerAbsorberMaterial_name = "LAr::EMEC_Thickabs"; if(mlabs > 0){ if(mlabs != 2){ @@ -175,7 +175,7 @@ GeoFullPhysVol* LArGeo::EMECConstruction::GetEnvelope(bool bPos) ); } - GeoMaterial* outerAbsorberMaterial = 0; + const GeoMaterial* outerAbsorberMaterial = 0; std::string outerAbsorberMaterial_name = "LAr::EMEC_Thinabs"; if(mlabs > 0){ if(mlabs != 2){ @@ -193,7 +193,8 @@ GeoFullPhysVol* LArGeo::EMECConstruction::GetEnvelope(bool bPos) ); } - GeoMaterial *Glue = 0, *Lead = 0; + const GeoMaterial *Glue = 0; + const GeoMaterial *Lead = 0; if(mlabs > 0){ // to be replaced with glue and lead - finished by Adam Agocs Glue = materialManager->getMaterial("LAr::Glue"); @@ -202,10 +203,10 @@ GeoFullPhysVol* LArGeo::EMECConstruction::GetEnvelope(bool bPos) if(!Lead) throw std::runtime_error("Error in EMECConstruction, LAr::Lead is not found."); } - GeoMaterial* innerElectrodMaterial = materialManager->getMaterial("LAr::KaptonC"); + const GeoMaterial* innerElectrodMaterial = materialManager->getMaterial("LAr::KaptonC"); if(!innerElectrodMaterial) throw std::runtime_error("Error in EMECConstruction, LAr::KaptonC is not found."); - GeoMaterial* outerElectrodMaterial = innerElectrodMaterial; + const GeoMaterial* outerElectrodMaterial = innerElectrodMaterial; ////////////////////////////////////////////////////////////////// // Define geometry diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECSupportConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECSupportConstruction.cxx index 9de61749dab..537bf556ce4 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECSupportConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECSupportConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // EMECSupportConstruction @@ -104,8 +104,10 @@ EMECSupportConstruction::EMECSupportConstruction if(svcLocator->service("DetectorStore", detStore, false) == StatusCode::FAILURE){ throw std::runtime_error("Error in EMECSupportConstruction, cannot access DetectorStore"); } - DataHandle<StoredMaterialManager> materialManager; - detStore->retrieve(materialManager, std::string("MATERIALS")); + const StoredMaterialManager* materialManager = nullptr; + if (detStore->retrieve(materialManager, std::string("MATERIALS")).isFailure()) { + throw std::runtime_error("Error in EMECSupportConstruction, cannot access MATERIALS"); + } m_PhiStart = 0.; m_PhiSize = CLHEP::twopi*CLHEP::rad; @@ -1689,11 +1691,13 @@ void EMECSupportConstruction::put_front_outer_extracyl(GeoPhysVol *motherPhysica if(svcLocator->service("DetectorStore", detStore, false) == StatusCode::FAILURE){ throw std::runtime_error("Error in EMECSupportConstruction/extracyl, cannot access DetectorStore"); } - DataHandle<StoredMaterialManager> materialManager; - detStore->retrieve(materialManager, std::string("MATERIALS")); + const StoredMaterialManager* materialManager = nullptr; + if (detStore->retrieve(materialManager, std::string("MATERIALS")).isFailure()) { + throw std::runtime_error("Error in EMECSupportConstruction: cannot find MATERIALS."); + } std::string material=(*m_DB_emecExtraCyl)[i]->getString("MATERIAL"); //lead - GeoMaterial *mat = materialManager->getMaterial(material); + const GeoMaterial *mat = materialManager->getMaterial(material); if (!mat) { throw std::runtime_error("Error in EMECSupportConstruction/extracyl,material for CylBeforePS is not found."); } diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapCryostatConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapCryostatConstruction.cxx index 52247bac9b6..36e803b82e2 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapCryostatConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapCryostatConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // EndcapCryostatConstruction @@ -140,39 +140,39 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos) // Get the materials from the material manager:-----------------------------------------------------// // // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; - GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); + const GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); if (!Lead) { throw std::runtime_error("Error in EndcapCryostatConstruction, std::Lead is not found."); } - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) { throw std::runtime_error("Error in EndcapCryostatConstruction, std::Air is not found."); } - GeoMaterial *Al = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Al = materialManager->getMaterial("std::Aluminium"); if (!Al) { throw std::runtime_error("Error in EndcapCryostatConstruction, std::Aluminium is not found."); } - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) { throw std::runtime_error("Error in EndcapCryostatConstruction, std::LiquidArgon is not found."); } - GeoMaterial *G10 = materialManager->getMaterial("LAr::G10"); + const GeoMaterial *G10 = materialManager->getMaterial("LAr::G10"); if (!G10) throw std::runtime_error("Error in EndcapCryostatConstruction, LAr::G10 is not found."); - GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); + const GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); if (!Copper) throw std::runtime_error("Error in EndcapCryostatConstruction, std::Copper is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in EndcapCryostatConstruction, std::Iron is not found."); - GeoMaterial *Polystyrene = materialManager->getMaterial("std::Polystyrene"); + const GeoMaterial *Polystyrene = materialManager->getMaterial("std::Polystyrene"); if (!Polystyrene) throw std::runtime_error("Error in EndcapCryostatConstruction, std::Polystyrene is not found."); // // @@ -334,7 +334,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos) double dphi=(*cryoExtraCyl)[i]->getDouble("DPHI"); if(dphi>6.28) dphi=2.*M_PI; std::string material=(*cryoExtraCyl)[i]->getString("MATERIAL"); //lead - GeoMaterial *mat = materialManager->getMaterial(material); + const GeoMaterial *mat = materialManager->getMaterial(material); if (!mat) { throw std::runtime_error("Error in EndcapCryostatConstruction,material for CylBeforePS is not found."); } @@ -398,7 +398,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos) currentRecord->getDouble("DZ")*CLHEP::cm / 2., (double) 0., (double) 2.*M_PI*CLHEP::rad); - GeoMaterial *material = materialManager->getMaterial(currentRecord->getString("MATERIAL")); + const GeoMaterial *material = materialManager->getMaterial(currentRecord->getString("MATERIAL")); if (!material) { std::ostringstream errorMessage; @@ -516,7 +516,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos) GeoFullPhysVol* totalEMHLArPhysical = new GeoFullPhysVol(totalEMHLArLogical); // Add brass plugs - GeoMaterial *PlugBrass(0); + const GeoMaterial *PlugBrass(0); for(size_t i(0);i<2;++i) { const planeIndMap& brassPlugPlanes = brassPlugPlanesVect[i]; if (brassPlugPlanes.size()) { @@ -737,7 +737,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos) double dzMM = (*itMother)->getDouble("DZ")*CLHEP::mm; zposMM = (*itMother)->getDouble("ZPOS")*CLHEP::mm; - GeoMaterial *matMM = materialManager->getMaterial((*itMother)->getString("MATERIAL")); + const GeoMaterial *matMM = materialManager->getMaterial((*itMother)->getString("MATERIAL")); GeoTube *tubeMM = new GeoTube(rminMM,rmaxMM,dzMM); @@ -770,7 +770,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos) double dzMod = (*itModerator)->getDouble("DZ")*CLHEP::mm; double zposMod = (*itModerator)->getDouble("ZPOS")*CLHEP::mm; - GeoMaterial *matMod = materialManager->getMaterial((*itModerator)->getString("MATERIAL")); + const GeoMaterial *matMod = materialManager->getMaterial((*itModerator)->getString("MATERIAL")); GeoTube* solidMod = new GeoTube(rminMM,rmaxMM,dzMod); GeoLogVol* lvMod = new GeoLogVol("Moderator",solidMod, matMod); @@ -854,7 +854,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos) GeoTube* tubeJM = new GeoTube((*mbtsTubs)[0]->getDouble("RMIN"), (*mbtsTubs)[0]->getDouble("RMAX"), (*mbtsTubs)[0]->getDouble("DZ")); - GeoMaterial* matJM = materialManager->getMaterial((*mbtsTubs)[0]->getString("MATERIAL")); + const GeoMaterial* matJM = materialManager->getMaterial((*mbtsTubs)[0]->getString("MATERIAL")); GeoLogVol* lvJM = new GeoLogVol("ModeratorJMTube",tubeJM, matJM); GeoPhysVol* pvJM = new GeoPhysVol(lvJM); @@ -890,7 +890,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos) } catch(std::runtime_error&) {} - GeoMaterial *matScin = materialManager->getMaterial(curScin->getString("MATERIAL")); + const GeoMaterial *matScin = materialManager->getMaterial(curScin->getString("MATERIAL")); std::ostringstream ostr; ostr << curScin->getInt("SCIN_ID"); @@ -1086,7 +1086,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos) } GeoPhysVol* LArGeo::EndcapCryostatConstruction::buildMbtsTrd(const IRDBRecord* rec - , const DataHandle<StoredMaterialManager>& matmanager + , const StoredMaterialManager* matmanager , GeoPhysVol* parent) { // Construct the Trd diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapDMConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapDMConstruction.cxx index 275438dfbf0..75f1f7af961 100644 --- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapDMConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapDMConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "EndcapDMConstruction.h" @@ -8,7 +8,6 @@ #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/IMessageSvc.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelKernel/GeoMaterial.h" #include "GeoModelKernel/GeoFullPhysVol.h" @@ -75,7 +74,7 @@ void LArGeo::EndcapDMConstruction::create(GeoFullPhysVol* envelope) throw std::runtime_error("Error in EndcapDMConstruction, cannot access RDBAccessSvc"); DecodeVersionKey keyLAr(geoModel, "LAr"); - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if(StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) throw std::runtime_error("Error in EndcapDMConstruction, stored MaterialManager is not found"); @@ -109,8 +108,8 @@ void LArGeo::EndcapDMConstruction::create(GeoFullPhysVol* envelope) unsigned int recordIndex; // Get materials - GeoMaterial *alu = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3 - GeoMaterial* matBoardsEnvelope = materialManager->getMaterial("LAr::BoardsEnvelope");// 0.932*CLHEP::gram/CLHEP::cm3); + const GeoMaterial *alu = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3 + const GeoMaterial* matBoardsEnvelope = materialManager->getMaterial("LAr::BoardsEnvelope");// 0.932*CLHEP::gram/CLHEP::cm3); ////----------- Building Front-end crates -------------------- recordIndex = tubeMap["Ped2"]; @@ -238,7 +237,7 @@ void LArGeo::EndcapDMConstruction::create(GeoFullPhysVol* envelope) // Build services IRDBRecordset_ptr EndcapDMTubes = rdbAccess->getRecordsetPtr("LArEndcapDMTubes",keyLAr.tag(),keyLAr.node()); if(EndcapDMTubes->size()) { - GeoMaterial* matECServices = materialManager->getMaterial("LAr::LArECServices"); + const GeoMaterial* matECServices = materialManager->getMaterial("LAr::LArECServices"); for(unsigned i(0); i<EndcapDMTubes->size(); ++i) { GeoTube* endcapTube = new GeoTube((*EndcapDMTubes)[i]->getDouble("RMIN"),(*EndcapDMTubes)[i]->getDouble("RMAX"),(*EndcapDMTubes)[i]->getDouble("DZ")); GeoLogVol* endcapTubeLv = new GeoLogVol((*EndcapDMTubes)[i]->getString("TUBENAME"),endcapTube,matECServices); diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapPresamplerConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapPresamplerConstruction.cxx index ad74198430d..727960b3b20 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapPresamplerConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapPresamplerConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArGeoEndcap/EndcapPresamplerConstruction.h" @@ -13,7 +13,6 @@ #include "GeoModelKernel/GeoNameTag.h" #include "GeoModelKernel/GeoIdentifierTag.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelKernel/GeoShapeUnion.h" @@ -68,10 +67,10 @@ GeoFullPhysVol* EndcapPresamplerConstruction::Envelope() throw std::runtime_error("Error in EndcapCryostatConstruction, cannot access DetectorStore"); } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0; - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) { throw std::runtime_error("Error in EndcapCryostatConstruction, std::LiquidArgon is not found."); } -- GitLab From 6ce5e5dd7fe00598de69d26952f84d5bbf894686 Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Thu, 22 Nov 2018 16:10:56 +0100 Subject: [PATCH 098/135] LArGeoBarrel: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: 71f6d5a023c28a876194a9a6386bbe96206e8e07 --- .../LArGeoBarrel/src/BarrelConstruction.cxx | 31 +++-- .../src/BarrelCryostatConstruction.cxx | 23 ++-- .../LArGeoBarrel/src/BarrelDMConstruction.cxx | 111 +++++++++--------- .../src/BarrelPresamplerConstruction.cxx | 31 +++-- 4 files changed, 96 insertions(+), 100 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelConstruction.cxx index a162af7ff48..e44bc1b2430 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ @@ -38,7 +38,6 @@ #include "GeoModelKernel/GeoBox.h" #include "GeoModelKernel/GeoTrap.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelUtilities/StoredPhysVol.h" @@ -212,48 +211,48 @@ void LArGeo::BarrelConstruction::MakeEnvelope() } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { throw std::runtime_error("Error in BarrelConstruction, stored MaterialManager is not found."); } - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in BarrelConstruction, std::Iron is not found."); - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in BarrelConstruction, std::LiquidArgon is not found."); - GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); + const GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); if (!Lead) throw std::runtime_error("Error in BarrelConstruction, std::Lead is not found."); - GeoMaterial *G10_bar = materialManager->getMaterial("LAr::G10_bar"); + const GeoMaterial *G10_bar = materialManager->getMaterial("LAr::G10_bar"); if (!G10_bar) throw std::runtime_error("Error in BarrelConstruction, LAr::G10_bar is not found."); - GeoMaterial *Moth_elect = materialManager->getMaterial("LAr::MBoards"); + const GeoMaterial *Moth_elect = materialManager->getMaterial("LAr::MBoards"); if (!Moth_elect) throw std::runtime_error("Error in BarrelConstruction, LAr::MBoards is not found."); - GeoMaterial *Cable_elect = materialManager->getMaterial("LAr::Cables"); + const GeoMaterial *Cable_elect = materialManager->getMaterial("LAr::Cables"); if (!Cable_elect) throw std::runtime_error("Error in BarrelConstruction, LAr::Cables is not found."); - GeoMaterial *Thin_abs = materialManager->getMaterial("LAr::Thinabs"); + const GeoMaterial *Thin_abs = materialManager->getMaterial("LAr::Thinabs"); if (!Thin_abs) throw std::runtime_error("Error in BarrelConstruction, LAr::Thinabs is not found."); - GeoMaterial *Thick_abs = materialManager->getMaterial("LAr::Thickabs"); + const GeoMaterial *Thick_abs = materialManager->getMaterial("LAr::Thickabs"); if (!Thick_abs) throw std::runtime_error("Error in BarrelConstruction, LAr::Thickabs is not found."); - GeoMaterial *Kapton_Cu = materialManager->getMaterial("LAr::KaptonC"); + const GeoMaterial *Kapton_Cu = materialManager->getMaterial("LAr::KaptonC"); if (!Kapton_Cu) throw std::runtime_error("Error in BarrelConstruction, LAr::KaptonC is not found."); - GeoMaterial *Sumb = materialManager->getMaterial("LAr::SBoard"); + const GeoMaterial *Sumb = materialManager->getMaterial("LAr::SBoard"); if (!Sumb) throw std::runtime_error("Error in BarrelConstruction, LAr::SBoard is not found."); - GeoMaterial *Glue = materialManager->getMaterial("LAr::Glue"); + const GeoMaterial *Glue = materialManager->getMaterial("LAr::Glue"); if (!Glue) throw std::runtime_error("Error in BarrelConstruction, LAr::Glue is not found."); - GeoElement *Pb = materialManager->getElement("Lead"); + const GeoElement *Pb = materialManager->getElement("Lead"); if (!Pb) throw std::runtime_error("Error in BarrelConstruction, element lead not found "); - GeoElement *Fe = materialManager->getElement("Iron"); + const GeoElement *Fe = materialManager->getElement("Iron"); if (!Fe) throw std::runtime_error("Error in BarrelConstruction, element Fe not found "); diff --git a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelCryostatConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelCryostatConstruction.cxx index fa5eb38dddc..ba3a3b00172 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelCryostatConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelCryostatConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // BarrelCryostatConstruction @@ -38,7 +38,6 @@ #include "GeoModelUtilities/StoredAlignX.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelUtilities/GeoDBUtils.h" -#include "StoreGate/DataHandle.h" #include "StoreGate/StoreGateSvc.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/Bootstrap.h" @@ -110,27 +109,27 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope() // Get the materials from the material manager:-----------------------------------------------------// // // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) { throw std::runtime_error("Error in BarrelCryostatConstruction, std::Air is not found."); } - GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); if (!Aluminium) { throw std::runtime_error("Error in BarrelCryostatConstruction, std::Aluminium is not found."); } - GeoMaterial *Titanium = materialManager->getMaterial("std::Titanium"); + const GeoMaterial *Titanium = materialManager->getMaterial("std::Titanium"); if (!Titanium) { Titanium = Aluminium; // No need to throw an error. Some configurations do not build anything out of titanium. // throw std::runtime_error("Error in BarrelCryostatConstruction, std::Titanium is not found."); } - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) { throw std::runtime_error("Error in BarrelCryostatConstruction, std::LiquidArgon is not found."); } @@ -306,7 +305,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope() if(currentRecord->getString("CYL_LOCATION")=="Barrel::CryoMother") { - GeoMaterial *material = materialManager->getMaterial(currentRecord->getString("MATERIAL")); + const GeoMaterial *material = materialManager->getMaterial(currentRecord->getString("MATERIAL")); if (!material) { @@ -507,7 +506,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope() double RhoPosB = cryoBoltsRecord->getDouble("RADIUS"); int index1 = cryoBoltsRecord->getInt("INDEXWALL1"); int index2 = cryoBoltsRecord->getInt("INDEXWALL2"); - GeoMaterial *bolt_material = materialManager->getMaterial(cryoBoltsRecord->getString("MATERIAL")); + const GeoMaterial *bolt_material = materialManager->getMaterial(cryoBoltsRecord->getString("MATERIAL")); if (!bolt_material) { throw std::runtime_error("Error in BarrelCryostatConstruction, material for bolt not found"); } @@ -597,7 +596,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope() // Throw in coil support block { - GeoMaterial* myMaterial; + const GeoMaterial* myMaterial; double length,height,width,pairSeparation,distFromRidge; int nPairTot,indexWall; IRDBRecordset_ptr newBlocks = rdbAccess->getRecordsetPtr("LArBarBumperBlocks", larVersionKey.tag(),larVersionKey.node()); @@ -846,7 +845,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope() currentRecord->getString("CYL_LOCATION")=="Barrel::TotalLAr") { bool isHalfLar = currentRecord->getString("CYL_LOCATION")=="Barrel::HalfLAr"; - GeoMaterial *material = materialManager->getMaterial(currentRecord->getString("MATERIAL")); + const GeoMaterial *material = materialManager->getMaterial(currentRecord->getString("MATERIAL")); if (!material) { std::ostringstream errorMessage; @@ -952,7 +951,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope() double dPhi = (*cryoPconPhiSect)[i]->getDouble("DPHI"); double centerPhi = startPhi + 0.5*dPhi; - GeoMaterial* material = materialManager->getMaterial((*cryoPconPhiSect)[i]->getString("MATERIAL")); + const GeoMaterial* material = materialManager->getMaterial((*cryoPconPhiSect)[i]->getString("MATERIAL")); if (!material) { std::string message = std::string("Error in BarrelCryostatConstruction! ") + (*cryoPconPhiSect)[i]->getString("MATERIAL") + std::string(" is not found."); throw std::runtime_error(message.c_str()); diff --git a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelDMConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelDMConstruction.cxx index 40b202a2dd3..04fc2df01cd 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelDMConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelDMConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ @@ -31,7 +31,6 @@ #include "GeoModelKernel/GeoShapeShift.h" #include "GeoModelKernel/GeoShapeSubtraction.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelInterfaces/IGeoModelSvc.h" @@ -83,7 +82,7 @@ static const double DYc=2771.6*tan(Alfa/2); void createSectorEnvelopes2FromDB (GeoFullPhysVol* envelope, - DataHandle<StoredMaterialManager>& materialManager, + const StoredMaterialManager& materialManager, std::map<std::string, unsigned int>& trdMap, IRDBRecordset& BarrelDMTrds, std::map<std::string, unsigned int>& trapMap, @@ -170,12 +169,12 @@ createSectorEnvelopes2FromDB (GeoFullPhysVol* envelope, double Spb2ytr = BarrelDMTraps[recordIndex]->getDouble("YTR"); double Spb2ztr = BarrelDMTraps[recordIndex]->getDouble("ZTR"); - GeoMaterial* matLArServices17 = materialManager->getMaterial("LAr::LArServices17");// 0.035*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices18 = materialManager->getMaterial("LAr::LArServices18");// 0.240*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices19 = materialManager->getMaterial("LAr::LArServices19");// 0.469*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices20 = materialManager->getMaterial("LAr::LArServices20");// 0.353*CLHEP::gram/CLHEP::cm3 - GeoMaterial *alu = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3 - GeoMaterial *air = materialManager->getMaterial("std::Air"); //0.001214 CLHEP::g/CLHEP::cm3 + const GeoMaterial* matLArServices17 = materialManager.getMaterial("LAr::LArServices17");// 0.035*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices18 = materialManager.getMaterial("LAr::LArServices18");// 0.240*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices19 = materialManager.getMaterial("LAr::LArServices19");// 0.469*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices20 = materialManager.getMaterial("LAr::LArServices20");// 0.353*CLHEP::gram/CLHEP::cm3 + const GeoMaterial *alu = materialManager.getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3 + const GeoMaterial *air = materialManager.getMaterial("std::Air"); //0.001214 CLHEP::g/CLHEP::cm3 HepGeom::Transform3D Cut3Boxe = HepGeom::Translate3D(Boxxtr, Boxytr, Boxztr)*HepGeom::RotateX3D(-20*CLHEP::deg)*HepGeom::RotateY3D(90*CLHEP::deg); HepGeom::Transform3D Cut4Boxe = HepGeom::Translate3D(Boxxtr, -Boxytr,Boxztr)*HepGeom::RotateX3D(20*CLHEP::deg)*HepGeom::RotateY3D(90*CLHEP::deg); @@ -293,7 +292,7 @@ void createBridgeEnvelopesFromDB (GeoFullPhysVol* envelope, std::map<std::string, unsigned int>& trapMap, IRDBRecordset& BarrelDMTraps, - GeoMaterial* matLArServices8, + const GeoMaterial* matLArServices8, GENFUNCTION& f) { unsigned int recordIndex = trapMap["BridgeE"]; @@ -329,7 +328,7 @@ void createBaseEnvelopesFromDB (GeoFullPhysVol* envelope, std::map<std::string, unsigned int>& trdMap, IRDBRecordset& BarrelDMTrds, - GeoMaterial* matLArServices8, + const GeoMaterial* matLArServices8, GENFUNCTION& f) { unsigned int recordIndex = trdMap["BaseE"]; @@ -358,7 +357,7 @@ createBaseEnvelopesFromDB (GeoFullPhysVol* envelope, void createFromDB (GeoFullPhysVol* envelope, IRDBAccessSvc* rdbAccess, IGeoModelSvc* geoModel, - DataHandle<StoredMaterialManager>& materialManager) + const StoredMaterialManager& materialManager) { // Use Geometry Database DecodeVersionKey keyLAr(geoModel,"LAr"); @@ -395,24 +394,24 @@ void createFromDB (GeoFullPhysVol* envelope, unsigned int recordIndex; // Get materials - GeoMaterial *alu = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3 - GeoMaterial* matBoardsEnvelope = materialManager->getMaterial("LAr::BoardsEnvelope");// 0.932*CLHEP::gram/CLHEP::cm3); - GeoMaterial* matLArServices1 = materialManager->getMaterial("LAr::LArServices1");// 1.020*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices2 = materialManager->getMaterial("LAr::LArServices2");// 0.955*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices3 = materialManager->getMaterial("LAr::LArServices3");// 1.005*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices4 = materialManager->getMaterial("LAr::LArServices4");// 0.460*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices5 = materialManager->getMaterial("LAr::LArServices5");// 0.480*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices6 = materialManager->getMaterial("LAr::LArServices6");// 1.000*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices7 = materialManager->getMaterial("LAr::LArServices7");// 0.935*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices8 = materialManager->getMaterial("LAr::LArServices8");// 1.070*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices9 = materialManager->getMaterial("LAr::LArServices9");// 1.020*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices10 = materialManager->getMaterial("LAr::LArServices10");// 0.995*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices11 = materialManager->getMaterial("LAr::LArServices11");// 0.835*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices12 = materialManager->getMaterial("LAr::LArServices12");// 0.640*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices13 = materialManager->getMaterial("LAr::LArServices13");// 0.690*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices14 = materialManager->getMaterial("LAr::LArServices14");// 0.825*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices15 = materialManager->getMaterial("LAr::LArServices15");// 0.875*CLHEP::gram/CLHEP::cm3 - GeoMaterial* matLArServices16 = materialManager->getMaterial("LAr::LArServices16");// 1.035*CLHEP::gram/CLHEP::cm3 + const GeoMaterial *alu = materialManager.getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3 + const GeoMaterial* matBoardsEnvelope = materialManager.getMaterial("LAr::BoardsEnvelope");// 0.932*CLHEP::gram/CLHEP::cm3); + const GeoMaterial* matLArServices1 = materialManager.getMaterial("LAr::LArServices1");// 1.020*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices2 = materialManager.getMaterial("LAr::LArServices2");// 0.955*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices3 = materialManager.getMaterial("LAr::LArServices3");// 1.005*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices4 = materialManager.getMaterial("LAr::LArServices4");// 0.460*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices5 = materialManager.getMaterial("LAr::LArServices5");// 0.480*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices6 = materialManager.getMaterial("LAr::LArServices6");// 1.000*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices7 = materialManager.getMaterial("LAr::LArServices7");// 0.935*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices8 = materialManager.getMaterial("LAr::LArServices8");// 1.070*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices9 = materialManager.getMaterial("LAr::LArServices9");// 1.020*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices10 = materialManager.getMaterial("LAr::LArServices10");// 0.995*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices11 = materialManager.getMaterial("LAr::LArServices11");// 0.835*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices12 = materialManager.getMaterial("LAr::LArServices12");// 0.640*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices13 = materialManager.getMaterial("LAr::LArServices13");// 0.690*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices14 = materialManager.getMaterial("LAr::LArServices14");// 0.825*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices15 = materialManager.getMaterial("LAr::LArServices15");// 0.875*CLHEP::gram/CLHEP::cm3 + const GeoMaterial* matLArServices16 = materialManager.getMaterial("LAr::LArServices16");// 1.035*CLHEP::gram/CLHEP::cm3 const double inv_Endab = 1. / (Endb - Enda); Variable i; @@ -659,7 +658,7 @@ void createFromDB (GeoFullPhysVol* envelope, double dy1 = DYa + (DYb-DYa)*(radiusMin-Enda)*inv_Endab; double dy2 = DYa + (DYb-DYa)*(radiusMax-Enda)*inv_Endab; double zpos=0.5*(radiusMax+radiusMin - (Endb+Enda)); - GeoMaterial *matExtraTdr = materialManager->getMaterial((*BarrelDMRing)[i]->getString("MATERIAL")); + const GeoMaterial *matExtraTdr = materialManager.getMaterial((*BarrelDMRing)[i]->getString("MATERIAL")); //std::cout << " extraTdr: etamin,etamx " << etaMin << " " << etaMax << " thickness " << thicknessExtra << " size in Radius " << (radiusMax-radiusMin) // << " size in R.phi " << dy1*2 << " " << dy2*2 << std::endl; @@ -688,7 +687,7 @@ void createFromDB (GeoFullPhysVol* envelope, int nphi=(*BarrelDMPhiBox)[i]->getInt("NPHI"); int noHorizontal = (*BarrelDMPhiBox)[i]->getInt("NOHORIZ"); - GeoMaterial* matExtraPPF1 = materialManager->getMaterial((*BarrelDMPhiBox)[i]->getString("MATERIAL")); + const GeoMaterial* matExtraPPF1 = materialManager.getMaterial((*BarrelDMPhiBox)[i]->getString("MATERIAL")); std::string boxName = "LAr::DM::SectorEnvelopes1::"+(*BarrelDMPhiBox)[i]->getString("BOXNAME"); //std::cout << " extraBox name " << boxName << " eta " << eta << " phi0" << phi0 << " deltaR " << deltaR << " deltaRphi " << deltaRphi @@ -934,7 +933,7 @@ void LArGeo::BarrelDMConstruction::create(GeoFullPhysVol* envelope) DecodeVersionKey larVersionKey(geoModel, "LAr"); - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { throw std::runtime_error("Error in BarrelDMConstruction, stored MaterialManager is not found."); @@ -959,20 +958,20 @@ void LArGeo::BarrelDMConstruction::create(GeoFullPhysVol* envelope) else if(strDMTopTag=="LArBarrelDM-00") { // Get some standard materials - GeoMaterial *air = materialManager->getMaterial("std::Air"); + const GeoMaterial *air = materialManager->getMaterial("std::Air"); const GeoMaterial *alu = materialManager->getMaterial("std::Aluminium"); //const GeoMaterial *c = materialManager->getMaterial("std::Carbon"); //const GeoMaterial *cu = materialManager->getMaterial("std::Copper"); - GeoMaterial *matXeCO2O2 = materialManager->getMaterial("trt::XeCO2O2"); - GeoMaterial *shieldSteel = materialManager->getMaterial("shield::ShieldSteel"); - GeoMaterial *matRubber = materialManager->getMaterial("sct::Rubber"); + const GeoMaterial *matXeCO2O2 = materialManager->getMaterial("trt::XeCO2O2"); + const GeoMaterial *shieldSteel = materialManager->getMaterial("shield::ShieldSteel"); + const GeoMaterial *matRubber = materialManager->getMaterial("sct::Rubber"); // Get required elements - GeoElement* silicon = materialManager->getElement("Silicon"); - GeoElement* oxygen = materialManager->getElement("Oxygen"); - GeoElement* hydrogen = materialManager->getElement("Hydrogen"); - GeoElement* carbon = materialManager->getElement("Carbon"); - GeoElement* copper = materialManager->getElement("Copper"); + const GeoElement* silicon = materialManager->getElement("Silicon"); + const GeoElement* oxygen = materialManager->getElement("Oxygen"); + const GeoElement* hydrogen = materialManager->getElement("Hydrogen"); + const GeoElement* carbon = materialManager->getElement("Carbon"); + const GeoElement* copper = materialManager->getElement("Copper"); // Define some custom materials - That will move to the GeomDB @@ -1201,21 +1200,21 @@ void LArGeo::BarrelDMConstruction::create(GeoFullPhysVol* envelope) else if(strDMTopTag=="LArBarrelDM-01" || strDMTopTag=="LArBarrelDM-02") { // Get some standard materials - GeoMaterial *air = materialManager->getMaterial("std::Air"); //0.001214 CLHEP::g/CLHEP::cm3 - GeoMaterial *alu = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3 - GeoMaterial *shieldSteel = materialManager->getMaterial("shield::ShieldSteel"); //8 CLHEP::g/CLHEP::cm3 - GeoMaterial *matCO2 = materialManager->getMaterial("trt::CO2"); //0.001842 CLHEP::g/CLHEP::cm3 - GeoMaterial *matKapton = materialManager->getMaterial("std::Kapton"); // 1.42*CLHEP::gram/CLHEP::cm3 - GeoMaterial *matC3F8 = materialManager->getMaterial("std::C3F8"); //1.032*CLHEP::gram/CLHEP::cm3 + const GeoMaterial *air = materialManager->getMaterial("std::Air"); //0.001214 CLHEP::g/CLHEP::cm3 + const GeoMaterial *alu = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3 + const GeoMaterial *shieldSteel = materialManager->getMaterial("shield::ShieldSteel"); //8 CLHEP::g/CLHEP::cm3 + const GeoMaterial *matCO2 = materialManager->getMaterial("trt::CO2"); //0.001842 CLHEP::g/CLHEP::cm3 + const GeoMaterial *matKapton = materialManager->getMaterial("std::Kapton"); // 1.42*CLHEP::gram/CLHEP::cm3 + const GeoMaterial *matC3F8 = materialManager->getMaterial("std::C3F8"); //1.032*CLHEP::gram/CLHEP::cm3 // Get required elements - GeoElement* silicon = materialManager->getElement("Silicon"); - GeoElement* oxygen = materialManager->getElement("Oxygen"); - GeoElement* hydrogen = materialManager->getElement("Hydrogen"); - GeoElement* carbon = materialManager->getElement("Carbon"); - GeoElement* copper = materialManager->getElement("Copper"); - GeoElement* nitrogen = materialManager->getElement("Nitrogen"); - GeoElement* fluorine = materialManager->getElement("Fluorine"); + const GeoElement* silicon = materialManager->getElement("Silicon"); + const GeoElement* oxygen = materialManager->getElement("Oxygen"); + const GeoElement* hydrogen = materialManager->getElement("Hydrogen"); + const GeoElement* carbon = materialManager->getElement("Carbon"); + const GeoElement* copper = materialManager->getElement("Copper"); + const GeoElement* nitrogen = materialManager->getElement("Nitrogen"); + const GeoElement* fluorine = materialManager->getElement("Fluorine"); // Define some custom materials - That will move to the GeomDB @@ -1578,7 +1577,7 @@ void LArGeo::BarrelDMConstruction::create(GeoFullPhysVol* envelope) } else { - LArGeo::BarrelDM::createFromDB (envelope, rdbAccess, geoModel, materialManager); + LArGeo::BarrelDM::createFromDB (envelope, rdbAccess, geoModel, *materialManager); } } diff --git a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelPresamplerConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelPresamplerConstruction.cxx index d9b648e564e..c35aac31d91 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelPresamplerConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelPresamplerConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArGeoBarrel/BarrelPresamplerConstruction.h" @@ -26,7 +26,6 @@ #include "GeoModelKernel/GeoTrap.h" #include "GeoModelKernel/GeoTrd.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" @@ -82,47 +81,47 @@ LArGeo::BarrelPresamplerConstruction ::BarrelPresamplerConstruction(bool fullGeo } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { throw std::runtime_error("Error in BarrelPresamplerConstruction, stored MaterialManager is not found."); } - GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); + const GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); if (!Copper) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Copper is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Iron is not found."); - GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); + const GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); if (!Lead) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Lead is not found."); - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::LiquidArgon is not found."); - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Air is not found."); - GeoMaterial *Kapton = materialManager->getMaterial("std::Kapton"); + const GeoMaterial *Kapton = materialManager->getMaterial("std::Kapton"); if (!Kapton) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Kapton is not found."); - GeoMaterial *Glue = materialManager->getMaterial("LAr::Glue"); + const GeoMaterial *Glue = materialManager->getMaterial("LAr::Glue"); if (!Glue) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::Glue is not found."); - GeoMaterial *G10 = materialManager->getMaterial("LAr::G10"); + const GeoMaterial *G10 = materialManager->getMaterial("LAr::G10"); if (!G10) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::G10 is not found."); - GeoMaterial *FR4 = materialManager->getMaterial("LAr::FR4"); + const GeoMaterial *FR4 = materialManager->getMaterial("LAr::FR4"); if (!FR4) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::FR4 is not found."); - GeoMaterial *MBMat = materialManager->getMaterial("LAr::MBMat"); + const GeoMaterial *MBMat = materialManager->getMaterial("LAr::MBMat"); if (!MBMat) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::MBMat is not found."); - GeoMaterial *AnodeMat = materialManager->getMaterial("LAr::AnodeMat"); + const GeoMaterial *AnodeMat = materialManager->getMaterial("LAr::AnodeMat"); if (!AnodeMat) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::AnodeMat is not found."); - GeoMaterial *CathodeMat = materialManager->getMaterial("LAr::CathodeMat"); + const GeoMaterial *CathodeMat = materialManager->getMaterial("LAr::CathodeMat"); if (!CathodeMat) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::CathodeMat is not found."); - GeoMaterial *ConnecMat = materialManager->getMaterial("LAr::ConnecMat"); + const GeoMaterial *ConnecMat = materialManager->getMaterial("LAr::ConnecMat"); if (!ConnecMat) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::ConnecMat is not found."); // double rMinPresamplerMother =1385*CLHEP::mm; double rMinPresamplerMother =1410*CLHEP::mm; -- GitLab From 453cf03513e45b9bcf20b2cd763337d555015dae Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Thu, 22 Nov 2018 16:11:09 +0100 Subject: [PATCH 099/135] LArGeoAlgsNV: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Former-commit-id: 0a021c0fe5a2d4c855da9f6b91855cae42acea64 --- .../LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx | 5 ++--- .../LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx index 1307bc50fc8..a7084dbe852 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArDetectorFactory.h" @@ -22,7 +22,6 @@ #include "LArGeoCode/LArMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelUtilities/GeoDBUtils.h" -#include "StoreGate/DataHandle.h" #include "StoreGate/StoreGateSvc.h" #include "GaudiKernel/MsgStream.h" @@ -113,7 +112,7 @@ void LArGeo::LArDetectorFactory::create( GeoPhysVol* a_container ) } - DataHandle<StoredMaterialManager> materialManager; + StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { throw std::runtime_error("Error in LArDetectorFactory, cannot access Material Manager"); } diff --git a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx index dfeda29711e..3649ee77945 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArReadoutGeometry/FCAL_ChannelMap.h" @@ -157,7 +157,7 @@ StatusCode LArDetectorToolNV::create() log << MSG::INFO << " Endcap = " << (m_buildEndcap ? "ON" : "OFF") << endmsg; // Locate the top level experiment node - DataHandle<GeoModelExperiment> theExpt; + GeoModelExperiment* theExpt = nullptr; if (StatusCode::SUCCESS != detStore()->retrieve( theExpt, "ATLAS" )) { log << MSG::ERROR << "Could not find GeoModelExperiment ATLAS" << endmsg; -- GitLab From 6292678dc5141fddef924ddb5d0f60bddd897789 Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Thu, 22 Nov 2018 16:11:22 +0100 Subject: [PATCH 100/135] LArGeoFcal: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: a7eae741d5dbad310d95146f21ea0b5af0844c38 --- .../LArGeoFcal/src/FCALConstruction.cxx | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoFcal/src/FCALConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoFcal/src/FCALConstruction.cxx index 149d06803b0..a5cea07bfc3 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoFcal/src/FCALConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoFcal/src/FCALConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArReadoutGeometry/FCAL_ChannelMap.h" @@ -23,7 +23,6 @@ #include "GeoModelKernel/GeoBox.h" #include "GeoModelKernel/GeoTrap.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelUtilities/DecodeVersionKey.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelInterfaces/IGeoModelSvc.h" @@ -120,44 +119,44 @@ GeoVFullPhysVol* LArGeo::FCALConstruction::GetEnvelope(bool bPos) throw std::runtime_error("Error in FCALConstruction, cannot access DetectorStore"); } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; - GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); + const GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); if (!Copper) throw std::runtime_error("Error in FCALConstruction, std::Copper is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in FCALConstruction, std::Iron is not found."); - GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); + const GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); if (!Lead) throw std::runtime_error("Error in FCALConstruction, std::Lead is not found."); - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in FCALConstruction, std::LiquidArgon is not found."); - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in FCALConstruction, std::Air is not found."); - GeoMaterial *Kapton = materialManager->getMaterial("std::Kapton"); + const GeoMaterial *Kapton = materialManager->getMaterial("std::Kapton"); if (!Kapton) throw std::runtime_error("Error in FCALConstruction, std::Kapton is not found."); - GeoMaterial *Glue = materialManager->getMaterial("LAr::Glue"); + const GeoMaterial *Glue = materialManager->getMaterial("LAr::Glue"); if (!Glue) throw std::runtime_error("Error in FCALConstruction, LAr::Glue is not found."); - GeoMaterial *G10 = materialManager->getMaterial("LAr::G10"); + const GeoMaterial *G10 = materialManager->getMaterial("LAr::G10"); if (!G10) throw std::runtime_error("Error in FCALConstruction, LAr::G10 is not found."); - GeoMaterial *FCal1Absorber = materialManager->getMaterial("LAr::FCal1Absorber"); + const GeoMaterial *FCal1Absorber = materialManager->getMaterial("LAr::FCal1Absorber"); if (!FCal1Absorber) throw std::runtime_error("Error in FCALConstruction, LAr::FCal1Absorber is not found."); - GeoMaterial *FCal23Absorber = materialManager->getMaterial("LAr::FCal23Absorber"); + const GeoMaterial *FCal23Absorber = materialManager->getMaterial("LAr::FCal23Absorber"); if (!FCal23Absorber) throw std::runtime_error("Error in FCALConstruction, LAr::FCal23Absorber is not found."); - GeoMaterial *FCalCableHarness = materialManager->getMaterial("LAr::FCalCableHarness"); + const GeoMaterial *FCalCableHarness = materialManager->getMaterial("LAr::FCalCableHarness"); if (!FCalCableHarness) throw std::runtime_error("Error in FCALConstruction, LAr::FCalCableHarness is not found."); - GeoMaterial *FCal23Slugs = materialManager->getMaterial("LAr::FCal23Slugs"); + const GeoMaterial *FCal23Slugs = materialManager->getMaterial("LAr::FCal23Slugs"); if (!FCal23Slugs) throw std::runtime_error("Error in FCALConstruction, LAr::FCal23Slugs is not found."); -- GitLab From fac101a3dafd665e0231aeea2804ad06b83d6fff Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Fri, 23 Nov 2018 17:54:03 +0100 Subject: [PATCH 101/135] Update packages:TriggerRelease TrigAnalysisTest TriggerTest TrigValAlgs TrigValTools from upstream/21.0-TrigMC to upstream/master via pseudo-merge Former-commit-id: 48b217c1a8025c13fd1acee8d069ccfa448b439d --- .../Testing/TrigAnalysisTest.conf | 12 +- .../TrigValTools/bin/atn_summary_ART.pl | 243 ++- .../TrigValTools/bin/trigtest_ART.pl | 1393 +++++++++++++++++ .../TriggerTest/Testing/TriggerTest.conf | 14 +- .../test/test_mc_pp_v7_bulkmcprod_grid.sh | 30 + .../test/test_mc_pp_v7_cpsampleprod_grid.sh | 30 + .../test_mc_pp_v7_triggervalidation_grid.sh | 30 + .../TriggerTest/test/test_slice_l1_grid.sh | 2 +- .../TriggerRelease/share/runHLT_standalone.py | 4 + 9 files changed, 1687 insertions(+), 71 deletions(-) create mode 100755 Trigger/TrigValidation/TrigValTools/bin/trigtest_ART.pl create mode 100755 Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh create mode 100755 Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh create mode 100755 Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh diff --git a/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf b/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf index f00537647de..8244aa37ce0 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf +++ b/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf @@ -421,15 +421,15 @@ test 33 post_command checkxAOD.py AOD.pool.root > AOD.checkxAODFile.txt test 34 - doc runs trigger from RDO writes AOD, MC_pp_v7_tight_mc_prescales menu - name AthenaTrigRDOtoAOD_MC_pp_v7_tight_mc_prescales + doc runs trigger from RDO writes AOD, MC_pp_v7_BulkMCProd_mc_prescales menu + name AthenaTrigRDOtoAOD_MC_pp_v7_BulkMCProd_mc_prescales joboptions testAthenaTrigRDOtoAOD.py - athena_cmd athena.py -c 'menu="MC_pp_v7_tight_mc_prescales"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' + athena_cmd athena.py -c 'menu="MC_pp_v7_BulkMCProd_mc_prescales"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' checklog --config checklogTriggerTest.conf --showexcludestats pre_command RecExCommon_links.sh - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaRDOtoAOD_MC_pp_v7_tight_mc_prescales.reference - regtest TrigSteer_HLT.TrigChainMoniValidation REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaRDOtoAOD_MC_pp_v7_tight_mc_prescales_HLT.TrigChainMoniValidation.reference -# edmcheck diffPoolFiles.py AOD.pool.root /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaTrigRDOtoAOD_AOD_MC_pp_v7_tight_mc_prescales.pool.root + fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaRDOtoAOD_MC_pp_v7_BulkMCProd_mc_prescales.reference + regtest TrigSteer_HLT.TrigChainMoniValidation REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaRDOtoAOD_MC_pp_v7_BulkMCProd_mc_prescales_HLT.TrigChainMoniValidation.reference +# edmcheck diffPoolFiles.py AOD.pool.root /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaTrigRDOtoAOD_AOD_MC_pp_v7_BulkMCProd_mc_prescales.pool.root post_command checkFile.py AOD.pool.root > AOD.pool.root.checkFile post_command checkFileTrigSize_RTT.py >AODTrigsum.txt post_command checkxAOD.py AOD.pool.root > AOD.checkxAODFile.txt diff --git a/Trigger/TrigValidation/TrigValTools/bin/atn_summary_ART.pl b/Trigger/TrigValidation/TrigValTools/bin/atn_summary_ART.pl index 179a8d30b8b..e90ca91cf87 100755 --- a/Trigger/TrigValidation/TrigValTools/bin/atn_summary_ART.pl +++ b/Trigger/TrigValidation/TrigValTools/bin/atn_summary_ART.pl @@ -4,7 +4,7 @@ use File::Basename; use Date::Manip::Date; # Produce summary table for trigtest.pl tests in same dir or first parameter to script -my $output="index.html"; +my $output="index.php"; # If given, use first argument as output file if ($#ARGV>=0) { @@ -166,12 +166,145 @@ sub main(){ open HTMLOUT, "> $output" or die "failed to write to $output: $!"; print HTMLOUT "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\"> <html>\n<head>\n<script type=\"text/javascript\" src=\"http://atlas-project-trigger-release-validation.web.cern.ch/atlas-project-trigger-release-validation/www/js/sorttable.js\"></script>\n<script type=\"text/javascript\" src=\"http://atlas-project-trigger-release-validation.web.cern.ch/atlas-project-trigger-release-validation/www/js/suitehighlight.min.js\"></script>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" > -<title>Trigger ATN results for $project,$gitbranch,$release</title>\n +<title>Trigger ART results for $project,$gitbranch,$release</title>\n +<script type=\"text/javascript\" src=\"https://www.gstatic.com/charts/loader.js\"></script> +<script type=\"text/javascript\"> + + google.charts.load('current', {packages: ['corechart', 'line']}); + google.charts.setOnLoadCallback(drawCrosshairs17000); + google.charts.setOnLoadCallback(drawCrosshairs9000); + + function drawCrosshairs17000() { + var data = new google.visualization.DataTable(); + + data.addColumn('string', 'Nightly'); + + <?php + + \$nightlies = glob(dirname(__FILE__) . '/../../*'); + \$nightlies = array_values(\$nightlies); + \$content = file_get_contents(dirname(__FILE__).'/test_HLT_physicsV7_menu_ART_and_ROSsim_build/HLT_physicsV7_ROSsim_17000/ATLASros2rob2018.py'); + //echo \$content; + preg_match_all('/ROS-.[A-Z]+-.[A-Z]+-.[0-9]+/i',\$content,\$ROSes); + \$ROSes = array_values(\$ROSes); + foreach(\$ROSes as \$ros){ + \$ros = array_values(\$ros); + foreach(\$ros as \$ros1){ + echo \" data.addColumn('number', '\$ros1'); \\n\"; + } + } + + echo \" data.addRows([\"; + foreach(\$nightlies as \$nightly){ + \$content = file_get_contents(\$nightly.'/TrigP1Test/test_HLT_physicsV7_menu_ART_and_ROSsim_build/HLT_physicsV7_ROSsim_17000/ROStest.reference.new'); + //echo \$content.'\\n'; + echo \" ['\".basename(\$nightly).\"',\"; + foreach(\$ROSes as \$ros){ + \$ros = array_values(\$ros); + foreach(\$ros as \$ros1){ + //echo \$ros1.'\\n'; + \$matched = preg_match_all('/'.\$ros1.'.[ \\t]+[|].[ \\t]+.[0-9]+.[ \t]+[|](.[.0-9]+)/', \$content,\$rates); + if(\$matched) echo \$rates[1][0].\",\"; + else echo \"0.,\"; + //print_r(\$rates); + } + } + echo \"],\"; + } + echo \" ]);\"; + ?> + + var options = { + title: 'ROS request rates in rejected events for lumi 1.7e34', + hAxis: { + title: 'Nightly' + }, + vAxis: { + title: 'ROS request rate' + }, + //colors: ['#a52714', '#097138'], + crosshair: { + color: '#000', + trigger: 'selection' + } + }; + + var chart = new google.visualization.LineChart(document.getElementById('chart_div17000')); + + chart.draw(data, options); + + } + + function drawCrosshairs9000() { + var data = new google.visualization.DataTable(); + + data.addColumn('string', 'Nightly'); + + <?php + + \$nightlies = glob(dirname(__FILE__) . '/../../*'); + \$nightlies = array_values(\$nightlies); + \$content = file_get_contents(dirname(__FILE__).'/test_HLT_physicsV7_menu_ART_and_ROSsim_build/HLT_physicsV7_ROSsim_9000/ATLASros2rob2018.py'); + //echo \$content; + preg_match_all('/ROS-.[A-Z]+-.[A-Z]+-.[0-9]+/i',\$content,\$ROSes); + \$ROSes = array_values(\$ROSes); + foreach(\$ROSes as \$ros){ + \$ros = array_values(\$ros); + foreach(\$ros as \$ros1){ + echo \" data.addColumn('number', '\$ros1'); \\n\"; + } + } + + echo \" data.addRows([\"; + foreach(\$nightlies as \$nightly){ + \$content = file_get_contents(\$nightly.'/TrigP1Test/test_HLT_physicsV7_menu_ART_and_ROSsim_build/HLT_physicsV7_ROSsim_9000/ROStest.reference.new'); + //echo \$content.'\\n'; + echo \" ['\".basename(\$nightly).\"',\"; + foreach(\$ROSes as \$ros){ + \$ros = array_values(\$ros); + foreach(\$ros as \$ros1){ + //echo \$ros1.'\\n'; + \$matched = preg_match_all('/'.\$ros1.'.[ \\t]+[|].[ \\t]+.[0-9]+.[ \t]+[|](.[.0-9]+)/', \$content,\$rates); + if(\$matched) echo \$rates[1][0].\",\"; + else echo \"0.,\"; + //print_r(\$rates); + } + } + echo \"],\"; + } + echo \" ]);\"; + ?> + + var options = { + title: 'ROS request rates in rejected events for lumi 0.9e34', + hAxis: { + title: 'Nightly' + }, + vAxis: { + title: 'ROS request rate' + }, + //colors: ['#a52714', '#097138'], + crosshair: { + color: '#000', + trigger: 'selection' + } + }; + + var chart = new google.visualization.LineChart(document.getElementById('chart_div9000')); + + chart.draw(data, options); + + } + +</script> <script type=\"text/javascript\"> var thisRelease = null; var loaded = false; + + + function highlightDiffs(clear) { var table1 = document.getElementById('ATNResults'); var table2 = null; @@ -203,7 +336,7 @@ function highlightDiffs(clear) { function setDiffCount(diffs) { if (diffs>0) { - document.getElementById('nDiffs').textContent = diffs+' differences'; + document.getElementById('nDiffs').innerHTML = '<a href=\"https://gitlab.cern.ch/atlas/athena/compare/nightly%2F21.1%2F'+document.DiffForm.rel.value+'...nightly%2F21.1%2F'+thisRelease+'\">'+diffs+' differences! click here for GitLab diff</a>'; } else { document.getElementById('nDiffs').textContent = ''; @@ -216,7 +349,7 @@ function loadPage() { if (diffRelease != thisRelease) { // Load second summary page in hidden iframe var url = window.document.location.href; - iframe.src = url.replace(/rel_[0-6]/, diffRelease); + iframe.src = url.replace(/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9][0-9][0-9]/, diffRelease); } else { highlightDiffs(true); // remove all highlighting @@ -225,7 +358,7 @@ function loadPage() { function setRelease() { var url = window.document.location.href; - thisRelease = url.match(/rel_[0-6]/); + thisRelease = url.match(/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9][0-9][0-9]/); if (thisRelease) { thisRelease = thisRelease[0]; document.DiffForm.rel.value = thisRelease; @@ -256,7 +389,7 @@ function showBuildFailures(failures,link) { tr.hi:hover {background-color:#E6E6E6;} </style> <body onload=\"highlightSuite({id:'ATNResults'});setDiffCount(0);\"> -<h1>Trigger ATN test results summary</h1> +<h1>Trigger ART test results summary</h1> <form name=\"DiffForm\"> "; @@ -265,64 +398,57 @@ function showBuildFailures(failures,link) { my $testWWWPage=getTestWWWPage(); my $nicosWWWPage=dirname($testWWWPage); - print HTMLOUT "<p>Last updated $now</p>\n"; - - my $atn_relno = $atn_rel; - $atn_relno =~ s/rel_//; - print HTMLOUT "<p><a href=\"".$testWWWPage."\">Nightly test</a>: $project,$gitbranch,<b>$release</b> ($atn_platform)"; - print HTMLOUT "<script src=\"".$nicosWWWPage."/build_failures_".$atn_relno.".js\" language=\"JavaScript\"></script>\n"; - print HTMLOUT "<script type=\"text/javascript\">showBuildFailures(failures_".$atn_relno."(),"."\"".$nicosWWWPage."/nicos_buildsummary_".$atn_relno.".html\")</script>"; - - # Link to GitLab diff between today's and yesterday's release - my $fmt="%Y-%m-%dT%H%M"; - my $date = new Date::Manip::Date; - $date->parse_format($fmt,$release); - my $delta = $date->new_delta(); - $delta->set(d => -1); # minus 1 day - my $yesterday = $date->calc($delta); - my $prevrel = $yesterday->printf($fmt); - my $gitdiff = "https://gitlab.cern.ch/atlas/athena/compare/nightly%2F$gitbranch%2F$prevrel...nightly%2F$gitbranch%2F$release"; - - print HTMLOUT "<br>Other nightlies: "; - if (defined $no_of_nightlies_exceptions{$project}){ - $no_of_nightlies=$no_of_nightlies_exceptions{$project}; - print "$project exceptionally has $no_of_nightlies nightly builds\n"; - } else { - print "$project normally has $no_of_nightlies nightly builds\n"; - } - - my @dow = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); - for (my $i=0; $i<$no_of_nightlies; $i++){ - if ("rel_$i" eq $atn_rel){ - print HTMLOUT " $dow[$i] "; - } else { - my $p=getrelpath(); - $p =~ s/rel_\d/rel_$i/; - $p =~ s/rel_nightly/rel_$i/; - print HTMLOUT " <a href=\"$p\">$dow[$i]</a> "; - } - } - - print HTMLOUT " -<a href=\"$gitdiff\">GitLab diff</a> - Diff results: <select name=\"rel\" size=\"1\" onchange=\"loadPage()\"> -<option value='rel_0'>Sun</option> -<option value='rel_1'>Mon</option> -<option value='rel_2'>Tue</option> -<option value='rel_3'>Wed</option> -<option value='rel_4'>Thu</option> -<option value='rel_5'>Fri</option> -<option value='rel_6'>Sat</option> -</select> <span id='nDiffs' style='font-weight:bold'></span> + print HTMLOUT "<p>Last updated $now. Contact: Daniele.Zanzi @ cern.ch</p>\n"; + +# my $atn_relno = $atn_rel; +# $atn_relno =~ s/rel_//; +# print HTMLOUT "<p><a href=\"".$testWWWPage."\">Nightly test</a>: $project,$gitbranch,<b>$release</b> ($atn_platform)"; +# print HTMLOUT "<script src=\"".$nicosWWWPage."/build_failures_".$atn_relno.".js\" language=\"JavaScript\"></script>\n"; +# print HTMLOUT "<script type=\"text/javascript\">showBuildFailures(failures_".$atn_relno."(),"."\"".$nicosWWWPage."/nicos_buildsummary_".$atn_relno.".html\")</script>"; +# + my $test_suite = gettestpkgdir(); # this is a basename of pwd (expected to be e.g. TrigP1Test) + print HTMLOUT "<p>Nightly test: $project, $gitbranch, $release\n\n"; + print HTMLOUT " Check other builds: <select name=\"select_other_builds\" onchange=\"location = this.value;\">\n"; + print HTMLOUT "<option value=\"\" selected=\"selected\">-----</option>\n"; + print HTMLOUT "<?php\n"; + print HTMLOUT " \$nightlies = glob(dirname(__FILE__) . '/../../*');\n"; + print HTMLOUT " \$nightlies = array_reverse(\$nightlies);\n"; + print HTMLOUT " \$current_page_link = \"\$_SERVER[REQUEST_URI]\";\n"; + print HTMLOUT " // protect against multiple slashes in a row\n"; + print HTMLOUT " \$current_page_link = preg_replace('#/+#','/',\$current_page_link);\n"; + print HTMLOUT " \$full_link = (isset(\$_SERVER['HTTPS']) ? \"https\" : \"http\") . \"://\$_SERVER[HTTP_HOST]\" . \$current_page_link;\n"; + print HTMLOUT " foreach(\$nightlies as \$nightly){\n"; + print HTMLOUT " \$nightly = basename(\$nightly);\n"; + print HTMLOUT " echo \"<option value='\" . \$full_link . \"../../\" . \$nightly . \"/$test_suite/\" . \"'>\".\$nightly.\"</option>\";\n"; + print HTMLOUT " }\n"; + print HTMLOUT "?>\n"; + print HTMLOUT "</select></p>\n"; + + print HTMLOUT "<p>Check differences: <select name=\"rel\" size=\"1\" onchange=\"loadPage()\">\n"; + print HTMLOUT "<option value=\"\" selected=\"selected\">-----</option>\n"; + print HTMLOUT "<?php\n"; + print HTMLOUT " \$nightlies = glob(dirname(__FILE__) . '/../../*');\n"; + print HTMLOUT " \$nightlies = array_reverse(\$nightlies);\n"; + print HTMLOUT " \$current_page_link = \"\$_SERVER[REQUEST_URI]\";\n"; + print HTMLOUT " // protect against multiple slashes in a row\n"; + print HTMLOUT " \$current_page_link = preg_replace('#/+#','/',\$current_page_link);\n"; + print HTMLOUT " \$full_link = (isset(\$_SERVER['HTTPS']) ? \"https\" : \"http\") . \"://\$_SERVER[HTTP_HOST]\" . \$current_page_link;\n"; + print HTMLOUT " foreach(\$nightlies as \$nightly){\n"; + print HTMLOUT " \$nightly = basename(\$nightly);\n"; + print HTMLOUT " echo \"<option value='\".\$nightly.\"'>\".\$nightly.\"</option>\";\n"; + print HTMLOUT " }\n"; + print HTMLOUT "?>\n"; + print HTMLOUT "</select> <span id='nDiffs' style='font-weight:bold'></span> </form><script type=\"text/javascript\">setRelease();</script></p>"; + print HTMLOUT "\n<table class=\"sortable\" id=\"ATNResults\" border=1><thead><tr> <th title=\"Click to sort by test suite\">Test name</th> <th>Overall Result</th> <th title=\"exit code of Athena\">Athena exit</th> <th title=\"presence of any error messages in log\">Error Msgs</th> <th title=\"number of warning messages in log\">Warn Msgs</th> -<th>Reg. tests</th> +<th>Reg. tests (incl. WARNING)</th> <th title=\"expert histogram exact comparison to ref\">Root comp</th> <th title=\"L2 + EF chain and trigger element counts within tolerance w.r.t. ref\"> Chain, TE cnts </th> <th title=\"athena wall time in secs\">Time (s)</th> @@ -502,7 +628,10 @@ function showBuildFailures(failures,link) { print HTMLOUT "<a href=\"atn_timeline.png\"> [timeline plot]</a>"; print HTMLOUT "</font>"; } - print HTMLOUT '<iframe onload="highlightDiffs(false)" id="DiffFrame" style="visibility:hidden;display:none;"></iframe></body></html>'; + print HTMLOUT '<iframe onload="highlightDiffs(false)" id="DiffFrame" style="visibility:hidden;display:none;"></iframe>'; + print HTMLOUT '<div id="chart_div17000" style="float: left; width: 50%; height: 500px"></div>'; + print HTMLOUT '<div id="chart_div9000" style="float: right; width: 50%; height: 500px"></div>'; + print HTMLOUT '</body></html>'; close HTMLOUT; } diff --git a/Trigger/TrigValidation/TrigValTools/bin/trigtest_ART.pl b/Trigger/TrigValidation/TrigValTools/bin/trigtest_ART.pl new file mode 100755 index 00000000000..4e7729dfbd4 --- /dev/null +++ b/Trigger/TrigValidation/TrigValTools/bin/trigtest_ART.pl @@ -0,0 +1,1393 @@ +#!/usr/bin/perl -w +# Script to manage Trigger tests +# $Id: trigtest.pl,v 1.16 2009-05-20 15:53:22 sgeorge Exp $ + +use Getopt::Long; +use File::Basename; +use File::Spec; +use File::Copy; +use File::Path; +use constant TRUE => 1; +use constant FALSE => 0; +use constant UNDEFINED => "undefined"; +$prog = basename $0; +$config = {}; +$fullregtest = '<fullregtest>'; +$customregtest = '<customregtest>'; +# set some output file names +$regtestout = "regtest.log"; +$htmldiffout = "regtest.html"; +$summaryout = "summary.log"; +$timerout = "timer.log"; +$checklogout = "checklog.log"; +$warnout = "warn.log"; +$rootcompout = "rootcompout.log"; +$checkcountout = "checkcountout.log"; +$checkmergeout = "checkmergeout.log"; +$edmcheckout = "edmcheckout.log"; +$postcmdout = "postcmd.log"; +$posttestrc = "post_test.exitcodes"; +$docout = "doc.txt"; + +# define error codes - must match atn_summary.pl +%ERROR = ( + OK => 0, + SCRIPT_MISC => 1, + POST_TEST_BAD_EXIT => 2, + ROOTCOMP_MISMATCH => 4, + ATHENA_BAD_EXIT => 8, + CHECKCOUNTS_FAILED => 16, + ATHENA_ERROR_IN_LOG => 32, + ATHENA_REGTEST_FAILED => 64, + ATN_TIME_LIMIT => 128, + PRECONDITION_FAILED_SO_NOT_RUN => 256 + ); +# max bit: 128. Bash takes return codes 0-256. +# Larger numbers are taken mod 256 so effectively masked off. Can be used for internal signalling only. + +# mask off those codes above which you do not want to flag in the exit code +# i.e. so ATN does not interpret them as the test failing. +# bit positions marked 1 will be used, 0 will not be used. +# SCRIPT_MISC is on the right, ATN_TIME_LIMIT on the left +# This default mask can be modified via the 'extra_failure_codes' test directive +# only "shout" if we see/have: ATHENA_BAD_EXIT => 8 decimal 8 in bit is 0b00001000 thus +$default_exitmask = 0b00001001; + +# Exit mask of the last run test. Not nice but the easiest way to implement +# this on top of all the other ugly things in this script. +$exitmask = $default_exitmask; + +# command to use for rootcomp +$rootcomp_cmd = "rootcomp.py --pdf --noRoot"; +$checkcount_cmd = "trigtest_checkcounts.sh"; +$checkmerge_cmd = "trigtest_check_merge.sh"; +sub main(); +main(); +exit -10; +#### + +sub main(){ + # trap errors from here on + $SIG{'INT'} = 'CLEANUP_INT'; + $SIG{'TERM'} = 'CLEANUP_TERM'; + $t0=time(); # timer + $failures = 0; # count number of tests which fail + $statuscode = 0; # combination of errors from last test + command_line(); + parse_config(); + if ($verify){ + print_config(); + } + exit if ($verifyconfig); + check_tests(); + do_tests(); + results_summary(); + timer($t0); + if ($statuscode != 0){ + prog_error_exit("at end",@statuscodes); + } + exit 0; + # exit($statuscode); # status code of last test + # exit($failures); # number of tests which fail +} + +sub CLEANUP_INT { + print "\n\n$prog: Caught Interrupt (^C), probably ATN time exceeded, finish up and exit\n"; + push @statuscodes, 'ATN_TIME_LIMIT'; + timer($t0); + if ($statuscode != 0){ + prog_error_exit("at end",@statuscodes); + } + exit(1); # never reaches this line in principle +} + +sub CLEANUP_TERM { + print "\n\n$prog: Caught TERM signal, finish up and exit\n"; + push @statuscodes, 'ATN_TIME_LIMIT'; + timer($t0); + if ($statuscode != 0){ + prog_error_exit("at end",@statuscodes); + } + exit(1); # never reaches this line in principle +} + +sub prog_error_exit($$){ + my ($message,@error_strings) = @_ or die; + my $exitcode_unmasked = process_error_codes(@error_strings); + # for ATN purposes, mask less significant codes + my $exitcode = $exitcode_unmasked & $exitmask; + if ($exitcode!=0){ + printf "$prog: $failkey $message (unmasked=%#.8b exitcode=%#.8b)\n", $exitcode_unmasked, $exitcode; + } else { + printf "$prog: $warnkey $message (unmasked=%#.8b exitcode=%#.8b)\n", $exitcode_unmasked, $exitcode; + } + exit($exitcode); + +} + +sub process_error_codes(@) { + my (@error_strings) = @_; + my $exitcode=0; + # | sort | uniq + my %saw; + undef %saw; + @saw{@error_strings} = (); + my @error_strings_uniq = sort keys %saw; + print "$prog: debug: all statuscodes: @error_strings\n" if ($debug); + print "$prog: debug: uniq statuscodes: @error_strings_uniq\n" if ($debug); + # convert strings, keep numbers as they are, add together + print "=== These errors occured: "; + open SUMMARY, ">$summaryout"; + for (@error_strings_uniq){ + my $code; + if (/^\d+$/){ + # it's already a number + $code = $_; + } else { + # translate string + $code = $ERROR{$_}; + } + $exitcode += $code; + if ($code != 0){ # print all except ok. + print "$_ ($code) "; + print SUMMARY "$_ ($code)\n"; + } + } + print "\n"; + my $maskedcode = $exitcode & $exitmask; + print "$prog:process_error_codes() debug exitcode = $exitcode maskedcode = $maskedcode\n" if ($debug); + print SUMMARY " exitcode = $exitcode\n"; + print SUMMARY " maskedcode = $maskedcode\n"; + close SUMMARY; + return $exitcode; +} + +# command line arguments +sub command_line(){ + # parse command arguments and check usage + $debug = FALSE; + $verify = FALSE; + $verifyconfig = FALSE; + $configfile = 'trigtest.conf'; # default + $failkey = 'FAILURE'; + $warnkey = 'WARNING'; + $showsummary = FALSE; + @tests = (); + $run_dir = '../run'; # working directory, relative to cmt dir + $clear_dir = FALSE; + print "=== Command to repeat this test:\n $prog @ARGV\n"; + my $result = GetOptions ('help' => \$help, + 'debug!' => \$debug, + 'verify!' => \$verify, + 'verifyconfig!' => \$verifyconfig, + 'showsummary' => \$showsummary, + 'failkey=s' => \$failkey, + 'warnkey=s' => \$warnkey, + 'config=s' => \$configfile, + 'test=s' => \@tests, + 'rundir=s' => \$run_dir, + 'cleardir!' => \$clear_dir, + 'package=s' => \$testpackagefq); + if ($help || !$result) { + usage(); + prog_error_exit("usage",'SCRIPT_MISC'); + } + $verify = TRUE if ($verifyconfig); + if (defined $testpackagefq){ + print "\n$prog info: note that the --package option is deprecated and will be removed in a \nfuture release. It no longer does anything.\n"; + } +} + +# usage message +sub usage(){ + print " + Usage: $prog [options] + + Testing tool for managing Trigger software tests + + Options: + + --help show this information + --debug print debug information, for the script maintainer + --verify verify config file and show what would be done + for the tests but don't run athena (see tip below) + --verifyconfig just verify config file and stop + --showsummary print a short summary table of tests results at the end + --failkey <string> keyword to be printed to indicate to the test + framework that a test has failed, default $failkey + --failkey <string> keyword to be printed to indicate a problem, but not + seen as failure by test framework, default $warnkey + --config <file> specify config file, default trigtest.conf + tries with get_files from DATAPATH if it doesn't exist + --rundir <dir> specify directory in which to run tests, default ../run + --cleardir remove/clear rundir before running (FALSE by default) + --package <string> (deprecated, does nothing, will be removed in future release) + --test <test name|id> specify test to run, see below + + A test name or id can optionally be specified after the --test + option to run only that test. By default, all tests will be run in + the order they are defined in the config file. The verify option + will list all the available tests that are defined in the config + file. The --test option may be repeated, and tests will be run in the + order the come on the command line. + + See the sample config file for test configuration information. + + It is expected that this tool be run from the cmt or run directory + under TriggerTest, after the necessary cmt environment has been set + up. If you changed any files in TriggerTest or checked out a + version different from the release you are using, then you need to + gmake before running these tests. The --package option can be used + to change this default location to another package for reference + files and the check_log config file. + + Output from $prog will always be preceeded by its name (for error + and debug messages) or '===' for the few messages you get without + debug. All other messages come from other programs and commands it + has run. + + Tip: after running a test for the first time, run again in verify + mode and the same log files will be re-used. This is a good way to + quickly test the config file, regression tests, and for script + development. + + The exit code refers only to the last test - be sure to read the + output if you run multiple tests! + The exit code can be any combination of these values: +"; + my $errorcode; + foreach $error_name (sort { $ERROR{$a} <=> $ERROR{$b} } keys %ERROR) { + printf " %20s %4d\n", $error_name, $ERROR{$error_name}; + } +} + + +# If using a file for stdin, +# try to find it with get_files +# then check it is there +# and return with < pre-pended, +# or return empty string if failed +sub getStdinFile($){ + my ($stdinfile) = @_; + $stdinfile =~ s/^\s+$//; # kill file names that are only spaces + $stdinfile = $stdinfile; + if (length($stdinfile)>0){ + if (! -e "$stdinfile" ){ + print "$prog debug: $stdinfile does not exist, so copying it with get_files\n" if ($debug); + systemcall("get_files -data $stdinfile"); + } else { + print "$prog debug: $stdinfile already exists; not copying it\n" if ($debug); + } + if (! -e $stdinfile){ + prog_error_exit ("stdin defined as '$stdinfile' but this is not found", 'SCRIPT_MISC'); + $stdinfile = ""; + } else { + $stdinfile = "< $stdinfile"; + } + } else { + $stdinfile = ""; + } + return $stdinfile; +} + +# parse config file +sub parse_config(){ + + # if specified config file does not exist, try get_files. If still not there, fail. + print "$prog debug: config file is specified as $configfile\n" if ($debug); + if (! -r $configfile) { + print "$prog debug: $configfile does not exist, so try copying it with get_files\n" if ($debug); + systemcall("get_files -data -symlink -remove $configfile",TRUE); + if (! -r $configfile){ + prog_error_exit ("config file $configfile not found. Specify a config file with the option --config <filename>", 'SCRIPT_MISC'); + } + } + open CONFIG, "<$configfile" + or prog_error_exit ("failed opening $configfile: $!\n", 'SCRIPT_MISC'); + print "\n$prog debug: start of config file\n" if ($debug); + my $first = TRUE; + my $this_test = {}; + my $current_test_id = ''; + while (<CONFIG>){ + chomp; + # strip out comments + $endofline = index $_, '#'; + if ($endofline == -1){ + $endofline = length; + } + $line = substr($_, 0, $endofline); + # strip leading white space + $line =~ s/^\s+//; + # skip empty lines and lines with only spaces + next if (length $line == 0); + next if (/^\s+$/); + #print "$prog debug: config $. >$line<\n" if ($debug); + # test keyword + if ($line =~ /^test/){ + if ($line =~ /^test\s+(\w+)/){ + my $id = $1; + print "$prog debug: config id = >$id<\n" if ($debug); + if ($current_test_id eq $id or exists $config{$id}){ + prog_error_exit ("test id $id is not unique",'SCRIPT_MISC'); + } + # save old test config + if (! $first){ + $config{$current_test_id} = $this_test; + push @test_order, $current_test_id; + } + # new test config + $first = FALSE; + $current_test_id = $id; + $this_test = {}; + # defaults + $this_test->{'name'} = "test_$id"; + $this_test->{'disabled'} = FALSE; + $this_test->{'checklog'} = FALSE; +# $this_test->{'checklog_opts'} = "--config check_log.conf --showexcludestats"; + $this_test->{'checklog_opts'} = "--showexcludestats"; + $this_test->{'datafile'} = UNDEFINED; + $this_test->{'datafilelink'} = 'ZEBRA.P'; + $this_test->{'joboptions'} = UNDEFINED; + $this_test->{'pre_condition'} = (); + $this_test->{'pre_command'} = (); + $this_test->{'post_command'} = (); + $this_test->{'post_test'} = (); + $this_test->{'athena_env'} = 'export STAGE_SVCCLASS=atlascerngroupdisk;export STAGE_HOST=castoratlast3'; + $this_test->{'athena_args'} = UNDEFINED; + $this_test->{'athena_cmd'} = 'athena.py -b'; + $this_test->{'exitmask'} = $default_exitmask; + $this_test->{'stdinfile'} = ''; + $this_test->{'regtest'} = (); + $this_test->{'filterlog'} = ''; + $this_test->{'compresslog'} = FALSE; + $this_test->{'rootcomp'} = FALSE; + $this_test->{'rootcomp_cmd'} = ""; + $this_test->{'rootcomp_file1'} = ""; + $this_test->{'rootcomp_file2'} = ""; + $this_test->{'checkcount'} = FALSE; + $this_test->{'checkcount_file'} = ""; + $this_test->{'checkcount_tolerance'} = 1; + $this_test->{'checkcount_level'} = "BOTH"; + $this_test->{'checkmerge'} = FALSE; + $this_test->{'checkmerge_file'} = ""; + $this_test->{'checkmerge_reffile'} = ""; + $this_test->{'checkmerge_tolerance'} = 1; + $this_test->{'emdcheck'} = (); + $this_test->{'doc'} = ""; + next; + } + else { + print "$prog: Error: config line $. incorrect, test definition invalid - ignoring line\n"; + next; + } + } + if ($line =~ /^name\s+([^\s]+)/){ + $this_test->{'name'} = $1; + print "$prog debug: config test name >$1<\n" if ($debug); + next; + } + if ($line =~ /^datafile\s+([^\s]+)\s+([^\s]+)/){ + $this_test->{'datafile'} = $1; + $this_test->{'datafilelink'} = $2; + print "$prog debug: config datafile >$1< link >$2<\n" if ($debug); + next; + } + if ($line =~ /^datafile\s+([^\s]+)/){ + $this_test->{'datafile'} = $1; + print "$prog debug: config datafile >$1<\n" if ($debug); + next; + } + if ($line =~ /^joboptions\s+([^\s]+)/){ + $this_test->{'joboptions'} = $1; + print "$prog debug: config joboptions >$1<\n" if ($debug); + next; + } + if ($line =~ /^pre_condition\s+(.+)$/){ + my $pre_condition = $1; + push @{$this_test->{'pre_condition'}}, $pre_condition; + print "$prog debug: config pre_condition >$pre_condition<\n" if ($debug); + next; + } + if ($line =~ /^pre_command\s+(.+)$/){ + my $pre_command = $1; + push @{$this_test->{'pre_command'}}, $pre_command; + print "$prog debug: config pre_command >$pre_command<\n" if ($debug); + next; + } + if ($line =~ /^post_command\s+(.+)$/){ + my $post_command = $1; + push @{$this_test->{'post_command'}}, $post_command; + print "$prog debug: config post_command >$post_command<\n" if ($debug); + next; + } + if ($line =~ /^post_test\s+([^\s]+)\s+(.+)$/){ + my $post_test = {'name' => $1, 'cmd' => $2}; + push @{$this_test->{'post_test'}}, $post_test; + print "$prog debug: config post_test >$1< >$2<\n" if ($debug); + next; + } + if ($line =~ /^athena_args\s+(.+)$/){ + $this_test->{'athena_args'} = $1; + print "$prog debug: config athena_args >$1<\n" if ($debug); + next; + } + if ($line =~ /^athena_env\s+(.+)$/){ + $this_test->{'athena_env'} = $1; + print "$prog debug: config athena_env >$1<\n" if ($debug); + next; + } + if ($line =~ /^athena_cmd\s+(.+)$/){ + $this_test->{'athena_cmd'} = $1; + print "$prog debug: config athena_cmd >$1<\n" if ($debug); + next; + } + if ($line =~ /^extra_failure_codes\s+(.+)$/){ + $this_test->{'exitmask'} = $default_exitmask; + my @codes = split('\s',$1); + for (@codes) { + if (exists $ERROR{$_}) { + $this_test->{'exitmask'} |= $ERROR{$_}; + } + else { + my @tmp = keys %ERROR; + prog_error_exit ("Exit code '$_' unknown. Allowed values are: @tmp",'SCRIPT_MISC'); + } + } + print "$prog debug: config extra_failure_codes >$1<\n" if ($debug); + next; + } + if ($line =~ /^stdinfile\s+(.+)$/){ + $this_test->{'stdinfile'} = $1; + print "$prog debug: config stdinfile >$1<\n" if ($debug); + next; + } + if ($line =~ /^disable/){ + $this_test->{'disabled'} = TRUE; + print "$prog debug: config disabled >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + next; + } + if ($line =~ /^checklog\s+(.+)$/){ + $this_test->{'checklog'} = TRUE; + $this_test->{'checklog_opts'} = $1; + print "$prog debug: config checklog >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + print "$prog debug: config checklog_opts >$1<\n" if ($debug); + next; + } + if ($line =~ /^checklog\s*$/){ + $this_test->{'checklog'} = TRUE; + print "$prog debug: config checklog >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + next; + } + if ($line =~ /^filterlog\s+(.+)$/){ + $this_test->{'filterlog'} = $1; + print "$prog debug: config filterlog >$1<\n" if ($debug); + next; + } + if ($line =~ /^compresslog/){ + $this_test->{'compresslog'} = TRUE; + print "$prog debug: config compresslog >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + next; + } + if ($line =~ /^regtest\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/){ + my $regtest = { 'algoname' => $1, 'match' => $2, 'reffile' => $3}; + push @{$this_test->{'regtest'}}, $regtest; + print "$prog debug: config regtest >$1< >$2< >$3<\n" if ($debug); + next; + } + if ($line =~ /^edmcheck\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/){ + my $edmcheck = { 'algoname' => $1, 'edmfile' => $2, 'edmreffile' => $3}; + push @{$this_test->{'edmcheck'}}, $edmcheck; + print "$prog debug: config edmcheck >$1< >$2< >$3<\n" if ($debug); + next; + } + if ($line =~ /^fullregtest\s+([^\s]+)\s+([^\s]+)/){ + my $regtest = { 'algoname' => $fullregtest, 'match' => $1, 'reffile' => $2}; + push @{$this_test->{'regtest'}}, $regtest; + print "$prog debug: config fullregtest >$1< >$2<\n" if ($debug); + next; + } + if ($line =~ /^customregtest\s+(.+)$/){ + my $regtest = { 'algoname' => $customregtest, 'match' => $1, 'reffile' => ''}; + push @{$this_test->{'regtest'}}, $regtest; + print "$prog debug: config customregtest >$1<\n" if ($debug); + next; + } + #check merge + if ($line =~ /^checkmerge\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/){ + $this_test->{'checkmerge'} = TRUE; + $this_test->{'checkmerge_file'} = $1; + $this_test->{'checkmerge_reffile'}= $2; + $this_test->{'checkmerge_tolerance'}= $3; + print "$prog debug: config checkmerge >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + print "$prog debug: config checkmerge_file >$1<\n" if ($debug); + print "$prog debug: config checkmerge_reffile >$2<\n" if ($debug); + print "$prog debug: config checkmerge_tolerance >$3<\n" if ($debug); + next; + } + # check for 3rd argument (L2, EF or BOTH) + if ($line =~ /^checkcount\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/){ + $this_test->{'checkcount'} = TRUE; + $this_test->{'checkcount_file'} = $1; + $this_test->{'checkcount_tolerance'}=$2; + $this_test->{'checkcount_level'}=$3; + print "$prog debug: config checkcount >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + print "$prog debug: config checkcount_file >$1<\n" if ($debug); + print "$prog debug: config checkcount_tolerance >$2<\n" if ($debug); + print "$prog debug: config checkcount_level >$3<\n" if ($debug); + next; + } + # only 2 arguments, assume BOTH + if ($line =~ /^checkcount\s+([^\s]+)\s+([^\s]+)/){ + $this_test->{'checkcount'} = TRUE; + $this_test->{'checkcount_file'} = $1; + $this_test->{'checkcount_tolerance'}=$2; + print "$prog debug: config checkcount >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + print "$prog debug: config checkcount_file >$1<\n" if ($debug); + print "$prog debug: config checkcount_tolerance >$2<\n" if ($debug); + next; + } + # optional 2nd argument + if ($line =~ /^rootcomp\s+([^\s]+)\s*([^\s]*)$/){ + $this_test->{'rootcomp'} = TRUE; + $this_test->{'rootcomp_cmd'} = $rootcomp_cmd; + if ($2 eq "") { + $this_test->{'rootcomp_file1'} = "expert-monitoring.root"; + $this_test->{'rootcomp_file2'} = $1; + } + else { + $this_test->{'rootcomp_file1'} = $1; + $this_test->{'rootcomp_file2'} = $2; + } + print "$prog debug: config rootcomp >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + print "$prog debug: config rootcomp_file1 >$this_test->{'rootcomp_file1'}<\n" if ($debug); + print "$prog debug: config rootcomp_file2 >$this_test->{'rootcomp_file2'}<\n" if ($debug); + next; + } + # old style + if ($line =~ /^customrootcomp\s+([^\s]+)\s+([^\s]+)$/){ + $this_test->{'rootcomp'} = TRUE; + $this_test->{'rootcomp_cmd'} = $1; + $this_test->{'rootcomp_file2'} = $2; + print "$prog debug: config custom rootcomp >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + print "$prog debug: config custom rootcomp_cmd >$1<\n" if ($debug); + print "$prog debug: config custom rootcomp_file2 >$2<\n" if ($debug); + next; + } + # optional 3rd argument + if ($line =~ /^customrootcomp\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)$/){ + $this_test->{'rootcomp'} = TRUE; + $this_test->{'rootcomp_cmd'} = $1; + $this_test->{'rootcomp_file1'} = $2; + $this_test->{'rootcomp_file2'} = $3; + print "$prog debug: config custom rootcomp >" . ( $_ ? "true" : "false") . "<\n" if ($debug); + print "$prog debug: config custom rootcomp_cmd >$1<\n" if ($debug); + print "$prog debug: config custom rootcomp_file1 >$2<\n" if ($debug); + print "$prog debug: config custom rootcomp_file2 >$3<\n" if ($debug); + next; + } + if ($line =~ /^doc\s+(.+)$/){ + $this_test->{'doc'} = $1; + print "$prog debug: config doc >$1<\n" if ($debug); + next; + } + else { + print "$prog: Warning: config line $. not recognised, ignoring it: $line\n"; + next; + } + } + close CONFIG; + print "$prog debug: end of config file\n\n" if ($debug); + # save last test config + if (! $first){ + $config{$current_test_id} = $this_test; + push @test_order, $current_test_id; + } + +} + +# display details of the configured tests +sub print_config(){ + print "=== Test Configuration\n"; + foreach (keys %config){ + print "test: $_\n"; + print " name '" . $config{$_}->{'name'} . "' \n"; + print " doc '" . $config{$_}->{'doc'} . "'\n"; + print " disabled '" . ( $config{$_}->{'disabled'} ? "true" : "false") . "'\n"; + print " checklog '" . ( $config{$_}->{'checklog'} ? "true" : "false") . "'\n"; + print " checklog_opts '" . $config{$_}->{'checklog_opts'} . "'\n"; + print " filterlog '" . $config{$_}->{'filterlog'} . "'\n"; + print " compresslog '" . ( $config{$_}->{'compresslog'} ? "true" : "false") . "'\n"; + print " rootcomp '" . ( $config{$_}->{'rootcomp'} ? "true" : "false") . "'\n"; + print " rootcomp_cmd '" . $config{$_}->{'rootcomp_cmd'} . "'\n"; + print " rootcomp_file1 '" . $config{$_}->{'rootcomp_file1'} . "'\n"; + print " rootcomp_file2 '" . $config{$_}->{'rootcomp_file2'} . "'\n"; + print " checkcount '" . ( $config{$_}->{'checkcount'} ? "true" : "false") . "'\n"; + print " checkcount_file '" . $config{$_}->{'checkcount_file'} . "'\n"; + print " checkcount_tolerance '" . $config{$_}->{'checkcount_tolerance'} . "'\n"; + print " checkcount_level '" . $config{$_}->{'checkcount_level'} . "'\n"; + print " checkmerge '" . ( $config{$_}->{'checkcount'} ? "true" : "false") . "'\n"; + print " checkmerge_file '" . $config{$_}->{'checkcount_file'} . "'\n"; + print " checkmerge_tolerance '" . $config{$_}->{'checkcount_tolerance'} . "'\n"; + print " checkmerge_reffile '" . $config{$_}->{'checkcount_file'} . "'\n"; + print " datafile '" . $config{$_}->{'datafile'} . "'\n"; + print " datafilelink '" . $config{$_}->{'datafilelink'} . "'\n"; + print " joboptions '" . $config{$_}->{'joboptions'} . "'\n"; + for (@{$config{$_}->{'pre_condition'}}){ + print " pre_condition $_'\n"; + } + for (@{$config{$_}->{'pre_command'}}){ + print " pre_command $_'\n"; + } + for (@{$config{$_}->{'post_command'}}){ + print " post_command $_'\n"; + } + for (@{$config{$_}->{'post_test'}}){ + print " post_test $_'\n"; + } + print " athena_env'" . $config{$_}->{'athena_env'} . "'\n"; + print " athena_cmd '" . $config{$_}->{'athena_cmd'} . "'\n"; + print " athena_args '" . $config{$_}->{'athena_args'} . "'\n"; + printf " exitmask %#.8b \n", $config{$_}->{'exitmask'}; + print " stdinfile '" . $config{$_}->{'stdinfile'} . "'\n"; + if ($#{$config{$_}->{'regtest'}} == -1){ + print " (no regtests defined)\n"; + } + for (@{$config{$_}->{'regtest'}}){ + print " regtest: algorithm name '" . $_->{'algoname'} . "'\n"; + print " match message pattern '" . $_->{'match'} . "'\n"; + print " reference file '" . $_->{'reffile'} . "'\n"; + } + if ($#{$config{$_}->{'edmcheck'}} == -1){ + print " (no edmtests defined)\n"; + } + for (@{$config{$_}->{'edmcheck'}}){ + print " edmcheck: algorithm name '" . $_->{'algoname'} . "'\n"; + print " edmfile '" . $_->{'edmfile'} . "'\n"; + print " reference file '" . $_->{'edmreffile'} . "'\n"; + } + } +} + +# check that tests specified on command line exist +# replace names by ids +sub check_tests(){ + + # build map of tests by name + my $test_id_byname = {}; + foreach (keys %config){ + my $name = $config{$_}->{'name'}; + if (exists $test_id_byname{$name}){ + print "$prog: error: test name $name is not unique\n"; + } else { + $test_id_byname{$name} = $_; + } + } + + # check that tests specified on command line exist + # replace names by ids + for ( my $i=0; $i<=$#tests; $i++ ){ + if ( exists $config{$tests[$i]} ){ + next; + } elsif ( exists $test_id_byname{$tests[$i]} ) { + $tests[$i] = $test_id_byname{$tests[$i]}; + next; + } else { + prog_error_exit ("test name/id $tests[$i] is not defined in the config file", 'SCRIPT_MISC'); + } + } + + # if no tests are specified, do them all in the order they were read in. + if ($#tests == -1){ + @tests = @test_order; + } +} + + +# loop over tests, skip those that are disabled +sub do_tests(){ + my $first = TRUE; + for (@tests){ + my $id = $_; + @statuscodes = ( 'OK' ); # reset for status code of latest test + $exitmask = $config{$id}->{'exitmask'}; # exitmask of latest test + #print "-------------------------------------------------------\n"; + print "=== Test $id: " . $config{$id}->{'name'}; + if ($config{$id}->{'disabled'}) { + print " is disabled\n"; + } else { + print "\n"; + if ($first){ + first_test_prep(); + $first = FALSE; + } + run_test($id); + if ($#statuscodes>0){ + $failures++; + } + $statuscode = process_error_codes(@statuscodes); + $testresults{$id}=$statuscode; + } + print "--------------------------------------------------------------------------------\n"; + } +} + +# Timer subroutine +# given an initial time t0 in seconds since the epoch (i.e. as given by perl time function), calculates and prints the total elapsed (aka wallclock) time, user time and system time. Do not expect these to add up, e.g. if the system is busy with other users or you have to wait for castor. +# NB if called multiple times, the last call will overwrite previous output files. +sub timer($){ + my ($t0) = @_; + my $t1=time(); + my ($tuser,$tsystem,$tcuser,$tcsystem) = times; + printf( "=== Timer: total elapsed %d s, total user %6.2f s, total system %6.2f s\n", + $t1-$t0, $tuser+$tcuser, $tsystem+$tcsystem); + open TIMER, ">$timerout"; + printf TIMER "%d %f %f\n",$t1-$t0, $tuser+$tcuser, $tsystem+$tcsystem; + close TIMER; + +} + +sub results_summary(){ + return if (!$showsummary); + print "=== Test results summary\n"; + printf " %3s %-20s %-10s\n", "Id", "Test Name", "Result"; + for (@tests){ + my $id = $_; + printf " %3s %-20s ", $id, $config{$id}->{'name'}; + if ($config{$id}->{'disabled'}){ + print "(disabled)\n"; + next; + } + if ($testresults{$id} == 0){ + print "passed"; + } else { + print "failed ($testresults{$id})"; + } + print "\n"; + } +} + +# preparations before first test is run +sub first_test_prep { + + # create run dir if it doesn't already exist + if ( $clear_dir ) { + system "rm -fr $run_dir"; + } + if ( ! -d $run_dir ){ + mkpath $run_dir + #or die "$prog: error: failed mkpath $run_dir: $!\n"; + } + chdir $run_dir or prog_error_exit( "failed chdir $run_dir: $!\n", 'SCRIPT_MISC'); + + # get log file from env + my $ajl = $ENV{'ATN_JOB_LOGFILE'}; + if (defined($ajl)){ + system "echo $ajl > atn_job_logfile_name"; + } + + # run script to get relevant file + my $id = $_; + my $jobopts = $config{$id}->{'joboptions'}; + print "$prog debug: job options:$jobopts\n" if ($debug); +} + +# run a test +sub run_test($){ + my ($id) = @_; + my $name = $config{$id}->{'name'}; + + # prepare file names + my $jobopts = $config{$id}->{'joboptions'}; + my $logfile = "atn_test.log"; + my $logfiletail = "atn_tail.log"; + my $local_jobopts = ""; + print "$prog debug: job options:$jobopts\n" if ($debug); + systemcall("echo \"$config{$id}->{'doc'}\" > $docout"); + if ( $jobopts ne 'None' and $jobopts ne UNDEFINED ){ + my @suffixlist = ( '.py', '.txt' ); + my ($filename,$path,$suffix) = fileparse($jobopts,@suffixlist); + $local_jobopts = $filename . "_test" . $suffix; + $logfile = "$filename" . "_test.log"; + $logfiletail = "$filename" . "_tail.log"; + print "$prog debug: $jobopts $local_jobopts $logfile\n" if ($debug); + + # get copy of joboptions file to customise for this job, + # if it's not already there + # allow for the case of no jobotions (AthanMT) + if (! -e "$filename$suffix" ){ + print "$prog debug: $filename$suffix does not exist, so copying it with get_files\n" if ($debug); + systemcall("get_files -jo $jobopts"); + } + if (-e "$filename$suffix"){ # check: will not be there in verify mode + copy "$filename$suffix", "$local_jobopts" + or prog_error_exit( "failed copying $filename$suffix to $local_jobopts: $!\n", 'SCRIPT_MISC'); + } + # check permissions on local joboptions file before trying to append to it + if (! -w $local_jobopts){ + chmod 0644, $local_jobopts + or prog_error_exit( "failed to set write permission for $local_jobopts: $!\n", 'SCRIPT_MISC'); + } + + + # append joboptions to set algorithm output level to 2, + # for algorithms to be regression tested. + open JOBOPTS, ">> $local_jobopts" + or prog_error_exit ("failed opening $local_jobopts: $!\n", 'SCRIPT_MISC'); + print JOBOPTS "\n"; +# for (@{$config{$id}->{'regtest'}}){ +# my $algoname = $_->{'algoname'}; + # require some alphanumeric chars for a valid algoname +# if ($algoname =~ /\w/){ +# print "$prog debug: appending to joboptions file: $algoname.Outputlevel = 2\n" if ($debug); +# print JOBOPTS "Algorithm(\"$algoname\").Outputlevel = DEBUG\n"; +# print JOBOPTS "MessageSvc.debugLimit = 2000\n"; +# print JOBOPTS "MessageSvc.defaultLimit = 2000\n"; +# } else { +# print "$prog warning: not setting output level for algorithm \"$algoname\" since it doesn't look like a valid name (no alphanumeric chars)\n"; +# } +# } + close JOBOPTS; + } + # run any pre-condition - they must all succeeed or else the job won't run + my $pre_condition; + my $precondrc=TRUE; + for $pre_condition (@{$config{$id}->{'pre_condition'}}){ + my $precondrc1=systemcall("$pre_condition"); + print "$prog debug: pre_condition \"$pre_condition\" returned $precondrc1\n" if ($debug); + if ($precondrc1!=0){ + print "$prog info: pre_condition \"$pre_condition\" failed (exit code $precondrc1)\n"; + $precondrc=FALSE; + } + } + if ($precondrc){ + print "$prog debug: pre-conditions met\n" if ($debug); + } else { + print "$prog info: pre-conditions failed so test cannot be run. This is not a test failure.\n"; + push @statuscodes, 'PRECONDITION_FAILED_SO_NOT_RUN'; + return; + } + + # run any pre-command + my $pre_command; + for $pre_command (@{$config{$id}->{'pre_command'}}){ + systemcall("$pre_command"); + } + + # link data file if specified + my $datafile = $config{$id}->{'datafile'}; + my $datafilelink = $config{$id}->{'datafilelink'}; + if ($datafile ne UNDEFINED){ + # expand environment variables in datafile + while ($datafile =~ /\$\{(.+)\}/){ + my $var = $1; + if (exists $ENV{$var}){ + my $sub=$ENV{$var}; + $datafile =~ s/\$\{$var\}/$sub/; + print "$prog debug: expanding env var '$var' in datafile yields: $datafile\n" if ($debug); + } else { + print "$prog: Warning: env var '$var' used in datafile definition is undefined, replacing with blank\n"; + $datafile =~ s/\$\{$1\}//; + } + } + + print "$prog debug: linking data file to $datafilelink: $datafile\n" + if ($debug); + if (-e $datafilelink or -l $datafilelink){ + print "$prog debug: first removing $datafilelink\n" if ($debug); + unlink $datafilelink + or die "$prog: error: failed to delete $datafilelink: $!\n"; + } + symlink $datafile, $datafilelink + or die "$prog: error: failed to symlink $datafilelink: $!\n"; + } + + # run athena + my $athena_env = $config{$id}->{'athena_env'}; + my $athena_cmd = $config{$id}->{'athena_cmd'}; + my $athena_args = $config{$id}->{'athena_args'}; + my $filter_cmd = $config{$id}->{'filterlog'}; + $filter_cmd = " 2>&1 | " . $filter_cmd if (length($filter_cmd)>0); + $athena_args = "" if ($athena_args eq UNDEFINED); + my $stdinfile = getStdinFile($config{$id}->{'stdinfile'}); + print "=== Athena env '$athena_env' \n"; + print "=== Running '$athena_cmd $athena_args $local_jobopts $stdinfile $filter_cmd'\n"; + # the stderr redirection needs to be exactly at this place + my $athenarc = systemcall("$athena_env ; $athena_cmd $athena_args $local_jobopts $stdinfile $filter_cmd > $logfile 2>&1"); + + # the way to recognise a timeout + $timeout = FALSE; + if (! open LOG, "tail -600 $logfile|"){ + print "$prog: error: failed opening $logfile to read: $!\n"; + print "-> $failkey Aborting this test\n"; + # will happen later: return; # go on to next test + } + while (<LOG>){ + if (/CRITICAL stopped by user interrupt/ or + /ERROR Keyboard interruption caught/ or + /^Signal handler: Killing [0-9]+ with 15/){ + $timeout = TRUE; + last; + } + + } + close LOG; + + print "$prog: debug: timeout=$timeout " . ($timeout?"true":"false") . " athenarc=$athenarc \n" if ($debug); + + # check athena return code + #print "-------------------------------------------------------\n"; + if ($athenarc == 0 and not $timeout){ + print "=== $name OK: Athena exited normally\n"; + print "art-result: 0 athena.$name\n"; + } elsif ($timeout){ + # or $athenarc == 35584 -> sometimes this exit code is just a seg fault + print "=== $name $warnkey: Athena exceeded time limit and was killed\n"; + print "art-result: 1 athena.$name\n"; + push @statuscodes, 'ATN_TIME_LIMIT'; + } else { + print "=== $name $failkey : Athena exited abnormally! Exit code: $athenarc\n"; + print "art-result: 2 athena.$name\n"; + push @statuscodes, 'ATHENA_BAD_EXIT'; + } + + + # run any post-commands + unlink "$postcmdout" if (-f "$postcmdout"); +# if + if (defined $config{$id}->{'post_command'} + and @{$config{$id}->{'post_command'}}>0) { + my $post_command; + @postrc=(); + + for $post_command (@{$config{$id}->{'post_command'}}){ + # All post command share the same log file + push @postrc, systemcall("($post_command) >> $postcmdout 2>&1"); + } + systemcall("cat $postcmdout"); + print "$prog debug: post_command #commands: ".@postrc." return codes: @postrc \n" if ($debug); + } + + my %reldata = release_metadata(); + my $nightly = (exists $reldata{'nightly name'} ? $reldata{'nightly name'} : "UNKNOWN"); + # modification for ART (ATR-17618) + # $nightly = $nightly . "/latest"; + print "$prog: looking for histograms and references for nightly $nightly \n"; + + # run any post-tests + unlink "$posttestrc" if (-f "$posttestrc"); + if ( defined(@{$config{$id}->{'post_test'}}) ) { + my $post_test; + my $total_rc = 0; + @postrc=(); + open (POSTTEST, '>', $posttestrc); + for $post_test (@{$config{$id}->{'post_test'}}){ + # Each post test has its own log file + my $post_test_log = "post_test_$post_test->{'name'}.log"; + # Replace '$logfile' with the actual file name + my $post_test_cmd = $post_test->{'cmd'}; + $post_test_cmd =~ s/\$logfile/$logfile/; + # If there is a comparison to a reference file, make sure that the correct path is used + $post_test_cmd =~ s/latest/$nightly/g; + my $rc = systemcall("($post_test_cmd) > $post_test_log 2>&1"); + $total_rc += $rc; + # Save return codes in separate text file + print POSTTEST "$post_test->{'name'} $rc\n"; + } + close POSTTEST; + if ($total_rc>0) { + push @statuscodes, 'POST_TEST_BAD_EXIT'; + } + } + + my $pwd = `pwd`; + chomp $pwd; + # make a URL by substituting the lxbuild local disk path for the web + # server URL if it does not match the lxbuild local disk path then it + # will be left as a file path instead. + # NB gives wrong address for incremental nightlies because the build is always done in atlrel_0 then copied to altrel_1-5 as appropriate + my $logfileURL = $logfile; + $logfileURL =~ s%/pool/build/atnight/localbuilds/nightlies%http://atlas-computing.web.cern.ch/atlas-computing/links/buildDirectory/nightlies%; + print "=== Log file: " . $pwd . "/$logfileURL\nNB replace rel_0 with actual nightly in this URL.\n"; + if (! -e $logfile or -z $logfile){ + print "=== Error: log file does not exist or is empty, skipping the rest of this test\n"; + return; + } + # get data file LFN/PFN from log file + pool file catalogue + if (! open LOG, "<$logfile"){ + print "$prog: error: failed opening $logfile to read: $!\n"; + print "-> $warnkey Aborting this test\n"; + return; # go on to next test + } + my $dataLFN="unknown"; + my $dataPFN=""; + my $eventCounter=0; + while (my $line = <LOG>){ + if ($line =~ /InputCollections\s+\= \['(.*)'\]/){ # athena + $dataLFN=$1; + } + elsif ($line =~ /event stream from file list\s+\['(.*)'\]/){ # athenaHLT + $dataLFN=$1; + } + # count events for athena job + ++$eventCounter if ($line =~ /AthenaEventLoopMgr\s+INFO\s+===>>> done processing event/); + # handle athenaHLT case + if ($line =~ /Py:athenaHLT\s+INFO\s+Processed ([0-9]+) events/){ + $eventCounter=$1; + } + } + close LOG; + + print "$prog debug: dataLFN=$dataLFN\n" if ($debug); + if ($dataLFN ne "unknown"){ + my $dataLFNstripped = $dataLFN; + $dataLFNstripped =~ s/^LFN\://; + my $cmdout1 = qx(FClistPFN -u xmlcatalog_file:PoolFileCatalog.xml -l $dataLFNstripped); + chomp $cmdout1; + if (length($cmdout1)>0){ + $dataPFN = $cmdout1; + } + print "$prog debug: dataLFNstripped=$dataLFNstripped dataPFN=$dataPFN\n" if ($debug); + print "$prog debug: cmdout1=$cmdout1\n" if ($debug); + } + print "=== Data file: $dataLFN $dataPFN\n"; + + # write how many events processed + print "=== Events processed: $eventCounter\n"; + + # check log file for likely errors and known false positives + if ($config{$id}->{'checklog'}){ + my $checklog_opts = $config{$id}->{'checklog_opts'}; + # ERRORs + my $logrc = systemcall("check_log.pl $checklog_opts $logfile > $checklogout 2>&1"); + systemcall("cat $checklogout"); + if ($logrc != 0){ + print "=== $name $failkey : problem detected in log file\n"; + print "art-result: 1 $name.CheckLog\n"; + push @statuscodes, 'ATHENA_ERROR_IN_LOG'; + } else { + print "art-result: 0 $name.CheckLog\n"; + } + # WARNINGs + $rc = systemcall("check_log.pl $checklog_opts --noerrors --warnings $logfile > $warnout 2>&1"); + # Ignore rc. + } + + #make short file with last 600 lines only + systemcall("tail -600 $logfile > $logfiletail"); + + + # rootcomp + if ($config{$id}->{'rootcomp'}){ + my $rootcomp_file1 = $config{$id}->{'rootcomp_file1'}; + my $rootcomp_file2 = $config{$id}->{'rootcomp_file2'}; + if( $nightly ne "" ) { + # allow for custom tests with two files + $rootcomp_file2 =~ s/latest/$nightly/g ; + } + $rootcomp_file1 = resolveSymlinks($rootcomp_file1); + $rootcomp_file2 = resolveSymlinks($rootcomp_file2); + + if (-e $rootcomp_file1) { + if (-e $rootcomp_file2) { + my $rc=systemcall("$config{$id}->{'rootcomp_cmd'} $rootcomp_file1 $rootcomp_file2 > $rootcompout 2>&1", TRUE); + if ($rc != 0){ + print "=== $name WARNING: monitoring histogram mismatch detected by rootcomp\n"; + print "art-result: 1 $name.RootComp\n"; + push @statuscodes, 'ROOTCOMP_MISMATCH'; + } else { + print "=== $name: rootcomp: monitoring histograms match. \n"; + print "art-result: 0 $name.RootComp\n"; + } + } + else { + print "=== Alert: $rootcomp_file2 does not exist \n"; + print "art-result: 2 $name.RootComp\n"; + } + } + else { + print "=== Alert: $rootcomp_file1 does not exist \n"; + print "art-result: 2 $name.RootComp\n"; + } + #systemcall("cat $rootcompout"); + if (-e $rootcompout) { + systemcall("grep -A 5 '^Summary' $rootcompout"); + } + } + + # checkcount + if ($config{$id}->{'checkcount'}){ + my $checkcount_file = $config{$id}->{'checkcount_file'}; + my $checkcount_tolerance = $config{$id}->{'checkcount_tolerance'}; + my $checkcount_level = $config{$id}->{'checkcount_level'}; + if( $nightly ne "" ) { + $checkcount_file =~ s/latest/$nightly/ ; + } + $checkcount_file = resolveSymlinks($checkcount_file); + print "$prog: checking trigger and TE counts \n"; + print "=== Running $checkcount_cmd $checkcount_tolerance $checkcount_file $checkcount_level > $checkcountout 2>&1 \n"; + my $rc=systemcall("$checkcount_cmd $checkcount_tolerance $checkcount_file $checkcount_level > $checkcountout 2>&1", TRUE); + if ($rc != 0){ + print "=== $name WARNING: trigger count mismatch detected by checkcount\nSee $checkcountout for details.\n"; + print "art-result: 1 $name.CheckCounts\n"; + push @statuscodes, 'CHECKCOUNTS_FAILED'; + } else { + print "=== $name: countcheck: trigger counts match. \n"; + print "art-result: 0 $name.CheckCounts\n"; + } + #systemcall("cat $rootcompout"); + #Grep for FAILURE here so that bad runs will be flagged as such + systemcall("grep 'FAILURE' $checkcountout"); + systemcall("grep 'test warning' $checkcountout"); + systemcall("grep 'tolerance' $checkcountout"); + } + + # checkmerge + if ($config{$id}->{'checkmerge'}){ + my $checkmerge_file = $config{$id}->{'checkmerge_file'}; + my $checkmerge_tolerance = $config{$id}->{'checkmerge_tolerance'}; + my $checkmerge_reffile = $config{$id}->{'checkmerge_reffile'}; + if( $nightly ne "" ) { + $checkmerge_file =~ s/latest/$nightly/ ; + } + $checkmerge_file = resolveSymlinks($checkmerge_file); + print "$prog: checking trigger histograms for merged system \n"; + print "=== Running $checkmerge_cmd $checkmerge_file $checkmerge_reffile $checkmerge_tolerance > $checkmergeout 2>&1 \n"; + my $rc=systemcall("$checkmerge_cmd $checkmerge_file $checkmerge_reffile $checkmerge_tolerance > $checkmergeout 2>&1", TRUE); + + if ($rc != 0){ + print "=== $name WARNING: Errors detected by checkmerge\nSee $checkmergeout for details.\n"; + print "art-result: 1 $name.CheckMerge\n"; + push @statuscodes, 'POST_TEST_BAD_EXIT'; + } else { + print "=== $name: mergecheck: the test passed successfully. \n"; + print "art-result: 0 $name.CheckMerge\n"; + } + systemcall("grep 'ERROR' $checkmergeout"); + systemcall("grep 'WARNING' $checkmergeout"); + } + + # EDM tests + my $emdcheckresult=TRUE; + EDMCHECK: + for (@{$config{$id}->{'edmcheck'}}){ + # truncate algorithm name for 30 characters + my $algoname = $_->{'algoname'}; + my $truncalgoname = substr($algoname, 0, 30); + my $edmfile = $_->{'edmfile'}; + my $edmreffile = $_->{'edmreffile'}; + # if file exist for this sepecfic nightly use it, otherwise + # use default + if( $nightly ne "" ) { + $newedmreffile = $edmreffile; + # substitute e.g. devval/latest for latest + $newedmreffile =~ s/latest/$nightly/ ; + # check if the reference file for this nightly exists + if ( -e $edmreffile ) { + $edmreffile = $newedmreffile; + print "New reference file name $edmreffile \n"; + } + } + $edmreffile = resolveSymlinks($edmreffile); + my $rc=systemcall("$truncalgoname -f $edmfile -r $edmreffile >>$edmcheckout 2>&1", TRUE); + if ($rc != 0){ + print "=== $name WARNING: trigger edmcheck mismatch detected by $truncalgoname\nSee $edmcheckout for details.\n"; + print "=== $name if differences are understood cp $edmfile $edmreffile \n"; + print "art-result: 1 $name.EdmCheck\n"; + } else { + print "=== $name: edmcheck: files matched \n"; + print "art-result: 0 $name.EdmCheck\n"; + } + } + + # regression tests + my $regtestresult=TRUE; + REGTEST: + for (@{$config{$id}->{'regtest'}}){ + # truncate algorithm name for 15 characters + my $algoname = $_->{'algoname'}; + my $truncalgoname = substr($algoname, 0, 30); + my $match = $_->{'match'}; + my $reffile = $_->{'reffile'}; + my $newfile = $reffile . ".new"; + # reference file caser + if( substr($newfile, 0, 5) eq "/tmp/" ){ + # ref file is in /tmp, eg. from another tst (due to tmp filling up, avoid this) + $newfile = substr($newfile, 5); + } elsif ( substr($newfile,0,3) eq "../"){ + # reference is to another test -- other test must be first in test/xxx_TestConfigruation.xml + my $lslash = rindex $newfile, '/'; + $newfile = substr($newfile, $lslash+1 ); + # in this case ref-file for an existing test will end in .new + $reffile = $reffile . ".new"; + } elsif ( substr($newfile, 0, 7) eq "/cvmfs/" ){ + # should be usual case: ref file is in cvmfs for ART (was /afs/ for ATN) + my $lslash = rindex $newfile, '/'; + $newfile = substr($newfile, $lslash+1 ); + if( $nightly ne "" ) { + $newreffile = $reffile; + # substitute e.g. devval/latest for latest + $newreffile =~ s/latest/$nightly/ ; + # check if the reference file for this nightly exists + if ( -e $newreffile ) { + $reffile = $newreffile; + print "New reference file name $reffile \n"; + } + } + } + print "$prog debug: truncated algoname $truncalgoname\n" if ($debug); + # extract regression test lines for this algorithm from log file + open NEW, ">$newfile" + or die "$prog: error: failed opening $newfile to write: $!\nart-result: 2 $name.Regtest\n"; + if (! open LOG, "<$logfile"){ + print "$prog: error: failed opening $logfile to read: $!\n"; + print "-> $warnkey Aborting this test\nart-result: 2 $name.Regtest\n"; + return FALSE; # go on to next test + } + my $lines=0; + if ($algoname eq $fullregtest){ + while (<LOG>){ + if (/$match/){ + print NEW; + $lines++; + } + } + print "$prog debug: fullregtest $lines lines matched $match in LOG\n" if ($debug); + } elsif ($algoname eq $customregtest){ + $rc = systemcall("$match >> $regtestout", TRUE); + $regtestresult = ( $rc==0 ? TRUE : FALSE ); + next REGTEST; + } + else { + while (<LOG>){ + if (/$truncalgoname.*$match/){ + print NEW; + $lines++; + } + } + print "$prog debug: regtest $lines lines matched $truncalgoname $match in LOG\n" if ($debug); + } + + close LOG; + close NEW; + # check whether any lines matched - if zero it's an error straight away + # and no point in doing the diff + if ($lines == 0){ + # print failure keyword here to flag it as an error + print "=== Alert! $warnkey no lines matching $match were found for $truncalgoname in log file\n"; + print "art-result: 2 $name.Regtest\n"; + $regtestresult = FALSE; + next REGTEST; + } + # diff the output and the reference + # even if verify is off + my $rc = 0; + $reffile = resolveSymlinks($reffile); + print "old/reference file $reffile\n"; + print "new/test file $newfile\n"; + print "< old/reference\n> new/test\n"; + print substr($reffile, 0, 4); +# identify location of ref file + if( substr($reffile, 0, 4) eq "/tmp" ){ + print "=== This test looks for reference in /tmp directory\n"; + } elsif( substr($reffile, 0, 3) eq "../" ){ + print "=== This test looks for reference in another directory\n"; + } elsif (substr($reffile, 0, 1) eq "/" ){ + print "=== This test looks for reference in /cvmfs or /afs or /localhome directory\n"; + } else { + print "=== This test looks for reference from svn\n"; + } + if (-e $reffile) { + # print "old/reference file exists!\n"; + systemcall("echo -e 'total lines in old/reference:' `wc -l $reffile` >>$regtestout",TRUE); + systemcall("echo -e 'total lines in new/test :' `wc -l $newfile` >>$regtestout",TRUE); + systemcall("echo -e '< old/reference\n> new/test' >> $regtestout", TRUE); + $rc = systemcall("diff $reffile $newfile", TRUE); + $rc = systemcall("diff $reffile $newfile >> $regtestout", TRUE); + + # Do HTML diff if differences are small enough + $difflines = `wc -l $regtestout | cut -d' ' -f1`; + if ($difflines < 1000) { + systemcall("htmldiff.py -w 80 $reffile $newfile > $htmldiffout 2>&1", TRUE); + } + if ($rc == 0){ + print "=== Output is the same as reference for $algoname\n"; + print "art-result: 0 $name.Regtest\n"; + } else { + # print failure keyword here to flag it as an error + print "=== Alert! $warnkey Output differs from reference for $algoname\n"; + print " If this change is understood, please update the reference file"; + if(substr($reffile, 0, 6) eq "/cvmfs" ){ + print "by typing:\n cp $newfile $reffile\n"; + } else { + print ".\n"; + } + print "art-result: 1 $name.Regtest\n"; + $regtestresult = FALSE; + next REGTEST; + } + } + else { + print "=== Alert! old/reference file: $reffile does not exist - check if this is a new release!\n"; + print "art-result: 2 $name.Regtest\n"; + } + } + if (!$regtestresult){ + push @statuscodes, 'ATHENA_REGTEST_FAILED'; + } + + # compress log file + if ($config{$id}->{'compresslog'}){ + systemcall("gzip -9 $logfile"); + } + +# print "$prog debug: returning result $result (" +# . ($result ? "true" : "false") . ")\n" if ($debug); + return; +} + + +# wrap system calls to provide for verify and debug modes. +# second, optional argument overrides verify mode if TRUE +sub systemcall($;$){ + my $override_verify = FALSE; + my $command; + ($command, $override_verify) = @_; + + my $rc = 0; + if ($verify or $debug){ + print "$prog: command: $command\n"; + } + if (!$verify or $override_verify){ + $rc = system ($command); + } + $rc = ($rc >> 8); # see http://perldoc.perl.org/functions/system.html + if ($debug){ + print "$prog: return code " . $rc . "\n"; + } + return $rc; +} + +# Resolve all symlinks in given path +sub resolveSymlinks() { + my ($path) = @_; + return $path if (length $path == 0); + my $respath = `readlink -f $path`; + if ($? != 0) { + return $path; # failure: return original path + } + chomp $respath; + return $respath; +} + +# Read ReleaseData file and return dictionary with content +sub release_metadata() { + my %data; + my @dir = grep(/\/$ENV{'AtlasProject'}\//, split(':',$ENV{'LD_LIBRARY_PATH'})); + open RELDATA, "$dir[0]/../ReleaseData" or print "=== Alert! Cannot open ReleaseData file\n"; + while (<RELDATA>) { + chomp; + my @kv = split(':'); + $data{$kv[0]} = $kv[1]; + } + return %data; +} diff --git a/Trigger/TrigValidation/TriggerTest/Testing/TriggerTest.conf b/Trigger/TrigValidation/TriggerTest/Testing/TriggerTest.conf index 9d8cda7816c..c30834d027c 100644 --- a/Trigger/TrigValidation/TriggerTest/Testing/TriggerTest.conf +++ b/Trigger/TrigValidation/TriggerTest/Testing/TriggerTest.conf @@ -217,7 +217,7 @@ test 60 name BjetSliceAthenaTrigRDO doc Bjet slice on top joboptions testCommonSliceAthenaTrigRDO.py - athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="bjet" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"] ' + athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="bjet" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"] ' checklog --config checklogTriggerTest.conf --showexcludestats fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_BjetSliceAthenaTrigRDO.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_BjetSliceAthenaTrigRDO.root @@ -229,7 +229,7 @@ test 61 name BphysicsSliceAthenaTrigRDO doc Bphysics on top joboptions testCommonSliceAthenaTrigRDO.py - athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="bphysics"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' + athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="bphysics"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' checklog --config checklogTriggerTest.conf --showexcludestats fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_BphysicsSliceAthenaTrigRDO.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_BphysicsSliceAthenaTrigRDO.root @@ -241,7 +241,7 @@ test 62 name ElectronSliceAthenaTrigRDO doc runs electron slice only on top joboptions testCommonSliceAthenaTrigRDO.py - athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="egamma" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' + athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="egamma" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' checklog --config checklogTriggerTest.conf --showexcludestats fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_ElectronSliceAthenaTrigRDO.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_ElectronSliceAthenaTrigRDO.root @@ -253,7 +253,7 @@ test 63 name JetSliceAthenaTrigRDO doc Jet slice on top joboptions testCommonSliceAthenaTrigRDO.py - athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="jet" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' + athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="jet" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' checklog --config checklogTriggerTest.conf --showexcludestats fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_JetSliceAthenaTrigRDO.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_JetSliceAthenaTrigRDO.root @@ -265,7 +265,7 @@ test 64 name METSliceAthenaTrigRDO doc MET slice on top joboptions testCommonSliceAthenaTrigRDO.py - athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="met" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' + athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="met" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' checklog --config checklogTriggerTest.conf --showexcludestats fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_METSliceAthenaTrigRDO.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_METSliceAthenaTrigRDO.root @@ -289,7 +289,7 @@ test 66 name MuonSliceAthenaTrigRDO doc muon on top joboptions testCommonSliceAthenaTrigRDO.py - athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="muon"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' + athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="muon"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' checklog --config checklogTriggerTest.conf --showexcludestats fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_MuonSliceAthenaTrigRDO.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_MuonSliceAthenaTrigRDO.root @@ -301,7 +301,7 @@ test 67 name TauSliceAthenaTrigRDO doc Tau on top joboptions testCommonSliceAthenaTrigRDO.py - athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="tau" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' + athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="tau" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]' checklog --config checklogTriggerTest.conf --showexcludestats fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_TauSliceAthenaTrigRDO.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_TauSliceAthenaTrigRDO.root diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh new file mode 100755 index 00000000000..16518440f99 --- /dev/null +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# art-description: MC v7 tight TriggerTest on MC +# art-type: grid +# art-include: 21.1/AthenaP1 +# art-include: 21.1-dev/AthenaP1 +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: master/AthenaP1 +# art-output: HLTChain.txt +# art-output: HLTTE.txt +# art-output: L1AV.txt +# art-output: HLTconfig*.xml +# art-output: L1Topoconfig*.xml +# art-output: LVL1config*.xml +# art-output: *.log +# art-output: costMonitoring_* +# art-output: *.root +# art-output: ntuple.pmon.gz +# art-output: *perfmon* +# art-output: TotalEventsProcessed.txt +# art-output: *.regtest + +export NAME="mc_pp_v7_bulkmcprod_grid" +export MENU="MC_pp_v7_BulkMCProd_mc_prescale" +export EVENTS="500" + +source exec_athena_art_trigger_validation.sh +source exec_art_triggertest_post.sh diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh new file mode 100755 index 00000000000..d7c16e606c5 --- /dev/null +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# art-description: MC v7 tight TriggerTest on MC +# art-type: grid +# art-include: 21.1/AthenaP1 +# art-include: 21.1-dev/AthenaP1 +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: master/AthenaP1 +# art-output: HLTChain.txt +# art-output: HLTTE.txt +# art-output: L1AV.txt +# art-output: HLTconfig*.xml +# art-output: L1Topoconfig*.xml +# art-output: LVL1config*.xml +# art-output: *.log +# art-output: costMonitoring_* +# art-output: *.root +# art-output: ntuple.pmon.gz +# art-output: *perfmon* +# art-output: TotalEventsProcessed.txt +# art-output: *.regtest + +export NAME="mc_pp_v7_cpsampleprod_grid" +export MENU="MC_pp_v7_CPSampleProd_mc_prescale" +export EVENTS="500" + +source exec_athena_art_trigger_validation.sh +source exec_art_triggertest_post.sh diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh new file mode 100755 index 00000000000..4712f5ab537 --- /dev/null +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# art-description: MC v7 tight TriggerTest on MC +# art-type: grid +# art-include: 21.1/AthenaP1 +# art-include: 21.1-dev/AthenaP1 +# art-include: 21.0/Athena +# art-include: 21.0-TrigMC/Athena +# art-include: master/Athena +# art-include: master/AthenaP1 +# art-output: HLTChain.txt +# art-output: HLTTE.txt +# art-output: L1AV.txt +# art-output: HLTconfig*.xml +# art-output: L1Topoconfig*.xml +# art-output: LVL1config*.xml +# art-output: *.log +# art-output: costMonitoring_* +# art-output: *.root +# art-output: ntuple.pmon.gz +# art-output: *perfmon* +# art-output: TotalEventsProcessed.txt +# art-output: *.regtest + +export NAME="mc_pp_v7_triggervalidation_grid" +export MENU="MC_pp_v7_TriggerValidation_mc_prescale" +export EVENTS="500" + +source exec_athena_art_trigger_validation.sh +source exec_art_triggertest_post.sh diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh index a259b6b14a9..2d227b12fdd 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh @@ -20,10 +20,10 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt +# art-output: *.regtest export NAME="slice_l1_grid" export JOBOPTIONS="TriggerTest/testLVL1CTPAthenaTrigRDO.py" -# art-output: *.regtest source exec_athena_art_trigger_validation.sh source exec_art_triggertest_post.sh diff --git a/Trigger/TriggerRelease/share/runHLT_standalone.py b/Trigger/TriggerRelease/share/runHLT_standalone.py index ee5ace84fd5..f400af1bf50 100755 --- a/Trigger/TriggerRelease/share/runHLT_standalone.py +++ b/Trigger/TriggerRelease/share/runHLT_standalone.py @@ -73,6 +73,10 @@ menuMap={ #Run-3 preparation menu 'LS2V1': ('LS2_v1', 'TriggerMenuXML/LVL1config_LS2_v1.xml'), + #2018 menus: menu name L1 xml file + 'HIV5': ('Physics_HI_v5', 'TriggerMenuXML/LVL1config_Physics_HI_v5.xml'), + 'MCHIV5': ('MC_HI_v5', 'TriggerMenuXML/LVL1config_Physics_HI_v5.xml'), + #2017 menus: menu name L1 xml file 'PhysicsV7': ('Physics_pp_v7', 'TriggerMenuXML/LVL1config_Physics_pp_v7.xml'), 'MCV7': ('MC_pp_v7', 'TriggerMenuXML/LVL1config_MC_pp_v7.xml'), -- GitLab From 2ff6e04a9064548716c4fa0029fd12817dbfcc11 Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Thu, 22 Nov 2018 16:18:18 +0100 Subject: [PATCH 102/135] TrigOutputHandling: Increase test timeout. Timing out in some nightlies. Former-commit-id: 0ad683de4df2fe40357284dd29ac8542b4a51069 --- Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt b/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt index d6bd030b531..890570e4e28 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt +++ b/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt @@ -45,4 +45,5 @@ atlas_add_test( void_record_test AthLinks AthenaKernel StoreGateLib GaudiKernel TestTools xAODCore ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/share" POST_EXEC_SCRIPT nopost.sh + PROPERTIES TIMEOUT 300 ) -- GitLab From a212a29631ee18813782f09b6c84f53f5a66ad6f Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Thu, 22 Nov 2018 16:19:28 +0100 Subject: [PATCH 103/135] ByteStreamCnvSvc: Fix timeout setting for test. Was timing out in some nightlies. Former-commit-id: 5b25e3d7f7856a2fad5f2ba14fc1a0ce7c88ee7d --- Event/ByteStreamCnvSvc/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Event/ByteStreamCnvSvc/CMakeLists.txt b/Event/ByteStreamCnvSvc/CMakeLists.txt index 9dd4536cf4b..84da1ffa7d4 100644 --- a/Event/ByteStreamCnvSvc/CMakeLists.txt +++ b/Event/ByteStreamCnvSvc/CMakeLists.txt @@ -91,6 +91,7 @@ function( _add_test testName toExecute ) # Set up the test: atlas_add_test( ${testName} SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/${testName}_test.sh + PROPERTIES TIMEOUT 300 ${_options} ) endfunction( _add_test ) @@ -98,8 +99,7 @@ endfunction( _add_test ) # Test(s) in the package: _add_test( BSEventSelector "athena.py ByteStreamCnvSvc/BSEventSelector_test_jobOptions.py" - POST_EXEC test/post_check.sh - PROPERTIES TIMEOUT 300 ) + POST_EXEC test/post_check.sh ) _add_test( AtlCopyBSEvent1_test "AtlCopyBSEvent -e 186882810,187403142,187404922,187419528 -o test.data /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" -- GitLab From 3e5ddc354c150eb6eba9ecef769c95737a945f2f Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Thu, 22 Nov 2018 16:20:18 +0100 Subject: [PATCH 104/135] TrigBunchCrossingTool: Increase test timeout. Was timing out in some nightlies. Former-commit-id: a11796e04e6282d6bb1d2a411b460d95e55ed582 --- Trigger/TrigAnalysis/TrigBunchCrossingTool/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Trigger/TrigAnalysis/TrigBunchCrossingTool/CMakeLists.txt b/Trigger/TrigAnalysis/TrigBunchCrossingTool/CMakeLists.txt index 779452524ce..b2221039338 100644 --- a/Trigger/TrigAnalysis/TrigBunchCrossingTool/CMakeLists.txt +++ b/Trigger/TrigAnalysis/TrigBunchCrossingTool/CMakeLists.txt @@ -81,7 +81,8 @@ atlas_add_test( ut_web_bunch_tool_test Root/count_bunch_neighbors.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODTrigger - TrigConfL1Data ) + TrigConfL1Data + PROPERTIES TIMEOUT 300 ) # Install files from the package: atlas_install_headers( TrigBunchCrossingTool ) -- GitLab From f99940ae23834285be177cc988adf60f44c7ae62 Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Thu, 22 Nov 2018 16:23:01 +0100 Subject: [PATCH 105/135] CollectionBase: Increase test timeout. Was timing out in some nightlies. Former-commit-id: 707dea31376402b0eb9d86193db69fa66aa5aee0 --- Database/APR/CollectionBase/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Database/APR/CollectionBase/CMakeLists.txt b/Database/APR/CollectionBase/CMakeLists.txt index ff41aa58aa4..30fa5459343 100644 --- a/Database/APR/CollectionBase/CMakeLists.txt +++ b/Database/APR/CollectionBase/CMakeLists.txt @@ -37,5 +37,6 @@ atlas_add_dictionary( CollectionDict atlas_add_test( Factory_test SOURCES test/Factory_test.cxx - LINK_LIBRARIES CollectionBase ) + LINK_LIBRARIES CollectionBase + PROPERTIES TIMEOUT 300 ) -- GitLab From cef1fde4efc148c93f00dfe9de312eeda7d534c4 Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Thu, 22 Nov 2018 16:24:35 +0100 Subject: [PATCH 106/135] IOVDbSvc: Increase test timeout. Was timing out in some nightlies. Former-commit-id: e263a624496b54ee79ebf339254fec2eff150f5e --- Database/IOVDbSvc/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Database/IOVDbSvc/CMakeLists.txt b/Database/IOVDbSvc/CMakeLists.txt index 8409c53db5e..2db732d1d10 100644 --- a/Database/IOVDbSvc/CMakeLists.txt +++ b/Database/IOVDbSvc/CMakeLists.txt @@ -56,5 +56,6 @@ atlas_add_test( IOVDbSvc_test test/IOVDbSvc_test.cxx INCLUDE_DIRS ${COOL_INCLUDE_DIRS} LINK_LIBRARIES AthenaBaseComps AthenaKernel SGTools StoreGateLib SGtests GaudiKernel TestTools EventInfo IOVSvcLib xAODEventInfo PersistentDataModel ${COOL_LIBRARIES} + PROPERTIES TIMEOUT 300 EXTRA_PATTERNS "^HistogramPersis.* INFO|^IOVSvc +DEBUG|^IOVSvcTool +DEBUG" ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/share" ) -- GitLab From a8050bcc7ffa31dde8a722c22e4c72c705f19100 Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Wed, 21 Nov 2018 21:40:50 +0100 Subject: [PATCH 107/135] tauRec: Fix for q220. Workaround for running in cosmics configuration, where PrimaryVertex does not exist. Do not set global scheduler flags from subsystem configuration. Do not set SGInputLoader. Former-commit-id: 33e1eaf14fff585ba0f45ca137976b8e4c12db1f --- Reconstruction/tauRec/python/TauRecBuilder.py | 8 ++- .../tauRec/python/TauRecConfigured.py | 59 ++++++++----------- Reconstruction/tauRec/python/TauRecRunner.py | 7 ++- 3 files changed, 32 insertions(+), 42 deletions(-) diff --git a/Reconstruction/tauRec/python/TauRecBuilder.py b/Reconstruction/tauRec/python/TauRecBuilder.py index 12fea6749b3..e1440476500 100644 --- a/Reconstruction/tauRec/python/TauRecBuilder.py +++ b/Reconstruction/tauRec/python/TauRecBuilder.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration ################################################################################ ## @@ -86,7 +86,8 @@ class TauRecCoreBuilder ( TauRecConfigured ) : tools.append(taualgs.getTauAxis()) tools.append(taualgs.getTauTrackFinder(removeDuplicateTracks=(not doMVATrackClassification) )) if doMVATrackClassification : tools.append(taualgs.getTauTrackClassifier()) - tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=True, correctAxis=False, postfix='_onlyEnergy')) + if jobproperties.Beam.beamType()!="cosmics": + tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=True, correctAxis=False, postfix='_onlyEnergy')) tools.append(taualgs.getCellVariables()) tools.append(taualgs.getElectronVetoVars()) # @@ -271,7 +272,8 @@ class TauRecVariablesProcessor ( TauRecConfigured ) : #these tools need pantau info tools.append(taualgs.getCombinedP4FromRecoTaus()) - tools.append(taualgs.getMvaTESVariableDecorator()) + if jobproperties.Beam.beamType()!="cosmics": + tools.append(taualgs.getMvaTESVariableDecorator()) tools.append(taualgs.getMvaTESEvaluator()) if tauFlags.doRunTauDiscriminant(): diff --git a/Reconstruction/tauRec/python/TauRecConfigured.py b/Reconstruction/tauRec/python/TauRecConfigured.py index a7ff6031ac7..8747fd7fb31 100644 --- a/Reconstruction/tauRec/python/TauRecConfigured.py +++ b/Reconstruction/tauRec/python/TauRecConfigured.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration ################################################################################ ## @@ -14,6 +14,7 @@ ################################################################################ from RecExConfig.Configured import Configured +from AthenaCommon.BeamFlags import jobproperties from AthenaCommon.SystemOfUnits import * ################################################################################ @@ -58,35 +59,27 @@ class TauRecConfigured ( Configured ) : topSequence = AlgSequence() - from AthenaCommon.AlgScheduler import AlgScheduler - AlgScheduler.ShowDataDependencies(True) - AlgScheduler.ShowControlFlow(True) - - from SGComps.SGCompsConf import SGInputLoader - topSequence += SGInputLoader() - topSequence.SGInputLoader.Load = [ ('xAOD::JetContainer','AntiKt4LCTopoJets'), ('xAOD::VertexContainer', 'PrimaryVertices'), - ('xAOD::TrackParticleContainer','InDetTrackParticles'), ('CaloCellContainer','AllCalo') ] - - # Can I move this to different script? - from AthenaCommon.AppMgr import ToolSvc - from JetRec.JetRecConf import JetAlgorithm - jetTrackAlg = JetAlgorithm("JetTrackAlg_forTaus") - from JetRecTools.JetRecToolsConf import TrackVertexAssociationTool - TauTVATool = TrackVertexAssociationTool(TrackParticleContainer = "InDetTrackParticles", - TrackVertexAssociation="JetTrackVtxAssoc_forTaus", - VertexContainer= "PrimaryVertices", - MaxTransverseDistance = 2.5 *mm, - #MaxLongitudinalDistance = 2 *mm, - MaxZ0SinTheta = 3.0 *mm, - #OutputLevel=2 - ) - ToolSvc += TauTVATool - jetTrackAlg.Tools = [ TauTVATool ] - topSequence += jetTrackAlg - - # import tauRec.TauAlgorithmsHolder as taualgs - # add tauJVF tool to topSequence - # taualgs.setupTauJVFTool + if jobproperties.Beam.beamType()!="cosmics": + # Can I move this to different script? + from AthenaCommon.AppMgr import ToolSvc + from JetRec.JetRecConf import JetAlgorithm + jetTrackAlg = JetAlgorithm("JetTrackAlg_forTaus") + from JetRecTools.JetRecToolsConf import TrackVertexAssociationTool + TauTVATool = TrackVertexAssociationTool(TrackParticleContainer = "InDetTrackParticles", + TrackVertexAssociation="JetTrackVtxAssoc_forTaus", + VertexContainer= "PrimaryVertices", + MaxTransverseDistance = 2.5 *mm, + #MaxLongitudinalDistance = 2 *mm, + MaxZ0SinTheta = 3.0 *mm, + #OutputLevel=2 + ) + ToolSvc += TauTVATool + jetTrackAlg.Tools = [ TauTVATool ] + topSequence += jetTrackAlg + + # import tauRec.TauAlgorithmsHolder as taualgs + # add tauJVF tool to topSequence + # taualgs.setupTauJVFTool topSequence += self.TauProcessorAlgHandle() @@ -100,12 +93,6 @@ class TauRecConfigured ( Configured ) : from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() - from SGComps.SGCompsConf import SGInputLoader - # not needed? There by default now? - topSequence += SGInputLoader(OutputLevel=INFO) - topSequence.SGInputLoader.Load = [ ('xAOD::JetContainer','AntiKt4LCTopoJets'), ('xAOD::VertexContainer', 'PrimaryVertices'), - ('xAOD::TrackParticleContainer','InDetTrackParticles'), ('CaloCellContainer','AllCalo') ] - topSequence += self.TauProcessorAlgHandle() diff --git a/Reconstruction/tauRec/python/TauRecRunner.py b/Reconstruction/tauRec/python/TauRecRunner.py index df657803cc2..844d292919d 100644 --- a/Reconstruction/tauRec/python/TauRecRunner.py +++ b/Reconstruction/tauRec/python/TauRecRunner.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration ################################################################################ ## @@ -101,8 +101,9 @@ class TauRecRunner ( TauRecRunConfigured ) : # these tools need pantau info tools.append(taualgs.getCombinedP4FromRecoTaus()) - tools.append(taualgs.getMvaTESVariableDecorator()) - tools.append(taualgs.getMvaTESEvaluator()) + if jobproperties.Beam.beamType()!="cosmics": + tools.append(taualgs.getMvaTESVariableDecorator()) + tools.append(taualgs.getMvaTESEvaluator()) if tauFlags.doRunTauDiscriminant(): tools.append(taualgs.getTauIDVarCalculator()) -- GitLab From b923902768d609ac29019f85a1a10593e396dd9b Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Fri, 23 Nov 2018 19:25:09 +0100 Subject: [PATCH 108/135] Update packages:TrigP1Test from upstream/21.1 to origin/rbielski_23_Nov_TriggerRelease_to_master via pseudo-merge Former-commit-id: f2b939fcd79c730ea6f7e7feb0480eb8ac6d7fd8 --- .../TrigValidation/TrigP1Test/CMakeLists.txt | 2 +- .../TrigP1Test/Testing/TrigP1Test_ART.conf | 222 +++++++++++++----- .../TrigP1Test/share/testCheckKeys.sh | 2 + .../TrigP1Test/share/testUploadMenuKeys.sh | 191 ++++++++------- .../TrigP1Test/share/trigp1test_athenaHLT.py | 68 +++++- .../share/trigp1test_prescaleForROSsim.py | 43 ++++ .../test/exec_art_trigp1test_post.sh | 3 +- .../test/test_HLT_HIV5_FTK_build.sh | 25 ++ .../TrigP1Test/test/test_HLT_HIV5_build.sh | 25 ++ .../TrigP1Test/test/test_HLT_MCHIV5_build.sh | 25 ++ ...HLT_physicsV7_menu_ART_and_ROSsim_build.sh | 42 ++++ .../test/test_HLT_physicsV7_menu_build.sh | 43 +++- ...athenaHLT_CostMonitoring_PhysicsV7_grid.sh | 1 + .../test_athenaHLT_LatestRun_HIV5_build.sh | 25 ++ ...hysics_pp_v7_PSed_nightlyDayBefore_grid.sh | 7 +- 15 files changed, 566 insertions(+), 158 deletions(-) create mode 100755 Trigger/TrigValidation/TrigP1Test/share/trigp1test_prescaleForROSsim.py create mode 100755 Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_FTK_build.sh create mode 100755 Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_build.sh create mode 100755 Trigger/TrigValidation/TrigP1Test/test/test_HLT_MCHIV5_build.sh create mode 100755 Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_ART_and_ROSsim_build.sh create mode 100755 Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_LatestRun_HIV5_build.sh diff --git a/Trigger/TrigValidation/TrigP1Test/CMakeLists.txt b/Trigger/TrigValidation/TrigP1Test/CMakeLists.txt index 155ea424dda..e29582c468f 100644 --- a/Trigger/TrigValidation/TrigP1Test/CMakeLists.txt +++ b/Trigger/TrigValidation/TrigP1Test/CMakeLists.txt @@ -16,5 +16,5 @@ atlas_install_python_modules( python/*.py ) atlas_install_joboptions( share/*.py ) atlas_install_runtime( test/TrigP1Test_TestConfiguration.xml Testing/*.trans Testing/*.conf python/RunMsgFinder.py python/RttScriptRunner.py python/RootComp.py python/RegTest.py python/CheckLog.py python/CheckStatusCode.py python/LogTail.py python/DeleteRaw.py python/TruncateLog.py python/releaseFromSMK.py) -atlas_install_scripts( share/*.sh share/testMonHistOH.py share/part_lhl2ef_fix.py share/setMagFieldCurrents.py share/part_get_runnumber.py share/trigp1test_athenaHLT.py Testing/*.sh Testing/splitlog.py test/exec*.sh test/test*.sh) +atlas_install_scripts( share/*.sh share/testMonHistOH.py share/part_lhl2ef_fix.py share/setMagFieldCurrents.py share/part_get_runnumber.py share/trigp1test_athenaHLT.py share/trigp1test_prescaleForROSsim.py Testing/*.sh Testing/splitlog.py test/exec*.sh test/test*.sh) diff --git a/Trigger/TrigValidation/TrigP1Test/Testing/TrigP1Test_ART.conf b/Trigger/TrigValidation/TrigP1Test/Testing/TrigP1Test_ART.conf index 25d04077c8b..4b8963abde1 100644 --- a/Trigger/TrigValidation/TrigP1Test/Testing/TrigP1Test_ART.conf +++ b/Trigger/TrigValidation/TrigP1Test/Testing/TrigP1Test_ART.conf @@ -49,7 +49,7 @@ test 2 # doc athenaHLT on data with Physics_pp_v5 menu currently from 2015 EB data # filterlog filterREGTEST.py # checklog --config checklogTrigP1Test.conf --showexcludestats -# fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV5.reference +# fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV5.reference # rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV5.root # checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV5.root 1 HLT # athena_cmd athenaHLT.py -o HLT_physicsV5 -n 75 -f /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00276952.physics_EnhancedBias.merge.RAW._lb0113._SFO-ALL._0001.data -c 'testPhysicsV5=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -64,7 +64,7 @@ test 13 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix reference - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_rerunLVL1/trigp1test_HLT_physicsV7_rerunLVL1.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_rerunLVL1/trigp1test_HLT_physicsV7_rerunLVL1.reference rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_rerunLVL1/trigp1test_HLT_physicsV7_rerunLVL1.root checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_rerunLVL1/trigp1test_HLT_physicsV7_rerunLVL1.root 1 HLT athena_cmd athenaHLT.py -o HLT_physicsV7_rerunLVL1 -n 25 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True;rerunLVL1=True' TriggerRelease/runHLT_standalone.py @@ -79,11 +79,11 @@ test 15 doc athenaHLT on simulated data including L1Topo ROI & DAQ ROB decoding with Physics_pp_v6 menu, data is cosmics from M7 with sim L1Topo ROBFs merged in, override ROB Ids as sim data used different convention filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_L1Topo_sim.reference + fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_L1Topo_sim.reference customrootcomp rootcomp_l1topo.sh /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_L1Topo_sim.root extra_failure_codes ROOTCOMP_MISMATCH checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_L1Topo_sim.root 1 HLT - athena_cmd athenaHLT.py -o HLT_physicsV6_L1Topo_sim -n 10 -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data14_cos.00247688_mergedL1Topo._0001.data --extra-l1r-robs '[9502848,9502864]' --log-level INFO,ERROR -c 'testPhysicsV6=True;doValidation=True;L1TopoCheck=True;fpeAuditor=True' -C 'L1TopoROBMonitor.L1TopoDAQROBIDs=[0x00910001,0x00910011]; L1TopoROBMonitor.L1TopoROIROBIDs=[0x00910080,0x00910090]; L1TopoROBMonitor.useDetMask=False; svcMgr.ByteStreamAddressProviderSvc.TopoProcModuleID=[0x80,0x90]; from L1TopoByteStream.L1TopoByteStreamConf import L1TopoByteStreamTool; l1TopoByteStreamTool=L1TopoByteStreamTool(); l1TopoByteStreamTool.ROBSourceIDs=[0x00910001,0x00910011]; svcMgr.ToolSvc+=l1TopoByteStreamTool' TriggerRelease/runHLT_standalone.py + athena_cmd athenaHLT.py -o HLT_physicsV6_L1Topo_sim -n 10 -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data14_cos.00247688_mergedL1Topo._0001.data --extra-l1r-robs '[9502848,9502864]' --log-level INFO,ERROR -c 'testPhysicsV6=True;doValidation=True;L1TopoCheck=True;fpeAuditor=True' -C 'L1TopoROBMonitor.L1TopoDAQROBIDs=[0x00910001,0x00910011]; L1TopoROBMonitor.L1TopoROIROBIDs=[0x00910080,0x00910090]; L1TopoROBMonitor.useDetMask=False; svcMgr.ByteStreamAddressProviderSvc.TopoProcModuleID=[0x80,0x90]; from L1TopoByteStream.L1TopoByteStreamConf import L1TopoByteStreamTool; l1TopoByteStreamTool=L1TopoByteStreamTool(); l1TopoByteStreamTool.ROBSourceIDs=[0x00910001,0x00910011]; svcMgr.ToolSvc+=l1TopoByteStreamTool' TriggerRelease/runHLT_standalone.py post_command chainDump.py -S --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs post_command plotL1TopoROBMonHist.py expert-monitoring.root 2>/dev/null @@ -93,7 +93,7 @@ test 16 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_L1Topo_data/trigp1test_HLT_physicsV7_L1Topo_data.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_L1Topo_data/trigp1test_HLT_physicsV7_L1Topo_data.reference customrootcomp rootcomp_l1topo.sh /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_L1Topo_data/trigp1test_HLT_physicsV7_L1Topo_data.root extra_failure_codes ROOTCOMP_MISMATCH checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_L1Topo_data/trigp1test_HLT_physicsV7_L1Topo_data.root 1 HLT @@ -106,7 +106,7 @@ test 17 doc athenaHLT on data with Physics_pp_v6 menu currently from 2015 EB data filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6.reference + fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6.root checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6.root 1 HLT athena_cmd athenaHLT.py -o HLT_physicsV6 -n 75 -f /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -134,7 +134,7 @@ test 11 doc AthenaHLT on data, with MC_pp_V5 menu loose prescale set filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV5.reference + fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV5.reference checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV5.root 1 HLT rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV5.root athena_cmd athenaHLT.py -o HLT_mcV5 -n 75 -f /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data -c 'testMCV5=True;rerunLVL1=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -151,7 +151,7 @@ test 12 doc AthenaHLT on data, with MC_pp_V6 menu loose prescale set filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV6.reference + fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV6.reference checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV6.root 1 HLT rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV6.root athena_cmd athenaHLT.py -o HLT_mcV6 -n 50 -f /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data -c 'testMCV6=True;rerunLVL1=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -190,7 +190,7 @@ test 22 doc Standalone HLT running in athena and compare to athenaHLT checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/AthenaP1BS_standalone/trigp1test_AthenaP1BS_standalone.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/AthenaP1BS_standalone/trigp1test_AthenaP1BS_standalone.reference rootcomp ../HLT_physicsV7/expert-monitoring.root expert-monitoring.root checkcount ../HLT_physicsV7/expert-monitoring.root 0 BOTH athena_cmd athena.py -c "BSRDOInput='/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1';testPhysicsV7=True;writeBS=True;rerunLVL1=True;doValidation=True;EvtMax=25" TriggerRelease/runHLT_standalone.py @@ -208,7 +208,7 @@ test 30 doc athenaHLT on MC with MC menu, input from AthenaP1RDOtoBS filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_MC_BSfromRDO.reference + fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_MC_BSfromRDO.reference checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_MC_BSfromRDO.root 0 BOTH rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_MC_BSfromRDO.root # note ._0001.data is added automatically @@ -232,7 +232,7 @@ test 41 doc Trig_reco_tf with current T0 config checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix file, conditionsTag, geometryVersion - #athena_cmd Trig_reco_tf.py --inputBS_RDOFile "root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/data15_13TeV.00272531.physics_Main.daq.RAW._lb0104._SFO-5._0001.data" --precommand "testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True" --maxEvents '15' --outputBSFile "tmp.BS" ; source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; Reco_tf.py --inputBSFile "tmp.BS" --athenaopts=" --perfmon " --outputHISTFile 'myHIST.root' --outputAODFile 'myAOD.pool.root' --outputESDFile 'myESD.pool.root' --outputNTUP_MUONCALIBFile 'myNTUP_MUONCALIB.root' --autoConfiguration='everything' --conditionsTag "CONDBR2-BLKPA-2017-11" --geometryVersion "ATLAS-R2-2016-01-00-01" --preExec 'r2e:from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.useDynamicAlignFolders.set_Value_and_Lock(True)' --triggerConfig r2e=DATARECO:REPR + #athena_cmd Trig_reco_tf.py --inputBS_RDOFile "root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/data15_13TeV.00272531.physics_Main.daq.RAW._lb0104._SFO-5._0001.data" --precommand "testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True" --maxEvents '15' --outputBSFile "tmp.BS" ; source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; Reco_tf.py --inputBSFile "tmp.BS" --athenaopts=" --perfmon " --outputHISTFile 'myHIST.root' --outputAODFile 'myAOD.pool.root' --outputESDFile 'myESD.pool.root' --outputNTUP_MUONCALIBFile 'myNTUP_MUONCALIB.root' --autoConfiguration='everything' --conditionsTag "CONDBR2-BLKPA-2017-11" --geometryVersion "ATLAS-R2-2016-01-00-01" --preExec 'r2e:from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.useDynamicAlignFolders.set_Value_and_Lock(True)' --triggerConfig r2e=DATARECO:REPR athena_cmd export AMIConfig=$(cat /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/T0Config.txt); echo $AMIConfig; Trig_reco_tf.py --inputBS_RDOFile "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1" --precommand "testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True" --maxEvents '15' --outputBSFile "tmp.BS"; Reco_tf.py --asetup "RAWtoALL:Athena,21.0,latest" --inputBSFile "tmp.BS" --athenaopts=" --perfmon " --outputHISTFile 'myHIST.root' --outputAODFile 'myAOD.pool.root' --outputESDFile 'myESD.pool.root' --AMIConfig "${AMIConfig}" post_command checkFile.py myAOD.pool.root > AOD.txt @@ -244,7 +244,7 @@ test 42 joboptions testAthenaP1ESD_TrigEDMCheck_data.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/TrigEDMCheck_physicsV7_currentT0_ESD/trigp1test_TrigEDMCheck_physicsV7_currentT0.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/TrigEDMCheck_physicsV7_currentT0_ESD/trigp1test_TrigEDMCheck_physicsV7_currentT0.reference pre_condition if [[ $(find ../Trigreco_physicsV7_currentT0/myESD.pool.root -type f -size +1000000c 2>/dev/null) ]] ; then test -e ../Trigreco_physicsV7_currentT0/myESD.pool.root ; else test -e non_existing_file ; fi athena_cmd source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; athena.py -c 'fileList=["../Trigreco_physicsV7_currentT0/myESD.pool.root"]' @@ -254,7 +254,7 @@ test 43 joboptions testAthenaP1ESD_TrigEDMCheck_data.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/TrigEDMCheck_physicsV7_currentT0_AOD/trigp1test_TrigEDMCheck_physicsV7_currentT0.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/TrigEDMCheck_physicsV7_currentT0_AOD/trigp1test_TrigEDMCheck_physicsV7_currentT0.reference pre_condition if [[ $(find ../Trigreco_physicsV7_currentT0/myAOD.pool.root -type f -size +1000000c 2>/dev/null) ]] ; then test -e ../Trigreco_physicsV7_currentT0/myAOD.pool.root ; else test -e non_existing_file ; fi athena_cmd source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; athena.py -c 'fileList=["../Trigreco_physicsV7_currentT0/myAOD.pool.root"]' @@ -272,7 +272,7 @@ test 45 name TrigEDMCheck_mcV6_currentT0 doc EDMCheck on Trig_reco_mcV6_currentT0 checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_TrigEDMCheck_mcV6_currentT0.reference + fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_TrigEDMCheck_mcV6_currentT0.reference pre_condition test if [[ $(find ../Trig_reco_mcV6_currentT0/myESD.pool.root -type f -size +1000000c 2>/dev/null) ]] ; then test -e ../Trig_reco_mcV6_currentT0/myESD.pool.root ; else test -e non_existing_file ; fi pre_command ln -s ../Trig_reco_mcV6_currentT0/myESD.pool.root ESD.pool.root athena_cmd source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; athena.py -c 'fileList=["ESD.pool.root"]' TrigP1Test/testAthenaP1ESD_TrigEDMCheck_data.py @@ -300,7 +300,7 @@ test 49 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS/trigp1test_HLT_physicsV7_COS.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS/trigp1test_HLT_physicsV7_COS.reference rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS/trigp1test_HLT_physicsV7_COS.root checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS/trigp1test_HLT_physicsV7_COS.root 1 HLT athena_cmd athenaHLT.py -o HLT_physicsV7_COS -n 250 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_cos.00306147.physics_Main.daq.RAW._lb0494._SFO-4._0001.data -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -318,10 +318,10 @@ test 50 doc athenaHLT standalone with physicsV6 menu on COSMICS 2012 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2012.reference + fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2012.reference checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2012.root 1 HLT rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2012.root - athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2012 -n 100 -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_cos.00214912.express_express.merge.RAW._lb0184._SFO-ALL._0001.1 -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doValidation=True;doCosmics=True;useCONDBR2=False;setGlobalTag="COMCOND-HLTP-004-03-VAL-01";setDetDescr="ATLAS-R1-2012-02-00-00";fpeAuditor=True' TriggerRelease/runHLT_standalone.py + athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2012 -n 100 -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_cos.00214912.express_express.merge.RAW._lb0184._SFO-ALL._0001.1 -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doValidation=True;doCosmics=True;useCONDBR2=False;setGlobalTag="COMCOND-HLTP-004-03-VAL-01";setDetDescr="ATLAS-R1-2012-02-00-00";fpeAuditor=True' TriggerRelease/runHLT_standalone.py # post_command save_to_refdir.sh HLT_physicsV6_COS_2012._0001.data /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/online/references/ATN/latest post_command chainDump.py -n -S --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs @@ -332,7 +332,7 @@ test 51 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016MUONS/trigp1test_HLT_physicsV7_COS_2016MUONS.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016MUONS/trigp1test_HLT_physicsV7_COS_2016MUONS.reference rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016MUONS/trigp1test_HLT_physicsV7_COS_2016MUONS.root checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016MUONS/trigp1test_HLT_physicsV7_COS_2016MUONS.root 1 HLT athena_cmd athenaHLT.py -o HLT_physicsV7_COS_2016MUONS -n 100 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_cos.00306147.physics_CosmicMuons.merge.RAW._lb0494._SFO-ALL._0001.1 -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -348,7 +348,7 @@ test 52 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016IDCOSMICS/trigp1test_HLT_physicsV7_COS_2016IDCOSMICS.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016IDCOSMICS/trigp1test_HLT_physicsV7_COS_2016IDCOSMICS.reference rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016IDCOSMICS/trigp1test_HLT_physicsV7_COS_2016IDCOSMICS.root checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016IDCOSMICS/trigp1test_HLT_physicsV7_COS_2016IDCOSMICS.root 1 HLT athena_cmd athenaHLT.py -o HLT_physicsV7_COS_2016IDCOSMICS -n 100 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_cos.00306147.physics_IDCosmic.merge.RAW._lb0494._SFO-ALL._0001.1 -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -363,10 +363,10 @@ test 53 doc athenaHLT on data with Physics_pp_v6 menu currently cosmics from 2015 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015CALO.reference + fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015CALO.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015CALO.root checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015CALO.root 1 HLT - athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2015CALO -n 100 -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_cos.00256721.physics_CosmicCalo.merge.RAW._lb0403._SFO-ALL._0001.1 -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py + athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2015CALO -n 100 -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_cos.00256721.physics_CosmicCalo.merge.RAW._lb0403._SFO-ALL._0001.1 -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py # post_command save_to_refdir.sh HLT_physicsV6_COS_2015CALO._0001.data /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/online/references/ATN/latest post_command chainDump.py -n -S --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs post_test checkHist histSizes.py -t expert-monitoring.root ; cp post_test_checkHist.log checkHistathenaHLT.reference.new ; diff checkHistathenaHLT.reference.new /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_checkHistathenaHLT.reference @@ -376,10 +376,10 @@ test 54 doc athenaHLT on data with Physics_pp_v6 menu currently cosmics from M9 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015MBTS.reference + fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015MBTS.reference rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015MBTS.root checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015MBTS.root 1 HLT - athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2015MBTS -n 100 -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_cos.00257588.physics_L1MinBias.merge.RAW._lb0XXX._SFO-ALL._0001.1 -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py + athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2015MBTS -n 100 -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_cos.00257588.physics_L1MinBias.merge.RAW._lb0XXX._SFO-ALL._0001.1 -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py # post_command save_to_refdir.sh HLT_physicsV6_COS_2015MBTS._0001.data /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/online/references/ATN/latest post_command chainDump.py -n -S --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs post_test checkHist histSizes.py -t expert-monitoring.root ; cp post_test_checkHist.log checkHistathenaHLT.reference.new ; diff checkHistathenaHLT.reference.new /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_checkHistathenaHLT.reference @@ -399,6 +399,14 @@ test 61 athena_cmd athenaHLT.py -M -n 75 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_physicsV7_menu -c 'testPhysicsV7=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True' TriggerRelease/runHLT_standalone.py post_test checkHist histSizes.py -t r0000000000_part_athenaHLT_mon_HLT-Histogramming.root ; cp post_test_checkHist.log checkHistathenaHLT.reference.new ; diff checkHistathenaHLT.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_menu/trigp1test_checkHistathenaHLT.reference +test 60 + name HLT_HIV5_menu + doc Run athenaHLT on all events to create trigger configuration with HIV5 menu with rerunL1 + checklog --config checklogTrigP1Test.conf --showexcludestats + athena_cmd athenaHLT.py -M -o HLT_HIV5_menu -n 50 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1 -c 'testHIV5=True;rerunLVL1=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True;useCONDBR2=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py + post_test checkHist histSizes.py -t r0000000000_part_athenaHLT_mon_HLT-Histogramming.root ; cp post_test_checkHist.log checkHistathenaHLT.reference.new ; diff checkHistathenaHLT.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_menu/trigp1test_checkHistathenaHLT.reference + + test 62 name UploadMenuKeys doc Generates and uploads SMKs created from the HLT first and compares after rerun jobs from DB. @@ -407,20 +415,33 @@ test 62 pre_condition test -e ../HLT_physicsV7_menu/outputHLT*xml athena_cmd testUploadMenuKeys.sh --menu HLT_physicsV7 +test 59 + name UploadMenuKeys_HI + doc Generates and uploads SMKs created with HIV5 rerunL1 from the HLT first and compares after rerun jobs from DB. + pre_condition test -e ../HLT_HIV5_menu/ef_Default_setup.txt + pre_condition test -e ../HLT_HIV5_menu/ef_Default_setup_setup.txt + pre_condition test -e ../HLT_HIV5_menu/outputHLT*xml + athena_cmd testUploadMenuKeys.sh --menu HLT_HIV5 + test 70 name UploadMenuKeys_ART - doc Generates and uploads SMKs created from the HLT first and compares after rerun jobs from DB. + doc Uploads SMKs created from the HLT with rerunL1 pre_condition test -e ../HLT_physicsV7_menu/ef_Default_setup.txt pre_condition test -e ../HLT_physicsV7_menu/ef_Default_setup_setup.txt pre_condition test -e ../HLT_physicsV7_menu/outputHLT*xml athena_cmd testUploadMenuKeys.sh --menu HLT_physicsV7 --uploadPrescale --art - post_command cp prescaleKeys.txt /eos/atlas/atlascerngroupdisk/data-art/grid-input/TrigP1Test/. + post_command cp prescaleKeys_17000.txt prescaleKeys_9000.txt /eos/atlas/atlascerngroupdisk/data-art/grid-input/TrigP1Test/. test 63 name HLT_physicsV7_menu_checkkeys doc Recreate trigger configuration and compare with configuration from HLT_physicsV7_menu athena_cmd athenaHLT.py -M -n 75 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_physicsV7_menu_checkkeys -c 'testPhysicsV7=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True' TriggerRelease/runHLT_standalone.py +test 58 + name HLT_HIV5_menu_checkkeys + doc Recreate trigger configuration and compare with configuration from HLT_HIV5_menu + athena_cmd athenaHLT.py -M -o HLT_HIV5_menu_checkkeys -n 50 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1 -c 'testHIV5=True;rerunLVL1=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True;useCONDBR2=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py + test 64 name CheckKeysV7 @@ -434,6 +455,19 @@ test 64 checklog --config checklogTrigP1Test.conf --showexcludestats | grep -v "checking for" athena_cmd testCheckKeys.sh --menu HLT_physicsV7 +test 57 + name CheckKeysHIV5 + doc compare the SMK created from the HLT_HIV5 first and rerun jobs + pre_condition test -e ../HLT_HIV5_menu/ef_Default_setup.txt + pre_condition test -e ../HLT_HIV5_menu/ef_Default_setup_setup.txt + pre_condition test -e ../HLT_HIV5_menu/outputHLT*xml + pre_condition test -e ../HLT_HIV5_menu_checkkeys/ef_Default_setup.txt + pre_condition test -e ../HLT_HIV5_menu_checkkeys/ef_Default_setup_setup.txt + pre_condition test -e ../HLT_HIV5_menu_checkkeys/outputHLT*xml + checklog --config checklogTrigP1Test.conf --showexcludestats | grep -v "checking for" + athena_cmd testCheckKeys.sh --menu HLT_HIV5 + + test 65 name HLT_physicsV7_menu_rerundb doc athenaHLT from DB, use HLT_physicsV7 as reference @@ -445,6 +479,17 @@ test 65 post_command chainDump.py -n -S post_test RunMsg check_msg_stat.py --showignored --config checkMsgStat_TrigP1Test.conf $logfile +test 56 + name HLT_HIV5_menu_rerundb + doc athenaHLT from DB, use HLT_HIV5 as reference + checklog --config checklogTrigP1Test.conf --showexcludestats + rootcomp ../HLT_HIV5_menu/r0000000000_part_athenaHLT_mon_HLT-Histogramming.root r0000000000_part_athenaHLT_mon_HLT-Histogramming.root + extra_failure_codes ROOTCOMP_MISMATCH + pre_condition test -e ../UploadMenuKeys_HI/exportMenuKeys.sh + athena_cmd unset FRONTIER_SERVER; source ../UploadMenuKeys_HI/exportMenuKeys.sh; athenaHLT.py -M -o HLT_HIV5_menu_rerundb -n 50 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1 -J TrigConf::HLTJobOptionsSvc --use-database --db-type "Coral" --db-server "TRIGGERDBATN" --db-smkey ${smk} --db-hltpskey ${hltpsk} --db-extra "{'lvl1key': ${l1psk}}" + post_command chainDump.py -n -S + post_test RunMsg check_msg_stat.py --showignored --config checkMsgStat_TrigP1Test.conf $logfile + test 66 name HLT_physicsV6_prescaleChange doc Test of HLT prescale change @@ -453,7 +498,7 @@ test 66 pre_condition test -e ../UploadMenuKeys/prescales.txt pre_command ln -sf ../UploadMenuKeys/prescales.txt pre_command get_files -jo testPrescaleChange_postconfig.py - athena_cmd source ../UploadMenuKeys/exportMenuKeys.sh; athenaHLT.py -Z TrigP1Test.PrescaleChange -C 'include("testPrescaleChange_postconfig.py");fpeAuditor=True' -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data -J TrigConf::HLTJobOptionsSvc --use-database "DBServer=TRIGGERDBATN:Instance=L2:DBSMKey=${smk}:DBHLTPSKey=${hltpsk}:DBLVL1PSKey=${l1psk}" + athena_cmd source ../UploadMenuKeys/exportMenuKeys.sh; athenaHLT.py -Z TrigP1Test.PrescaleChange -C 'include("testPrescaleChange_postconfig.py");fpeAuditor=True' -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data -J TrigConf::HLTJobOptionsSvc --use-database "DBServer=TRIGGERDBATN:Instance=L2:DBSMKey=${smk}:DBHLTPSKey=${hltpsk}:DBLVL1PSKey=${l1psk}" test 67 name TriggerDBAccessTest @@ -494,7 +539,7 @@ test 74 name HLT_mcV7_rerunLVL1_menu doc Run athenaHLT on all events to create trigger configuration checklog --config checklogTrigP1Test.conf --showexcludestats - athena_cmd athenaHLT.py -M -n 1 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_mcV7_rerunLVL1_menu -c 'doDBConfig=True;testMCV7=True;rerunLVL1=True;trigBase="Default";enableCostForCAF=True' TriggerRelease/runHLT_standalone.py + athena_cmd athenaHLT.py -M -n 1 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_mcV7_rerunLVL1_menu -c 'doDBConfig=True;testMCV7=True;rerunLVL1=True;trigBase="Default";enableCostForCAF=True;doValidation=True' TriggerRelease/runHLT_standalone.py test 75 name UploadMenuKeys_MC_rerunLVL1 @@ -508,7 +553,7 @@ test 76 name HLT_mcV7_menu doc Run athenaHLT on all events to create trigger configuration checklog --config checklogTrigP1Test.conf --showexcludestats - athena_cmd athenaHLT.py -M -n 1 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_physicsV7_menu -c 'testMCV7=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True' TriggerRelease/runHLT_standalone.py + athena_cmd athenaHLT.py -M -n 1 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_mcV7_menu -c 'testMCV7=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True;doValidation=True' TriggerRelease/runHLT_standalone.py test 77 name UploadMenuKeys_MC @@ -613,31 +658,33 @@ test 113 athena_cmd athenaHLT.py -Z TrigP1Test.BeamSpotUpdate -n 50 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -c 'testPhysicsV7=True;doValidation=True;BeamspotFromSqlite=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py -test 110 - name HLT_physicsV7_ROBprefetching_off - doc athenaHLT on data with physicsV7 menu without ROB prefetching - pre_command cp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ATLASros2rob.py . - athena_cmd athenaHLT.py -n 50 -L1 -m 'ATLASros2rob' -c "testPhysicsV7=True;doValidation=True" -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 TriggerRelease/runHLT_standalone.py +test 109 + name HLT_physicsV7_ROSsim_17000 + doc athenaHLT on data with physicsV7 menu with ROS simulation. It uses PS keys generated with rerunL1 + pre_condition test -e ../UploadMenuKeys_ART/prescaleKeys_17000.txt + pre_command cp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ATLASros2rob2018.py . + athena_cmd trigp1test_prescaleForROSsim.py --nevents 600 --file /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 --ros2rob ATLASros2rob2018 --keys ../UploadMenuKeys_ART/prescaleKeys_17000.txt filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_off/trigp1test_HLT_physicsV7_ROBprefetching_off.reference - rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_off/trigp1test_HLT_physicsV7_ROBprefetching_off.root - checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_off/trigp1test_HLT_physicsV7_ROBprefetching_off.root 1 HLT - post_command chainDump.py -n -S --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_17000/trigp1test_HLT_physicsV7_ROSsim_17000.reference + rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_17000/trigp1test_HLT_physicsV7_ROSsim_17000.root + checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_17000/trigp1test_HLT_physicsV7_ROSsim_17000.root 0 HLT + post_command chainDump.py -n -S --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs + post_test ROStest grep "ROS-" atn_test.log; cp post_test_ROStest.log ROStest.reference.new; diff ROStest.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_17000/trigp1test_ROStest.reference -test 109 - name HLT_physicsV7_ROBprefetching_on - doc athenaHLT on data with physicsV7 menu with ROB prefetching - pre_condition test -e ../HLT_physicsV7_ROBprefetching_off/expert-monitoring.root - pre_command cp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ATLASros2rob.py . - athena_cmd athenaHLT.py -n 50 -L1 -m 'ATLASros2rob' -c "testPhysicsV7=True;doValidation=True" -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -C 'from AthenaCommon.AlgSequence import AlgSequence;AlgSequence().TrigSteer_HLT.enableRobRequestPreparation=True' TriggerRelease/runHLT_standalone.py +test 110 + name HLT_physicsV7_ROSsim_9000 + doc athenaHLT on data with physicsV7 menu with ROS simulation. It uses PS keys generated with rerunL1 + pre_condition test -e ../UploadMenuKeys_ART/prescaleKeys_9000.txt + pre_command cp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ATLASros2rob2018.py . + athena_cmd trigp1test_prescaleForROSsim.py --nevents 600 --file /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 --ros2rob ATLASros2rob2018 --keys ../UploadMenuKeys_ART/prescaleKeys_9000.txt filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_on/trigp1test_HLT_physicsV7_ROBprefetching_on.reference - rootcomp ../HLT_physicsV7_ROBprefetching_off/expert-monitoring.root expert-monitoring.root - checkcount ../HLT_physicsV7_ROBprefetching_off/expert-monitoring.root 1 HLT - post_command chainDump.py -n -S --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs - post_test ROStest grep "ROS-" atn_test.log; cp post_test_ROStest.log ROStest.reference.new; diff ROStest.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_on/trigp1test_ROStest.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_9000/trigp1test_HLT_physicsV7_ROSsim_9000.reference + rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_9000/trigp1test_HLT_physicsV7_ROSsim_9000.root + checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_9000/trigp1test_HLT_physicsV7_ROSsim_9000.root 0 HLT + post_command chainDump.py -n -S --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs + post_test ROStest grep "ROS-" atn_test.log; cp post_test_ROStest.log ROStest.reference.new; diff ROStest.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_9000/trigp1test_ROStest.reference test 114 name HLT_physicsV6_nocache @@ -645,12 +692,12 @@ test 114 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats checkcount ../HLT_physicsV6/expert-monitoring.root 0 HLT - athena_cmd athenaHLT.py -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data -oHLT_physicsV6_nocache -c 'testPhysicsV6=True;noCaching=True;HLTOutputLevel=INFO;doValidation=True;useCONDBR2=False;setGlobalTag="COMCOND-HLTP-004-03-VAL-01";setDetDescr="ATLAS-R1-2012-02-00-00";fpeAuditor=True' TriggerRelease/runHLT_standalone.py + athena_cmd athenaHLT.py -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data -oHLT_physicsV6_nocache -c 'testPhysicsV6=True;noCaching=True;HLTOutputLevel=INFO;doValidation=True;useCONDBR2=False;setGlobalTag="COMCOND-HLTP-004-03-VAL-01";setDetDescr="ATLAS-R1-2012-02-00-00";fpeAuditor=True' TriggerRelease/runHLT_standalone.py test 115 name tfTestPPV6 doc Check tf for menu PP V6 data - pre_command xrdcp root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data . + pre_command xrdcp root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data . pre_condition test -e ../UploadMenuKeys/exportMenuKeys.sh checklog --config checklogTrigP1Test.conf --showexcludestats athena_cmd source ../UploadMenuKeys/exportMenuKeys.sh; BatchHLTTrf_wrap.py inputBSFile=data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data outputRAWFile=RAW.999999._000001.data.1 doStreaming=True filters="express" stream_out=debug connection=TRIGGERDBATN smk=${smk} lvl1ps=${l1psk} hltps=${hltpsk} outputNTUP_TRIGCOSTEFFile=NTUP_TRIGCOSTEF.root outputNTUP_TRIGCOSTL2File=NTUP_TRIGCOSTL2.root outputNTUP_TRIGRATEEFFile=NTUP_TRIGRATEEF.root outputNTUP_TRIGRATEL2File=NTUP_TRIGRATEL2.root outputHIST_HLTMONEFFile=HIST_HLTMONEF.root outputHIST_HLTMONL2File=HIST_HLTMONL2.root max_events=10 @@ -669,7 +716,7 @@ test 120 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ALFAMon/trigp1test_HLT_physicsV7_ALFAMon.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ALFAMon/trigp1test_HLT_physicsV7_ALFAMon.reference rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ALFAMon/trigp1test_HLT_physicsV7_ALFAMon.root checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ALFAMon/trigp1test_HLT_physicsV7_ALFAMon.root 1 HLT athena_cmd athenaHLT.py -o HLT_physicsV7_ALFAMon -n 105 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_13TeV.00277025.physics_MinBias.merge.RAW._lb0500._SFO-1._0001.1 --log-level INFO,ERROR -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True;enableALFAMon=True;trigBase="Default";fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -681,7 +728,7 @@ test 121 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_AFP/trigp1test_HLT_physicsV7_AFP.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_AFP/trigp1test_HLT_physicsV7_AFP.reference rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_AFP/trigp1test_HLT_physicsV7_AFP.root checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_AFP/trigp1test_HLT_physicsV7_AFP.root 1 HLT #TODO: fix file @@ -749,21 +796,56 @@ test 159 doc athenaHLT standalone with HLT_HIV4 menu on a HI sample filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats -# TODO: fix references - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV4/trigp1test_HLT_HIV4.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV4/trigp1test_HLT_HIV4.reference checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV4/trigp1test_HLT_HIV4.root 1 L2 rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV4/trigp1test_HLT_HIV4.root - athena_cmd athenaHLT.py -o HLT_HIV4 -n 25 -f '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_hip5TeV.00312649.physics_EnhancedBias.merge.RAW._lb0150._SFO-ALL._0001.data' -c 'testHIV4=True;rerunLVL1=False;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py + athena_cmd athenaHLT.py -o HLT_HIV4 -n 50 -f '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_hip5TeV.00312649.physics_EnhancedBias.merge.RAW._lb0150._SFO-ALL._0001.data' -c 'testHIV4=True;rerunLVL1=True;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py # post_command save_to_refdir.sh HLT_HIV3._0001.data /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/online/references/ATN/latest post_command chainDump.py -n -S +test 160 + name HLT_HIV5 + doc athenaHLT standalone with HLT_HIV5 menu on a HI sample + filterlog filterREGTEST.py + checklog --config checklogTrigP1Test.conf --showexcludestats + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5/trigp1test_HLT_HIV5.reference + checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5/trigp1test_HLT_HIV5.root 1 L2 + rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5/trigp1test_HLT_HIV5.root + athena_cmd athenaHLT.py -o HLT_HIV5 -n 50 -f '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1' -c 'testHIV5=True;rerunLVL1=True;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py + post_command chainDump.py -n -S + +test 185 + name HLT_HIV5_FTK + doc athenaHLT standalone with HIV5 menu with doFTK on a HI sample + filterlog filterREGTEST.py + checklog --config checklogTrigP1Test.conf --showexcludestats + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_FTK/trigp1test_HLT_HIV5_FTK.reference + checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_FTK/trigp1test_HLT_HIV5_FTK.root 1 L2 + rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_FTK/trigp1test_HLT_HIV5_FTK.root + athena_cmd athenaHLT.py -o HLT_HIV5_FTK -n 50 -f '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1' -c 'testHIV5=True;from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.doFTK=True;rerunLVL1=True;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py + post_command chainDump.py -n -S + + + +test 165 + name HLT_MCHIV5 + doc athenaHLT standalone with HLT_MCHIV5 menu on a HI sample + filterlog filterREGTEST.py + checklog --config checklogTrigP1Test.conf --showexcludestats + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_MCHIV5/trigp1test_HLT_MCHIV5.reference + checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_MCHIV5/trigp1test_HLT_MCHIV5.root 1 L2 + rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_MCHIV5/trigp1test_HLT_MCHIV5.root + athena_cmd athenaHLT.py -o HLT_MCHIV5 -n 50 -f '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1' -c 'testMCHIV5=True;rerunLVL1=True;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py + post_command chainDump.py -n -S + + # ART not migrated #test 160 # name HLT_HIV3 # doc athenaHLT standalone with HLT_HIV3 menu on a HI sample # filterlog filterREGTEST.py # checklog --config checklogTrigP1Test.conf --showexcludestats -# fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_HIV3.reference +# fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_HIV3.reference # checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_HIV3.root 1 L2 # rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_HIV3.root # athena_cmd athenaHLT.py -o HLT_HIV3 -n 25 -f '/afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_hi.00287270.physics_HardProbes.daq.RAW._lb0122._SFO-1._0001.data' -c 'testHIV3=True;rerunLVL1=False;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py @@ -805,7 +887,7 @@ test 164 doc testing trigger results w/wo merging L2/EF, based on AthenaTrigRDO with run_standalone.py joboptions testAthenaL2EFMerging.py athena_args -c 'EvtMax=15; testPhysicsV7=True; BSRDOInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1"' - #athena_args -c 'doHLT=True; useCONDBR2=False; setGlobalTag="COMCOND-HLTP-004-03-VAL-01"; setDetDescr="ATLAS-R1-2012-02-01-00"; EvtMax=15; testPhysicsV6=True; BSRDOInput="root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data"' + #athena_args -c 'doHLT=True; useCONDBR2=False; setGlobalTag="COMCOND-HLTP-004-03-VAL-01"; setDetDescr="ATLAS-R1-2012-02-01-00"; EvtMax=15; testPhysicsV6=True; BSRDOInput="root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data"' checklog --config checklogTriggerTest.conf --showexcludestats # TODO: fix reference checkmerge expert-monitoring.root /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/AthenaTrigBS_L2EFMerging/triggertest_AthenaTrigBS_L2EFMerging.root 0 @@ -833,7 +915,7 @@ test 180 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix references - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_mcV7/trigp1test_HLT_mcV7.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_mcV7/trigp1test_HLT_mcV7.reference checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_mcV7/trigp1test_HLT_mcV7.root 1 HLT rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_mcV7/trigp1test_HLT_mcV7.root athena_cmd athenaHLT.py -o HLT_mcV7 -n 50 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -c 'testMCV7=True;rerunLVL1=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -845,7 +927,7 @@ test 181 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix reference - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7/trigp1test_HLT_physicsV7.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7/trigp1test_HLT_physicsV7.reference rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7/trigp1test_HLT_physicsV7.root checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7/trigp1test_HLT_physicsV7.root 1 HLT athena_cmd athenaHLT.py -o HLT_physicsV7 -n 75 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py @@ -860,12 +942,24 @@ test 182 filterlog filterREGTEST.py checklog --config checklogTrigP1Test.conf --showexcludestats # TODO: fix ref - fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_FTK/trigp1test_HLT_physicsV7_FTK.reference + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_FTK/trigp1test_HLT_physicsV7_FTK.reference rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_FTK/trigp1test_HLT_physicsV7_FTK.root checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_FTK/trigp1test_HLT_physicsV7_FTK.root 1 HLT athena_cmd athenaHLT.py -o HLT_physicsV7_FTK -n 30 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/RAW_FTK.pool.root -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True;from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.doFTK=True' TriggerRelease/runHLT_standalone.py post_command chainDump.py -n -S +test 184 + name HLT_HIV5_onFTKdata + doc athenaHLT on data with FTK simulation with HIV5 menu with doFTK + filterlog filterREGTEST.py + checklog --config checklogTrigP1Test.conf --showexcludestats + # TODO: fix ref + fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_onFTKdata/trigp1test_HLT_HIV5_onFTKdata.reference + rootcomp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_onFTKdata/trigp1test_HLT_HIV5_onFTKdata.root + checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_onFTKdata/trigp1test_HLT_HIV5_onFTKdata.root 1 HLT + athena_cmd athenaHLT.py -o HLT_HIV5_onFTKdata -n 30 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/RAW_FTK.pool.root -c 'testHIV5=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True;from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.doFTK=True' TriggerRelease/runHLT_standalone.py + post_command chainDump.py -n -S + test 183 name athenaHLT_LatestRun_MCV7 doc athenaHLT on latest available run @@ -874,4 +968,12 @@ test 183 athena_cmd trigp1test_athenaHLT.py --nfiles=1 --nevents=100 --dir='/eos/atlas/atlastier0/rucio/data18_13TeV/physics_Main/' --modifiers="testMCV7=True;fpeAuditor=True;from PerfMonComps.PerfMonFlags import jobproperties as pmon_properties ; pmon_properties.PerfMonFlags.doSemiDetailedMonitoring=True" post_command chainDump.py -n -S +test 186 + name athenaHLT_LatestRun_HIV5 + doc athenaHLT on latest available 2018 HI run + filterlog filterREGTEST.py + checklog --config checklogTrigP1Test.conf --showexcludestats + athena_cmd trigp1test_athenaHLT.py --nfiles=1 --nevents=100 --dir='/eos/atlas/atlastier0/rucio/data18_hi/physics_HardProbes/' --modifiers="testHIV5=True;fpeAuditor=True;from PerfMonComps.PerfMonFlags import jobproperties as pmon_properties ; pmon_properties.PerfMonFlags.doSemiDetailedMonitoring=True" + post_command chainDump.py -n -S + diff --git a/Trigger/TrigValidation/TrigP1Test/share/testCheckKeys.sh b/Trigger/TrigValidation/TrigP1Test/share/testCheckKeys.sh index 216f8b4b4d7..6768799386e 100755 --- a/Trigger/TrigValidation/TrigP1Test/share/testCheckKeys.sh +++ b/Trigger/TrigValidation/TrigP1Test/share/testCheckKeys.sh @@ -40,6 +40,8 @@ elif [ "$type" == "HLT_physicsV6" ]; then stump="Physics_pp_v6" elif [ "$type" == "HLT_physicsV7" ]; then stump="Physics_pp_v7" +elif [ "$type" == "HLT_HIV5" ]; then + stump="Physics_HI_v5" else stump="" fi diff --git a/Trigger/TrigValidation/TrigP1Test/share/testUploadMenuKeys.sh b/Trigger/TrigValidation/TrigP1Test/share/testUploadMenuKeys.sh index 599c8f07f33..c6c8961741f 100755 --- a/Trigger/TrigValidation/TrigP1Test/share/testUploadMenuKeys.sh +++ b/Trigger/TrigValidation/TrigP1Test/share/testUploadMenuKeys.sh @@ -66,6 +66,10 @@ elif [ "$type" == "HLT_mcV7" ]; then stump="MC_pp_v7" elif [ "$type" == "HLT_mcV7_rerunLVL1" ]; then stump="MC_pp_v7" +elif [ "$type" == "HLT_HIV5" ]; then + stump="Physics_HI_v5" +elif [ "$type" == "HLT_HIV5_rerunLVL1" ]; then + stump="Physics_HI_v5" else stump="" fi @@ -87,26 +91,21 @@ hltmenu1=`find ../"${type}"_menu/ -name outputHLTconfig_\*.xml` echo "AthenaP1_VERSION, ${AthenaP1_VERSION}" #get prescale files +prescale_type="tight" if [[ $stump =~ .*MC.* ]]; then menu_type="mc" + prescale_type="TriggerValidation" elif [[ $stump =~ .*Physics.* ]]; then menu_type="physics" + prescale_type="tight" fi -get_files -xmls HLTconfig_"${stump}"_tight_"${menu_type}"_prescale_"${AthenaP1_VERSION}".xml -hltmenu1_tight=`find . -name HLTconfig_\*_tight_\*.xml` - -get_files -xmls HLTconfig_"${stump}"_tightperf_"${menu_type}"_prescale_"${AthenaP1_VERSION}".xml -hltmenu1_tightperf=`find . -name HLTconfig_\*_tightperf_\*.xml` - -mkdir PS_tight -cp $l1menu PS_tight/. -cp $hltmenu1_tight PS_tight/. - -mkdir PS_tightperf -cp $l1menu PS_tightperf/. -cp $hltmenu1_tightperf PS_tightperf/. +get_files -xmls HLTconfig_"${stump}"_"${prescale_type}"_"${menu_type}"_prescale_"${AthenaP1_VERSION}".xml +hltmenu1_prescale=`find . -name HLTconfig_\*_${prescale_type}_\*.xml` +mkdir PS_${prescale_type} +cp $l1menu PS_${prescale_type}/. +cp $hltmenu1_prescale PS_${prescale_type}/. # copy the setup files to the local directory to have tests independent of each other cp ../"${type}"_menu/ef_Default_setup.txt ../"${type}"_menu/ef_Default_setup_setup.txt . @@ -126,8 +125,7 @@ hlt__setup1=ef_Default_setup.xml # get dtd file for L1 menu get_files -xmls LVL1config.dtd l1_schema=`find . -name LVL1config.dtd` -cp $l1_schema PS_tight/. -cp $l1_schema PS_tightperf/. +cp $l1_schema PS_${prescale_type}/. p1_rel="AthenaP1" if [ $NICOS_ATLAS_RELEASE ] @@ -166,61 +164,34 @@ echo "rundate=${rundate}" cmd="/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -up -release $p1_rel --l1_menu $l1menu --topo_menu $l1topo -hlt $hltmenu1 --hlt_setup $hlt__setup1 --name 'AthenaP1Test' -l INFO --SMcomment \"${rundate}${nightly}_${rel}\" --dbConn $DBConn -w_n 50 -w_t 60" # create script to upload keys -echo "# setup release" >> uploadSMK_"$stump"_tight.sh -echo "asetup AthenaP1,21.1,r${rel}" >> uploadSMK_"$stump"_tight.sh -echo "# creating SMK" >> uploadSMK_"$stump"_tight.sh -echo "if [ -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_tight.sh -echo " rm MenusKeys.txt" >> uploadSMK_"$stump"_tight.sh -echo "fi" >> uploadSMK_"$stump"_tight.sh -echo "Uploading SMK. It may take a while..." >> uploadSMK_"$stump"_tight.sh -echo "$cmd &> SMK_upload.log" >> uploadSMK_"$stump"_tight.sh -echo "if grep --quiet SEVERE SMK_upload.log; then" >> uploadSMK_"$stump"_tight.sh -echo " echo 'SEVERE error occured, maybe existing write lock. Please check SMK_upload.log' " >> uploadSMK_"$stump"_tight.sh -echo " return " >> uploadSMK_"$stump"_tight.sh -echo "elif [ ! -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_tight.sh -echo " echo 'MenusKeys.txt does not exist. Something went wrong. Please check SMK_upload.log' " >> uploadSMK_"$stump"_tight.sh -echo " return " >> uploadSMK_"$stump"_tight.sh -echo "fi" >> uploadSMK_"$stump"_tight.sh -echo "smk=\`grep SM MenusKeys.txt | awk '{print \$3}' | sed 's#:##'\`" >> uploadSMK_"$stump"_tight.sh -echo "echo 'Created SMK ' \$smk" >> uploadSMK_"$stump"_tight.sh -echo "# upload prescaled" >> uploadSMK_"$stump"_tight.sh -echo "Uploading prescale keys. It may take another while..." >> uploadSMK_"$stump"_tight.sh -echo "/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -dbConn $DBConn -psup PS_tight -smk \${smk} -w_n 50 -w_t 60 &> PS_upload.log" >> uploadSMK_"$stump"_tight.sh -echo "if grep -v 'LVL1config.dtd' PS_upload.log | grep --quiet SEVERE ; then" >> uploadSMK_"$stump"_tight.sh -echo " echo 'SEVERE error occured, maybe existing write lock. Please check PS_upload.log' " >> uploadSMK_"$stump"_tight.sh -echo " return " >> uploadSMK_"$stump"_tight.sh -echo "fi" >> uploadSMK_"$stump"_tight.sh -echo "l1psk=\`grep 'INFO: Prescale set saved with id' PS_upload.log | awk '{print \$7}' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_tight.sh -echo "hltpsk=\`grep 'INFO: HLT Prescale set saved with id' PS_upload.log | awk '{print \$8}' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_tight.sh -echo "echo 'L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk" >> uploadSMK_"$stump"_tight.sh - -echo "# setup release" >> uploadSMK_"$stump"_tightperf.sh -echo "asetup AthenaP1,21.1,r${rel}" >> uploadSMK_"$stump"_tightperf.sh -echo "# creating SMK" >> uploadSMK_"$stump"_tightperf.sh -echo "if [ -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_tightperf.sh -echo " rm MenusKeys.txt" >> uploadSMK_"$stump"_tightperf.sh -echo "fi" >> uploadSMK_"$stump"_tightperf.sh -echo "Uploading SMK. It may take a while..." >> uploadSMK_"$stump"_tightperf.sh -echo "$cmd &> SMK_upload.log" >> uploadSMK_"$stump"_tightperf.sh -echo "if grep --quiet SEVERE SMK_upload.log; then" >> uploadSMK_"$stump"_tightperf.sh -echo " echo 'SEVERE error occured, maybe existing write lock. Please check SMK_upload.log' " >> uploadSMK_"$stump"_tightperf.sh -echo " return " >> uploadSMK_"$stump"_tightperf.sh -echo "elif [ ! -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_tightperf.sh -echo " echo 'MenusKeys.txt does not exist. Something went wrong. Please check SMK_upload.log' " >> uploadSMK_"$stump"_tightperf.sh -echo " return " >> uploadSMK_"$stump"_tightperf.sh -echo "fi" >> uploadSMK_"$stump"_tightperf.sh -echo "smk=\`grep SM MenusKeys.txt | awk '{print \$3}' | sed 's#:##'\`" >> uploadSMK_"$stump"_tightperf.sh -echo "echo 'Created SMK ' \$smk" >> uploadSMK_"$stump"_tightperf.sh -echo "# upload prescaled" >> uploadSMK_"$stump"_tightperf.sh -echo "Uploading prescale keys. It may take another while..." >> uploadSMK_"$stump"_tightperf.sh -echo "/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -dbConn $DBConn -psup PS_tightperf -smk \${smk} -w_n 50 -w_t 60 &> PS_upload.log" >> uploadSMK_"$stump"_tightperf.sh -echo "if grep -v 'LVL1config.dtd' PS_upload.log | grep --quiet SEVERE ; then" >> uploadSMK_"$stump"_tightperf.sh -echo " echo 'SEVERE error occured, maybe existing write lock. Please check PS_upload.log' " >> uploadSMK_"$stump"_tightperf.sh -echo " return " >> uploadSMK_"$stump"_tightperf.sh -echo "fi" >> uploadSMK_"$stump"_tightperf.sh -echo "l1psk=\`grep 'INFO: Prescale set saved with id' PS_upload.log | awk '{print \$7}' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_tightperf.sh -echo "hltpsk=\`grep 'INFO: HLT Prescale set saved with id' PS_upload.log | awk '{print \$8}' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_tightperf.sh -echo "echo 'L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk" >> uploadSMK_"$stump"_tightperf.sh +echo "# setup release" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "asetup AthenaP1,21.1,r${rel}" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "# creating SMK" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "if [ -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_"$prescale_type".sh +echo " rm MenusKeys.txt" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "fi" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "echo 'Uploading SMK. It may take a while...'" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -up -release "$p1_rel" --l1_menu "$l1menu" --topo_menu "$l1topo" -hlt "$hltmenu1" --hlt_setup "$hlt__setup1" --name '"$stump"_"$prescale_type",AthenaP1Test' -l INFO --SMcomment '"${rundate}${nightly}_${rel}"' --dbConn TRIGGERDBREPR -onl -w_n 50 -w_t 60 &> SMK_upload.log" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "if grep --quiet SEVERE SMK_upload.log; then" >> uploadSMK_"$stump"_"$prescale_type".sh +echo " echo 'SEVERE error occured, maybe existing write lock. Please check SMK_upload.log' " >> uploadSMK_"$stump"_"$prescale_type".sh +echo " return " >> uploadSMK_"$stump"_"$prescale_type".sh +echo "elif [ ! -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_"$prescale_type".sh +echo " echo 'MenusKeys.txt does not exist. Something went wrong. Please check SMK_upload.log' " >> uploadSMK_"$stump"_"$prescale_type".sh +echo " return " >> uploadSMK_"$stump"_"$prescale_type".sh +echo "fi" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "smk=\`grep SM MenusKeys.txt | awk '{print \$3}' | sed 's#:##'\`" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "echo 'Created SMK ' \$smk" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "# upload prescaled" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "echo 'Uploading prescale keys. It may take another while...'" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh --dbConn TRIGGERDBREPR -psup PS_"$prescale_type" -smk \${smk} -w_n 50 -w_t 60 &> PS_upload.log" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "if grep -v 'LVL1config.dtd' PS_upload.log | grep --quiet SEVERE ; then" >> uploadSMK_"$stump"_"$prescale_type".sh +echo " echo 'SEVERE error occured, maybe existing write lock. Please check PS_upload.log' " >> uploadSMK_"$stump"_"$prescale_type".sh +echo " return " >> uploadSMK_"$stump"_"$prescale_type".sh +echo "fi" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "l1psk=\`grep 'INFO: Prescale set saved with id' PS_upload.log | awk '{print \$7}' | sed 's/,//g' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "hltpsk=\`grep 'INFO: HLT Prescale set saved with id' PS_upload.log | awk '{print \$8}' | sed 's/,//g' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_"$prescale_type".sh +echo "echo 'L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk" >> uploadSMK_"$stump"_"$prescale_type".sh + if [ $noUpload -eq 1 ]; then exit 0 @@ -257,8 +228,8 @@ echo "Uploading prescale keys..." # the upload of the xmls is now done standalone following the discussion on ATR-16799 # test checking out RB with atnight user -ART_dir=${PWD} -echo 'ART_dir: '${ART_dir} +TrigP1Test_ART_dir=${PWD} +echo 'TrigP1Test_ART_dir: '${TrigP1Test_ART_dir} MENU='Physics_pp_v7' echo 'Menu:' ${MENU} export ATLAS_LOCAL_ROOT_BASE="/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase" @@ -270,25 +241,74 @@ echo 'RB_dir: '${RB_dir} echo 'l1menu: '${l1menu} echo 'l1topo: '${l1topo} echo 'hltmenu: '${hltmenu1} -cd ${RB_dir}/scripts +cd TrigMenuRulebook/scripts + +#try to remove problematic link +rm TrigMenuRulebook +cp -r ../python TrigMenuRulebook + rm -f l1.xml hlt.xml -ln -s ${ART_dir}/${l1menu} l1.xml -ln -s ${ART_dir}/${hltmenu1} hlt.xml +ln -s ../../${l1menu} l1.xml +ln -s ../../${hltmenu1} hlt.xml ls -alhtr -#TODO: configure RB properly, which lumi point? -sed -i -e 's/ignoreErrors = False/ignoreErrors = True/g' runOptions.py -./runRuleBook.py 20000 -cd ${ART_dir} +# RB configured to ingnore errors and leave unprescaled any new chain not yet defined in RB. It won't try to copy keys to P1 +sed -i -e 's/ignoreErrors\s*=\s*False/ignoreErrors = True/g' runOptions.py +sed -i -e 's/doUnprescaledIfUndefined\s*=\s*False/doUnprescaledIfUndefined = True/g' runOptions.py +sed -i -e 's/doUseOnline\s*=\s*True/doUseOnline = False/g' runOptions.py +sed -i -e 's/doPbPb\s*=\s*True/doPbPb = False/g' runOptions.py + +./runRuleBook.py 17000 +cd ../.. +PSdir=`find TrigMenuRulebook/scripts -name "prescales_*" -type d` +echo "PSdir: "${PSdir} +rm $PSdir/Set_*.xml +rm $PSdir/*Emittance* +rm $PSdir/*Standby* +ls $PSdir + +# upload PS keys +cmd="/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh --dbConn $DBConn -psup $PSdir -smk $smk -w_n 50 -w_t 60" +echo $cmd " &> uploadPSK_prescaled.log" +eval $cmd &> uploadPSK_prescaled.log + +hltpsk2=`grep 'INFO: HLT Prescale set saved with id' uploadPSK_prescaled.log | sed 's#.*: \([0-9]*\)\.#\1#'` +l1psk2=`grep 'INFO: Prescale set saved with id' uploadPSK_prescaled.log | sed 's#.*: \([0-9]*\)\.#\1#'` +if [ -z "$hltpsk2" ] || [ -z "$l1psk2" ]; then + echo "ERROR Upload of prescale key failed" + echo 'In ./uploadPSK_prescaled.log:' + grep "Can't obtain write lock" uploadPSK_prescaled.log + grep "SEVERE" uploadPSK_prescaled.log + rm -rf TrigMenuRulebook + exit 1 +fi + +echo "smk=${smk}" > prescaleKeys_17000.txt +echo "l1psk=${l1psk2}" >> prescaleKeys_17000.txt +echo "hltpsk=${hltpsk2}" >> prescaleKeys_17000.txt +echo "echo 'setting these keys: SMK ' \$smk ', L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk " >> prescaleKeys_17000.txt +echo "Successfully uploaded prescales: l1psk=${l1psk2} and hltpsk=${hltpsk2}" + +rm uploadPSK_prescaled.log + +cd TrigMenuRulebook/scripts +rm -r prescales_* + +./runRuleBook.py 9000 +cd ../.. PSdir=`find TrigMenuRulebook/scripts -name "prescales_*" -type d` echo "PSdir: "${PSdir} rm $PSdir/Set_*.xml +rm $PSdir/*Emittance* +rm $PSdir/*Standby* ls $PSdir # upload PS keys -#/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -dbConn $DBConn -psup /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/Rules -smk $smk -w_n 50 -w_t 60 &> uploadPSK_prescaled.log -/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -dbConn $DBConn -psup $PSdir -smk $smk -w_n 50 -w_t 60 &> uploadPSK_prescaled.log + +cmd="/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh --dbConn $DBConn -psup $PSdir -smk $smk -w_n 50 -w_t 60" +echo $cmd " &> uploadPSK_prescaled.log" +eval $cmd &> uploadPSK_prescaled.log hltpsk2=`grep 'INFO: HLT Prescale set saved with id' uploadPSK_prescaled.log | sed 's#.*: \([0-9]*\)\.#\1#'` l1psk2=`grep 'INFO: Prescale set saved with id' uploadPSK_prescaled.log | sed 's#.*: \([0-9]*\)\.#\1#'` if [ -z "$hltpsk2" ] || [ -z "$l1psk2" ]; then @@ -296,12 +316,15 @@ if [ -z "$hltpsk2" ] || [ -z "$l1psk2" ]; then echo 'In ./uploadPSK_prescaled.log:' grep "Can't obtain write lock" uploadPSK_prescaled.log grep "SEVERE" uploadPSK_prescaled.log + rm -rf TrigMenuRulebook exit 1 fi -echo "smk=${smk}" > prescaleKeys.txt -echo "l1psk=${l1psk2}" >> prescaleKeys.txt -echo "hltpsk=${hltpsk2}" >> prescaleKeys.txt +echo "smk=${smk}" > prescaleKeys_9000.txt +echo "l1psk=${l1psk2}" >> prescaleKeys_9000.txt +echo "hltpsk=${hltpsk2}" >> prescaleKeys_9000.txt +echo "echo 'setting these keys: SMK ' \$smk ', L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk " >> prescaleKeys_9000.txt +echo "Successfully uploaded prescales: l1psk=${l1psk2} and hltpsk=${hltpsk2}" rm -rf TrigMenuRulebook diff --git a/Trigger/TrigValidation/TrigP1Test/share/trigp1test_athenaHLT.py b/Trigger/TrigValidation/TrigP1Test/share/trigp1test_athenaHLT.py index 5c1e8fdd707..8cbb3140c96 100755 --- a/Trigger/TrigValidation/TrigP1Test/share/trigp1test_athenaHLT.py +++ b/Trigger/TrigValidation/TrigP1Test/share/trigp1test_athenaHLT.py @@ -4,6 +4,40 @@ from glob import glob from fnmatch import fnmatch from subprocess import Popen, PIPE, STDOUT, check_call +from CoolConvUtilities.AtlCoolLib import indirectOpen +from PyCool import cool + +class CoolDB: + """Cache for COOL db conneciton objects""" + cooldbs = {} + + @classmethod + def get(cls, dbname): + if not dbname in cls.cooldbs: + cls.cooldbs[dbname] = indirectOpen(dbname,readOnly=True,oracle=True) + + return cls.cooldbs[dbname] + +# Helpers to convert validity key +def toRun(validity): + return (validity >> 32) + +def getLastPhysicsRuns(N=1): + """Return the last N runs with ReadyForPhysics""" + + db = CoolDB.get("COOLONL_TDAQ/CONDBR2") + f = db.getFolder("/TDAQ/RunCtrl/DataTakingMode") + objs = f.browseObjects(cool.ValidityKeyMin, cool.ValidityKeyMax, cool.ChannelSelection(0)) + lastrun = [] + while objs.goToNext(): + obj= objs.currentRef() + if obj.payload()['ReadyForPhysics']==0: continue + lastrun.append(toRun(obj.since())) + + return lastrun[len(lastrun)-N:] + + + #EOS walking Code courtesy of James Robinson def get_file_list( DATAPATH ) : @@ -55,16 +89,32 @@ def main(): (opts, args) = parser.parse_args() runs = get_file_list(opts.dir) - last_run_files = get_file_list(runs[-1] + "/*/") - subset = [] - for i in range(0,opts.nfiles): - subset.append('root://eosatlas.cern.ch//' + last_run_files[i]) - print subset + physics_runs = getLastPhysicsRuns(100) + physics_runs = [str(x) for x in physics_runs] + good_runs = [] + for r in runs: + good=False + for p in physics_runs: + if p in r: + good=True + if(good): + good_runs += [r] + runs = good_runs + + if(len(runs)==0): + print " FATAL : no run found" + + else: + last_run_files = get_file_list(runs[-1] + "/*/") + subset = [] + for i in range(0,opts.nfiles): + subset.append('root://eosatlas.cern.ch/' + last_run_files[i]) + print subset - trigCmd = "athenaHLT.py -n " + str(opts.nevents) + " -f \"" + str(subset) + "\" -c \"" + opts.modifiers + "\" TriggerRelease/runHLT_standalone.py" - trigCmdEsc = trigCmd.replace("\\","\\\\").replace("\"","\\\"")#For output to echo - check_call("echo \"" + trigCmdEsc + "\"", shell=True)#Call echo rather than print so that it completes first - check_call(trigCmd, shell=True) + trigCmd = "athenaHLT.py -n " + str(opts.nevents) + " -f \"" + str(subset) + "\" -c \"" + opts.modifiers + "\" TriggerRelease/runHLT_standalone.py" + trigCmdEsc = trigCmd.replace("\\","\\\\").replace("\"","\\\"")#For output to echo + check_call("echo \"" + trigCmdEsc + "\"", shell=True)#Call echo rather than print so that it completes first + check_call(trigCmd, shell=True) if __name__ == "__main__": main() diff --git a/Trigger/TrigValidation/TrigP1Test/share/trigp1test_prescaleForROSsim.py b/Trigger/TrigValidation/TrigP1Test/share/trigp1test_prescaleForROSsim.py new file mode 100755 index 00000000000..7bac066a680 --- /dev/null +++ b/Trigger/TrigValidation/TrigP1Test/share/trigp1test_prescaleForROSsim.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +#Script to run athenaHLT from DB with physics prescales and ROS simulation + +from subprocess import Popen, PIPE, STDOUT, check_call + +def main(): + + from optparse import OptionParser + parser = OptionParser() + parser.add_option("--file", help="Input file", default='') + parser.add_option("--nevents", help="Number of max events", + type='int', default=-1) + parser.add_option("--ros2rob", help="ros2rob map", default='') + parser.add_option("--keys", help="file to export keys", default='') + parser.add_option("--db", help="database", default="TRIGGERDBART") + (opts, args) = parser.parse_args() + + file_handle = open(opts.keys, 'r') + lines_list = file_handle.readlines() + smk = -1 + l1ps = -1 + hltps = -1 + for line in lines_list: + if "smk=" in line: + smk = int(line.split("=")[1]) + elif "l1psk=" in line: + l1ps = int(line.split("=")[1]) + elif "hltpsk=" in line: + hltps = int(line.split("=")[1]) + + if smk == -1 or l1ps == -1 or hltps == -1: + print "keys not found" + exit() + + trigCmd = "unset FRONTIER_SERVER; athenaHLT.py -n " + str(opts.nevents) + " -f " + str(opts.file) + " -J TrigConf::HLTJobOptionsSvc -L1 -m \"" + str(opts.ros2rob) + "\" --use-database --db-type \"Coral\" --db-server \"" + str(opts.db) + "\" --db-smkey " + str(smk) + " --db-hltpskey " + str(hltps) + " --db-extra \"{\'lvl1key\': " + str(l1ps) + "}\"" + + trigCmdEsc = trigCmd.replace("\\","\\\\").replace("\"","\\\"")#For output to echo + check_call("echo \"" + trigCmdEsc + "\"", shell=True)#Call echo rather than print so that it completes first + check_call(trigCmd, shell=True) + +if __name__ == "__main__": + main() + diff --git a/Trigger/TrigValidation/TrigP1Test/test/exec_art_trigp1test_post.sh b/Trigger/TrigValidation/TrigP1Test/test/exec_art_trigp1test_post.sh index 36ea0828da2..3e5909258cd 100755 --- a/Trigger/TrigValidation/TrigP1Test/test/exec_art_trigp1test_post.sh +++ b/Trigger/TrigValidation/TrigP1Test/test/exec_art_trigp1test_post.sh @@ -59,7 +59,8 @@ fi if [ -f trig_cost.root ]; then echo $(date "+%FT%H:%M %Z")" Running CostMon" - timeout 2h RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode > costMon.log 2>&1 +# timeout 2h RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode --ratesMode > costMon.log 2>&1 + timeout 2h RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode --monitorRates --isCPUPrediction --useEBWeight --patternsMonitor HLT_costmonitor HLT_mistimemonj400 HLT_mistimemoncaltimenomu HLT_mistimemoncaltime HLT_l1topodebug HLT_l1calooverflow HLT_e5_lhvloose_nod0_bBeexM6000t HLT_2e5_lhvloose_nod0_bBeexM6000t HLT_cscmon_L1All HLT_j0_perf_ds1_L1J100 --patternsInvert --predictionLumi 1.50e34 > costMon.log 2>&1 else echo $(date "+%FT%H:%M %Z")" file trig_cost.root does not exist thus RunTrigCostD3PD will not be run" fi diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_FTK_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_FTK_build.sh new file mode 100755 index 00000000000..625791a3ce3 --- /dev/null +++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_FTK_build.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# art-description: athenaHLT on HI data with HI V5 menu and doFTK (NB: no FTK sim in input data) +# art-type: build +# art-include: 21.1/AthenaP1 +# art-include: 21.1-dev/AthenaP1 +# art-include: 21.0/AthenaP1 +# art-include: 21.0-TrigMC/AthenaP1 +# art-include: master/AthenaP1 +# art-include: master/Athena + +if [ -z ${TEST} ]; then + export TEST="TrigP1Test" +fi + +export NAME=HLT_HIV5_FTK +export JOB_LOG="${NAME}.log" + +timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + + + diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_build.sh new file mode 100755 index 00000000000..8392525939a --- /dev/null +++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_build.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# art-description: athenaHLT standalone with HLT_HIV5 menu on a HI sample +# art-type: build +# art-include: 21.1/AthenaP1 +# art-include: 21.1-dev/AthenaP1 +# art-include: 21.0/AthenaP1 +# art-include: 21.0-TrigMC/AthenaP1 +# art-include: master/AthenaP1 +# art-include: master/Athena + +if [ -z ${TEST} ]; then + export TEST="TrigP1Test" +fi + +export NAME=HLT_HIV5 +export JOB_LOG="${NAME}.log" + +timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + + + diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_MCHIV5_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_MCHIV5_build.sh new file mode 100755 index 00000000000..d01894a7f18 --- /dev/null +++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_MCHIV5_build.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# art-description: athenaHLT standalone with HLT_HIV5 menu on a HI sample +# art-type: build +# art-include: 21.1/AthenaP1 +# art-include: 21.1-dev/AthenaP1 +# art-include: 21.0/AthenaP1 +# art-include: 21.0-TrigMC/AthenaP1 +# art-include: master/AthenaP1 +# art-include: master/Athena + +if [ -z ${TEST} ]; then + export TEST="TrigP1Test" +fi + +export NAME=HLT_MCHIV5 +export JOB_LOG="${NAME}.log" + +timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + + + diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_ART_and_ROSsim_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_ART_and_ROSsim_build.sh new file mode 100755 index 00000000000..2daf7732a06 --- /dev/null +++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_ART_and_ROSsim_build.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# art-description: Run athenaHLT on all events to create trigger configuration, generates and uploads SMKs with rerunLVL1 physics menu, then run ROS simulation with prescale keys for 17000 and 9000. RB configured such that new chains are unprescaled. Only in 21.1! +# art-type: build +# art-include: 21.1/AthenaP1 + +if [ -z ${TEST} ]; then + export TEST="TrigP1Test" +fi + +export NAME=HLT_physicsV7_menu +export JOB_LOG="${NAME}.log" + +timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + +export NAME=UploadMenuKeys_ART +export JOB_LOG="${NAME}.log" + +timeout 120m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + +export NAME=HLT_physicsV7_ROSsim_17000 +export JOB_LOG="${NAME}.log" + +timeout 150m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + +export NAME=HLT_physicsV7_ROSsim_9000 +export JOB_LOG="${NAME}.log" + +timeout 150m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_build.sh index f517e79bdab..fa8615eac00 100755 --- a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_build.sh +++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# art-description: Run athenaHLT on all events to create trigger configuration, generates and uploads SMKs created from the HLT first and compares after rerun jobs from DB, then compare the SMK created from the HLT_physicsV7 first and rerun jobs +# art-description: Run athenaHLT on all events to create trigger configuration, generates and uploads SMKs created from the HLT first and compares after rerun jobs from DB, then compare the SMK created from the HLT_physicsV7 first and rerun jobs. Runs the same thing also for the physics HI v5 menu # art-type: build # art-include: 21.1/AthenaP1 @@ -72,3 +72,44 @@ fi #ATH_RETURN=${PIPESTATUS[0]} #echo "art-result: ${ATH_RETURN} ${NAME}" +export NAME=HLT_HIV5_menu +export JOB_LOG="${NAME}.log" + +timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + +export NAME=UploadMenuKeys_HI +export JOB_LOG="${NAME}.log" + +timeout 120m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + +export NAME=HLT_HIV5_menu_rerundb +export JOB_LOG="${NAME}.log" + +timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + +export NAME=HLT_HIV5_menu_checkkeys +export JOB_LOG="${NAME}.log" + +timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + +export NAME=CheckKeysHIV5 +export JOB_LOG="${NAME}.log" + +timeout 180m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + + diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_CostMonitoring_PhysicsV7_grid.sh b/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_CostMonitoring_PhysicsV7_grid.sh index fcf3881283f..175e1c22145 100755 --- a/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_CostMonitoring_PhysicsV7_grid.sh +++ b/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_CostMonitoring_PhysicsV7_grid.sh @@ -20,6 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: *.regtest +# art-output: athena_stdout.txt export NAME="athenaHLT_CostMonitoring_PhysicsV7_grid" export TESTOPTION="setMenu='Physics_pp_v7_unprescaled_only_physics_prescale';setLVL1XML='TriggerMenuXML/LVL1config_Physics_pp_v7.xml';setL1TopoXML=setLVL1XML.replace('/LVL1','/L1Topo');rerunLVL1=True;enableCostD3PD=True;enableCostForCAF=True;HLTOutputLevel=INFO;doValidation=True;" diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_LatestRun_HIV5_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_LatestRun_HIV5_build.sh new file mode 100755 index 00000000000..66da5f8543e --- /dev/null +++ b/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_LatestRun_HIV5_build.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# art-description: athenaHLT on latest available run +# art-type: build +# art-include: 21.1/AthenaP1 +# art-include: 21.1-dev/AthenaP1 +# art-include: 21.0/AthenaP1 +# art-include: 21.0-TrigMC/AthenaP1 +# art-include: master/AthenaP1 +# art-include: master/Athena + +if [ -z ${TEST} ]; then + export TEST="TrigP1Test" +fi + +export NAME="athenaHLT_LatestRun_HIV5" +export JOB_LOG="${NAME}.log" + +timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG} + +ATH_RETURN=${PIPESTATUS[0]} +echo "art-result: ${ATH_RETURN} ${NAME}" + + + diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_physics_pp_v7_PSed_nightlyDayBefore_grid.sh b/Trigger/TrigValidation/TrigP1Test/test/test_physics_pp_v7_PSed_nightlyDayBefore_grid.sh index c1aa2aae651..eed3d8bbb12 100755 --- a/Trigger/TrigValidation/TrigP1Test/test/test_physics_pp_v7_PSed_nightlyDayBefore_grid.sh +++ b/Trigger/TrigValidation/TrigP1Test/test/test_physics_pp_v7_PSed_nightlyDayBefore_grid.sh @@ -15,7 +15,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: *.regtest - +# art-output: athena_stdout.txt export NAME="athenaHLT_prescaled_PhysicsV7" export JOB_LOG="${NAME}.log" @@ -44,10 +44,13 @@ if [ -z ${release} ]; then fi l1psk="'lvl1key': ${l1psk}" -subshellcmd='source $AtlasSetup/scripts/asetup.sh AthenaP1,21.1,'${release}'; athenaHLT.py -n 5000 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00339070.physics_EnhancedBias.merge.RAW._lb0101._SFO-1._0001.1 -o HLT_physicsV7_prescaled -J TrigConf::HLTJobOptionsSvc --use-database --db-type "Coral" --db-server "TRIGGERDBART" --db-smkey '${smk}' --db-hltpskey '${hltpsk}' --db-extra "{'${l1psk}'}"; Trig_reco_tf.py --inputBSFile=HLT_physicsV7_prescaled._0001.data --outputNTUP_TRIGCOST=trig_cost.root; RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode 2>&1 | tee ${JOB_LOG}' +subshellcmd='source $AtlasSetup/scripts/asetup.sh AthenaP1,21.1,'${release}'; athenaHLT.py -n 5000 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00339070.physics_EnhancedBias.merge.RAW._lb0101._SFO-1._0001.1 -o HLT_physicsV7_prescaled -J TrigConf::HLTJobOptionsSvc --use-database --db-type "Coral" --db-server "TRIGGERDBART" --db-smkey '${smk}' --db-hltpskey '${hltpsk}' --db-extra "{'${l1psk}'}"; Trig_reco_tf.py --inputBSFile=HLT_physicsV7_prescaled._0001.data --outputNTUP_TRIGCOST=trig_cost.root; RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode --monitorRates --isCPUPrediction --useEBWeight --patternsMonitor HLT_costmonitor HLT_mistimemonj400 HLT_mistimemoncaltimenomu HLT_mistimemoncaltime HLT_l1topodebug HLT_l1calooverflow HLT_e5_lhvloose_nod0_bBeexM6000t HLT_2e5_lhvloose_nod0_bBeexM6000t HLT_cscmon_L1All HLT_j0_perf_ds1_L1J100 --patternsInvert --predictionLumi 1.50e34; chainDump.py -n -S 2>&1 | tee ${JOB_LOG}' echo "running in subshell: $subshellcmd" (eval $subshellcmd) +grep -r "RATE_" costMonitoring_*/csv/Table_Rate_Group_HLT_All.csv | awk '{split($0,a,","); print a[1]"\t"a[4] }' >> HLTChain.txt +grep "TrigSteer_HLT.TrigChainMoni" stdout.txt | awk '{split($0,a,":|\t"); print a[4]" "a[10] }' | sed 's/\s*active\s*/_rerun\t/g' | sed 's/\s*HLT/HLT/g' >> HLTChain.txt + ATH_RETURN=${PIPESTATUS[0]} echo "art-result: ${ATH_RETURN} ${NAME}" -- GitLab From d1e1cdcba461454e62eef1aa7e04b543f66a2374 Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Fri, 23 Nov 2018 19:34:04 +0100 Subject: [PATCH 109/135] remove ATN/RTT test configuration the xml configuration files are obsolete as ATN and RTT were superseded by ART Former-commit-id: f31a8814f2f4aacd58e641d5ae6c6f688807b769 --- ...sTest_AthAnalysisBaseTestConfiguration.xml | 36 - .../TrigAnalysisTest_TestConfiguration.xml | 975 ------------------ .../test/TrigP1Test_TestConfiguration.xml | 752 -------------- .../test/TriggerTest_TestConfiguration.xml | 907 ---------------- 4 files changed, 2670 deletions(-) delete mode 100644 Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml delete mode 100644 Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml delete mode 100644 Trigger/TrigValidation/TrigP1Test/test/TrigP1Test_TestConfiguration.xml delete mode 100755 Trigger/TrigValidation/TriggerTest/test/TriggerTest_TestConfiguration.xml diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml b/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml deleted file mode 100644 index c6454e0b148..00000000000 --- a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> -<!-- NB validate this file here before committing to svn: - python /afs/cern.ch/user/r/rtt/public/xmlvalidate.py TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml - --> -<unifiedTestConfiguration> - - <atn> - <TEST name="TriggersFired_atn" type="athena" suite="TriggerDecisionToolTest"> - <options_atn>TrigAnalysisTest/TriggersFiredTest_jobOptions.py</options_atn> - <timelimit>30</timelimit> - <author>Javier Montejo</author> - <mailto>jmontejo@cern.ch</mailto> - <package_atn>Trigger/TrigValidation/TrigAnalysisTest</package_atn> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - <TEST name="Run1xAODValidation_atn" type="athena" suite="TriggerDecisionToolTest"> - <options_atn>TrigAnalysisTest/ValidateRun1BStoxAOD_jobOptions.py</options_atn> - <timelimit>30</timelimit> - <author>Oleg Kuprash</author> - <mailto>oleg.kuprash@cern.ch</mailto> - <package_atn>Trigger/TrigValidation/TrigAnalysisTest</package_atn> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - </atn> - - -</unifiedTestConfiguration> diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml b/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml deleted file mode 100644 index a90d61ab1b3..00000000000 --- a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml +++ /dev/null @@ -1,975 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> -<!-- NB validate this file here before committing to svn: - python /afs/cern.ch/user/r/rtt/public/xmlvalidate.py TrigAnalysisTest_TestConfiguration.xml - RTT: for single file use: jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch/eos/atlas/... - and for multiple files use: dsName="/eos/atlas/...";fileRange=[1,2] - --> -<unifiedTestConfiguration> - - <!-- ATN tests configured here --> - <atn> - <!-- always KEEP this one --> - <!-- Has been failing for a long time. Needs updated reference. - <TEST name="AthenaTrigRDOtoESDAOD" type="script" suite="tat_RDOtoESDAOD"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD --run AthenaTrigRDOtoESDAOD --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <!-- Has been failing for a long time. Needs updated reference histos. - <TEST name="AthenaTrigESD_HLTMonitoring" type="script" suite="tat_RDOtoESDAOD"> - <options_atn>trigtest.pl --test AthenaTrigESD_HLTMonitoring --run AthenaTrigESD_HLTMonitoring --conf TrigAnalysisTest.conf</options_atn> - <timelimit>60</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - - <TEST name="AthenaTrigRDOtoBS" type="script" suite="tat_BS"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoBS --run AthenaTrigRDOtoBS --conf TrigAnalysisTest.conf</options_atn> - <timelimit>70</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!-- Get ERRORs: Unknown OfflineId for OnlineId -> cannot create RDO - <TEST name="AthenaTrigBStoESD" type="script" suite="tat_BS"> - <options_atn>trigtest.pl --test AthenaTrigBStoESD --run AthenaTrigBStoESD --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <!--TEST name="AthenaTrigRDOtoBS_MC" type="script" suite="tat_BS_MC"--> - <TEST name="AthenaTrigRDOtoBS_MC" type="script" suite="tat_BS"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoBS_MC --run AthenaTrigRDOtoBS_MC --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!--TEST name="AthenaTrigBStoESD_MC" type="script" suite="tat_BS_MC"--> - <TEST name="AthenaTrigBStoESD_MC" type="script" suite="tat_BS"> - <options_atn>trigtest.pl --test AthenaTrigBStoESD_MC --run AthenaTrigBStoESD_MC --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!--TEST name="MC_standalone" type="script" suite="tat_BS_MC"--> - <!--TEST name="MC_standalone" type="script" suite="tat_BS"> - <options_atn>trigtest.pl - -test MC_standalone - -run MC_standalone - -conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST--> - - <!--TEST name="AthenaTrigRDOtoESDAOD_Physics" type="script" suite="tat_Phys_EA"--> - <!-- Needs updated reference files. - <TEST name="AthenaTrigRDOtoESDAOD_Physics" type="script" suite="tat_EA"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD_Physics --run AthenaTrigRDOtoESDAOD_Physics --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - - <!--TEST name="AthenaTrigRDOtoESDAOD_MC" type="script" suite="tat_MC_EA"--> - <!-- Needs new reference files. - <TEST name="AthenaTrigRDOtoESDAOD_MC" type="script" suite="tat_EA"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD_MC --run AthenaTrigRDOtoESDAOD_MC --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <!-- Needs updated reference files. - <TEST name="AthenaTrigRDOtoTAG" type="script" suite="tat_tag"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoTAG --run AthenaTrigRDOtoTAG --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <!--TEST name="AthenaTrigRDOtoAOD_Physics" type="script" suite="tat_AOD_Phys"--> - <!-- Needs updated reference files. - <TEST name="AthenaTrigRDOtoAOD_Physics" type="script" suite="tat_AOD"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_Physics --run AthenaTrigRDOtoAOD_Physics --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - - <!-- Needs updated reference files. - <TEST name="AthenaTrigRDOtoAOD" type="script" suite="tat_AOD"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD --run AthenaTrigRDOtoAOD --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <!--TEST name="AthenaTrigRDOtoAOD_SLIM" type="script" suite="tat_AOD_SLIM"--> - <!-- Needs updated reference files. - <TEST name="AthenaTrigRDOtoAOD_SLIM" type="script" suite="tat_AOD"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_SLIM --run AthenaTrigRDOtoAOD_SLIM --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - - <!--TEST name="AthenaTrigRDO_TDT" type="script" suite="tat_TDT"--> - <!-- Needs updated reference files. - <TEST name="AthenaTrigRDO_TDT" type="script" suite="tat_EA"> - <options_atn>trigtest.pl --test AthenaTrigRDO_TDT --run AthenaTrigRDO_TDT --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <!-- Needs updated reference files. - <TEST name="AthenaTrigRDOtoAOD_MC" type="script" suite="tat_MCSlim"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_MC --run AthenaTrigRDOtoAOD_MC --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <!-- Needs updated reference files. - <TEST name= "AthenaTrigAODtoAOD_TrigNavSlimming" type="script" suite="tat_MCSlim"> - <options_atn>trigtest.pl --test AthenaTrigAODtoAOD_TrigNavSlimming --run AthenaTrigAODtoAOD_TrigNavSlimming --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <mailto> tbold@mail.cern.ch</mailto> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <!-- Needs updated reference files. - <TEST name="AthenaTrigAOD_TrigEDMCheck" type="script" suite="tat_MCSlim"> - <options_atn>trigtest.pl --test AthenaTrigAOD_TrigEDMCheck --run AthenaTrigAOD_TrigEDMCheck --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <TEST name="AthenaTrigAOD_TrigEDMAuxCheck" type="script" suite="tat_MCSlim"> - <options_atn>trigtest.pl --test AthenaTrigAOD_TrigEDMAuxCheck --run AthenaTrigAOD_TrigEDMAuxCheck --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!-- Depends on AthenaTrigRDOtoAOD_MC - <TEST name="AthenaTrigAOD_TrigHLTMon" type="script" suite="tat_MCSlim"> - <options_atn>trigtest.pl --test AthenaTrigAOD_TrigHLTMon --run AthenaTrigAOD_TrigHLTMon --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - --> - - <TEST name="AthenaTrigAOD_TrigHLTMon" type="script" suite="tat_MCSlim"> - <options_atn>trigtest.pl --test AthenaTrigAOD_TrigHLTMon --run AthenaTrigAOD_TrigHLTMon --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigAOD_TrigDecTool" type="script" suite="tat_MCSlim"> - <options_atn>trigtest.pl --test AthenaTrigAOD_TrigDecTool --run AthenaTrigAOD_TrigDecTool --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name= "TrigHLT_Run1BStoxAOD" type="script" suite="tat_Run1"> - <options_atn>trigtest.pl --test TrigHLT_Run1BStoxAOD --run TrigHLT_Run1BStoxAOD --conf TrigAnalysisTest.conf</options_atn> - <timelimit>45</timelimit> - <author>TrigAnalysis validation</author> - <mailto> oleg.kuprash@cern.ch </mailto> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name= "TrigHLT_Run1BStoxAOD_validation" type="script" suite="tat_Run1"> - <options_atn>trigtest.pl --test TrigHLT_Run1BStoxAOD_validation --run TrigHLT_Run1BStoxAOD_validation --conf TrigAnalysisTest.conf</options_atn> - <timelimit>45</timelimit> - <author>TrigAnalysis validation</author> - <mailto> oleg.kuprash@cern.ch </mailto> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name= "AthenaTrigRDOtoAOD_MC_pp_v7" type="script" suite="tat_MCv7"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_MC_pp_v7 --run AthenaTrigRDOtoAOD_MC_pp_v7 --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name= "AthenaTrigRDOtoESDAOD_MC_pp_v7" type="script" suite="tat_MCv7"> - <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD_MC_pp_v7 --run AthenaTrigRDOtoESDAOD_MC_pp_v7 --conf TrigAnalysisTest.conf</options_atn> - <timelimit>30</timelimit> - <author>TrigAnalysis validation</author> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - <!-- Summary table --> - <TEST name="atn_timeline" type="script" suite="triganalysis_index0"> - <doc>ATN timeline</doc> - <options_atn>atn_timeline.py --atn -p TrigAnalysisTest </options_atn> - <timelimit>10</timelimit> - <author>Frank Winklmeier</author> - <!--prerequisite>tat_RDOtoESDAOD</prerequisite> - <prerequisite>tat_BS_MC</prerequisite> - <prerequisite>tat_Phys_EA</prerequisite> - <prerequisite>tat_MC_EA</prerequisite> - <prerequisite>tat_tag</prerequisite> - <prerequisite>tat_AOD_Phys</prerequisite> - <prerequisite>tat_AOD</prerequisite> - <prerequisite>tat_AOD_SLIM</prerequisite> - <prerequisite>tat_TDT</prerequisite--> - <prerequisite>tat_RDOtoESDAOD</prerequisite> - <prerequisite>tat_BS</prerequisite> - <prerequisite>tat_Run1</prerequisite> - <prerequisite>tat_EA</prerequisite> - <prerequisite>tat_tag</prerequisite> - <prerequisite>tat_AOD</prerequisite> - <prerequisite>tat_MCSlim</prerequisite> - <prerequisite>tat_MCv7</prerequisite> - <!--prerequisite>tat_PhysVal</prerequisite--> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="atn_xml_summary_table" type="script" suite="triganalysis_index"> - <options_atn>atn_summary.pl </options_atn> - <timelimit>2</timelimit> - <author>TrigAnalysis validation</author> - <prerequisite>triganalysis_index0</prerequisite> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!--TEST name="sendmail2shifter" type="script" suite="triganalysis_index"> - <options_atn>echo $ATN_PACKAGE | mail -s "TrigAnalysisTest ATN done" "czodrows@cern.ch" </options_atn> - <timelimit>2</timelimit> - <author>TrigAnalysis validation</author> - <prerequisite>triganalysis_index0</prerequisite> - <project_exclude>AthAnalysis</project_exclude> - <expectations> - <returnValue>0</returnValue> - </expectations - </TEST--> - - </atn> - - <!-- No KV tests configured here --> - <kv/> - - - <!-- RTT tests configured here --> - <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt"> - - <!--rttContactPerson>Simon George (S.George@rhul.ac.uk)</rttContactPerson> - <rttContactPerson>David Strom (David.Strom@cern)</rttContactPerson> - <rttContactPerson>Patrick Czodrowski (czodrows@cern)</rttContactPerson--> - <rttContactPerson>Oleg Kuprash (oleg.kuprash@cern.ch)</rttContactPerson> - - <jobList> - <classification> - <displayClass>OfflineValidation</displayClass> - <displayProcess>Reco</displayProcess> - <displayComponent>Trig-Common</displayComponent> - </classification> - - - - <athena userJobId="RDOtoAOD_Physics" doMonitoring="True"> - <doc> - Menu: Physics_pp_v7 Sample: top - produces AOD 100 events - </doc> - <displayName>RDOtoAOD_Physics</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="RDOtoAOD_MC" doMonitoring="True"> - <doc> - Menu: MC_pp_v7 Sample: top - produces AOD 100 events - </doc> - <displayName>RDOtoAOD_MC</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="RDOtoESDAOD_MC" doMonitoring="True"> - <doc> - Menu: MC_pp_v7 Sample: top - produces AOD and ESD 100 events - </doc> - <displayName>RDOtoESDAOD_MC</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoESDAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="RDOtoESDAOD_Physics" doMonitoring="True"> - <doc> - Menu: Physics_pp_v7 Sample: top - produces AOD and ESD 100 events - </doc> - <displayName>RDOtoESDAOD_Physics</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoESDAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <chain> - <chainName>AthenaTrigAOD_TrigEDMandTDTCheck_MC_pp_v7_chain</chainName> - <abortOnError /> - <sequential> - - <chainElement> - <athena userJobId="RDOtoAOD_MC_pp_v7" doMonitoring="True"> - <doc> Menu: MC_pp_v7 Sample: top - produces AOD 100 events</doc> - <displayName>RDOtoAOD_MC_pp_v7</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - - <athenaCommonFlags /> - <alwaysRunPostProc /> - </athena> - <chainfileout>AOD.pool.root</chainfileout> - - </chainElement> - - <parallel> - <chainElement> - <athena userJobId="AOD_TrigEDMCheck_MC_pp_v7"> - <doc> AthenaTrigAOD_TrigEDMCheck on Menu: MC_pp_v7 Sample: top AOD from RDO</doc> - <displayName>AthenaTrigAOD_TrigEDMCheck_MC_pp_v7</displayName> - <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags> - <options>testAthenaTrigAOD_TrigEDMCheck.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <chaindataset_info> - <dc2/> - <chaindatasetName>AOD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>CheckFileRunner0</testidentifier> - </testToRemove> - <testToRemove> - <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName> - <testidentifier>chainDump</testidentifier> - </testToRemove> - <alwaysRunPostProc /> - </athena> - </chainElement> - - <chainElement> - <athena userJobId="AOD_TrigDecTool_MC_pp_v7"> - <doc> AthenaTrigAOD_TrigDecTool on Menu: MC_pp_v7 Sample: top AOD from RDO</doc> - <displayName>AthenaTrigAOD_TrigDecTool_MC_pp_v7</displayName> - <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags> - <options>testAthenaTrigAOD_TrigDecTool.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <chaindataset_info> - <dc2/> - <chaindatasetName>AOD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>CheckFileRunner0</testidentifier> - </testToRemove> - <testToRemove> - <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName> - <testidentifier>chainDump</testidentifier> - </testToRemove> - <alwaysRunPostProc /> - </athena> - </chainElement> - </parallel> - - </sequential> - </chain> - - <chain> - <chainName>AthenaTrigESDAOD_Perf_and_HLTMons_MC_pp_v7_chain</chainName> - <abortOnError /> - <sequential> - - <chainElement> - <athena userJobId="RDOtoESD_MC_pp_v7" doMonitoring="True"> - <doc> Menu: MC_pp_v7 Sample: top - produces AOD 100 events</doc> - <displayName>RDOtoAOD_MC_pp_v7</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <athenaCommonFlags /> - <alwaysRunPostProc /> - </athena> - <chainfileout>AOD.pool.root</chainfileout> - </chainElement> - - <parallel> - - <sequential> - <chainElement> - <athena userJobId="ESDtoAOD_MC_pp_v7" doMonitoring="True"> - <doc> Menu: MC_pp_v7 Sample: top - produces AOD 100 events</doc> - <displayName>RDOtoAOD_MC_pp_v7</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <athenaCommonFlags /> - <alwaysRunPostProc /> - </athena> - <chainfileout>AOD.pool.root</chainfileout> - </chainElement> - - - <chainElement> - <athena userJobId="HLTMon"> - <doc> AthenaTrigAOD_TrigEDMCheck on Menu: MC_pp_v7 Sample: top AOD from RDO</doc> - <displayName>AthenaTrigAOD_TrigEDMCheck_MC_pp_v7</displayName> - <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags> - <options>testAthenaTrigAOD_TrigEDMCheck.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <chaindataset_info> - <dc2/> - <chaindatasetName>AOD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>CheckFileRunner0</testidentifier> - </testToRemove> - <testToRemove> - <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName> - <testidentifier>chainDump</testidentifier> - </testToRemove> - <alwaysRunPostProc /> - </athena> - </chainElement> - - - <chainElement> - <athena userJobId="PhysValMon_ESD"> - <doc> AthenaTrigAOD_TrigDecTool on Menu: MC_pp_v7 Sample: top AOD from RDO</doc> - <displayName>AthenaTrigAOD_TrigDecTool_MC_pp_v7</displayName> - <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags> - <options>testAthenaTrigAOD_TrigDecTool.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <chaindataset_info> - <dc2/> - <chaindatasetName>AOD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>CheckFileRunner0</testidentifier> - </testToRemove> - <testToRemove> - <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName> - <testidentifier>chainDump</testidentifier> - </testToRemove> - <alwaysRunPostProc /> - </athena> - </chainElement> - - </sequential> - - <chainElement> - <athena userJobId="PhysValMon_xAOD"> - <doc> AthenaTrigAOD_TrigDecTool on Menu: MC_pp_v7 Sample: top AOD from RDO</doc> - <displayName>AthenaTrigAOD_TrigDecTool_MC_pp_v7</displayName> - <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags> - <options>testAthenaTrigAOD_TrigDecTool.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <chaindataset_info> - <dc2/> - <chaindatasetName>AOD.pool.root</chaindatasetName> - <dataset_info> - <dc2 /> - <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName> - </dataset_info> - </chaindataset_info> - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>CheckFileRunner0</testidentifier> - </testToRemove> - <testToRemove> - <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName> - <testidentifier>chainDump</testidentifier> - </testToRemove> - <alwaysRunPostProc /> - </athena> - </chainElement> - </parallel> - - </sequential> - </chain> - - - - - <!--athena userJobId="RDOtoAOD_MC_pp_v7_loose_mc_prescale" doMonitoring="True"> - <doc> - Menu: MC_pp_v7_loose_mc_prescale Sample: top - produces AOD 100 events - </doc> - <displayName>RDOtoAOD_MC_pp_v7_loose_mc_prescale</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7_loose_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="RDOtoAOD_MC_pp_v7_tight_mc_prescale" doMonitoring="True"> - <doc> - Menu: MC_pp_v7_tight_mc_prescale Sample: top - produces AOD 100 events - </doc> - <displayName>RDOtoAOD_MC_pp_v7_tight_mc_prescale</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - - <athena userJobId="RDOtoAOD_MC_pp_v7_1000" doMonitoring="True"> - <doc> - Menu: RDOtoAOD_MC_pp_v7 Sample: top - produces AOD 1000 events - </doc> - <displayName>RDOtoAOD_MC_pp_v7_1000</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - - <athena userJobId="RDOtoAOD_MC_pp_v7_bphysics_1000" doMonitoring="True"> - <doc> - Menu: RDOtoAOD_MC_pp_v7 Sample: bphysics - produces AOD 1000 events - </doc> - <displayName>RDOtoAOD_MC_pp_v7_bphysics_1000</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_RTT_1000_Bphysics_toAOD_r6889/Bphysics_RDO_r6889_mixed.pool.root'] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - - <athena userJobId="RDOtoAOD_MC_pp_v7_BphysExo_1000" doMonitoring="True"> - <doc> - Menu: RDOtoAOD_MC_pp_v7 Sample: bphysics and muons - produces AOD 1000 events on mc15_13TeV.180593.Pythia8_AUMSTW2008LO_Wtaunu_3mu_noPhotos see ATR-13193 - </doc> - <displayName>RDOtoAOD_MC_pp_v7_BphysExo_1000</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7';sliceName='mubphysics';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_13TeV.180593.Pythia8_AUMSTW2008LO_Wtaunu_3mu_noPhotos.recon.RDO.e3802_s2608_s2183_r6790/RDO.05594910._000008.pool.root.1'] - </commandLineFlags> - <options>testAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="RDOtoAODSLIM_MC_pp_v7_tight_mc_prescale" doMonitoring="True"> - <doc> - Menu: MC_pp_v7_tight_mc_prescale Sample: top - produces AODSLIM 100 events - </doc> - <displayName>RDOtoAODSLIM_MC_pp_v7_tight_mc_prescale</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoAODSLIM.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="RDOtoESDAOD_MC_pp_v7_loose_mc_prescale" doMonitoring="True"> - <doc> - Menu: MC_pp_v7_loose_mc_prescale Sample: top - produces AOD and ESD 100 events - </doc> - <displayName>RDOtoESDAOD_MC_pp_v7_loose_mc_prescale</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7_loose_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoESDAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="RDOtoESDAOD_MC_pp_v7_tight_mc_prescale" doMonitoring="True"> - <doc> - Menu: MC_pp_v7_tight_mc_prescale Sample: top - produces AOD and ESD 100 events - </doc> - <displayName>RDOtoESDAOD_MC_pp_v7_tight_mc_prescale</displayName> - <commandLineFlags> - RunningRTT=TRUE;menu='MC_pp_v7_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testAthenaTrigRDOtoESDAOD.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="RDO_ElectronSlice_xAOD" doMonitoring="True"> - <doc> - Menu:MC, Sample:top - produces xAOD 1000 events - </doc> - <displayName>RDO_ElectronSlice_xAOD</displayName> - <commandLineFlags> - RunningRTT=TRUE;jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/proj-sit/trigindet/mc12_14TeV.147806.PowhegPythia8_AU2CT10_Zee.recon.RDO.e1564_s1682_s1691_r4710_tid01288183_00';fileRange=[1,10] - </commandLineFlags> - <options>testAthenaTrigRDO_ElectronSlice_MC.py</options> - <package>Trigger/TrigValidation/TrigAnalysisTest</package> - <group>TrigAnalysisTestIOTests</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena--> - - </jobList> - - - <!-- Define job groups here --> - <jobGroups> - <jobGroup name="AthenaTrigAnalysisTestIOTests" parent="Athena"> - <keepFilePattern info="Log files" displayColor="red">*.txt</keepFilePattern> - <keepFilePattern info="Test log file" displayColor="blue">*test*.log</keepFilePattern> - <keepFilePattern info="Action log file" displayColor="blue">*action*.log</keepFilePattern> - <keepFilePattern info="Monitoring histograms">*-monitoring.root</keepFilePattern> - <keepFilePattern info="Timing histograms">timing-histograms.root</keepFilePattern> - <keepFilePattern info="checkfilelog">*checkFile*</keepFilePattern> - <keepFilePattern info="PerfMon ntuple">*.pmon.gz</keepFilePattern> - <keepFilePattern info="PerfMon Hephaestus file">*.heph.log</keepFilePattern> - <keepFilePattern info="PerfMon xml">*.xml</keepFilePattern> - <keepFilePattern info="POOL files">*.pool.root</keepFilePattern> - <keepFilePattern info="GIF files">*.gif</keepFilePattern> - <keepFilePattern info="PDF files">*.pdf</keepFilePattern> - <keepFilePattern info="ROOT files">*.root</keepFilePattern> - <keepFilePattern info="ROOT macros">*.C</keepFilePattern> - <keepFilePattern info="ROOT macros">*.cxx</keepFilePattern> - <keepFilePattern info="Bytestream files">*.data</keepFilePattern> - <keepFilePattern info="Bytestream files">*.php</keepFilePattern> - <keepFilePattern info="igprof files"> igprof.*.gz</keepFilePattern> - <keepFilePattern info="igprof files"> cgi-bin/data/*.sql3</keepFilePattern> - <keepFilePattern info="igprof files"> cgi-bin/igprof-navigator</keepFilePattern> - <keepFilePattern info="TrigCostMon files"> costMonitoring*/* </keepFilePattern> - <keepFilePattern maxsize="100">*/TrigCostRoot_Results.root</keepFilePattern> - <keepFilePattern maxsize="100">trig_cost.root</keepFilePattern> - <keepFilePattern maxsize="100">costMonitoring*/*</keepFilePattern> - <keepFilePattern maxsize="100">*log</keepFilePattern> - <keepFilePattern maxsize="100">*log_1</keepFilePattern> - - <!--binRefFile>*-monitoring.root</binRefFile--> - <auxFilePattern>checklogTriggerTest.conf</auxFilePattern> - <test position="1"> - <modulename>chainDump</modulename> - <testname>chainDump</testname> - <testidentifier>chainDump</testidentifier> - <arg> - <argname>rootFile</argname> - <argvalue>expert-monitoring.root</argvalue> - </arg> - </test> - <test position="2"> - <modulename>LogTail_TrigAnalysisTest</modulename> - <testname>LogTail_TrigAnalysisTest</testname> - <arg> - <argname>command</argname> - <argvalue>tail -10000 %JOBLOG >%JOBLOG.tail.txt </argvalue> - </arg> - </test> - <test position="3"> - <modulename>CheckLog_TrigAnalysisTest</modulename> - <testname>CheckLog_TrigAnalysisTest</testname> - <testidentifier>CheckLog_TrigAnalysisTest</testidentifier> - <arg> - <argname>command</argname> - <argvalue>check_log.pl --conf checklogTriggerTest.conf %JOBLOG</argvalue> - </arg> - </test> - <!--test position="3"> - <modulename>TruncateLog_TrigAnalysisTest</modulename> - <testname>TruncateLog_TrigAnalysisTest</testname> - <arg> - <argname>command</argname> - <argvalue>mv %JOBLOG tmp.delete; head -n150000 tmp.delete >%JOBLOG; rm tmp.delete</argvalue> - </arg> - </test--> - <test position="4"> - <modulename>RttLibraryTools</modulename> - <testname>PerfMonRunner</testname> - <testidentifier>PerfMonRunner</testidentifier> - <arg> - <argname>fileName</argname> - <argvalue>ntuple.pmon.gz</argvalue> - </arg> - <arg> - <argname>options</argname> - <argvalue>-f 0.90</argvalue> - </arg> - </test> - <!--test position="5"> - <modulename>RttLibraryTools</modulename> - <testname>RTTPerfMonPlotter</testname> - <arg> - <argname>outputFile</argname> - <argvalue>rttPerfmonPlotter.xml</argvalue> - </arg> - <keepFilePattern info="">RttLibraryTools_RTTPerfmonPlotter.postprocessing.log</keepFilePattern> - </test--> - - <!-- rm noalarm label once this thing is fixed ... --> - <test position="5"> - <modulename>checkFileTrigSize_RTT</modulename> - <testname>checkFileTrigSize_RTT</testname> - <testidentifier>checkFileTrigSize_RTT</testidentifier> - <arg> - <argname>checkFile</argname> - <argvalue>AOD.pool.root.checkFile</argvalue> - </arg> - <noalarm /> - </test> - <test position="6"> - <modulename>CheckForL1AllZero_TrigAnalysisTest</modulename> - <testname>CheckForL1AllZero_TrigAnalysisTest</testname> - <arg> - <argname>command</argname> - <argvalue>if [[ `sed -e 's/.*\s\(.*\)/\1/' -ne '/^[^0$]/p' L1AV.txt | wc -l` == 0 ]]; then echo "L1 counts ERROR : all entries are ZERO, please consult L1AV.txt" ; fi </argvalue> - </arg> - </test> - <test position="7"> - <modulename>CheckForHLTChainAllZero_TrigAnalysisTest</modulename> - <testname>CheckForHLTChainAllZero_TrigAnalysisTest</testname> - <arg> - <argname>command</argname> - <argvalue>if [[ `sed -e 's/.*\s\(.*\)/\1/' -ne '/^[^0$]/p' HLTChain.txt | wc -l` == 0 ]]; then echo "HLT chain counts ERROR : all entries are ZERO, please consult HLTChain.txt" ; fi </argvalue> - </arg> - </test> - <test position="8"> - <modulename>CheckForHLTTEAllZero_TrigAnalysisTest</modulename> - <testname>CheckForHLTTEAllZero_TrigAnalysisTest</testname> - <arg> - <argname>command</argname> - <argvalue>if [[ `sed -e 's/.*\s\(.*\)/\1/' -ne '/^[^0$]/p' HLTTE.txt | wc -l` == 0 ]]; then echo "HLT TE counts ERROR : all entries are ZERO, please consult HLTTE.txt" ; fi </argvalue> - </arg> - </test> - <test position="9"> - <modulename>CheckForExpertMonHistZero_TrigAnalysisTest</modulename> - <testname>CheckForExpertMonHistZero_TrigAnalysisTest</testname> - <arg> - <argname>command</argname> - <argvalue>monHistoChecker.py --path / | awk '{ if ($2==0){print "expert-monitoring.root check ERROR : monHistoChecker.py: integral of "$1" equals zero"} }' </argvalue> - </arg> - </test> - - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>PerfMonDozer0</testidentifier> - </testToRemove> - - </jobGroup> - </jobGroups> - - </rtt> - -</unifiedTestConfiguration> diff --git a/Trigger/TrigValidation/TrigP1Test/test/TrigP1Test_TestConfiguration.xml b/Trigger/TrigValidation/TrigP1Test/test/TrigP1Test_TestConfiguration.xml deleted file mode 100644 index 89a63ec56df..00000000000 --- a/Trigger/TrigValidation/TrigP1Test/test/TrigP1Test_TestConfiguration.xml +++ /dev/null @@ -1,752 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> -<!-- - *************************************************************************** - * - * TrigP1Test_TestConfiguration.xml.autoconf - * - * This file is used as input to test-xml-autoconf.py during the build. - * It will create TrigP1Test_TestConfiguraton.xml on-the-fly, which is - * used by ATN and RTT tests. - * - * For detailed syntax see: TrigValTools/bin/test-xml-autoconf.py - * - *************************************************************************** - --> -<!-- NB validate this file here before commiting to svn: - /afs/cern.ch/user/r/rtt/public/xmlvalidate.py TrigP1Test_TestConfiguration.xml - --> - -<unifiedTestConfiguration> - - <!-- ATN tests --> - <!-- - ************************************************************************** - * - * This file defines these test suites: - * TP1core - * TP1cos[1-3] (no need for serialiasation) - * TP1mc TP1phys[1-4] (only 1&2 need to be serial) - * TP1hi - * TP1var[1-3] - * TP1menu - * TP1menuRL1 - * TP1pures - * TP1L2EFmerg - * - * Note that for the summary html table to run we need to have at least one test for each suite. - * This has been arranged in all projects, but be carefully when editing - * - * Marked the tests that are effectively off due to the nighly exclude tag set to .* with: <!- - OFF - -> - * these might go/be deleted during the next cleanup I assume - leave that decision up to Carlos - * - *************************************************************************** - --> - - <atn> - - - <TEST name="HelloWorldHLT" type="script" suite="TP1core"> - <options_atn>trigtest.pl --cleardir --test HelloWorldHLT --rundir HelloWorldHLT --conf TrigP1Test.conf</options_atn> - <timelimit>5</timelimit> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HelloWorldHLT_run_stop_run" type="script" suite="TP1core"> - <options_atn>trigtest.pl --cleardir --test HelloWorldHLT_run_stop_run --rundir HelloWorldHLT_run_stop_run --conf TrigP1Test.conf</options_atn> - <timelimit>10</timelimit> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaP1RDOtoBS" type="script" suite="TP1core"> - <options_atn>trigtest.pl --cleardir --test AthenaP1RDOtoBS --rundir AthenaP1RDOtoBS --conf TrigP1Test.conf</options_atn> - <timelimit>20</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_HIV4" type="script" suite="TP1hi"> - <options_atn>trigtest.pl --cleardir --test HLT_HIV4 --rundir HLT_HIV4 --conf TrigP1Test.conf</options_atn> - <timelimit>40</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - <TEST name="HLT_HIV3" type="script" suite="TP1hi"> - <options_atn>trigtest.pl --cleardir --test HLT_HIV3 --rundir HLT_HIV3 --conf TrigP1Test.conf</options_atn> - <timelimit>35</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!-- End of physics Heavy ION menu chain --> - - - <TEST name="HLT_physicsV7_COS" type="script" suite="TP1cos1"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_COS --rundir HLT_physicsV7_COS --conf TrigP1Test.conf</options_atn> - <timelimit>20</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - <TEST name="HLT_physicsV7_COS_2016MUONS" type="script" suite="TP1cos2"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_COS_2016MUONS --rundir HLT_physicsV7_COS_2016MUONS --conf TrigP1Test.conf</options_atn> - <timelimit>20</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_COS_2016IDCOSMICS" type="script" suite="TP1cos3"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_COS_2016IDCOSMICS --rundir HLT_physicsV7_COS_2016IDCOSMICS --conf TrigP1Test.conf</options_atn> - <timelimit>30</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - - <!-- End of physics COSMICS menu chain --> - - - - - - <TEST name="HLT_mcV7" type="script" suite="TP1mc"> - <options_atn>trigtest.pl --cleardir --test HLT_mcV7 --rundir HLT_mcV7 --conf TrigP1Test.conf</options_atn> - <timelimit>50</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - - <!-- end of MC chain of tests --> - - - <TEST name="HLT_physicsV7" type="script" suite="TP1phys1"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7 --rundir HLT_physicsV7 --conf TrigP1Test.conf</options_atn> - <timelimit>30</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="Reco_tf_physicsV7_savedBS" type="script" suite="TP1phys1"> - <options_atn>trigtest.pl --cleardir --test Reco_tf_physicsV7_savedBS --rundir Reco_tf_physicsV7_savedBS --conf TrigP1Test.conf</options_atn> - <timelimit>30</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="RAWtoESD_physicsV7" type="script" suite="TP1phys1"> - <options_atn>trigtest.pl --cleardir --test RAWtoESD_physicsV7 --rundir RAWtoESD_physicsV7 --conf TrigP1Test.conf</options_atn> - <timelimit>30</timelimit> - <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="TrigEDMCheck_physicsV7" type="script" suite="TP1phys1"> - <options_atn>trigtest.pl --cleardir --test TrigEDMCheck_physicsV7 --rundir TrigEDMCheck_physicsV7 --conf TrigP1Test.conf</options_atn> - <timelimit>10</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="TrigDecTool_physicsV7" type="script" suite="TP1phys1"> - <options_atn>trigtest.pl --cleardir --test TrigDecTool_physicsV7 --rundir TrigDecTool_physicsV7 --conf TrigP1Test.conf</options_atn> - <timelimit>10</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_L1Topo_data" type="script" suite="TP1phys2"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_L1Topo_data --rundir HLT_physicsV7_L1Topo_data --conf TrigP1Test.conf</options_atn> - <timelimit>20</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_FTK" type="script" suite="TP1phys2"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_FTK --rundir HLT_physicsV7_FTK --conf TrigP1Test.conf</options_atn> - <timelimit>20</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - <TEST name="HLT_physicsV7_ALFAMon" type="script" suite="TP1phys2"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_ALFAMon --rundir HLT_physicsV7_ALFAMon --conf TrigP1Test.conf</options_atn> - <timelimit>20</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_DataScouting" type="script" suite="TP1phys2"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_DataScouting --rundir HLT_physicsV7_DataScouting --conf TrigP1Test.conf</options_atn> - <timelimit>20</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_rerunLVL1" type="script" suite="TP1phys3"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_rerunLVL1 --rundir HLT_physicsV7_rerunLVL1 --conf TrigP1Test.conf</options_atn> - <timelimit>45</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaP1BS_standalone" type="script" suite="TP1phys4"> - <options_atn>trigtest.pl --cleardir --test AthenaP1BS_standalone --rundir AthenaP1BS_standalone --conf TrigP1Test.conf</options_atn> - <timelimit>45</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_magField_on_off_on" type="script" suite="TP1phys4"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_magField_on_off_on --rundir HLT_physicsV7_magField_on_off_on --conf TrigP1Test.conf</options_atn> - <timelimit>35</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!-- End of physics menu chain --> - - - - - - - <!-- chain of test with various data, menu and detector conditions --> - - <TEST name="HLT_physicsV7_run_stop_run" type="script" suite="TP1var3"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_run_stop_run --rundir HLT_physicsV7_run_stop_run --conf TrigP1Test.conf</options_atn> - <timelimit>40</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_beamspot" type="script" suite="TP1var3"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_beamspot --rundir HLT_physicsV7_beamspot --conf TrigP1Test.conf</options_atn> - <timelimit>25</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - - - <!-- End of various data, menu and detector conditions chain --> - - - - - <!-- chain of test for automatic menu uploading to trigger DB --> - - <TEST name="HLT_physicsV7_menu" type="script" suite="TP1menu"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_menu --rundir HLT_physicsV7_menu --conf TrigP1Test.conf</options_atn> - <timelimit>40</timelimit> - <platform>opt</platform> - <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - <TEST name="UploadMenuKeys" type="script" suite="TP1menu"> - <options_atn>trigtest.pl --cleardir --test UploadMenuKeys --rundir UploadMenuKeys --conf TrigP1Test.conf</options_atn> - <timelimit>120</timelimit> - <platform>opt</platform> - <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude> - <!--<mailto>joerg.stelzer@cern.ch</mailto>--> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_menu_rerundb" type="script" suite="TP1menu"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_menu_rerundb --rundir HLT_physicsV7_menu_rerundb --conf TrigP1Test.conf</options_atn> - <timelimit>40</timelimit> - <platform>opt</platform> - <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - <TEST name="HLT_physicsV7_rerun" type="script" suite="TP1menu"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_rerun --rundir HLT_physicsV7_rerun --conf TrigP1Test.conf</options_atn> - <timelimit>40</timelimit> - <platform>opt</platform> - <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!-- CheckKeysV7 needs HLT_physicsV7_rerun --> - <TEST name="CheckKeysV7" type="script" suite="TP1menu"> - <options_atn>trigtest.pl --cleardir --test CheckKeysV7 --rundir CheckKeysV7 --conf TrigP1Test.conf</options_atn> - <timelimit>180</timelimit> - <mailto>joerg.stelzer@cern.ch</mailto> - <platform>opt</platform> - <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_rerunLVL1_menu" type="script" suite="TP1menuRL1"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_rerunLVL1_menu --rundir HLT_physicsV7_rerunLVL1_menu --conf TrigP1Test.conf</options_atn> - <timelimit>59</timelimit> - <platform>opt</platform> - <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - <TEST name="UploadMenuKeys_rerunLVL1" type="script" suite="TP1menuRL1"> - <options_atn>trigtest.pl --cleardir --test UploadMenuKeys_rerunLVL1 --rundir UploadMenuKeys_rerunLVL1 --conf TrigP1Test.conf</options_atn> - <timelimit>120</timelimit> - <!--<mailto>joerg.stelzer@cern.ch</mailto>--> - <platform>opt</platform> - <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude> - <prerequisite>TP1menu</prerequisite> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="HLT_physicsV7_rerunLVL1_menu_rerundb" type="script" suite="TP1menuRL1"> - <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_rerunLVL1_menu_rerundb --rundir HLT_physicsV7_rerunLVL1_menu_rerundb --conf TrigP1Test.conf</options_atn> - <timelimit>59</timelimit> - <platform>opt</platform> - <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude> - <prerequisite>TP1menu</prerequisite> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - - - - - <!-- End of menu uploading test chain --> - - - - - - - <!-- A "short" chain of tests on data with the T0 reco release --> - - - <TEST name="Trigreco_physicsV7_currentT0" type="script" suite="TP1var1"> - <options_atn>trigtest.pl --cleardir --test Trigreco_physicsV7_currentT0 --rundir Trigreco_physicsV7_currentT0 --conf TrigP1Test.conf</options_atn> - <timelimit>45</timelimit> - <nightly_exclude> MIG LCG EXP CMAKE 22 21 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="TrigEDMCheck_physicsV7_currentT0_ESD" type="script" suite="TP1var1"> - <options_atn>trigtest.pl --cleardir --test TrigEDMCheck_physicsV7_currentT0_ESD --rundir TrigEDMCheck_physicsV7_currentT0_ESD --conf TrigP1Test.conf</options_atn> - <timelimit>10</timelimit> - <nightly_exclude> MIG LCG EXP CMAKE 22 21 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="TrigEDMCheck_physicsV7_currentT0_AOD" type="script" suite="TP1var1"> - <options_atn>trigtest.pl --cleardir --test TrigEDMCheck_physicsV7_currentT0_AOD --rundir TrigEDMCheck_physicsV7_currentT0_AOD --conf TrigP1Test.conf</options_atn> - <timelimit>10</timelimit> - <nightly_exclude> MIG LCG EXP CMAKE 22 21 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="Trigreco_dbgstream_T0" type="script" suite="TP1var2"> - <options_atn>trigtest.pl --cleardir --test Trigreco_dbgstream_T0 --rundir Trigreco_dbgstream_T0 --conf TrigP1Test.conf</options_atn> - <timelimit>30</timelimit> - <nightly_exclude> MIG LCG EXP CMAKE 22 21 20.99 </nightly_exclude> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - - - - <!-- End of ofline reconstruction chain --> - - - - - <!-- A short chain of tests onSteering and Data access --> - - - <TEST name="pureSteering_ecodes" type="script" suite="TP1pures"> - <options_atn>trigtest.pl --cleardir --test pureSteering_ecodes --rundir pureSteering_ecodes --conf TrigP1Test.conf</options_atn> - <timelimit>10</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="pureSteering_prescaling" type="script" suite="TP1pures"> - <options_atn>trigtest.pl --cleardir --test pureSteering_prescaling --rundir pureSteering_prescaling --conf TrigP1Test.conf</options_atn> - <timelimit>10</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="pureSteering" type="script" suite="TP1pures"> - <options_atn>trigtest.pl --cleardir --test pureSteering --rundir pureSteering --conf TrigP1Test.conf</options_atn> - <timelimit>10</timelimit> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigBS_L2EFMerging" type="script" suite="TP1L2EFmerg"> - <options_atn>trigtest.pl --test AthenaTrigBS_L2EFMerging --run AthenaTrigBS_L2EFMerging --conf TrigP1Test.conf</options_atn> - <timelimit>60</timelimit> - <author>TAPM validation</author> - <mailto> francesca.pastore@cern.ch </mailto> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - <!-- End of steering chain --> - - - - <!-- End of data chain --> - - <TEST name="atn_timeline" type="script" suite="TP1"> - <doc>ATN timeline</doc> - <options_atn>atn_timeline.py --atn -p TrigP1Test </options_atn> - <timelimit>2</timelimit> - <author>Frank Winklmeier</author> - <prerequisite>TP1mc</prerequisite> - <prerequisite>TP1core</prerequisite> - <prerequisite>TP1cos1</prerequisite> - <prerequisite>TP1cos2</prerequisite> - <prerequisite>TP1cos3</prerequisite> - <prerequisite>TP1phys1</prerequisite> - <prerequisite>TP1phys2</prerequisite> - <prerequisite>TP1phys3</prerequisite> - <prerequisite>TP1phys4</prerequisite> - <prerequisite>TP1var1</prerequisite> - <prerequisite>TP1var2</prerequisite> - <prerequisite>TP1var3</prerequisite> - <prerequisite>TP1menu</prerequisite> - <prerequisite>TP1menuRL1</prerequisite> - <prerequisite>TP1hi</prerequisite> - <prerequisite>TP1pures</prerequisite> - <prerequisite>TP1L2EFmerg</prerequisite> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="atn_xml_summary_table" type="script" suite="TP1"> - <doc>Summary table</doc> - <options_atn>atn_summary.pl</options_atn> - <timelimit>2</timelimit> - <prerequisite>TP1mc</prerequisite> - <prerequisite>TP1core</prerequisite> - <prerequisite>TP1cos1</prerequisite> - <prerequisite>TP1cos2</prerequisite> - <prerequisite>TP1cos3</prerequisite> - <prerequisite>TP1phys1</prerequisite> - <prerequisite>TP1phys2</prerequisite> - <prerequisite>TP1phys3</prerequisite> - <prerequisite>TP1phys4</prerequisite> - <prerequisite>TP1var1</prerequisite> - <prerequisite>TP1var2</prerequisite> - <prerequisite>TP1var3</prerequisite> - <prerequisite>TP1menu</prerequisite> - <prerequisite>TP1menuRL1</prerequisite> - <prerequisite>TP1hi</prerequisite> - <prerequisite>TP1pures</prerequisite> - <prerequisite>TP1L2EFmerg</prerequisite> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="updateATNrefs" type="script" suite="TP1Update"> - <doc>update ATN references</doc> - <options_atn>whoami</options_atn> - <timelimit>5</timelimit> - <prerequisite>TP1</prerequisite> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST> - - </atn> - - <kv/> - - - <!-- ====================================================================== --> - <!-- RTT tests --> - <!-- ====================================================================== --> - - <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt"> - - <rttContactPerson>David Strom</rttContactPerson> - <mailto>David.Strom@cern.ch</mailto> - <refRelease>15.5.X.Y</refRelease> - - <jobList> - - <classification> - <displayClass>OnlineValidation</displayClass> - <displayProcess>Core</displayProcess> - <displayComponent>Trig-Common</displayComponent> - </classification> - - - - <jobTransform userJobId="athenaHLT_on_data_leakCheck" > - <doc> - athenaHLT on DATA all slices leakCheck - </doc> - <jobTransformJobName>athenaHLT_on_data_leakCheck</jobTransformJobName> - <jobTransformCmd> - export LD_PRELOAD=/cvmfs/sft.cern.ch/lcg/releases/libunwind/5c2cade-76996/$CMTCONFIG/lib/libunwind.so; - athenaHLT.py --stdcmalloc --leak-check-execute -o HLT_physicsV7 -n 25 -f '/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data16_13TeV.00309640.physics_EnhancedBias.merge.RAW/data16_13TeV.00309640.physics_EnhancedBias.merge.RAW._lb0628._SFO-1._0001.1' -c "setMenu='Physics_pp_v7_tight_physics_prescale';setLVL1XML='TriggerMenuXML/LVL1config_Physics_pp_v7.xml';setL1TopoXML=setLVL1XML.replace('/LVL1','/L1Topo');HLTOutputLevel=WARNING;doValidation=True" TrigP1Test/runHLT_standaloneRTT_leakCheck.py - </jobTransformCmd> - <group>AtlasHLTChainTest</group> - <queue>long</queue> - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>CheckFileRunner0</testidentifier> - </testToRemove> - <testToRemove> - <jobGroupName>Athena</jobGroupName> - <testidentifier>PerfMonRunner</testidentifier> - </testToRemove> - </jobTransform> - - <jobTransform userJobId="athenaHLT_LatestRun_MCV7"> - <doc> - athenaHLT on latest available run - </doc> - <jobTransformJobName>athenaHLT_LatestRun_MCV7</jobTransformJobName> - <jobTransformCmd> - trigp1test_athenaHLT.py --nfiles=1 --dir='/eos/atlas/atlastier0/rucio/data17_13TeV/physics_Main/' --modifiers="testMCV7=True;fpeAuditor=True;from PerfMonComps.PerfMonFlags import jobproperties as pmon_properties ; pmon_properties.PerfMonFlags.doSemiDetailedMonitoring=True" - </jobTransformCmd> - <group>AtlasHLTChainTest</group> - <queue>long</queue> - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>CheckFileRunner0</testidentifier> - </testToRemove> - - </jobTransform> - - <jobTransform userJobId="athenaHLT_CostMonitoring_PhysicsV7"> - <doc> - athenaHLT on recent EnhancedBias with cost monitoring enabled - </doc> - <jobTransformJobName>athenaHLT_CostMonitoring_PhysicsV7</jobTransformJobName> - <jobTransformCmd> - athenaHLT.py -f '/eos/atlas/atlascerngroupdisk/data-art/grid-input/TrigP1Test/data17_13TeV.00339070.physics_EnhancedBias.merge.RAW._lb0101._SFO-1._0001.1' -c "setMenu='Physics_pp_v7_unprescaled_only_physics_prescale';setLVL1XML='TriggerMenuXML/LVL1config_Physics_pp_v7.xml';setL1TopoXML=setLVL1XML.replace('/LVL1','/L1Topo');rerunLVL1=True;enableCostD3PD=True;enableCostForCAF=True" TriggerRelease/runHLT_standalone.py - </jobTransformCmd> - <group>AtlasHLTChainTest</group> - <queue>long</queue> - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>CheckFileRunner0</testidentifier> - </testToRemove> - <testToRemove> - <jobGroupName>Athena</jobGroupName> - <testidentifier>PerfMonRunner</testidentifier> - </testToRemove> - - </jobTransform> - - </jobList> - - <jobGroups> - - <!-- Job group for AtlasHLTChainTest tests --> - <jobGroup name="AthenaAtlasHLTChainTest" parent="Athena"> - <keepFilePattern info="Log files" displayColor="red">*.txt</keepFilePattern> - <keepFilePattern info="PerfMon ntuple">*.pmon.gz</keepFilePattern> - <keepFilePattern info="PerfMon Hephaestus file" displayColor="blue">*.heph.log</keepFilePattern> - <keepFilePattern info="PerfMon summary file" displayColor="blue">*.summary.txt</keepFilePattern> - <keepFilePattern info="Test log file" displayColor="blue">*test*.log</keepFilePattern> - <keepFilePattern info="RootComp PS file" displayColor="blue">rootcomp.ps.gz</keepFilePattern> - <keepFilePattern info="PDF files">*.pdf</keepFilePattern> - <keepFilePattern info="ROOT files">*.root</keepFilePattern> - <keepFilePattern info="Python pickles">*.pickle</keepFilePattern> - <keepFilePattern info="New reference files">*.new</keepFilePattern> - <keepFilePattern info="TrigCostMon files"> costMonitoring*/* </keepFilePattern> - <keepFilePattern maxsize="100">*/TrigCostRoot_Results.root</keepFilePattern> - <keepFilePattern maxsize="100">trig_cost.root</keepFilePattern> - <keepFilePattern maxsize="100">costMonitoring*/*</keepFilePattern> - <keepFilePattern maxsize="100">*log</keepFilePattern> - <keepFilePattern maxsize="100">*log_1</keepFilePattern> - - <test position="1"> - <modulename>RttLibraryTools</modulename> - <testname>PerfMonRunner</testname> - <arg> - <argname>fileName</argname> - <argvalue>ntuple.pmon.gz</argvalue> - </arg> - <arg> - <argname>options</argname> - <argvalue>-f 0.90</argvalue> - </arg> - </test> - - <test position="2"> - <modulename>CheckLog</modulename> - <testname>CheckLog</testname> - <arg> - <argname>command</argname> - <argvalue>check_log.pl --config checklogTrigP1Test.conf %JOBLOG</argvalue> - </arg> - </test> - - <test position="3"> - <modulename>CheckStatusCode</modulename> - <testname>CheckStatusCode</testname> - <arg> - <argname>command</argname> - <argvalue>check_statuscode.py %JOBLOG</argvalue> - </arg> - </test> - - <test position="4"> - <modulename>RunMsgFinder</modulename> - <testname>RunMsgFinder</testname> - </test> - - <test position="5"> - <modulename>chainDump</modulename> - <testname>chainDump</testname> - <arg> - <argname>rootFile</argname> - <argvalue>expert-monitoring.root</argvalue> - </arg> - </test> - - <test position="6"> - <modulename>LogTail</modulename> - <testname>LogTail</testname> - <arg> - <argname>command</argname> - <argvalue>tail -5000 %JOBLOG >%JOBLOG.tail.txt</argvalue> - </arg> - </test> - - <test position="7"> - <modulename>TruncateLog</modulename> - <testname>TruncateLog</testname> - <arg> - <argname>command</argname> - <argvalue>mv %JOBLOG tmp.delete; head -n150000 tmp.delete >%JOBLOG; rm tmp.delete</argvalue> - </arg> - </test> - - <test position="8"> - <modulename>CheckForTrigCostD3PD_TriggerTest</modulename> - <testname>CheckForTrigCostD3PD_TriggerTest</testname> - <arg> - <argname>command</argname> - <argvalue>if [ -f trig_cost.root ] ; then RunTrigCostD3PD.exe -f trig_cost.root --outputTagFromAthena --costMode --useEBWeight --linkOutputDir ; else echo file trig_cost.root does not exist thus RunTrigCostD3PD.exe will not be run ; fi</argvalue> - </arg> - <noalarm /> - </test> - - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>PerfMonDozer0</testidentifier> - </testToRemove> - - </jobGroup> - - </jobGroups> - </rtt> -</unifiedTestConfiguration> diff --git a/Trigger/TrigValidation/TriggerTest/test/TriggerTest_TestConfiguration.xml b/Trigger/TrigValidation/TriggerTest/test/TriggerTest_TestConfiguration.xml deleted file mode 100755 index e1ecb1b50f8..00000000000 --- a/Trigger/TrigValidation/TriggerTest/test/TriggerTest_TestConfiguration.xml +++ /dev/null @@ -1,907 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> -<!-- NB validate this file here before committing to svn: - python /afs/cern.ch/user/r/rtt/public/xmlvalidate.py TriggerTest_TestConfiguration.xml - see: http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/onlineValidation/validator.html - ~rtt/public/xmlvalidate.py - - This xml file is divided into the suites - to improve parallel running - see the conf file for more info : - tt_0 - tt_20 MC_pp_v6 - tt_21 Physics_pp_v7 - tt_22 Physics_HI_v3 - tt_23 Physics_HI_v4 - tt_24 MC_HI_v4 - tt_26 MC_pp_v7 - tt_27 MC_pp_v7_no_prescale_toxAOD_FTK - the link setting (tt_3) below is not needed anymore ... - tt_3 linker (needs either MC_pp_v7 or Physics_pp_v7) run only 1! of these! - tt_40 Leakcheck - tt_41 StatusCodes - tt_42 noFPE - tt_50 chainorder asc - tt_51 chainorder dsc - tt_52 chainorder comp (needs 50&51) - tt_61 1Signatures with MC-menu objects - tt_62 2Signatures with MC-menu objects - tt_7 Signatures with spcl. setup Tests - tt_70 Signatures with spcl. setup Tests this is MB-Enhanced - tt_index0 (check if all above are done) - tt_index (run finalizing steps) - --> - -<unifiedTestConfiguration> - <atn> - - <!-- 2 --> - - <TEST name="AthenaTrigRDO_Physics_pp_v7" type="script" suite="tt_21"> - <options_atn>trigtest.pl --test AthenaTrigRDO_Physics_pp_v7 --run AthenaTrigRDO_Physics_pp_v7 --conf TriggerTest.conf</options_atn> - <timelimit>60</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigRDO_Physics_HI_v3" type="script" suite="tt_22"> - <options_atn>trigtest.pl --test AthenaTrigRDO_Physics_HI_v3 --run AthenaTrigRDO_Physics_HI_v3 --conf TriggerTest.conf</options_atn> - <timelimit>60</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigRDO_Physics_HI_v4" type="script" suite="tt_23"> - <options_atn>trigtest.pl --test AthenaTrigRDO_Physics_HI_v4 --run AthenaTrigRDO_Physics_HI_v4 --conf TriggerTest.conf</options_atn> - <timelimit>60</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigRDO_MC_HI_v3" type="script" suite="tt_24"> - <options_atn>trigtest.pl --test AthenaTrigRDO_MC_HI_v3 --run AthenaTrigRDO_MC_HI_v3 --conf TriggerTest.conf</options_atn> - <timelimit>60</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigRDO_MC_pp_v7" type="script" suite="tt_26"> - <options_atn>trigtest.pl --test AthenaTrigRDO_MC_pp_v7 --run AthenaTrigRDO_MC_pp_v7 --conf TriggerTest.conf</options_atn> - <timelimit>60</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigRDO_MC_pp_v7_no_prescale_toxAOD_FTK" type="script" suite="tt_27"> - <options_atn>trigtest.pl --test AthenaTrigRDO_MC_pp_v7_no_prescale_toxAOD_FTK --run AthenaTrigRDO_MC_pp_v7_no_prescale_toxAOD_FTK --conf TriggerTest.conf</options_atn> - <timelimit>60</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - - <!-- 3 --> - <!-- EITHER --> - <!--TEST name="link_AthenaTrigRDO_MC" type="script" suite="tt_3"> - <options_atn>trigtest.pl - -test link_AthenaTrigRDO_MC - -run link_AthenaTrigRDO_MC - -conf TriggerTest.conf ; rm -rf link_AthenaTrigRDO_MC</options_atn> - <timelimit>5</timelimit> - <author>Trigger Validation</author> - <prerequisite>tt_20</prerequisite> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST --> - - <!-- OR --> - <!--TEST name="link_AthenaTrigRDO_Physics" type="script" suite="tt_3"> - <options_atn>trigtest.pl - -test link_AthenaTrigRDO_Physics - -run link_AthenaTrigRDO_Physics - -conf TriggerTest.conf ; rm -rf link_AthenaTrigRDO_Physics</options_atn> - <timelimit>5</timelimit> - <author>Trigger Validation</author> - <prerequisite>tt_21</prerequisite> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST--> - - <!-- 4 stop for now running in RTT anyhow--> - <!--TEST name="AthenaTrigRDO_leakcheck" type="script" suite="tt_40"> - <options_atn>export LD_PRELOAD=/afs/cern.ch/sw/lcg/external/libunwind/5c2cade/${CMTCONFIG}/lib/libunwind.so ; trigtest.pl - -test AthenaTrigRDO_leakcheck - -run AthenaTrigRDO_leakcheck - -conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <platform>opt</platform> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST--> - - <!--TEST name="AthenaTrigRDO_StatusCodes" type="script" suite="tt_41"> - <options_atn>trigtest.pl - -test AthenaTrigRDO_StatusCodes - -run AthenaTrigRDO_StatusCodes - -conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <platform>opt</platform> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST--> - - <!--TEST name="AthenaTrigRDO_noFPE" type="script" suite="tt_42"> - <options_atn>trigtest.pl - -test AthenaTrigRDO_noFPE - -run AthenaTrigRDO_noFPE - -conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <platform>opt</platform> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST--> - - <!-- 5 --> - <TEST name="AthenaTrigRDO_chainOrderAscend" type="script" suite="tt_50"> - <options_atn>trigtest.pl --test AthenaTrigRDO_chainOrderAscend --run AthenaTrigRDO_chainOrderAscend --conf TriggerTest.conf</options_atn> - <timelimit>45</timelimit> - <author>Trigger Validation</author> - <mailto> Tomasz.Bold@cern.ch </mailto> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigRDO_chainOrderDescend" type="script" suite="tt_51"> - <options_atn>trigtest.pl --test AthenaTrigRDO_chainOrderDescend --run AthenaTrigRDO_chainOrderDescend --conf TriggerTest.conf</options_atn> - <timelimit>45</timelimit> - <author>Trigger Validation</author> - <mailto> Tomasz.Bold@cern.ch </mailto> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigRDO_chainOrder_compare" type="script" suite="tt_52"> - <options_atn>trigtest.pl --test AthenaTrigRDO_chainOrder_compare --run AthenaTrigRDO_chainOrder_compare --conf TriggerTest.conf</options_atn> - <timelimit>10</timelimit> - <author>Trigger Validation</author> - <mailto> Tomasz.Bold@cern.ch </mailto> - <prerequisite>tt_50</prerequisite> - <prerequisite>tt_51</prerequisite> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!-- 6 --> - <TEST name="BjetSliceAthenaTrigRDO" type="script" suite="tt_61"> - <options_atn>trigtest.pl --test BjetSliceAthenaTrigRDO --run BjetSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="BphysicsSliceAthenaTrigRDO" type="script" suite="tt_61"> - <options_atn>trigtest.pl --test BphysicsSliceAthenaTrigRDO --run BphysicsSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="ElectronSliceAthenaTrigRDO" type="script" suite="tt_61"> - <options_atn>trigtest.pl --test ElectronSliceAthenaTrigRDO --run ElectronSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="JetSliceAthenaTrigRDO" type="script" suite="tt_61"> - <options_atn>trigtest.pl --test JetSliceAthenaTrigRDO --run JetSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="METSliceAthenaTrigRDO" type="script" suite="tt_61"> - <options_atn>trigtest.pl --test METSliceAthenaTrigRDO --run METSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="MinBiasSliceAthenaTrigRDO" type="script" suite="tt_62"> - <options_atn>trigtest.pl --test MinBiasSliceAthenaTrigRDO --run MinBiasSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="MuonSliceAthenaTrigRDO" type="script" suite="tt_62"> - <options_atn>trigtest.pl --test MuonSliceAthenaTrigRDO --run MuonSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="TauSliceAthenaTrigRDO" type="script" suite="tt_62"> - <options_atn>trigtest.pl --test TauSliceAthenaTrigRDO --run TauSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!-- 7 --> - <TEST name="MinBiasSliceAthenaTrigRDO_Enhanced" type="script" suite="tt_70"> - <options_atn>trigtest.pl --test MinBiasSliceAthenaTrigRDO_Enhanced --run MinBiasSliceAthenaTrigRDO_Enhanced --conf TriggerTest.conf</options_atn> - <timelimit>60</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigRDO_LVL1CTP" type="script" suite="tt_7"> - <options_atn>trigtest.pl --test AthenaTrigRDO_LVL1CTP --run AthenaTrigRDO_LVL1CTP --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="AthenaTrigRDO_ID" type="script" suite="tt_7"> - <options_atn>trigtest.pl --test AthenaTrigRDO_ID --run AthenaTrigRDO_ID --conf TriggerTest.conf</options_atn> - <timelimit>30</timelimit> - <author>Trigger Validation</author> - <expectations> - <errorMessage>FAILURE </errorMessage> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!-- FIN --> - <!-- Summary table --> - <TEST name="atn_timeline" type="script" suite="tt_index0"> - <doc>ATN timeline</doc> - <options_atn>atn_timeline.py --atn -p TriggerTest </options_atn> - <timelimit>10</timelimit> - <author>Frank Winklmeier</author> - <!--prerequisite>tt_0</prerequisite> - <prerequisite>tt_10</prerequisite> - <prerequisite>tt_11</prerequisite> - <prerequisite>tt_12</prerequisite--> - <prerequisite>tt_20</prerequisite> - <prerequisite>tt_21</prerequisite> - <prerequisite>tt_22</prerequisite> - <prerequisite>tt_23</prerequisite> - <prerequisite>tt_24</prerequisite> - <prerequisite>tt_25</prerequisite> - <!--prerequisite>tt_3</prerequisite--> - <!--prerequisite>tt_40</prerequisite--> - <!--prerequisite>tt_41</prerequisite--> - <!--prerequisite>tt_42</prerequisite--> - <prerequisite>tt_52</prerequisite> - <prerequisite>tt_61</prerequisite> - <prerequisite>tt_62</prerequisite> - <prerequisite>tt_7</prerequisite> - <prerequisite>tt_70</prerequisite> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <TEST name="atn_xml_summary_table" type="script" suite="tt_index"> - <options_atn>atn_summary.pl</options_atn> - <timelimit>10</timelimit> - <author>Trigger Validation</author> - <prerequisite>tt_index0</prerequisite> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST> - - <!--TEST name="sendmail2shifter" type="script" suite="tt_index"> - <options_atn>echo $ATN_PACKAGE | mail -s "TriggerTest ATN done" "czodrows@cern.ch" </options_atn> - <timelimit>2</timelimit> - <author>Trigger Validation</author> - <prerequisite>tt_index0</prerequisite> - <expectations> - <returnValue>0</returnValue> - </expectations> - </TEST--> - </atn> - - <kv/> - - - <!-- RTT tests --> - <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt"> - - <!--rttContactPerson>David Strom (dstrom@uoregon.edu)</rttContactPerson> - <rttContactPerson>Simon George (S.George@rhul.ac.uk)</rttContactPerson> - <rttContactPerson>Patrick Czodrowski (czodrows@cern)</rttContactPerson--> - <rttContactPerson>Oleg Kuprash (oleg.kuprash@cern.ch)</rttContactPerson> - - - <jobList> - <classification> - <displayClass>OfflineValidation</displayClass> - <displayProcess>Reco</displayProcess> - <displayComponent>Trig-Common</displayComponent> - </classification> - - - <jobTransform userJobId="TimingTest_RDOtoRDOTrigger" > - <doc> - TimingTest_RDOtoRDOTrigger menu on top events see: https://its.cern.ch/jira/browse/ATLASRECTS-2408 - </doc> - <jobTransformJobName>TimingTest_RDOtoRDOTrigger</jobTransformJobName> - <jobTransformCmd> - cp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/RDOtoRDOTrigger_template/* ./ ; ./runwrapper.RDOtoRDOTrigger.sh ; perl -i.clean -pe 's/^[\d:]+ //' log.RDOtoRDOTrigger ; grep -B1 -e "PMonSD..evt" log.RDOtoRDOTrigger | head -20 > timing.log ; if [[ `head -2 timing.log | grep -c 'Trig'` == 1 ]]; then echo "Timing ERROR : a TriggerChain runs longer than StreamBS - this should not be the case - please consult / check: timing.log - Thank you" > timing_check_log; fi ; grep -B 1 -e "evtloop_time" log.RDOtoRDOTrigger > average_time_per_event.log ; if [[ `grep "[0-9]" average_time_per_event.log | awk '{print $4}'` -gt 30000 ]]; then echo "Timing ERROR : the average cpu time per event is too large > 30000 - this should not be the case - please consult / check: average_time_per_event.log - Thank you" > average_time_per_event_ERROR_log; fi - </jobTransformCmd> - <group>TriggerTestValidationJobs</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </jobTransform> - - <!-- Jobs to run each current menu and keep monitoring histograms --> - - <athena userJobId="Physics_pp_v7" doMonitoring="True"> - <doc> - Physics_pp_v7 menu on minbias RDO - </doc> - <displayName>Physics_pp_v7</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Physics_pp_v7_toAOD" doMonitoring="True" > - <doc> - Runs Physics_pp_v7 menu on ttbar dumping 1k events in an xAOD - </doc> - <displayName>Physics_pp_v7_toAOD</displayName> - <commandLineFlags> - RunningRTT=True;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - - <athena userJobId="Physics_pp_v7_tight_physics" doMonitoring="True"> - <doc> - Physics_pp_v7_tight_physics menu on minbias RDO - </doc> - <displayName>Physics_pp_v7_tight_physics</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='Physics_pp_v7_tight_physics_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Physics_HI_v3" > - <doc> - Test of Physics_HI_v3 menu on RDO - </doc> - <displayName>Physics_HI_v3</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='Physics_HI_v3';from AthenaCommon.GlobalFlags import globalflags;jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_5TeV.420000.Hijing_PbPb_5p02TeV_MinBias_Flow_JJFV6.recon.RDO.e3754_s2633_r7161';fileRange=[1,10] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Physics_HI_v4" > - <doc> - Test of Physics_HI_v4 menu on RDO - </doc> - <displayName>Physics_HI_v4</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='Physics_HI_v4';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <!-- MC_pp_v7 menu tests go here --> - <athena userJobId="MC_pp_v7" doMonitoring="True"> - <doc> - MC_pp_v7 menu on ttbar RDO - </doc> - <displayName>MC_pp_v7</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="MC_pp_v7_toAOD" doMonitoring="True" > - <doc> - Runs MC_pp_v7 menu on ttbar dumping 1k events in an xAOD - </doc> - <displayName>MC_pp_v7_toAOD</displayName> - <commandLineFlags> - RunningRTT=True;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="MC_pp_v7_no_prescale_toxAOD_FTK" doMonitoring="True" > - <doc> - Runs MC_pp_v7_no_prescale menu on valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.digit.RDO_FTK.e4993_s2887_r8937_r9119 dumping events in an xAOD - </doc> - <displayName>MC_pp_v7_no_prescale_toxAOD_FTK</displayName> - <commandLineFlags> - RunningRTT=True;menu='MC_pp_v7_no_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.doFTK.set_Value_and_Lock(True);from RecExConfig.RecFlags import rec;rec.doFTK.set_Value_and_Lock(True);jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/RDO_FTK.10733709._000019.pool.root.1'] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="MC_pp_v7_tight_mc_prescale" doMonitoring="True"> - <doc> - MC_pp_v7_tight_mc_prescale menu on ttbar RDO only 500 events - </doc> - <displayName>MC_pp_v7_tight_mc_prescale</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="MC_pp_v7_loose_mc_prescale" doMonitoring="True"> - <doc> - MC_pp_v7_loose_mc_prescale menu on minbias RDO - </doc> - <displayName>MC_pp_v7_loose_mc_prescale</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_loose_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - - <athena userJobId="MC_HI_v3_tight_mc_prescale" > - <doc> - Test of MC_HI_v3_tight_mc_prescale menu on RDO - </doc> - <displayName>MC_HI_v3_tight_mc_prescale</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_HI_v3_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;from AthenaCommon.GlobalFlags import jobproperties;jobproperties.Global.DetDescrVersion='ATLAS-R1-2010-02-00-00';dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc10_7TeV.119113.Hijing_PbPb_2p75TeV_MinBias_Flow_JJV2.digit.RDO.e844_s1345_s1300_d592_tid526760_00';fileRange=[1,2000] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="MC_HI_v4" > - <doc> - Test of MC_HI_v4 menu on ttbar RDO - </doc> - <displayName>MC_HI_v4</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_HI_v3_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>long</queue> - <alwaysRunPostProc /> - </athena> - - <!-- Jobs to run each slice and keep monitoring histograms - RG 14/5/07 --> - <!-- MC based slice tests --> - - <athena userJobId="Bjet" doMonitoring="True"> - <doc> - Runs B-jet signature on ttbar RDO - </doc> - <displayName>Bjet</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='bjet';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Bphysics" doMonitoring="True" > - <doc> - Runs B-physics slice on user.tursom.mc12_14TeV.208410.Pythia8B_AU2_CTEQ6L1_Bs_Jpsimu6mu6_phi_KK.recon.v6_EXT0 RDOs (until Bs->J/Psi mu mu RDO mc12_8TeV.208002.Pythia8B_AU2_CTEQ6L1_pp_Jpsimu6mu6.recon.RDO.e1331_a159_a190 is availible) - </doc> - <displayName>BPhysics</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='bphysics';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_RTT_1000_Bphysics_toAOD_r6889/Bphysics_RDO_r6889_mixed.pool.root'] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Bphysics_toAOD" doMonitoring="True" > - <doc> - Runs B-physics slice on user.tursom.mc12_14TeV.208410.Pythia8B_AU2_CTEQ6L1_Bs_Jpsimu6mu6_phi_KK.recon.v6_EXT0 RDOs (until Bs->J/Psi mu mu RDO mc12_8TeV.208002.Pythia8B_AU2_CTEQ6L1_pp_Jpsimu6mu6.recon.RDO.e1331_a159_a190 is availible) - </doc> - <displayName>BPhysics_toAOD</displayName> - <commandLineFlags> - RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='bphysics';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_RTT_1000_Bphysics_toAOD_r6889/Bphysics_RDO_r6889_mixed.pool.root'] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - - <athena userJobId="BphysExo_toAOD" doMonitoring="True" > - <doc> - Runs B-physics AND Muon slice on mc15_13TeV.180593.Pythia8_AUMSTW2008LO_Wtaunu_3mu_noPhotos see ATR-13193 - </doc> - <displayName>BPhysics_toAOD</displayName> - <commandLineFlags> - RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='mubphysics';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_13TeV.180593.Pythia8_AUMSTW2008LO_Wtaunu_3mu_noPhotos.recon.RDO.e3802_s2608_s2183_r6790/RDO.05594910._000008.pool.root.1'] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDOtoAOD.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Electron" doMonitoring="True" > - <doc> - Runs Electron signature on ttbar RDO (until RDO mc12_14TeV.147806.PowhegPythia8_AU2CT10_Zee.recon.RDO.e1564_s1682_s1691_r4710 is availible) - </doc> - <displayName>Electron</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='egamma';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Electron_ID_Val" doMonitoring="True" > - <doc> - Runs Electron slice on ttbar RDO (until mc10_14TeV.106046.PythiaZee_no_filter.digit.RDO.e662_s1107_d459 mu=46, no IBL is availible) - </doc> - <displayName>Electron_ID_Val</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='egamma';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Tau" doMonitoring="True" > - <doc> - Runs Tau signature on ttbar RDO (until Z tau tau RDO is availible) - </doc> - <displayName>Tau</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale'; sliceName='tau';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Jet" doMonitoring="True"> - <doc> - Runs Jet signature on ttbar RDO - </doc> - <displayName>Jet</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale'; sliceName='jet';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="MET" doMonitoring="True" > - <doc> - Runs MET signature on ttbar RDO - </doc> - <displayName>MET</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale'; sliceName='met';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="MinBias" doMonitoring="True"> - <doc> - Runs MinBias signature on ttbar RDO - </doc> - <displayName>MinBias</displayName> - <commandLineFlags> - enableCostMonitoring=True;sliceName='minbias';RunningRTT=True;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_13TeV.361203.Pythia8_A2_MSTW2008LO_ND_minbias.recon.RDO.e3639_s2606_s2174_r7661_tid07858100_00/RDO.07858100._000087.pool.root.1'] - </commandLineFlags> - <!--options>testMinBiasSliceAthenaTrigRDO.py</options--> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="MinBias_Enhanced" doMonitoring="True"> - <doc> - Runs MinBias_Enhanced signature on ttbar RDO - </doc> - <displayName>MinBias_Enhanced</displayName> - <commandLineFlags> - enableCostMonitoring=True;sliceName='minbiasEnhanced';RunningRTT=True;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(50);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <!--options>testMinBiasSliceAthenaTrigRDO.py</options--> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="Muon" doMonitoring="True"> - <doc> - Runs Muon signature on ttbar RDO - </doc> - <displayName>Muon</displayName> - <commandLineFlags> - enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale'; sliceName='muon';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testCommonSliceAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - <athena userJobId="LVL1" doMonitoring="True"> - <doc> - LVL1 only test- with default menu - </doc> - <displayName>LVL1</displayName> - <commandLineFlags> - RunningRTT=True;jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] - </commandLineFlags> - <options>testLVL1CTPAthenaTrigRDO.py</options> - <package>Trigger/TrigValidation/TriggerTest</package> - <group>TriggerTestMonitorHistos</group> - <queue>medium</queue> - <alwaysRunPostProc /> - </athena> - - </jobList> - <jobGroups> - <jobGroup name="TriggerTestValidationJobs" parent="RTT:Athena"> - <keepFilePattern info="Log files" displayColor="red">*.txt</keepFilePattern> - <keepFilePattern info="Test log file" displayColor="blue">*test*.log</keepFilePattern> - <keepFilePattern info="Action log file" displayColor="blue">*action*.log</keepFilePattern> - <keepFilePattern info="Monitoring histograms">*-monitoring.root</keepFilePattern> - <keepFilePattern info="Timing histograms">timing-histograms.root</keepFilePattern> - <keepFilePattern info="checkfilelog">*checkFile*</keepFilePattern> - <keepFilePattern info="PerfMon ntuple">*.pmon.gz</keepFilePattern> - <keepFilePattern info="PerfMon Hephaestus file">*.heph.log</keepFilePattern> - <keepFilePattern info="PerfMon xml">*.xml</keepFilePattern> - <keepFilePattern info="POOL files">*.pool.root</keepFilePattern> - <keepFilePattern info="GIF files">*.gif</keepFilePattern> - <keepFilePattern info="PDF files">*.pdf</keepFilePattern> - <keepFilePattern info="ROOT files">*.root</keepFilePattern> - <keepFilePattern info="ROOT macros">*.C</keepFilePattern> - <keepFilePattern info="ROOT macros">*.cxx</keepFilePattern> - <keepFilePattern info="Bytestream files">*.data</keepFilePattern> - <keepFilePattern info="Bytestream files">*.php</keepFilePattern> - <keepFilePattern info="igprof files"> igprof.*.gz</keepFilePattern> - <keepFilePattern info="igprof files"> cgi-bin/data/*.sql3</keepFilePattern> - <keepFilePattern info="igprof files"> cgi-bin/igprof-navigator</keepFilePattern> - <keepFilePattern info="TrigCostMon files"> costMonitoring*/* </keepFilePattern> - <keepFilePattern maxsize="100">*/TrigCostRoot_Results.root</keepFilePattern> - <keepFilePattern maxsize="100">trig_cost.root</keepFilePattern> - <keepFilePattern maxsize="100">costMonitoring*/*</keepFilePattern> - <keepFilePattern maxsize="100">*log</keepFilePattern> - <keepFilePattern maxsize="100">*log_1</keepFilePattern> - - <!--binRefFile>*-monitoring.root</binRefFile--> - - <auxFilePattern>plotDecision.cxx</auxFilePattern> - <auxFilePattern>checklogTriggerTest.conf</auxFilePattern> - - <test position="1"> - <modulename>LogTail_TriggerTest</modulename> - <testname>LogTail_TriggerTest</testname> - <arg> - <argname>command</argname> - <argvalue>tail -10000 %JOBLOG >%JOBLOG.tail.txt</argvalue> - </arg> - </test> - - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>CheckFileRunner0</testidentifier> - </testToRemove> - - <testToRemove> - <jobGroupName>RTT:Top</jobGroupName> - <testidentifier>PerfMonDozer0</testidentifier> - </testToRemove> - - </jobGroup> - - - <jobGroup name="TriggerTestMonitorHistos" parent="TriggerTestValidationJobs"> - - <test position="1"> - <modulename>CheckLog_TriggerTest</modulename> - <testname>CheckLog_TriggerTest</testname> - <testidentifier>CheckLog_TriggerTest</testidentifier> - <arg> - <argname>command</argname> - <argvalue>check_log.pl --config checklogTriggerTest.conf %JOBLOG</argvalue> - </arg> - </test> - - <test position="2"> - <modulename>PerfMonRunner</modulename> - <testname>PerfMonRunner</testname> - <testidentifier>PerfMonRunner</testidentifier> - <arg> - <argname>fileName</argname> - <argvalue>ntuple.pmon.gz</argvalue> - </arg> - <arg> - <argname>options</argname> - <argvalue>-f 0.90</argvalue> - </arg> - <noalarm /> - </test> - - <test position="3"> - <modulename>chainDump</modulename> - <testname>chainDump</testname> - <testidentifier>chainDump</testidentifier> - <arg> - <argname>rootFile</argname> - <argvalue>expert-monitoring.root</argvalue> - </arg> - <noalarm /> - </test> - - <test position="4"> - <modulename>CheckForTrigCostD3PD_TriggerTest</modulename> - <testname>CheckForTrigCostD3PD_TriggerTest</testname> - <arg> - <argname>command</argname> - <argvalue>if [ -f trig_cost.root ] ; then RunTrigCostD3PD.exe -f trig_cost.root --outputTagFromAthena --costMode --linkOutputDir ; else echo file trig_cost.root does not exist thus RunTrigCostD3PD.exe will not be run ; fi</argvalue> - </arg> - <noalarm /> - </test> - <test position="5"> - <modulename>CheckForL1AllZero_TriggerTest</modulename> - <testname>CheckForL1AllZero_TriggerTest</testname> - <arg> - <argname>command</argname> - <argvalue>if [[ `sed 's|.*\(.* \)|\1|' L1AV.txt | sed 's/^[ \t]*//' | sed '/^0/'d | wc -l` == 0 ]]; then echo L1 counts ERROR : all entires are ZERO please consult L1AV.txt ; fi </argvalue> - </arg> - </test> - <test position="6"> - <modulename>CheckForHLTChainAllZero_TriggerTest</modulename> - <testname>CheckForHLTChainAllZero_TriggerTest</testname> - <arg> - <argname>command</argname> - <argvalue>if [[ `sed 's|.*\(.* \)|\1|' HLTChain.txt | sed 's/^[ \t]*//' | sed '/^0/'d | wc -l` == 0 ]]; then echo HLTChain counts ERROR : all entires are ZERO please consult HLTChain.txt ; fi </argvalue> - </arg> - </test> - <test position="7"> - <modulename>CheckForHLTTEAllZero_TriggerTest</modulename> - <testname>CheckForHLTTEAllZero_TriggerTest</testname> - <arg> - <argname>command</argname> - <argvalue>if [[ `sed 's|.*\(.* \)|\1|' HLTTE.txt | sed 's/^[ \t]*//' | sed '/^0/'d | wc -l` == 0 ]]; then echo HLTTE counts ERROR : all entires are ZERO please consult HLTTE.txt ; fi </argvalue> - </arg> - </test> - </jobGroup> - </jobGroups> - </rtt> -</unifiedTestConfiguration> -- GitLab From 15635a6f19f53bfe376ac220044d577beac1c687 Mon Sep 17 00:00:00 2001 From: Scott Snyder <scott.snyder@cern.ch> Date: Sat, 24 Nov 2018 13:51:02 +0000 Subject: [PATCH 110/135] TileByteStream+TileTBRec: Remove mutable data from TileRawChannel2Bytes4. Former-commit-id: 03ee18de8f965e34f472fc4eaecae8e092fc746c --- .../TileByteStream/TileROD_Decoder.h | 7 ++--- .../TileByteStream/TileROD_Encoder.h | 3 +- .../TileByteStream/TileRawChannel2Bytes4.h | 31 ++++++------------- .../TileByteStream/src/TileROD_Decoder.cxx | 18 ++++++----- .../TileByteStream/src/TileROD_Encoder.cxx | 9 +++--- .../src/TileRawChannel2Bytes4.cxx | 27 +++++++++------- .../test/TileRawChannel2Bytes4_test.cxx | 10 +++--- .../TileTBRec/TileTBRec/TileTBDump.h | 6 ++-- TileCalorimeter/TileTBRec/src/TileTBDump.cxx | 8 ++--- 9 files changed, 58 insertions(+), 61 deletions(-) diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h index 0102cb6a2df..a836a909b1e 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h +++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h @@ -255,7 +255,7 @@ class TileROD_Decoder: public AthAlgTool { The phase is encoded in ns. <p> The subfragment type 0x4 contains the reconstructed parameters from the 48 read-out channels of a tilecal module. */ - void unpack_frag4(uint32_t version, const uint32_t* p, pRwChVec & pChannel); + void unpack_frag4(uint32_t version, unsigned int unit, const uint32_t* p, pRwChVec & pChannel); /** unpack_frag5 decodes tile subfragment type 0x4. This subfragment contains the reconstructed amplitude and phase from the tilecal digitized pulse and a @@ -306,7 +306,7 @@ class TileROD_Decoder: public AthAlgTool { The phase is encoded in ns. <p> The subfragment type 0x4 contains the reconstructed parameters from the 48 read-out channels of a tilecal module. */ - void unpack_frag4HLT(uint32_t version, const uint32_t* p, pFRwChVec & pChannel); + void unpack_frag4HLT(uint32_t version, unsigned int unit, const uint32_t* p, pFRwChVec & pChannel); /** unpack_frag5HLT decodes tile subfragment type 0x5 for the high level trigger (HLT). This subfragment contains the @@ -983,7 +983,6 @@ void TileROD_Decoder::fillCollection(const ROBData * rob, COLLECTION & v) { if (m_useFrag4) { m_bsflags = idAndType & 0xFFFF0000; // ignore frag num, keep all the rest int unit = (idAndType & 0xC0000000) >> 30; - m_rc2bytes4.setUnit(unit); int DataType = (idAndType & 0x30000000) >> 28; @@ -1010,7 +1009,7 @@ void TileROD_Decoder::fillCollection(const ROBData * rob, COLLECTION & v) { m_rChUnit = (TileRawChannelUnit::UNIT) (unit); // Offline units in simulated data } - unpack_frag4(version, p, pChannel); + unpack_frag4(version, unit, p, pChannel); } break; diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Encoder.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Encoder.h index e2ba74d2b85..1d9ac11be66 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Encoder.h +++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Encoder.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TILEBYTESTREAM_TILEROD_ENCODER_H @@ -148,6 +148,7 @@ class TileROD_Encoder { bool m_verbose; unsigned int m_type; unsigned int m_unitType; + unsigned int m_rChUnit; mutable Athena::MsgStreamMember m_msg; int m_maxChannels; diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes4.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes4.h index 95596c7b7df..587066214e3 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes4.h +++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes4.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #ifndef TILEBYTESTREAM_TILERAWCHANNEL2BYTES4_H @@ -66,41 +66,30 @@ class TileFastRawChannel; class TileRawChannel2Bytes4 { public: TileRawChannel2Bytes4() - : m_verbose(false), m_rChUnit(0) { + { } /** Adds an entry to the vector<int> v for this TileRawChannel. The entry is the single 32-bit word generated using TileRawChannel2Bytes4::getWord() method.<p> Returns 1 which is the number of entries added to the vector. */ - int getBytes(const TileFastRawChannel* rc, int gain, std::vector<unsigned int>& v); + int getBytes(const TileFastRawChannel& rc, unsigned int unit, + int gain, std::vector<unsigned int>& v) const; /** Returns a single 32-bit word which encodes the TileRawChannel information (gain,amplitude,phase and quality) for a single read-out channel. */ - unsigned int getWord(const TileFastRawChannel* rc, int gain); + unsigned int getWord(const TileFastRawChannel& rc, unsigned int unit, int gain) const; /** Returns the gain unpacked from the single 32-bit word w. */ inline int gain(unsigned int w) const; /** Returns the amplitude in the corresponding units, unpacked from the single 32-bit word w. */ - inline float amplitude(unsigned int w) const; + inline float amplitude(unsigned int w, unsigned int unit) const; /** Returns the phase of the pulse in ns, unpacked from the single 32-bit word w. */ inline float time(unsigned int w) const; /** Returns the quality factor unpacked from the single 32-bit word w. */ inline float quality(unsigned int w) const; /** Sets verbose mode true or false. */ - inline void setVerbose(bool verbose) { - m_verbose = verbose; + inline void setVerbose(bool /*verbose*/) { } - - /** Sets the energy units value (TileRawChannel2Bytes4::m_rChUnit). */ - inline void setUnit(unsigned int unit) { - m_rChUnit = unit; - } - - private: - /** Verbose flag. */ - bool m_verbose; - /** Energy units. */ - unsigned int m_rChUnit; }; // inline functions @@ -110,11 +99,11 @@ inline int TileRawChannel2Bytes4::gain(unsigned int w) const { return g; } -inline float TileRawChannel2Bytes4::amplitude(unsigned int w) const { +inline float TileRawChannel2Bytes4::amplitude(unsigned int w, unsigned int unit) const { int g = (w >> GAIN_SHIFT4) & GAIN_RANGE4; float a = (((w >> AMPLITUDE_SHIFT4) & AMPLITUDE_RANGE4) - AMPLITUDE_OFFSET4[g]) - / AMPLITUDE_FACTOR4[m_rChUnit]; - if (m_rChUnit != 0 && g == 1) a = a / 64.0F; + / AMPLITUDE_FACTOR4[unit]; + if (unit != 0 && g == 1) a = a / 64.0F; return a; } diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx index 509bbd900aa..f736700fd58 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx +++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx @@ -153,7 +153,6 @@ int TileROD_Decoder::getErrorCounter() { StatusCode TileROD_Decoder::initialize() { m_rc2bytes5.setVerbose(m_verbose); - m_rc2bytes4.setVerbose(m_verbose); m_rc2bytes2.setVerbose(m_verbose); m_rc2bytes.setVerbose(m_verbose); m_d2Bytes.setVerbose(m_verbose); @@ -897,7 +896,9 @@ void TileROD_Decoder::unpack_frag3(uint32_t /* version */, const uint32_t* p, return; } -void TileROD_Decoder::unpack_frag4(uint32_t /* version */, const uint32_t* p, +void TileROD_Decoder::unpack_frag4(uint32_t /* version */, + unsigned int unit, + const uint32_t* p, pRwChVec & pChannel) { // first word is frag size int count = *(p); @@ -928,7 +929,7 @@ void TileROD_Decoder::unpack_frag4(uint32_t /* version */, const uint32_t* p, if (w != 0) { // skip invalid channels if (all00) all00 = TileFragStatus::ALL_OK; rc = new TileRawChannel(adcID - , m_rc2bytes4.amplitude(w) + , m_rc2bytes4.amplitude(w, unit) , m_rc2bytes4.time(w) , m_rc2bytes4.quality(w)); } else { @@ -1864,7 +1865,7 @@ void TileROD_Decoder::unpack_frag14(uint32_t /* version */, const uint32_t* p, nDrawer[0] = frag & 0x3F; nDrawer[1] = (frag & 0xFC0) >> 6; - p += 2; // 2 words so far + p += 2; // 2 words somethingm far std::vector<float> sumE(1); @@ -3296,7 +3297,6 @@ uint32_t TileROD_Decoder::fillCollectionHLT(const ROBData * rob, TileCellCollect if (!m_ignoreFrag4HLT && !fragFound) { fragFound = true; int unit = (idAndType & 0xC0000000) >> 30; - m_rc2bytes4.setUnit(unit); int DataType = (idAndType & 0x30000000) >> 28; @@ -3314,7 +3314,7 @@ uint32_t TileROD_Decoder::fillCollectionHLT(const ROBData * rob, TileCellCollect m_rChUnit = (TileRawChannelUnit::UNIT) (unit); // Offline units in simulated data } - unpack_frag4HLT(version, p, m_pRwChVec); + unpack_frag4HLT(version, unit, p, m_pRwChVec); } break; @@ -3680,7 +3680,9 @@ void TileROD_Decoder::unpack_frag3HLT(uint32_t /* version */, const uint32_t* p, return; } -void TileROD_Decoder::unpack_frag4HLT(uint32_t /* version */, const uint32_t* p, +void TileROD_Decoder::unpack_frag4HLT(uint32_t /* version */, + unsigned int unit, + const uint32_t* p, pFRwChVec & pChannel) { // first word is frag size int count = *(p); @@ -3693,7 +3695,7 @@ void TileROD_Decoder::unpack_frag4HLT(uint32_t /* version */, const uint32_t* p, if (w != 0) { // skip invalid channels pChannel[ch]->set(ch , m_rc2bytes4.gain(w) - , m_rc2bytes4.amplitude(w) + , m_rc2bytes4.amplitude(w, unit) , m_rc2bytes4.time(w) , m_rc2bytes4.quality(w)); diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx index 96350c5f1ea..fb6067863d2 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx +++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // Implementation of TileROD_Encoder class @@ -25,7 +25,8 @@ TileROD_Encoder::TileROD_Encoder(): m_tileHWID(0), m_verbose(false), m_type(0), - m_unitType(0), + m_unitType(0), + m_rChUnit(0), m_msg("TileROD_Encoder"), m_maxChannels(TileCalibUtils::MAX_CHAN) { } @@ -86,7 +87,7 @@ void TileROD_Encoder::setTypeAndUnit(TileFragHash::TYPE type, TileRawChannelUnit // 24,25,26 - OF type // next 8 bits - frag type ( 2,3,4, ... ) m_unitType = (rChUnit << 30) | (3 << 28) | (0 << 27) | (OFType << 24) | (m_type << 16); - m_rc2bytes4.setUnit(rChUnit); + m_rChUnit = rChUnit; } else if (m_type == 5) { // 8 upper bits: // UULLLTTT @@ -416,7 +417,7 @@ void TileROD_Encoder::fillROD4(std::vector<uint32_t>& v) { int chan = rc->channel(); int gain = rc->adc(); if (chan < m_maxChannels) { - v[start + chan] = m_rc2bytes4.getWord(rc, gain); + v[start + chan] = m_rc2bytes4.getWord(*rc, m_rChUnit, gain); } } // end of all TileRawChannel diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes4.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes4.cxx index c3ee735a83a..8efa7835f43 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes4.cxx +++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes4.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TileByteStream/TileRawChannel2Bytes4.h" @@ -7,28 +7,33 @@ #include <algorithm> #include <cmath> -int TileRawChannel2Bytes4::getBytes(const TileFastRawChannel* rc, int gain, - std::vector<unsigned int>& v) { +int TileRawChannel2Bytes4::getBytes(const TileFastRawChannel& rc, + unsigned int unit, + int gain, + std::vector<unsigned int>& v) const +{ // pack raw data into one 32-bits integer - v.push_back(getWord(rc, gain)); + v.push_back(getWord(rc, unit, gain)); return 1; // one int added to vector } -unsigned int TileRawChannel2Bytes4::getWord(const TileFastRawChannel* rc, int gain) { - +unsigned int TileRawChannel2Bytes4::getWord(const TileFastRawChannel& rc, + unsigned int unit, + int gain) const +{ // pack raw data into one 32-bits integer - float tmp = rc->amplitude(); - if (m_rChUnit != 0 && gain == 1) tmp = tmp * 64.0F; + float tmp = rc.amplitude(); + if (unit != 0 && gain == 1) tmp = tmp * 64.0F; unsigned int a = std::max(0, std::min(AMPLITUDE_RANGE4 - , (int) lround(tmp * AMPLITUDE_FACTOR4[m_rChUnit] + AMPLITUDE_OFFSET4[gain]))); + , (int) lround(tmp * AMPLITUDE_FACTOR4[unit] + AMPLITUDE_OFFSET4[gain]))); unsigned int t = std::max(0,std::min(TIME_RANGE4 - , (int) lround(rc->time() * TIME_FACTOR4 + TIME_OFFSET4))); + , (int) lround(rc.time() * TIME_FACTOR4 + TIME_OFFSET4))); unsigned int q = std::max(0, std::min(QUALITY_RANGE4_NOFLAG, - (int) lround(rc->quality() * QUALITY_FACTOR4 + QUALITY_OFFSET4))); + (int) lround(rc.quality() * QUALITY_FACTOR4 + QUALITY_OFFSET4))); unsigned int w = (a << AMPLITUDE_SHIFT4) | (t << TIME_SHIFT4) | (q << QUALITY_SHIFT4); diff --git a/TileCalorimeter/TileSvc/TileByteStream/test/TileRawChannel2Bytes4_test.cxx b/TileCalorimeter/TileSvc/TileByteStream/test/TileRawChannel2Bytes4_test.cxx index b0dd9315c29..10990ad3302 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/test/TileRawChannel2Bytes4_test.cxx +++ b/TileCalorimeter/TileSvc/TileByteStream/test/TileRawChannel2Bytes4_test.cxx @@ -21,22 +21,20 @@ void test1() TileRawChannel2Bytes4 rch; TileFastRawChannel fch; fch.set (0, 0, 0, 120.5, 1.25, 5); - rch.setUnit (0); - unsigned int w = rch.getWord (&fch, 0); + unsigned int w = rch.getWord (fch, 0, 0); assert (w == (2440<<16) + (1044<<5) + 5); assert (rch.gain(w) == 0); - assert (rch.amplitude(w) == 120.5); + assert (rch.amplitude(w, 0) == 120.5); assert (rch.time(w) == 1.25); assert (rch.quality(w) == 5); std::vector<unsigned int> v; fch.set (0, 0, 0, -0.5, 1.25, 3); - rch.setUnit (1); - assert (rch.getBytes (&fch, 1, v) == 1); + assert (rch.getBytes (fch, 1, 1, v) == 1); assert (v.size() == 1); assert (v[0] == (1024u<<16) + (1044u<<5) + 3u + (1u<<31)); assert (rch.gain(v[0]) == 1); - assert (rch.amplitude(v[0]) == -0.5); + assert (rch.amplitude(v[0], 1) == -0.5); assert (rch.time(v[0]) == 1.25); assert (rch.quality(v[0]) == 3); } diff --git a/TileCalorimeter/TileTBRec/TileTBRec/TileTBDump.h b/TileCalorimeter/TileTBRec/TileTBRec/TileTBDump.h index b4f1f84da43..4fabe352d2d 100755 --- a/TileCalorimeter/TileTBRec/TileTBRec/TileTBDump.h +++ b/TileCalorimeter/TileTBRec/TileTBRec/TileTBDump.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //**************************************************************************** @@ -203,7 +203,9 @@ class TileTBDump: public AthAlgorithm { , unsigned int version, int verbosity, int* ngain, int* nchannel); int tile_unpack_reco_calib(T_RodDataFrag* frag, T_TileRecoCalib* recocalib, int nchannel_max - , unsigned int version, int verbosity, int* ngain, int* nchannel); // Baxo + , unsigned int version + , unsigned int unit + , int verbosity, int* ngain, int* nchannel); // Baxo int tile_unpack_quality(T_RodDataFrag* frag, T_TileRecoQuality & DQword); diff --git a/TileCalorimeter/TileTBRec/src/TileTBDump.cxx b/TileCalorimeter/TileTBRec/src/TileTBDump.cxx index 0e87be69622..a64e8fec7c6 100755 --- a/TileCalorimeter/TileTBRec/src/TileTBDump.cxx +++ b/TileCalorimeter/TileTBRec/src/TileTBDump.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ //***************************************************************************** @@ -1549,8 +1549,7 @@ void TileTBDump::dump_digi(unsigned int subdet_id, const uint32_t* roddata, unsi case 4: // fragment with gain/amp/time/bad/quality in 32 bit words m_unit = unit; - m_rc2bytes4.setUnit(unit); - tile_unpack_reco_calib(frag[f], recocalib, MAX_DIGI_CHAN, version, verbosity, &ngain, + tile_unpack_reco_calib(frag[f], recocalib, MAX_DIGI_CHAN, version, unit, verbosity, &ngain, &nchan); std::cout << "\nReco calibrated energy fragment 0x" << std::hex << id << std::dec << ", " << size << " words found:" @@ -2025,6 +2024,7 @@ int TileTBDump::tile_unpack_reco(T_RodDataFrag *frag, T_TileRecoChannel * channe /*--------------------------------------------------------------------------*/ int TileTBDump::tile_unpack_reco_calib(T_RodDataFrag* frag, T_TileRecoCalib* recocalib , int nchannel_max, unsigned int /* version */ + , unsigned int unit , int /* verbosity */, int *ngain, int *nchannel) {// Baxo /*--------------------------------------------------------------------------*/ @@ -2043,7 +2043,7 @@ int TileTBDump::tile_unpack_reco_calib(T_RodDataFrag* frag, T_TileRecoCalib* rec recocalib[ch].time = (w >> TIME_SHIFT4) & TIME_RANGE4; recocalib[ch].bad = ((w >> QUALITY_SHIFT4) & QUALITY_RANGE4 & 0x10) >> 4; recocalib[ch].quality = ((w >> QUALITY_SHIFT4) & QUALITY_RANGE4 & 0xF); - recocalib[ch].d_amp = m_rc2bytes4.amplitude(w); + recocalib[ch].d_amp = m_rc2bytes4.amplitude(w, unit); recocalib[ch].d_time = m_rc2bytes4.time(w); recocalib[ch].d_quality = m_rc2bytes4.quality(w); } -- GitLab From 22c08ef696936f0187670ced2343f24cd4994d43 Mon Sep 17 00:00:00 2001 From: Scott Snyder <scott.snyder@cern.ch> Date: Sat, 24 Nov 2018 19:44:25 +0000 Subject: [PATCH 111/135] TileRecUtils+TileEvent: Add TileDQstatusAlg. Former-commit-id: 99b6969e8c453a4fbe2a6bd6396a5794fbef78d1 --- .../TileEvent/TileEvent/TileDQstatus.h | 6 +- TileCalorimeter/TileRecUtils/CMakeLists.txt | 12 + .../TileRecUtils/ITileDQstatusTool.h | 56 ++ .../TileRecUtils/TileRecUtilsDict.h | 1 + .../TileRecUtils/TileRecUtils/selection.xml | 2 + .../python/TileDQstatusAlgDefault.py | 56 ++ .../share/TileDQstatusAlg_test.py | 369 +++++++++++++ .../share/TileDQstatusAlg_test.ref | 468 ++++++++++++++++ .../share/TileDQstatusTool_test.py | 522 ++++++++++++++++++ .../share/TileDQstatusTool_test.ref | 471 ++++++++++++++++ .../TileRecUtils/src/TileDQstatusAlg.cxx | 86 +++ .../TileRecUtils/src/TileDQstatusAlg.h | 81 +++ .../TileRecUtils/src/TileDQstatusTool.cxx | 343 ++++++++++++ .../TileRecUtils/src/TileDQstatusTool.h | 87 +++ .../src/components/TileRecUtils_entries.cxx | 5 +- .../TileRecUtils/test/TileDQstatusAlg_test.sh | 7 + .../test/TileDQstatusTool_test.sh | 7 + 17 files changed, 2576 insertions(+), 3 deletions(-) create mode 100644 TileCalorimeter/TileRecUtils/TileRecUtils/ITileDQstatusTool.h create mode 100644 TileCalorimeter/TileRecUtils/python/TileDQstatusAlgDefault.py create mode 100644 TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.py create mode 100644 TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref create mode 100644 TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.py create mode 100644 TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref create mode 100644 TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.cxx create mode 100644 TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.h create mode 100644 TileCalorimeter/TileRecUtils/src/TileDQstatusTool.cxx create mode 100644 TileCalorimeter/TileRecUtils/src/TileDQstatusTool.h create mode 100755 TileCalorimeter/TileRecUtils/test/TileDQstatusAlg_test.sh create mode 100755 TileCalorimeter/TileRecUtils/test/TileDQstatusTool_test.sh diff --git a/TileCalorimeter/TileEvent/TileEvent/TileDQstatus.h b/TileCalorimeter/TileEvent/TileEvent/TileDQstatus.h index 8400b18a6d3..bb086fbaa24 100644 --- a/TileCalorimeter/TileEvent/TileEvent/TileDQstatus.h +++ b/TileCalorimeter/TileEvent/TileEvent/TileDQstatus.h @@ -20,7 +20,7 @@ class TileBeamInfoProvider; -class TileDQstatusAlg; +class TileDQstatusTool; class TileRawChannelCollection; class TileDigitsContainer; class MsgStream; @@ -48,7 +48,7 @@ class TileDQstatus { //FIXME: Remove friend class TileBeamInfoProvider; - friend class TileDQstatusAlg; + friend class TileDQstatusTool; public: @@ -159,6 +159,8 @@ public: int trigType() const { return m_trigType; } void setTrigType (int trigType); + uint32_t RODBCID() const {return m_BCID;} + protected: diff --git a/TileCalorimeter/TileRecUtils/CMakeLists.txt b/TileCalorimeter/TileRecUtils/CMakeLists.txt index 46d7d2f5bfe..67d822afb76 100644 --- a/TileCalorimeter/TileRecUtils/CMakeLists.txt +++ b/TileCalorimeter/TileRecUtils/CMakeLists.txt @@ -73,3 +73,15 @@ atlas_add_test( TileRawChannelBuilder_test PROPERTIES TIMEOUT 600 EXTRA_PATTERNS "LArDetectorToolNV|is still valid|no data retrieved|Database being retired|Reading file|Unable to locate catalog|Resolved path|DigitizationFlags|^Domain|created CondCont|no dictionary for class|^ +[+]|Reading LArPedestalMC|IOV callback|^DetectorStore|TileDetectorTool|Creating TileCondProxyFile|Cache alignment" ) + +atlas_add_test( TileDQstatusAlg_test + SCRIPT test/TileDQstatusAlg_test.sh + PROPERTIES TIMEOUT 600 + EXTRA_PATTERNS "LArDetectorToolNV|is still valid|no data retrieved|Database being retired|Reading file|Unable to locate catalog|Resolved path|DigitizationFlags|^Domain|created CondCont|no dictionary for class|^ +[+]|Reading LArPedestalMC|IOV callback|^DetectorStore|TileDetectorTool|Creating TileCondProxyFile|Cache alignment" ) + + +atlas_add_test( TileDQstatusTool_test + SCRIPT test/TileDQstatusTool_test.sh + PROPERTIES TIMEOUT 600 + EXTRA_PATTERNS "LArDetectorToolNV|is still valid|no data retrieved|Database being retired|Reading file|Unable to locate catalog|Resolved path|DigitizationFlags|^Domain|created CondCont|no dictionary for class|^ +[+]|Reading LArPedestalMC|IOV callback|^DetectorStore|TileDetectorTool|Creating TileCondProxyFile|Cache alignment" ) + diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/ITileDQstatusTool.h b/TileCalorimeter/TileRecUtils/TileRecUtils/ITileDQstatusTool.h new file mode 100644 index 00000000000..df85ae0b74a --- /dev/null +++ b/TileCalorimeter/TileRecUtils/TileRecUtils/ITileDQstatusTool.h @@ -0,0 +1,56 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. +/* + * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration. + */ +/** + * @file TileRecUtils/ITileDQstatusTool.h + * @author scott snyder <snyder@bnl.gov> + * @date Nov, 2018 + * @brief Interface for building TileDQstatus object. + */ + + +#ifndef TILERECUTILS_ITILEDQSTATUSTOOL_H +#define TILERECUTILS_ITILEDQSTATUSTOOL_H + + +#include "GaudiKernel/IAlgTool.h" +#include "GaudiKernel/StatusCode.h" + + +class TileRawChannelContainer; +class TileDigitsContainer; +class TileBeamElemContainer; +class TileDQstatus; +class EventContext; + + +/*** + * @brief Interface for building TileDQstatus object. + */ +class ITileDQstatusTool + : virtual public IAlgTool +{ +public: + DeclareInterfaceID (ITileDQstatusTool, 1, 0); + + + /** + * @brief Make a new TileDQstatus object. + * @param ctx Event context. + * @param rawChannelContainer The TileRawChannelContainer (may be null). + * @param tileDigitsContainer The TileDigitsContainer (may be null). + * @param tileBeamElemContainer The TileBeamElemContainer (may be null). + * @param[out] dqstatus TileDQstatus object to fill. + */ + virtual + StatusCode + makeStatus (const EventContext& ctx, + const TileRawChannelContainer* rawChannelContainer, + const TileDigitsContainer* tileDigitsContainer, + const TileBeamElemContainer* tileBeamElemContainer, + TileDQstatus& dqstatus) = 0; +}; + + +#endif // not TILERECUTILS_ITILEDQSTATUSTOOL_H diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRecUtilsDict.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRecUtilsDict.h index 09fe45882e2..03f25f8874f 100644 --- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRecUtilsDict.h +++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRecUtilsDict.h @@ -16,6 +16,7 @@ // Needed for tests. #include "TileRecUtils/TileBeamInfoProvider.h" +#include "TileRecUtils/ITileDQstatusTool.h" #include "TileRecUtils/TileRawChannelBuilder.h" diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/selection.xml b/TileCalorimeter/TileRecUtils/TileRecUtils/selection.xml index 4a430bef197..e06ba32da19 100644 --- a/TileCalorimeter/TileRecUtils/TileRecUtils/selection.xml +++ b/TileCalorimeter/TileRecUtils/TileRecUtils/selection.xml @@ -1,4 +1,6 @@ <lcgdict> <class name="TileBeamInfoProvider"/> + <class name="ITileDQstatusTool"/> <class name="TileRawChannelBuilder"/> </lcgdict> + diff --git a/TileCalorimeter/TileRecUtils/python/TileDQstatusAlgDefault.py b/TileCalorimeter/TileRecUtils/python/TileDQstatusAlgDefault.py new file mode 100644 index 00000000000..12e6b4b3c29 --- /dev/null +++ b/TileCalorimeter/TileRecUtils/python/TileDQstatusAlgDefault.py @@ -0,0 +1,56 @@ +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration. +# +# @file TileRecUtils/python/TileDQstatusAlgDefault.py +# @author scott snyder <snyder@bnl.gov> +# @date Nov, 2018 +# @brief Configure TileDQstatusAlg +# + +from TileRecUtils.TileRecUtilsConf import TileDQstatusAlg + + +def _updateProp (dq, name, val): + if dq.properties()[name] == dq.propertyNoValue or getattr (dq, name) == '': + setattr (dq, name, val) + return + if val == '': + return + oval = getattr (dq, name) + if oval == val: return + if oval.find ('ServiceHandle') >= 0 or oval.find ('ToolHandle') >= 0: + setattr (dq, name, val) + return + from AthenaCommon.Logging import logging + log = logging.getLogger ('TileDQstatusAlgDefault') + log.error ('Conflicting settings for %s.%s; old: %s; new: %s' % + (dq.name(), name, oval, val)) + import traceback + traceback.print_stack() + assert 0 + + +def TileDQstatusAlgDefault (name = 'TileDQstatusAlg', + TileRawChannelContainer = '', + TileDigitsContainer = '', + TileBeamElemContainer = '', + TileDQstatus = 'TileDQstatus', + **kw): + from AthenaCommon.AlgSequence import AlgSequence + topSequence = AlgSequence() + dq = getattr (topSequence, name, None) + if not dq: + dq = TileDQstatusAlg (name, + TileRawChannelContainer = TileRawChannelContainer, + TileDigitsContainer = TileDigitsContainer, + TileBeamElemContainer = TileBeamElemContainer, + TileDQstatus = TileDQstatus, + **kw) + topSequence += dq + else: + _updateProp (dq, 'TileRawChannelContainer', TileRawChannelContainer) + _updateProp (dq, 'TileDigitsContainer', TileDigitsContainer) + _updateProp (dq, 'TileBeamElemContainer', TileBeamElemContainer) + _updateProp (dq, 'TileDQstatus', TileDQstatus) + for (k, v) in kw.items(): + _updateProp (dq, k, v) + return dq diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.py b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.py new file mode 100644 index 00000000000..68a1ebd256f --- /dev/null +++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.py @@ -0,0 +1,369 @@ +# +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration. +# +# File: TileRecUtils/share/TileDQstatusAlg_test.py +# Author: sss +# Date: Sep, 2018 +# Brief: Test for TileDQstatusAlg. +# + +from __future__ import print_function + + +import ROOT +ROOT.TH1F + +from AthenaCommon.DetFlags import DetFlags +DetFlags.detdescr.Tile_setOn() +DetFlags.detdescr.LAr_setOn() + +RunNumber = 284500 + +import sys +import string +import ROOT +import math +from AtlasGeoModel import SetGeometryVersion +from AtlasGeoModel import GeoModelInit +from AtlasGeoModel import SetupRecoGeometry +include('TileConditions/TileConditions_jobOptions.py') + +from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +ServiceMgr += GeoModelSvc() +theApp.CreateSvc += [ "GeoModelSvc"] +from AtlasGeoModel import TileGM +from AtlasGeoModel import LArGM #LAr needed to get MBTS DD. + +from IOVDbSvc.IOVDbSvcConf import IOVDbSvc +IOVDbSvc().GlobalTag = 'OFLCOND-RUN12-SDR-35' + +from AthenaCommon.AlgSequence import AlgSequence +topSequence = AlgSequence() + +theApp.EvtMax=2 + + +from AthenaPython.PyAthenaComps import Alg, StatusCode + + +############################################################################ + + +# TileFragHash::TYPE +class TileFragHash: + Beam = 255 + Default = 0 + Digitizer = 0 + OptFilterDsp = 1 + OptFilterOffline = 2 + OptFilterDspCompressed = 3 + ManyAmps = 4 + MF = 5 + FitFilter = 6 + FitFilterCool = 7 + FlatFilter = 8 + + +BEAM_TDC_FRAG = 0x000 +BEAM_ADC_FRAG = 0x001 +MUON_ADC_FRAG = 0x002 +ADDR_ADC_FRAG = 0x003 +LASE_PTN_FRAG = 0x004 +LASE_ADC_FRAG = 0x005 +ADD_FADC_FRAG = 0x006 +ECAL_ADC_FRAG = 0x007 +DIGI_PAR_FRAG = 0x0ff + + +hits_0 = [ + # (sec, side, mod, tow, samp, pmt, adc), [adc, time, qual, ped] + [0, [ + [(1, 1, 0, 1, 1, 0, 1), [ 0.2, 22.1, 2.4, 42.9]], + [(1, 1, 0, 1, 1, 1, 1), [-0.4, 75.0, 2.7, 31.4]], + [(1, 1, 0, 1, 0, 0, 1), [-0.9, -13.3, 1.5, 37.4]], + [(1, 1, 0, 2, 0, 1, 1), [41.8, 0.1, 2.5, 45.7]], + [(1, 1, 0, 2, 0, 0, 1), [30.6, -0.4, 2.0, 33.1]], + [(1, 1, 0, 2, 1, 1, 1), [ 1.4, 12.9, 4.7, 43.1]], + [(1, 1, 0, 2, 1, 0, 1), [ 3.4, 3.5, 1.9, 54.2]], + ]], + + [136, [ + [(3, 1, 8, 13, 3, 0, 1), [26.9, 4.8, 5.2, 45.4]], + ]], + + [146, [ + [(3, 1, 18, 13, 3, 0, 1), [ 4.4, -26.5, 23.9, 51.2]], + [(3, 1, 18, 15, 3, 0, 1), [-0.1, -75.0, 3.7, 51.0]], + [(3, 1, 18, 8, 2, 0, 1), [-0.1, 75.0, 4.2, 41.7]], + [(3, 1, 18, 8, 2, 1, 1), [ 3.5, -11.9, 2.6, 44.7]], + [(3, 1, 18, 9, 1, 0, 1), [ 0.8, -17.6, 1.8, 49.2]], + [(3, 1, 18, 9, 1, 1, 1), [ 0.1, -75.0, 3.4, 48.4]], + [(2, 1, 18, 11, 0, 0, 1), [ 8.7, 0.4, 2.7, 50.2]], + [(2, 1, 18, 11, 0, 1, 1), [ 6.3, 1.9, 1.6, 48.6]], + [(2, 1, 18, 10, 1, 0, 1), [53.3, 1.3, 3.8, 38.4]], + [(2, 1, 18, 10, 1, 1, 1), [64.1, 1.0, 3.5, 36.9]], + [(2, 1, 18, 12, 0, 0, 1), [-0.2, -75.0, 2.8, 38.1]], + [(2, 1, 18, 12, 0, 1, 1), [ 0.5, -32.7, 1.9, 40.3]], + [(3, 1, 18, 10, 3, 0, 1), [ 5.4, 7.7, 8.2, 57.0]], + [(3, 1, 18, 11, 3, 0, 1), [48.9, 0.4, 4.0, 32.3]], + [(2, 1, 18, 11, 1, 0, 1), [38.5, 0.5, 1.7, 46.8]], + [(2, 1, 18, 11, 1, 1, 1), [48.1, 0.3, 1.6, 46.3]], + [(2, 1, 18, 10, 2, 0, 1), [ 0.3, 75.0, 2.0, 34.9]], + [(2, 1, 18, 10, 2, 1, 1), [0.1, -75.0, 3.7, 54.7]], + ]], + + # Some MBTS cells. + [135, [ [(4, 1, 0, 1, 0, 0, 0), [ 59.1, 2.8, 6.9, 56.2]] ]], + [181, [ [(4, 1, 6, 1, 0, 0, 0), [ 56.4, 1.2, 2.9, 39.9]] ]], + [182, [ [(4, 1, 6, 0, 0, 0, 0), [ 44.9, 0.5, 1.4, 42.1]] ]], + [231, [ [(4, -1, 3, 0, 0, 0, 0), [107.9, 1.7, 7.8, 47.8]] ]], + + # Some E4 cells. + [220, [ [(4, -1, 0, 2, 0, 0, 0), [ 2.3, 3.2, 2.5, 44.4]] ]], + [223, [ [(4, -1, 1, 2, 0, 0, 0), [ 3.1, -5.3, 2.4, 44.4]] ]], + [225, [ [(4, -1, 2, 2, 0, 0, 0), [ -0.4, 27.6, 1.3, 32.5]] ]], + [228, [ [(4, -1, 3, 2, 0, 0, 0), [ 0.2, -75.0, 2.4, 35.4]] ]], + + # Some disconnected cells. + [253, [ + [4706026383833300992, [ 0, 0, 0, 50000]], + [4706027483344928768, [ 0, 0, 0, 50000]] ], ], + [255, [ + [4706157225717006336, [ 0, 0, 0, 80000]], + [4706158325228634112, [ 0, 0, 0, 80000]] ], ], +] + + +############################################################################ + + +# Record test data to SG. +class RecordAlg (Alg): + def __init__ (self, name, + rc_key, digits_key, be_key=''): + Alg.__init__ (self, name) + self.rc_key = rc_key + self.rc_hits = hits_0 + self.rc_typ = TileFragHash.OptFilterOffline + #self.rc_typ = TileFragHash.OptFilterDsp + self.rc_baddq = {} + #self.rc_baddq = {146 : [2, 10]} + + self.digits_key = digits_key + self.digits_incomplete = False + self.digits_isCalib = False + + self.be_key = be_key + self.be_frag = LASE_PTN_FRAG + return + + + def initialize (self): + return StatusCode.Success + + + def execute (self): + if not self.record_raw_data (self.rc_key, + self.rc_hits, + self.rc_typ, + self.rc_baddq): + return StatusCode.Failure + + if not self.record_digits (self.digits_key, + self.digits_incomplete, + self.digits_isCalib): + return StatusCode.Failure + + if self.be_key != '': + if not self.record_beamelem (self.be_key, self.be_frag): + return StatusCode.Failure + return StatusCode.Success + + + def record_raw_data (self, key, hits, typ, baddq): + idHelper = self.detStore['CaloCell_ID'].tile_idHelper() + + unit = 0 # TileRawChannelUnit::ADCcounts + cont = ROOT.TileRawChannelContainer (False, typ, unit) + cont.set_bsflags (0x32002000) + hashFunc = cont.hashFunc() + + for icoll, colldata in hits: + coll = ROOT.TileRawChannelCollection (hashFunc.identifier(icoll)) + + mask = 0 + for chan in baddq.get (icoll, []): + mask |= (1<<(chan/3)) + coll.setFragMemoryPar(mask) + + for addr, data in colldata: + if type(addr) == type(()): + adc_id = idHelper.adc_id (*addr) + chan = ROOT.TileRawChannel (adc_id, *data) + else: + hwid = ROOT.HWIdentifier (addr) + chan = ROOT.TileRawChannel (hwid, *data) + coll.push_back (chan) + + cont.addCollection (coll, ROOT.IdentifierHash(icoll)) + ROOT.SetOwnership (coll, False) + + return self.evtStore.record (cont, key, False) + + + def record_digits (self, key, incomplete, isCalib): + cont = ROOT.TileDigitsContainer() + hashFunc = cont.hashFunc() + hwidHelper = self.detStore['TileHWID'] + + emptyfrag = (3, 13) # ros, drawer + for frag in [(1, 3), emptyfrag]: + id = hwidHelper.frag (*frag) + coll = ROOT.TileDigitsCollection (id) + + if frag == emptyfrag: + v = getattr(ROOT,'vector<unsigned>')() + v.resize(16) + v[3] = 0xffffffff + v[9] = 0xffffffff + v[12] = 0xffffffff + coll.setFragChipHeaderWords (v) + + + if frag == emptyfrag and incomplete: + ndig = 10 + elif frag == emptyfrag and isCalib: + ndig = 96 + else: + ndig = 48 + + digits = getattr(ROOT,'vector<float>')() + digits.resize (12); + for idig in range(ndig): + dig = ROOT.TileDigits(ROOT.HWIdentifier(), digits) + coll.push_back (dig) + + cont.addCollection (coll, ROOT.IdentifierHash (hashFunc(id))) + ROOT.SetOwnership (coll, False) + return self.evtStore.record (cont, key, False) + + + def record_beamelem (self, key, frag): + cont = ROOT.TileBeamElemContainer() + hashFunc = cont.hashFunc() + + coll = ROOT.TileBeamElemCollection (frag) + coll.setLvl1Type (123) + + if frag == LASE_PTN_FRAG: + v = getattr(ROOT,'vector<unsigned>')() + v.resize(16) + v[0] = (23 << 8) + elem = ROOT.TileBeamElem (ROOT.Identifier(), v) + coll.push_back (elem) + + elif frag == DIGI_PAR_FRAG: + coll.setRODBCID (11) + hwidHelper = self.detStore['TileHWID'] + + def id (cha): + ros = 1 + drawer = 1 + adc = 0 + return hwidHelper.adc_id (ros, drawer, cha, adc) + + for cha in range(15): + hwid = id(cha) + elem = ROOT.TileBeamElem (hwid, cha + 100) + coll.push_back (elem) + + hwid = id(15) + v = getattr(ROOT,'vector<unsigned>')() + v.resize(10) + for i in range(10): + v[i] = 111 + i + v[1] = 2 + v[2] = 0x08070605 + elem = ROOT.TileBeamElem (hwid, v) + coll.push_back (elem) + + elif frag == LASER_OBJ_FRAG: + coll.setRODBCID (11) + + + cont.addCollection (coll, ROOT.IdentifierHash (frag)) + ROOT.SetOwnership (coll, False) + + return self.evtStore.record (cont, key, False) + + +############################################################################ + + +# Check results. +class CheckAlg (Alg): + def __init__ (self, name, dq_key): + Alg.__init__ (self, name) + self.dq_key = dq_key + return + + + def initialize (self): + return StatusCode.Success + + + def execute (self): + dq = self.evtStore[self.dq_key] + + assert dq.isFilled() == True + assert dq.isBiGain() == False + assert dq.nonZeroCounter() == True + assert dq.incompleteDigits() == False + assert dq.calibMode() == 0 + assert dq.trigType() == 0 + + self.check_empty (dq) + + #cispar + #isAdcDQgood + #isChanDQgood + #checkGlobalErr + #checkGlobalCRCErr + #checkROD_CRCErr + #checkFE_CRCErr + #checkBCIDErr + #checkBCIDErrDetail + #checkHeaderFormatErr + #checkHeaderParityErr + #checkSampleFormatErr + #checkSampleParityErr + #checkMemoryParityErr + #checkSingleStrobeErr + #checkDoubleStrobeErr + return StatusCode.Success + + + def check_empty (self, dq): + for part in range(5): + for drawer in range(64): + for dmu in range (16): + is_empty = (part==3 and drawer==13 and + dmu in [3, 9, 12]) + assert dq.checkEmptyEvent(part, drawer, dmu) == is_empty + return + + +############################################################################ + +from TileRecUtils.TileRecUtilsConf import TileDQstatusAlg + +record1 = RecordAlg ('record1', + 'RC1', 'Dig1') +topSequence += record1 +alg1 = TileDQstatusAlg ('alg1', + TileRawChannelContainer = 'RC1', + TileDigitsContainer = 'Dig1', + TileDQstatus = 'DQ1') +topSequence += alg1 +check1 = CheckAlg ('check1', 'DQ1') +topSequence += check1 diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref new file mode 100644 index 00000000000..091dcc7ab31 --- /dev/null +++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref @@ -0,0 +1,468 @@ +Mon Nov 19 18:16:20 CET 2018 +Preloading tcmalloc_minimal.so +Py:Athena INFO including file "AthenaCommon/Preparation.py" +Py:Athena INFO using release [WorkDir-22.0.1] [x86_64-slc6-gcc62-opt] [atlas-work3h/b5d888be63e] -- built on [2018-11-19T1802] +Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" +Py:Athena INFO executing ROOT6Setup +Py:Athena INFO including file "AthenaCommon/Execution.py" +Py:Athena INFO including file "TileRecUtils/TileDQstatusAlg_test.py" +[?1034hSetGeometryVersion.py obtained major release version 22 +Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" +Py:ConfigurableDb INFO Read module info for 5415 configurables from 8 genConfDb files +Py:ConfigurableDb INFO No duplicates have been found: that's good ! +EventInfoMgtInit: Got release version Athena-22.0.1 +Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 +Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" +Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr +Py:TileConditions_jobOptions.py INFO Forcing RUN2 (2014-2017) cabling for run 284500 with geometry ATLAS-R2-2016-01-00-01 +Py:TileConditions_jobOptions.py INFO Adjusting TileInfo for 7 samples +Py:TileConditions_jobOptions.py INFO setting up COOL for TileCal conditions data +Py:TileInfoConf. INFO Changing default TileBadChanTool configuration to COOL source +Py:TileInfoConf. INFO Changing default TileBadChanLegacyTool configuration to COOL source +Py:TileInfoConf. INFO Changing default TileCondToolEmscale configuration to COOL source +Py:TileInfoConf. INFO Changing default TileCondToolNoiseSample configuration to COOL source +Py:TileInfoConf. INFO Changing default TileCondToolTiming configuration to COOL source +Py:TileConditions_jobOptions.py INFO Adjusting TileInfo to return cell noise for Opt.Filter without iterations +Py:Athena INFO including file "AthenaCommon/runbatch.py" +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to ApplicationMgr (GaudiCoreSvc v30r4) + running on lxplus056.cern.ch on Mon Nov 19 18:17:38 2018 +==================================================================================================================================== +ApplicationMgr INFO Successfully loaded modules : AthenaServices +ApplicationMgr INFO Application Manager Configured successfully +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +StatusCodeSvc INFO initialize +AthDictLoaderSvc INFO in initialize... +AthDictLoaderSvc INFO acquired Dso-registry +ClassIDSvc INFO getRegistryEntries: read 6946 CLIDRegistry entries for module ALL +CoreDumpSvc INFO install f-a-t-a-l handler... (flag = -1) +CoreDumpSvc INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) +MetaDataSvc INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00 +AthenaPoolCnvSvc INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00 +PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok] +PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled +PoolSvc INFO Frontier compression level set to 5 +DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://lcgft-atlas.gridpp.rl.ac.uk:3128/frontierATLAS)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy-wigner.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host lxplus056.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +PoolSvc INFO Successfully setup replica sorting algorithm +PoolSvc INFO Setting up APR FileCatalog and Streams +PoolSvc WARNING Unable to locate catalog for prfile:poolcond/PoolCat_oflcond.xml check your ATLAS_POOLCOND_PATH and DATAPATH variables +PoolSvc WARNING Unable to locate catalog for apcfile:poolcond/PoolCat_oflcond.xml check your ATLAS_POOLCOND_PATH and DATAPATH variables +PoolSvc INFO Resolved path (via ATLAS_POOLCOND_PATH) is /cvmfs/atlas-condb.cern.ch/repo/conditions/poolcond/PoolFileCatalog.xml +PoolSvc INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml +DbSession INFO Open DbSession +Domain[ROOT_All] INFO > Access DbDomain READ [ROOT_All] +IOVDbSvc INFO Opened read transaction for POOL PersistencySvc +IOVDbSvc INFO Only 5 POOL conditions files will be open at once +IOVDbSvc INFO Cache alignment will be done in 3 slices +IOVDbSvc INFO Global tag: OFLCOND-RUN12-SDR-35 set from joboptions +IOVDbSvc INFO Read from meta data only for folder /TagInfo +IOVDbSvc INFO Initialised with 3 connections and 14 folders +IOVDbSvc INFO Service IOVDbSvc initialised successfully +IOVDbSvc INFO preLoadAddresses: Removing folder /TagInfo. It should only be in the file meta data and was not found. +IOVDbSvc INFO Opening COOL connection for COOLOFL_LAR/OFLP200 +IOVSvc INFO No IOVSvcTool associated with store "StoreGateSvc" +IOVSvcTool INFO IOVRanges will be checked at every Event +IOVDbSvc INFO Opening COOL connection for COOLOFL_TILE/OFLP200 +IOVDbSvc INFO Disconnecting from COOLOFL_LAR/OFLP200 +IOVDbSvc INFO Disconnecting from COOLOFL_TILE/OFLP200 +IOVDbSvc INFO Added taginfo remove for /LAR/Align +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/CES +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/CIS/FIT/LIN +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/CIS/FIT/NLN +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/EMS +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/FIBER +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/LIN +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/NLN +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/NOISE/SAMPLE +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/STATUS/ADC +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/TIME/CHANNELOFFSET/PHY +IOVDbSvc INFO Added taginfo remove for /TILE/ONL01/STATUS/ADC +IOVDbSvc INFO Added taginfo remove for /LAR/LArCellPositionShift +ClassIDSvc INFO getRegistryEntries: read 1917 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 17 CLIDRegistry entries for module ALL +DetDescrCnvSvc INFO initializing +DetDescrCnvSvc INFO Found DetectorStore service +DetDescrCnvSvc INFO filling proxies for detector managers +DetDescrCnvSvc INFO filling address for CaloTTMgr with CLID 117659265 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloMgr with CLID 4548337 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloSuperCellMgr with CLID 241807251 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloIdManager with CLID 125856940 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArIdManager with CLID 79554919 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for IdDict with CLID 2411 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for AtlasID with CLID 164875623 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for PixelID with CLID 2516 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for SCT_ID with CLID 2517 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TRT_ID with CLID 2518 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for SiliconID with CLID 129452393 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArEM_ID with CLID 163583365 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArEM_SuperCell_ID with CLID 99488227 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArHEC_ID with CLID 3870484 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArHEC_SuperCell_ID with CLID 254277678 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArFCAL_ID with CLID 45738051 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArFCAL_SuperCell_ID with CLID 12829437 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArMiniFCAL_ID with CLID 79264204 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArOnlineID with CLID 158698068 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TTOnlineID with CLID 38321944 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArOnline_SuperCellID with CLID 115600394 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArHVLineID with CLID 27863673 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArElectrodeID with CLID 80757351 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TileID with CLID 2901 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for Tile_SuperCell_ID with CLID 49557789 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TileHWID with CLID 2902 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TileTBID with CLID 2903 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for MDTIDHELPER with CLID 4170 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CSCIDHELPER with CLID 4171 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for RPCIDHELPER with CLID 4172 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TGCIDHELPER with CLID 4173 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for STGCIDHELPER with CLID 4174 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for MMIDHELPER with CLID 4175 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloLVL1_ID with CLID 108133391 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloCell_ID with CLID 123500438 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloCell_SuperCell_ID with CLID 128365736 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloDM_ID with CLID 167756483 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for ZdcID with CLID 190591643 and storage type 68 to detector store +GeoModelSvc::RD...WARNING Getting PixTBMatComponents with default tag +GeoModelSvc::RD...WARNING Getting PixTBMaterials with default tag +GeoModelSvc::RD...WARNING Getting InDetMatComponents with default tag +GeoModelSvc::RD...WARNING Getting InDetMaterials with default tag +GeoModelSvc.LAr... INFO Keys for LAr are ATLAS-R2-2016-01-00-01 ATLAS +GeoModelSvc.LAr... INFO Building LAr version LAr-Revised-17-01 while ATLAS version is ATLAS-R2-2016-01-00-01 +GeoModelSvc.LAr... INFO LAr Geometry Options: +GeoModelSvc.LAr... INFO Sagging = false +GeoModelSvc.LAr... INFO Barrel = ON +GeoModelSvc.LAr... INFO Endcap = ON +BarrelConstruction INFO Getting primary numbers for ATLAS, ATLAS-R2-2016-01-00-01 +BarrelConstruction INFO Makes detailed absorber sandwich ? 1 1 +BarrelConstruction INFO Use sagging in geometry ? 0 +============== EMEC Construction =============== + multi-layered version of absorbers activated, mlabs == 1 +================================================ +EventPersistenc... INFO Added successfully Conversion service:DetDescrCnvSvc +ClassIDSvc INFO getRegistryEntries: read 2398 CLIDRegistry entries for module ALL +CaloIDHelper_ID... INFO in createObj: creating a TileTBID helper object in the detector store +IdDictDetDescrCnv INFO in initialize +IdDictDetDescrCnv INFO in createObj: creating a IdDictManager object in the detector store +IdDictDetDescrCnv INFO IdDictName: IdDictParser/ATLAS_IDS.xml +IdDictDetDescrCnv INFO Reading InnerDetector IdDict file InDetIdDictFiles/IdDictInnerDetector_IBL3D25-03.xml +IdDictDetDescrCnv INFO Reading LArCalorimeter IdDict file IdDictParser/IdDictLArCalorimeter_DC3-05-Comm-01.xml +IdDictDetDescrCnv INFO Reading TileCalorimeter IdDict file IdDictParser/IdDictTileCalorimeter.xml +IdDictDetDescrCnv INFO Reading Calorimeter IdDict file IdDictParser/IdDictCalorimeter_L1Onl.xml +IdDictDetDescrCnv INFO Reading MuonSpectrometer IdDict file IdDictParser/IdDictMuonSpectrometer_R.03.xml +IdDictDetDescrCnv INFO Reading ForwardDetectors IdDict file IdDictParser/IdDictForwardDetectors_2010.xml +IdDictDetDescrCnv INFO Found id dicts: +IdDictDetDescrCnv INFO Using dictionary tag: null +IdDictDetDescrCnv INFO Dictionary ATLAS version default DetDescr tag (using default) file +IdDictDetDescrCnv INFO Dictionary Calorimeter version default DetDescr tag CaloIdentifier-LVL1-02 file IdDictParser/IdDictCalorimeter_L1Onl.xml +IdDictDetDescrCnv INFO Dictionary ForwardDetectors version default DetDescr tag ForDetIdentifier-01 file IdDictParser/IdDictForwardDetectors_2010.xml +IdDictDetDescrCnv INFO Dictionary InnerDetector version IBL-DBM DetDescr tag InDetIdentifier-IBL3D25-02 file InDetIdDictFiles/IdDictInnerDetector_IBL3D25-03.xml +IdDictDetDescrCnv INFO Dictionary LArCalorimeter version fullAtlas DetDescr tag LArIdentifier-DC3-05-Comm file IdDictParser/IdDictLArCalorimeter_DC3-05-Comm-01.xml +IdDictDetDescrCnv INFO Dictionary LArElectrode version fullAtlas DetDescr tag (using default) file +IdDictDetDescrCnv INFO Dictionary LArHighVoltage version fullAtlas DetDescr tag (using default) file +IdDictDetDescrCnv INFO Dictionary MuonSpectrometer version R.03 DetDescr tag MuonIdentifier-08 file IdDictParser/IdDictMuonSpectrometer_R.03.xml +IdDictDetDescrCnv INFO Dictionary TileCalorimeter version fullAtlasAndTestBeam DetDescr tag TileIdentifier-00 file IdDictParser/IdDictTileCalorimeter.xml +TileTBID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +EndcapDMConstru... INFO Start building EC electronics geometry +============== EMEC Construction =============== + multi-layered version of absorbers activated, mlabs == 1 +================================================ +EndcapDMConstru... INFO Start building EC electronics geometry +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 22956Kb Time = 0.73S +GeoModelSvc.Til... INFO Entering TileDetectorTool::create() +TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 +TileDddbManager INFO n_tiglob = 5 +TileDddbManager INFO n_timod = 320 +TileDddbManager INFO n_cuts = 9 +TileDddbManager INFO n_saddle = 1 +TileDddbManager INFO n_tilb = 21 +TileDddbManager INFO n_tileSwitches = 1 +ClassIDSvc INFO getRegistryEntries: read 213 CLIDRegistry entries for module ALL +CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/TileNeighbour_reduced.txt +TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store +TileHWID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +ClassIDSvc INFO getRegistryEntries: read 55 CLIDRegistry entries for module ALL +CaloIDHelper_ID... INFO in createObj: creating a CaloCell_ID helper object in the detector store +CaloIDHelper_ID... INFO in createObj: creating a LArEM_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCal3DNeighborsPrev-April2011.txt +CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. +AtlasDetectorID INFO initialize_from_dictionary - OK +GeoModelSvc.Til... INFO U-shape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() +GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx +GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 +GeoModelSvc.Til... INFO => New BFingerLengthNeg 420.5 +GeoModelSvc.Til... INFO Positioning barrel with translation 0 +GeoModelSvc.Til... INFO Positioning positive barrel finger with translation 3035.25 +GeoModelSvc.Til... INFO Positioning negative barrel finger with translation -3030.25 +GeoModelSvc.Til... INFO Positioning positive ext.barrel with translation 4854.75 +GeoModelSvc.Til... INFO Positioning positive ext.barrel finger with translation ztrans= 6338.5 +GeoModelSvc.Til... INFO Positioning positive ext.barrel saddle with translation ztrans= 6192.5 +GeoModelSvc.Til... INFO Positive ITC envelope parameters: PLUG1 Rmin= 3438.85 Rmax= 4250 dzITC1= 154.5 +GeoModelSvc.Til... INFO PLUG2 Rmin= 2981 Rmax= 3440 dzITC2= 47.425 +GeoModelSvc.Til... INFO Positioning positive ITC with translation 3405 +GeoModelSvc.Til... INFO Positioning positive Gap with translation 3552 +GeoModelSvc.Til... INFO Positioning positive Crack with translation 3536 +GeoModelSvc.Til... INFO Positioning negative ext.barrel with translation ztrans -4854.75 +GeoModelSvc.Til... INFO Positioning negative ext.barrel finger with translation ztrans= -6338.5 +GeoModelSvc.Til... INFO Positioning negative ext.barrel saddle with translation ztrans= -6192.5 +GeoModelSvc.Til... INFO Negative ITC envelope parameters: PLUG1 Rmin= 3438.85 Rmax= 4250 dzITC1= 154.5 +GeoModelSvc.Til... INFO PLUG2 Rmin= 2981 Rmax= 3440 dzITC2= 47.425 +GeoModelSvc.Til... INFO Positioning negative ITC with translation -3405 +GeoModelSvc.Til... INFO Positioning negative Gap with translation -3552 +GeoModelSvc.Til... INFO Positioning negative Crack with translation -3536 +GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) and translation (0,0,0) CLHEP::cm +GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) CLHEP::cm +GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) CLHEP::cm +TileDetDescrMan... INFO Entering create_elements() +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4596Kb Time = 0.24S +ClassIDSvc INFO getRegistryEntries: read 65 CLIDRegistry entries for module ALL +TileInfoLoader INFO Initializing....TileInfoLoader +TileInfoLoader INFO New ATLAS geometry detected: ATLAS-R2-2016-01-00-01 (010001) version 10001 +TileInfoLoader INFO Changing TTL1 calib from 4.1 to 6.9 +TileInfoLoader INFO Changing TTL1 noise sigma from 2.5 to 2.8 +TileInfoLoader INFO ATLAS IBL geometry - special sampling fractions for gap/crack scin are allowed +TileInfoLoader INFO Special C10 in EB module 39 +TileInfoLoader INFO Special C10 in EB module 40 +TileInfoLoader INFO Special C10 in EB module 41 +TileInfoLoader INFO Special C10 in EB module 42 +TileInfoLoader INFO Special C10 in EB module 55 +TileInfoLoader INFO Special C10 in EB module 56 +TileInfoLoader INFO Special C10 in EB module 57 +TileInfoLoader INFO Special C10 in EB module 58 +TileInfoLoader INFO Sampling fraction for normal cells 1/34 +TileInfoLoader INFO Sampling fraction for special C10 cells 1/45 +TileInfoLoader INFO Sampling fraction for E1 cells 1/125 +TileInfoLoader INFO Sampling fraction for E2 cells 1/107 +TileInfoLoader INFO Sampling fraction for E3 cells 1/97 +TileInfoLoader INFO Sampling fraction for E4 cells 1/75 +TileInfoLoader INFO Sampling fraction for E4' cells 1/75 +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulsehi_physics.dat +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulselo_physics.dat +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulse_adder_tower_physics.dat +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulse_adder_muonRcv_physics.dat +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulse_adder_muon_physics.dat +CaloIDHelper_ID... INFO in createObj: creating a CaloLVL1_ID helper object in the detector store +CaloLVL1_ID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +TileCablingSvc INFO RUN2 ATLAS geometry flag detected for geometry: ATLAS-R2-2016-01-00-01 +TileCablingSvc INFO Cabling for RUN2 (2014-2017) ATLAS geometry is set via jobOptions +TileCablingSvc INFO Setting Cabling type to 4 +TileInfoLoader INFO Placed TileInfo object in the detector store. +ToolSvc.TileBad... INFO Creating TileCondProxyCool(ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OnlBch) for folder: "/TILE/ONL01/STATUS/ADC" +IOVSvcTool INFO Still in initialize phase, not tiggering callback for TileCondProxyCool<TileCalibDrawerBch>[0x19267700]+7fae0477c710 bound to CondAttrListCollection[/TILE/ONL01/STATUS/ADC] +ToolSvc.TileBad... INFO Creating TileCondProxyCool(ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OflBch) for folder: "/TILE/OFL02/STATUS/ADC" +IOVSvcTool INFO Still in initialize phase, not tiggering callback for TileCondProxyCool<TileCalibDrawerBch>[0x19266100]+7fae0477c710 bound to CondAttrListCollection[/TILE/OFL02/STATUS/ADC] +ToolSvc.TileBad... INFO ProxyOnlBch and ProxyOflBch will be used for bad channel status +IOVSvcTool INFO Still in initialize phase, not tiggering callback for TileBadChanLegacyTool[0x190d9000]+7fae04709150 bound to /TILE/ONL01/STATUS/ADC +IOVSvcTool INFO Still in initialize phase, not tiggering callback for TileBadChanLegacyTool[0x190d9000]+7fae04709150 bound to /TILE/OFL02/STATUS/ADC +AthenaEventLoopMgr INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00 +ClassIDSvc INFO getRegistryEntries: read 265 CLIDRegistry entries for module ALL +CondInputLoader INFO Initializing CondInputLoader... +CondInputLoader INFO Adding base classes: + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CES' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/EMS' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/STATUS/ADC' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/ONL01/STATUS/ADC' ) -> +CondInputLoader INFO Will create WriteCondHandle dependencies for the following DataObjects: + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CES' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/EMS' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/STATUS/ADC' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/ONL01/STATUS/ADC' ) +TileBadChannels... INFO Creating TileCondProxyCool(TileBadChannelsCondAlg.TileCondProxyCool_OnlBch) for folder: "/TILE/ONL01/STATUS/ADC" +TileBadChannels... INFO Creating TileCondProxyCool(TileBadChannelsCondAlg.TileCondProxyCool_OflBch) for folder: "/TILE/OFL02/STATUS/ADC" +TileBadChannels... INFO ProxyOnlBch and ProxyOflBch will be used for bad channel status +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCisLin) for folder: "/TILE/OFL02/CALIB/CIS/FIT/LIN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCisNln) for folder: "/TILE/OFL02/CALIB/CIS/FIT/NLN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasLin) for folder: "/TILE/OFL02/CALIB/LAS/LIN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasNln) for folder: "/TILE/OFL02/CALIB/LAS/NLN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasFib) for folder: "/TILE/OFL02/CALIB/LAS/FIBER" +TileEMScaleCondAlg INFO ProxyOflLasFib is set up and can be used +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCes) for folder: "/TILE/OFL02/CALIB/CES" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflEms) for folder: "/TILE/OFL02/CALIB/EMS" +TileEMScaleCondAlg INFO Undoing online calibration is not requested, since OnlCacheUnit= 'OnlCacheUnit':Invalid +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlCis) for folder: "/TILE/OFL02/CALIB/CIS/FIT/LIN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlLas) for folder: "/TILE/OFL02/CALIB/LAS/LIN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlCes) for folder: "/TILE/OFL02/CALIB/CES" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlEms) for folder: "/TILE/OFL02/CALIB/EMS" +TileSampleNoise... INFO Creating TileCondProxyCool(TileSampleNoiseCondAlg.TileCondProxyCool_NoiseSample) for folder: "/TILE/OFL02/NOISE/SAMPLE" +TileTimingCondA... INFO Creating TileCondProxyCool(TileTimingCondAlg.TileCondProxyCool_AdcOffset) for folder: "/TILE/OFL02/TIME/CHANNELOFFSET/PHY" +ClassIDSvc INFO getRegistryEntries: read 4762 CLIDRegistry entries for module ALL +PyComponentMgr INFO Initializing PyComponentMgr... +record1 INFO Initializing record1... +check1 INFO Initializing check1... +HistogramPersis...WARNING Histograms saving not required. +ApplicationMgr INFO Application Manager Initialized successfully +ClassIDSvc INFO getRegistryEntries: read 372 CLIDRegistry entries for module ALL +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CES' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/EMS' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/STATUS/ADC' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/ONL01/STATUS/ADC' +ApplicationMgr INFO Application Manager Started successfully +AthenaEventLoopMgr INFO ===>>> start of run 1 <<<=== +EventPersistenc... INFO Added successfully Conversion service:AthenaPoolCnvSvc +EventPersistenc... INFO Added successfully Conversion service:TagInfoMgr +ClassIDSvc INFO getRegistryEntries: read 109 CLIDRegistry entries for module ALL +IOVDbSvc INFO Opening COOL connection for COOLOFL_LAR/OFLP200 +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to LARAlign-IOVDEP-00 for folder /LAR/Align +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to LArCellPositionShift-ideal for folder /LAR/LArCellPositionShift +IOVDbSvc INFO Disconnecting from COOLOFL_LAR/OFLP200 +IOVDbSvc INFO Opening COOL connection for COOLOFL_TILE/OFLP200 +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCes-SIM-06 for folder /TILE/OFL02/CALIB/CES +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCisFitLin-COM-00 for folder /TILE/OFL02/CALIB/CIS/FIT/LIN +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCisFitNln-COM-00 for folder /TILE/OFL02/CALIB/CIS/FIT/NLN +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibEms-COM-00 for folder /TILE/OFL02/CALIB/EMS +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasFiber-000-00 for folder /TILE/OFL02/CALIB/LAS/FIBER +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasLin-COM-00 for folder /TILE/OFL02/CALIB/LAS/LIN +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasNln-COM-00 for folder /TILE/OFL02/CALIB/LAS/NLN +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02NoiseSample-TwoGauss-19 for folder /TILE/OFL02/NOISE/SAMPLE +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02StatusAdc-IOVDEP-03 for folder /TILE/OFL02/STATUS/ADC +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02TimeChanneloffsetPhy-000-00 for folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY +IOVDbSvc INFO Disconnecting from COOLOFL_TILE/OFLP200 +DbSession INFO Open DbSession +Domain[ROOT_All] INFO > Access DbDomain READ [ROOT_All] +Domain[ROOT_All] INFO -> Access DbDatabase READ [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20 +Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root +RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root File version:52200 +ToolSvc.TileBad... INFO ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OnlBch: callback has been triggered by: /TILE/ONL01/STATUS/ADC +ToolSvc.TileBad... INFO ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OflBch: callback has been triggered by: /TILE/OFL02/STATUS/ADC +CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store +CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store +ClassIDSvc INFO getRegistryEntries: read 193 CLIDRegistry entries for module ALL +CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store +CaloDM_ID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a TTOnlineID helper object in the detector store +TTOnlineID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a CaloCell_SuperCell_ID helper object in the detector store +CaloIDHelper_ID... INFO in createObj: creating a LArEM_SuperCell_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/TileSuperCellNeighbour.txt +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIdMgrDetDes... INFO Finished +CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv +Domain[ROOT_All] INFO -> Access DbDatabase READ [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A +Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root +RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root File version:52200 +ToolSvc.TileBad... INFO TileBadChanLegacyTool::recache() has been triggered by: '/TILE/OFL02/STATUS/ADC' '/TILE/ONL01/STATUS/ADC' +ToolSvc.TileBad... INFO Updating TileBchStatus::isBad() definition from DB +ToolSvc.TileBad... INFO Updating TileBchStatus::isNoisy() definition from DB +ToolSvc.TileBad... INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults +ToolSvc.TileBad... INFO No TileBchStatus::isBadTiming() definition found in DB, using defaults +ToolSvc.TileBad... INFO TileBchStatus::isBad() is defined by: ADC masked (unspecified); ADC dead; Very large HF noise; No data; Wrong DSP configuration; Severe stuck bit; Severe data corruption; Channel masked (unspecified); No PMT connected; No HV; Wrong HV; +ToolSvc.TileBad... INFO TileBchStatus::isNoisy() is defined by: Large HF noise; Correlated noise; Large LF noise; +ToolSvc.TileBad... INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; No PMT connected; No HV; Channel masked for LV1 (unspecified); LV1 channel no gain; LV1 channel noisy; Channel disabled for LV1; +ToolSvc.TileBad... INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; +ToolSvc.TileBad... INFO No drawer trips probabilities found in DB +AthenaEventLoopMgr INFO ===>>> start processing event #1, run #1 0 events processed so far <<<=== +TileBadChannels... INFO Updating TileBchStatus::isBad() definition from DB +TileBadChannels... INFO Updating TileBchStatus::isNoisy() definition from DB +TileBadChannels... INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults +TileBadChannels... INFO No TileBchStatus::isBadTiming() definition found in DB, using defaults +TileBadChannels... INFO TileBchStatus::isBad() is defined by: ADC masked (unspecified); ADC dead; Very large HF noise; No data; Wrong DSP configuration; Severe stuck bit; Severe data corruption; Channel masked (unspecified); No PMT connected; No HV; Wrong HV; +TileBadChannels... INFO TileBchStatus::isNoisy() is defined by: Large HF noise; Correlated noise; Large LF noise; +TileBadChannels... INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; No PMT connected; No HV; Channel masked for LV1 (unspecified); LV1 channel no gain; LV1 channel noisy; Channel disabled for LV1; +TileBadChannels... INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; +TileBadChannels... INFO No drawer trips probabilities found in DB +ClassIDSvc INFO getRegistryEntries: read 650 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 196 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 3 CLIDRegistry entries for module ALL +AthenaEventLoopMgr INFO ===>>> done processing event #1, run #1 1 events processed so far <<<=== +/cvmfs/atlas-co... INFO Database being retired... +Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20 +/cvmfs/atlas-co... INFO Database being retired... +Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A +Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] +AthenaEventLoopMgr INFO ===>>> start processing event #2, run #1 1 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> done processing event #2, run #1 2 events processed so far <<<=== +TileInfoLoader INFO Handling EndRun incident +TileInfoLoader INFO Removed TileInfo object from detector store. +Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] +ApplicationMgr INFO Application Manager Stopped successfully +IncidentProcAlg1 INFO Finalize +CondInputLoader INFO Finalizing CondInputLoader... +record1 INFO Finalizing record1... +check1 INFO Finalizing check1... +IncidentProcAlg2 INFO Finalize +PyComponentMgr INFO Finalizing PyComponentMgr... +IdDictDetDescrCnv INFO in finalize +IOVDbSvc INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.12 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.06 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.04 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.04 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.03 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.04 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.03 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.04 ))s +IOVDbSvc INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.05 ))s +IOVDbSvc INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/2 objs/chan/bytes 277/277/97884 (( 0.04 ))s +IOVDbSvc INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.04 ))s +IOVDbSvc INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/2 objs/chan/bytes 277/277/76 (( 0.00 ))s +IOVDbSvc INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 (( 0.04 ))s +IOVDbSvc INFO Total payload read from COOL: 844581 bytes in (( 0.56 ))s +IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.16 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.40 ))s +TileInfoLoader INFO TileInfoLoader::finalize() +AthDictLoaderSvc INFO in finalize... +ToolSvc INFO Removing all tools created by ToolSvc +*****Chrono***** INFO **************************************************************************************************** +*****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) +*****Chrono***** INFO **************************************************************************************************** +cObjR_ALL INFO Time User : Tot= 0.62 [s] Ave/Min/Max= 0.31(+- 0.3)/ 0.01/ 0.61 [s] #= 2 +cObj_ALL INFO Time User : Tot= 0.73 [s] Ave/Min/Max=0.0487(+-0.162)/ 0/ 0.65 [s] #= 15 +ChronoStatSvc INFO Time User : Tot= 49.6 [s] #= 1 +*****Chrono***** INFO **************************************************************************************************** +ChronoStatSvc.f... INFO Service finalized successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +Py:Athena INFO leaving with code 0: "successful run" diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.py b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.py new file mode 100644 index 00000000000..4ad299625ab --- /dev/null +++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.py @@ -0,0 +1,522 @@ +# +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration. +# +# File: TileRecUtils/share/TileDQstatusTool_test.py +# Author: scott snyder +# Date: Nov, 2018 +# Brief: Test for TileDQstatusTool. +# + +from __future__ import print_function + + +import ROOT +ROOT.TH1F + +from AthenaCommon.DetFlags import DetFlags +DetFlags.detdescr.Tile_setOn() +DetFlags.detdescr.LAr_setOn() + +RunNumber = 284500 + +import sys +import string +import ROOT +import math +from AtlasGeoModel import SetGeometryVersion +from AtlasGeoModel import GeoModelInit +from AtlasGeoModel import SetupRecoGeometry +include('TileConditions/TileConditions_jobOptions.py') + +from GeoModelSvc.GeoModelSvcConf import GeoModelSvc +ServiceMgr += GeoModelSvc() +theApp.CreateSvc += [ "GeoModelSvc"] +from AtlasGeoModel import TileGM +from AtlasGeoModel import LArGM #LAr needed to get MBTS DD. + +from IOVDbSvc.IOVDbSvcConf import IOVDbSvc +IOVDbSvc().GlobalTag = 'OFLCOND-RUN12-SDR-35' + +from AthenaCommon.AlgSequence import AlgSequence +topSequence = AlgSequence() + +theApp.EvtMax=1 + + +from AthenaPython.PyAthenaComps import Alg, StatusCode + + +############################################################################ + + +# TileFragHash::TYPE +class TileFragHash: + Beam = 255 + Default = 0 + Digitizer = 0 + OptFilterDsp = 1 + OptFilterOffline = 2 + OptFilterDspCompressed = 3 + ManyAmps = 4 + MF = 5 + FitFilter = 6 + FitFilterCool = 7 + FlatFilter = 8 + + +BEAM_TDC_FRAG = 0x000 +BEAM_ADC_FRAG = 0x001 +MUON_ADC_FRAG = 0x002 +ADDR_ADC_FRAG = 0x003 +LASE_PTN_FRAG = 0x004 +LASE_ADC_FRAG = 0x005 +ADD_FADC_FRAG = 0x006 +ECAL_ADC_FRAG = 0x007 +DIGI_PAR_FRAG = 0x0ff +LASER_OBJ_FRAG = 0x016 + + +hits_0 = [ + # (sec, side, mod, tow, samp, pmt, adc), [adc, time, qual, ped] + [0, [ + [(1, 1, 0, 1, 1, 0, 1), [ 0.2, 22.1, 2.4, 42.9]], + [(1, 1, 0, 1, 1, 1, 1), [-0.4, 75.0, 2.7, 31.4]], + [(1, 1, 0, 1, 0, 0, 1), [-0.9, -13.3, 1.5, 37.4]], + [(1, 1, 0, 2, 0, 1, 1), [41.8, 0.1, 2.5, 45.7]], + [(1, 1, 0, 2, 0, 0, 1), [30.6, -0.4, 2.0, 33.1]], + [(1, 1, 0, 2, 1, 1, 1), [ 1.4, 12.9, 4.7, 43.1]], + [(1, 1, 0, 2, 1, 0, 1), [ 3.4, 3.5, 1.9, 54.2]], + ]], + + [136, [ + [(3, 1, 8, 13, 3, 0, 1), [26.9, 4.8, 5.2, 45.4]], + ]], + + [146, [ + [(3, 1, 18, 13, 3, 0, 1), [ 4.4, -26.5, 23.9, 51.2]], + [(3, 1, 18, 15, 3, 0, 1), [-0.1, -75.0, 3.7, 51.0]], + [(3, 1, 18, 8, 2, 0, 1), [-0.1, 75.0, 4.2, 41.7]], + [(3, 1, 18, 8, 2, 1, 1), [ 3.5, -11.9, 2.6, 44.7]], + [(3, 1, 18, 9, 1, 0, 1), [ 0.8, -17.6, 1.8, 49.2]], + [(3, 1, 18, 9, 1, 1, 1), [ 0.1, -75.0, 3.4, 48.4]], + [(2, 1, 18, 11, 0, 0, 1), [ 8.7, 0.4, 2.7, 50.2]], + [(2, 1, 18, 11, 0, 1, 1), [ 6.3, 1.9, 1.6, 48.6]], + [(2, 1, 18, 10, 1, 0, 1), [53.3, 1.3, 3.8, 38.4]], + [(2, 1, 18, 10, 1, 1, 1), [64.1, 1.0, 3.5, 36.9]], + [(2, 1, 18, 12, 0, 0, 1), [-0.2, -75.0, 2.8, 38.1]], + [(2, 1, 18, 12, 0, 1, 1), [ 0.5, -32.7, 1.9, 40.3]], + [(3, 1, 18, 10, 3, 0, 1), [ 5.4, 7.7, 8.2, 57.0]], + [(3, 1, 18, 11, 3, 0, 1), [48.9, 0.4, 4.0, 32.3]], + [(2, 1, 18, 11, 1, 0, 1), [38.5, 0.5, 1.7, 46.8]], + [(2, 1, 18, 11, 1, 1, 1), [48.1, 0.3, 1.6, 46.3]], + [(2, 1, 18, 10, 2, 0, 1), [ 0.3, 75.0, 2.0, 34.9]], + [(2, 1, 18, 10, 2, 1, 1), [0.1, -75.0, 3.7, 54.7]], + ]], + + # Some MBTS cells. + [135, [ [(4, 1, 0, 1, 0, 0, 0), [ 59.1, 2.8, 6.9, 56.2]] ]], + [181, [ [(4, 1, 6, 1, 0, 0, 0), [ 56.4, 1.2, 2.9, 39.9]] ]], + [182, [ [(4, 1, 6, 0, 0, 0, 0), [ 44.9, 0.5, 1.4, 42.1]] ]], + [231, [ [(4, -1, 3, 0, 0, 0, 0), [107.9, 1.7, 7.8, 47.8]] ]], + + # Some E4 cells. + [220, [ [(4, -1, 0, 2, 0, 0, 0), [ 2.3, 3.2, 2.5, 44.4]] ]], + [223, [ [(4, -1, 1, 2, 0, 0, 0), [ 3.1, -5.3, 2.4, 44.4]] ]], + [225, [ [(4, -1, 2, 2, 0, 0, 0), [ -0.4, 27.6, 1.3, 32.5]] ]], + [228, [ [(4, -1, 3, 2, 0, 0, 0), [ 0.2, -75.0, 2.4, 35.4]] ]], + + # Some disconnected cells. + [253, [ + [4706026383833300992, [ 0, 0, 0, 50000]], + [4706027483344928768, [ 0, 0, 0, 50000]] ], ], + [255, [ + [4706157225717006336, [ 0, 0, 0, 80000]], + [4706158325228634112, [ 0, 0, 0, 80000]] ], ], +] + + +############################################################################ + + +def compare_args (args, pat): + if len(args) != len(pat): return False + for i in range(len(args)): + if args[i] != pat[i] and pat[i] != -1: + return False + return True +def check_exc (args, exclist): + for exc in exclist: + if compare_args (args, exc): return True + return False +def check_flag (dq, mname, exp, exc, *args): + ret = getattr(dq, mname)(*args) + if bool(ret) == bool(exp): return + if check_exc (args, exc.get(mname, [])): return + print ('xxx', mname, ret, exp, *args) + assert 0 + return + + +class TestAlg (Alg): + def __init__ (self, name): + Alg.__init__ (self, name) + return + + + def initialize (self): + ROOT.ICaloCellMakerTool + + def gettool (name): + tool = ROOT.ToolHandle(ROOT.ITileDQstatusTool)('TileDQstatusTool/' + name) + if not tool.retrieve(): + assert 0 + return tool + + self.tool1 = gettool ('tool1') + self.tool2 = gettool ('tool2') + + return StatusCode.Success + + + def execute (self): + self.test1() + self.test2() + self.test3() + self.test4() + self.test5() + self.test6() + self.test7() + self.test8() + return StatusCode.Success + + + def test1 (self): + print ('*** Starting test1') + + flag_exc = {'checkEmptyEvent' : + [(3,13,3), (3,13,9), (3,13,12)], + } + + rctype = TileFragHash.OptFilterOffline + self.do_test (rctype, flag_exc) + return + + + def test2 (self): + print ('*** Starting test2') + + flag_exc = {'checkEmptyEvent' : + [(3,13,3), (3,13,9), (3,13,12)], + 'checkMemoryParityErr' : + [(3,18,0,-1), (3,18,3,-1)], + 'isAdcDQgood' : + [(3,18,0,-1), (3,18,1,-1), (3,18,2,-1), + (3,18,9,-1), (3,18,10,-1), (3,18,11,-1),], + 'isChanDQgood' : + [(3,18,0), (3,18,1), (3,18,2), + (3,18,9), (3,18,10), (3,18,11),], + } + + rctype = TileFragHash.OptFilterDsp + rc_baddq = {146 : [('setFragMemoryPar', 0x09)]} + self.do_test (rctype, flag_exc, rc_baddq = rc_baddq) + return + + + def test3 (self): + print ('*** Starting test3') + + flag_exc = {'checkEmptyEvent' : + [(3,13,3), (3,13,9), (3,13,12)], + 'isAdcDQgood' : [(3,18,-1,-1)], + 'isChanDQgood' : [(3,18,-1)], + 'checkBCIDErr' : [(3,18,-1,-1)], + 'checkBCIDErrDetail' : [(3,18,-1,-1)], + } + + rctype = TileFragHash.OptFilterDsp + rc_baddq = {146 : [('setFragBCID', 0x6565)]} + self.do_test (rctype, flag_exc, rc_baddq = rc_baddq) + return + + + def test4 (self): + print ('*** Starting test4') + + flag_exc = {'checkEmptyEvent' : + [(3,13,3), (3,13,9), (3,13,12)], + } + + rctype = TileFragHash.OptFilterOffline + self.do_test (rctype, flag_exc, isCalib = True) + return + + + def test5 (self): + print ('*** Starting test5') + + flag_exc = {'checkEmptyEvent' : + [(3,13,3), (3,13,9), (3,13,12)], + } + + rctype = TileFragHash.OptFilterOffline + self.do_test (rctype, flag_exc, incomplete = True) + return + + + def test6 (self): + print ('*** Starting test6') + + flag_exc = {'checkEmptyEvent' : + [(3,13,3), (3,13,9), (3,13,12)], + } + + rctype = TileFragHash.OptFilterOffline + self.do_test (rctype, flag_exc, beamfrag = DIGI_PAR_FRAG) + return + + + def test7 (self): + print ('*** Starting test7') + + flag_exc = {'checkEmptyEvent' : + [(3,13,3), (3,13,9), (3,13,12)], + } + + rctype = TileFragHash.OptFilterOffline + self.do_test (rctype, flag_exc, beamfrag = LASER_OBJ_FRAG) + return + + + def test8 (self): + print ('*** Starting test8') + + flag_exc = {'checkEmptyEvent' : + [(3,13,3), (3,13,9), (3,13,12)], + } + + rctype = TileFragHash.OptFilterOffline + self.do_test (rctype, flag_exc, tool = self.tool2) + return + + + def do_test (self, rctype, flag_exc, rc_baddq={}, + isCalib = False, + incomplete = False, + beamfrag = LASE_PTN_FRAG, + tool = None): + rc = self.make_raw_data (hits_0, rctype, rc_baddq) + digits = self.make_digits (incomplete, isCalib) + be = self.make_beamelem (beamfrag) + + dq = ROOT.TileDQstatus() + + eid = ROOT.EventIDBase() + eid.set_bunch_crossing_id (1234) + ctx = ROOT.EventContext() + ctx.setEventID (eid) + ctx.setSlot (0) + + trigType = -123 + cispar = 110*[0] + bcid = 1234 + if beamfrag == LASE_PTN_FRAG: + trigType = 23 + + elif beamfrag == DIGI_PAR_FRAG: + cispar = [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 111, 2, 5, 6, 7, + 8, 117, 118, 119, 120] + 85*[0] + bcid = 11 + + elif beamfrag == LASER_OBJ_FRAG: + bcid = 22 + + if not tool: + tool = self.tool1 + assert tool.makeStatus (ctx, rc, digits, be, dq).isSuccess() + + assert dq.isFilled() == True + assert dq.isBiGain() == isCalib + assert dq.nonZeroCounter() == True + assert dq.incompleteDigits() == incomplete + assert dq.calibMode() == isCalib + assert dq.trigType() == trigType + assert dq.RODBCID() == bcid + + dq_cispar = [dq.cispar()[i] for i in range(110)] + assert dq_cispar == cispar + + + for partition in range(5): + for drawer in range(64): + for gain in range(2): + check_flag (dq, 'checkGlobalErr', False, flag_exc, + partition, drawer, gain) + check_flag (dq, 'checkGlobalCRCErr', False, flag_exc, + partition, drawer, gain) + for ch in range(48): + for gain in range(2): + check_flag (dq, 'isAdcDQgood', True, flag_exc, + partition, drawer, ch, gain) + check_flag (dq, 'isChanDQgood', True, flag_exc, + partition, drawer, ch) + for dmu in range(16): + check_flag (dq, 'checkEmptyEvent', False, flag_exc, + partition, drawer, dmu) + for gain in range(2): + check_flag (dq, 'checkROD_CRCErr', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkFE_CRCErr', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkBCIDErr', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkBCIDErrDetail', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkHeaderFormatErr', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkHeaderParityErr', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkSampleFormatErr', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkSampleParityErr', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkMemoryParityErr', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkSingleStrobeErr', False, flag_exc, + partition, drawer, dmu, gain) + check_flag (dq, 'checkDoubleStrobeErr', False, flag_exc, + partition, drawer, dmu, gain) + + return StatusCode.Success + + + def make_raw_data (self, hits, typ, baddq): + idHelper = self.detStore['CaloCell_ID'].tile_idHelper() + + unit = 0 # TileRawChannelUnit::ADCcounts + cont = ROOT.TileRawChannelContainer (False, typ, unit) + cont.set_bsflags (0x32002000) + hashFunc = cont.hashFunc() + + for icoll, colldata in hits: + coll = ROOT.TileRawChannelCollection (hashFunc.identifier(icoll)) + coll.setFragFEChipMask (0) + + for func, mask in baddq.get (icoll, []): + getattr(coll, func)(mask) + + for addr, data in colldata: + if type(addr) == type(()): + adc_id = idHelper.adc_id (*addr) + chan = ROOT.TileRawChannel (adc_id, *data) + else: + hwid = ROOT.HWIdentifier (addr) + chan = ROOT.TileRawChannel (hwid, *data) + coll.push_back (chan) + + cont.addCollection (coll, ROOT.IdentifierHash(icoll)) + ROOT.SetOwnership (coll, False) + + return cont + + + def make_digits (self, incomplete, isCalib): + cont = ROOT.TileDigitsContainer() + hashFunc = cont.hashFunc() + hwidHelper = self.detStore['TileHWID'] + + emptyfrag = (3, 13) # ros, drawer + for frag in [(1, 3), emptyfrag]: + id = hwidHelper.frag (*frag) + coll = ROOT.TileDigitsCollection (id) + + if frag == emptyfrag: + v = getattr(ROOT,'vector<unsigned>')() + v.resize(16) + v[3] = 0xffffffff + v[9] = 0xffffffff + v[12] = 0xffffffff + coll.setFragChipHeaderWords (v) + + + if frag == emptyfrag and incomplete: + ndig = 10 + elif frag == emptyfrag and isCalib: + ndig = 96 + else: + ndig = 48 + + digits = getattr(ROOT,'vector<float>')() + digits.resize (12); + for idig in range(ndig): + dig = ROOT.TileDigits(ROOT.HWIdentifier(), digits) + coll.push_back (dig) + + cont.addCollection (coll, ROOT.IdentifierHash (hashFunc(id))) + ROOT.SetOwnership (coll, False) + + return cont + + + def make_beamelem (self, frag): + cont = ROOT.TileBeamElemContainer() + hashFunc = cont.hashFunc() + + coll = ROOT.TileBeamElemCollection (frag) + coll.setLvl1Type (123) + + if frag == LASE_PTN_FRAG: + v = getattr(ROOT,'vector<unsigned>')() + v.resize(16) + v[0] = (23 << 8) + elem = ROOT.TileBeamElem (ROOT.HWIdentifier(), v) + coll.push_back (elem) + + elif frag == DIGI_PAR_FRAG: + coll.setRODBCID (11) + hwidHelper = self.detStore['TileHWID'] + + def id (cha): + ros = 1 + drawer = 1 + adc = 0 + return hwidHelper.adc_id (ros, drawer, cha, adc) + + for cha in range(15): + hwid = id(cha) + elem = ROOT.TileBeamElem (hwid, cha + 100) + coll.push_back (elem) + + hwid = id(15) + v = getattr(ROOT,'vector<unsigned>')() + v.resize(10) + for i in range(10): + v[i] = 111 + i + v[1] = 2 + v[2] = 0x08070605 + elem = ROOT.TileBeamElem (hwid, v) + coll.push_back (elem) + + elif frag == LASER_OBJ_FRAG: + coll.setRODBCID (22) + + + cont.addCollection (coll, ROOT.IdentifierHash (frag)) + ROOT.SetOwnership (coll, False) + + return cont + + + +############################################################################ + +from TileRecUtils.TileRecUtilsConf import TileDQstatusTool + +tool1 = TileDQstatusTool ('tool1') +ToolSvc += tool1 +tool2 = TileDQstatusTool ('tool2', SimulateTrips = True) +ToolSvc += tool2 + +test1 = TestAlg ('test1') +topSequence += test1 diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref new file mode 100644 index 00000000000..ca6c1373814 --- /dev/null +++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref @@ -0,0 +1,471 @@ +Thu Nov 22 06:52:15 CET 2018 +Preloading tcmalloc_minimal.so +Py:Athena INFO including file "AthenaCommon/Preparation.py" +Py:Athena INFO using release [WorkDir-22.0.1] [x86_64-slc6-gcc62-dbg] [atlas-work3j/e5920231315] -- built on [2018-11-22T0640] +Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" +Py:Athena INFO executing ROOT6Setup +Py:Athena INFO including file "AthenaCommon/Execution.py" +Py:Athena INFO including file "TileRecUtils/TileDQstatusTool_test.py" +[?1034hSetGeometryVersion.py obtained major release version 22 +Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" +Py:ConfigurableDb INFO Read module info for 5411 configurables from 4 genConfDb files +Py:ConfigurableDb INFO No duplicates have been found: that's good ! +EventInfoMgtInit: Got release version Athena-22.0.1 +Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 +Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" +Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr +Py:TileConditions_jobOptions.py INFO Forcing RUN2 (2014-2017) cabling for run 284500 with geometry ATLAS-R2-2016-01-00-01 +Py:TileConditions_jobOptions.py INFO Adjusting TileInfo for 7 samples +Py:TileConditions_jobOptions.py INFO setting up COOL for TileCal conditions data +Py:TileInfoConf. INFO Changing default TileBadChanTool configuration to COOL source +Py:TileInfoConf. INFO Changing default TileBadChanLegacyTool configuration to COOL source +Py:TileInfoConf. INFO Changing default TileCondToolEmscale configuration to COOL source +Py:TileInfoConf. INFO Changing default TileCondToolNoiseSample configuration to COOL source +Py:TileInfoConf. INFO Changing default TileCondToolTiming configuration to COOL source +Py:TileConditions_jobOptions.py INFO Adjusting TileInfo to return cell noise for Opt.Filter without iterations +Py:Athena INFO including file "AthenaCommon/runbatch.py" +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to ApplicationMgr (GaudiCoreSvc v30r4) + running on lxplus055.cern.ch on Thu Nov 22 06:52:56 2018 +==================================================================================================================================== +ApplicationMgr INFO Successfully loaded modules : AthenaServices +ApplicationMgr INFO Application Manager Configured successfully +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +StatusCodeSvc INFO initialize +AthDictLoaderSvc INFO in initialize... +AthDictLoaderSvc INFO acquired Dso-registry +ClassIDSvc INFO getRegistryEntries: read 6946 CLIDRegistry entries for module ALL +CoreDumpSvc INFO install f-a-t-a-l handler... (flag = -1) +CoreDumpSvc INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) +MetaDataSvc INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00 +AthenaPoolCnvSvc INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00 +PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok] +PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled +PoolSvc INFO Frontier compression level set to 5 +DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://lcgft-atlas.gridpp.rl.ac.uk:3128/frontierATLAS)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy-wigner.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host lxplus055.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +PoolSvc INFO Successfully setup replica sorting algorithm +PoolSvc INFO Setting up APR FileCatalog and Streams +PoolSvc WARNING Unable to locate catalog for prfile:poolcond/PoolCat_oflcond.xml check your ATLAS_POOLCOND_PATH and DATAPATH variables +PoolSvc WARNING Unable to locate catalog for apcfile:poolcond/PoolCat_oflcond.xml check your ATLAS_POOLCOND_PATH and DATAPATH variables +PoolSvc INFO Resolved path (via ATLAS_POOLCOND_PATH) is /cvmfs/atlas-condb.cern.ch/repo/conditions/poolcond/PoolFileCatalog.xml +PoolSvc INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml +DbSession INFO Open DbSession +Domain[ROOT_All] INFO > Access DbDomain READ [ROOT_All] +IOVDbSvc INFO Opened read transaction for POOL PersistencySvc +IOVDbSvc INFO Only 5 POOL conditions files will be open at once +IOVDbSvc INFO Cache alignment will be done in 3 slices +IOVDbSvc INFO Global tag: OFLCOND-RUN12-SDR-35 set from joboptions +IOVDbSvc INFO Read from meta data only for folder /TagInfo +IOVDbSvc INFO Initialised with 3 connections and 14 folders +IOVDbSvc INFO Service IOVDbSvc initialised successfully +IOVDbSvc INFO preLoadAddresses: Removing folder /TagInfo. It should only be in the file meta data and was not found. +IOVDbSvc INFO Opening COOL connection for COOLOFL_LAR/OFLP200 +IOVSvc INFO No IOVSvcTool associated with store "StoreGateSvc" +IOVSvcTool INFO IOVRanges will be checked at every Event +IOVDbSvc INFO Opening COOL connection for COOLOFL_TILE/OFLP200 +IOVDbSvc INFO Disconnecting from COOLOFL_LAR/OFLP200 +IOVDbSvc INFO Disconnecting from COOLOFL_TILE/OFLP200 +IOVDbSvc INFO Added taginfo remove for /LAR/Align +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/CES +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/CIS/FIT/LIN +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/CIS/FIT/NLN +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/EMS +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/FIBER +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/LIN +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/NLN +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/NOISE/SAMPLE +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/STATUS/ADC +IOVDbSvc INFO Added taginfo remove for /TILE/OFL02/TIME/CHANNELOFFSET/PHY +IOVDbSvc INFO Added taginfo remove for /TILE/ONL01/STATUS/ADC +IOVDbSvc INFO Added taginfo remove for /LAR/LArCellPositionShift +ClassIDSvc INFO getRegistryEntries: read 1917 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 17 CLIDRegistry entries for module ALL +DetDescrCnvSvc INFO initializing +DetDescrCnvSvc INFO Found DetectorStore service +DetDescrCnvSvc INFO filling proxies for detector managers +DetDescrCnvSvc INFO filling address for CaloTTMgr with CLID 117659265 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloMgr with CLID 4548337 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloSuperCellMgr with CLID 241807251 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloIdManager with CLID 125856940 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArIdManager with CLID 79554919 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for IdDict with CLID 2411 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for AtlasID with CLID 164875623 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for PixelID with CLID 2516 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for SCT_ID with CLID 2517 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TRT_ID with CLID 2518 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for SiliconID with CLID 129452393 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArEM_ID with CLID 163583365 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArEM_SuperCell_ID with CLID 99488227 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArHEC_ID with CLID 3870484 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArHEC_SuperCell_ID with CLID 254277678 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArFCAL_ID with CLID 45738051 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArFCAL_SuperCell_ID with CLID 12829437 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArMiniFCAL_ID with CLID 79264204 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArOnlineID with CLID 158698068 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TTOnlineID with CLID 38321944 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArOnline_SuperCellID with CLID 115600394 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArHVLineID with CLID 27863673 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for LArElectrodeID with CLID 80757351 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TileID with CLID 2901 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for Tile_SuperCell_ID with CLID 49557789 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TileHWID with CLID 2902 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TileTBID with CLID 2903 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for MDTIDHELPER with CLID 4170 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CSCIDHELPER with CLID 4171 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for RPCIDHELPER with CLID 4172 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for TGCIDHELPER with CLID 4173 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for STGCIDHELPER with CLID 4174 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for MMIDHELPER with CLID 4175 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloLVL1_ID with CLID 108133391 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloCell_ID with CLID 123500438 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloCell_SuperCell_ID with CLID 128365736 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for CaloDM_ID with CLID 167756483 and storage type 68 to detector store +DetDescrCnvSvc INFO filling address for ZdcID with CLID 190591643 and storage type 68 to detector store +GeoModelSvc::RD...WARNING Getting PixTBMatComponents with default tag +GeoModelSvc::RD...WARNING Getting PixTBMaterials with default tag +GeoModelSvc::RD...WARNING Getting InDetMatComponents with default tag +GeoModelSvc::RD...WARNING Getting InDetMaterials with default tag +GeoModelSvc.LAr... INFO Keys for LAr are ATLAS-R2-2016-01-00-01 ATLAS +GeoModelSvc.LAr... INFO Building LAr version LAr-Revised-17-01 while ATLAS version is ATLAS-R2-2016-01-00-01 +GeoModelSvc.LAr... INFO LAr Geometry Options: +GeoModelSvc.LAr... INFO Sagging = false +GeoModelSvc.LAr... INFO Barrel = ON +GeoModelSvc.LAr... INFO Endcap = ON +BarrelConstruction INFO Getting primary numbers for ATLAS, ATLAS-R2-2016-01-00-01 +BarrelConstruction INFO Makes detailed absorber sandwich ? 1 1 +BarrelConstruction INFO Use sagging in geometry ? 0 +============== EMEC Construction =============== + multi-layered version of absorbers activated, mlabs == 1 +================================================ +EventPersistenc... INFO Added successfully Conversion service:DetDescrCnvSvc +ClassIDSvc INFO getRegistryEntries: read 2398 CLIDRegistry entries for module ALL +CaloIDHelper_ID... INFO in createObj: creating a TileTBID helper object in the detector store +IdDictDetDescrCnv INFO in initialize +IdDictDetDescrCnv INFO in createObj: creating a IdDictManager object in the detector store +IdDictDetDescrCnv INFO IdDictName: IdDictParser/ATLAS_IDS.xml +IdDictDetDescrCnv INFO Reading InnerDetector IdDict file InDetIdDictFiles/IdDictInnerDetector_IBL3D25-03.xml +IdDictDetDescrCnv INFO Reading LArCalorimeter IdDict file IdDictParser/IdDictLArCalorimeter_DC3-05-Comm-01.xml +IdDictDetDescrCnv INFO Reading TileCalorimeter IdDict file IdDictParser/IdDictTileCalorimeter.xml +IdDictDetDescrCnv INFO Reading Calorimeter IdDict file IdDictParser/IdDictCalorimeter_L1Onl.xml +IdDictDetDescrCnv INFO Reading MuonSpectrometer IdDict file IdDictParser/IdDictMuonSpectrometer_R.03.xml +IdDictDetDescrCnv INFO Reading ForwardDetectors IdDict file IdDictParser/IdDictForwardDetectors_2010.xml +IdDictDetDescrCnv INFO Found id dicts: +IdDictDetDescrCnv INFO Using dictionary tag: null +IdDictDetDescrCnv INFO Dictionary ATLAS version default DetDescr tag (using default) file +IdDictDetDescrCnv INFO Dictionary Calorimeter version default DetDescr tag CaloIdentifier-LVL1-02 file IdDictParser/IdDictCalorimeter_L1Onl.xml +IdDictDetDescrCnv INFO Dictionary ForwardDetectors version default DetDescr tag ForDetIdentifier-01 file IdDictParser/IdDictForwardDetectors_2010.xml +IdDictDetDescrCnv INFO Dictionary InnerDetector version IBL-DBM DetDescr tag InDetIdentifier-IBL3D25-02 file InDetIdDictFiles/IdDictInnerDetector_IBL3D25-03.xml +IdDictDetDescrCnv INFO Dictionary LArCalorimeter version fullAtlas DetDescr tag LArIdentifier-DC3-05-Comm file IdDictParser/IdDictLArCalorimeter_DC3-05-Comm-01.xml +IdDictDetDescrCnv INFO Dictionary LArElectrode version fullAtlas DetDescr tag (using default) file +IdDictDetDescrCnv INFO Dictionary LArHighVoltage version fullAtlas DetDescr tag (using default) file +IdDictDetDescrCnv INFO Dictionary MuonSpectrometer version R.03 DetDescr tag MuonIdentifier-08 file IdDictParser/IdDictMuonSpectrometer_R.03.xml +IdDictDetDescrCnv INFO Dictionary TileCalorimeter version fullAtlasAndTestBeam DetDescr tag TileIdentifier-00 file IdDictParser/IdDictTileCalorimeter.xml +TileTBID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +EndcapDMConstru... INFO Start building EC electronics geometry +============== EMEC Construction =============== + multi-layered version of absorbers activated, mlabs == 1 +================================================ +EndcapDMConstru... INFO Start building EC electronics geometry +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 29060Kb Time = 1.36S +GeoModelSvc.Til... INFO Entering TileDetectorTool::create() +TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 +TileDddbManager INFO n_tiglob = 5 +TileDddbManager INFO n_timod = 320 +TileDddbManager INFO n_cuts = 9 +TileDddbManager INFO n_saddle = 1 +TileDddbManager INFO n_tilb = 21 +TileDddbManager INFO n_tileSwitches = 1 +ClassIDSvc INFO getRegistryEntries: read 213 CLIDRegistry entries for module ALL +CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/TileNeighbour_reduced.txt +TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store +TileHWID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +ClassIDSvc INFO getRegistryEntries: read 55 CLIDRegistry entries for module ALL +CaloIDHelper_ID... INFO in createObj: creating a CaloCell_ID helper object in the detector store +CaloIDHelper_ID... INFO in createObj: creating a LArEM_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCal3DNeighborsPrev-April2011.txt +CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. +AtlasDetectorID INFO initialize_from_dictionary - OK +GeoModelSvc.Til... INFO U-shape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() +GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx +GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 +GeoModelSvc.Til... INFO => New BFingerLengthNeg 420.5 +GeoModelSvc.Til... INFO Positioning barrel with translation 0 +GeoModelSvc.Til... INFO Positioning positive barrel finger with translation 3035.25 +GeoModelSvc.Til... INFO Positioning negative barrel finger with translation -3030.25 +GeoModelSvc.Til... INFO Positioning positive ext.barrel with translation 4854.75 +GeoModelSvc.Til... INFO Positioning positive ext.barrel finger with translation ztrans= 6338.5 +GeoModelSvc.Til... INFO Positioning positive ext.barrel saddle with translation ztrans= 6192.5 +GeoModelSvc.Til... INFO Positive ITC envelope parameters: PLUG1 Rmin= 3438.85 Rmax= 4250 dzITC1= 154.5 +GeoModelSvc.Til... INFO PLUG2 Rmin= 2981 Rmax= 3440 dzITC2= 47.425 +GeoModelSvc.Til... INFO Positioning positive ITC with translation 3405 +GeoModelSvc.Til... INFO Positioning positive Gap with translation 3552 +GeoModelSvc.Til... INFO Positioning positive Crack with translation 3536 +GeoModelSvc.Til... INFO Positioning negative ext.barrel with translation ztrans -4854.75 +GeoModelSvc.Til... INFO Positioning negative ext.barrel finger with translation ztrans= -6338.5 +GeoModelSvc.Til... INFO Positioning negative ext.barrel saddle with translation ztrans= -6192.5 +GeoModelSvc.Til... INFO Negative ITC envelope parameters: PLUG1 Rmin= 3438.85 Rmax= 4250 dzITC1= 154.5 +GeoModelSvc.Til... INFO PLUG2 Rmin= 2981 Rmax= 3440 dzITC2= 47.425 +GeoModelSvc.Til... INFO Positioning negative ITC with translation -3405 +GeoModelSvc.Til... INFO Positioning negative Gap with translation -3552 +GeoModelSvc.Til... INFO Positioning negative Crack with translation -3536 +GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) and translation (0,0,0) CLHEP::cm +GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) CLHEP::cm +GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) CLHEP::cm +TileDetDescrMan... INFO Entering create_elements() +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 5196Kb Time = 1.54S +ClassIDSvc INFO getRegistryEntries: read 65 CLIDRegistry entries for module ALL +TileInfoLoader INFO Initializing....TileInfoLoader +TileInfoLoader INFO New ATLAS geometry detected: ATLAS-R2-2016-01-00-01 (010001) version 10001 +TileInfoLoader INFO Changing TTL1 calib from 4.1 to 6.9 +TileInfoLoader INFO Changing TTL1 noise sigma from 2.5 to 2.8 +TileInfoLoader INFO ATLAS IBL geometry - special sampling fractions for gap/crack scin are allowed +TileInfoLoader INFO Special C10 in EB module 39 +TileInfoLoader INFO Special C10 in EB module 40 +TileInfoLoader INFO Special C10 in EB module 41 +TileInfoLoader INFO Special C10 in EB module 42 +TileInfoLoader INFO Special C10 in EB module 55 +TileInfoLoader INFO Special C10 in EB module 56 +TileInfoLoader INFO Special C10 in EB module 57 +TileInfoLoader INFO Special C10 in EB module 58 +TileInfoLoader INFO Sampling fraction for normal cells 1/34 +TileInfoLoader INFO Sampling fraction for special C10 cells 1/45 +TileInfoLoader INFO Sampling fraction for E1 cells 1/125 +TileInfoLoader INFO Sampling fraction for E2 cells 1/107 +TileInfoLoader INFO Sampling fraction for E3 cells 1/97 +TileInfoLoader INFO Sampling fraction for E4 cells 1/75 +TileInfoLoader INFO Sampling fraction for E4' cells 1/75 +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulsehi_physics.dat +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulselo_physics.dat +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulse_adder_tower_physics.dat +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulse_adder_muonRcv_physics.dat +TileInfoLoader INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulse_adder_muon_physics.dat +CaloIDHelper_ID... INFO in createObj: creating a CaloLVL1_ID helper object in the detector store +CaloLVL1_ID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +TileCablingSvc INFO RUN2 ATLAS geometry flag detected for geometry: ATLAS-R2-2016-01-00-01 +TileCablingSvc INFO Cabling for RUN2 (2014-2017) ATLAS geometry is set via jobOptions +TileCablingSvc INFO Setting Cabling type to 4 +TileInfoLoader INFO Placed TileInfo object in the detector store. +ToolSvc.TileBad... INFO Creating TileCondProxyCool(ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OnlBch) for folder: "/TILE/ONL01/STATUS/ADC" +IOVSvcTool INFO Still in initialize phase, not tiggering callback for TileCondProxyCool<TileCalibDrawerBch>[0x1cb87600]+7f1630fd78a6 bound to CondAttrListCollection[/TILE/ONL01/STATUS/ADC] +ToolSvc.TileBad... INFO Creating TileCondProxyCool(ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OflBch) for folder: "/TILE/OFL02/STATUS/ADC" +IOVSvcTool INFO Still in initialize phase, not tiggering callback for TileCondProxyCool<TileCalibDrawerBch>[0x1cb88c00]+7f1630fd78a6 bound to CondAttrListCollection[/TILE/OFL02/STATUS/ADC] +ToolSvc.TileBad... INFO ProxyOnlBch and ProxyOflBch will be used for bad channel status +IOVSvcTool INFO Still in initialize phase, not tiggering callback for TileBadChanLegacyTool[0x16e05000]+7f1630d8460e bound to /TILE/ONL01/STATUS/ADC +IOVSvcTool INFO Still in initialize phase, not tiggering callback for TileBadChanLegacyTool[0x16e05000]+7f1630d8460e bound to /TILE/OFL02/STATUS/ADC +AthenaEventLoopMgr INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00 +ClassIDSvc INFO getRegistryEntries: read 265 CLIDRegistry entries for module ALL +CondInputLoader INFO Initializing CondInputLoader... +CondInputLoader INFO Adding base classes: + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CES' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/EMS' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/STATUS/ADC' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' ) -> + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/ONL01/STATUS/ADC' ) -> +CondInputLoader INFO Will create WriteCondHandle dependencies for the following DataObjects: + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CES' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/EMS' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/STATUS/ADC' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' ) + + ( 'CondAttrListCollection' , 'ConditionStore+/TILE/ONL01/STATUS/ADC' ) +TileBadChannels... INFO Creating TileCondProxyCool(TileBadChannelsCondAlg.TileCondProxyCool_OnlBch) for folder: "/TILE/ONL01/STATUS/ADC" +TileBadChannels... INFO Creating TileCondProxyCool(TileBadChannelsCondAlg.TileCondProxyCool_OflBch) for folder: "/TILE/OFL02/STATUS/ADC" +TileBadChannels... INFO ProxyOnlBch and ProxyOflBch will be used for bad channel status +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCisLin) for folder: "/TILE/OFL02/CALIB/CIS/FIT/LIN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCisNln) for folder: "/TILE/OFL02/CALIB/CIS/FIT/NLN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasLin) for folder: "/TILE/OFL02/CALIB/LAS/LIN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasNln) for folder: "/TILE/OFL02/CALIB/LAS/NLN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasFib) for folder: "/TILE/OFL02/CALIB/LAS/FIBER" +TileEMScaleCondAlg INFO ProxyOflLasFib is set up and can be used +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCes) for folder: "/TILE/OFL02/CALIB/CES" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflEms) for folder: "/TILE/OFL02/CALIB/EMS" +TileEMScaleCondAlg INFO Undoing online calibration is not requested, since OnlCacheUnit= 'OnlCacheUnit':Invalid +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlCis) for folder: "/TILE/OFL02/CALIB/CIS/FIT/LIN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlLas) for folder: "/TILE/OFL02/CALIB/LAS/LIN" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlCes) for folder: "/TILE/OFL02/CALIB/CES" +TileEMScaleCond... INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlEms) for folder: "/TILE/OFL02/CALIB/EMS" +TileSampleNoise... INFO Creating TileCondProxyCool(TileSampleNoiseCondAlg.TileCondProxyCool_NoiseSample) for folder: "/TILE/OFL02/NOISE/SAMPLE" +TileTimingCondA... INFO Creating TileCondProxyCool(TileTimingCondAlg.TileCondProxyCool_AdcOffset) for folder: "/TILE/OFL02/TIME/CHANNELOFFSET/PHY" +PyComponentMgr INFO Initializing PyComponentMgr... +test1 INFO Initializing test1... +ClassIDSvc INFO getRegistryEntries: read 5654 CLIDRegistry entries for module ALL +HistogramPersis...WARNING Histograms saving not required. +ApplicationMgr INFO Application Manager Initialized successfully +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CES' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/EMS' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/STATUS/ADC' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' +CondInputLoader INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/ONL01/STATUS/ADC' +ApplicationMgr INFO Application Manager Started successfully +AthenaEventLoopMgr INFO ===>>> start of run 1 <<<=== +EventPersistenc... INFO Added successfully Conversion service:AthenaPoolCnvSvc +EventPersistenc... INFO Added successfully Conversion service:TagInfoMgr +ClassIDSvc INFO getRegistryEntries: read 109 CLIDRegistry entries for module ALL +IOVDbSvc INFO Opening COOL connection for COOLOFL_LAR/OFLP200 +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to LARAlign-IOVDEP-00 for folder /LAR/Align +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to LArCellPositionShift-ideal for folder /LAR/LArCellPositionShift +IOVDbSvc INFO Disconnecting from COOLOFL_LAR/OFLP200 +IOVDbSvc INFO Opening COOL connection for COOLOFL_TILE/OFLP200 +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCes-SIM-06 for folder /TILE/OFL02/CALIB/CES +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCisFitLin-COM-00 for folder /TILE/OFL02/CALIB/CIS/FIT/LIN +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCisFitNln-COM-00 for folder /TILE/OFL02/CALIB/CIS/FIT/NLN +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibEms-COM-00 for folder /TILE/OFL02/CALIB/EMS +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasFiber-000-00 for folder /TILE/OFL02/CALIB/LAS/FIBER +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasLin-COM-00 for folder /TILE/OFL02/CALIB/LAS/LIN +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasNln-COM-00 for folder /TILE/OFL02/CALIB/LAS/NLN +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02NoiseSample-TwoGauss-19 for folder /TILE/OFL02/NOISE/SAMPLE +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02StatusAdc-IOVDEP-03 for folder /TILE/OFL02/STATUS/ADC +IOVDbSvc INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02TimeChanneloffsetPhy-000-00 for folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY +IOVDbSvc INFO Disconnecting from COOLOFL_TILE/OFLP200 +DbSession INFO Open DbSession +Domain[ROOT_All] INFO > Access DbDomain READ [ROOT_All] +Domain[ROOT_All] INFO -> Access DbDatabase READ [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20 +Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root +RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root File version:52200 +ToolSvc.TileBad... INFO ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OnlBch: callback has been triggered by: /TILE/ONL01/STATUS/ADC +ToolSvc.TileBad... INFO ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OflBch: callback has been triggered by: /TILE/OFL02/STATUS/ADC +CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store +CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store +ClassIDSvc INFO getRegistryEntries: read 193 CLIDRegistry entries for module ALL +CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store +CaloDM_ID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a TTOnlineID helper object in the detector store +TTOnlineID INFO initialize_from_dictionary +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a CaloCell_SuperCell_ID helper object in the detector store +CaloIDHelper_ID... INFO in createObj: creating a LArEM_SuperCell_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store +AtlasDetectorID INFO initialize_from_dictionary - OK +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/TileSuperCellNeighbour.txt +AtlasDetectorID INFO initialize_from_dictionary - OK +CaloIdMgrDetDes... INFO Finished +CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv +Domain[ROOT_All] INFO -> Access DbDatabase READ [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A +Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root +RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root File version:52200 +ToolSvc.TileBad... INFO TileBadChanLegacyTool::recache() has been triggered by: '/TILE/OFL02/STATUS/ADC' '/TILE/ONL01/STATUS/ADC' +ToolSvc.TileBad... INFO Updating TileBchStatus::isBad() definition from DB +ToolSvc.TileBad... INFO Updating TileBchStatus::isNoisy() definition from DB +ToolSvc.TileBad... INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults +ToolSvc.TileBad... INFO No TileBchStatus::isBadTiming() definition found in DB, using defaults +ToolSvc.TileBad... INFO TileBchStatus::isBad() is defined by: ADC masked (unspecified); ADC dead; Very large HF noise; No data; Wrong DSP configuration; Severe stuck bit; Severe data corruption; Channel masked (unspecified); No PMT connected; No HV; Wrong HV; +ToolSvc.TileBad... INFO TileBchStatus::isNoisy() is defined by: Large HF noise; Correlated noise; Large LF noise; +ToolSvc.TileBad... INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; No PMT connected; No HV; Channel masked for LV1 (unspecified); LV1 channel no gain; LV1 channel noisy; Channel disabled for LV1; +ToolSvc.TileBad... INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; +ToolSvc.TileBad... INFO No drawer trips probabilities found in DB +AthenaEventLoopMgr INFO ===>>> start processing event #1, run #1 0 events processed so far <<<=== +TileBadChannels... INFO Updating TileBchStatus::isBad() definition from DB +TileBadChannels... INFO Updating TileBchStatus::isNoisy() definition from DB +TileBadChannels... INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults +TileBadChannels... INFO No TileBchStatus::isBadTiming() definition found in DB, using defaults +TileBadChannels... INFO TileBchStatus::isBad() is defined by: ADC masked (unspecified); ADC dead; Very large HF noise; No data; Wrong DSP configuration; Severe stuck bit; Severe data corruption; Channel masked (unspecified); No PMT connected; No HV; Wrong HV; +TileBadChannels... INFO TileBchStatus::isNoisy() is defined by: Large HF noise; Correlated noise; Large LF noise; +TileBadChannels... INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; No PMT connected; No HV; Channel masked for LV1 (unspecified); LV1 channel no gain; LV1 channel noisy; Channel disabled for LV1; +TileBadChannels... INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; +TileBadChannels... INFO No drawer trips probabilities found in DB +*** Starting test1 +ClassIDSvc INFO getRegistryEntries: read 650 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 154 CLIDRegistry entries for module ALL +*** Starting test2 +*** Starting test3 +*** Starting test4 +*** Starting test5 +*** Starting test6 +*** Starting test7 +*** Starting test8 +AthRNGSvc INFO Creating engine ToolSvc.tool2/ToolSvc.tool2 +AthenaEventLoopMgr INFO ===>>> done processing event #1, run #1 1 events processed so far <<<=== +/cvmfs/atlas-co... INFO Database being retired... +Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20 +/cvmfs/atlas-co... INFO Database being retired... +Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A +Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] +TileInfoLoader INFO Handling EndRun incident +TileInfoLoader INFO Removed TileInfo object from detector store. +Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] +ApplicationMgr INFO Application Manager Stopped successfully +IncidentProcAlg1 INFO Finalize +CondInputLoader INFO Finalizing CondInputLoader... +test1 INFO Finalizing test1... +IncidentProcAlg2 INFO Finalize +PyComponentMgr INFO Finalizing PyComponentMgr... +IdDictDetDescrCnv INFO in finalize +IOVDbSvc INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 18.62 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 22.12 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 1.98 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 2.21 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 2.05 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 2.95 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 5.13 ))s +IOVDbSvc INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 3.02 ))s +IOVDbSvc INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 26.42 ))s +IOVDbSvc INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/2 objs/chan/bytes 277/277/97884 (( 0.04 ))s +IOVDbSvc INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.04 ))s +IOVDbSvc INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/2 objs/chan/bytes 277/277/76 (( 0.01 ))s +IOVDbSvc INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 (( 2.81 ))s +IOVDbSvc INFO Total payload read from COOL: 844581 bytes in (( 87.41 ))s +IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 21.43 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 65.98 ))s +TileInfoLoader INFO TileInfoLoader::finalize() +AthDictLoaderSvc INFO in finalize... +ToolSvc INFO Removing all tools created by ToolSvc +*****Chrono***** INFO **************************************************************************************************** +*****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) +*****Chrono***** INFO **************************************************************************************************** +cObjR_ALL INFO Time User : Tot= 0.58 [s] Ave/Min/Max= 0.29(+- 0.27)/ 0.02/ 0.56 [s] #= 2 +cObj_ALL INFO Time User : Tot= 0.72 [s] Ave/Min/Max=0.048(+-0.155)/ 0/ 0.62 [s] #= 15 +ChronoStatSvc INFO Time User : Tot= 68.2 [s] #= 1 +*****Chrono***** INFO **************************************************************************************************** +ChronoStatSvc.f... INFO Service finalized successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +Py:Athena INFO leaving with code 0: "successful run" diff --git a/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.cxx b/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.cxx new file mode 100644 index 00000000000..562eececf44 --- /dev/null +++ b/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.cxx @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration. + */ +/** + * @file TileRecUtils/src/TileDQstatusAlg.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Sep, 2018 + * @brief Produce a TileDQstatus object. + * This replaces the old TileBeamInfoProvider. + */ + + +#include "TileDQstatusAlg.h" +#include "TileCalibBlobObjs/TileCalibUtils.h" +#include "TileIdentifier/TileTBFrag.h" +#include "TileIdentifier/TileHWID.h" +#include "StoreGate/WriteHandle.h" +#include "StoreGate/ReadHandle.h" +#include "AthenaKernel/RNGWrapper.h" +#include <CLHEP/Random/RandomEngine.h> +#include <CLHEP/Random/RandFlat.h> + + +/** + * @brief Constructor. + * @param name Algorithm name. + * @param svcloc Gaudi service locator. + */ +TileDQstatusAlg::TileDQstatusAlg (const std::string& name, ISvcLocator* svcloc) + : AthReentrantAlgorithm (name, svcloc) +{ +} + + +/** + * @brief Gaudi initialize method. + */ +StatusCode TileDQstatusAlg::initialize() +{ + ATH_CHECK( m_tileDQstatusTool.retrieve() ); + + ATH_CHECK( m_DQstatusKey.initialize() ); + if (!m_rawChannelContainerKey.key().empty()) + ATH_CHECK( m_rawChannelContainerKey.initialize() ); + if (!m_digitsContainerKey.key().empty()) + ATH_CHECK( m_digitsContainerKey.initialize() ); + if (!m_beamElemContainerKey.key().empty()) + ATH_CHECK( m_beamElemContainerKey.initialize() ); + + return StatusCode::SUCCESS; +} + + +/** + * @brief Gaudi execute method. + * @param ctx Event context. + */ +StatusCode TileDQstatusAlg::execute_r (const EventContext& ctx) const +{ + auto dqstatus = std::make_unique<TileDQstatus>(); + + const TileDigitsContainer* tileDigitsContainer = nullptr; + if (!m_digitsContainerKey.key().empty()) { + tileDigitsContainer = SG::makeHandle (m_digitsContainerKey, ctx).get(); + } + + const TileRawChannelContainer* tileRawChannelContainer = nullptr; + if (!m_rawChannelContainerKey.key().empty()) { + tileRawChannelContainer = SG::makeHandle (m_rawChannelContainerKey, ctx).get(); + } + + const TileBeamElemContainer* tileBeamElemContainer = nullptr; + if (!m_beamElemContainerKey.key().empty()) { + tileBeamElemContainer = SG::makeHandle (m_beamElemContainerKey, ctx).get(); + } + + ATH_CHECK( m_tileDQstatusTool->makeStatus (ctx, + tileRawChannelContainer, + tileDigitsContainer, + tileBeamElemContainer, + *dqstatus) ); + + ATH_CHECK( SG::makeHandle (m_DQstatusKey, ctx).record (std::move (dqstatus)) ); + return StatusCode::SUCCESS; +} + diff --git a/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.h b/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.h new file mode 100644 index 00000000000..29385046411 --- /dev/null +++ b/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.h @@ -0,0 +1,81 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. +/* + * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration. + */ +/** + * @file TileRecUtils/src/TileDQstatusAlg.h + * @author scott snyder <snyder@bnl.gov> + * @date Sep, 2018 + * @brief Produce a TileDQstatus object. + * This replaces the old TileBeamInfoProvider. + */ + + +#ifndef TILERECUTILS_TILEDQSTATUSALG_H +#define TILERECUTILS_TILEDQSTATUSALG_H + + +#include "TileRecUtils/ITileDQstatusTool.h" +#include "TileEvent/TileDQstatus.h" +#include "TileEvent/TileRawChannelContainer.h" +#include "TileEvent/TileDigitsContainer.h" +#include "TileEvent/TileBeamElemContainer.h" +#include "TileConditions/ITileBadChanTool.h" +#include "AthenaBaseComps/AthReentrantAlgorithm.h" +#include "StoreGate/WriteHandleKey.h" +#include "StoreGate/ReadHandleKey.h" +#include "AthenaKernel/IAthRNGSvc.h" +#include "GaudiKernel/ServiceHandle.h" +#include "GaudiKernel/ToolHandle.h" +class TileHWID; + + +/** + * @brief Produce a TileDQstatus object. + * This replaces the old TileBeamInfoProvider. + */ +class TileDQstatusAlg + : public AthReentrantAlgorithm +{ +public: + /** + * @brief Constructor. + * @param name Algorithm name. + * @param svcloc Gaudi service locator. + */ + TileDQstatusAlg (const std::string& name, ISvcLocator* svcloc); + + + /** + * @brief Gaudi initialize method. + */ + virtual StatusCode initialize() override; + + + /** + * @brief Gaudi execute method. + * @param ctx Event context. + */ + virtual StatusCode execute_r (const EventContext& ctx) const override; + + +private: + /// ** Properties + SG::WriteHandleKey<TileDQstatus> m_DQstatusKey + {this, "TileDQstatus", "TileDQstatus", "Output TileDQstatus key" }; + + SG::ReadHandleKey<TileRawChannelContainer> m_rawChannelContainerKey + {this, "TileRawChannelContainer", "", "Input TileRawChannelContainer key" }; + + SG::ReadHandleKey<TileDigitsContainer> m_digitsContainerKey + {this, "TileDigitsContainer", "", "Input TileDigitsContainer key" }; + + SG::ReadHandleKey<TileBeamElemContainer> m_beamElemContainerKey + {this, "TileBeamElemContainer", "", "Input Tile beam elements container key"}; + + ToolHandle<ITileDQstatusTool> m_tileDQstatusTool + {this, "TileDQstatusTool", "TileDQstatusTool", "TileDQstatusTool"}; +}; + + +#endif // not TILERECUTILS_TILEDQSTATUSALG_H diff --git a/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.cxx b/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.cxx new file mode 100644 index 00000000000..c471902ad3e --- /dev/null +++ b/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.cxx @@ -0,0 +1,343 @@ +/* + * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration. + */ +/** + * @file TileRecUtils/src/TileDQstatusTool.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Nov, 2018 + * @brief Construct a TileDQstatus object. + */ + + +#include "TileDQstatusTool.h" +#include "TileEvent/TileDQstatus.h" +#include "TileEvent/TileRawChannelContainer.h" +#include "TileEvent/TileDigitsContainer.h" +#include "TileEvent/TileBeamElemContainer.h" +#include "TileIdentifier/TileHWID.h" +#include "TileIdentifier/TileTBFrag.h" +#include "TileCalibBlobObjs/TileCalibUtils.h" +#include "AthenaKernel/RNGWrapper.h" +#include <CLHEP/Random/RandomEngine.h> +#include <CLHEP/Random/RandFlat.h> +#include "GaudiKernel/EventContext.h" + + +/** + * @brief Standard Gaudi tool constructor. + * @param type The name of the tool type. + * @param name The tool name. + * @param parent The tool's Gaudi parent. + */ +TileDQstatusTool::TileDQstatusTool (const std::string& type, + const std::string& name, + const IInterface* parent) + : base_class (type, name, parent), + m_tileBadChanTool ("TileBadChanTool") +{ + // FIXME: public tool + declareProperty ("TileBadChanTool", m_tileBadChanTool, + "Tile bad channel tool."); +} + + +/** + * @brief Gaudi initialize method. + */ +StatusCode TileDQstatusTool::initialize() +{ + ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") ); + + if (m_simulateTrips) { + ATH_CHECK( m_athRNGSvc.retrieve() ); + ATH_CHECK( m_tileBadChanTool.retrieve() ); + } + else { + m_tileBadChanTool.disable(); + } + return StatusCode::SUCCESS; +} + + +/** + * @brief Make a new TileDQstatus object. + * @param ctx Event context. + * @param rawChannelContainer The TileRawChannelContainer (may be null). + * @param tileDigitsContainer The TileDigitsContainer (may be null). + * @param tileBeamElemContainer The TileBeamElemContainer (may be null). + * @param[out] dqstatus TileDQstatus object to fill. + */ +StatusCode +TileDQstatusTool::makeStatus (const EventContext& ctx, + const TileRawChannelContainer* rawChannelContainer, + const TileDigitsContainer* tileDigitsContainer, + const TileBeamElemContainer* tileBeamElemContainer, + TileDQstatus& dqstatus) +{ + dqstatus.setAllGood(); + dqstatus.setRODBCID (ctx.eventID().bunch_crossing_id()); + + ATH_CHECK( doBeamElem (tileBeamElemContainer, dqstatus) ); + + if (rawChannelContainer != nullptr) { + if (tileDigitsContainer != nullptr) { + bool isCalib = false; + bool incomplete = false; + for (const TileDigitsCollection* coll : *tileDigitsContainer) { + incomplete |= (coll->size() < 48); + + if (coll->size() > 0) { + int dsize = (*(coll->begin()))->NtimeSamples(); + if (4 < dsize && dsize < 15) { // don't use strange fragments + isCalib |= coll->isCalibMode(); + } + } + + int frag = coll->identify(); + int partition = (frag >> 8); + int drawer = (frag & 0x3F); + + std::vector < uint32_t > data = coll->getFragChipHeaderWords(); + unsigned int dataSize = std::min(16u, (unsigned int) data.size()); + for (unsigned int dmu = 0; dmu < dataSize; ++dmu) { + if (data[dmu] == 0xFFFFFFFF) + dqstatus.setEmptyEvent(partition, drawer, dmu, 0, 1); + } + + data = coll->getFragChipHeaderWordsHigh(); + dataSize = std::min(16u, (unsigned int) data.size()); + for (unsigned int dmu = 0; dmu < dataSize; ++dmu) { + if (data[dmu] == 0xFFFFFFFF) + dqstatus.setEmptyEvent(partition, drawer, dmu, 1, 1); + } + } + dqstatus.setIncompleteDigits (incomplete); + dqstatus.setCalibMode (isCalib); + dqstatus.setBiGain (isCalib); + } + + TileFragHash::TYPE RChType = rawChannelContainer->get_type(); + if (RChType != TileFragHash::OptFilterDsp + && RChType != TileFragHash::OptFilterDspCompressed) + { + ATH_MSG_DEBUG("RawChannelContainer didn't come from BS - don't check DQ flags"); + ATH_MSG_DEBUG("RChType = " << RChType); + } + else { + for (const TileRawChannelCollection *coll : *rawChannelContainer) { + ATH_MSG_VERBOSE("RCh collection 0x" << MSG::hex + << coll->identify() << MSG::dec + << " size=" << coll->size()); + + dqstatus.fillArrays(coll, tileDigitsContainer, 0); + dqstatus.fillArrays(coll, tileDigitsContainer, 1); + } + if (dqstatus.nonZeroCounter() == 0) { + ATH_MSG_DEBUG("all DQ elements are empty - don't check DQ flags"); + dqstatus.setAllGood(); + } + else { + ATH_MSG_DEBUG("BiGain mode: " << ((dqstatus.isBiGain()) ? "true" : "false")); + } + } + } + + if (m_simulateTrips) { + ATHRNG::RNGWrapper* wrapper = m_athRNGSvc->getEngine (this, this->name()); + wrapper->setSeed (this->name(), ctx); + CLHEP::HepRandomEngine* engine = wrapper->getEngine (ctx); + double rndmVec[TileCalibUtils::MAX_DRAWER]; + + for (unsigned int partition = 1; partition < TileCalibUtils::MAX_ROS; ++partition) { + CLHEP::RandFlat::shootArray (engine, TileCalibUtils::MAX_DRAWER, rndmVec); + std::vector<float> trips = m_tileBadChanTool->getTripsProbabilities(partition); + dqstatus.fillTrips(partition, trips, rndmVec, this->msg()); + } + } + + dqstatus.setFilled (true); + return StatusCode::SUCCESS; +} + + +/** + * @brief Process BeamElemContainer. + * @param tileBeamElemContainer The TileBeamElemContainer (may be null). + * @param dqstatus TileDQstatus object being filled. + */ +StatusCode +TileDQstatusTool::doBeamElem (const TileBeamElemContainer* tileBeamElemContainer, + TileDQstatus& dqstatus) const +{ + if (!tileBeamElemContainer) { + return StatusCode::SUCCESS; + } + + uint32_t* cispar = dqstatus.cispar(); + + for (const TileBeamElemCollection* coll : *tileBeamElemContainer) { + int frag = coll->identify(); + + if (dqstatus.trigType() == 0 && coll->getLvl1Type() != 0) { + // take it from the ROD header + // make negative to distinguish from TileCal internal trig types + dqstatus.setTrigType (- coll->getLvl1Type()); + } + + switch (frag) { + + case LASE_PTN_FRAG: { + + TileBeamElemCollection::const_iterator beamItr = coll->begin(); + TileBeamElemCollection::const_iterator lastBeam = coll->end(); + + if (beamItr != lastBeam) { + std::vector < uint32_t > digits = (*beamItr)->get_digits(); + + if (digits.size() > 0) { + uint32_t laserFlag = digits[0]; + if (laserFlag & 0xFF00) + dqstatus.setTrigType (laserFlag >> 8); + } + } + } + break; + + case DIGI_PAR_FRAG: { + dqstatus.setRODBCID (coll->getRODBCID()); + + for (const TileBeamElem* elem : *coll) { + HWIdentifier id = elem->adc_HWID(); + std::vector < uint32_t > digits = elem->get_digits(); + int cha = m_tileHWID->channel(id); + + if (cha < 15) { + if (digits.size() > 0) { + cispar[cha] = digits[0]; + ATH_MSG_VERBOSE("cispar [" << cha << "] = " << cispar[cha]); + } + } + else if (cha == 15) { + int siz = 15 + digits.size(); + if (siz > 110) + siz = 110; + for (int i = 15; i < siz; ++i) { + cispar[i] = digits[i - 15]; + ATH_MSG_VERBOSE("cispar [" << i << "] = " << cispar[i]); + } + switch (cispar[16]) { + + case 0x02: { + int aux_ext = cispar[17]; + cispar[17] = (aux_ext & 0x00ff); // dac + cispar[18] = (aux_ext >> 8) & 0x00ff; // 00 + cispar[19] = (aux_ext >> 16) & 0x00ff; // 00 + cispar[20] = (aux_ext >> 24) & 0x00ff; // small/large cap + } + break; + + case 0x07: { + bool badpar = ((cispar[16] == cispar[17]) || (cispar[17] == cispar[18])); + int aux_ext = cispar[18]; + cispar[18] = (aux_ext & 0x00ff) - 1; // pmt ext cispar starts from 1 + cispar[19] = (aux_ext >> 8) & 0x00ff; // tower + cispar[20] = (aux_ext >> 16) & 0x00ff; // drawer + + if (badpar || (aux_ext>>24)!=0 || cispar[18]>5 || cispar[19]>15 || cispar[20]>63) { + ATH_MSG_WARNING("bad cispar[16,17,18]: " << cispar[16] << " " << cispar[17] << " " << aux_ext + << " drawer,tower,pmt: " << cispar[20] << " " << cispar[19] << " " << (int)cispar[18]); + cispar[16] += 0x100; // flag bad events + cispar[18] = 5; + cispar[19] = 0xff; + cispar[20] = 0xff; + } + + if (cispar[16] != cispar[17]) { + // Warning: nonportable. + union { + unsigned int i; + float f; + } chargeCnv; + chargeCnv.i = cispar[17]; + cispar[17] = chargeCnv.f; + } + } + break; + } + } + } + } + break; + + case LASER_OBJ_FRAG: { + + dqstatus.setRODBCID (coll->getRODBCID()); + + // laspar isn't actually used by anything. + // Leave commented out for now. +#if 0 + TileBeamElemCollection::const_iterator beamItr = (*collItr)->begin(); + TileBeamElemCollection::const_iterator lastBeam = (*collItr)->end(); + + if (beamItr != lastBeam) { // one channel is expected, check that it's really there + + std::vector < uint32_t > digits = (*beamItr)->get_digits(); + int cha = std::min(32, (int) digits.size()); + + while (--cha >= 0) { + m_laspar[cha] = digits[cha]; + ATH_MSG_VERBOSE("laspar [" << cha << "] = " << m_laspar[cha]); + } + } +#endif + } + break; + + case COIN_TRIG1_FRAG: + case COIN_TRIG2_FRAG: + case COIN_TRIG3_FRAG: + case COIN_TRIG4_FRAG: + case COIN_TRIG5_FRAG: + case COIN_TRIG6_FRAG: + case COIN_TRIG7_FRAG: + case COIN_TRIG8_FRAG: { + // coincTrig is not actually used by anything now. + // Leave commented out. +#if 0 + unsigned int board = frag - COIN_TRIG1_FRAG; + // make sure that we have enough space + if (board >= m_coincTrig.size()) { + m_coincTrig.resize(board + 1); + } + + TileBeamElemCollection::const_iterator beamItr = (*collItr)->begin(); + TileBeamElemCollection::const_iterator lastBeam = (*collItr)->end(); + + // loop over 4 integer words for one board + for (; beamItr != lastBeam; ++beamItr) { + + HWIdentifier id = (*beamItr)->adc_HWID(); + std::vector < uint32_t > digits = (*beamItr)->get_digits(); + uint32_t amplitude = (digits.size() > 0) ? digits[0] : 0; + int cha = m_tileHWID->channel(id); + + if (cha < 3) { + int idx = cha * 32; + for (int ibit = 0; ibit < 32; ++ibit) { + m_coincTrig[board].trig[idx++] = (amplitude >> ibit) & 1; + } + } else if (cha == 3) { + m_coincTrig[board].amp = amplitude; + } + } +#endif + } + break; + + default: + break; + } + } + + return StatusCode::SUCCESS; +} diff --git a/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.h b/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.h new file mode 100644 index 00000000000..7ed6dbd81ea --- /dev/null +++ b/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.h @@ -0,0 +1,87 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. +/* + * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration. + */ +/** + * @file TileRecUtils/src/TileDQstatusTool.h + * @author scott snyder <snyder@bnl.gov> + * @date Nov, 2018 + * @brief Construct a TileDQstatus object. + */ + + +#ifndef TILERECUTILS_TILEDQSTATUSTOOL_H +#define TILERECUTILS_TILEDQSTATUSTOOL_H + + +#include "TileRecUtils/ITileDQstatusTool.h" +#include "TileConditions/ITileBadChanTool.h" +#include "AthenaBaseComps/AthAlgTool.h" +#include "AthenaKernel/IAthRNGSvc.h" +#include "GaudiKernel/ServiceHandle.h" +class TileHWID; + + +class TileDQstatusTool +: public extends<AthAlgTool, ITileDQstatusTool> +{ +public: + /** + * @brief Standard Gaudi tool constructor. + * @param type The name of the tool type. + * @param name The tool name. + * @param parent The tool's Gaudi parent. + */ + TileDQstatusTool (const std::string& type, + const std::string& name, + const IInterface* parent); + + + /** + * @brief Gaudi initialize method. + */ + virtual StatusCode initialize() override; + + + /** + * @brief Make a new TileDQstatus object. + * @param ctx Event context. + * @param rawChannelContainer The TileRawChannelContainer (may be null). + * @param tileDigitsContainer The TileDigitsContainer (may be null). + * @param tileBeamElemContainer The TileBeamElemContainer (may be null). + * @param[out] dqstatus TileDQstatus object to fill. + */ + virtual + StatusCode + makeStatus (const EventContext& ctx, + const TileRawChannelContainer* rawChannelContainer, + const TileDigitsContainer* tileDigitsContainer, + const TileBeamElemContainer* tileBeamElemContainer, + TileDQstatus& dqstatus) override; + +private: + /** + * @brief Process BeamElemContainer. + * @param tileBeamElemContainer The TileBeamElemContainer (may be null). + * @param dqstatus TileDQstatus object being filled. + */ + StatusCode doBeamElem (const TileBeamElemContainer* tileBeamElemContainer, + TileDQstatus& dqstatus) const; + + + Gaudi::Property<bool> m_simulateTrips + {this, "SimulateTrips", false, "Simulate drawer trips (default=false)"}; + + ServiceHandle<IAthRNGSvc> m_athRNGSvc + {this, "AthRNGSvc", "AthRNGSvc", "Random number service"}; + + /// Tool which provides trips probabilities also + ToolHandle<ITileBadChanTool> m_tileBadChanTool; + + + /// Tile ID helper. + const TileHWID* m_tileHWID = nullptr; +}; + + +#endif // not TILERECUTILS_TILEDQSTATUSTOOL_H diff --git a/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx b/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx index 5a61cd460e3..eed93cbeee3 100644 --- a/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx +++ b/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx @@ -25,6 +25,8 @@ #include "../TileLaserObjectDumper.h" #include "../TileMuonReceiverDumper.h" #include "../TileRawChannelBuilderTest.h" +#include "../TileDQstatusTool.h" +#include "../TileDQstatusAlg.h" DECLARE_COMPONENT( TileRawChannelBuilderFlatFilter ) DECLARE_COMPONENT( TileRawChannelBuilderFitFilter ) @@ -53,4 +55,5 @@ DECLARE_COMPONENT( TileL2Dumper ) DECLARE_COMPONENT( TileLaserObjectDumper ) DECLARE_COMPONENT( TileMuonReceiverDumper ) DECLARE_COMPONENT( TileRawChannelBuilderTest ) - +DECLARE_COMPONENT( TileDQstatusTool ) +DECLARE_COMPONENT( TileDQstatusAlg ) diff --git a/TileCalorimeter/TileRecUtils/test/TileDQstatusAlg_test.sh b/TileCalorimeter/TileRecUtils/test/TileDQstatusAlg_test.sh new file mode 100755 index 00000000000..244fb877c06 --- /dev/null +++ b/TileCalorimeter/TileRecUtils/test/TileDQstatusAlg_test.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# +# Script running the TileDQstatusAlg_test.py test with CTest. +# + +# Run the job: +athena.py TileRecUtils/TileDQstatusAlg_test.py diff --git a/TileCalorimeter/TileRecUtils/test/TileDQstatusTool_test.sh b/TileCalorimeter/TileRecUtils/test/TileDQstatusTool_test.sh new file mode 100755 index 00000000000..9563acf52cf --- /dev/null +++ b/TileCalorimeter/TileRecUtils/test/TileDQstatusTool_test.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# +# Script running the TileDQstatusTool_test.py test with CTest. +# + +# Run the job: +athena.py TileRecUtils/TileDQstatusTool_test.py -- GitLab From 6139c28a9fb0daee0395b068c13db8a03b2d5968 Mon Sep 17 00:00:00 2001 From: James Beacham <j.beacham@cern.ch> Date: Sat, 24 Nov 2018 19:11:48 +0000 Subject: [PATCH 112/135] Merge branch '21.0-FastCaloSim-dev' into '21.0' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 21.0-FastCaloSim: Created class TFCSHistoLateralShapeParametrizationFCal (ATLASSIM-3927) See merge request atlas/athena!16158 (cherry picked from commit 13fc82f1052b2a920499392e4870e3060a0a2edd [formerly 66eb48ab2c02b013a09909e8b9deb01621db6c13]) 5c6d9b75 Created class TFCSHistoLateralShapeParametrizationFCal 7af2178d Changing inheratence: TFCSHistoLateralShapeParametrizationFCal inherits from… 67242fa5 Changing inheratence: TFCSHistoLateralShapeParametrizationFCal inherits from… 5a765fca Removing Print function and redundant includes Former-commit-id: 46c0ca69ab4e896c181b3cf4344e71d79be67f19 --- .../python/iconfTool/utils/__init__.py | 0 .../ISF_FastCaloSimEvent/CMakeLists.txt | 1 + .../ISF_FastCaloSimEvent/LinkDef.h | 4 +- .../TFCSHistoLateralShapeParametrization.h | 4 +- ...TFCSHistoLateralShapeParametrizationFCal.h | 29 +++++++ .../TFCSHistoLateralShapeParametrization.cxx | 5 +- ...CSHistoLateralShapeParametrizationFCal.cxx | 76 +++++++++++++++++++ 7 files changed, 114 insertions(+), 5 deletions(-) mode change 100644 => 100755 Control/AthenaConfiguration/python/iconfTool/utils/__init__.py create mode 100644 Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h create mode 100644 Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrizationFCal.cxx diff --git a/Control/AthenaConfiguration/python/iconfTool/utils/__init__.py b/Control/AthenaConfiguration/python/iconfTool/utils/__init__.py old mode 100644 new mode 100755 diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt index e7f07e8b203..413eb338342 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt @@ -61,6 +61,7 @@ atlas_add_root_dictionary( ISF_FastCaloSimEvent _dictSource ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitChain.h ISF_FastCaloSimEvent/TFCSCenterPositionCalculation.h ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h + ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitNumberFromE.h ISF_FastCaloSimEvent/TFCSHitCellMapping.h ISF_FastCaloSimEvent/TFCSHitCellMappingFCal.h diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h index 4979ed94f1f..ffce63d8d40 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "ISF_FastCaloSimEvent/DoubleArray.h" @@ -41,6 +41,7 @@ #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitChain.h" #include "ISF_FastCaloSimEvent/TFCSCenterPositionCalculation.h" #include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h" +#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h" #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitNumberFromE.h" #include "ISF_FastCaloSimEvent/TFCSHitCellMapping.h" #include "ISF_FastCaloSimEvent/TFCSHitCellMappingFCal.h" @@ -148,6 +149,7 @@ #pragma link C++ class TFCSLateralShapeParametrizationHitChain+; #pragma link C++ class TFCSCenterPositionCalculation+; #pragma link C++ class TFCSHistoLateralShapeParametrization+; +#pragma link C++ class TFCSHistoLateralShapeParametrizationFCal+; #pragma link C++ class TFCSLateralShapeParametrizationHitNumberFromE+; #pragma link C++ class TFCSHitCellMapping+; #pragma link C++ class TFCSHitCellMappingFCal+; diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h index 6066bad3d8f..1f6f406bef0 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h @@ -45,11 +45,13 @@ public: const TFCS2DFunctionHistogram& histogram() const {return m_hist;}; void Print(Option_t *option = "") const override; -private: +protected: /// Histogram to be used for the shape simulation TFCS2DFunctionHistogram m_hist; float m_nhits; +private: + ClassDefOverride(TFCSHistoLateralShapeParametrization,1) //TFCSHistoLateralShapeParametrization }; diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h new file mode 100644 index 00000000000..46e934939c9 --- /dev/null +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h @@ -0,0 +1,29 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TFCSHistoLateralShapeParametrizationFCal_h +#define TFCSHistoLateralShapeParametrizationFCal_h + +#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h" +#include "ISF_FastCaloSimEvent/TFCS2DFunctionHistogram.h" + +class TH2; + +class TFCSHistoLateralShapeParametrizationFCal:public TFCSHistoLateralShapeParametrization { +public: + TFCSHistoLateralShapeParametrizationFCal(const char* name=nullptr, const char* title=nullptr); + ~TFCSHistoLateralShapeParametrizationFCal(); + + virtual FCSReturnCode simulate_hit(Hit& hit,TFCSSimulationState& simulstate,const TFCSTruthState* truth, const TFCSExtrapolationState* extrapol) override; + +private: + + ClassDefOverride(TFCSHistoLateralShapeParametrizationFCal,1) //TFCSHistoLateralShapeParametrizationFCal +}; + +#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__) +#pragma link C++ class TFCSHistoLateralShapeParametrizationFCal+; +#endif + +#endif diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrization.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrization.cxx index 733d4067ef6..4a5db9df5f0 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrization.cxx +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrization.cxx @@ -93,10 +93,9 @@ FCSReturnCode TFCSHistoLateralShapeParametrization::simulate_hit(Hit &hit, TFCSS const float delta_eta = delta_eta_mm / eta_jakobi / dist000; const float delta_phi = delta_phi_mm / center_r; - hit.eta() = center_eta + delta_eta; - hit.phi() = center_phi + delta_phi; + hit.setEtaPhiZE(center_eta + delta_eta,center_phi + delta_phi,center_z, hit.E()); - ATH_MSG_DEBUG("HIT: E="<<hit.E()<<" cs="<<cs<<" eta="<<hit.eta()<<" phi="<<hit.phi()<<" r="<<r<<" alpha="<<alpha); + ATH_MSG_DEBUG("HIT: E="<<hit.E()<<" cs="<<cs<<" eta="<<hit.eta()<<" phi="<<hit.phi()<< " z="<<hit.z()<<" r="<<r<<" alpha="<<alpha); return FCSSuccess; } diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrizationFCal.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrizationFCal.cxx new file mode 100644 index 00000000000..43037706972 --- /dev/null +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrizationFCal.cxx @@ -0,0 +1,76 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CLHEP/Random/RandFlat.h" +#include "CLHEP/Random/RandPoisson.h" + +#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h" +#include "ISF_FastCaloSimEvent/TFCSSimulationState.h" +#include "ISF_FastCaloSimEvent/TFCSExtrapolationState.h" + +#include "TMath.h" + + +//============================================= +//======= TFCSHistoLateralShapeParametrizationFCal ========= +//============================================= + +TFCSHistoLateralShapeParametrizationFCal::TFCSHistoLateralShapeParametrizationFCal(const char* name, const char* title) : + TFCSHistoLateralShapeParametrization(name,title) +{ +} + +TFCSHistoLateralShapeParametrizationFCal::~TFCSHistoLateralShapeParametrizationFCal() +{ +} + +FCSReturnCode TFCSHistoLateralShapeParametrizationFCal::simulate_hit(Hit &hit, TFCSSimulationState &simulstate, const TFCSTruthState* /*truth*/, const TFCSExtrapolationState* extrapol) +{ + if (!simulstate.randomEngine()) { + return FCSFatal; + } + + const int cs=calosample(); + const double center_phi=0.5*( extrapol->phi(cs, CaloSubPos::SUBPOS_ENT) + extrapol->phi(cs, CaloSubPos::SUBPOS_EXT) ); + const double center_r=0.5*( extrapol->r(cs, CaloSubPos::SUBPOS_ENT) + extrapol->r(cs, CaloSubPos::SUBPOS_EXT) ); + const double center_z=0.5*( extrapol->z(cs, CaloSubPos::SUBPOS_ENT) + extrapol->z(cs, CaloSubPos::SUBPOS_EXT) ); + + const double center_x=center_r*cos(center_phi); + const double center_y=center_r*sin(center_phi); + + float alpha, r, rnd1, rnd2; + rnd1 = CLHEP::RandFlat::shoot(simulstate.randomEngine()); + rnd2 = CLHEP::RandFlat::shoot(simulstate.randomEngine()); + if(is_phi_symmetric()) { + if(rnd2>=0.5) { //Fill negative phi half of shape + rnd2-=0.5; + rnd2*=2; + m_hist.rnd_to_fct(alpha,r,rnd1,rnd2); + alpha=-alpha; + } else { //Fill positive phi half of shape + rnd2*=2; + m_hist.rnd_to_fct(alpha,r,rnd1,rnd2); + } + } else { + m_hist.rnd_to_fct(alpha,r,rnd1,rnd2); + } + if(TMath::IsNaN(alpha) || TMath::IsNaN(r)) { + ATH_MSG_ERROR(" Histogram: "<<m_hist.get_HistoBordersx().size()-1<<"*"<<m_hist.get_HistoBordersy().size()-1<<" bins, #hits="<<m_nhits<<" alpha="<<alpha<<" r="<<r<<" rnd1="<<rnd1<<" rnd2="<<rnd2); + alpha=0; + r=0.001; + + ATH_MSG_ERROR(" This error could probably be retried"); + return FCSFatal; + } + + const float delta_x = r * cos(alpha); + const float delta_y = r * sin(alpha); + + hit.setXYZE(center_x+delta_x,center_y+delta_y,center_z,hit.E()); + + ATH_MSG_DEBUG("HIT: E="<<hit.E()<<" cs="<<cs<<" x="<<hit.x()<<" y="<<hit.y()<<" z="<<hit.z()<<" r=" << r <<" alpha="<<alpha); + + return FCSSuccess; +} + -- GitLab From 6b2134f473106e71df22bfa1ffa84f857ae1b043 Mon Sep 17 00:00:00 2001 From: James Beacham <j.beacham@cern.ch> Date: Sat, 24 Nov 2018 19:04:37 +0000 Subject: [PATCH 113/135] Merge branch 'UpdatedEnhancedSlice22Config' into '21.0' Updated enhanced slice22 config See merge request atlas/athena!16079 (cherry picked from commit 4dc2fc321a0e96ae08011f9e8d93431586d85fdd [formerly dd49a2dfdc6fbc69094cad17917f145177e5c638]) 973ac77d do not hard-code value of inputNTUP_FTKIPFile 2207785c set FTKRegionalWrapper EmulateDF = True 08a87ba5 re-order ROD list to match the one in FTKSIM-107 Former-commit-id: 240fb9468c263003ef2371d38884df735a9e8dfd --- ...ckSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py | 8 +++++--- .../TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py | 1 - 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py b/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py index 57df2c95747..1fdb4541a82 100644 --- a/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py +++ b/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py @@ -44,13 +44,15 @@ wrapper.PixelClusteringMode = 101 wrapper.Ibl3DRealistic = False wrapper.SctClustering = True wrapper.Clustering = True +wrapper.EmulateDF = True ####wrapper.GetOffline = True wrapper.GetOffline = False -### Tower 22 ROD list, see slide 53 of https://indico.cern.ch/event/712049/contributions/2924263/attachments/1622355/2581965/ftk_intro_session.pdf -wrapper.pixRodIds = ['0x111750', '0x112521', '0x112559', '0x130149', '0x111710', '0x130146', '0x140103', '0x140093'] -wrapper.sctRodIds = ['0x220100', '0x220101', '0x220102', '0x220103'] +### EnhancedSlice22 ROD ID list, see: +### https://its.cern.ch/jira/browse/FTKSIM-107?focusedCommentId=2350985&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-2350985 +wrapper.pixRodIds = ['0x140103','0x111750','0x112521','0x112559','0x140093','0x130149','0x111710','0x130146'] +wrapper.sctRodIds = ['0x220100','0x220103','0x220101','0x220102'] theJob += wrapper diff --git a/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py b/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py index 98cf35347e3..c53c904054b 100755 --- a/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py +++ b/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py @@ -98,7 +98,6 @@ def getTransform(): outData=['NTUP_FTK'], runtimeRunargs={ 'inputNTUP_FTKTMPFile': "['tmp.NTUP_FTKTMP']", - 'inputNTUP_FTKIPFile' : "['OUT.NTUP_FTKIP.root']", 'MergeFromTowers': True, 'FirstRegion': 0, 'NBanks': 1, -- GitLab From 8720838907657119a9c1581ca36b55a5405df54c Mon Sep 17 00:00:00 2001 From: Andrea Coccaro <andrea.coccaro@cern.ch> Date: Sun, 25 Nov 2018 17:31:41 +0000 Subject: [PATCH 114/135] Merge branch 'cherry-pick-4dc2fc321a [formerly dd49a2dfdc]-21.1' into '21.1' Sweeping !16079 from 21.0 to 21.1. Updated enhanced slice22 config See merge request atlas/athena!16217 (cherry picked from commit 8ac20a3682b793b6986247e779c522bd9ffa9c8b [formerly 790ce14ed7f6e47172e0b8fc8bede2f9dd4b2001]) c7c24e54 Merge branch 'UpdatedEnhancedSlice22Config' into '21.0' Former-commit-id: 4e33fc2044aa6e195ad8b929531bc3b6adbf05f7 --- ...ckSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py | 8 +++++--- .../TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py | 1 - 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py b/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py index 57df2c95747..1fdb4541a82 100644 --- a/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py +++ b/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py @@ -44,13 +44,15 @@ wrapper.PixelClusteringMode = 101 wrapper.Ibl3DRealistic = False wrapper.SctClustering = True wrapper.Clustering = True +wrapper.EmulateDF = True ####wrapper.GetOffline = True wrapper.GetOffline = False -### Tower 22 ROD list, see slide 53 of https://indico.cern.ch/event/712049/contributions/2924263/attachments/1622355/2581965/ftk_intro_session.pdf -wrapper.pixRodIds = ['0x111750', '0x112521', '0x112559', '0x130149', '0x111710', '0x130146', '0x140103', '0x140093'] -wrapper.sctRodIds = ['0x220100', '0x220101', '0x220102', '0x220103'] +### EnhancedSlice22 ROD ID list, see: +### https://its.cern.ch/jira/browse/FTKSIM-107?focusedCommentId=2350985&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-2350985 +wrapper.pixRodIds = ['0x140103','0x111750','0x112521','0x112559','0x140093','0x130149','0x111710','0x130146'] +wrapper.sctRodIds = ['0x220100','0x220103','0x220101','0x220102'] theJob += wrapper diff --git a/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py b/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py index 98cf35347e3..c53c904054b 100755 --- a/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py +++ b/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py @@ -98,7 +98,6 @@ def getTransform(): outData=['NTUP_FTK'], runtimeRunargs={ 'inputNTUP_FTKTMPFile': "['tmp.NTUP_FTKTMP']", - 'inputNTUP_FTKIPFile' : "['OUT.NTUP_FTKIP.root']", 'MergeFromTowers': True, 'FirstRegion': 0, 'NBanks': 1, -- GitLab From a1a2ab1e2e9830145df819c05c4e5aff380c9571 Mon Sep 17 00:00:00 2001 From: Scott Snyder <scott.snyder@cern.ch> Date: Mon, 26 Nov 2018 09:04:50 +0000 Subject: [PATCH 115/135] AthenaKernel+CxxUtils+AthenaServices: Reduce amount of templated CondCont code. Former-commit-id: 44d0be8e0470cb6d2d69c0164dd99591bfad1e6f --- Control/AthenaKernel/AthenaKernel/CondCont.h | 338 ++++-------- .../AthenaKernel/AthenaKernel/CondCont.icc | 518 +++--------------- Control/AthenaKernel/src/CondCont.cxx | 365 +++++++++++- .../test/ConditionsCleanerSvc_test.cxx | 48 +- .../test/DelayedConditionsCleanerSvc_test.cxx | 48 +- .../CxxUtils/CxxUtils/ConcurrentRangeMap.h | 94 +++- .../CxxUtils/CxxUtils/ConcurrentRangeMap.icc | 39 +- .../CxxUtils/test/ConcurrentRangeMap_test.cxx | 12 +- 8 files changed, 708 insertions(+), 754 deletions(-) diff --git a/Control/AthenaKernel/AthenaKernel/CondCont.h b/Control/AthenaKernel/AthenaKernel/CondCont.h index 358f45c8fa8..81515ec7275 100644 --- a/Control/AthenaKernel/AthenaKernel/CondCont.h +++ b/Control/AthenaKernel/AthenaKernel/CondCont.h @@ -114,27 +114,28 @@ public: /** * @brief Return CLID/key corresponding to this container. */ - virtual const DataObjID& id() const = 0; + const DataObjID& id() const; /** * @brief Return the associated @c DataProxy, if any. */ - virtual SG::DataProxy* proxy() = 0; + SG::DataProxy* proxy(); /** * @brief Set the associated @c DataProxy. * @param proxy The proxy to set. */ - virtual void setProxy(SG::DataProxy*) = 0; + void setProxy(SG::DataProxy*); /** * @brief Dump the container contents for debugging. * @param ost Stream to which to write the dump. */ - virtual void list (std::ostream& ost) const = 0; + virtual + void list (std::ostream& ost) const; /** @@ -146,27 +147,30 @@ public: /** * @brief Return the number of conditions objects in the container. */ - virtual size_t entries() const = 0; + size_t entries() const; /** * @brief Return the number of run+LBN conditions objects * in the container. */ - virtual size_t entriesRunLBN() const = 0; + virtual + size_t entriesRunLBN() const; /** * @brief Return the number of timestamp-based conditions objects * in the container. */ - virtual size_t entriesTimestamp() const = 0; + virtual + size_t entriesTimestamp() const; /** * @brief Return all IOV validity ranges defined in this container. */ - virtual std::vector<EventIDRange> ranges() const = 0; + virtual + std::vector<EventIDRange> ranges() const; /** @@ -185,16 +189,18 @@ public: * duplicates an existing one, and FAILURE otherwise * (ownership of the object will be taken in any case). */ - virtual StatusCode typelessInsert (const EventIDRange& r, - void* obj, - const EventContext& ctx = Gaudi::Hive::currentContext()) = 0; + virtual + StatusCode typelessInsert (const EventIDRange& r, + void* obj, + const EventContext& ctx = Gaudi::Hive::currentContext()); /** * @brief Test to see if a given IOV time is mapped in the container. * @param t IOV time to check. */ - virtual bool valid( const EventIDBase& t) const = 0; + virtual + bool valid( const EventIDBase& t) const; /** @@ -204,7 +210,8 @@ public: * * Returns true if @c t is mapped; false otherwise. */ - virtual bool range (const EventIDBase& t, EventIDRange& r) const = 0; + virtual + bool range (const EventIDBase& t, EventIDRange& r) const; /** @@ -212,8 +219,9 @@ public: * @param IOV time of element to erase. * @param ctx Event context for the current thread. */ - virtual void erase (const EventIDBase& t, - const EventContext& ctx = Gaudi::Hive::currentContext()) = 0; + virtual + void erase (const EventIDBase& t, + const EventContext& ctx = Gaudi::Hive::currentContext()); /** @@ -235,7 +243,8 @@ public: * * Returns the number of objects that were removed. */ - virtual size_t trimRunLBN (const std::vector<key_type>& keys) = 0; + virtual + size_t trimRunLBN (const std::vector<key_type>& keys); /** @@ -257,7 +266,8 @@ public: * * Returns the number of objects that were removed. */ - virtual size_t trimTimestamp (const std::vector<key_type>& keys) = 0; + virtual + size_t trimTimestamp (const std::vector<key_type>& keys); /** @@ -267,19 +277,19 @@ public: * This would normally be done through RCU service. * Defined here for purposes of testing. */ - virtual void quiescent (const EventContext& ctx = Gaudi::Hive::currentContext()) = 0; + void quiescent (const EventContext& ctx = Gaudi::Hive::currentContext()); /** * @brief Return the number times an item was inserted into the map. */ - virtual size_t nInserts() const = 0; + size_t nInserts() const; /** * @brief Return the maximum size of the map. */ - virtual size_t maxSize() const = 0; + size_t maxSize() const; /** @@ -292,8 +302,9 @@ public: * IOV is changed to the end time for @c newRange. (If the end time for @c newRange * is before the end of the last IOV, then nothing is changed.) */ - virtual StatusCode extendLastRange (const EventIDRange& newRange, - const EventContext& ctx = Gaudi::Hive::currentContext()) = 0; + virtual + StatusCode extendLastRange (const EventIDRange& newRange, + const EventContext& ctx = Gaudi::Hive::currentContext()); /** @@ -377,17 +388,56 @@ public: protected: + typedef CxxUtils::ConcurrentRangeMap<RangeKey, key_type, void, Compare, + Athena::RCUUpdater> + CondContSet; + + typedef CondContSet::Updater_t Updater_t; + /** * @brief Internal constructor. * @param rcusvc RCU service instance. * @param CLID of the most-derived @c CondCont. * @param id CLID+key for this object. * @param proxy @c DataProxy for this object. + * @param delfcn Deletion function for the actual payload type. + * @param capacity Initial capacity of the container. */ CondContBase (Athena::IRCUSvc& rcusvc, CLID clid, const DataObjID& id, - SG::DataProxy* proxy); + SG::DataProxy* proxy, + CondContSet::delete_function* delfcn, + size_t capacity); + + + /** + * @brief Insert a new conditions object. + * @param r Range of validity of this object. + * @param t Pointer to the object being inserted. + * @param ctx Event context for the current thread. + * + * Returns SUCCESS if the object was successfully inserted; + * DUPLICATE if the object wasn't inserted because the range + * duplicates an existing one, and FAILURE otherwise + * (ownership of the object will be taken in any case). + */ + StatusCode insertBase (const EventIDRange& r, + CondContSet::payload_unique_ptr t, + const EventContext& ctx = Gaudi::Hive::currentContext()); + + + /** + * @brief Internal lookup function. + * @param t IOV time to find. + * @param r If non-null, copy validity range of the object here. + * + * Looks up the conditions object corresponding to the IOV time @c t. + * If found, return the pointer (as a pointer to the payload type + * of the most-derived CondCont). Otherwise, return nullptr. + */ + const void* findBase (const EventIDBase& t, + EventIDRange const** r) const; /** @@ -402,19 +452,19 @@ protected: const void* cast (CLID clid, const void* ptr) const; - /** - * @brief Internal lookup function. + /** + * @brief Do pointer conversion for the payload type. * @param clid CLID for the desired pointer type. - * @param t IOV time to find. - * @param r If non-null, copy validity range of the object here. + * @param ptr Pointer of type @c T*. * - * Looks up the conditions object corresponding to the IOV time @c t. - * If found, convert the pointer to a pointer to the type identified - * by CLID and return it. Otherwise, return nullptr. + * Converts @c ptr from @c T* to a pointer to the type + * given by @c clid. Returns nullptr if the conversion + * is not possible. + * + * This is a virtual function that calls @c cast from the most-derived class + * of the hierarchy. */ - virtual const void* findByCLID (CLID clid, - const EventIDBase& t, - EventIDRange const** r) const = 0; + virtual const void* doCast (CLID clid, const void* ptr) const = 0; /** @@ -427,6 +477,15 @@ private: /// CLID of the most-derived @c CondCont CLID m_clid; + /// CLID+key for this container. + DataObjID m_id; + + /// Associated @c DataProxy. + SG::DataProxy* m_proxy; + + /// Sets of mapped objects, by timestamp and run+LBN. + CondContSet m_condSet_clock, m_condSet_RE; + /// Handle to the cleaner service. ServiceHandle<Athena::IConditionsCleanerSvc> m_cleanerSvc; @@ -523,6 +582,8 @@ public: /// Base class. typedef typename CondContBaseInfo<T>::Base Base; + typedef typename Base::CondContSet CondContSet; + /// Payload type held by this class. typedef T Payload; @@ -550,79 +611,6 @@ public: CondCont& operator= (const CondCont&) = delete; - /** - * @brief Return CLID/key corresponding to this container. - */ - virtual const DataObjID& id() const override; - - - /** - * @brief Return the associated @c DataProxy, if any. - */ - virtual SG::DataProxy* proxy() override; - - - /** - * @brief Set the associated @c DataProxy. - * @param proxy The proxy to set. - */ - virtual void setProxy (SG::DataProxy* proxy) override; - - - /** - * @brief Dump the container contents for debugging. - * @param ost Stream to which to write the dump. - */ - virtual void list (std::ostream& ost) const override; - - - /** - * @brief Return the number of conditions objects in the container. - */ - virtual size_t entries() const override; - - - /** - * @brief Return the number of run+LBN conditions objects - * in the container. - */ - virtual size_t entriesRunLBN() const override; - - - /** - * @brief Return the number of timestamp-based conditions objects - * in the container. - */ - virtual size_t entriesTimestamp() const override; - - - /** - * @brief Return all IOV validity ranges defined in this container. - */ - virtual std::vector<EventIDRange> ranges() const override; - - - /** - * @brief Insert a new conditions object. - * @param r Range of validity of this object. - * @param obj Pointer to the object being inserted. - * @param ctx Event context for the current thread. - * - * @c obj must point to an object of type @c T, - * except in the case of inheritance, where the type of @c obj must - * correspond to the most-derived @c CondCont type. - * The container will take ownership of this object. - * - * Returns SUCCESS if the object was successfully inserted; - * DUPLICATE if the object wasn't inserted because the range - * duplicates an existing one, and FAILURE otherwise - * (ownership of the object will be taken in any case). - */ - virtual StatusCode typelessInsert (const EventIDRange& r, - void* obj, - const EventContext& ctx = Gaudi::Hive::currentContext()) override; - - /** * @brief Insert a new conditions object. * @param r Range of validity of this object. @@ -656,103 +644,6 @@ public: EventIDRange const** r = nullptr) const; - /** - * @brief Test to see if a given IOV time is mapped in the container. - * @param t IOV time to check. - */ - virtual bool valid (const EventIDBase& t) const override; - - - /** - * @brief Return the mapped validity range for an IOV time. - * @param t IOV time to check. - * @param r[out] The range containing @c t. - * - * Returns true if @c t is mapped; false otherwise. - */ - virtual bool range (const EventIDBase& t, EventIDRange& r) const override; - - - /** - * @brief Erase the first element not less than @c t. - * @param IOV time of element to erase. - * @param ctx Event context for the current thread. - */ - virtual void erase (const EventIDBase& t, - const EventContext& ctx = Gaudi::Hive::currentContext()) override; - - - /** - * @brief Remove unused run+LBN entries from the front of the list. - * @param keys List of keys that may still be in use. - * (Must be sorted.) - * - * We examine the objects in the container, starting with the earliest one. - * If none of the keys in @c keys match the range for this object, then - * it is removed from the container. We stop when we either find - * an object with a range matching a key in @c keys or when there - * is only one object left. - * - * The list @c keys should contain keys as computed by keyFromRunLBN. - * The list must be sorted. - * - * Removed objects are queued for deletion once all slots have been - * marked as quiescent. - * - * Returns the number of objects that were removed. - */ - virtual size_t trimRunLBN (const std::vector<key_type>& keys) override; - - - /** - * @brief Remove unused timestamp entries from the front of the list. - * @param keys List of keys that may still be in use. - * (Must be sorted.) - * - * We examine the objects in the container, starting with the earliest one. - * If none of the keys in @c keys match the range for this object, then - * it is removed from the container. We stop when we either find - * an object with a range matching a key in @c keys or when there - * is only one object left. - * - * The list @c keys should contain keys as computed by keyFromRunLBN. - * The list must be sorted. - * - * Removed objects are queued for deletion once all slots have been - * marked as quiescent. - * - * Returns the number of objects that were removed. - */ - virtual size_t trimTimestamp (const std::vector<key_type>& keys) override; - - - /** - * @brief Mark that this thread is no longer accessing data from this container. - * @param ctx Event context for the current thread. - * - * This would normally be done through RCU service. - * Defined here for purposes of testing. - */ - virtual void - quiescent (const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) override; - - - /** - * @brief Return the number times an item was inserted into the map. - */ - virtual size_t nInserts() const override; - - - /** - * @brief Return the maximum size of the map. - */ - virtual size_t maxSize() const override; - - - virtual StatusCode extendLastRange (const EventIDRange& newRange, - const EventContext& ctx = Gaudi::Hive::currentContext()) override; - - protected: /** * @brief Internal constructor. @@ -760,11 +651,15 @@ protected: * @param CLID of the most-derived @c CondCont. * @param id CLID+key for this object. * @param proxy @c DataProxy for this object. + * @param delfcn Deletion function for the actual payload type. + * @param capacity Initial capacity of the container. */ CondCont (Athena::IRCUSvc& rcusvc, CLID clid, const DataObjID& id, - SG::DataProxy* proxy); + SG::DataProxy* proxy, + const typename CondContSet::delete_function* delfcn, + size_t capacity); /** @@ -779,19 +674,19 @@ protected: const void* cast (CLID clid, const void* ptr) const; - /** - * @brief Internal lookup function. + /** + * @brief Do pointer conversion for the payload type. * @param clid CLID for the desired pointer type. - * @param t IOV time to find. - * @param r If non-null, copy validity range of the object here. + * @param ptr Pointer of type @c T*. * - * Looks up the conditions object corresponding to the IOV time @c t. - * If found, convert the pointer to a pointer to the type identified - * by CLID and return it. Otherwise, return nullptr. + * Converts @c ptr from @c T* to a pointer to the type + * given by @c clid. Returns nullptr if the conversion + * is not possible. + * + * This is a virtual function that calls @c cast from the most-derived class + * of the hierarchy. */ - virtual const void* findByCLID (CLID clid, - const EventIDBase& t, - EventIDRange const** r) const override; + virtual const void* doCast (CLID clid, const void* ptr) const override; public: @@ -804,17 +699,10 @@ private: typedef CondContBase::RangeKey RangeKey; - /// Sets of mapped objects, by timestamp and run+LBN. - typedef CxxUtils::ConcurrentRangeMap<RangeKey, key_type, T, CondContBase::Compare, - Athena::RCUUpdater> - CondContSet; - CondContSet m_condSet_clock, m_condSet_RE; - - /// CLID+key for this container. - DataObjID m_id; - - /// Associated @c DataProxy. - SG::DataProxy* m_proxy; + /// Deletion function to pass to @c ConcurrentRangeMap. + static void delfcn (const void* p) { + delete reinterpret_cast<const T*>(p); + } }; diff --git a/Control/AthenaKernel/AthenaKernel/CondCont.icc b/Control/AthenaKernel/AthenaKernel/CondCont.icc index 7432e3c35d3..aac30e77d63 100644 --- a/Control/AthenaKernel/AthenaKernel/CondCont.icc +++ b/Control/AthenaKernel/AthenaKernel/CondCont.icc @@ -20,6 +20,49 @@ CLID CondContBase::clid() const } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + +/** + * @brief Return CLID/key corresponding to this container. + */ +inline +const DataObjID& CondContBase::id() const +{ + return m_id; +} + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + +/** + * @brief Return the associated @c DataProxy, if any. + */ +inline +SG::DataProxy* CondContBase::proxy() +{ + return m_proxy; +} + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + +/** + * @brief Test to see if a given IOV time is mapped in the container. + * @param t IOV time to check. + */ +inline +bool CondContBase::valid (const EventIDBase& t) const +{ + return findBase (t, nullptr) != nullptr; +} + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** * @brief Do pointer conversion for the payload type. * @param clid CLID for the desired pointer type. @@ -45,6 +88,9 @@ CondContBase::key_type CondContBase::keyFromRunLBN (const EventIDBase& b) } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** * @brief Make a timestamp key from an EventIDBase. * @param Event ID to convert. @@ -56,6 +102,9 @@ CondContBase::key_type CondContBase::keyFromTimestamp (const EventIDBase& b) } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** * @brief Default constructor. */ @@ -67,6 +116,9 @@ CondContBase::RangeKey::RangeKey() } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** * @brief Constructor from range+start/stop. * @param r The range to store. @@ -100,11 +152,7 @@ CondCont<T>::CondCont (Athena::IRCUSvc& rcusvc, const DataObjID& id, SG::DataProxy* proxy /*=nullptr*/, size_t capacity /*= 16*/) - : Base (rcusvc, ClassID_traits<CondCont<T> >::ID(), id, proxy), - m_condSet_clock (typename CondContSet::Updater_t (rcusvc), capacity), - m_condSet_RE (typename CondContSet::Updater_t (rcusvc), capacity), - m_id (id), - m_proxy (proxy) + : Base (rcusvc, ClassID_traits<CondCont<T> >::ID(), id, proxy, delfcn, capacity) { CondCont<T>::registerBaseInit(); } @@ -124,171 +172,13 @@ CondCont<T>::~CondCont<T>() { /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/** - * @brief Return CLID/key corresponding to this container. - */ -template <class T> -inline -const DataObjID& CondCont<T>::id() const -{ - return m_id; -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Return the associated @c DataProxy, if any. - */ -template <class T> -inline -SG::DataProxy* CondCont<T>::proxy() -{ - return m_proxy; -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Set the associated @c DataProxy. - * @param proxy The proxy to set. - */ -template <class T> -inline -void CondCont<T>::setProxy (SG::DataProxy* proxy) -{ - m_proxy = proxy; -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Dump the container contents for debugging. - * @param ost Stream to which to write the dump. - */ -template <typename T> -void CondCont<T>::list (std::ostream& ost) const -{ - ost << "id: " << m_id << " proxy: " << m_proxy << std::endl; - - ost << "clock: [" << m_condSet_clock.size() << "]" << std::endl; - for (const typename CondContSet::value_type& ent : m_condSet_clock.range()) { - ost << ent.first.m_range << " " << ent.second << std::endl; - } - ost << "RE: [" << m_condSet_RE.size() << "]" << std::endl; - for (const typename CondContSet::value_type& ent : m_condSet_RE.range()) { - ost << ent.first.m_range << " " << ent.second << std::endl; - } -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Return the number of conditions objects in the container. - */ -template <typename T> -size_t CondCont<T>::entries() const -{ - return m_condSet_RE.size() + m_condSet_clock.size(); -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Return the number of run+LBN conditions objects - * in the container. - */ -template <typename T> -size_t CondCont<T>::entriesRunLBN() const -{ - return m_condSet_RE.size(); -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Return the number of timestamp-based conditions objects - * in the container. - */ -template <typename T> -size_t CondCont<T>::entriesTimestamp() const -{ - return m_condSet_clock.size(); -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Return all IOV validity ranges defined in this container. - */ -template <typename T> -std::vector<EventIDRange> -CondCont<T>::ranges() const -{ - std::vector<EventIDRange> r; - r.reserve (m_condSet_RE.size() + m_condSet_clock.size()); - for (const typename CondContSet::value_type& ent : m_condSet_RE.range()) { - r.push_back( ent.first.m_range ); - } - for (const typename CondContSet::value_type& ent : m_condSet_clock.range()) { - r.push_back( ent.first.m_range ); - } - - return r; -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** * @brief Insert a new conditions object. * @param r Range of validity of this object. - * @param obj Pointer to the object being inserted. + * @param t Pointer to the object being inserted. * @param ctx Event context for the current thread. * - * @c obj must point to an object of type @c T, - * except in the case of inheritance, where the type of @c obj must - * correspond to the most-derived @c CondCont type. - * The container will take ownership of this object. - * - * Returns SUCCESS if the object was successfully inserted; - * DUPLICATE if the object wasn't inserted because the range - * duplicates an existing one, and FAILURE otherwise - * (ownership of the object will be taken in any case). - */ -template <typename T> -StatusCode CondCont<T>::typelessInsert (const EventIDRange& r, - void* obj, - const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) -{ - return insert (r, std::unique_ptr<T> (static_cast<T*>(obj)), ctx); -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Insert a new conditions object. - * @param r Range of validity of this object. - * @param obj Pointer to the object being inserted. - * @param ctx Event context for the current thread. - * - * @c obj must point to an object of type @c T. + * @c t must point to an object of type @c T. * This will give an error if this is not called * on the most-derived @c CondCont. * @@ -308,39 +198,7 @@ StatusCode CondCont<T>::insert (const EventIDRange& r, return StatusCode::FAILURE; } - EventIDBase start = r.start(); - EventIDBase stop = r.stop(); - - // LBN part of ranges may be undefined for an open-ended range. - if (start.run_number() != EventIDBase::UNDEFNUM && - stop.run_number() != EventIDBase::UNDEFNUM) - { - if (!m_condSet_RE.emplace( RangeKey(r, - CondContBase::keyFromRunLBN (start), - CondContBase::keyFromRunLBN (stop)), - std::move(t), ctx )) - { - return CondContStatusCode::DUPLICATE; - } - - } - else if (start.isTimeStamp() && stop.isTimeStamp()) { - if (!m_condSet_clock.emplace( RangeKey(r, - CondContBase::keyFromTimestamp (start), - CondContBase::keyFromTimestamp (stop)), - std::move(t), ctx )) - { - return CondContStatusCode::DUPLICATE; - } - } - else { - std::cerr << "CondCont<T>::insert error: EventIDRange " << r - << " is neither fully RunEvent nor TimeStamp" - << std::endl; - return StatusCode::FAILURE; - } - - return this->inserted (ctx); + return Base::insertBase (r, std::move(t), ctx); } @@ -360,75 +218,14 @@ bool CondCont<T>::find (const EventIDBase& t, T const *& obj, EventIDRange const** r) const { - const void* ptr = findByCLID (ClassID_traits<CondCont<T> >::ID(), t, r); - obj = reinterpret_cast<const T*> (ptr); - return obj != nullptr; -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Test to see if a given IOV time is mapped in the container. - * @param t IOV time to check. - */ -template <typename T> -bool CondCont<T>::valid (const EventIDBase& t) const -{ - return findByCLID (this->clid(), t, nullptr) != nullptr; -} + const void* ptr = Base::findBase (t, r); - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Return the mapped validity range for an IOV time. - * @param t IOV time to check. - * @param r[out] The range containing @c t. - * - * Returns true if @c t is mapped; false otherwise. - */ -template <typename T> -bool -CondCont<T>::range(const EventIDBase& t, EventIDRange& r) const -{ - const EventIDRange* rp = nullptr; - if (findByCLID (this->clid(), t, &rp) != nullptr) { - r = *rp; - return true; + if (ClassID_traits<CondCont<T> >::ID() != this->clid()) { + ptr = doCast (ClassID_traits<CondCont<T> >::ID(), ptr); } - return false; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Remove unused run+LBN entries from the front of the list. - * @param keys List of keys that may still be in use. - * (Must be sorted.) - * - * We examine the objects in the container, starting with the earliest one. - * If none of the keys in @c keys match the range for this object, then - * it is removed from the container. We stop when we either find - * an object with a range matching a key in @c keys or when there - * is only one object left. - * - * The list @c keys should contain keys as computed by keyFromRunLBN. - * The list must be sorted. - * - * Removed objects are queued for deletion once all slots have been - * marked as quiescent. - * - * Returns the number of objects that were removed. - */ -template <typename T> -size_t CondCont<T>::trimRunLBN (const std::vector<key_type>& keys) -{ - return m_condSet_RE.trim (keys); + obj = reinterpret_cast<const T*> (ptr); + return obj != nullptr; } @@ -436,131 +233,22 @@ size_t CondCont<T>::trimRunLBN (const std::vector<key_type>& keys) /** - * @brief Remove unused timestamp entries from the front of the list. - * @param keys List of keys that may still be in use. - * (Must be sorted.) - * - * We examine the objects in the container, starting with the earliest one. - * If none of the keys in @c keys match the range for this object, then - * it is removed from the container. We stop when we either find - * an object with a range matching a key in @c keys or when there - * is only one object left. - * - * The list @c keys should contain keys as computed by keyFromRunLBN. - * The list must be sorted. - * - * Removed objects are queued for deletion once all slots have been - * marked as quiescent. + * @brief Do pointer conversion for the payload type. + * @param clid CLID for the desired pointer type. + * @param ptr Pointer of type @c T*. * - * Returns the number of objects that were removed. - */ -template <typename T> -size_t CondCont<T>::trimTimestamp (const std::vector<key_type>& keys) -{ - return m_condSet_clock.trim (keys); -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Erase the first element not less than @c t. - * @param IOV time of element to erase. - * @param ctx Event context for the current thread. - */ -template <typename T> -void CondCont<T>::erase (const EventIDBase& t, - const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) -{ - if (t.isRunLumi()) { - m_condSet_RE.erase (CondContBase::keyFromRunLBN (t), ctx); - } - else if (t.isTimeStamp()) { - m_condSet_clock.erase (CondContBase::keyFromTimestamp (t), ctx); - } -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Mark that this thread is no longer accessing data from this container. - * @param ctx Event context for the current thread. + * Converts @c ptr from @c T* to a pointer to the type + * given by @c clid. Returns nullptr if the conversion + * is not possible. * - * This would normally be done through RCU service. - * Defined here for purposes of testing. - */ -template <typename T> -void -CondCont<T>::quiescent (const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) -{ - m_condSet_RE.quiescent (ctx); - m_condSet_clock.quiescent (ctx); -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Return the number times an item was inserted into the map. - */ -template <typename T> -inline -size_t CondCont<T>::nInserts() const -{ - return m_condSet_clock.nInserts() + m_condSet_RE.nInserts(); -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** - * @brief Return the maximum size of the map. + * This is a virtual function that calls @c cast from the most-derived class + * of the hierarchy. */ template <typename T> inline -size_t CondCont<T>::maxSize() const -{ - return m_condSet_clock.maxSize() + m_condSet_RE.maxSize(); -} - - -/** - * @brief Extend the range of the last IOV. - * @param newRange New validity range. - * @param ctx Event context. - * - * Returns failure if the start time of @c newRange does not match the start time - * of the last IOV in the container. Otherwise, the end time for the last - * IOV is changed to the end time for @c newRange. (If the end time for @c newRange - * is before the end of the last IOV, then nothing is changed.) - */ -template <typename T> -StatusCode -CondCont<T>::extendLastRange (const EventIDRange& newRange, - const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) +const void* CondCont<T>::doCast (CLID clid, const void* ptr) const { - typename CondContSet::const_iterator it = nullptr; - if (newRange.start().isRunLumi()) { - it = m_condSet_RE.extendLastRange - (RangeKey (newRange, - CondContBase::keyFromRunLBN (newRange.start()), - CondContBase::keyFromRunLBN (newRange.stop())), ctx); - } - else if (newRange.start().isTimeStamp()) { - it = m_condSet_clock.extendLastRange - (RangeKey (newRange, - CondContBase::keyFromTimestamp (newRange.start()), - CondContBase::keyFromTimestamp (newRange.stop())), ctx); - } - if (it != nullptr) { - return StatusCode::SUCCESS; - } - return StatusCode::FAILURE; + return cast (clid, ptr); } @@ -573,18 +261,18 @@ CondCont<T>::extendLastRange (const EventIDRange& newRange, * @param CLID of the most-derived @c CondCont. * @param id CLID+key for this object. * @param proxy @c DataProxy for this object. + * @param delfcn Deletion function for the actual payload type. + * @param capacity Initial capacity of the container. */ template <typename T> inline CondCont<T>::CondCont (Athena::IRCUSvc& rcusvc, CLID clid, const DataObjID& id, - SG::DataProxy* proxy) - : Base (rcusvc, clid, id, proxy), - m_condSet_clock (typename CondContSet::Updater_t (rcusvc)), - m_condSet_RE (typename CondContSet::Updater_t (rcusvc)), - m_id(id), - m_proxy(proxy) + SG::DataProxy* proxy, + const typename CondContSet::delete_function* delfcn, + size_t capacity) + : Base (rcusvc, clid, id, proxy, delfcn, capacity) { CondCont<T>::registerBaseInit(); } @@ -603,6 +291,7 @@ CondCont<T>::CondCont (Athena::IRCUSvc& rcusvc, * is not possible. */ template <typename T> +inline const void* CondCont<T>::cast (CLID clid, const void* ptr) const { if (clid == ClassID_traits<CondCont<T> >::ID()) @@ -615,57 +304,6 @@ const void* CondCont<T>::cast (CLID clid, const void* ptr) const /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/** - * @brief Internal lookup function. - * @param clid CLID for the desired pointer type. - * @param t IOV time to find. - * @param r If non-null, copy validity range of the object here. - * - * Looks up the conditions object corresponding to the IOV time @c t. - * If found, convert the pointer to a pointer to the type identified - * by CLID and return it. Otherwise, return nullptr. - */ -template <typename T> -const void* CondCont<T>::findByCLID (CLID clid, - const EventIDBase& t, - EventIDRange const** r) const -{ - const void* ptr = nullptr; - if (t.isRunLumi()) { - key_type key = CondContBase::keyFromRunLBN (t); - typename CondContSet::const_iterator it = m_condSet_RE.find (key); - if (it && key < it->first.m_stop) { - if (r) { - *r = &it->first.m_range; - } - ptr = it->second; - } - } - - if (!ptr && t.isTimeStamp()) { - key_type key = CondContBase::keyFromTimestamp (t); - typename CondContSet::const_iterator it = m_condSet_clock.find (key); - if (it && key < it->first.m_stop) { - if (r) { - *r = &it->first.m_range; - } - ptr = it->second; - } - } - - // Do pointer conversion if needed. - if (ptr && clid != ClassID_traits<CondCont<T> >::ID()) { - ptr = Base::cast (clid, static_cast<const typename Base::Payload*> - (reinterpret_cast<const T*> (ptr))); - } - - return ptr; -} - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /** * @brief Helper to ensure that the inheritance information for this class * gets initialized. diff --git a/Control/AthenaKernel/src/CondCont.cxx b/Control/AthenaKernel/src/CondCont.cxx index 553ae76fb2f..b68ef6806ed 100644 --- a/Control/AthenaKernel/src/CondCont.cxx +++ b/Control/AthenaKernel/src/CondCont.cxx @@ -63,12 +63,269 @@ bool CondContBase::Category::isDuplicate (StatusCode code) STATUSCODE_ENUM_IMPL (CondContStatusCode, CondContBase::Category) +/** + * @brief Set the associated @c DataProxy. + * @param proxy The proxy to set. + */ +void CondContBase::setProxy (SG::DataProxy* proxy) +{ + m_proxy = proxy; +} + + +/** + * @brief Dump the container contents for debugging. + * @param ost Stream to which to write the dump. + */ +void CondContBase::list (std::ostream& ost) const +{ + ost << "id: " << m_id << " proxy: " << m_proxy << std::endl; + + ost << "clock: [" << m_condSet_clock.size() << "]" << std::endl; + for (const typename CondContSet::value_type& ent : m_condSet_clock.range()) { + ost << ent.first.m_range << " " << ent.second << std::endl; + } + ost << "RE: [" << m_condSet_RE.size() << "]" << std::endl; + for (const typename CondContSet::value_type& ent : m_condSet_RE.range()) { + ost << ent.first.m_range << " " << ent.second << std::endl; + } +} + + /** * @brief Dump the container to cout. For calling from the debugger. */ void CondContBase::print() const { - this->list (std::cout); + list (std::cout); +} + + +/** + * @brief Return the number of conditions objects in the container. + */ +size_t CondContBase::entries() const +{ + return m_condSet_RE.size() + m_condSet_clock.size(); +} + + +/** + * @brief Return the number of run+LBN conditions objects + * in the container. + */ +size_t CondContBase::entriesRunLBN() const +{ + return m_condSet_RE.size(); +} + + +/** + * @brief Return the number of timestamp-based conditions objects + * in the container. + */ +size_t CondContBase::entriesTimestamp() const +{ + return m_condSet_clock.size(); +} + + +/** + * @brief Return all IOV validity ranges defined in this container. + */ +std::vector<EventIDRange> +CondContBase::ranges() const +{ + std::vector<EventIDRange> r; + r.reserve (m_condSet_RE.size() + m_condSet_clock.size()); + for (const typename CondContSet::value_type& ent : m_condSet_RE.range()) { + r.push_back( ent.first.m_range ); + } + for (const typename CondContSet::value_type& ent : m_condSet_clock.range()) { + r.push_back( ent.first.m_range ); + } + + return r; +} + + +/** + * @brief Insert a new conditions object. + * @param r Range of validity of this object. + * @param obj Pointer to the object being inserted. + * @param ctx Event context for the current thread. + * + * @c obj must point to an object of type @c T, + * except in the case of inheritance, where the type of @c obj must + * correspond to the most-derived @c CondCont type. + * The container will take ownership of this object. + * + * Returns SUCCESS if the object was successfully inserted; + * DUPLICATE if the object wasn't inserted because the range + * duplicates an existing one, and FAILURE otherwise + * (ownership of the object will be taken in any case). + */ +StatusCode +CondContBase::typelessInsert (const EventIDRange& r, + void* obj, + const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) +{ + return insertBase (r, + CondContSet::payload_unique_ptr (obj, m_condSet_RE.delfcn()), + ctx); +} + + +/** + * @brief Return the mapped validity range for an IOV time. + * @param t IOV time to check. + * @param r[out] The range containing @c t. + * + * Returns true if @c t is mapped; false otherwise. + */ +bool +CondContBase::range(const EventIDBase& t, EventIDRange& r) const +{ + const EventIDRange* rp = nullptr; + if (findBase (t, &rp) != nullptr) { + r = *rp; + return true; + } + return false; +} + + +/** + * @brief Erase the first element not less than @c t. + * @param IOV time of element to erase. + * @param ctx Event context for the current thread. + */ +void CondContBase::erase (const EventIDBase& t, + const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) +{ + if (t.isRunLumi()) { + m_condSet_RE.erase (CondContBase::keyFromRunLBN (t), ctx); + } + else if (t.isTimeStamp()) { + m_condSet_clock.erase (CondContBase::keyFromTimestamp (t), ctx); + } +} + + +/** + * @brief Remove unused run+LBN entries from the front of the list. + * @param keys List of keys that may still be in use. + * (Must be sorted.) + * + * We examine the objects in the container, starting with the earliest one. + * If none of the keys in @c keys match the range for this object, then + * it is removed from the container. We stop when we either find + * an object with a range matching a key in @c keys or when there + * is only one object left. + * + * The list @c keys should contain keys as computed by keyFromRunLBN. + * The list must be sorted. + * + * Removed objects are queued for deletion once all slots have been + * marked as quiescent. + * + * Returns the number of objects that were removed. + */ +size_t CondContBase::trimRunLBN (const std::vector<key_type>& keys) +{ + return m_condSet_RE.trim (keys); +} + + +/** + * @brief Remove unused timestamp entries from the front of the list. + * @param keys List of keys that may still be in use. + * (Must be sorted.) + * + * We examine the objects in the container, starting with the earliest one. + * If none of the keys in @c keys match the range for this object, then + * it is removed from the container. We stop when we either find + * an object with a range matching a key in @c keys or when there + * is only one object left. + * + * The list @c keys should contain keys as computed by keyFromRunLBN. + * The list must be sorted. + * + * Removed objects are queued for deletion once all slots have been + * marked as quiescent. + * + * Returns the number of objects that were removed. + */ +size_t CondContBase::trimTimestamp (const std::vector<key_type>& keys) +{ + return m_condSet_clock.trim (keys); +} + + +/** + * @brief Mark that this thread is no longer accessing data from this container. + * @param ctx Event context for the current thread. + * + * This would normally be done through RCU service. + * Defined here for purposes of testing. + */ +void +CondContBase::quiescent (const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) +{ + m_condSet_RE.quiescent (ctx); + m_condSet_clock.quiescent (ctx); +} + + +/** + * @brief Return the number times an item was inserted into the map. + */ +size_t CondContBase::nInserts() const +{ + return m_condSet_clock.nInserts() + m_condSet_RE.nInserts(); +} + + +/** + * @brief Return the maximum size of the map. + */ +size_t CondContBase::maxSize() const +{ + return m_condSet_clock.maxSize() + m_condSet_RE.maxSize(); +} + + +/** + * @brief Extend the range of the last IOV. + * @param newRange New validity range. + * @param ctx Event context. + * + * Returns failure if the start time of @c newRange does not match the start time + * of the last IOV in the container. Otherwise, the end time for the last + * IOV is changed to the end time for @c newRange. (If the end time for @c newRange + * is before the end of the last IOV, then nothing is changed.) + */ +StatusCode +CondContBase::extendLastRange (const EventIDRange& newRange, + const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) +{ + typename CondContSet::const_iterator it = nullptr; + if (newRange.start().isRunLumi()) { + it = m_condSet_RE.extendLastRange + (RangeKey (newRange, + CondContBase::keyFromRunLBN (newRange.start()), + CondContBase::keyFromRunLBN (newRange.stop())), ctx); + } + else if (newRange.start().isTimeStamp()) { + it = m_condSet_clock.extendLastRange + (RangeKey (newRange, + CondContBase::keyFromTimestamp (newRange.start()), + CondContBase::keyFromTimestamp (newRange.stop())), ctx); + } + if (it != nullptr) { + return StatusCode::SUCCESS; + } + return StatusCode::FAILURE; } @@ -78,12 +335,20 @@ void CondContBase::print() const * @param CLID of the most-derived @c CondCont. * @param id CLID+key for this object. * @param proxy @c DataProxy for this object. + * @param delfcn Deletion function for the actual payload type. + * @param capacity Initial capacity of the container. */ -CondContBase::CondContBase (Athena::IRCUSvc& /*rcusvc*/, +CondContBase::CondContBase (Athena::IRCUSvc& rcusvc, CLID clid, - const DataObjID& /*id*/, - SG::DataProxy* /*proxy*/) + const DataObjID& id, + SG::DataProxy* proxy, + CondContSet::delete_function* delfcn, + size_t capacity) : m_clid (clid), + m_id (id), + m_proxy (proxy), + m_condSet_clock (Updater_t (rcusvc, delfcn), delfcn, capacity), + m_condSet_RE (Updater_t (rcusvc, delfcn), delfcn, capacity), m_cleanerSvc (s_cleanerSvcName, "CondContBase") { if (!m_cleanerSvc.retrieve().isSuccess()) { @@ -92,6 +357,98 @@ CondContBase::CondContBase (Athena::IRCUSvc& /*rcusvc*/, } +/** + * @brief Insert a new conditions object. + * @param r Range of validity of this object. + * @param t Pointer to the object being inserted. + * @param ctx Event context for the current thread. + * + * Returns SUCCESS if the object was successfully inserted; + * DUPLICATE if the object wasn't inserted because the range + * duplicates an existing one, and FAILURE otherwise + * (ownership of the object will be taken in any case). + */ +StatusCode +CondContBase::insertBase (const EventIDRange& r, + CondContSet::payload_unique_ptr t, + const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) +{ + EventIDBase start = r.start(); + EventIDBase stop = r.stop(); + + // LBN part of ranges may be undefined for an open-ended range. + if (start.run_number() != EventIDBase::UNDEFNUM && + stop.run_number() != EventIDBase::UNDEFNUM) + { + if (!m_condSet_RE.emplace( RangeKey(r, + keyFromRunLBN (start), + keyFromRunLBN (stop)), + std::move(t), ctx )) + { + return CondContStatusCode::DUPLICATE; + } + + } + else if (start.isTimeStamp() && stop.isTimeStamp()) { + if (!m_condSet_clock.emplace( RangeKey(r, + keyFromTimestamp (start), + keyFromTimestamp (stop)), + std::move(t), ctx )) + { + return CondContStatusCode::DUPLICATE; + } + } + else { + std::cerr << "CondCont<T>::insert error: EventIDRange " << r + << " is neither fully RunEvent nor TimeStamp" + << std::endl; + return StatusCode::FAILURE; + } + + return this->inserted (ctx); +} + + +/** + * @brief Internal lookup function. + * @param clid CLID for the desired pointer type. + * @param t IOV time to find. + * @param r If non-null, copy validity range of the object here. + * + * Looks up the conditions object corresponding to the IOV time @c t. + * If found, convert the pointer to a pointer to the type identified + * by CLID and return it. Otherwise, return nullptr. + */ +const void* CondContBase::findBase (const EventIDBase& t, + EventIDRange const** r) const +{ + const void* ptr = nullptr; + if (t.isRunLumi()) { + key_type key = keyFromRunLBN (t); + CondContSet::const_iterator it = m_condSet_RE.find (key); + if (it && key < it->first.m_stop) { + if (r) { + *r = &it->first.m_range; + } + ptr = it->second; + } + } + + if (!ptr && t.isTimeStamp()) { + key_type key = keyFromTimestamp (t); + CondContSet::const_iterator it = m_condSet_clock.find (key); + if (it && key < it->first.m_stop) { + if (r) { + *r = &it->first.m_range; + } + ptr = it->second; + } + } + + return ptr; +} + + /** * @brief Tell the cleaner that a new object was added to the container. */ diff --git a/Control/AthenaServices/test/ConditionsCleanerSvc_test.cxx b/Control/AthenaServices/test/ConditionsCleanerSvc_test.cxx index 48266d65f87..701975f22e2 100644 --- a/Control/AthenaServices/test/ConditionsCleanerSvc_test.cxx +++ b/Control/AthenaServices/test/ConditionsCleanerSvc_test.cxx @@ -27,9 +27,9 @@ class RCUTest : public Athena::IRCUSvc { public: - virtual void add (Athena::IRCUObject*) override { std::abort(); } - virtual StatusCode remove (Athena::IRCUObject*) override { std::abort(); } - virtual size_t getNumSlots() const override { std::abort(); } + virtual void add (Athena::IRCUObject*) override { } + virtual StatusCode remove (Athena::IRCUObject*) override { return StatusCode::SUCCESS; } + virtual size_t getNumSlots() const override { return 1; } virtual unsigned long addRef()override { std::abort(); } virtual unsigned long release() override { std::abort(); } virtual StatusCode queryInterface( const InterfaceID&, void** ) override { std::abort(); } @@ -41,39 +41,12 @@ class CondContTest : public CondContBase { public: - CondContTest() - : CondContBase (m_rcu, 123, m_id, nullptr) + CondContTest (Athena::IRCUSvc& rcusvc, const DataObjID& id) + : CondContBase (rcusvc, 123, id, nullptr, nullptr, 0) {} - virtual const DataObjID& id() const override { std::abort(); } - virtual SG::DataProxy* proxy() override { std::abort(); } - virtual void setProxy(SG::DataProxy*) override { std::abort(); } - virtual void list (std::ostream&) const override { std::abort(); } - virtual size_t entries() const override { std::abort(); } - virtual size_t entriesRunLBN() const override { std::abort(); } - virtual size_t entriesTimestamp() const override { std::abort(); } - virtual std::vector<EventIDRange> ranges() const override { std::abort(); } - virtual StatusCode typelessInsert (const EventIDRange&, - void*, - const EventContext&) override { std::abort(); } - virtual bool valid( const EventIDBase&) const override { std::abort(); } - virtual bool range (const EventIDBase&, EventIDRange&) const override { std::abort(); } - virtual void erase (const EventIDBase&, - const EventContext&) override { std::abort(); } - virtual size_t trimRunLBN (const std::vector<key_type>&) override { std::abort(); } - virtual size_t trimTimestamp (const std::vector<key_type>&) override { std::abort(); } - virtual void quiescent (const EventContext&) override { std::abort(); } - - virtual const void* findByCLID (CLID, - const EventIDBase&, - EventIDRange const**) const override { std::abort(); } - virtual size_t nInserts() const override { std::abort(); } - virtual size_t maxSize() const override { std::abort(); } - virtual StatusCode extendLastRange (const EventIDRange& /*newRange*/, - const EventContext& /*ctx*/) override { std::abort(); } - -private: - RCUTest m_rcu; - DataObjID m_id; + + virtual const void* doCast (CLID /*clid*/, const void* /*ptr*/) const override + { std::abort(); } }; @@ -131,7 +104,10 @@ void testit (IService* mgr) assert( ccs->event (EventContext(0,0), false).isSuccess() ); - CondContTest cc; + RCUTest rcu; + DataObjID id; + + CondContTest cc (rcu, id); assert( ccs->condObjAdded (EventContext(0,0), cc).isSuccess() ); assert( ccs->printStats().isSuccess() ); diff --git a/Control/AthenaServices/test/DelayedConditionsCleanerSvc_test.cxx b/Control/AthenaServices/test/DelayedConditionsCleanerSvc_test.cxx index fc52680c26e..a3b29ee45f6 100644 --- a/Control/AthenaServices/test/DelayedConditionsCleanerSvc_test.cxx +++ b/Control/AthenaServices/test/DelayedConditionsCleanerSvc_test.cxx @@ -37,9 +37,9 @@ class RCUTest : public Athena::IRCUSvc { public: - virtual void add (Athena::IRCUObject*) override { std::abort(); } - virtual StatusCode remove (Athena::IRCUObject*) override { std::abort(); } - virtual size_t getNumSlots() const override { std::abort(); } + virtual void add (Athena::IRCUObject*) override { } + virtual StatusCode remove (Athena::IRCUObject*) override { return StatusCode::SUCCESS; } + virtual size_t getNumSlots() const override { return 1; } virtual unsigned long addRef()override { std::abort(); } virtual unsigned long release() override { std::abort(); } virtual StatusCode queryInterface( const InterfaceID&, void** ) override { std::abort(); } @@ -51,34 +51,13 @@ class CondContTest : public CondContBase { public: - CondContTest (int nlbn, int nts) - : CondContBase (m_rcu, 123, m_id, nullptr), + CondContTest (Athena::IRCUSvc& rcusvc, const DataObjID& id, int nlbn, int nts) + : CondContBase (rcusvc, 123, id, nullptr, nullptr, 0), m_nlbn(nlbn), m_nts (nts) {} - virtual const DataObjID& id() const override { std::abort(); } - virtual SG::DataProxy* proxy() override { std::abort(); } - virtual void setProxy(SG::DataProxy*) override { std::abort(); } - virtual void list (std::ostream&) const override { std::abort(); } - virtual size_t entries() const override { std::abort(); } - virtual std::vector<EventIDRange> ranges() const override { std::abort(); } - virtual StatusCode typelessInsert (const EventIDRange&, - void*, - const EventContext& = Gaudi::Hive::currentContext()) override { std::abort(); } - virtual bool valid( const EventIDBase&) const override { std::abort(); } - virtual bool range (const EventIDBase&, EventIDRange&) const override { std::abort(); } - virtual void erase (const EventIDBase&, - const EventContext& = Gaudi::Hive::currentContext()) override { std::abort(); } - virtual void quiescent (const EventContext& = Gaudi::Hive::currentContext()) override { std::abort(); } - virtual const void* findByCLID (CLID, - const EventIDBase&, - EventIDRange const**) const override { std::abort(); } - - virtual size_t nInserts() const override { return 0; } - virtual size_t maxSize() const override { return 0; } - virtual StatusCode extendLastRange (const EventIDRange& /*newRange*/, - const EventContext& /*ctx*/) override { std::abort(); } - + virtual const void* doCast (CLID /*clid*/, const void* /*ptr*/) const override + { std::abort(); } virtual size_t entriesRunLBN() const override { @@ -120,8 +99,6 @@ public: private: - RCUTest m_rcu; - DataObjID m_id; int m_nlbn; int m_nts; std::list<std::vector<key_type> > m_keysRunLBN; @@ -151,9 +128,12 @@ void test1 (Athena::IConditionsCleanerSvc& svc) { typedef CondContBase::key_type key_type; + RCUTest rcu; + DataObjID id; + std::cout << "test1\n"; - CondContTest cc1 (10, 0); - CondContTest cc2 (0, 10); + CondContTest cc1 (rcu, id, 10, 0); + CondContTest cc2 (rcu, id, 0, 10); assert( svc.event (makeCtx(0), false).isSuccess() ); assert( svc.event (makeCtx(1), false).isSuccess() ); @@ -188,8 +168,8 @@ void test1 (Athena::IConditionsCleanerSvc& svc) assert (cc2.nkeysTimestamp() == 0); assert (cc1.keysRunLBN() == (std::vector<key_type> { 0, 1001, 1003, 1004, 1201, 1301 })); - CondContTest cc3 (10, 0); - CondContTest cc4 (0, 10); + CondContTest cc3 (rcu, id, 10, 0); + CondContTest cc4 (rcu, id, 0, 10); assert( svc.condObjAdded (makeCtx(300), cc1).isSuccess() ); assert( svc.condObjAdded (makeCtx(303), cc2).isSuccess() ); diff --git a/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.h b/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.h index 268b81c12f6..7e98bfbcd58 100644 --- a/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.h +++ b/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.h @@ -37,6 +37,17 @@ namespace CxxUtils { * first for which the range is not less than the key. We also * support insertions, erasures, and iteration. * + * The only thing we need to do with the contained pointers is to delete them. + * Rather than doing that directly, we take a deletion function as an argument + * to the constructor; this should be a void function that takes a pointer argument + * and deletes it. This allows one to instantiate this template with @c void as @c T, + * to reduce the amount of generated code. The @c emplace method takes + * a @c unique_ptr as an argument. We define @c payload_unique_ptr which + * is a @c unique_ptr to @c T that does deletion by calling an arbitrary function. + * @c payload_unique_ptr may be initialized from a @c unique_ptr; to construct + * one directly, the deletion function should be passed as a second argument + * to the @c payload_unique_ptr constructor. + * * There can be only one writer at a time; this is enforced with internal locks. * However, there can be any number of concurrent readers at any time. * The reads are lockless (but not necessarily waitless, though this should @@ -116,6 +127,69 @@ public: typedef COMPARE key_compare; typedef KEY key_query_type; + + /// Function to delete a @c T* + typedef void delete_function (const T*); + + + /** + * @brief @c unique_ptr deletion class for a payload object. + * + * We can't use the unique_ptr default because we want to allow + * instantiating with a @c void. + */ + struct DeletePayload + { + /// Initialize with an explicit deletion function. + DeletePayload (delete_function* delfcn) + : m_delete (delfcn) + { + } + + /// Allow initializing a @c payload_unique_ptr from a @c std::unique_ptr<U>. + template <class U> + static void delfcn (const T* p) + { + delete reinterpret_cast<const U*>(p); + } + template <class U> + DeletePayload (const std::default_delete<U>&) + { + m_delete = delfcn<U>; + } + + /// Delete a pointer. + void operator() (const T* p) const + { + m_delete (p); + } + + /// The deletion function. + delete_function* m_delete; + }; + + + /** + * @brief @c unique_ptr holding a payload object. + * + * One may initialize an instance of this in one of two ways. + * First, from another @c std::unique_ptr: + * + *@code + * payload_unique_ptr p = std::unique_ptr<U> (...); + @endcode + * + * where U* must be convertable to T*. In this case, the pointer + * will be deleted as a U*. + * Second, one can supply an explicit deletion function: + * + *@code + * T* tp = ...; + * payload_unique_ptr p (tp, delfcn); + @endcode + */ + typedef std::unique_ptr<T, DeletePayload> payload_unique_ptr; + typedef const value_type* const_iterator; typedef boost::iterator_range<const_iterator> const_iterator_range; @@ -138,9 +212,11 @@ public: public: /** * @brief Constructor. + * @param delfcn Deletion function. * @param capacity Size of the data vector to allocate. */ - Impl (size_t capacity = 10); + Impl (delete_function* delfcn, + size_t capacity = 10); /** @@ -170,6 +246,9 @@ public: private: + /// Deletion function. + delete_function* m_delete; + /// Vector holding the map data. std::vector<value_type> m_data; @@ -185,10 +264,12 @@ public: * @brief Constructor. * @param updater Object used to manage memory * (see comments at the start of the class). + * @param delfcn Deletion function. * @param capacity Initial capacity of the map. * @param compare Comparison object. */ ConcurrentRangeMap (Updater_t&& updater, + delete_function* delfcn, size_t capacity = 16, const COMPARE& compare = COMPARE()); @@ -220,7 +301,7 @@ public: * no new element is inserted (and @c ptr gets deleted). */ bool emplace (const RANGE& range, - std::unique_ptr<T> ptr, + payload_unique_ptr ptr, const typename Updater_t::Context_t& ctx = Updater_t::defaultContext()); @@ -335,6 +416,12 @@ public: Updater_t::defaultContext()); + /** + * @brief Return the deletion function for this container. + */ + delete_function* delfcn() const; + + private: /** * @brief Return the begin/last pointers. @@ -393,6 +480,9 @@ private: /// Comparison object. COMPARE m_compare; + /// Deletion function. + delete_function* m_delete; + /// Current version of the implementation class. Impl* m_impl; diff --git a/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.icc b/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.icc index 094c98684f8..95dd7251494 100644 --- a/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.icc +++ b/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.icc @@ -19,11 +19,14 @@ namespace CxxUtils { /** * @brief Constructor. + * @param delfcn Deletion function. * @param capacity Size of the data vector to allocate. */ T_CONCURRENTRANGEMAP -CONCURRENTRANGEMAP::Impl::Impl (size_t capacity /*= 10*/) - : m_data (capacity) +CONCURRENTRANGEMAP::Impl::Impl (delete_function* delfcn, + size_t capacity /*= 10*/) + : m_delete (delfcn), + m_data (capacity) { } @@ -37,7 +40,7 @@ T_CONCURRENTRANGEMAP CONCURRENTRANGEMAP::Impl::~Impl() { for (const T* p : m_garbage) { - delete p; + m_delete (p); } } @@ -79,19 +82,23 @@ CONCURRENTRANGEMAP::Impl::discard (const T* p) * @brief Constructor. * @param updater Object used to manage memory * (see comments at the start of the class). + * @param delfcn Deletion function. * @param capacity Initial capacity of the map. * @param compare Comparison object. */ T_CONCURRENTRANGEMAP CONCURRENTRANGEMAP::ConcurrentRangeMap (Updater_t&& updater, + delete_function* delfcn, size_t capacity /*= 16*/, const COMPARE& compare /*= COMPARE()*/) + : m_updater (std::move (updater)), m_compare (compare), + m_delete (delfcn), m_nInserts (0), m_maxSize (0) { - auto impl = std::make_unique<Impl> (capacity); + auto impl = std::make_unique<Impl> (m_delete, capacity); value_type* data = impl->data(); installImpl (std::move (impl), data, data, @@ -110,7 +117,7 @@ CONCURRENTRANGEMAP::~ConcurrentRangeMap() value_type* last = m_last; if (last) { for (value_type* p = m_begin; p <= m_last; ++p) { - delete p->second; + m_delete (p->second); } } @@ -165,7 +172,7 @@ CONCURRENTRANGEMAP::find (const key_query_type& key) const T_CONCURRENTRANGEMAP bool CONCURRENTRANGEMAP::emplace (const RANGE& range, - std::unique_ptr<T> ptr, + payload_unique_ptr ptr, const typename Updater_t::Context_t& ctx /*= Updater_t::defaultContext()*/) { @@ -209,7 +216,7 @@ CONCURRENTRANGEMAP::emplace (const RANGE& range, } // Allocate the new object. - auto new_impl = std::make_unique<Impl> (new_capacity); + auto new_impl = std::make_unique<Impl> (m_delete, new_capacity); value_type* new_begin = new_impl->data(); value_type* new_end = new_begin; @@ -293,7 +300,7 @@ CONCURRENTRANGEMAP::erase (const key_query_type& key, // Need to make a new implementation object and copy data. size_t capacity = m_impl->capacity(); - auto new_impl = std::make_unique<Impl> (capacity); + auto new_impl = std::make_unique<Impl> (m_delete, capacity); value_type* new_begin = new_impl->data(); value_type* new_end = new_begin; @@ -355,7 +362,7 @@ CONCURRENTRANGEMAP::extendLastRange (const RANGE& newRange, // Make a new implementation object and copy data. size_t capacity = m_impl->capacity(); - auto new_impl = std::make_unique<Impl> (capacity); + auto new_impl = std::make_unique<Impl> (m_delete, capacity); value_type* new_begin = new_impl->data(); value_type* new_end = new_begin; value_type* begin = m_begin; @@ -426,7 +433,7 @@ CONCURRENTRANGEMAP::trim (const std::vector<key_query_type>& keys) if (!garbage) { // Allocate a dummy impl object if we haven't done so yet. - garbage = std::make_unique<Impl> (0); + garbage = std::make_unique<Impl> (m_delete, 0); } // Add it to the garbage list. @@ -534,6 +541,18 @@ CONCURRENTRANGEMAP::quiescent (const typename Updater_t::Context_t& ctx /*= Upda } +/** + * @brief Return the deletion function for this container. + */ +T_CONCURRENTRANGEMAP +inline +typename CONCURRENTRANGEMAP::delete_function* +CONCURRENTRANGEMAP::delfcn() const +{ + return m_delete; +} + + /** * @brief Return the begin/last pointers. * @param [inout] last Current value of last. diff --git a/Control/CxxUtils/test/ConcurrentRangeMap_test.cxx b/Control/CxxUtils/test/ConcurrentRangeMap_test.cxx index 3fbaabec232..abfdfc1d9a0 100644 --- a/Control/CxxUtils/test/ConcurrentRangeMap_test.cxx +++ b/Control/CxxUtils/test/ConcurrentRangeMap_test.cxx @@ -76,6 +76,12 @@ struct Payload }; +void delfcn (const Payload* p) +{ + delete p; +} + + template <class T> class TestUpdater { @@ -152,7 +158,7 @@ void test1a() std::cout << "test1a\n"; Payload::Hist phist; { - TestMap map (TestMap::Updater_t(), 3); + TestMap map (TestMap::Updater_t(), delfcn, 3); assert (map.size() == 0); assert (map.empty()); @@ -555,7 +561,7 @@ void test1b() std::cout << "test1b\n"; Payload::Hist phist; - TestMap map (TestMap::Updater_t(), 100); + TestMap map (TestMap::Updater_t(), delfcn, 100); assert (map.emplace (Range (10, 20), std::make_unique<Payload> (100, &phist))); assert (map.emplace (Range (25, 30), std::make_unique<Payload> (200, &phist))); assert (map.emplace (Range (30, 40), std::make_unique<Payload> (300, &phist))); @@ -785,7 +791,7 @@ void test2_Reader::operator()() void test2_iter() { - TestMap map (TestMap::Updater_t(), 20); + TestMap map (TestMap::Updater_t(), delfcn, 20); const int nthread = 4; std::thread threads[nthread]; -- GitLab From 3e74be66b77c4fa7aac73ab0b2995e8f3094f7fc Mon Sep 17 00:00:00 2001 From: Susumu Oda <susumu.oda@cern.ch> Date: Mon, 26 Nov 2018 09:05:06 +0000 Subject: [PATCH 116/135] Partial fixes of ATLASRECTS-4688 and ATLASRECTS-4700 Former-commit-id: f4dfc4f7dd4902cf5e2c1013b17a66082cee282a --- PhysicsAnalysis/AnalysisCommon/ThinningUtils/CMakeLists.txt | 6 ++++-- .../AnalysisCommon/ThinningUtils/src/ThinTrkTrackAlg.h | 6 ++++++ Reconstruction/egamma/egammaAlgs/CMakeLists.txt | 3 ++- .../egamma/egammaAlgs/src/egammaSelectedTrackCopy.h | 5 +++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/PhysicsAnalysis/AnalysisCommon/ThinningUtils/CMakeLists.txt b/PhysicsAnalysis/AnalysisCommon/ThinningUtils/CMakeLists.txt index 289ca2486b1..8660502db86 100644 --- a/PhysicsAnalysis/AnalysisCommon/ThinningUtils/CMakeLists.txt +++ b/PhysicsAnalysis/AnalysisCommon/ThinningUtils/CMakeLists.txt @@ -21,6 +21,7 @@ atlas_depends_on_subdirs( Control/AthLinks Control/AthenaBaseComps Control/AthenaKernel + Control/StoreGate Event/EventInfo Event/xAOD/xAODBase Event/xAOD/xAODCaloEvent @@ -32,6 +33,7 @@ atlas_depends_on_subdirs( Event/xAOD/xAODTracking Event/xAOD/xAODTruth GaudiKernel + InnerDetector/InDetDetDescr/InDetReadoutGeometry PhysicsAnalysis/CommonTools/ExpressionEvaluation PhysicsAnalysis/DerivationFramework/DerivationFrameworkInterfaces Tracking/TrkTools/TrkToolInterfaces @@ -41,9 +43,9 @@ atlas_depends_on_subdirs( # Component(s) in the package: atlas_add_component(ThinningUtils src/*.h src/*.cxx src/components/*.cxx - LINK_LIBRARIES AthLinks AthenaBaseComps AthenaKernel EventInfo xAODBase + LINK_LIBRARIES AthLinks AthenaBaseComps AthenaKernel StoreGateLib SGtests EventInfo xAODBase xAODCaloEvent xAODEgamma xAODJet xAODMuon xAODParticleEvent xAODTau - xAODTracking xAODTruth GaudiKernel ExpressionEvaluationLib TrkToolInterfaces MCTruthClassifierLib ${extra_libs}) + xAODTracking xAODTruth GaudiKernel InDetReadoutGeometry ExpressionEvaluationLib TrkToolInterfaces MCTruthClassifierLib ${extra_libs}) # Install files from the package: atlas_install_python_modules( python/*.py ) diff --git a/PhysicsAnalysis/AnalysisCommon/ThinningUtils/src/ThinTrkTrackAlg.h b/PhysicsAnalysis/AnalysisCommon/ThinningUtils/src/ThinTrkTrackAlg.h index 68e6bb28d27..38a8b47309a 100644 --- a/PhysicsAnalysis/AnalysisCommon/ThinningUtils/src/ThinTrkTrackAlg.h +++ b/PhysicsAnalysis/AnalysisCommon/ThinningUtils/src/ThinTrkTrackAlg.h @@ -18,6 +18,9 @@ #include "GaudiKernel/ServiceHandle.h" #include "AthenaBaseComps/AthAlgorithm.h" +#include "InDetReadoutGeometry/SiDetectorElementCollection.h" +#include "StoreGate/ReadCondHandleKey.h" + class IThinningSvc; @@ -46,6 +49,9 @@ public: /// Pointer to IThinningSvc ServiceHandle<IThinningSvc> m_thinningSvc; + + // For P->T converters of ID tracks with SCT + SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}; /// Should the thinning run? bool m_doElectrons; diff --git a/Reconstruction/egamma/egammaAlgs/CMakeLists.txt b/Reconstruction/egamma/egammaAlgs/CMakeLists.txt index a108c12c843..461310d1c5d 100644 --- a/Reconstruction/egamma/egammaAlgs/CMakeLists.txt +++ b/Reconstruction/egamma/egammaAlgs/CMakeLists.txt @@ -21,6 +21,7 @@ atlas_depends_on_subdirs( PRIVATE Control/StoreGate Event/FourMomUtils Event/xAOD/xAODTracking + InnerDetector/InDetDetDescr/InDetReadoutGeometry InnerDetector/InDetRecTools/InDetConversionFinderTools InnerDetector/InDetRecTools/InDetRecToolInterfaces PhysicsAnalysis/Interfaces/EgammaAnalysisInterfaces @@ -42,7 +43,7 @@ atlas_add_component( egammaAlgs src/components/*.cxx INCLUDE_DIRS LINK_LIBRARIES AthenaBaseComps EventKernel xAODCaloEvent xAODEgamma xAODTruth GaudiKernel - MCTruthClassifierLib CaloGeoHelpers CaloUtilsLib AthenaKernel StoreGateLib xAODTracking + MCTruthClassifierLib CaloGeoHelpers CaloUtilsLib AthenaKernel StoreGateLib xAODTracking InDetReadoutGeometry EgammaAnalysisInterfacesLib egammaRecEvent egammaUtils TrkToolInterfaces InDetRecToolInterfaces FourMomUtils RecoToolInterfaces TrkTrack TrkPseudoMeasurementOnTrack InDetConversionFinderToolsLib TrkCaloExtension) diff --git a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h index a423c205f8a..74312d5d3d8 100644 --- a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h +++ b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h @@ -28,6 +28,8 @@ #include "egammaInterfaces/IegammaCaloClusterSelector.h" #include "GaudiKernel/Counters.h" +#include "InDetReadoutGeometry/SiDetectorElementCollection.h" +#include "StoreGate/ReadCondHandleKey.h" class CaloCluster; @@ -99,6 +101,9 @@ private: "egammaCaloClusterSelector", "egammaCaloClusterSelector", "Tool that makes the cluster selection"}; + // For P->T converters of ID tracks with SCT + SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}; + /* counters. For now use mutable atomic * the methods will increment a local variable * inside the loops. -- GitLab From a3dd0ea9e0bb24b3796345e01de0dc9dea77aefd Mon Sep 17 00:00:00 2001 From: Alexander Solodkov <Sanya.Solodkov@cern.ch> Date: Wed, 21 Nov 2018 22:48:08 +0100 Subject: [PATCH 117/135] extra options for overlay, sweeping from 21.0 and resolving conficts with master Former-commit-id: 347921d031916ce52ea4112e1ccb1746301e86f5 --- .../TileSimAlgs/TileSimAlgs/TileDigitsMaker.h | 2 + .../TileSimAlgs/src/TileDigitsMaker.cxx | 37 ++++++++++++------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/TileCalorimeter/TileSimAlgs/TileSimAlgs/TileDigitsMaker.h b/TileCalorimeter/TileSimAlgs/TileSimAlgs/TileDigitsMaker.h index 84526cc43d7..dbbdb3066eb 100644 --- a/TileCalorimeter/TileSimAlgs/TileSimAlgs/TileDigitsMaker.h +++ b/TileCalorimeter/TileSimAlgs/TileSimAlgs/TileDigitsMaker.h @@ -137,6 +137,8 @@ class TileDigitsMaker: public AthAlgorithm { bool m_tileThresh; //!< If true => apply threshold to Digits double m_tileThreshHi; //!< Actual threshold value for high gain double m_tileThreshLo; //!< Actual threshold value for low gain + int m_allChannels; //!< If set to 1 => always create all channels in output container + //!< If set to 2 => always add noise to all missing channels in overlay std::vector<double> m_digitShapeHi; //!< High gain pulse shape int m_nShapeHi; //!< Number of bins in high gain pulse shape diff --git a/TileCalorimeter/TileSimAlgs/src/TileDigitsMaker.cxx b/TileCalorimeter/TileSimAlgs/src/TileDigitsMaker.cxx index f303d9a89e0..110e326fc01 100644 --- a/TileCalorimeter/TileSimAlgs/src/TileDigitsMaker.cxx +++ b/TileCalorimeter/TileSimAlgs/src/TileDigitsMaker.cxx @@ -113,6 +113,7 @@ TileDigitsMaker::TileDigitsMaker(std::string name, ISvcLocator* pSvcLocator) declareProperty("TileBadChanTool",m_tileBadChanTool); declareProperty("MaskBadChannels",m_maskBadChannels = false,"Remove channels tagged bad (default=false)"); declareProperty("DoHSTruthReconstruction",m_doDigiTruth = true); + declareProperty("AllChannels", m_allChannels = -1, "Create all channels, use 0 or 1 or 2 (default=-1 - unset)"); } TileDigitsMaker::~TileDigitsMaker() { @@ -225,6 +226,7 @@ StatusCode TileDigitsMaker::initialize() { m_tileCoherNoise = false; m_tileThresh = false; m_calibRun = false; + if (m_allChannels<0) m_allChannels = 2; // create all channels with noise in overlay by default ATH_MSG_INFO( "Pileup and/or noise added by overlaying digits of random events"); @@ -238,6 +240,8 @@ StatusCode TileDigitsMaker::initialize() { } else { m_beamInfo.disable(); + if (m_allChannels<0) m_allChannels = 0; // do not create all channels by default + if (m_tileNoise || m_tileCoherNoise) m_allChannels = 2; // unless noise is set to True if (msgLvl(MSG::INFO)) { msg(MSG::INFO) << "Obtained info from TileInfo" << endmsg; msg(MSG::INFO) << "tileNoise=" << ((m_tileNoise) ? "true" : "false") @@ -250,6 +254,13 @@ StatusCode TileDigitsMaker::initialize() { } } + if (m_allChannels>1) + ATH_MSG_INFO( "Create all channels with noise: true"); + else if (m_allChannels>0) + ATH_MSG_INFO( "Create all channels without noise: true"); + else + ATH_MSG_INFO( "Create all channels: false"); + if (m_calibRun) { m_filteredDigitsContainerKey = ""; } @@ -561,10 +572,11 @@ StatusCode TileDigitsMaker::execute() { /* set to be active. If not, set them all to be inactive (gain=-1). */ /* Only those which contain actual hits will be set active when the */ /* hits are read in. */ - int igainch = -1; - if (m_tileNoise || m_tileCoherNoise || m_rndmEvtOverlay) { + int igainch = (m_allChannels) ? TileID::HIGHGAIN : -1; + if (m_rndmEvtOverlay) { + memset(over_gain, -1, sizeof(over_gain)); + } else if (m_tileNoise || m_tileCoherNoise) { igainch = TileID::HIGHGAIN; - if (m_rndmEvtOverlay) memset(over_gain, -1, sizeof(over_gain)); } for (int ich = 0; ich < nchMax; ++ich) { igain[ich] = igainch; @@ -830,7 +842,7 @@ StatusCode TileDigitsMaker::execute() { bool tileNoiseHG(false),tileNoiseLG(false); if (overNoiseHG) { - overNoiseHG &= m_rndmEvtOverlay; // set it to true only for overlay + overNoiseHG &= (m_rndmEvtOverlay && m_allChannels>1); // set it to true only for overlay tileNoiseHG = m_tileNoise || overNoiseHG; pedSimHi = m_tileToolNoiseSample->getPed(idhash, ich, TileID::HIGHGAIN); @@ -850,7 +862,7 @@ StatusCode TileDigitsMaker::execute() { } if (overNoiseLG) { - overNoiseLG &= m_rndmEvtOverlay; // set it to true only for overlay + overNoiseLG &= (m_rndmEvtOverlay && m_allChannels>1); // set it to true only for overlay tileNoiseLG = m_tileNoise || overNoiseLG; pedSimLo = m_tileToolNoiseSample->getPed(idhash, ich, TileID::LOWGAIN); @@ -883,8 +895,8 @@ StatusCode TileDigitsMaker::execute() { double * pDigitSamplesLo = m_drawerBufferLo[ich]; double * pDigitSamplesHi_DigiHSTruth = nullptr; double * pDigitSamplesLo_DigiHSTruth = nullptr; - if(m_doDigiTruth) pDigitSamplesHi_DigiHSTruth = m_drawerBufferHi_DigiHSTruth[ich]; - if(m_doDigiTruth) pDigitSamplesLo_DigiHSTruth = m_drawerBufferLo_DigiHSTruth[ich]; + if(m_doDigiTruth) pDigitSamplesHi_DigiHSTruth = m_drawerBufferHi_DigiHSTruth[ich]; + if(m_doDigiTruth) pDigitSamplesLo_DigiHSTruth = m_drawerBufferLo_DigiHSTruth[ich]; ATH_MSG_DEBUG(" Channel " << ros << '/' << drawer << '/' << ich << " sampHi=" << pDigitSamplesHi[m_iTrig] @@ -1005,8 +1017,8 @@ StatusCode TileDigitsMaker::execute() { overNoiseHG = false; if (msgLvl(MSG::VERBOSE)) { - msg(MSG::VERBOSE) << "Channel " << ros << '/' << drawer << '/' << ich << "/" << igain[ich] - << " Switch to low gain Amp(lo)=" << digitsBuffer[m_iTrig] << endmsg; + msg(MSG::VERBOSE) << "Channel " << ros << '/' << drawer << '/' << ich << "/" << igain[ich] + << " Switch to low gain Amp(lo)=" << digitsBuffer[m_iTrig] << endmsg; if (overNoiseLG) { if (sigmaLo_Norm<1.0) { msg(MSG::VERBOSE) << "LG Ped & noise from DB " @@ -1272,8 +1284,7 @@ StatusCode TileDigitsMaker::FillDigitCollection(TileHitContainer::const_iterator double ech_tot[nchMax]; //double ech_int[nchMax]; - ATH_MSG_VERBOSE( "Dumping 2G noise parameters"); - IdContext drawer_context = m_tileHWID->drawer_context(); + IdContext drawer_context = m_tileHWID->drawer_context(); /* Set up buffers for handling information in a single collection. */ IdentifierHash idhash; @@ -1318,7 +1329,7 @@ StatusCode TileDigitsMaker::FillDigitCollection(TileHitContainer::const_iterator /* Set gain=high and get digitSamples and calibration for this channel. */ if (igain[ich] < 0) - igain[ich] = TileID::HIGHGAIN; + igain[ich] = TileID::HIGHGAIN; // conversion from scintillator energy to total cell energy (sampling fraction) double hit_calib = m_tileInfo->HitCalib(pmt_id); @@ -1409,7 +1420,7 @@ StatusCode TileDigitsMaker::FillDigitCollection(TileHitContainer::const_iterator } if (msgLvl(MSG::VERBOSE)) { - msg(MSG::VERBOSE) << "subHit: ch=" << ich + msg(MSG::VERBOSE) << "subHit: ch=" << ich << " e_hit=" << e_hit << " t_hit=" << t_hit << " SamplesHi[" << m_iTrig << "]=" << pDigitSamplesHi[m_iTrig] -- GitLab From af4d5219a96478dd249ffccf582886a5c476ce42 Mon Sep 17 00:00:00 2001 From: Denis Oliveira Damazio <damazio@mail.cern.ch> Date: Mon, 26 Nov 2018 12:07:25 +0100 Subject: [PATCH 118/135] Update packages:TrigCaloRec TrigT2CaloCommon TrigT2CaloCosmic TrigT2CaloEgamma TrigT2CaloJet TrigT2CaloTau TrigT2CaloTileMon TrigCaloEvent TrigCaloEventTPCnv TrigCaloHypo TrigCaloMonitoring TrigT2CaloCalibration from upstream/21.0-TrigMC to upstream/master via pseudo-merge Former-commit-id: eca7c2d77dc1dc02f318316ca5b7933bccc4a20c --- .../TrigCaloRec/src/TrigCaloClusterMaker.cxx | 36 +++++++++++++------ .../TrigCaloRec/src/TrigL1FCALTTSumFex.cxx | 2 +- .../TrigT2CaloCommon/TrigDataAccess.h | 1 + .../TrigT2CaloCommon/phiutils.h | 4 ++- .../TrigT2CaloCommon/src/TrigDataAccess.cxx | 2 +- .../TrigCaloHypo/TrigEFCaloHypoNoise.h | 8 +++++ .../TrigCaloHypo/python/TrigCaloHypoConfig.py | 33 +++++++++++++++-- .../TrigCaloHypo/src/TrigEFCaloHypoNoise.cxx | 14 ++++++++ 8 files changed, 85 insertions(+), 15 deletions(-) diff --git a/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigCaloClusterMaker.cxx b/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigCaloClusterMaker.cxx index 72775eb2c48..01a172ae87e 100755 --- a/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigCaloClusterMaker.cxx +++ b/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigCaloClusterMaker.cxx @@ -242,10 +242,13 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input persKey = (m_pTrigCaloQuality->getPersistencyFlag() ? name() : "TrigCaloClusterMaker"); persKeyLink = persKey + "_Link"; } +#ifndef NDEBUG + if ( msgLvl() <= MSG::DEBUG ) { msg() << MSG::DEBUG << "CaloClusterContainer is stored with key = " << persKey << endmsg; msg() << MSG::DEBUG << "CaloCellLinkContainer is stored with key = " << persKeyLink << endmsg; + } +#endif - // msg() << MSG::DEBUG << store()->dump() << endmsg; sc = getUniqueKey( m_pCaloClusterContainer, clusterCollKey, persKey ); if (sc != HLT::OK) { msg() << MSG::DEBUG << "Could not retrieve the cluster collection key" << endmsg; @@ -258,7 +261,6 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input return HLT::TOOL_FAILURE; } - //xAOD::CaloClusterAuxContainer aux; xAOD::CaloClusterTrigAuxContainer aux; m_pCaloClusterContainer->setStore (&aux); @@ -298,9 +300,14 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input if ( (clproc->name()).find("trigslw") != std::string::npos ) isSW=true; if ( clproc->execute(m_pCaloClusterContainer).isFailure() ) { msg() << MSG::ERROR << "Error executing tool " << m_clusterMakerNames[index] << endmsg; - } else { - msg() << MSG::DEBUG << "Executed tool " << m_clusterMakerNames[index] << endmsg; + } +#ifndef NDEBUG + else { + if ( msgLvl() <= MSG::DEBUG ) { + msg() << MSG::DEBUG << "Executed tool " << m_clusterMakerNames[index] << endmsg; + } } +#endif if (timerSvc()) m_timer[3+index]->stop(); ++index; @@ -351,9 +358,14 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input if ( (*itrcct)->execute(cl).isFailure() ) { msg() << MSG::ERROR << "Error executing correction tool " << m_clusterCorrectionNames[index] << endmsg; return HLT::TOOL_FAILURE; - } else { - msg() << MSG::DEBUG << "Executed correction tool " << m_clusterCorrectionNames[index] << endmsg; + } +#ifndef NDEBUG + else { + if ( msgLvl() <= MSG::DEBUG ) { + msg() << MSG::DEBUG << "Executed correction tool " << m_clusterCorrectionNames[index] << endmsg; + } } +#endif } // Check conditions } if (timerSvc()) m_timer[3+index+m_clusterMakerPointers.size()]->stop(); @@ -409,8 +421,10 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input #endif // record and lock the Clusters Container with the new EDM helper... - if ( !CaloClusterStoreHelper::finalizeClusters( store(), m_pCaloClusterContainer, - clusterCollKey, msg() ).isSuccess() ) { + bool status = CaloClusterStoreHelper::finalizeClusters( store(), m_pCaloClusterContainer, + clusterCollKey, msg()).isSuccess(); + + if ( !status ) { msg() << MSG::ERROR << "recording CaloClusterContainer with key <" << clusterCollKey << "> failed" << endmsg; return HLT::TOOL_FAILURE; } else { @@ -420,8 +434,9 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input // Build the "uses" relation for the outputTE to the cell container std::string aliasKey = ""; + status = (reAttachFeature(outputTE, m_pCaloClusterContainer, aliasKey, persKey )!=HLT::OK); - if (reAttachFeature(outputTE, m_pCaloClusterContainer, aliasKey, persKey ) != HLT::OK) { + if (status) { msg() << MSG::ERROR << "Write of RoI Cluster Container into outputTE failed" << endmsg; @@ -436,7 +451,8 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input msg() << MSG::WARNING << "cannot get CaloClusterCellLinkContainer (not return FAILURE) " << endmsg; } else { - if (reAttachFeature(outputTE, pCaloCellLinkContainer, aliasKey, persKeyLink ) != HLT::OK) { + status = (reAttachFeature(outputTE, pCaloCellLinkContainer, aliasKey, persKeyLink ) != HLT::OK); + if (status) { msg() << MSG::ERROR << "Write of RoI CellLink Container into outputTE failed" << endmsg; diff --git a/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigL1FCALTTSumFex.cxx b/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigL1FCALTTSumFex.cxx index 940c632e720..f1a11a84949 100644 --- a/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigL1FCALTTSumFex.cxx +++ b/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigL1FCALTTSumFex.cxx @@ -64,7 +64,7 @@ HLT::ErrorCode TrigL1FCALTTSumFex::hltExecute( const xAOD::TriggerTower* tt = container->at(i); double etaTower = tt->eta(); count_all++; - if ( std::abs(etaTower) < 3.1 ) continue; + if ( fabsf(etaTower) < 3.1 ) continue; count_fcal++; if ( etaTower > 0 ) { if ( etaTower < eta_min_pos ) eta_min_pos = etaTower; diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/TrigDataAccess.h b/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/TrigDataAccess.h index 73cd40cfa24..f0410776950 100755 --- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/TrigDataAccess.h +++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/TrigDataAccess.h @@ -407,6 +407,7 @@ private: TileL2Container* m_drawcoll; /** Either use one calo layer at a time, or do all of it */ bool m_loadAllSamplings; + /** new Tile ROD schema (2017) */ /** error reporting */ uint32_t m_error; /** mbts cached */ diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/phiutils.h b/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/phiutils.h index 0b255cbd934..9ea68075ff3 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/phiutils.h +++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/phiutils.h @@ -1,10 +1,12 @@ // emacs: this is -*- c++ -*- +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ // // @file phiutils.h // // // -// Copyright (C) 2014 M.Sutton (sutt@cern.ch) // // $Id: phiutils.h, v0.0 Sun 30 Mar 2014 16:12:42 CEST sutt $ diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx index 9064f093cdf..eef84f213de 100755 --- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx +++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx @@ -216,7 +216,7 @@ StatusCode TrigDataAccess::beginRunHandle(IOVSVC_CALLBACK_ARGS){ m_selfcalem = new LArTT_Selector<LArCellCont>(m_roiMap,m_larcell); } m_tilecell = new TileCellCont(); - m_tilecell->setHashIdToROD( m_tiledecoder->getHid2reHLT() ); + m_tilecell->setHashIdToROD( m_tiledecoder->getHid2reHLT() ); if ( (m_tilecell->initialize()).isFailure() ){ ATH_MSG_FATAL("Could not init tilecell"); } diff --git a/Trigger/TrigHypothesis/TrigCaloHypo/TrigCaloHypo/TrigEFCaloHypoNoise.h b/Trigger/TrigHypothesis/TrigCaloHypo/TrigCaloHypo/TrigEFCaloHypoNoise.h index 9953194ea4d..98e1a23977f 100755 --- a/Trigger/TrigHypothesis/TrigCaloHypo/TrigCaloHypo/TrigEFCaloHypoNoise.h +++ b/Trigger/TrigHypothesis/TrigCaloHypo/TrigCaloHypo/TrigEFCaloHypoNoise.h @@ -79,6 +79,14 @@ class TrigEFCaloHypoNoise : public HLT::HypoAlgo { long int m_publishTime; ToolHandle<ILArNoisyROTool> m_noisyROTool; + // helpers to define what is to be used to save events + bool m_badFEBFlaggedPartitions; + bool m_satTightFlaggedPartitions; + bool m_mNBLooseFlaggedPartitions; + bool m_mNBTightFlaggedPartitions; + bool m_mNBTight_PsVetoFlaggedPartitions; + unsigned int m_mask; + SG::ReadCondHandleKey<LArBadFebCont> m_knownBadFEBsVecKey {this, "BadFEBsKey", "LArKnownBadFEBs", "key to read the known Bad FEBs"}; SG::ReadCondHandleKey<LArBadFebCont> m_knownMNBFEBsVecKey {this, "MNBFEBsKey", "LArKnownMNBFEBs", "key to read the known MNB FEBs"}; std::set<unsigned int> m_knownBadFEBs; diff --git a/Trigger/TrigHypothesis/TrigCaloHypo/python/TrigCaloHypoConfig.py b/Trigger/TrigHypothesis/TrigCaloHypo/python/TrigCaloHypoConfig.py index af7da55f3cd..0f06f58d6e0 100644 --- a/Trigger/TrigHypothesis/TrigCaloHypo/python/TrigCaloHypoConfig.py +++ b/Trigger/TrigHypothesis/TrigCaloHypo/python/TrigCaloHypoConfig.py @@ -4,11 +4,13 @@ from AthenaCommon.SystemOfUnits import GeV from TrigCaloHypo.TrigCaloHypoConf import TrigEFCaloHypoNoise from LArCellRec.LArCellRecConf import LArNoisyROTool +from LArBadChannelTool.LArBadChannelToolConf import LArBadChanTool +from IOVDbSvc.CondDB import conddb +from AthenaCommon.AppMgr import ServiceMgr as svcMgr from LArCabling.LArCablingAccess import LArOnOffIdMapping LArOnOffIdMapping() - class EFCaloHypoNoiseConfig (TrigEFCaloHypoNoise): __slots__ = [] def __init__(self, name = "EFCaloHypoNoiseConfig",ef_thr=20*GeV,etaMin=0,etaMax=10): @@ -16,7 +18,34 @@ class EFCaloHypoNoiseConfig (TrigEFCaloHypoNoise): self.Etcut = ef_thr self.BadFEBCut=3 - theLArNoisyROTool=LArNoisyROTool(SaturatedCellTightCut=20,MNBLooseCut=5,MNBTightCut=17) + if 'COMP200' not in conddb.GetInstance() and not conddb.isMC: + if not hasattr(svcMgr.ToolSvc, "KnownBADFEBsTool"): + theBadFebTool=LArBadChanTool("KnownBADFEBsTool") + theBadFebTool.CoolMissingFEBsFolder="/LAR/BadChannels/KnownBADFEBs" + havefolder=False + for fld in conddb.iovdbsvc.Folders: + if "KnownBADFEBs" in fld: havefolder=True + pass + if not havefolder: + conddb.addFolder("LAR_ONL","/LAR/BadChannels/KnownBADFEBs") + svcMgr.ToolSvc+=theBadFebTool + else: + theBadFebTool=svcMgr.ToolSvc.KnownBADFEBsTool + if not hasattr(svcMgr.ToolSvc, "KnownMNBFEBsTool"): + theMNBFebTool=LArBadChanTool("KnownMNBFEBsTool") + theMNBFebTool.CoolMissingFEBsFolder="/LAR/BadChannels/KnownMNBFEBs" + havefolder=False + for fld in conddb.iovdbsvc.Folders: + if "KnownMNBFEBs" in fld: havefolder=True + pass + if not havefolder: + conddb.addFolder("LAR_ONL","/LAR/BadChannels/KnownMNBFEBs") + svcMgr.ToolSvc+=theMNBFebTool + else: + theMNBFebTool=svcMgr.ToolSvc.KnownMNBFEBsTool + theLArNoisyROTool=LArNoisyROTool(SaturatedCellTightCut=20,MNBLooseCut=5,MNBTightCut=17,KnownBADFEBsTool=theBadFebTool,KnownMNBFEBsTool=theMNBFebTool) + else: + theLArNoisyROTool=LArNoisyROTool(SaturatedCellTightCut=20,MNBLooseCut=5,MNBTightCut=17) self.NoiseTool = theLArNoisyROTool from TrigCaloHypo.TrigCaloHypoConf import TrigL2JetHypo diff --git a/Trigger/TrigHypothesis/TrigCaloHypo/src/TrigEFCaloHypoNoise.cxx b/Trigger/TrigHypothesis/TrigCaloHypo/src/TrigEFCaloHypoNoise.cxx index 057cc0e0b59..ac0836911b1 100755 --- a/Trigger/TrigHypothesis/TrigCaloHypo/src/TrigEFCaloHypoNoise.cxx +++ b/Trigger/TrigHypothesis/TrigCaloHypo/src/TrigEFCaloHypoNoise.cxx @@ -49,6 +49,11 @@ TrigEFCaloHypoNoise::TrigEFCaloHypoNoise(const std::string& name, ISvcLocator* p declareProperty( "BadFEBCut", m_MinBadFEB=5 ); declareProperty( "TimeToClear", m_timeTagPosToClear=300); declareProperty( "ISPublishTime", m_publishTime=180); + declareProperty( "BadFEBFlaggedPartitions", m_badFEBFlaggedPartitions=true); + declareProperty( "SatTightFlaggedPartitions", m_satTightFlaggedPartitions=true); + declareProperty( "MNBLooseFlaggedPartitions", m_mNBLooseFlaggedPartitions=true); + declareProperty( "MNBTightFlaggedPartitions", m_mNBTightFlaggedPartitions=true); + declareProperty( "MNBTight_PsVetoFlaggedPartitions", m_mNBTight_PsVetoFlaggedPartitions=true); } @@ -111,6 +116,15 @@ HLT::ErrorCode TrigEFCaloHypoNoise::hltInitialize() m_isInterface = false; } } // if cfact + + // create mask + m_mask = 0x0; + if ( m_badFEBFlaggedPartitions ) m_mask|=0x1; + if ( m_satTightFlaggedPartitions ) m_mask|=0x2; + if ( m_mNBLooseFlaggedPartitions ) m_mask|=0x10; + if ( m_mNBTightFlaggedPartitions ) m_mask|=0x20; + if ( m_mNBTight_PsVetoFlaggedPartitions ) m_mask|=0x40; + msg() << MSG::DEBUG << "using a mask to selec events : " << std::hex << m_mask << std::dec << endmsg; return HLT::OK; -- GitLab From d9ca6fed66fe128c2a3f047e62814d4c2ecce728 Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Mon, 26 Nov 2018 13:54:57 +0100 Subject: [PATCH 119/135] InDetD3PDMaker: Update for change in ITrackToVertex. The signature of ITrackToVertex::trackAtBeamline changed. Former-commit-id: 69280f9ccc9b8be5496a6d0dcd7b0827c8aae2be --- .../src/TrackBeamlineParametersAssociationTool.cxx | 10 ++++++++-- .../src/TrkTrackParametersAtBLFillerTool.cxx | 7 +++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrackBeamlineParametersAssociationTool.cxx b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrackBeamlineParametersAssociationTool.cxx index 08c889a7b07..b687b91343e 100644 --- a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrackBeamlineParametersAssociationTool.cxx +++ b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrackBeamlineParametersAssociationTool.cxx @@ -58,7 +58,10 @@ StatusCode TrackBeamlineParametersAssociationTool::initialize() const Trk::TrackParameters* TrackBeamlineParametersAssociationTool::get (const Trk::Track& p) { - return m_trackToVertexTool->trackAtBeamline (p); + const InDet::BeamSpotData* bsd = m_trackToVertexTool->GetBeamSpotData (Gaudi::Hive::currentContext()); + std::unique_ptr<Trk::StraightLineSurface> bl = + m_trackToVertexTool->GetBeamLine (bsd); + return m_trackToVertexTool->trackAtBeamline (p, bl.get()); } @@ -84,7 +87,10 @@ TrackBeamlineParametersAssociationTool::get (const Rec::TrackParticle& p) const Trk::TrackParameters* TrackBeamlineParametersAssociationTool::get (const Trk::TrackParameters& p) { - return m_trackToVertexTool->trackAtBeamline (p); + const InDet::BeamSpotData* bsd = m_trackToVertexTool->GetBeamSpotData (Gaudi::Hive::currentContext()); + std::unique_ptr<Trk::StraightLineSurface> bl = + m_trackToVertexTool->GetBeamLine (bsd); + return m_trackToVertexTool->trackAtBeamline (p, bl.get()); } diff --git a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrkTrackParametersAtBLFillerTool.cxx b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrkTrackParametersAtBLFillerTool.cxx index d2462efb61d..266c60d8670 100644 --- a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrkTrackParametersAtBLFillerTool.cxx +++ b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrkTrackParametersAtBLFillerTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TrkTrackParametersAtBLFillerTool.h" @@ -80,7 +80,10 @@ StatusCode TrkTrackParametersAtBLFillerTool::fill (const Trk::Track& track) if(m_levelOfDetails > 0) { // call the TrackToVertex Tool - const Trk::TrackParameters* ataline = m_trackToVertexTool->trackAtBeamline(track); + const InDet::BeamSpotData* bsd = m_trackToVertexTool->GetBeamSpotData (Gaudi::Hive::currentContext()); + std::unique_ptr<Trk::StraightLineSurface> bl = + m_trackToVertexTool->GetBeamLine (bsd); + const Trk::TrackParameters* ataline = m_trackToVertexTool->trackAtBeamline (track, bl.get()); if(!ataline) { #if 0 -- GitLab From 978eee78d89b77c904938b0664d7172ec6ed1c1e Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Mon, 26 Nov 2018 14:09:29 +0100 Subject: [PATCH 120/135] Add missing import of CfgMgr to ISF_FatrasServicesConfig.py Former-commit-id: f9ed9f30920a6440badcc9dcdeb88550f3a05044 --- .../ISF_FatrasServices/python/ISF_FatrasServicesConfig.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py index 08008f5f695..72c6577ec31 100644 --- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py +++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py @@ -5,6 +5,7 @@ Tools configurations for ISF for ISF_FatrasServicesConfig KG Tan, 04/12/2012 """ +from AthenaCommon import CfgMgr from AthenaCommon.CfgGetter import getPrivateTool,getPrivateToolClone,getPublicTool,getPublicToolClone,\ getService,getServiceClone,getAlgorithm,getAlgorithmClone -- GitLab From eb65cb7258d967b502620525ee2bb3ada63a8c5d Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Sat, 24 Nov 2018 23:37:34 +0100 Subject: [PATCH 121/135] LArGeoTBEC: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: f710f675a5a32aab97efaeccac1d336c14467970 --- .../src/CryostatConstructionTBEC.cxx | 17 +++++++------- .../LArGeoTBEC/src/EMECModuleConstruction.cxx | 22 +++++++++---------- .../src/LArDetectorConstructionTBEC.cxx | 13 +++++------ .../LArGeoTBEC/src/LArDetectorFactoryTBEC.cxx | 8 +------ .../LArGeoTBEC/src/LArDetectorToolTBEC.cxx | 4 ++-- 5 files changed, 28 insertions(+), 36 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/CryostatConstructionTBEC.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/CryostatConstructionTBEC.cxx index 9e162af7d10..c916c395c39 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/CryostatConstructionTBEC.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/CryostatConstructionTBEC.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // CryostatConstructionTBEC @@ -23,7 +23,6 @@ #include "GeoModelKernel/GeoAlignableTransform.h" #include "GeoModelKernel/GeoIdentifierTag.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelKernel/GeoShapeUnion.h" @@ -77,25 +76,25 @@ GeoVFullPhysVol* LArGeo::CryostatConstructionTBEC::GetEnvelope() // Get the materials from the material manager:-----------------------------------------------------// // // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in CryostatConstructionTBEC, std::Air is not found."); - GeoMaterial *Al = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Al = materialManager->getMaterial("std::Aluminium"); if (!Al) throw std::runtime_error("Error in CryostatConstructionTBEC, std::Aluminium is not found."); - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in CryostatConstructionTBEC, std::LiquidArgon is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in CryostatConstructionTBEC, std::Iron is not found."); - GeoMaterial *Gten = materialManager->getMaterial("LAr::G10"); + const GeoMaterial *Gten = materialManager->getMaterial("LAr::G10"); if (!Gten) throw std::runtime_error("Error in CryostatConstructionTBEC, LAr::G10 is not found."); - GeoMaterial *Vacuum = materialManager->getMaterial("LAr::Vacuum"); + const GeoMaterial *Vacuum = materialManager->getMaterial("LAr::Vacuum"); if (!Vacuum) throw std::runtime_error("Error in CryostatConstructionTBEC, std::Vacuum is not found."); // // diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/EMECModuleConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/EMECModuleConstruction.cxx index 37330734858..80c3992eb2a 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/EMECModuleConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/EMECModuleConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // EMECModuleConstruction @@ -82,7 +82,7 @@ GeoVFullPhysVol* LArGeo::EMECModuleConstruction::GetEnvelope() if (svcLocator->service("DetectorStore", detStore, false )==StatusCode::FAILURE) { throw std::runtime_error("Error in EndcapCryostatConstruction, cannot access DetectorStore"); } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0; @@ -103,15 +103,15 @@ GeoVFullPhysVol* LArGeo::EMECModuleConstruction::GetEnvelope() double FracGten,Fracpb,Fracfe,Fracgl,Fraccu,Fracka; double aH,aO,aC,aN,aAr; - GeoElement* H=materialManager->getElement("Hydrogen"); - GeoElement* C=materialManager->getElement("Carbon"); - GeoElement* N=materialManager->getElement("Nitrogen"); - GeoElement* O=materialManager->getElement("Oxygen"); - GeoElement* Al=materialManager->getElement("Aluminium"); - GeoElement* Ar=materialManager->getElement("Argon"); - GeoElement* Fe=materialManager->getElement("Iron"); - GeoElement* Cu=materialManager->getElement("Copper"); - GeoElement* Pb=materialManager->getElement("Lead"); + const GeoElement* H=materialManager->getElement("Hydrogen"); + const GeoElement* C=materialManager->getElement("Carbon"); + const GeoElement* N=materialManager->getElement("Nitrogen"); + const GeoElement* O=materialManager->getElement("Oxygen"); + const GeoElement* Al=materialManager->getElement("Aluminium"); + const GeoElement* Ar=materialManager->getElement("Argon"); + const GeoElement* Fe=materialManager->getElement("Iron"); + const GeoElement* Cu=materialManager->getElement("Copper"); + const GeoElement* Pb=materialManager->getElement("Lead"); //LAr diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorConstructionTBEC.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorConstructionTBEC.cxx index 4a09e1c5ed8..f455798a780 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorConstructionTBEC.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorConstructionTBEC.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // LArDetectorConstructionTBEC @@ -22,7 +22,6 @@ #include "GeoModelKernel/GeoAlignableTransform.h" #include "GeoModelKernel/GeoIdentifierTag.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelUtilities/StoredPhysVol.h" @@ -149,10 +148,10 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionTBEC::GetEnvelope() if (svcLocator->service("DetectorStore", detStore, false )==StatusCode::FAILURE) { throw std::runtime_error("Error in LArDetectorConstructionTBEC, cannot access DetectorStore"); } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0; - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) { throw std::runtime_error("Error in LArDetectorConstructionTBEC, std::Air is not found."); } @@ -229,13 +228,13 @@ GeoFullPhysVol* LArGeo::LArDetectorConstructionTBEC::createEnvelope() // Get the materials from the material manager:-----------------------------------------------------// // // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in LArDetectorConstructionTBEC, std::Air is not found."); - GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); + const GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); if (!Lead) throw std::runtime_error("Error in LArDetectorConstructionTBEC, std::Lead is not found."); diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorFactoryTBEC.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorFactoryTBEC.cxx index 4690f5a0b91..8fafe7b9f39 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorFactoryTBEC.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorFactoryTBEC.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // LArDetectorFactory.cxx @@ -18,7 +18,6 @@ #include "CLHEP/Geometry/Transform3D.h" #include "GeoModelInterfaces/StoredMaterialManager.h" -#include "StoreGate/DataHandle.h" #include "StoreGate/StoreGateSvc.h" #include "GaudiKernel/MsgStream.h" @@ -80,11 +79,6 @@ void LArGeo::LArDetectorFactoryTBEC::create( GeoPhysVol* a_container ) throw std::runtime_error("Error in LArDetectorFactoryTBEC, cannot access DetectorStore"); } - DataHandle<StoredMaterialManager> materialManager; - if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { - throw std::runtime_error("Error in LArDetectorFactoryTBEC, cannot access Material Manager"); - } - // V.N : Patch LAr materials LArMaterialManager lArMaterialManager(detStore); lArMaterialManager.buildMaterials(); diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorToolTBEC.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorToolTBEC.cxx index 868730d9239..92368d3b39b 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorToolTBEC.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorToolTBEC.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArDetectorToolTBEC.h" @@ -48,7 +48,7 @@ StatusCode LArDetectorToolTBEC::create() log << MSG::INFO << "LAr Geometry Options:" << endmsg; // Locate the top level experiment node - DataHandle<GeoModelExperiment> theExpt; + GeoModelExperiment* theExpt = nullptr; if (StatusCode::SUCCESS != detStore()->retrieve( theExpt, "ATLAS" )) { log << MSG::ERROR << "Could not find GeoModelExperiment ATLAS" << endmsg; -- GitLab From 0f8ce3eb3d8721d043adee79e94951f2e634cbcc Mon Sep 17 00:00:00 2001 From: Julie Kirk <Julie.Kirk@cern.ch> Date: Mon, 26 Nov 2018 15:12:54 +0100 Subject: [PATCH 122/135] updates for Trigger ART tests change error return code when reference is missing change art-output file from *.regtest to *.regtest.new files Former-commit-id: 6dc691f417a5ca2d46ed9e4f55215499f91b29df --- .../TriggerTest/test/exec_art_triggertest_post.sh | 10 +++++----- .../TriggerTest/test/test_mc_hi_v4_grid.sh | 2 +- .../TriggerTest/test/test_mc_hi_v5_grid.sh | 2 +- .../TriggerTest/test/test_mc_pp_v7_build.sh | 2 +- .../TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh | 2 +- .../test/test_mc_pp_v7_cpsampleprod_grid.sh | 2 +- .../TriggerTest/test/test_mc_pp_v7_grid.sh | 2 +- .../TriggerTest/test/test_mc_pp_v7_loose_grid.sh | 2 +- .../test/test_mc_pp_v7_nops_aod_ftk_build.sh | 2 +- .../test/test_mc_pp_v7_nops_aod_ftk_grid.sh | 2 +- .../TriggerTest/test/test_mc_pp_v7_tight_grid.sh | 2 +- .../test/test_mc_pp_v7_triggervalidation_grid.sh | 2 +- .../TriggerTest/test/test_physics_hi_v4_build.sh | 2 +- .../TriggerTest/test/test_physics_hi_v4_grid.sh | 2 +- .../TriggerTest/test/test_physics_hi_v5_build.sh | 2 +- .../TriggerTest/test/test_physics_hi_v5_grid.sh | 2 +- .../TriggerTest/test/test_physics_pp_v7_aod_grid.sh | 2 +- .../TriggerTest/test/test_physics_pp_v7_build.sh | 2 +- .../test/test_physics_pp_v7_chainorder_build.sh | 2 +- .../TriggerTest/test/test_physics_pp_v7_grid.sh | 2 +- .../test/test_physics_pp_v7_primaries_build.sh | 2 +- .../test/test_physics_pp_v7_primaries_grid.sh | 2 +- .../TriggerTest/test/test_physics_pp_v7_tight_grid.sh | 2 +- .../TriggerTest/test/test_slice_bjet_build.sh | 2 +- .../TriggerTest/test/test_slice_bjet_grid.sh | 2 +- .../TriggerTest/test/test_slice_bphysics_aod_grid.sh | 2 +- .../TriggerTest/test/test_slice_bphysics_build.sh | 2 +- .../TriggerTest/test/test_slice_bphysics_grid.sh | 2 +- .../test/test_slice_bphysicsexo_aod_grid.sh | 2 +- .../TriggerTest/test/test_slice_electron_build.sh | 2 +- .../TriggerTest/test/test_slice_electron_grid.sh | 2 +- .../TriggerTest/test/test_slice_id_build.sh | 2 +- .../TriggerTest/test/test_slice_jet_build.sh | 2 +- .../TriggerTest/test/test_slice_jet_grid.sh | 2 +- .../TriggerTest/test/test_slice_l1_build.sh | 2 +- .../TriggerTest/test/test_slice_l1_grid.sh | 2 +- .../TriggerTest/test/test_slice_met_build.sh | 2 +- .../TriggerTest/test/test_slice_met_grid.sh | 2 +- .../TriggerTest/test/test_slice_minbias_build.sh | 2 +- .../TriggerTest/test/test_slice_minbias_grid.sh | 2 +- .../TriggerTest/test/test_slice_minbias_hmt_grid.sh | 2 +- .../TriggerTest/test/test_slice_muon_build.sh | 2 +- .../TriggerTest/test/test_slice_muon_grid.sh | 2 +- .../TriggerTest/test/test_slice_tau_build.sh | 2 +- .../TriggerTest/test/test_slice_tau_grid.sh | 2 +- 45 files changed, 49 insertions(+), 49 deletions(-) diff --git a/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh b/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh index 010a70fe235..4d673859750 100755 --- a/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh +++ b/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh @@ -33,15 +33,15 @@ timeout 1m chainDump.py -S --rootFile=expert-monitoring.root export JOB_LOG_TAIL=${JOB_LOG%%.*}.tail.${JOB_LOG#*.} tail -10000 ${JOB_LOG} > ${JOB_LOG_TAIL} -grep REGTEST athena.log > athena.regtest +grep REGTEST athena.log > athena.regtest.new if [ -f ${REF_FOLDER}/athena.regtest ]; then echo $(date "+%FT%H:%M %Z")" Running regtest" - timeout 1m regtest.pl --inputfile athena.regtest --reffile ${REF_FOLDER}/athena.regtest | tee regtest.log + timeout 1m regtest.pl --inputfile athena.regtest.new --reffile ${REF_FOLDER}/athena.regtest | tee regtest.log echo "art-result: ${PIPESTATUS[0]} RegTest" else echo $(date "+%FT%H:%M %Z")" No reference athena.regtest found in ${REF_FOLDER}" - echo "art-result: 5 RegTest" + echo "art-result: 999 RegTest" fi if [ -f ${REF_FOLDER}/expert-monitoring.root ]; then @@ -53,8 +53,8 @@ if [ -f ${REF_FOLDER}/expert-monitoring.root ]; then echo "art-result: ${PIPESTATUS[0]} CheckCounts" else echo $(date "+%FT%H:%M %Z")" No reference expert-monitoring.root found in ${REF_FOLDER}" - echo "art-result: 5 RootComp" - echo "art-result: 5 CheckCounts" + echo "art-result: 999 RootComp" + echo "art-result: 999 CheckCounts" fi if [ -f trig_cost.root ]; then diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh index 73d3840b6ea..d09c06a6120 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_hi_v4_grid" export MENU="MC_HI_v4" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh index 70b767c496d..6262c768fd9 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh @@ -18,7 +18,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_hi_v5_grid" export MENU="MC_HI_v5" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh index 55915640d27..66a961e4662 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_pp_v7_build" export MENU="MC_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh index 16518440f99..4f37f5321d6 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_pp_v7_bulkmcprod_grid" export MENU="MC_pp_v7_BulkMCProd_mc_prescale" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh index d7c16e606c5..27adba5c916 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_pp_v7_cpsampleprod_grid" export MENU="MC_pp_v7_CPSampleProd_mc_prescale" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh index aa5165441ee..fe8720d2788 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh @@ -21,7 +21,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_pp_v7_grid" export MENU="MC_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh index 73a447b6a7e..630cd4cc7f9 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_pp_v7_loose_grid" export MENU="MC_pp_v7_loose_mc_prescale" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh index 65fb2fb2dde..98577c38dee 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_pp_v7_nops_aod_ftk_build" export MENU="Physics_pp_v7_primaries" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh index 18aaaeb29f1..d8a69180165 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_pp_v7_nops_aod_ftk_grid" export MENU="Physics_pp_v7_primaries" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh index 25593464c95..ed2eb0decf0 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_pp_v7_tight_grid" export MENU="MC_pp_v7_tight_mc_prescale" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh index 4712f5ab537..e09a3cfd38f 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="mc_pp_v7_triggervalidation_grid" export MENU="MC_pp_v7_TriggerValidation_mc_prescale" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh index 8ae6fa30128..e767ec41ee5 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_hi_v4_build" export MENU="Physics_HI_v4" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh index 88d2d234347..f6266e655fa 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_hi_v4_grid" export MENU="Physics_HI_v4" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh index 1c0b679bd58..f4c5094c686 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh @@ -18,7 +18,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_hi_v5_build" export MENU="Physics_HI_v5" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh index 89866ebd0b6..48c24aea157 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh @@ -18,7 +18,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_hi_v5_grid" export MENU="Physics_HI_v5" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh index fe200878fef..10c9c3b2a0d 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_pp_v7_aod_grid" export MENU="Physics_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh index 17785fb306b..003761568b4 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_pp_v7_build" export MENU="Physics_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh index 807cf5d415a..d560ee9791c 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_pp_v7_chainorder_build" export MENU="Physics_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh index ed40ae525ea..2583f66e75d 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh @@ -21,7 +21,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_pp_v7_grid" export MENU="Physics_pp_v7" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh index c611d6f0db8..66b54150a41 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh @@ -16,7 +16,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_pp_v7_build_primaries" export MENU="Physics_pp_v7_primaries" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh index c7c4baa8be5..2fb43fd56d7 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh @@ -16,7 +16,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="physics_pp_v7_grid_primaries" export MENU="Physics_pp_v7_primaries" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh index 68fcf6c4cab..deca2daacfd 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export MENU="Physics_pp_v7_tight_physics_prescale" export EVENTS="500" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh index 4b768e7661e..5d6a36647bc 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_bjet_build" export SLICE="bjet" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh index d99ff307daf..cc999f2a49e 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_bjet_grid" export SLICE="bjet" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh index 5b04d847554..45164f8868f 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_bphysics_aod_grid" export SLICE="bphysics" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh index 4287965d4a5..2316b366a98 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_bphysics_build" export SLICE="bphysics" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh index ffc13d9c0aa..c6ce938851d 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_bphysics_grid" export SLICE="bphysics" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh index 8e588f1851b..aeadbb07fa4 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_bphysicsexo_aod_grid" export SLICE="mubphysics" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh index 8e4f81931f9..22ed460c852 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_electron_build" export SLICE="egamma" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh index ea42d84b821..f2bfb416ae2 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_electron_grid" export SLICE="egamma" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh index 60e43d805fc..365c531d84d 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_id_build" export EVENTS="10" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh index ac076c4a7a6..e9b5c6d7a44 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_jet_build" export SLICE="jet" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh index 7640a265710..8e21cda5ea4 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_jet_grid" export SLICE="jet" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh index 419c2afad7b..6fab21a12ab 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_l1_build" export EVENTS="10" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh index 2d227b12fdd..1c4c7a0be06 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_l1_grid" export JOBOPTIONS="TriggerTest/testLVL1CTPAthenaTrigRDO.py" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh index 7ee9148b526..dd669c39099 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_met_build" export SLICE="met" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh index 0a9f2a8f597..23e6e1b1cc3 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_met_grid" export SLICE="met" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh index 5cc105a4c3b..8f3fe858239 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_minbias_build" export SLICE="minbias" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh index aec3e6de360..8c22738628b 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_minbias_grid" export SLICE="minbias" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh index a27477e0460..791d453328a 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_minbias_hmt_grid" export SLICE="minbiasEnhanced" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh index 07604baf6d4..21755b3193c 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_muon_build" export SLICE="muon" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh index dec5ebe03a5..d2becffc2da 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_muon_grid" export SLICE="muon" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh index 03131a73f1c..2ee6d99e31c 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_tau_build" export SLICE="tau" diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh index 15d585d96b9..167a490f06c 100755 --- a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh +++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh @@ -20,7 +20,7 @@ # art-output: ntuple.pmon.gz # art-output: *perfmon* # art-output: TotalEventsProcessed.txt -# art-output: *.regtest +# art-output: *.regtest.new export NAME="slice_tau_grid" export SLICE="tau" -- GitLab From 166a67fc03bfa52da466ee94c70a57041d9f2c34 Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Sat, 24 Nov 2018 23:37:54 +0100 Subject: [PATCH 123/135] LArGeoTBBarrel: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: 535bed7be235e7da9ca424a5e79c41d3c1bd7c65 --- .../src/TBBarrelCryostatConstruction.cxx | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBBarrel/src/TBBarrelCryostatConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBBarrel/src/TBBarrelCryostatConstruction.cxx index e963639be55..5a169e4ee32 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoTBBarrel/src/TBBarrelCryostatConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoTBBarrel/src/TBBarrelCryostatConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // TBBarrelCryostatConstruction @@ -22,7 +22,6 @@ #include "GeoModelKernel/GeoTransform.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" -#include "StoreGate/DataHandle.h" #include "StoreGate/StoreGateSvc.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/Bootstrap.h" @@ -89,40 +88,40 @@ GeoFullPhysVol* LArGeo::TBBarrelCryostatConstruction::GetEnvelope() // Get the materials from the material manager:--------------------------------------------------- // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) { throw std::runtime_error("Error in TBBarrelCryostatConstruction, std::Air is not found."); } - GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); if (!Aluminium) { throw std::runtime_error("Error in TBBarrelCryostatConstruction, std::Aluminium is not found."); } - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) { throw std::runtime_error("Error in TBBarrelCryostatConstruction, std::LiquidArgon is not found."); } - GeoMaterial* Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial* Iron = materialManager->getMaterial("std::Iron"); if (!Iron) { throw std::runtime_error("Error in TBBarrelCryostatConstruction, std::Iron is not found."); } - GeoElement* Hydrogen = materialManager->getElement("Hydrogen"); + const GeoElement* Hydrogen = materialManager->getElement("Hydrogen"); if (!Hydrogen) { throw std::runtime_error("Error in TBBarrelCryostatConstruction, hydrogen not found."); } - GeoElement* Carbon = materialManager->getElement("Carbon"); + const GeoElement* Carbon = materialManager->getElement("Carbon"); if (!Carbon) { throw std::runtime_error("Error in TBBarrelCryostatConstruction, carbon not found."); } - GeoElement* Oxygen = materialManager->getElement("Oxygen"); + const GeoElement* Oxygen = materialManager->getElement("Oxygen"); if (!Oxygen) { throw std::runtime_error("Error in TBBarrelCryostatConstruction, oxygen not found."); } -- GitLab From c6a227b0561a9b0e7f89530b77b5a3d60eb59edd Mon Sep 17 00:00:00 2001 From: Julie Kirk <Julie.Kirk@cern.ch> Date: Mon, 26 Nov 2018 15:31:48 +0100 Subject: [PATCH 124/135] Update master TrigAnalysisTest to use "primaries" menu for "physics" tests Former-commit-id: 9966f6d99f6af1c5a8eaffa9cfafc517cf061bbd --- .../TrigAnalysisTest/test/test_physics_pp_v7_rdotoaod_grid.sh | 2 +- .../test/test_physics_pp_v7_rdotobstoesd_build.sh | 2 +- .../test/test_physics_pp_v7_rdotoesdaod_build.sh | 2 +- .../test/test_physics_pp_v7_rdotoesdaod_grid.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoaod_grid.sh b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoaod_grid.sh index 639c1039e02..52e3a9884d3 100755 --- a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoaod_grid.sh +++ b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoaod_grid.sh @@ -25,7 +25,7 @@ export NAME="physics_pp_v7_rdotoaod_grid" export COST_MONITORING="False" export TEST="TrigAnalysisTest" -export MENU="Physics_pp_v7" +export MENU="Physics_pp_v7_primaries" export EVENTS="100" export JOBOPTION="TrigAnalysisTest/testAthenaTrigRDOtoAOD.py" diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotobstoesd_build.sh b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotobstoesd_build.sh index a36d8ac4b0a..baa5b204770 100755 --- a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotobstoesd_build.sh +++ b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotobstoesd_build.sh @@ -23,7 +23,7 @@ export NAME="physics_pp_v7_rdotobstoesd_build" export COST_MONITORING="False" export TEST="TrigAnalysisTest" -export MENU="Physics_pp_v7" +export MENU="Physics_pp_v7_primaries" export EVENTS="3" export JOBOPTION="TrigAnalysisTest/testAthenaTrigRDOtoBS.py" diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh index 06c721a33d7..2d868fb4e5a 100755 --- a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh +++ b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh @@ -23,7 +23,7 @@ export NAME="physics_pp_v7_rdotoesdaod_build" export COST_MONITORING="False" export TEST="TrigAnalysisTest" -export MENU="Physics_pp_v7" +export MENU="Physics_pp_v7_primraies" export EVENTS="3" export JOBOPTION="TrigAnalysisTest/testAthenaTrigRDOtoESDAOD.py" diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_grid.sh b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_grid.sh index ca66ffcf47d..61500481109 100755 --- a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_grid.sh +++ b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_grid.sh @@ -25,7 +25,7 @@ export NAME="physics_pp_v7_rdotoesdaod_grid" export COST_MONITORING="False" export TEST="TrigAnalysisTest" -export MENU="Physics_pp_v7" +export MENU="Physics_pp_v7_primaries" export EVENTS="100" export JOBOPTION="TrigAnalysisTest/testAthenaTrigRDOtoESDAOD.py" -- GitLab From 5c167dacf999703cf4b04250a4890dce7cc45f7b Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Sat, 24 Nov 2018 23:38:15 +0100 Subject: [PATCH 125/135] LArGeoMiniFcal: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: 9913c5297c076f28d16ef84ffaa0d4c221e302a3 --- .../LArGeoMiniFcal/src/MiniFcalConstruction.cxx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoMiniFcal/src/MiniFcalConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoMiniFcal/src/MiniFcalConstruction.cxx index e3ebf843ad1..8b346065986 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoMiniFcal/src/MiniFcalConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoMiniFcal/src/MiniFcalConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // MiniFcalConstruction @@ -29,7 +29,6 @@ #include "RDBAccessSvc/IRDBRecordset.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/Bootstrap.h" @@ -99,26 +98,26 @@ GeoFullPhysVol* LArGeo::MiniFcalConstruction::GetEnvelope() const IRDBRecord* envParameters = (*recEnvelope)[0]; //_________ Get materials from the Material Manager ___________________________ - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; sc = detStore->retrieve(materialManager, std::string("MATERIALS")); if(sc!=StatusCode::SUCCESS) { log << MSG::ERROR << "Unable to retrieve the Stored Material Manager" << endmsg; return 0; } - GeoMaterial* Copper = materialManager->getMaterial(envParameters->getString("MATERIAL")); + const GeoMaterial* Copper = materialManager->getMaterial(envParameters->getString("MATERIAL")); if(!Copper) { log << MSG::ERROR << "Error in MiniFcalConstruction, unable to find material for the envelope" << endmsg; return 0; } - GeoMaterial* Diamond = materialManager->getMaterial("pix::Diamond"); + const GeoMaterial* Diamond = materialManager->getMaterial("pix::Diamond"); if(!Diamond) { log << MSG::ERROR << "Error in MiniFcalConstruction, unable to find Diamond material" << endmsg; return 0; } - GeoMaterial *Feldspar = materialManager->getMaterial("std::Feldspar"); + const GeoMaterial *Feldspar = materialManager->getMaterial("std::Feldspar"); if (!Feldspar) { log << MSG::ERROR << "Error in MiniFcalConstruction, unable to find material for the Ceramic Layers" << endmsg; return 0; -- GitLab From b38399914c3e6e4cca6efef5009e4b33b60beabd Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Sat, 24 Nov 2018 23:38:38 +0100 Subject: [PATCH 126/135] LArGeoHec: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: b84e69d072e5387d16f4a03f377c4060c11f8ea1 --- .../LArGeoHec/src/HEC2WheelConstruction.cxx | 7 +++---- .../LArGeoHec/src/HECClampConstruction.cxx | 9 ++++----- .../LArGeoHec/src/HECModuleConstruction.cxx | 13 ++++++------- .../LArGeoHec/src/HECWheelConstruction.cxx | 9 ++++----- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HEC2WheelConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HEC2WheelConstruction.cxx index 09464e05734..aa539968940 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HEC2WheelConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HEC2WheelConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ ///////////////////////////////////////////////////////////////////// @@ -48,7 +48,6 @@ #include "CLHEP/Units/PhysicalConstants.h" #include "CLHEP/GenericFunctions/Variable.hh" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelUtilities/StoredPhysVol.h" @@ -113,7 +112,7 @@ GeoFullPhysVol* LArGeo::HEC2WheelConstruction::GetEnvelope(bool fullGeo, bool po throw std::runtime_error("Error in HEC2WheelConstruction, cannot access DetectorStore"); } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { throw std::runtime_error("Error in HEC2WheelConstruction, cannot access Material Manager"); } @@ -165,7 +164,7 @@ GeoFullPhysVol* LArGeo::HEC2WheelConstruction::GetEnvelope(bool fullGeo, bool po double wheelGap = shrinkCold * (*hadronicEndcap)[0]->getDouble("GAPWHL")*cm; - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in HEC2WheelConstruction, std::LiquidArgon is not found."); GeoPcon* solidHEC; //pointer to the solid HEC diff --git a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECClampConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECClampConstruction.cxx index 153e2520093..cb45fec5977 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECClampConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECClampConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // HECClampConstruction.cxx 1.0.0 @@ -36,7 +36,6 @@ #include "CLHEP/Units/PhysicalConstants.h" #include "CLHEP/GenericFunctions/Variable.hh" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GaudiKernel/MsgStream.h" @@ -97,13 +96,13 @@ GeoPhysVol* LArGeo::HECClampConstruction::GetClampingBar(bool rail,bool left) // Get access to the material manager: - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { throw std::runtime_error("Error in HECModuleConstruction(ClampBar), cannot access Material Manager"); } - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in HECModuleConstruction(ClampBar), std::LiquidArgon is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in HECModuleConstruction(ClampBar), std::Iron is not found."); diff --git a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECModuleConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECModuleConstruction.cxx index 156583f2f33..d7164e3d4d0 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECModuleConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECModuleConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // HECModuleConstruction.cxx 1.0.0 @@ -27,7 +27,6 @@ #include "CLHEP/Units/PhysicalConstants.h" #include "CLHEP/GenericFunctions/Variable.hh" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GaudiKernel/MsgStream.h" @@ -94,21 +93,21 @@ GeoFullPhysVol* LArGeo::HECModuleConstruction::GetEnvelope() } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { throw std::runtime_error("Error in HECModuleConstruction, cannot access Material Manager"); } - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in HECModuleConstruction, std::LiquidArgon is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in HECModuleConstruction, std::Iron is not found."); - GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); + const GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); if (!Copper) throw std::runtime_error("Error in HECModuleConstruction, std::Copper is not found."); - GeoMaterial *Kapton = materialManager->getMaterial("std::Kapton"); + const GeoMaterial *Kapton = materialManager->getMaterial("std::Kapton"); if (!Kapton) throw std::runtime_error("Error in HECModuleConstruction, std::Kapton is not found."); diff --git a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECWheelConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECWheelConstruction.cxx index b7e65c6baef..5f961a8126c 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECWheelConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECWheelConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // HECWheelConstruction.cxx 1.0.0 @@ -37,7 +37,6 @@ #include "CLHEP/Units/PhysicalConstants.h" #include "CLHEP/GenericFunctions/Variable.hh" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GaudiKernel/MsgStream.h" @@ -105,15 +104,15 @@ GeoFullPhysVol* LArGeo::HECWheelConstruction::GetEnvelope() } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) { throw std::runtime_error("Error in HECWheelConstruction, cannot access Material Manager"); } - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in HECWheelConstruction, std::LiquidArgon is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in HECWheelConstruction, std::Iron is not found."); -- GitLab From f179d56122a66690fe2543a245a5cfefe9cfd217 Mon Sep 17 00:00:00 2001 From: Julie Kirk <Julie.Kirk@cern.ch> Date: Mon, 26 Nov 2018 15:46:23 +0100 Subject: [PATCH 127/135] fix typo in menu name Former-commit-id: babff56d229556fe6d7478befa996177a5b2be68 --- .../test/test_physics_pp_v7_rdotoesdaod_build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh index 2d868fb4e5a..e115425f15f 100755 --- a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh +++ b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh @@ -23,7 +23,7 @@ export NAME="physics_pp_v7_rdotoesdaod_build" export COST_MONITORING="False" export TEST="TrigAnalysisTest" -export MENU="Physics_pp_v7_primraies" +export MENU="Physics_pp_v7_primaries" export EVENTS="3" export JOBOPTION="TrigAnalysisTest/testAthenaTrigRDOtoESDAOD.py" -- GitLab From eabe86fc7b8dbaaffc296d53595365b6c028ae3f Mon Sep 17 00:00:00 2001 From: Frank Winklmeier <frank.winklmeier@cern.ch> Date: Mon, 26 Nov 2018 15:37:19 +0100 Subject: [PATCH 128/135] TrigPSC: Fix missing import and some cleanup - Add missing IncludeError import - Migrate ScopeTimer to std::chrono - General cleanup Former-commit-id: 96e07a3e9c3455fdf8afdebab78f6cec362c0700 --- .../TrigControl/TrigPSC/TrigPSC/Utils.h | 13 +++---- ...gHLTImplementationDBPythonSwitchToDebug.py | 10 ------ .../TrigPSC/share/TrigPSCPythonDbSetup.py | 4 --- .../TrigPSC/share/TrigPSCPythonSetup.py | 9 +++-- HLT/Trigger/TrigControl/TrigPSC/src/Utils.cxx | 36 +++++-------------- 5 files changed, 20 insertions(+), 52 deletions(-) delete mode 100644 HLT/Trigger/TrigControl/TrigPSC/share/TrigHLTImplementationDBPythonSwitchToDebug.py diff --git a/HLT/Trigger/TrigControl/TrigPSC/TrigPSC/Utils.h b/HLT/Trigger/TrigControl/TrigPSC/TrigPSC/Utils.h index ad8034838cc..fd58602034d 100644 --- a/HLT/Trigger/TrigControl/TrigPSC/TrigPSC/Utils.h +++ b/HLT/Trigger/TrigControl/TrigPSC/TrigPSC/Utils.h @@ -1,13 +1,10 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** * @file TrigPSC/Utils.h * @author Frank Winklmeier - * $Author: ricab $ - * $Revision: 11 $ - * $Date: 2013-05-14 17:22:39 +0200 (Tue, 14 May 2013) $ * * @brief Some helpers for the PSC */ @@ -17,7 +14,7 @@ #include <vector> #include <string> -#include <sys/time.h> +#include <chrono> namespace psc { @@ -68,9 +65,9 @@ namespace psc { void stop(); private: - std::string m_descr; ///< description of timer - struct timeval m_t1; ///< start time - bool m_running; ///< timer running? + std::string m_descr; ///< description of timer + std::chrono::system_clock::time_point m_t1; ///< start time + bool m_running; ///< timer running? }; } /* namespace Utils */ diff --git a/HLT/Trigger/TrigControl/TrigPSC/share/TrigHLTImplementationDBPythonSwitchToDebug.py b/HLT/Trigger/TrigControl/TrigPSC/share/TrigHLTImplementationDBPythonSwitchToDebug.py deleted file mode 100644 index a3a53b18485..00000000000 --- a/HLT/Trigger/TrigControl/TrigPSC/share/TrigHLTImplementationDBPythonSwitchToDebug.py +++ /dev/null @@ -1,10 +0,0 @@ -# -# Switch Output Level to DEBUG when using HLTImplementationDBPython in OKS -# -from AthenaCommon.Include import include -from AthenaCommon.Constants import * -from TrigPSC import PscConfig -from TrigServices.TriggerUnixStandardSetup import _Conf -_Conf.useOnlineTHistSvc=True -PscConfig.optmap['LOGLEVEL']='DEBUG' -include('TrigPSC/TrigPSCPythonDbSetup.py') diff --git a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py index e037fbfa326..e56abfb74e7 100644 --- a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py +++ b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py @@ -2,7 +2,6 @@ ## @file TrigPSCPythonDbSetup.py ## @brief Minimal Python setup for running from TrigDB ## @author Frank Winklmeier -## $Id: TrigPSCPythonDbSetup.py 11 2013-05-14 15:22:39Z ricab $ ############################################################### ## This is a very minimal Python setup. It is only included when @@ -12,9 +11,6 @@ ## !!! Do NOT import theApp. It will screw up the configuration !!! -import string, os, sys - - def setTHistSvcOutput(): """Helper to set THistSvc.Output""" diff --git a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py index 4e049e14a61..c4bb4dedbbd 100755 --- a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py +++ b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py @@ -20,7 +20,9 @@ else: pscServiceSetupBegin = "TrigServices/TrigServicesCommonBegin.py" # Service definitions pscServiceSetupEnd = "TrigServices/TrigServicesCommonEnd.py" # Service definitions - import sys, os, string + import sys + import os + import string ### Set up some common flags -------------------------------------------------- @@ -74,6 +76,9 @@ else: del logLevel + ## file inclusion and tracing + from AthenaCommon.Include import Include, IncludeError, include + ## set the default values try: include( pscBootstrapFile ) @@ -96,7 +101,7 @@ else: # in case this is not available try for backward compatibility # to load the old libAthenaServicesDict and try to install it from there # - if ServiceMgr.CoreDumpSvc.properties().has_key('FatalHandler'): + if 'FatalHandler' in ServiceMgr.CoreDumpSvc.properties(): ServiceMgr.CoreDumpSvc.FatalHandler = -1 # make SIG_INT fatal ## set resource limits diff --git a/HLT/Trigger/TrigControl/TrigPSC/src/Utils.cxx b/HLT/Trigger/TrigControl/TrigPSC/src/Utils.cxx index b8f2d99bedf..2eddd12c15b 100644 --- a/HLT/Trigger/TrigControl/TrigPSC/src/Utils.cxx +++ b/HLT/Trigger/TrigControl/TrigPSC/src/Utils.cxx @@ -1,13 +1,10 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /** * @file TrigPSC/src/Utils.cxx * @author Frank Winklmeier - * $Author: ricab $ - * $Revision: 11 $ - * $Date: 2013-05-14 17:22:39 +0200 (Tue, 14 May 2013) $ * * @brief Some helpers for the PSC */ @@ -18,7 +15,6 @@ #undef _POSIX_C_SOURCE #include <Python.h> -#include <sys/time.h> #include <errno.h> //-------------------------------------------------------------------------------- @@ -59,35 +55,19 @@ bool psc::Utils::pyInclude (const std::string& pyFileName) // ScopeTimer class //-------------------------------------------------------------------------------- - psc::Utils::ScopeTimer::ScopeTimer (const std::string& descr) : m_descr(descr), m_running(true) { - gettimeofday(&m_t1, 0); - - // Format time - char buf[64]; - struct tm tms; - time_t sec = m_t1.tv_sec; - localtime_r(&sec, &tms); - strftime(buf, 64, "%Y-%m-%d %H:%M:%S", &tms); - - // Print and append milliseconds - ERS_LOG( m_descr << " started at time: " << buf - << "," << static_cast<unsigned int>(m_t1.tv_usec/1000) ); + m_t1 = std::chrono::system_clock::now(); + auto t = std::chrono::system_clock::to_time_t(m_t1); + ERS_LOG( m_descr << " started at time: " << std::put_time(std::localtime(&t), "%Y-%m-%d %H:%M:%S") ); } void psc::Utils::ScopeTimer::stop() { - struct timeval t2; - gettimeofday(&t2, 0); - - int secs = 0 ; - if (t2.tv_sec >= m_t1.tv_sec) - secs = t2.tv_sec - m_t1.tv_sec; - - int usecs = t2.tv_usec - m_t1.tv_usec; - float mtime = static_cast<float>(secs)*1000 + static_cast<float>(usecs)/1000; - ERS_LOG( m_descr << " finished. Time used [ms] = " << mtime ); + auto t2 = std::chrono::system_clock::now(); + auto dt_ms = std::chrono::duration_cast<std::chrono::milliseconds>(t2 - m_t1); + ERS_LOG( m_descr << " finished. Time used [ms] = " << dt_ms.count() ); + m_running = false; } -- GitLab From 8d9f307c9b5109354075ffea45bc2f17f595dded Mon Sep 17 00:00:00 2001 From: Rafal Bielski <rafal.bielski@cern.ch> Date: Mon, 26 Nov 2018 17:16:01 +0100 Subject: [PATCH 129/135] Remove packages HLTTestApps, ALP, DFStreamEventSelector Former-commit-id: c7f94bcb8592f6fd3480061a0a76551261e139f7 --- Event/DFStreamEventSelector/CMakeLists.txt | 46 - .../src/DFStreamEventSelector.cxx | 253 -- .../src/DFStreamEventSelector.h | 157 -- .../DFStreamEventSelector_entries.cxx | 4 - HLT/HLTTestApps/CMakeLists.txt | 33 - HLT/HLTTestApps/doc/README | 1 - HLT/HLTTestApps/doc/README.MET | 145 -- .../doc/README.athenaHLT-select-PEB-stream | 105 - .../python/HLTTestApps/__init__.py | 196 -- .../python/HLTTestApps/application.py | 38 - .../python/HLTTestApps/configuration.py | 1295 ---------- .../python/HLTTestApps/infrastructure.py | 102 - .../HLTTestApps/online_infrastructure.py | 536 ---- HLT/HLTTestApps/python/HLTTestApps/option.py | 560 ----- HLT/HLTTestApps/python/HLTTestApps/optspec.py | 460 ---- .../python/HLTTestApps/pausable_istream.py | 345 --- .../python/HLTTestApps/plugins/__init__.py | 13 - .../python/HLTTestApps/plugins/fill_empty.py | 71 - .../HLTTestApps/plugins/print_event_header.py | 12 - .../HLTTestApps/plugins/remove_nonlisted.py | 36 - .../python/HLTTestApps/plugins/truncate.py | 37 - .../python/HLTTestApps/processor.py | 610 ----- .../scripts/athenaHLT-select-PEB-stream.py | 205 -- HLT/HLTTestApps/python/scripts/athenaHLT.py | 30 - .../python/scripts/hlt_test_apps_preload.sh | 99 - .../python/scripts/ros2rob_from_partition.py | 90 - HLT/HLTTestApps/python/tests/test_app.sh | 73 - HLT/HLTTestApps/python/tests/test_lib.sh | 34 - HLT/HLTTestApps/src/Event.cxx | 825 ------- HLT/HLTTestApps/src/Event.h | 248 -- HLT/HLTTestApps/src/IInfoRegister_wrap.cxx | 74 - HLT/HLTTestApps/src/IInfoRegister_wrap.h | 39 - HLT/HLTTestApps/src/L1_ROBs.h | 25 - HLT/HLTTestApps/src/TimeoutGuard.cxx | 124 - HLT/HLTTestApps/src/TimeoutGuard.h | 82 - HLT/HLTTestApps/src/bindings.cxx | 101 - HLT/HLTTestApps/src/issue.h | 26 - HLT/HLTTestApps/src/ptree_wrap.cxx | 195 -- HLT/HLTTestApps/src/ptree_wrap.h | 78 - HLT/HLTTestApps/src/util.cxx | 736 ------ HLT/HLTTestApps/src/util.h | 229 -- Projects/Athena/package_filters.txt | 3 - Trigger/ALP/ALP/ALP.h | 149 -- Trigger/ALP/ALP/ALP_utils.h | 61 - Trigger/ALP/ALP/DataSourceExceptions.h | 86 - Trigger/ALP/ALP/FileDataSource.h | 84 - Trigger/ALP/ALP/Issues.h | 47 - Trigger/ALP/ALP/PluginLoader.h | 84 - Trigger/ALP/CMakeLists.txt | 32 - Trigger/ALP/python/ALPPy.cxx | 402 --- Trigger/ALP/python/ALPPy/ALPPy.py | 904 ------- Trigger/ALP/python/ALPPy/__init__.py | 1 - Trigger/ALP/scripts/runALPPy.py | 423 ---- Trigger/ALP/src/ALP.cxx | 2151 ----------------- Trigger/ALP/src/DataSourceExceptions.cxx | 81 - Trigger/ALP/src/FileDataSource.cxx | 485 ---- Trigger/ALP/src/PluginLoader.cxx | 64 - Trigger/ALP/src/alpfactory.cxx | 17 - Trigger/ALP/src/fileds_factory.cxx | 16 - 59 files changed, 13458 deletions(-) delete mode 100644 Event/DFStreamEventSelector/CMakeLists.txt delete mode 100644 Event/DFStreamEventSelector/src/DFStreamEventSelector.cxx delete mode 100644 Event/DFStreamEventSelector/src/DFStreamEventSelector.h delete mode 100644 Event/DFStreamEventSelector/src/components/DFStreamEventSelector_entries.cxx delete mode 100644 HLT/HLTTestApps/CMakeLists.txt delete mode 100644 HLT/HLTTestApps/doc/README delete mode 100644 HLT/HLTTestApps/doc/README.MET delete mode 100644 HLT/HLTTestApps/doc/README.athenaHLT-select-PEB-stream delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/__init__.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/application.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/configuration.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/infrastructure.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/online_infrastructure.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/option.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/optspec.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/pausable_istream.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/plugins/__init__.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/plugins/fill_empty.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/plugins/print_event_header.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/plugins/remove_nonlisted.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/plugins/truncate.py delete mode 100644 HLT/HLTTestApps/python/HLTTestApps/processor.py delete mode 100755 HLT/HLTTestApps/python/scripts/athenaHLT-select-PEB-stream.py delete mode 100755 HLT/HLTTestApps/python/scripts/athenaHLT.py delete mode 100755 HLT/HLTTestApps/python/scripts/hlt_test_apps_preload.sh delete mode 100755 HLT/HLTTestApps/python/scripts/ros2rob_from_partition.py delete mode 100755 HLT/HLTTestApps/python/tests/test_app.sh delete mode 100755 HLT/HLTTestApps/python/tests/test_lib.sh delete mode 100644 HLT/HLTTestApps/src/Event.cxx delete mode 100644 HLT/HLTTestApps/src/Event.h delete mode 100644 HLT/HLTTestApps/src/IInfoRegister_wrap.cxx delete mode 100644 HLT/HLTTestApps/src/IInfoRegister_wrap.h delete mode 100644 HLT/HLTTestApps/src/L1_ROBs.h delete mode 100644 HLT/HLTTestApps/src/TimeoutGuard.cxx delete mode 100644 HLT/HLTTestApps/src/TimeoutGuard.h delete mode 100644 HLT/HLTTestApps/src/bindings.cxx delete mode 100644 HLT/HLTTestApps/src/issue.h delete mode 100644 HLT/HLTTestApps/src/ptree_wrap.cxx delete mode 100644 HLT/HLTTestApps/src/ptree_wrap.h delete mode 100644 HLT/HLTTestApps/src/util.cxx delete mode 100644 HLT/HLTTestApps/src/util.h delete mode 100644 Trigger/ALP/ALP/ALP.h delete mode 100644 Trigger/ALP/ALP/ALP_utils.h delete mode 100644 Trigger/ALP/ALP/DataSourceExceptions.h delete mode 100644 Trigger/ALP/ALP/FileDataSource.h delete mode 100644 Trigger/ALP/ALP/Issues.h delete mode 100644 Trigger/ALP/ALP/PluginLoader.h delete mode 100644 Trigger/ALP/CMakeLists.txt delete mode 100644 Trigger/ALP/python/ALPPy.cxx delete mode 100644 Trigger/ALP/python/ALPPy/ALPPy.py delete mode 100644 Trigger/ALP/python/ALPPy/__init__.py delete mode 100755 Trigger/ALP/scripts/runALPPy.py delete mode 100644 Trigger/ALP/src/ALP.cxx delete mode 100644 Trigger/ALP/src/DataSourceExceptions.cxx delete mode 100644 Trigger/ALP/src/FileDataSource.cxx delete mode 100644 Trigger/ALP/src/PluginLoader.cxx delete mode 100644 Trigger/ALP/src/alpfactory.cxx delete mode 100644 Trigger/ALP/src/fileds_factory.cxx diff --git a/Event/DFStreamEventSelector/CMakeLists.txt b/Event/DFStreamEventSelector/CMakeLists.txt deleted file mode 100644 index 1a4a6ea64d8..00000000000 --- a/Event/DFStreamEventSelector/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ -################################################################################ -# Package: DFStreamEventSelector -################################################################################ -# macro(dump_var arg) -# message(STATUS "SAMI ${arg}=${${arg}}") -# endmacro(dump_var) -# Declare the package name: -atlas_subdir( DFStreamEventSelector ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PUBLIC - Control/AthenaBaseComps - Event/ByteStreamCnvSvcBase - # Event/ByteStreamData - GaudiKernel - PRIVATE - Control/AthenaKernel - Control/SGTools - Control/StoreGate - Event/EventInfo - Event/xAOD/xAODEventInfo - ) - -# External dependencies: -find_package( tdaq-common COMPONENTS hltinterface ) -# Libraries in the package: -atlas_add_library( DFStreamEventSelectorLib - src/*.h src/*.cxx -` PUBLIC_HEADERS DFStreamEventSelector - PRIVATE_INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} - LINK_LIBRARIES AthenaBaseComps GaudiKernel - StoreGateLib rt ${TDAQ-COMMON_hltinterface_LIBRARY} - PRIVATE_LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} - AthenaKernel EventInfo xAODEventInfo) - -atlas_add_component( DFStreamEventSelector - src/components/*.cxx - PRIVATE_INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} - PRIVATE_LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} # need to include since IROBDataProviderSvc brings in ers and eformat - LINK_LIBRARIES DFStreamEventSelectorLib ) - - -# Install files from the package: -atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) diff --git a/Event/DFStreamEventSelector/src/DFStreamEventSelector.cxx b/Event/DFStreamEventSelector/src/DFStreamEventSelector.cxx deleted file mode 100644 index 52b88570525..00000000000 --- a/Event/DFStreamEventSelector/src/DFStreamEventSelector.cxx +++ /dev/null @@ -1,253 +0,0 @@ -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 - -*/ -#include "DFStreamEventSelector.h" -#include <functional> -#include <memory> -#include <errno.h> -#include <unistd.h> -#include <dlfcn.h> -#include <boost/property_tree/ptree.hpp> -#include <boost/property_tree/xml_parser.hpp> -#include "hltinterface/DataSource.h" -#include "xAODEventInfo/EventInfo.h" -#include "xAODEventInfo/EventAuxInfo.h" - -DFStreamEventSelector::DFStreamEventSelector(const std::string &name, ISvcLocator* pSvcLocator):AthService(name,pSvcLocator), - m_incidentSvc("IncidentSvc", name), - m_evtStore("StoreGateSvc", name), - m_robProvider("ROBDataProviderSvc", name) -{ - -} - -DFStreamEventSelector::~DFStreamEventSelector(){} - -StatusCode DFStreamEventSelector::initialize(){ - - char* errmsg; - if(!m_ds){ - //http://stackoverflow.com/questions/12358843/why-are-function-pointers-and-data-pointers-incompatible-in-c-c - std::string libName(m_plugin.value()); - //is full lib? check for .so extension - if(libName.size()>3 && libName.substr(libName.size()-3)!=".so"){//not full lib - libName=std::string("lib")+libName+std::string(".so"); - } - - union{ - hltinterface::DataSource* (*fptr)(void); - void *ptr; - } uc; - - union{ - void (*fptr)(hltinterface::DataSource*); - void *ptr; - } ud; - - void* handle=dlopen(libName.c_str(),RTLD_LAZY|RTLD_LOCAL); - if(!handle){ - ATH_MSG_FATAL("Can't open "<<libName<<" error is "<<dlerror()); - return StatusCode::FAILURE; - } - dlerror(); - uc.ptr=dlsym(handle,"create_hltmp_datasource"); - if((errmsg=dlerror())!=NULL){ - ATH_MSG_FATAL("Can't load symbol 'create_hltmp_datasource' from "<<libName); - return StatusCode::FAILURE; - } - dlerror(); - ud.ptr=dlsym(handle,"destroy_hltmp_datasource"); - if((errmsg=dlerror())!=NULL){ - ATH_MSG_FATAL("Can't load symbol 'destroy_hltmp_datasource' from "<<libName); - return StatusCode::FAILURE; - } - dlerror(); - m_ds=std::shared_ptr<hltinterface::DataSource>(uc.fptr(),std::ptr_fun(ud.fptr)); - } - if(!m_ds){ - ATH_MSG_FATAL("DataSource creation failed"); - return StatusCode::FAILURE; - } - boost::property_tree::ptree pt; - int fl= boost::property_tree::xml_parser::no_comments| - boost::property_tree::xml_parser::trim_whitespace; - try{ - boost::property_tree::xml_parser::read_xml(m_pluginConfig.value(),pt,fl); - }catch(std::exception &ex){ - ATH_MSG_FATAL("Caught exception when parsing ptree. Exception was:"<<ex.what()); - return StatusCode::FAILURE; - } - - try{ - if(!m_ds->configure(pt)){ - ATH_MSG_FATAL("DataSource Configuration failed!"); - return StatusCode::FAILURE; - } - }catch(std::exception &ex){ - ATH_MSG_FATAL("DataSource Configuration failed with "<<ex.what()); - return StatusCode::FAILURE; - }catch(...){ - ATH_MSG_FATAL("DataSource Configuration failed with an unknown exception"); - return StatusCode::FAILURE; - } - if(!m_robProvider.retrieve().isSuccess()){ - ATH_MSG_FATAL("Cant retrieve ROBDataProviderSvc"); - return StatusCode::FAILURE; - } - if(!m_evtStore.retrieve().isSuccess()){ - ATH_MSG_FATAL("Cant retrieve EventStore"); - return StatusCode::FAILURE; - } - return StatusCode::SUCCESS; -} - -StatusCode DFStreamEventSelector::start(){ - boost::property_tree::ptree conf; - try{ - m_ds->prepareForRun(conf); - }catch(std::exception &ex){ - ATH_MSG_FATAL("DataSource preparation failed with "<<ex.what()); - return StatusCode::FAILURE; - }catch(...){ - ATH_MSG_FATAL("DataSource preparation failed with an unknown exception"); - return StatusCode::FAILURE; - } - conf.put("start_id",0); - conf.put("stride",1); - conf.put("appName","Test");// used by the PSC - conf.put("clientName","Test"); - conf.put("workerId",0);//used by PSC - conf.put("numberOfWorkers",1);// used by PSC - try{ - m_ds->prepareWorker(conf); - }catch(std::exception &ex){ - ATH_MSG_FATAL("DataSource preparation failed with "<<ex.what()); - return StatusCode::FAILURE; - }catch(...){ - ATH_MSG_FATAL("DataSource preparation failed with an unknown exception"); - return StatusCode::FAILURE; - } - - return StatusCode::SUCCESS; -} - -StatusCode DFStreamEventSelector::stop(){ - boost::property_tree::ptree conf; - try{ - m_ds->finalizeWorker(conf); - }catch(std::exception &ex){ - ATH_MSG_FATAL("DataSource finalization failed with "<<ex.what()); - return StatusCode::FAILURE; - }catch(...){ - ATH_MSG_FATAL("DataSource finalization failed with an unknown exception"); - return StatusCode::FAILURE; - } - try{ - m_ds->finalize(conf); - }catch(std::exception &ex){ - ATH_MSG_FATAL("DataSource finalization failed with "<<ex.what()); - return StatusCode::FAILURE; - }catch(...){ - ATH_MSG_FATAL("DataSource finalization failed with an unknown exception"); - return StatusCode::FAILURE; - } - - return StatusCode::SUCCESS; - -} - -StatusCode DFStreamEventSelector::finalize(){ - m_ds.reset(); - if(!m_robProvider.release().isSuccess()){ - ATH_MSG_FATAL("Cant release ROBDataProviderSvc"); - return StatusCode::FAILURE; - } - return StatusCode::SUCCESS; -} - -StatusCode DFStreamEventSelector::createContext(EvtContext*& c) const{ - c=new DFContext(); - if(c)return StatusCode::SUCCESS; - return StatusCode::SUCCESS; -} - - -StatusCode DFStreamEventSelector::next(EvtContext& /*c*/) const{ - std::vector<eformat::ROBFragment<const uint32_t*> > data; - uint32_t lvl1id(0); - uint64_t gid(0); - uint64_t lumiBlock(0); - try{ - m_ds->getL1Result(data,lvl1id,gid,lumiBlock); - }catch(std::exception &ex){ - ATH_MSG_FATAL("DataSource getL1Result failed with "<<ex.what()); - return StatusCode::FAILURE; - }catch(...){ - ATH_MSG_FATAL("DataSource getL1Result failed"); - return StatusCode::FAILURE; - } - auto evInfo=new xAOD::EventInfo(); - auto evInfoAux=new xAOD::EventAuxInfo(); - evInfo->setStore(evInfoAux); - evInfo->setEventNumber(gid); - evInfo->setLumiBlock(lumiBlock); - if(!m_evtStore->record(evInfo,"EventInfo").isSuccess()){ - ATH_MSG_FATAL("EventInfo registration to storegate failed"); - return StatusCode::FAILURE; - } - if(!m_evtStore->record(evInfoAux,"EventInfoAux").isSuccess()){ - ATH_MSG_FATAL("EventInfo registration to storegate failed"); - return StatusCode::FAILURE; - } - return StatusCode::SUCCESS; -} - - -StatusCode DFStreamEventSelector::next(EvtContext& c,int jump) const{ - for(int i=0;i<jump;i++){ - if(next(c)!=StatusCode::SUCCESS){ - return StatusCode::FAILURE; - } - } - - return StatusCode::SUCCESS; -} - -StatusCode DFStreamEventSelector::previous(EvtContext& /*c*/) const{ - ATH_MSG_INFO("Not implemented"); - return StatusCode::FAILURE; -} -//Can't really jump should we just read -StatusCode DFStreamEventSelector::previous(EvtContext& /*c*/,int /*jump*/) const{ - ATH_MSG_INFO("Not implemented"); - return StatusCode::FAILURE; -} - -StatusCode DFStreamEventSelector::last(EvtContext& /*c*/) const{ - ATH_MSG_INFO("Not implemented"); - return StatusCode::FAILURE; -} - -StatusCode DFStreamEventSelector::rewind(EvtContext& /*c*/) const{ - ATH_MSG_INFO("Not implemented"); - return StatusCode::FAILURE; -} - -StatusCode DFStreamEventSelector::createAddress(const EvtContext& /*c*/,IOpaqueAddress*& iop) const{ - iop=0; - return StatusCode::SUCCESS; -} - -StatusCode DFStreamEventSelector::releaseContext(EvtContext*& c)const{ - delete c; - c=0; - return StatusCode::SUCCESS; -} - -StatusCode DFStreamEventSelector::resetCriteria(const std::string& /*cr*/,Context& /*c*/)const{ - return StatusCode::SUCCESS; -} diff --git a/Event/DFStreamEventSelector/src/DFStreamEventSelector.h b/Event/DFStreamEventSelector/src/DFStreamEventSelector.h deleted file mode 100644 index 12b3251528a..00000000000 --- a/Event/DFStreamEventSelector/src/DFStreamEventSelector.h +++ /dev/null @@ -1,157 +0,0 @@ -/* -*- c++ -*- */ -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 - -*/ -/* A simple class to use DFDataSource implementations to read data - * - */ -#ifndef __DFSTREAMEVENTSELECTOR_H -#define __DFSTREAMEVENTSELECTOR_H - -#ifndef GAUDIKERNEL_IEVTSELECTOR_H -# include "GaudiKernel/IEvtSelector.h" -#endif -#include "GaudiKernel/IIncidentSvc.h" - -#ifndef GAUDIKERNEL_PROPERTY_H -# include "GaudiKernel/Property.h" -#endif - -#ifndef GAUDIKERNEL_SERVICEHANDLE_H -# include "GaudiKernel/ServiceHandle.h" -#endif - -#ifndef GAUDIKERNEL_TOOLHANDLE_H -#include "GaudiKernel/ToolHandle.h" -#endif -#ifndef EVENTINFO_EVENTID_H -# include "EventInfo/EventID.h" /* number_type */ -#endif - -#include "AthenaBaseComps/AthService.h" -#include "StoreGate/StoreGateSvc.h" -#include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h" - -namespace hltinterface{ - class DataSource; -} - -class DFStreamEventSelector:public AthService, - public IEvtSelector{ -public: - DFStreamEventSelector(const std::string &name, ISvcLocator* pSvcLocator); - virtual ~DFStreamEventSelector(); - typedef IEvtSelector::Context EvtContext; - class DFContext:public EvtContext{ - public: - DFContext():m_L1id(0){}; - virtual ~DFContext(){}; - virtual void* identifier() const override final {return (void*)&m_L1id;} ; - private: - uint32_t m_L1id; - }; - /**Create and return a context object that will - keep track of the state of selection. - - @param c Reference of a pointer to a Context object. - */ - virtual StatusCode createContext(EvtContext*& c) const override; - - /**Fetch the next event or the first event if it will be use soon - after the creation of the context. - It will return StatusCode::FAILURE if there have been problem in the fetching or it - has been reached the end of the list of events. - - @param c Reference to the Context object. - */ - virtual StatusCode next(EvtContext& c) const override; - - /**Same of next(const Context&) plus the possibility to jump the next n-1 events. - - @param c Reference to the Context object. - @param jump The event to jump to from the current event. - */ - virtual StatusCode next(EvtContext& c,int jump) const override; - - /**Fetch the previous event. - It will return StatusCode::FAILURE if there have been problem in the fetching or it - has been reached the begin of the list of events. - - @param c Reference to the Context object. - */ - virtual StatusCode previous(EvtContext& c) const override; - - /**Same of previous(Context& c) the possibility to jump the previous n-1 events. - - @param c Reference to the Context object. - @param jump The event to jump to from the current event. - */ - virtual StatusCode previous(EvtContext& c,int jump) const override; - - /** Access last item in the iteration - * @param refContext [IN/OUT] Reference to the Context object. - */ - virtual StatusCode last(EvtContext& refContext) const override; - - /** Will set the state of the context in a way that the next event read - * is the first of the list. - * - * @param c Reference to the Context object. - */ - virtual StatusCode rewind(EvtContext& c) const override; - - /** Create an IOpaqueAddress object from the event fetched. - * - * @param c Reference to the Context object. - * @param iop Refernce pointer to a IOpaqueAddress object - * - */ - virtual StatusCode createAddress(const EvtContext& c,IOpaqueAddress*& iop) const override; - - /** Release the Context object. - * - * @param c Reference pointer to the Context object. - */ - virtual StatusCode releaseContext(EvtContext*&)const override; - - /** Will set a new criteria for the selection of the next list of events and will change - * the state of the context in a way to point to the new list. - * - * @param cr The new criteria string. - * @param c Reference pointer to the Context object. - */ - virtual StatusCode resetCriteria(const std::string& cr,Context& c)const override; - virtual StatusCode initialize() override; - virtual StatusCode start() override; - virtual StatusCode stop() override; - virtual StatusCode finalize() override; - -private: - typedef hltinterface::DataSource* (*dscreator)(void); - - std::shared_ptr<hltinterface::DataSource> m_ds; - ServiceHandle<IIncidentSvc> m_incidentSvc; - ServiceHandle<StoreGateSvc> m_evtStore; - ServiceHandle<IROBDataProviderSvc> m_robProvider; - Gaudi::Property<std::string> m_plugin{this,"PluginName","FileDS","Name of the DataSource plugin"}; - Gaudi::Property<std::string> m_pluginConfig{this,"PluginConfig","","Plugin configuration, in the form of xml serialized ptree"}; - Gaudi::Property<bool> m_overrideRunNumber; - Gaudi::Property<bool> m_overrideEventNumber; - Gaudi::Property<bool> m_overrideTimeStamp; - Gaudi::Property<bool> m_filebased; - - Gaudi::CheckedProperty<int> m_runNo; - Gaudi::CheckedProperty<int> m_firstEventNo; - Gaudi::CheckedProperty<int> m_eventsPerRun; - Gaudi::CheckedProperty<int> m_firstLBNo; - Gaudi::CheckedProperty<int> m_eventsPerLB; - Gaudi::CheckedProperty<int> m_initTimeStamp; - Gaudi::Property<int> m_timeStampInterval; - - -}; -#endif diff --git a/Event/DFStreamEventSelector/src/components/DFStreamEventSelector_entries.cxx b/Event/DFStreamEventSelector/src/components/DFStreamEventSelector_entries.cxx deleted file mode 100644 index 19c657fa9aa..00000000000 --- a/Event/DFStreamEventSelector/src/components/DFStreamEventSelector_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "../DFStreamEventSelector.h" - -DECLARE_COMPONENT( DFStreamEventSelector ) - diff --git a/HLT/HLTTestApps/CMakeLists.txt b/HLT/HLTTestApps/CMakeLists.txt deleted file mode 100644 index c4b24b2cd64..00000000000 --- a/HLT/HLTTestApps/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -################################################################################ -# Package: HLTTestApps -################################################################################ - -# Declare the package name: -atlas_subdir( HLTTestApps ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Control/StoreGate - GaudiKernel - Trigger/TrigT1/TrigT1Result ) - -# External dependencies: -find_package( Boost COMPONENTS filesystem thread system python ) -find_package( PythonLibs ) -find_package( tdaq COMPONENTS dynlibs owl ipc omnithread omniORB4 ) -find_package( tdaq-common COMPONENTS CTPfragment hltinterface pyeformat_util eformat_write ) - -# Component(s) in the package: -atlas_add_library( pyhlttestapps - src/*.cxx - NO_PUBLIC_HEADERS - PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS} ${TDAQ-COMMON_INCLUDE_DIRS} ${TDAQ_INCLUDE_DIRS} - LINK_LIBRARIES StoreGateLib SGtests - PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${TDAQ_LIBRARIES} GaudiKernel TrigT1Result ) - -# Install files from the package: -atlas_install_python_modules( python/HLTTestApps/*.py python/HLTTestApps/plugins ) -atlas_install_scripts( python/scripts/*.py python/scripts/*.sh ) - -atlas_add_alias( athenaHLT "athenaHLT.py" ) -atlas_add_alias( athenaHLT-select-PEB-stream "athenaHLT-select-PEB-stream.py" ) diff --git a/HLT/HLTTestApps/doc/README b/HLT/HLTTestApps/doc/README deleted file mode 100644 index c23c5aaa0c8..00000000000 --- a/HLT/HLTTestApps/doc/README +++ /dev/null @@ -1 +0,0 @@ -To get doxygen documentation, use "cmt make doxygen" and open .../InstallArea/doc/HLTTestApps/html/index.html in a browser diff --git a/HLT/HLTTestApps/doc/README.MET b/HLT/HLTTestApps/doc/README.MET deleted file mode 100644 index c685b31c04e..00000000000 --- a/HLT/HLTTestApps/doc/README.MET +++ /dev/null @@ -1,145 +0,0 @@ -(outdated) - -Simulate LAr/Tile MET ROBs in L2 --------------------------------- - -When running with the athenaMT plugin "MET_L2.py" the FEB summary information -stored in LAr and Tile ROBs is extracted and packed into special MET ROBs -for L2. -The sub-detector Id for these ROBs is 0x7d for LAr and 0x7e for Tile. Typically -in P1 for every ROS in the LAr and Tile readout such a L2 MET ROB is generated. - -Using the MET plugin: ---------------------- - -With the command - -athenaMT -Z 'plugins.MET_L2' -f <data-file> <Job-options> - -the MET plugin is loaded and adds to the event read in from the file the additional MET ROBs -if the event does not already contain MET ROBs. In the case a MET ROB is found in the -input event no additional MET ROBs are generated but the number of retrieved MET ROBs -is checked against the expected number in the configuration. In case of a mismatch an -error message is printed. - -By default the plugin will generate for every sub-detector id in LAr and Tile one -MET ROB with the FEB information of all ROBs in the specific sub-detector. -This will result for LAr in 8 MET ROBs with the source identifiers 0x7d0001 to 0x7d0008 and for -Tile in 4 MET ROBs with the identifiers 0x7e0001 to 0x7e0004. -This should work transparently for any bytestream input file. - -If one wants to simulate the association of MET ROBs to ROSes like in P1 an external python file -"rob_ros_list.py" has to be provided in the PYTHONPATH. The file "rob_ros_list.py" can be -generated directly form the ATLAS OKS partition file with the command - -l2met-partition-ros-rob-config.py <atlas partition file>.data.xml - -The chosen partition file should correspond to the LAr and Tile readout configuration used for the -events in the data file. - -Alternatively, one can use - -l2met-rob-config-from-data.py <bytestream file> - -to extract the list of MET ROBs from an existing data file. However, this will not reproduce the ROB/ROS -configuration used online and therefor should not be considered as a fully valid test. - -Warning 1: ----------- -The plugin sets automatically in a precommand the following joboptions - -from AthenaCommon.AppMgr import ServiceMgr as svcMgr; -from AthenaCommon import CfgMgr;svcMgr+=CfgMgr.Lvl2ROBDataProviderSvc(\"ROBDataProviderSvc\") -svcMgr.ROBDataProviderSvc.LArMetROBs=[list of LAr MET ROBids] -svcMgr.ROBDataProviderSvc.TileMetROBs=[list of Tile MET ROBids] - -These MET ROB lists are automatically deduced from the chosen ROS-ROB configuration or from the default -configuration. These joboptions should therefore be not overwritten by a private joboptions file. - -Warning 2: ----------- -In the case an external python file "rob_ros_list.py" is provided, it is not guaranteed that the MET -ROB which is associated with a given ROS receives the same module id as it got in P1. The module id -depends on the sequence the ROS configuration is read in by the L2PU or the l2met-partition-ros-rob-config.py -script. However every MET ROB will contain the information of the same LAr/Tile ROBs/FEBs as they were configured -and grouped together in P1 for a given LAr/Tile ROS. - -Status bits in MET ROBs ------------------------ - -If athenaMT is running without a ROB-ROS configuration file "rob_ros_list.py", i.e with the default -configuration, the first status word is always set to 0. No error checking can be done in this case, -since athenaMT can not check for missing data. - -In the case a ROB-ROS configuration is provided and a required ROB is not found in the event the -following is done: -1) for the missing FEBs all data are set to 0 in the MET ROB -2) In the first status word the - generic field is set to 0x08 (=data corruption), and in the - specific field bit 29 (lost ROBIN) is set. - -How to obtain an ATLAS partition file (example) ------------------------------------------------ - -0) Goto OKS archive WEB page - http://atlas-project-tdaq-cc.web.cern.ch/atlas-project-tdaq-cc/cgi/oks-archive.pl - (see also https://twiki.cern.ch/twiki/bin/view/Atlas/TDAQPoint1RemoteMonitoring for information) - -1) Page 1: ATLAS OKS Archive - Select database: [--> choose Point-1 (offline)] - [Submit Query] - -2) Page 2: ATLAS OKS Archive for "Point-1 (offline)" database - Show configurations archived between now and [--> choose e.g. 2 days] ago - - Select release name: [--> choose tdaq-02-00-03] - [Submit Query] - - -3) Page 3: ATLAS OKS Archive for "Point-1 (offline)" database - - Select release name: [tdaq-02-00-03] - - Show configurations archived from till CERN local time - (leave empty to be ignored or use ISO 8601 date-time format to provide a value) - - Show user [ ] host [ ] partition [ATLAS] <--- fill in ATLAS - (leave a field empty to be ignored, or put exact name, or use expression with wildcards) - - User preferences - - Select timezone: [CERN] - - Show: [x] incremental versions [x] usage - - Select optional table columns: [ ] release [ ] user [ ] host [x] size [x] description - - Sort result by [partition name (desc)] - - [Submit Query] - -4) after pressing [Submit Query] in 3) in the same web page a table shows up - with the different partition versions - -Archived Versions -Version Date (CERN local time) Size Description -222.82.1 2010-Aug-24 12:20:19 CEST 519:209:4785 oks2coral: partition ATLAS (tdaq-02-00-03) - 2010-Aug-24 12:20:25 CEST partition: ATLAS run: 162620 - 2010-Aug-24 20:13:04 CEST partition: ATLAS run: 162623 -222.78.1 2010-Aug-23 19:55:03 CEST 518:207:4784 oks2coral: partition ATLAS (tdaq-02-00-03) -....... - -Choose a version which corresponds to the run which you would like to use. -Click e.g. on 222.78.1 and after some time a download dialog should show up which -asks where to save a file - - 222.78.1.tar.gz - -After the file was saved unpack it with - - tar -zxvf 222.78.1.tar.gz - -You should get 3 files - - a log file: out.log - - a schema file of the form: 222.schema.xml - - the partition file of the form: ATLAS.222.78.data.xml diff --git a/HLT/HLTTestApps/doc/README.athenaHLT-select-PEB-stream b/HLT/HLTTestApps/doc/README.athenaHLT-select-PEB-stream deleted file mode 100644 index 2fbfdb00cf6..00000000000 --- a/HLT/HLTTestApps/doc/README.athenaHLT-select-PEB-stream +++ /dev/null @@ -1,105 +0,0 @@ -The script - -athenaHLT-select-PEB-stream.py - -allows to select from a bystream file events which belong to a given stream and to write them to a bytestream output file which -obeys the same conventions as the files produced in P1. - -athenaHLT-select-PEB-stream.py -h - -gives a list of options which can be used: - -./athenaHLT-select-PEB-stream.py -h -global "./athenaHLT-select-PEB-stream.py" options: -[DFPadhlnpsv] | --[dump-options,help,lumi-block,max-events,option-file,output-dir,progress-bar,project-tag,start-event,stream-name,verbosity] [arguments]+ - - [Global options] - - --dump-options|-D dumps the current default options to stdout - --help|-h prints this usage message - --option-file|-F loads options from an option file (defaults to <empty>) - - - [Run mode options] - - --max-events|-n Maximum number of events in the output file. 0 means, al - l useful events from the input. (defaults to 0) - --output-dir|-d Directory in which the output file should be written (de - faults to .) - --progress-bar|-P Show progress bar when running interactively - --start-event|-a Number of events which should be skippped from the begin - (defaults to 0) - --verbosity|-v Log verbosity (defaults to 20) - - - [Stream Tag options] - - --lumi-block|-l Lumiblock number used for the output file. Use 0 if multi - ple LB in file. (defaults to 0) - --project-tag|-p Project tag which should be used for the output file (def - aults to data18_13Tev) - --stream-name|-s Name of stream which should be written out (defaults to D - ataScouting_05_Jets) - -While the script can be used with any stream name, the defaults are set for the DataScouting stream "DataScouting_05_Jets". - -Typical workflow for developers: --------------------------------- - -1) Develop new slection code for a new stream and integrate it with the menu - -2) run athenaHLT with the new code and write a bystream outputfile - -> athenaHLT <otions> -f <input-file> -o <athenaHLT-output-file> <job-options-file> - -The <athenaHLT-output-file> will contain all events which have triggered, including also DataScouting events. - -3) Generate a P1 stream file with "athenaHLT-select-PEB-stream.py" from the athenaHLT output file - -> athenaHLT-select-PEB-stream.py -s <my-prefered-stream> <athenaHLT-output-file> - -In the case of Jet Datascouting all defaults are set already and it is sufficient to run - -> athenaHLT-select-PEB-stream.py <athenaHLT-output-file> - -There will be an output file produced of the form - -<project tag>.<run number>.<stream_type>_<stream_name>.merge.RAW._<LB number>._<production step>._<file sequence number>.data - -example: - -data18_13Tev.00349335.calibration_DataScouting_05_Jets.merge.RAW._lb0000._athenaHLT._0001.data - -All input events have to be for the same run number, but can have different lumi block numbers (LB=0 is used for output file). - -4) run over the produced stream file the standard T0 reco programs - - -Example of producing a Jet DataScouting stream file from an enhanced bias file: -------------------------------------------------------------------------------- - -> athenaHLT -M -b --db-smkey=2695 --db-hltpskey='[(317,15172)]' -f '["data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0163._SFO-1._0001.1"]' -o "my-athenaHLT-BS-output" -> athenaHLT-select-PEB-stream.py my-athenaHLT-BS-output._0001.data -> Reco with input file data18_13Tev.00349335.calibration_DataScouting_05_Jets.merge.RAW._lb0000._athenaHLT._0001.data - -Some Remarks: -------------- - -1) athenaHLT-select-PEB-stream.py allows to read multiple input files - -> athenaHLT-select-PEB-stream.py <file1> <file2> ... <fileN> - -All events have to be however from the same run. Events from different runs are skipped and an ERROR message is printed. - -2) the option "--lumi-block|-l " should only be used if all events are from the same LB, otherwise use 0 (default). - -3) the option "--project-tag|-p" is set per default to 2018 data (data18_13Tev). - -4) For repeated running with the same options a standard option file can be generated: - -athenaHLT-select-PEB-stream.py -D <various options> <input files> > <my-opt-file.py> - -and the run can be repeated with - -athenaHLT-select-PEB-stream.py -F <my-opt-file.py> - -The file <my-opt-file.py> can be also edited and modified with Python commands. diff --git a/HLT/HLTTestApps/python/HLTTestApps/__init__.py b/HLT/HLTTestApps/python/HLTTestApps/__init__.py deleted file mode 100644 index c567e017f52..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/__init__.py +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env tdaq_python - -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -# $Id: __init__.py 102 2013-07-12 17:17:22Z ricab $ -# Created by Andre DOS ANJOS <Andre.dos.Anjos@cern.ch>, 30-Mar-2007 - -from libpyhlttestapps import * -import random, sys, os - -# avoids the duplication of ERS exception types... -sys.setdlopenflags(0x100|0x2) - -def random_sub_dict(basedict): - return random_sub_dict_num(basedict, random.randint(1,len(basedict))) - -def random_sub_dict_num(basedict, numitems): - # Get a sub-dictionary of basedict with a length corresponding to the minimum - # of numitems and the length of basedict (negative length converted to 0). - - basekeys = basedict.keys() - n = min(len(basekeys), numitems) if numitems > 0 else 0 - - # create the sub-dictionary - ret = {} - for i in range(n): - k = basekeys.pop(random.randint(0, len(basekeys)-1)) - ret[k] = basedict[k] - - # make sure this is properly implemented - assert len(ret) <= len(basedict) - assert len(ret) <= numitems - assert len(ret) == numitems or numitems > len(basedict) - for k, v in ret.items(): - assert k in basedict and v == basedict[k] - - return ret - -def hook_debugger(): - """ - Hooks debugger to this process. - - Copied from athena.py - """ - pid = os.spawnvp(os.P_NOWAIT, 'gdb', - [ 'gdb', '-q', 'python', str( os.getpid() ) ] ) - # give debugger some time to attach to the python process - import time - time.sleep(1) - -def get_test_files(): - files = {} - files['base_dir'] = d = '/afs/cern.ch/work/r/ricab/datafiles/' # temp solution - - f1 = d + '2013-05-22VALAllPT_mcV2-1._0001.data' # 100 events, run 177531 - f2 = d + '2012-05-04VALAllPT_physicsV4-1._0001.data' # 99 events, run 200863 - f3 = d + ('data14_cos.00233343.physics_L1Muon.merge.' - 'RAW._lb0002._SFO-ALL.M4._0001.1.') # 34716 events - f4 = d + ('data14_cos.00248112.physics_CosmicMuons.merge.' - 'RAW._lb0003._SFO-11._150ev.1') # 150 events - files['datafiles'] = [f1, f2] - files['default_filelist'] = [f1, f1, f1, f2] # total of 399 events - files['extra_files_with_valid_core_filename'] = [f4, f3] # start with smaller - - files['verbose_config_tree'] = d + "hltconf.xml" - files['quiet_config_tree'] = d + "hltconf_quiet.xml" - - return files - -def remove_duplicate_tests(suite): - uniqtests, uniqnames = [], [] - for test in suite: - if test._testMethodName not in uniqnames: - uniqnames.append(test._testMethodName) - uniqtests.append(test) - return uniqtests - -def remove_exclude_tests(suite, exclude_names): - ret = [] - for test in suite: - tnames = [test.__class__.__name__, test._testMethodName] - for name in exclude_names: - # if neither the whole name nor class or method names match - if (name != '.'.join(tnames) and name not in tnames): - ret.append(test) - return ret - -def test_setup(mod): - globs = {} - files = get_test_files() - globs['filelist'] = files['default_filelist'] - globs['datafiles'] = files['datafiles'] - globs['extra_datafiles'] = files['extra_files_with_valid_core_filename'] - globs['configxml'] = (files['verbose_config_tree'] if '-d' in sys.argv - else files['quiet_config_tree']) - # have stuff declared here available to the tests - mod.__dict__.update(globs) - -def test_main(include_names=[], - exclude_names=[], - remove_duplicates=True, - more_modules_requiring_setup=[]): - import unittest - - mod = sys.modules["__main__"] - test_setup(mod) - for m in more_modules_requiring_setup: - test_setup(sys.modules[m]) - - if include_names: - suite = unittest.TestLoader().loadTestsFromNames(include_names, mod) - else: - suite = unittest.TestLoader().loadTestsFromModule(mod) - - # flatten suite, then remove unintended tests - suite = unittest.TestSuite([test for subsuite in suite for test in subsuite]) - if exclude_names: - suite = unittest.TestSuite(remove_exclude_tests(suite, exclude_names)) - if remove_duplicates: - suite = unittest.TestSuite(remove_duplicate_tests(suite)) - - result = unittest.TextTestRunner(verbosity=2).run(suite) - # exit with 0(success)/1(failure) - # need an explicit int for now: see http://bugs.python.org/issue13854 - sys.exit(int(not result.wasSuccessful())) - -def script_prepare(): - from AthenaCommon.Logging import log - log.name = os.path.splitext(os.path.basename(sys.argv[0]))[0] - sys.path.insert(0, '.') - sys.ps1 = log.name + '> ' - -def script_main(go): - script_prepare() - - result = 0 - try: - go(sys.argv[1:]) # we don't need the program name - - except SystemExit, e: - if len(e.args) == 0 or e.args[0] == None: - result = 0 - elif isinstance(e.args[0], int): - result = e.args[0] - else: - result = 1 - - except: - import traceback - traceback.print_exc() - result = 1 - - sys.exit(result) - - -def call_external(module, func, args): - """Loads and executes an external function with the given arguments. - - This method will load function 'func', from module 'module' and will call it - with 'args' as its sequential arguments, returning the result. - - Keyword arguments: - - module -- This is either a simple or compound module name. For example: - "mymodule1" or "mymodule2.mysubmodule". - - func -- This is the name of the function inside the module named before, that - will be called. - - args -- This is a sequential list of arguments that will be (dereferenced - and) passed to the function 'func'. This must be a list or a tuple. If the - type of this argument is a dictionary, it is doubly-dereferenced to achieve a - named-argument style call. - - Returns and raises whatever 'func' does. - """ - import imp - mod = module.split('.') - pymod = None - pathname = None - for m in mod: - try: - if pathname: pathname = [pathname] - (f, pathname, description) = imp.find_module(m, pathname) - pymod = imp.load_module(m, f, pathname, description) - if f: f.close() - except ImportError, e: - name = '.'.join(mod[0:(mod.index(m)+1)]) - raise ImportError, 'Event modifier module "%s"' % name + \ - ' is not visible from your PYTHONPATH (please check): %s' % str(e) - - # at this point, 'pymod' points to the module you are looking for - pyfunc = getattr(pymod, func) # handle to the event manipulator - if type(args) in [list, tuple]: return pyfunc(*args) - elif type(args) is dict: return pyfunc(**args) - else: - raise SyntaxError, 'Parameter "args" should be a list, a tuple or a dict' diff --git a/HLT/HLTTestApps/python/HLTTestApps/application.py b/HLT/HLTTestApps/python/HLTTestApps/application.py deleted file mode 100644 index 3621cf6e8d1..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/application.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - - -import sys -import logging -from HLTTestApps.processor import Processor -from HLTTestApps.configuration import configuration, run_number_error -from HLTTestApps.option import file_opt_spec, emon_opt_spec - -def file_based(cli_args): - processor = None - - config = configuration(file_opt_spec, cli_args) - return_code=0 - - try: - logging.info('Instantiating and loading framework...') - - processor = Processor(config) - processor.go() - except run_number_error, error: - logging.fatal(error) - logging.info('I will try to shutdown cleanly') - return_code=1 - except BaseException, e: - logging.fatal('Caught an untreated exception - %s: %s' % - (e.__class__.__name__, e)) - import traceback - traceback.print_exc() - logging.info('I will try to shutdown cleanly') - return_code=1 - finally: - if processor: - del processor - logging.info('Exiting... Bye.') - sys.exit(return_code) - - diff --git a/HLT/HLTTestApps/python/HLTTestApps/configuration.py b/HLT/HLTTestApps/python/HLTTestApps/configuration.py deleted file mode 100644 index 647bbd7f082..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/configuration.py +++ /dev/null @@ -1,1295 +0,0 @@ -# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration - -''' -Created on Jun 14, 2013 - -@author: ricab -''' - - -from pausable_istream import pausable_istream -from HLTTestApps import ptree, ers_debug_level, get_ers_debug_level -from HLTTestApps import tdaq_time_str_from_microsec -from HLTTestApps import set_ros2rob_map as set_dc_ros2rob, set_l1r_robs, set_dcm_strategy -from eformat import EventStorage as ES -from TrigConfStorage.TriggerCoolUtil import TriggerCoolUtil as CoolUtil -from CoolConvUtilities import AtlCoolLib -from PyCool import cool -from contextlib import contextmanager -from ast import literal_eval -from os import path, sep -from re import match -import logging -import option - -class run_number_error(RuntimeError): pass -class run_params_error(RuntimeError): pass - - -# Ptree constants -base_conf_ptree_path = ("Configuration.Partition.TriggerConfiguration." - "TriggerConfiguration") -base_hlt_ptree_path = base_conf_ptree_path + ".hlt" -trigdb_con_ptree_path = base_conf_ptree_path + (".TriggerDBConnection" - ".TriggerDBConnection") -lvl1_config_ptree_path = base_conf_ptree_path + (".L1TriggerConfiguration" - ".L1TriggerConfiguration") -joboptions_ptree_extension = "HLTImplementationJobOptions" -dbpy_ptree_extension = "HLTImplementationDBPython" -common_ptree_extension = "HLTCommonParameters.HLTCommonParameters" -athenaHLT_ptree_path = (base_conf_ptree_path + - ".athenaHLTSpecificConfiguration") -mon_config_rule_path = ("HLTMonInfoImpl.ConfigurationRules." - "ConfigurationRuleBundle.Rules." - "ConfigurationRule") -monparams_extension = "Parameters.OHPublishingParameters" -oh_params_path = mon_config_rule_path + "." + monparams_extension -muoncalbuf_path = ("Configuration.HLTMPPUApplication." - "MuonCalibrationConfig.CircBuffer") -ros2rob_path = "Configuration.ROS2ROBS" -appName = 'athenaHLT' - -# prepareWorker ptree keys agreed with Sami in ATR-9669 -prepw_pt = ptree() -prepw_pt['appName'] = appName -prepw_pt['workerId'] = '0' -prepw_pt['numberOfWorkers'] = '1' - -# DB constants -prescales_db_strs = ('COMP', 'CONDBR2') -runparams_db_strs = ('COOLONL_TDAQ/COMP200', 'COOLONL_TDAQ/CONDBR2') -runparams_paths = ('/TDAQ/RunCtrl/SOR_Params', '/TDAQ/RunCtrl/SOR') -dblim_rnum = 236108 - - -class configuration(dict): - - def __init__(self, option_spec, cli_args): - self.dbconn = None - self.defaults = {k: option_spec.get_default(k) for k in option_spec} - self.default_convention = option_spec['save-output-conventional']['allowed'] - self.parse_sor = option_spec['sor-time']['parse'] - - if not cli_args or not cli_args[0]: - cli_args = ['-h'] # if no joboptions, print help msg - parser = option.gen_parser(option_spec, True) - kwargs, self.extra = parser.parse(cli_args) - - self.update(kwargs) - self.update(option_spec.constants) - self.__set_verbosity() - option_spec.optcheck(self, self.extra) - self.__digest_config() - self.__log() - - def __getattr__(self, attr): - if attr.startswith('get_') and attr.endswith("_ptree"): - return lambda: ptree() - raise AttributeError, ("%s instance has no attribute '%s'" - % (type(self), attr)) - - def do_save_output(self): - return self['save-output'] or self['save-output-conventional'] - - def parsed_out_data_filename(self): - if self['save-output']: - return self.__parse_filename() - else: # do conventional output - # get the conventional properties - convention = {k: self._derive_conventional_property(k) - for k in self.default_convention} - # find our returns - dir = convention.pop('dir') # popped - this is for our own use only - # the rest go here - would like to use kwargs, but not supported in ES - fncore = ES.RawFileName(convention['ProjectTag'], - convention['RunNumber'], - convention['StreamType'], - convention['StreamName'], - convention['LumiBlockNumber'], - appName, - convention['ProductionStep']).fileNameCore() - return dir, fncore - - def get_config_ptree(self): - pt = ptree() - self.__add_config_ptree(pt) - logging.debug('Configure ptree:\n%s' % pt) - return pt - - def get_prepare_ptree(self): - # we update the run-number again because the user could have provided a 0 - # run-number in interactive mode on purpose, to force usage of the - # run-number from the event stream. - self.__update_run_number() - rparams = self.__get_run_params() - - # In case there are no run params use some sensible defaults - innerpt, pt = ptree(), ptree() - innerpt['timeSOR'] = self.__get_sor(rparams) - innerpt['det_mask'] = self.__get_dmask(rparams) - innerpt['run_number'] = str(self['run-number']) - innerpt['run_type'] = str(rparams['RunType']) if rparams else 'Physics' - innerpt['recording_enabled'] = str(rparams['RecordingEnabled']).lower() if rparams else 'true' - pt.add_child('RunParams', innerpt) - logging.debug('Prepare ptree:\n%s' % pt) - return pt - - def get_prepareWorker_ptree(self): - return prepw_pt - - def get_mon_config_ptree(self): - pt = ptree() - if self['oh-monitoring']: - paramspt, rulept = ptree(), ptree() - paramspt['NumberOfSlots'] = str(self['oh_numslots']) - paramspt['PublishInterval'] = str(self['histogram-publishing-interval']) - paramspt['OHServer'] = self['ohserver'] - paramspt['ROOTProvider'] = self['rootprovider'] - rulept.add_child(monparams_extension, paramspt) - rulept['IncludeFilter'] = self['histogram-include'] - rulept['ExcludeFilter'] = self['histogram-exclude'] - rulept['UID'] = 'GlobalOHRule' - rulept['Name'] = 'GlobalOHRule' - pt.add_child(mon_config_rule_path, rulept) - logging.debug('OH configure ptree:\n%s' % pt) - return pt - - def get_mon_prepareWorker_ptree(self): - pt = ptree() - if self['oh-monitoring']: - pt['appName'] = appName - logging.debug('OH prepareWorker ptree:\n%s' % pt) - return pt - - def _derive_conventional_property(self, k): - try: - return self['save-output-conventional'][k] # try planA - except KeyError: - # fall back to planB - d, core = self.__parse_filename(self.stream.current_filename()) - rf = ES.RawFileName(core) - if rf.hasValidCore(): - if k == 'ProjectTag': # special case for this one (attr name and return) - return path.basename(rf.project()) - attr = k[:1].lower() + k[1:] # lower the first letter of the key - if hasattr(rf, attr): - return getattr(rf, attr)() # call the corresponding function - # fall back to planC - return self.default_convention[k] - - def __parse_filename(self, fullname=None): - if not fullname: - fullname = self['save-output'] - dir, core = ((path.dirname(fullname), - path.basename(fullname)) if fullname.find(sep) != -1 - else ('.', fullname)) - if core.endswith('.data'): - core = core[:-5] - return dir, core - - def __set_verbosity(self): - option.warn_verbosity(self['verbosity']) - logging.getLogger().setLevel(self['verbosity']) - ers_debug_level(self['ers-debug-level']) - - def __digest_config(self): - self.__setup_input() - self.__setup_sor() - self.__setup_hlt_implementation() - self.__setup_monitoring() - self.__setup_leak_check() - self.__setup_commands() - self.__setup_event_mods() - self.__setup_ros_rob_details() - self.__setup_miscellaneous() - - def __log(self): - self.__log_number_events() - - def __log_number_events(self): - nevts, skip = self['number-of-events'], self['skip-events'] - tot = nevts + skip - avail = len(self.stream) - if nevts == 0: - logging.warning("0 events will be processed") - if skip: - logging.warning("Skipping events makes no sense in this context") - elif nevts > 0 and \ - len(self.stream) < tot: - logging.warning("Events will be recycled!") - logging.info("%d events available on input" % len(self.stream)) - logging.info("User requested %d skipped events and %d processed events" - % (skip, nevts)) - logging.info("A total of %d events have to be consumed" % tot) - if avail != 0: - n_file_iter = float(tot)/avail - else: - logging.warning("Input stream has no events!") - n_file_iter = 0. - self['number-of-events'] = 0 - logging.info("I'll run over the file(s) %.2f times" % (n_file_iter)) - if self['event-modifier']: - logging.info("(assuming no events are skipped due to pre-processing)") - - def __setup_input(self): - # we make the stream be part of the configuration, because some of it's - # contents may actually impact how things are configured (e.g. run-number) - self.stream = None - if 'file' in self: - self['file'] = [path.expandvars(path.expanduser(f)) for f in self['file']] - logging.info('Creating event stream from file list %s' % self['file']) - self.stream = pausable_istream(self['file']) - if self['skip-events'] >= self.stream.total_events: - raise option.BadOptionSet, ('Can only skip less events than those ' - 'provided as input') - # We can now update the run number from the input stream if necessary - self.__update_run_number() - self['precommand'].append('_run_number=%d' % self['run-number']) - - def __setup_sor(self): - self['sor-time'] = self.parse_sor(self['sor-time']) - - def __setup_hlt_implementation(self): - if (self['use-database']): - if self['joboptionsvc-type'] == self.defaults['joboptionsvc-type']: - self['joboptionsvc-type'] = 'TrigConf::HLTJobOptionsSvc' - self.__setup_db_defaults() - else: - self['joboptions'] = ' '.join(self.extra) - - def __setup_monitoring(self): - if self['perfmon']: - self['precommand'].insert(0, 'include("TrigCommon/PerfMon.py")') - if not self['oh-monitoring']: - self['precommand'].append('include("TrigServices/OfflineTHistSvc.py")') - - def __setup_leak_check(self): - doLeakCheck = False - memChkMode = '' - if self['leak-check-execute']: - doLeakCheck = [ 'execute' ] - memChkMode = 'leak-check' - if self['leak-check']: - memChkMode = 'leak-check' - arg = self['leak-check'].lower() - if arg=='all': doLeakCheck = [] - else: doLeakCheck = [arg] - if self['delete-check']: - memChkMode = 'delete-check' - arg = self['delete-check'].lower() - if arg=='all': doLeakCheck = [] - else: doLeakCheck = [arg] - - if doLeakCheck != False: - #early import is needed for proper offloading later - import Hephaestus.MemoryTracker as memtrack - if memChkMode == 'delete-check': - import Hephaestus.DeleteChecker - self['precommand'].insert(0, 'memChkMode="%s";doLeakCheck=%s;' - 'include("TrigCommon/LeakTracer.py")' - % (str(memChkMode).replace("'",'"'), - str(doLeakCheck).replace("'",'"'))) - - def __setup_commands(self): - self.__setup_pcommands('pre') - self.__setup_pcommands('post') - - def __setup_pcommands(self, p): - self["%scommand" % p] = [option.parse_commands(c) - for c in self["%scommand" % p]] - self["%scommand" % p] = filter(lambda c: not match(r'[\s;]*$', c), - self["%scommand" % p]) - - def __setup_event_mods(self): - def process_additional_plugins(p): - try: - com = m.__dict__['additional_plugin_%scommand' % p] - self['%scommand' % p].append(com) - logging.info('An additional plugin %scommand will be applied: "%s"' - % (p, com)) - except KeyError: - logging.debug('No additional plugin %scommand will be applied' % p) - - self.event_modifiers = [] - for mod in self['event-modifier']: - m = __import__(mod, globals(), locals(), ['*']) - - if "modify_general" in dir(m): - # m=m to capture m when the function is created (not when it is called) - # otherwise, when it was called, m would always be the last imported - # module - modify = lambda event, m=m: m.modify_general(configuration=self, - event=event) - else: - modify = m.modify - - self.event_modifiers.append(modify) - process_additional_plugins('pre') - process_additional_plugins('post') - - def __setup_ros_rob_details(self): - try: # try getting a literal (in case it's a dict) - self['ros2rob'] = literal_eval(self['ros2rob']) - except ValueError: # not a proper dict -> must be a module - self['ros2rob'] = __import__(self['ros2rob']).ros2rob - set_dcm_strategy([self['dcm-prefetch-strategy']]) - set_dc_ros2rob(self['ros2rob']) - set_l1r_robs(self['extra-l1r-robs']) - - def __setup_db_defaults(self): - db_defaults, dbextra_defaults = self.__get_db_defaults() - for k, v in db_defaults.items(): - if not self[k]: - self[k] = v if not callable(v) else v() - for k, v in dbextra_defaults.items(): - if not k in self['db-extra'] or not self['db-extra'][k]: - self['db-extra'][k] = v if not callable(v) else v() - - def __setup_miscellaneous(self): - if not self['interactive']: - # Set PyROOT to batch mode - from sys import argv - argv.insert(1, '-b') - - if not self['python-setup']: - extrastr = 'Db' if self['use-database'] else '' - self['python-setup'] = "TrigPSC/TrigPSCPython%sSetup.py" % (extrastr,) - - self['libraries'] = ['TrigPSC', 'TrigServices'] - - def __update_run_number(self): - # If we have ever got a custom run number, use it; otherwise, retrieve it - # from the event stream - if not self['run-number']: - logging.debug('Run number not provided (==0). It will be read from the ' - 'input stream') - self['run-number'] = self.stream.current_run_number() - # if no run number was ever given by the user (in the command line or during - # interactive mode) nor obtained from the event stream, we cannot run - if not self['run-number']: - raise run_number_error, ('No run number found. Cannot continue with ' - 'run number 0') - logging.info('Using run number %d' % self['run-number']) - - def __get_sor(self, rparams): - tsor = self['sor-time'] - if not tsor: - tsor = rparams['SORTime'] - return tdaq_time_str_from_microsec(int(tsor / 1e9), - int(tsor % 1e9 / 1e3)) - def __get_dmask(self, rparams): - if self['detector-mask']: - dmask = hex(self['detector-mask']) - elif rparams is not None: - dmask = (rparams['DetectorMask'] if self['run-number'] >= dblim_rnum - else hex(rparams['DetectorMask'])) - else: - dmask = hex(0xffffffffffffffff) - - dmask = dmask.lower().replace('0x', '').replace('l', '') - return '0' * (32 - len(dmask)) + dmask # (pad with 0s) - - def __get_db_defaults(self): - # Unnecessary db connections to COOL are avoided below by the usage of the - # method __get_cool_default_getter (see respective documentation). - # By delaying the connection, we ensure that the run number being used - # does not need to be present in COOL, as long as the user specified all - # required keys (so that we never need to get their defaults). If this - # wasn't the case and the user chose a run number that wasn't present in - # COOL, the current athenaHLT run would be aborted, even if the all required - # parameters were already defined - that is, even though no reason to - # connect to COOL ever existed. - db_defaults = {'db-type' : 'Coral', # dblookup - 'db-server' : 'TRIGGERDB', - 'db-smkey' : self.__get_cool_default_getter('smkey'), - 'db-hltpskey': self.__get_cool_default_getter('hltpskey')} - dbextra_defaults={'lvl1key' : self.__get_cool_default_getter('lvl1key'), - 'schema' : 'ignored (dblookup)', - 'user' : 'ignored (dblookup)', - 'password': 'ignored (dblookup)'} - return db_defaults, dbextra_defaults - - def __get_cool_default_getter(self, param): - """ - This method returns a callable that, when called, obtains a parameter from - cool for the run number of this configuration. The returned callable takes - no parameters of its own. - - The accepted parameters are 'smkey', 'hltpskey', 'lvl1key'. ValueError is - raised on any other parameter. - - Notice that no db connection is ever created until the callable returned by - this method is called. Notice also that one db connection is created at - most, no matter how many getters are called, nor how many times they are - called. - """ - def db(): - if not self.dbconn: - i = 1 if self['run-number'] >= dblim_rnum else 0 - self.dbconn = CoolUtil.GetConnection(prescales_db_strs[i]) - return self.dbconn - run = int(self['run-number']) - rlst = [[run,run]] - if param == 'smkey': - ret = lambda: str(CoolUtil.getHLTConfigKeys(db(), rlst)[run]['SMK']) - elif param == 'hltpskey': - def ret(): - hltpskeys = CoolUtil.getHLTPrescaleKeys(db(), rlst)[run]["HLTPSK2"] - return str([(int(b),int(a)) for a,b,c in hltpskeys]) - elif param == 'lvl1key': - ret = lambda: str(CoolUtil.getL1ConfigKeys(db(),rlst)[run]['LVL1PSK'][0][0]) - else: - raise ValueError("Invalid parameter '%s': wouldn't know how to get it " - "from COOL" % param) - - return ret - - def __get_run_params(self): - i = 1 if self['run-number'] >= dblim_rnum else 0 - #dbcon = AtlCoolLib.indirectOpen(runparams_db_strs[i], True, True, False) - dbcon = AtlCoolLib.readOpen(runparams_db_strs[i]) - folder = dbcon.getFolder(runparams_paths[i]) - - # need to keep sor variable while using payload (cannot do the following in - # one single line nor overwrite sor). Otherwise: 1) GC comes into play; - # 2) the object is deleted; 3) since it's a shared_ptr, the internal - # cool::IObject also gets deleted; 4) payload is not valid any longer - try: - sor = folder.findObject(self['run-number'] << 32, 0) - except Exception: - return None # This can happen for unknown run numbers - - payload = sor.payload() - return {k: payload[k] for k in payload} - - @contextmanager - def make_dbextra_rw_context(self): - self['db-extra-rw'] = self['db-extra'].copy() # shallow copy is enough - try: - yield - finally: - del self['db-extra-rw'] - - def __get_db_config_ptrees(self): - with self.make_dbextra_rw_context(): - ipt, atpt, dbpt, l1pt = (ptree(), ptree(), self.__get_trigdb_ptree(), - self.__get_lvl1conf_ptree()) - ipt['hltPrescaleKey'] = self['db-hltpskey'] - # by now, all the db-extra-rw parameters that are recognized and have a - # dedicated ptree slot should have been removed - others = 'additionalConnectionParameters.additionalConnectionParameter' - for k, v in self['db-extra-rw'].items(): - ipt.add(others, "%s=%s" % (k,v)) - - self.__add_precommands_ptree(ipt) - self.__add_postcommands_ptree(ipt) - self.__add_log_levels(atpt) - atpt['pythonSetupFile'] = self['python-setup'] - return ipt, atpt, dbpt, l1pt - - def __get_trigdb_ptree(self): - dbpt = ptree() - dbpt['Type'] = self['db-type'] - dbpt['Server'] = self['db-server'] - dbpt['SuperMasterKey'] = self['db-smkey'] - dbpt['User'] = self['db-extra-rw'].pop('user') - dbpt['Password'] = self['db-extra-rw'].pop('password') - dbpt['Name'] = self['db-extra-rw'].pop('schema') - dbpt['Alias'] = self['db-server'] if self['db-type'] == 'Coral' else '' - return dbpt - - def __get_lvl1conf_ptree(self): - l1pt = ptree() - l1pt['Lvl1PrescaleKey'] = str(self['db-extra-rw'].pop('lvl1key')) - return l1pt - - def __get_joboptions_config_ptree(self): - inner = ptree() - inner['jobOptionsPath'] = self['joboptions'] - inner['pythonSetupFile'] = self['python-setup'] - inner['showInclude'] = str(self['show-includes']) - inner['tracePattern'] = self['trace'] - inner['evtSel'] = 'NONE' - self.__add_log_levels(inner) - self.__add_precommands_ptree(inner) - self.__add_postcommands_ptree(inner) - return inner - - def __finish_config_ptree(self, pt): - pt["Configuration.HLTMPPUApplication.UID"] = "athenaHLT" - pt["Configuration.Partition.UID"] = "NONE" - - def __add_config_ptree(self, pt): - if self['use-database']: - ptree_extension = dbpy_ptree_extension - ipt, atpt, dbpt, l1pt = self.__get_db_config_ptrees() - pt.add_child(trigdb_con_ptree_path, dbpt) - pt.add_child(lvl1_config_ptree_path, l1pt) - pt.add_child(athenaHLT_ptree_path, atpt) - else: - ptree_extension = joboptions_ptree_extension - ipt = self.__get_joboptions_config_ptree() - self.__add_common_ptree(ipt) - self.__add_muoncal_ptree(pt) - self.__add_ros2rob_ptree(pt) - pt.add_child('.'.join([base_hlt_ptree_path, ptree_extension]), - ipt) - self.__finish_config_ptree(pt) - - def __add_libraries_ptree(self, pt): - inner = ptree() - for lib in self['libraries']: - inner.add('library', lib) - pt.add_child("libraries", inner) - - def __add_common_ptree(self, pt): - self.__add_libraries_ptree(pt) - - comm = ptree() - comm["messageSvcType"] = self['msgsvc-type'] - comm["jobOptionsSvcType"] = self['joboptionsvc-type'] - comm["dllName"] = self['appmgrdll'] - comm["factoryName"] = self['appmgrfactory'] - pt.add_child(common_ptree_extension, comm) - - def __add_muoncal_ptree(self, pt): - if self['muoncal-buffername'] or self['muoncal-buffersize']: - pt[muoncalbuf_path + ".CircName"] = self['muoncal-buffername'] - pt[muoncalbuf_path + ".CircSize"] = self['muoncal-buffersize'] - - def __add_ros2rob_ptree(self, pt): - r2rpt = ptree() - r2rdict = self['ros2rob'] - if r2rdict: - for ros, roblist in r2rdict.iteritems(): - rospt = ptree() - for rob in roblist: - rospt.add('ROBID', str(rob)) - r2rpt.add_child(ros, rospt) - pt.put_child(ros2rob_path, r2rpt) - - def __add_log_levels(self, pt): - for logl in self['log-level'].split(','): - pt.add('logLevels.logLevel', logl) - - def __add_precommands_ptree(self, pt): - self.__add_pcommands_ptree(pt, 'pre') - def __add_postcommands_ptree(self, pt): - self.__add_pcommands_ptree(pt, 'post') - def __add_pcommands_ptree(self, pt, p): - pcommands = ptree() - for prec in self['%scommand' % p]: - pcommands.add("%sCommand" % p, prec) - pt.add_child("%sCommands" % p, pcommands) - - -################################################################################ -# Tests # -################################################################################ - -import unittest -from datetime import datetime as dt -from HLTTestApps import random_sub_dict -from types import ModuleType -import sys - -# this is used in other modules -class dummy_configuration(dict): - __getattr__ = configuration.__getattr__.__func__ - -def get_virtual_module(modname): - mod = ModuleType(modname) - sys.modules[modname] = mod - return mod - -class configuration_tests(unittest.TestCase): - cli_base_args = [] - special_cli_args = [] - regular_config_params = {'number-of-events': '12345', - 'rewind': 'True', - 'run-number': '22', - 'verbosity': '3', - 'ers-debug-level': '1', - 'save-output': 'fakeoutfile', - 'timeout': '{"timeout": 123, ' - '"warn_fraction": 0.125}', - 'perfmon': '', - 'tcmalloc': '', - 'use-compression': '4', - 'max-result-size': '500', - 'debug': '', - 'stdcmalloc': ''} - - def test_defaults(self): - c = configuration(self.opt_spec, - self._gen_complete_args()) - self.assertEquals(set(self.opt_spec.keys()), set(c.defaults.keys()), - "There are missing or unexpected parameters in the " - "defaults") - for k in c.defaults: - expect = self.opt_spec.get_default(k) - actual = c.defaults[k] - self.assertEquals(actual, expect, "Wrong default for '%s'; expected '%s';" - " got '%s'" % (k, expect, actual)) - def test_regular_config_params(self): - self._test_regular_config_params(self.regular_config_params) - def test_ptree_dllName(self): - dllname = "fake_dll_name" - path = self.hltcomm + ".dllName" - pt = self._gen_complete_config_ptree(["--appmgrdll", dllname]) - self._test_ptree_value(pt, path, dllname) - def test_ptree_factoryName(self): - factname = "fake_factory_name" - path = self.hltcomm + ".factoryName" - pt = self._gen_complete_config_ptree(["--appmgrfactory", factname]) - self._test_ptree_value(pt, path, factname) - def test_ptree_joboptions_svc(self): - josvc = 'fakejosvc' - path = self.hltcomm + ".jobOptionsSvcType" - pt = self._gen_complete_config_ptree(["--joboptionsvc-type", josvc]) - self._test_ptree_value(pt, path, josvc) - def test_ptree_message_svc(self): - msgsvc = 'fakemsgsvc' - path = self.hltcomm + '.messageSvcType' - pt = self._gen_complete_config_ptree(["--msgsvc-type", msgsvc]) - self._test_ptree_value(pt, path, msgsvc) - def test_ptree_muoncal(self): - bufname, bufsize = "foobar", '5' - pt = self._gen_complete_config_ptree(['--muoncal-buffername', bufname, - '--muoncal-buffersize', bufsize]) - self._test_ptree_value(pt, muoncalbuf_path + ".CircName", bufname) - self._test_ptree_value(pt, muoncalbuf_path + ".CircSize", bufsize) - def test_ptree_ros2rob_map(self): - r2r = {'ROS1': [1, 2, 3], - 'ROS2': [4, 5, 6], - 'ROS3': [7, 8, 9]} - pt = self._gen_complete_config_ptree(['--ros2rob', repr(r2r)]) - def r2r_pred(r2rpt): - #import pdb; pdb.set_trace() - # are all keys the same? - outters = sorted(r2rpt.keys()) == sorted(r2r.keys()) - # given a ros, get the list of rob ids, as ints, from the ptree - getrobs = lambda ros: [int(x) for x in r2rpt.get_child(ros).values_data()] - # for each inner ptree (each ROS), is it the same as in the original list? - inners = [sorted(getrobs(ros)) == sorted(r2r[ros]) for ros in r2r] - # did we get True everywhere? - return outters and all(inners) - # now check the ros2rob ptree - self._test_ptree_pred(pt, ros2rob_path, r2r_pred) - def test_verbosity(self): - level = 'logging.DEBUG' - c = configuration(self.opt_spec, - self._gen_complete_args(['--verbosity', level])) - target = eval(level) - actual = logging.getLogger().getEffectiveLevel() - self.assertEquals(actual, target, "Logging level not correct. Expected %s " - "but got %s" % (target, actual)) - def test_ers_debug_level(self): - level = '0' - c = configuration(self.opt_spec, - self._gen_complete_args(['--ers-debug-level', level])) - actual = str(get_ers_debug_level()) - self.assertEquals(level, actual, "ERS debug level not correct. Expected %s " - "but got %s" % (level, actual)) - def test_pyroot_batch(self): - from sys import argv - cli_args = self._gen_complete_args() # not interactive - c = configuration(self.opt_spec, cli_args) - self.assert_(len(argv) >= 2 and argv[1] == '-b', - "Not ready for PyROOT batch mode") - - def test_event_modifier(self): - mod = get_virtual_module("fakeModifier") - mod.modify = lambda x: x+1 - mod.additional_plugin_precommand = "'prec'" - mod.additional_plugin_postcommand = "'postc'" - - c = configuration(self.opt_spec, - self._gen_complete_args(["--event-modifier", - "['%s']" % mod.__name__])) - - n = len(c.event_modifiers) - self.assertEquals(n, 1, "Expected 1 event modifier; got %d" % n) - modified_1 = c.event_modifiers[0](1) - self.assertEquals(modified_1, 2, "Expected to get 2 as a modified 1; " - "got %s" % modified_1) - - def ensurepcommand(p): - n = len(c['%scommand' % p]) - self.assertEquals(n, 1, "Expected 1 %scommand; got %d" % (p, n)) - pc = eval(c['%scommand' % p][0]) - expect = '%sc' % p - self.assertEquals(pc, expect, - "Expected the %scommand %s; got %s" % (p, expect, pc)) - - c['precommand'] = [x for x in c['precommand'] if 'OfflineTHist' not in x - and '_run_number' not in x] - ensurepcommand('pre') - ensurepcommand('post') - - def test_event_modifier_general(self): - mod = get_virtual_module("fakeModifierGeneral") - mod.modify = lambda x: self.assert_(False, - ("%s.modify called, this should " - "not have happened") % mod.__name__) - mod.modify_general = lambda **kwargs: 10 * kwargs['event'] - - c = configuration(self.opt_spec, - self._gen_complete_args(["--event-modifier", - "['%s']" % mod.__name__])) - - modified_1 = c.event_modifiers[0](1) - - self.assertEquals(modified_1, 10, "Expected to get 10 as a modified 1; " - "got %s" % modified_1) - - def test_run_params(self): - pt = self._gen_complete_prepare_ptree(['--run-number', '177531']) - expect = {'timeSOR': '13/3/11 17:15:16', - 'run_number': '177531', - 'det_mask': '00000000000000000001fffffffffff7', - 'recording_enabled': 'true', - 'run_type': 'Physics'} - for k, v in expect.items(): - self._test_ptree_value(pt, 'RunParams.%s' % k, v) - def test_run_params_run2(self): - pt = self._gen_complete_prepare_ptree(['--run-number', '238742']) - expect = {'timeSOR': '8/9/14 21:54:10', - 'run_number': '238742', - 'det_mask': '000000000000000000003f8000ffff00', - 'recording_enabled': 'true', - 'run_type': 'Physics'} - for k, v in expect.items(): - self._test_ptree_value(pt, 'RunParams.%s' % k, v) - def test_explicit_detector_mask(self): - pt = self._gen_complete_prepare_ptree(['--detector-mask', 123]) - expect = '0000000000000000000000000000007b' - self._test_ptree_value(pt, 'RunParams.det_mask', expect) - def test_default_detector_mask(self): - pt = self._gen_complete_prepare_ptree(['--run-number', '177531', - '--detector-mask', '0L']) - expect = '00000000000000000001fffffffffff7' - self._test_ptree_value(pt, 'RunParams.det_mask', expect) - def test_explicit_time_human_readable(self): - trepr = '10/12/13 20:07:13' - pt = self._gen_complete_prepare_ptree(['--sor-time', trepr + '.0']) - self._test_ptree_value(pt, 'RunParams.timeSOR', trepr) - def test_explicit_time_nanos(self): - nanos = 1386702433971151000 - pt = self._gen_complete_prepare_ptree(['--sor-time', nanos]) - self._test_ptree_value(pt, 'RunParams.timeSOR', '10/12/13 20:07:13.971151') - def test_explicit_time_now(self): - pt = self._gen_complete_prepare_ptree(['--sor-time', 'now']) - def less_than_5s_ago(val): - from optspec import common - tdelta = dt.now() - dt.strptime(val, common['sor-time']['format']) - return tdelta.total_seconds() < 5 - self._test_ptree_val_pred(pt, 'RunParams.timeSOR', less_than_5s_ago) - def test_default_time(self): - pt = self._gen_complete_prepare_ptree(['--sor-time', 0]) - self._test_ptree_value(pt, 'RunParams.timeSOR', '13/3/11 17:15:16') - def test_mon_offline_config_ptree_empty(self): - pt = self._gen_complete_mon_config_ptree() - self.assertEquals(pt.keys(), [], "offline mon config ptree not empty") - def test_mon_online_config_ptree_paths(self): - pt = self._gen_complete_mon_config_ptree(['--oh-monitoring']) - self._test_ptree_path(pt, mon_config_rule_path + ".UID") - self._test_ptree_path(pt, mon_config_rule_path + ".Name") - self._test_ptree_path(pt, oh_params_path + ".OHServer") - self._test_ptree_path(pt, oh_params_path + ".ROOTProvider") - self._test_ptree_path(pt, oh_params_path + ".PublishInterval") - self._test_ptree_path(pt, oh_params_path + ".NumberOfSlots") - def test_mon_online_config_ptree_include_filter(self): - val = 'abc' - pt = self._gen_complete_mon_config_ptree(['--oh-monitoring', - '--histogram-include', val]) - self._test_ptree_value(pt, mon_config_rule_path + ".IncludeFilter", val) - def test_mon_online_config_ptree_exclude_filter(self): - val = 'abc' - pt = self._gen_complete_mon_config_ptree(['--oh-monitoring', - '--histogram-exclude', val]) - self._test_ptree_value(pt, mon_config_rule_path + ".ExcludeFilter", val) - def test_mon_online_config_ptree_publish_interval(self): - val = '10' - pt = self._gen_complete_mon_config_ptree(['--oh-monitoring', - '--histogram-publishing-interval', - val]) - self._test_ptree_value(pt, oh_params_path + ".PublishInterval", val) - def test_mon_offline_run_ptree_empty(self): - pt = self._gen_complete_mon_run_ptree() - self.assertEquals(pt.keys(), [], "offline mon prepare ptree not empty") - def test_mon_online_run_ptree_appname(self): - pt = self._gen_complete_mon_run_ptree(['--oh-monitoring']) - self._test_ptree_value(pt, 'appName', 'athenaHLT') - def _get_hlt_conf_path(self): - return '.'.join([base_hlt_ptree_path, self.ptree_extension]) - def _gen_config_ptree(self, cli_args): - c = configuration(self.opt_spec, cli_args) - pt = c.get_config_ptree() - self._test_config_ptree_basic(pt) - return pt - def _gen_prepare_ptree(self, cli_args): - c = configuration(self.opt_spec, cli_args) - pt = c.get_prepare_ptree() - self.assertEquals(pt.keys(), ['RunParams']) - return pt - def _gen_mon_config_ptree(self, cli_args): - c = configuration(self.opt_spec, cli_args) - return c.get_mon_config_ptree() - def _gen_mon_run_ptree(self, cli_args): - c = configuration(self.opt_spec, cli_args) - return c.get_mon_prepareWorker_ptree() - def _gen_complete_config_ptree(self, additional_opts=[], additional_args=[]): - return self._gen_config_ptree(self._gen_complete_args(additional_opts, - additional_args)) - def _gen_complete_prepare_ptree(self, additional_opts=[], additional_args=[]): - return self._gen_prepare_ptree(self._gen_complete_args(additional_opts, - additional_args)) - def _gen_complete_mon_config_ptree(self, additional_opts=[], - additional_args=[]): - return self._gen_mon_config_ptree(self._gen_complete_args(additional_opts, - additional_args)) - def _gen_complete_mon_run_ptree(self, additional_opts=[], - additional_args=[]): - return self._gen_mon_run_ptree(self._gen_complete_args(additional_opts, - additional_args)) - def _test_regular_config_params(self, params): - d = params - additional_args = sum([["--%s" % k, v] for k, v, in d.items()], []) - c = configuration(self.opt_spec, - self._gen_complete_args(additional_args)) - for k in d: - # regular strings need the 1st part of the or, flags need the 2nd part - # and literals with more than one valid string representation need the - # 3rd part of the or - self.assert_(str(c[k]) == d[k] or c[k] == True or c[k] == eval(d[k]), - "Option '%s' was not correctly taken into account. " - "Expected '%s' but got '%s'" % (k, d[k], c[k])) - def _test_ptree_path(self, pt, path): - self.assert_(path in pt, "No node '%s' found in the configuration ptree" - % path) - def _test_ptree_pred(self, pt, path, test): - self._test_ptree_path(pt, path) - child = pt.get_child(path) - msg = ("The sub tree with path '%s' in the configuration ptree, does " - "not pass the required condition:\n%s" % (path, test)) - if test.__doc__: - msg += ".__doc__: %s" % test.__doc__ - self.assert_(test(child), msg) - def _test_ptree_val_pred(self, pt, path, test): - self._test_ptree_path(pt, path) - val = pt[path] - msg = ("The value of the node '%s' in the configuration ptree ('%s') does " - "not pass the required condition:\n%s" % (path, val, test)) - if test.__doc__: - msg += ".__doc__: %s" % test.__doc__ - self.assert_(test(val), msg) - def _test_ptree_value(self, pt, path, value): - pred = lambda v: v == value - pred.func_name = "equals_%s" % value - pred.__doc__ = "checks whether a certain value equals %s" % value - self._test_ptree_val_pred(pt, path, pred) - def _test_ptree_default_value(self, pt, path, arg): - expect = self.opt_spec.get_default(arg) - self._test_ptree_value(pt, path, expect) - def _test_config_ptree_basic(self, pt): - self.assertEquals(pt.keys(), ['Configuration']) - self._test_ptree_path(pt, self.hltconf) - self._test_ptree_path(pt, self.hltcomm) - def _test_ptree_libraries(self, pt): - lib_path = self.hltconf + ".libraries" - self._test_ptree_path(pt, lib_path) - libs = pt.get_child(lib_path) - for k in libs: - self.assertEquals(k, "library", - "Node '%s' in '%s' is not a library" % (k, lib_path)) - expect = set(['TrigPSC', 'TrigServices']) - actual = set([x.data() for x in libs.values()]) - self.assertEquals(actual, expect, - "Unexpected or missing libraries. Expected '%s'; got '%s'" - % (expect, actual)) - def _test_ptree_common(self, pt): - self._test_ptree_libraries(pt) - self._test_ptree_default_value(pt, self.hltcomm + ".messageSvcType", - 'msgsvc-type') - self._test_ptree_default_value(pt, self.hltcomm + ".dllName", - 'appmgrdll') - self._test_ptree_default_value(pt, self.hltcomm + ".factoryName", - 'appmgrfactory') - - def _gen_complete_args(self, additional_opts=[], additional_args=[]): - return (self.cli_base_args + - additional_opts + - self.special_cli_args + - additional_args) - - -class file_based_configuration_tests(configuration_tests): - def setUp(self): - super(file_based_configuration_tests, self).setUp() - self.opt_spec = option.file_opt_spec - self.cli_base_args = ["-f", datafiles[0]] - self.hltconf = self._get_hlt_conf_path() - self.hltcomm = '.'.join([self.hltconf, common_ptree_extension]) - def test_emon_not_allowed(self): - self.assertRaises(option.CurrentlyNotSupported, configuration, - option.emon_opt_spec, ['fake_arg']) - def test_file(self): - from os import environ, path - tf = datafiles[0] - environ['TESTVAR'] = path.dirname(tf) - cli_args = ['--file', '$TESTVAR/%s' % path.basename(tf)] - cli_args += self.special_cli_args - c = configuration(self.opt_spec, cli_args) - self.assertEquals(c['file'], [tf]) - def test_skip_too_many_events(self): - self.assertRaises(option.BadOptionSet, configuration, - option.file_opt_spec, - self._gen_complete_args(['--skip-events', '10e20'])) - -class save_output_configuration_tests(file_based_configuration_tests): - # we need these to make things work - special_cli_args = ['fake_joboptions_needed_for_successful_config'] - ptree_extension = 'needed_but_irrelevant_since_no_ptree_tests' - - # To be used by the configuration, so that we don't need a valid file - class MockPausableIstream(pausable_istream): - # we also need a data reader for invalid file - class MockDataReader(object): - # we only care about the filename - def __init__(self, fname): - self.fname = fname - # our mock istream will need these in inherited current_* methods - def fileName(self): - return self.fname - def runNumber(self): - return 1234567890 - def __init__(self, filelist): - # the data reader is the only thing we do need - self.dr = self.MockDataReader(filelist[0]) - # the rest is just so that our mock works with the configuration - self.total_events = 1000 - - def setUp(self): - super(save_output_configuration_tests, self).setUp() - self.convd1 = {'ProjectTag': 'ptag', - 'LumiBlockNumber': 333, - 'StreamName': 'sname', - 'StreamType': 'stype', - 'RunNumber': 999999999, - 'ProductionStep': 'pstep', - 'dir': '/tmp'} - self.convd2 = {'ProjectTag': 'testcase', - 'LumiBlockNumber': 1, - 'StreamName': 'FakeStream', - 'StreamType': 'debug', - 'RunNumber': 123, - 'ProductionStep': 'imagine', - 'dir': '/fakedir'} - self._setup_cli_args() - # we replace the global pausable_istream with our mock - self._replace_pausable_istream() - def tearDown(self): - # restore the global pausable_istream for other tests - super(save_output_configuration_tests, self).tearDown() - self._restore_pausable_istream() - - def test_save_output_plain(self): - intended_dir = '/a/b/c' - intended_fncore = 'd' - outfile = '%s/%s' % (intended_dir, intended_fncore) - cli_args = self._gen_complete_args(['--save-output', outfile]) - c = configuration(self.opt_spec, cli_args) - actual_dir, actual_fncore = c.parsed_out_data_filename() - self.assertEquals(actual_dir, intended_dir, - 'Wrong output directory: "%s". Expected "%s"' - % (actual_dir, intended_dir)) - self.assertEquals(actual_fncore, intended_fncore, - 'Wrong output filename core: "%s". Expected "%s"' - % (actual_fncore, intended_fncore)) - def test_save_output_conventional_all(self): - # build expected stuff - expect_dir = self.convd1['dir'] - # should generate "ptag.999999999.stype_sname.pstep.RAW._lb0333._athenaHLT" - expect_fncore = self._gen_filename_core(self.convd1) - # ask the configuration what it produces - cli_args = self._gen_complete_args(['--save-output-conventional', - str(self.convd1)]) - c = configuration(self.opt_spec, cli_args) - actual_dir, actual_fncore = c.parsed_out_data_filename() - # compare results with expected - self.assertEquals(actual_dir, expect_dir, - 'Wrong output directory: "%s". Expected "%s".' - % (actual_dir, expect_dir)) - self.assertEquals(actual_fncore, expect_fncore, - 'Wrong output filename core: "%s". Expected "%s"' - % (actual_fncore, expect_fncore)) - def test_save_output_conventional_some(self, default=None): - # input and default dicts - subconvd = random_sub_dict(self.convd1) - if not default: - default = self.convd2 - # the directory should be taken from the default and not the input file - default['dir']=self.opt_spec['save-output-conventional']['allowed']['dir'] - # take from default all the values not provided in the option - expectd = default.copy() - expectd.update(subconvd) - # generate expected dict taking defaults from input filename - - # the expected filename and directory derive from this - expect_fncore = self._gen_filename_core(expectd) - expect_dir = expectd['dir'] - # ask the configuration what it produces - cli_args = self._gen_complete_args(['--save-output-conventional', - str(subconvd)]) - c = configuration(self.opt_spec, cli_args) - actual_dir, actual_fncore = c.parsed_out_data_filename() - # compare results with expected - self.assertEquals(actual_dir, expect_dir, - 'Wrong output directory: "%s". Expected "%s".' - % (actual_dir, expect_dir)) - self.assertEquals(actual_fncore, expect_fncore, - 'Wrong output filename core: "%s". Expected "%s"' - % (actual_fncore, expect_fncore)) - def test_save_output_conventional_some_bad_input(self): - # when the input filename has a invalid core - self._setup_cli_args(bad_input=True) - default = self.opt_spec['save-output-conventional']['allowed'] - self.test_save_output_conventional_some(default) - def _replace_pausable_istream(self): - global pausable_istream - pausable_istream, self.real_pausable_istream = (self.MockPausableIstream, - pausable_istream) - def _restore_pausable_istream(self): - global pausable_istream - pausable_istream = self.real_pausable_istream - def _setup_cli_args(self, bad_input=False): - # fake file, with good or bad core name - fncore = 'foobar' if bad_input else self._gen_filename_core(self.convd2) - self.cli_base_args = ["-f", "%s/%s" % (self.convd2['dir'], fncore)] - def _gen_filename_core(self, conventional_dict): - return ('%s.%08d.%s_%s.%s.RAW._lb%04d._%s' - % (conventional_dict['ProjectTag'], - conventional_dict['RunNumber'], - conventional_dict['StreamType'], - conventional_dict['StreamName'], - conventional_dict['ProductionStep'], - conventional_dict['LumiBlockNumber'], - appName)) - -class emon_based_configuration_tests(configuration_tests): - def setUp(self): - super(emon_based_configuration_tests, self).setUp() - pass # TODO - -class pcommands_tests: - def __init__(self): - raise NotImplementedError, ("This class is meant as a simple ABC and " + - "should not be used directly") - def test_ptree_perfmon(self): - pt = self._gen_complete_config_ptree(['--perfmon']) - self._test_in_precommands(pt, 'perfmon') - def test_ptree_offline_histogramming(self): - pt = self._gen_complete_config_ptree() # no online monitoring - self._test_in_precommands(pt, 'include("TrigServices/OfflineTHistSvc.py")') - def test_ptree_online_histogramming(self): - pt = self._gen_complete_config_ptree(['--oh-monitoring']) - cmd = 'include("TrigServices/OfflineTHistSvc.py")' - self._test_not_in_precommands(pt, cmd) - def test_ptree_leak_check_execute(self): - pt = self._gen_complete_config_ptree(["--leak-check-execute"]) - self._test_in_precommands(pt, 'doLeakCheck') - def test_ptree_leak_check_all(self): - pt = self._gen_complete_config_ptree(["--leak-check", "all"]) - self._test_in_precommands(pt, 'doLeakCheck') - def test_ptree_leak_check_initialize(self): - pt = self._gen_complete_config_ptree(["--leak-check", "initialize"]) - self._test_in_precommands(pt, 'doLeakCheck') - def test_ptree_delete_check_execute(self): - pt = self._gen_complete_config_ptree(["--delete-check", "execute"]) - self._test_in_precommands(pt, 'doLeakCheck') - self._test_in_precommands(pt, 'delete') - def test_ptree_precommands(self): - self._test_ptree_pcommands('pre') - def test_ptree_postcommands(self): - self._test_ptree_pcommands('post') - def _test_ptree_pcommands(self, p): - coms = ["command1", "command2", ";", ";;", "; ;", ";;;", ';;command3', - ';command4;', 'command5;'] - target = ["command%d" % (i+1) for i in range(5)] - - pt = self._gen_complete_config_ptree(["--%scommand=%s" % (p, str(coms))]) - actual = pt.get_child(self.hltconf + '.%sCommands' % p).values_data() - actual = filter(lambda c: 'include' not in c and '_run_number' not in c, - actual) - - self.assertEquals(actual, target, "%scommands in config ptree don't match " - "expected. Expected: %s; Got: %s" % (p, target, actual)) - def _test_in_precommands(self, pt, substr): - self._test_in_precommands_aux(pt, substr, False) - def _test_not_in_precommands(self, pt, substr): - self._test_in_precommands_aux(pt, substr, True) - def _test_in_precommands_aux(self, pt, substr, negate=False): - precommands = pt.get_child(self.hltconf + '.preCommands') - precommands = [prec.data() for prec in precommands.values()] - precommands = ';'.join(precommands) - assertion = substr in precommands or substr in precommands.lower() - msg = ("The string '%s' was %sfound in the precommands" % (substr, "%s")) - if negate: - self.assertFalse(assertion, msg % "") - else: - self.assert_(assertion, msg % "not ") - - -class jo_configuration_tests(file_based_configuration_tests, pcommands_tests): - joboptions = 'fakejo' - special_cli_args = [joboptions] - ptree_extension = joboptions_ptree_extension - - def test_simple_config_ptree(self): - pt = self._gen_complete_config_ptree() - self._test_ptree_value(pt, self.hltconf + ".jobOptionsPath", - self.joboptions) - self._test_ptree_value(pt, self.hltconf + '.pythonSetupFile', - "TrigPSC/TrigPSCPythonSetup.py") - self._test_ptree_value(pt, self.hltconf + '.evtSel', 'NONE') - self._test_ptree_default_value(pt, self.hltcomm + ".jobOptionsSvcType", - 'joboptionsvc-type') - - self._test_ptree_common(pt) - - def test_ptree_python_setup(self): - pysetup = 'PSCFakeBootstrap.py' - pt = self._gen_complete_config_ptree(['--python-setup', pysetup]) - self._test_ptree_value(pt, self.hltconf + '.pythonSetupFile', pysetup) - def test_ptree_loglevel(self): - loglev = "DEBUG,INFO,WARNING,ERROR" - pt = self._gen_complete_config_ptree(['--log-level', loglev]) - def logsright(lpt): - ll = loglev.split(',') - for l in lpt.values_data(): - if not l in ll: - return False - ll.remove(l) - return not ll #(whether list is empty) - self._test_ptree_pred(pt, self.hltconf + '.logLevels', logsright) - def test_ptree_trace(self): - pattern = '.*[aA]thena.*' - pt = self._gen_complete_config_ptree(['--trace', pattern]) - self._test_ptree_value(pt, self.hltconf + '.tracePattern', pattern) - - def test_ptree_flags(self): - flags = {'--show-includes': '.showInclude'} - pt_n = self._gen_complete_config_ptree() - pt_y = self._gen_complete_config_ptree(flags.keys()) - for k, v in flags.items(): - path = self.hltconf + v - self._test_ptree_value(pt_n, path, 'False') - self._test_ptree_value(pt_y, path, 'True') - -class dbpy_configuration_tests(file_based_configuration_tests, pcommands_tests): - special_cli_args = ['--use-database'] - ptree_extension = dbpy_ptree_extension - dbcon = trigdb_con_ptree_path - l1con = lvl1_config_ptree_path - athlt = athenaHLT_ptree_path - - regular_config_params = file_based_configuration_tests.regular_config_params \ - .copy() - regular_config_params.update({'db-smkey': '123', - 'db-hltpskey': '321', - 'db-extra': "{'lvl1key': 99, 'user':'_'," - " 'password':'_','schema':'_'}"}) - - - def test_simple_config_ptree(self): - pt = self._gen_complete_config_ptree() - def notempty(v): - "Check whether a certain value is nonempty" - return bool(v) - self._test_ptree_val_pred(pt, self.hltconf + ".hltPrescaleKey", - notempty) - self._test_ptree_value(pt, self.hltcomm + ".jobOptionsSvcType", - 'TrigConf::HLTJobOptionsSvc') - self._test_ptree_common(pt) - - def test_ptree_loglevel(self): - logl = "DEBUG" - pt = self._gen_complete_config_ptree(['--log-level', logl]) - self._test_ptree_value(pt, self.athlt + ".logLevels.logLevel", logl) - def test_ptree_dbhltpskey(self): - hltk = "[(1,2),(3,4)]" - pt = self._gen_complete_config_ptree(['--db-hltpskey', hltk]) - self._test_ptree_value(pt, self.hltconf + ".hltPrescaleKey", hltk) - def test_ptree_dblvl1key(self): - l1k = '9876' - ext = {'lvl1key': l1k} - pt = self._gen_complete_config_ptree(['--db-extra', ext]) - self._test_ptree_value(pt, self.l1con + ".Lvl1PrescaleKey", l1k) - - def test_ptree_dbtype(self): - type = "Oracle" - pt = self._gen_complete_config_ptree(['--db-type', type]) - self._test_ptree_value(pt, self.dbcon + ".Type", type) - def test_ptree_dbserver(self): - server = "mydbserver" - pt = self._gen_complete_config_ptree(['--db-server', server]) - self._test_ptree_value(pt, self.dbcon + ".Server", server) - def test_ptree_dbsmkey(self): - smk = "1234" - pt = self._gen_complete_config_ptree(['--db-smkey', smk]) - self._test_ptree_value(pt, self.dbcon + ".SuperMasterKey", smk) - def test_ptree_dbschema(self): - schema = 'ashnlagfkjba' - ext = {'schema': schema} - pt = self._gen_complete_config_ptree(['--db-extra', ext]) - self._test_ptree_value(pt, self.dbcon + ".Name", schema) - def test_ptree_dbuser(self): - user = 'posjdbngol' - ext = {'user': user} - pt = self._gen_complete_config_ptree(['--db-extra', ext]) - self._test_ptree_value(pt, self.dbcon + ".User", user) - def test_ptree_dbpasswd(self): - pwd = 'gnasdiogd' - ext = {'password': pwd} - pt = self._gen_complete_config_ptree(['--db-extra', ext]) - self._test_ptree_value(pt, self.dbcon + ".Password", pwd) - def test_ptree_other_extra(self): - special = {'user': 'asdfsdfin', 'password': 'fbgntuiw', 'schema': 'gsdfg', - 'lvl1key': '4411'} - nonspecial = {'foo': 'bar', 'maxretrials': '11', 'bar': 'foo', - 'retrialperiod': '22', 'foobar': 'barfoo'} - ext = special.copy() - ext.update(nonspecial) - pt = self._gen_complete_config_ptree(['--db-extra', ext]) - - pred1 = lambda acpt: False not in ["%s=%s" % (k, v) in acpt.values_data() - for k, v in nonspecial.items()] - pred1.func_name = "allNonSpecialInAdditional" - pred1.__doc__ = ("Check that the following items are in the " - "additionalConnectionParameters: " + - ', '.join(["%s" % k for k in nonspecial])) - - pred2 = lambda acpt: True not in [val.startswith("%s=") - for val in acpt.values_data()] - - pred2.func_name = "noSpecialInAdditional" - pred2.__doc__ = ("Check that none of the following items are in the " - "additionalConnectionParameters: " + - ', '.join(["%s" % k for k in special])) - - predall = lambda acpt: pred1(acpt) and pred2(acpt) - predall.func_name = "checkAdditionalConnectionParameters" - predall.__doc__ = "\nand\n".join([pred1.__doc__, pred2.__doc__]) - - self._test_ptree_pred(pt, - self.hltconf + ".additionalConnectionParameters", - predall) - - -if __name__ == '__main__': - from HLTTestApps import test_main - test_main(['jo_configuration_tests', - 'dbpy_configuration_tests', - 'save_output_configuration_tests']) - diff --git a/HLT/HLTTestApps/python/HLTTestApps/infrastructure.py b/HLT/HLTTestApps/python/HLTTestApps/infrastructure.py deleted file mode 100644 index 9e228f52861..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/infrastructure.py +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -''' -Created on Sep 30, 2013 - -@author: ricab -''' - -import os, re, shutil, logging -from AthenaCommon.AppMgr import ServiceMgr as svcMgr - -class infrastructure(object): - """ - Base infrastructure class. This class is intended as an abstract class and - exists mostly for documentation purposes, so that it is apparent which methods - are expected from an infrastructure like object. - """ - NAME = 'infrastructure' - def __init__(self, config): - logging.info("Initializing infrastructure") - self.config = config - def configure(self): - logging.info("Configuring infrastructure") - return True - def connect(self): - logging.info("Connecting infrastructure") - return True - def prepareForRun(self): - logging.info("Preparing infrastructure") - return True - def prepareWorker(self): - logging.info("Preparing worker infrastructure") - return True - def run(self): - logging.info("Running infrastructure") - return True - def stopRun(self): - logging.info("Stopping infrastructure") - return True - def finalizeWorker(self): - logging.info("Finalizing worker infrastructure") - return True - def disconnect(self): - logging.info("Disconnecting infrastructure") - return True - def unconfigure(self): - logging.info("Unconfiguring infrastructure") - return True - def __del__(self): - pass - -class offline_infrastructure(infrastructure): - NAME = 'offline infrastructure' - def __init__(self, config): - infrastructure.__init__(self, config) - -def build_infrastructure(config): - if config['oh-monitoring']: - from online_infrastructure import online_infrastructure - return online_infrastructure(config) - else: - logging.debug("Creating offline infrastructure") - return offline_infrastructure(config) - - -################################################################################ -#################################### Tests ##################################### -################################################################################ - -import unittest, signal -from HLTTestApps import ptree -from configuration import configuration, dummy_configuration -from option import file_opt_spec - -class infrastructure_transitions_test(unittest.TestCase): - class _dummy_infrastructure(infrastructure): - def __init__(self): - infrastructure.__init__(self, dummy_configuration()) - def setUp(self): - self.cli_args = ["-n", '10', "-f", filelist[0], - 'TrigExMTHelloWorld/MTHelloWorldOptions.py'] - def _testInfrastructureTransitions(self, infrastruct): - self.assertTrue(infrastruct.configure()) - self.assertTrue(infrastruct.connect()) - self.assertTrue(infrastruct.prepareForRun()) - self.assertTrue(infrastruct.prepareWorker()) - self.assertTrue(infrastruct.run()) - self.assertTrue(infrastruct.stopRun()) - self.assertTrue(infrastruct.disconnect()) - self.assertTrue(infrastruct.unconfigure()) - def test_infrastructure(self): - config = configuration(file_opt_spec, self.cli_args) - infras = build_infrastructure(config) - self._testInfrastructureTransitions(infras) - infras.__del__() - def test_simple(self): - self._testInfrastructureTransitions(self._dummy_infrastructure()) - -if __name__ == '__main__': - from HLTTestApps import test_main - test_main() - diff --git a/HLT/HLTTestApps/python/HLTTestApps/online_infrastructure.py b/HLT/HLTTestApps/python/HLTTestApps/online_infrastructure.py deleted file mode 100644 index b0f784b1df9..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/online_infrastructure.py +++ /dev/null @@ -1,536 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -''' -Created on Jun 10, 2014 - -@author: ricab -''' - -import os, shutil, time, logging, subprocess, signal -from HLTTestApps import IInfoRegister, ipc_init -from infrastructure import * - -EXTERNAL_INIT_TIME = 5 # seconds -EXTERNAL_TERM_TIME = 5 # seconds -SLEEP_RESOLUTION = 0.2 # seconds - -def initial_ipc_server(pgid): - """Starts and manages the IPC server for the current run.""" - if os.system('ipc_ls >& /dev/null') != 0: - # we start a fresh IPC server - proc_name = "initial_ipc_server" - logging.info("Starting a new IPC server for the initial partition...") - ret = subprocess.Popen(["ipc_server", "-i-"], - stderr=new_file("%s.err" % proc_name), - stdout=new_file("%s.out" % proc_name), - preexec_fn=lambda:os.setpgid(0,pgid)) - # give it time to initialize - wait_for_output(proc_name, EXTERNAL_INIT_TIME, SLEEP_RESOLUTION) - return ret - else: - logging.info("IPC server for 'initial' partition is already running!") - return 0 - -def ipc_server(part_name, pgid): - """Starts and manages the IPC server for the current run.""" - if os.system('ipc_ls -p %s >& /dev/null' % part_name) != 0: - # we start a fresh IPC server - proc_name="ipc_server" - logging.info("Starting a new IPC server for partition '%s'..." % part_name) - ret = subprocess.Popen(["ipc_server", "-i-", "-p%s" % part_name], - stderr=new_file("%s.err" % proc_name), - stdout=new_file("%s.out" % proc_name), - preexec_fn=lambda:os.setpgid(0,pgid)) - # give it time to initialize - wait_for_output(proc_name, EXTERNAL_INIT_TIME, SLEEP_RESOLUTION) - return ret - else: - logging.info("IPC server for '%s' is already running!" % part_name) - return 0 - -def is_server(part_name, server_name, pgid): - """Starts and manages the IS server for the current run.""" - if os.system('is_ls -p %s -n %s >& /dev/null'% (part_name, server_name)) != 0: - # we start a fresh IS server - proc_name="is_server" - logging.info("Starting a new Histogramming IS server '%s' for partition " - "'%s'" % (server_name, part_name)) - ret = subprocess.Popen(['is_server', '-p%s' % part_name, - '-n%s' % server_name], - stderr=new_file('%s.err' % proc_name), - stdout=new_file('%s.out' % proc_name), - preexec_fn=lambda:os.setpgid(0,pgid)) - # give it time to initialize - wait_for_output(proc_name, EXTERNAL_INIT_TIME, SLEEP_RESOLUTION) - return ret - else: - logging.info("IS server '%s' for '%s' is already running!" % \ - (server_name, part_name)) - return 0 - -def oh_display(pgid): - """Starts and manages the IPC server for the current run.""" - return subprocess.Popen(["oh_display"], stderr=new_file("oh_display.err"), - stdout=new_file("oh_display.out"), - preexec_fn=lambda:os.setpgid(0,pgid)) - -def terminate_process(proc): - proc.send_signal(signal.SIGHUP) - proc.wait() - -def oh_cp(partition, server, run_index): - """Uses 'oh_cp' to save histograms in a file.""" - logging.info('Saving histograms from server %s' % (server)) - s = os.system('oh_cp -p%s -s%s -H -1 -O -r %d' % (partition, server, run_index)) - if s != 0: logging.warn('Output status of oh_cp was %d' % s) - -def new_file(name): - """ - Create a new empty file with the provided name - """ - if os.path.exists(name): os.unlink(name) - return file(name, 'wt') - -def rm_file(name): - """ - Remove the file with the provided name - """ - os.remove(name) - -def wait_for_output(proc_name, timeout=None, sleep_resolution=1): - """ - Wait for a process to produce output, within a certain timeout. - - Checks, every <sleep_resolution> seconds, for output in the files - ./<proc_name>.out and ./<proc_name>.err, for a maximum of <timeout> seconds. - If any of these files is detected not to be empty, the wait is interrupted. - """ - count = 0 - logging.debug('Waiting for %s to initialize' % proc_name) - while not timeout or count < timeout: - if os.path.getsize("./%s.err" % proc_name): - logging.warning('There was a problem with the initialization of %s. ' - 'Trying to continue...' % proc_name) - return -1 - if os.path.getsize("./%s.out" % proc_name): - logging.debug('%s initialized correctly' % proc_name) - return 0 - time.sleep(sleep_resolution) - count += sleep_resolution - logging.warning('Could not confirm the initialization of %s after %.2fs. ' - 'Trying to continue...' % (proc_name, count)) - return 1 - -def finalize_THistSvc(): - # Hack to finalize and get rid of the THistSvc (actually TrigMonTHistSvc) - from AthenaCommon.AppMgr import ServiceMgr as svcMgr - from AthenaCommon.AppMgr import theApp - if theApp.state(): # if we still didn't finalize - logging.debug("Finalizing THistSvc") - svcMgr.THistSvc.getHandle().finalize() - theApp.getHandle()._svcmgr.removeService('THistSvc') - -class FinalizeNeedEnum: - """ - Enumeration to describe the finalization needs of an AutoFinIInfoRegister - """ - NONEED, NEED_FIN, NEED_FINWORKER = range(1, 4) - -class SubpEnum: - """ - Subprocess enumeration - """ - INITIAL_IPC, IPC, IS, OH_DISPLAY = range(1,5) - -class AutoFinIInfoRegister(IInfoRegister): - """ - Auto finalize if, when deleting, somehow the last prepareForRun call was still - not followed by a finalize call or if prepareWorker was not followed by - finalizeWorker - """ - def __init__(self, finalizeWorker_ptree, finalize_ptree, *args): - IInfoRegister.__init__(self, *args) - self.need = FinalizeNeedEnum.NONEED - self.finalizeWorker_ptree = finalizeWorker_ptree - self.finalize_ptree = finalize_ptree - def __del__(self): - # TrigMonTHistSvc needs the ITHistRegister to finalize, so we need to - # finalize it now, because there will be no ITHistRegister later on - finalize_THistSvc() - logging.debug("Automatically deleting AutoFinIInfoRegister") - if self.need is FinalizeNeedEnum.NEED_FINWORKER: - logging.debug("Automatically calling IInfoRegister::finalizeWorker") - self.finalizeWorker(self.finalizeWorker_ptree) - if self.need is FinalizeNeedEnum.NEED_FIN : - logging.debug("Automatically calling IInfoRegister::finalize") - self.finalize(self.finalize_ptree) - def _logged_transition(self, t, tname, args): - logging.info("Calling IInfoRegister.%s" % tname) - ret = t(self, *args) - logging.info("IInfoRegister.%s: %s" % (tname, "success" if ret else "failure")) - return ret - def configure(self, *args): - return self._logged_transition(IInfoRegister.configure, "configure", args) - def prepareForRun(self, *args): - ret = self._logged_transition(IInfoRegister.prepareForRun, "prepareForRun", args) - if ret: - self.need = FinalizeNeedEnum.NEED_FIN - return ret - def prepareWorker(self, *args): - ret = self._logged_transition(IInfoRegister.prepareWorker, "prepareWorker", args) - if ret: - self.need = FinalizeNeedEnum.NEED_FINWORKER - return ret - def finalizeWorker(self, *args): - ret = self._logged_transition(IInfoRegister.finalizeWorker, "finalizeWorker", args) - if ret: - self.need = FinalizeNeedEnum.NEED_FIN - return ret - def finalize(self, *args): - ret = self._logged_transition(IInfoRegister.finalize, "finalize", args) - if ret: - self.need = FinalizeNeedEnum.NONEED - return ret - -class online_infrastructure(infrastructure): - # constants - NAME = "online infrastructure" - TDAQ_PARTITION = 'part_athenaHLT_mon' - - # Signals for which we want a custom handler - sigs = [signal.SIGFPE, signal.SIGHUP, signal.SIGQUIT, signal.SIGSEGV, - signal.SIGTERM] - ipc_ref_file = None # so that the attributes are found even when obj init - ipc_ref_created = False # has not been completed - - def __init__(self, config): - infrastructure.__init__(self, config) - self.pgid = 0 - self.run_index = -1 - self._register_handlers() - os.environ['TDAQ_PARTITION'] = self.TDAQ_PARTITION - self._setup_ipc() - self._start_subprocesses() - self.mon = AutoFinIInfoRegister(self.config.get_mon_finalizeWorker_ptree(), - self.config.get_mon_finalize_ptree(), - config['info-service']) - def __del__(self): - # we delete this now, while required external processes are still around - del self.mon - self.mon = None # so __del__ can be called again - # No more OHRootProvider expecting external procs. We can get rid of them - self._terminate_processes() - self._cleanup_ipc() - def _setup_ipc(self): - if not self.config['user-ipc']: - self.ipc_ref_file = os.path.join(os.getcwd(), 'ipc_init.ref') - self.ipc_ref_created= False if os.path.exists(self.ipc_ref_file) else True - os.environ['TDAQ_IPC_INIT_REF'] = 'file:%s' % self.ipc_ref_file - ipc_init() # this happened automatically in the past when running - # athenaMT/PT with OH, because the AppControl would be used and - # take care of initialization. This is no longer the case... - def _cleanup_ipc(self): - if (self.ipc_ref_file and self.ipc_ref_created and - os.path.exists(self.ipc_ref_file)): - logging.info('Removing IPC initial reference (%s)...' % self.ipc_ref_file) - rm_file(self.ipc_ref_file) - def _start_subprocess(self, target): - if target == SubpEnum.INITIAL_IPC: - subp = self.initial_ipc_server = initial_ipc_server(self.pgid) - elif target == SubpEnum.IPC: - subp = self.ipc_server = ipc_server(self.TDAQ_PARTITION, self.pgid) - elif target == SubpEnum.IS: - subp = self.is_server = is_server(self.TDAQ_PARTITION, - self.config['ohserver'], - self.pgid) - else: # target == SubpEnum.OH_DISPLAY - subp = self.oh_display = oh_display(self.pgid) - if subp and not self.pgid: # if it was initialized, update the group id - self.pgid = subp.pid - def _start_subprocesses(self): - logging.info('Starting online infrastructure subprocesses') - # Here we put child processes in a new group (with the pgid of the initial - # ipc). This way, the new processes don't receive signals sent to the group - # of the parent process (athenaHLT). For instance, this prevents Ctrl+C from - # being sent to child processes. That way, athenaHLT is the only responsible - # for handling the signal, finishing the processes in due time if necessary. - # Without this approach, servers would quit immediately on Ctrl+C and - # athenaHLT wouldn't succeed in saving the histograms. In the case of - # SIGSEGV, athenaHLT cannot guarantee full cleanup (that is part of the - # nature of a crash). Child processes may linger in that case. - self._start_subprocess(SubpEnum.INITIAL_IPC) - self._start_subprocess(SubpEnum.IPC) - self._start_subprocess(SubpEnum.IS) - if self.config['oh-display']: - self._start_subprocess(SubpEnum.OH_DISPLAY) - def _terminate_processes(self): - for pnam in ['oh_display', 'is_server', 'ipc_server', 'initial_ipc_server']: - proc = getattr(self, pnam, None) - if proc: - exitcode = proc.poll() - if exitcode is not None: - # the process already terminated - logging.info('The %s already exited, with code %d' - % (pnam, exitcode)) - else: - logging.info('Terminating the %s (pid=%d)...' % (pnam, proc.pid)) - terminate_process(proc) - def _register_handlers(self): - self.prehandlers = {} - for s in self.sigs: - self.prehandlers[s] = signal.getsignal(s) - signal.signal(s, self._handle_quit) - def _handle_quit(self, signum, frame): - logging.error("Caught signal %d. Trying to clean the infrastructure and " - "exit cleanly" % signum) - self.__del__() # this doesn't delete the object, only executes __del__ - # execute the previous handler as well: - prehandler = signal.SIG_DFL - if signum in self.prehandlers: - prehandler = self.prehandlers[signum] - del self.prehandlers[signum] - signal.signal(signum, prehandler) - os.kill(os.getpid(), signum) - def configure(self): - infrastructure.configure(self) - return self.mon.configure(self.config.get_mon_config_ptree()) - def prepareForRun(self): - infrastructure.prepareForRun(self) - return self.mon.prepareForRun(self.config.get_mon_prepare_ptree()) - def prepareWorker(self): - infrastructure.prepareWorker(self) - return self.mon.prepareWorker(self.config.get_mon_prepareWorker_ptree()) - def run(self): - self.run_index += 1 - return infrastructure.run(self) - def stopRun(self): - infrastructure.stopRun(self) - ret = self.mon.finalizeWorker(self.config.get_mon_finalizeWorker_ptree()) - ret &= self.mon.finalize(self.config.get_mon_finalize_ptree()) - oh_cp(self.TDAQ_PARTITION, self.config['ohserver'], - self.run_index if self.run_index != -1 else 0) - return ret - def unconfigure(self): - return infrastructure.unconfigure(self) - - -################################################################################ -#################################### Tests ##################################### -################################################################################ - -import unittest - -def rm_dir(name): - """ - Remove the directory with the provided name, along with all its contents - """ - shutil.rmtree(name) - -class test_file_and_dir_creation_and_deletion(unittest.TestCase): - def setUp(self): - self.filename = "%s.test" % type(self) - def test_create(self): - new_file(self.filename) - self.assert_(os.path.exists(self.filename), - "File %s was not correctly created" % self.filename) - self.assertEquals(os.path.getsize(self.filename), 0, - "File %s was not correctly created" % self.filename) - rm_file(self.filename) - def test_rm_file(self): - new_file(self.filename) - with open(self.filename, 'w') as f: - print >> f, "stuff" - rm_file(self.filename) - self.assertFalse(os.path.exists(self.filename), - "File %s was not correctly removed" % self.filename) - def test_rm_dir(self): - os.mkdir(self.filename) - new_file("%s/%s" % (self.filename, self.filename)) - rm_dir(self.filename) - self.assertFalse(os.path.exists(self.filename), - "Directory %s was not correctly removed" % self.filename) - -class test_output_wait(unittest.TestCase): - """ - Tests wait_for_output - """ - dirname = "test_output_tmp" - proc_name = "fake_proc" - def setUp(self): - os.mkdir(self.dirname) - os.chdir(self.dirname) - new_file('%s.out' % self.proc_name).close() - new_file('%s.err' % self.proc_name).close() - def test_timeout(self): - t0 = time.time() - ret = wait_for_output(self.proc_name, 1, 0.3) - delta = time.time() - t0 - self.assert_(delta < 2) - self.assertEquals(ret, 1) - def test_out(self): - self.assertEquals(self.base_test_output('out'), 0) - def test_err(self): - self.assertEquals(self.base_test_output('err'), -1) - def base_test_output(self, extension): - t0 = time.time() - f = open('%s.%s' % (self.proc_name, extension), 'w') - f.write('output') - f.close() - ret = wait_for_output(self.proc_name, 10, 0.3) - delta = time.time() - t0 - self.assert_(delta < 0.1) - return ret - def tearDown(self): - os.chdir('..') - rm_dir(self.dirname) - -class online_infrastructure_transitions_test(infrastructure_transitions_test): - def setUp(self): - infrastructure_transitions_test.setUp(self) - self.cli_args = ["-M"] + self.cli_args - -class test_online_subprocesses(unittest.TestCase): - """ - Test that online subprocesses are correctly started and killed - """ - def setUp(self): - self.sleep = 0.5 - self.part_name = 'part_athenaHLT_test' - self.server_name = 'dummy_is_server' - self.ipc_ref = os.path.join(os.getcwd(), 'ipc_init.ref') - self.old_ipc = os.environ['TDAQ_IPC_INIT_REF'] - os.environ['TDAQ_IPC_INIT_REF'] = 'file:' + self.ipc_ref - self.sps = [] - def tearDown(self): - os.environ['TDAQ_IPC_INIT_REF'] = self.old_ipc - for sp in self.sps[::-1]: # kill in FILO order - logging.warn('Leftover process with PID %d. Killing it.' % sp.pid) - sp.kill() - def testall(self): - pgid = 0 - initipcs = self.create_sp(initial_ipc_server, pgid) - pgid = initipcs.pid - ipcs = self.create_sp(ipc_server, self.part_name, pgid) - iss = self.create_sp(is_server, self.part_name, self.server_name, pgid) - self.terminate_sp(iss, 'IS server') - self.terminate_sp(ipcs, 'IPC server') - self.terminate_sp(initipcs, 'initial IPC server') - def create_sp(self, sp_creator, *args): - sp = sp_creator(*args) - time.sleep(self.sleep) - self.assert_(sp, "Subprocess not correctly created by '%s'" - % sp_creator.__name__) - self.sps.append(sp) - logging.info("Created process with PID %d" % sp.pid) - return sp - def terminate_sp(self, sp, spname): - sp.terminate() - time.sleep(self.sleep) - ecode = sp.poll() - # ecode is None if the process didn't exit and 0 if it exited correctly - if not ecode is None: - self.sps.remove(sp) - self.assertFalse(ecode, "Subprocess '%s' terminated with non-zero error " - "code: %s" % (spname, ecode)) - self.assertNotEqual(ecode, None, "Subprocess '%s' didn't exit on SIGTERM" - % spname) - -class test_online_infrastructure_as_subprocess(unittest.TestCase): - """ - Run the online infrastructure in a subprocess (which in turn creates - subprocesses), and kill it in different places, to confirm that signal - handling and cleanup work properly. The infrastructure class that is used - descends from online_infrastructure but replaces certain methods, to provide - specific points of signal handling. Also, it doesn't set up any monitoring - service and it provides no transitions - """ - def test0(self): - self._test_base(0) - def test1(self): - self._test_base(1) - def test2(self): - self._test_base(2) - def test3(self): - self._test_base(3) - def test4(self): - self._test_base(4) - def _test_base(self, n): - import multiprocessing, time - print '### Testing with n =', n - p = multiprocessing.Process(target=self.pausing_online_infrastructure) - p.start() - for i in range(n): - time.sleep(0.5) - os.kill(p.pid, signal.SIGUSR1) - time.sleep(0.5) - os.kill(p.pid, signal.SIGTERM) - p.join() - self.assertEquals(p.exitcode, -15, "Subprocess exited with an unexpedted " - "code: %d" % p.exitcode) - del p - def test_pausing_online_infrastructure_init_del(self): - class dont_pause_context(object): - def __enter__(self): - self.pause = signal.pause - signal.pause = lambda: time.sleep(0.5) - def __exit__(self, *unused_args): - signal.pause = self.pause - with dont_pause_context(): - # For some reason I have to call __del__ explicitly (probably due to - # issues with del - see - # https://docs.python.org/2/reference/datamodel.html#object.__del__ - # Otherwise deletion would be delayed until after the test and any problem - # with the d'tor would be unnoticed. Notice however that __del__ is called - # again when the object is actually deleted. This accounts for warning - # messages saying that sub processes exited already - self.pausing_online_infrastructure().__del__() - - class pausing_online_infrastructure(online_infrastructure): - # no transitions - configure=connect=prepareForRun=run=stopRun=disconnect=unconfigure = None - - def __init__(self): - self.pause_count = 0 - self.part_name = 'part_athenaHLT_test' - self.server_name = 'dummy_is_server' - self.ipc_ref_file = os.path.join(os.getcwd(), 'ipc_init.ref') - os.environ['TDAQ_IPC_INIT_REF'] = 'file:' + self.ipc_ref_file - self.mon = None - self._test_servers() - def _test_servers(self): - # handlers - self._register_handlers() - signal.signal(signal.SIGUSR1, self._test_handler) - self._pause() # pausing 0 - # initial ipc - pgid = 0 - self.initial_ipc_server = initial_ipc_server(pgid) - pgid = self.initial_ipc_server.pid - self._pause() # pausing 1 - # ipc - self.ipc_server = ipc_server(self.part_name, pgid) - self._pause() # pausing 2 - # is - self.is_server = is_server(self.part_name, self.server_name, pgid) - self._pause() # pausing 3 - # oh display - self.oh_display = oh_display(pgid) - self._pause() # pausing 4 - def _pause(self): - print 'pausing - ' + str(self.pause_count) - signal.pause() - self.pause_count += 1 - def _test_handler(self, signum, frame): - #def _test_handler(signum, frame): - print 'test handler received signal', signum - -if __name__ == '__main__': - from HLTTestApps import test_main - import logging - logging.getLogger().setLevel(1) - # we also need a test setup for the infrastructure module, as some tests - # come from there. We then exclude the tests that are tested in that module - test_main(more_modules_requiring_setup=['infrastructure'], - exclude_names=['infrastructure_transitions_test']) - #include_names=['online_infrastructure_transitions_test']) - diff --git a/HLT/HLTTestApps/python/HLTTestApps/option.py b/HLT/HLTTestApps/python/HLTTestApps/option.py deleted file mode 100644 index 7b3b586cb01..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/option.py +++ /dev/null @@ -1,560 +0,0 @@ -#!/usr/bin/env python - -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -# vim: set fileencoding=utf-8 : -# Created by Andre Anjos <andre.dos.anjos@cern.ch> -# Ter 27 Nov 2007 10:41:16 CET - -import logging, types -from ast import literal_eval -from EventApps.myopt import Parser -from optspec import * -from HLTTestApps import random_sub_dict - -def file_optcheck(option_spec, kwargs, extra): - """Checks if the options passed make sense all together.""" - - nfiles = len(kwargs['file']) - if nfiles == 0: - raise BadOptionSet, 'Cannot process without any input files.' - elif nfiles > 1 and not kwargs['oh-monitoring']: - raise BadOptionSet, ('Cannot have multiple input files without ' - '--oh-monitoring (see --help for explanation)') - - # do checks that are common to both emon and file based runs - common_optcheck(option_spec, kwargs, extra) - - -def emon_optcheck(option_spec, kwargs, extra): - """Checks if the options passed make sense all together.""" - - raise CurrentlyNotSupported, "Emon input is currently not supported" - -def common_optcheck(option_spec, kwargs, extra): - """ - Checks if the options passed make sense all together, in both emon or file - based runs. - """ - unsupported_optcheck(option_spec, kwargs) - db_optcheck(option_spec, kwargs, extra) - oh_optcheck(option_spec, kwargs) - skip_events_optcheck(option_spec, kwargs) - save_output_optcheck(option_spec, kwargs) - diverse_optcheck(option_spec, kwargs) - -def diverse_optcheck(option_spec, kwargs): - if kwargs['timeout']['timeout'] < 0: - raise BadOptionSet, 'You cannot set the timeout value to a negative integer' - - if (kwargs['timeout']['warn_fraction'] < 0 or - kwargs['timeout']['warn_fraction'] > 1): - raise BadOptionSet, ('The warn_fraction should be a number in the interval ' - '[0,1]') - - if kwargs['interactive'] and kwargs['debug']: - raise BadOptionSet, 'You cannot run GDB over an interactive session' - - if kwargs['leak-check']: - allowed = option_spec['leak-check']['allowed'] - if kwargs['leak-check'].lower() not in allowed: - raise BadOptionSet, 'Allowed values for leak-check are %s' % str(allowed) - - if kwargs['delete-check']: - allowed = option_spec['delete-check']['allowed'] - if not kwargs['delete-check'].lower() in allowed: - raise BadOptionSet, 'Allowed values for delete are %s' % str(allowed) - - if kwargs['debug']: - allowed = option_spec['debug']['allowed'] - if not kwargs['debug'] in allowed: - raise BadOptionSet, 'Allowed values for debug are %s' % str(allowed) - - if kwargs['use-compression']: - # check compression level meaningful - if kwargs['use-compression'] not in range(1,6): - raise BadOptionSet, ('Invalid range for output compression level. Needs ' - 'to be in range [1-5]') - # compression requires saving output - elif not (kwargs['save-output'] or kwargs['save-output-conventional']): - raise BadOptionSet, ('Cannot --use-compression without ' - '--save-output(-conventional)') - -def save_output_optcheck(option_spec, kwargs): - # check not both saves - if kwargs['save-output'] and kwargs['save-output-conventional']: - raise BadOptionSet, ('Cannot simultaneously --save-output and ' - '--save-output-conventional') - - # convenience - convd = kwargs['save-output-conventional'] - allowedd = option_spec['save-output-conventional']['allowed'] - convkset = set(convd.keys()) - allowedkset = set(allowedd.keys()) - - # check save-output-conventional keys are a subset of allowed keys - if not convkset.issubset(allowedkset): - raise BadOptionSet, ('Unsupported keys in --save-output-conventional: %s' - % list(convkset - allowedkset)) - - # check save-output-conventional values have proper type - for k in convkset: - required_type = type(allowedd[k]) - if not isinstance(convd[k], required_type): - raise BadOptionSet, ('Value for key "%s" in --save-output-conventional ' - 'must be an instance of %s' % (k, required_type)) - -def skip_events_optcheck(option_spec, kwargs): - skip = kwargs['skip-events'] - if skip: - if(skip < 0): - raise BadOptionSet, 'You cannot skip a negative number of events' - if kwargs['interactive']: - raise BadOptionSet, 'Skipping events in interactive mode is not supported' - if kwargs['rewind']: - raise BadOptionSet, 'Skipping events in rewind mode is not supported' - -def oh_optcheck(option_spec, kwargs): - if not kwargs['oh-monitoring']: - ohopts = [o for o in option_spec if option_spec[o]['group'] == - 'Online Histogramming'] - ohopts.append('interactive') - for o in ohopts: - if o in kwargs and kwargs[o] and kwargs[o] != option_spec[o]['default']: - justify = (' (see help for explanation).' - if o == 'interactive' else '.') - raise BadOptionSet, ("Option --%s cannot be specified without " + - "--oh-monitoring%s") % (o, justify) - -def db_optcheck(option_spec, kwargs, extra): - if kwargs['use-database']: - if extra: - logging.error("use-database specified simultaneously to job options. " - "The latter will be ignored.") - raise BadOptionSet, "Cannot configure from both DB and JobOptions" - check_db_type(option_spec, kwargs) - check_smkey(kwargs) - check_hltpskey(kwargs) - elif not extra: - raise BadOptionSet, 'No job options specified' - else: - check_disallowed_db_options(option_spec, kwargs) - -def unsupported_optcheck(option_spec, kwargs): - """ - Checks for options that are currently not supported. This shall be removed - when all options are supported again. - """ - for k, v in kwargs.iteritems(): - if k not in auto_options and v != option_spec.get_default(k): - if not k in option_spec.supported and not (k, v) in option_spec.supported: - raise CurrentlyNotSupported, ("Option '%s=%s' is currently not " - "supported" % (k, v)) - -def check_disallowed_db_options(option_spec, kwargs): - dbopts = [o for o in option_spec if option_spec[o]['group'] == 'Database'] - for o in dbopts: - if o in kwargs and kwargs[o]: - raise BadOptionSet, ("Option --%s cannot be specified without " + - "--use-database") % o -def check_db_type(option_spec, kwargs): - if(kwargs['db-type'] != None and - kwargs['db-type'] not in option_spec['db-type']['allowed']): - raise BadOptionSet, ('Unknown db-type "%s". Allowed values are %s' % - (kwargs['db-type'], - option_spec['db-type']['allowed'])) -def check_smkey(kwargs): - if kwargs['db-smkey'] != None and not check_smkey_aux(kwargs['db-smkey']): - raise BadOptionSet, ("db-smkey not correct. Please check the " + - "corresponding help message for allowed values") -def check_hltpskey(kwargs): - if (kwargs['db-hltpskey'] != None and - not check_hltpskey_aux(kwargs['db-hltpskey'])): - raise BadOptionSet, ("db-hltpskey not correct. Please check the " + - "corresponding help message for allowed values") -def check_smkey_aux(s): - try: - i = literal_eval(s) - return isinstance(i, int) and i > 0 - except (ValueError, SyntaxError): - return False -def check_hltpskey_aux(s): - if not check_smkey_aux(s): - try: - l = literal_eval(s) - if not isinstance(l, list) or not len(l) > 0: - return False # ensure non-empty list - for count, elem in enumerate(l): - if not isinstance(elem, tuple) or not len(elem) == 2: - return False # ensure pair - for i in elem: - if not isinstance(i, int) or not i > 0: - return False # ensure positive integers - if count > 0 and l[count - 1][0] >= elem[0]: - return False # ensure strict growing order of the first element - except (ValueError, SyntaxError): - return False - return True - -def get_default(option_spec, option_key): - """ - Get the default value of an option. Raise KeyError if the option is not - found - """ - o = option_spec[option_key] - return o['default'] if o['arg'] else False - -def warn_verbosity(verbosity): - if verbosity != common['verbosity']['default']: - logging.warning('Custom verbosity specified. ' - 'Make sure not to overwrite it in the job ' - 'options.') - -def gen_parser(option_spec, extra_args): - """ - Generate an option parser for the options specified by option_spec - """ - parser = Parser(extra_args=extra_args) - for k, v in option_spec.iteritems(): - parser.add_option(k, v['short'], v['description'], v['arg'], v['default'], - v['group']) - return parser - -def parse_commands(c): - """Parse pre and post commands for trailing or multiple ';'""" - import re - c = c.strip() - c = re.sub(';+',';', c) - c = re.sub('^;','', c) - return re.sub(';$','', c) - -class option_specification(dict): - def get_default(self, arg): - if arg in self.constants: - return self.constants[arg] - return get_default(self, arg) - def optcheck(self): - raise NotImplementedError, ("no optcheck method was provided for this " - "option specification") - -# file options specification -file_opt_spec = common.copy() -file_opt_spec.update(fileinput) -file_opt_spec = option_specification(file_opt_spec) -file_opt_spec.optcheck = types.MethodType(file_optcheck, file_opt_spec) -file_opt_spec.supported = auto_options + supported -file_opt_spec.constants = common_constants - -# emon options specification -emon_opt_spec = common.copy() -emon_opt_spec.update(emoninput) -emon_opt_spec = option_specification(emon_opt_spec) -emon_opt_spec.optcheck = types.MethodType(emon_optcheck, emon_opt_spec) -emon_opt_spec.supported = auto_options + supported -emon_opt_spec.constants = common_constants - -################################################################################ -# Tests # -################################################################################ - -import unittest, random, sys - -def get_arg_list_from_option_dict(d): - # Get a list with the command line options that would generate the dictionary - # d. First get a list of pairs for each option plus (isolated) extra arguments. - # The string representation is used for each option value and extra argument. - # Then flatten the list out. For instance, if we had - # 'd={'a': 1, 'b': 2, 'extra': 3}' this method will return the list - # '['--a', '1', '--b', '2', '3'] - l = [(str(v),) if k == 'extra' else ['--%s' % k] + ([] if v is True - else [str(v)]) - for k, v in d.iteritems()] - return [x for sublist in l for x in sublist] - -class option_tests_base(unittest.TestCase): - def setUp(self): - self.diff = set(auto_options) - self.option_spec = file_opt_spec - self.__setup_unsupported() - self.parser = gen_parser(file_opt_spec, True) - def _check_arg_set(self, kwargs): - diff = set(kwargs.keys()) - set(self.option_spec.keys()) - self.assert_(diff.issubset(self.diff), "%s is not a subset of %s" - % (diff, self.diff)) - def _check_arg_values(self, kwargs, overwritten={}): - for k, v in kwargs.iteritems(): - if not k in self.diff: - expect = (overwritten[k] if k in overwritten - else self.option_spec.get_default(k)) - self.assert_(v == expect or str(v) == str(expect), - "Option '%s' has a wrong value: expected '%s' but " - "got '%s'" % (k, expect, v)) - def __setup_unsupported(self): - self.option_spec['unsupported'] = {'short': '', 'arg': True, - 'default': None, 'group': 'Test', - 'description': 'unsupported option'} - self.option_spec['unsupported-flag'] = {'short': '', 'arg': False, - 'default': None, 'group': 'Test', - 'description': 'unsupported flag'} - -class option_basic_tests(option_tests_base): - def test_default(self): - kwargs, extra = self.parser.parse([]) - self._check_arg_set(kwargs) - self._check_arg_values(kwargs) - def test_explicit_maintain(self): - kwargs, extra = self.parser.parse(["-z", "0"]) - self._check_arg_set(kwargs) - self._check_arg_values(kwargs) - def test_explicit(self): - kwargs, extra = self.parser.parse(["-z", "1"]) - self._check_arg_set(kwargs) - self._check_arg_values(kwargs, {"use-compression": 1}) - def test_explicit_flag(self): - kwargs, extra = self.parser.parse(["-H"]) - self._check_arg_set(kwargs) - self._check_arg_values(kwargs, {"perfmon": True}) - def test_no_extra(self): - parser = gen_parser(self.option_spec, False) - self.assertRaises(SyntaxError, parser.parse, ["extra_argument"]) - def test_extra(self): - argv = ["extra_arg1", "extra_arg2"] - kwargs, extra = self.parser.parse(argv) - self._check_arg_set(kwargs) - self._check_arg_values(kwargs) - self.assertEquals(set(extra), set(argv)) - -class option_consistency_tests(option_tests_base): - def setUp(self): - super(option_consistency_tests, self).setUp() - self.required = {'file': ['fake_file'], - 'extra': "fake_joboptions"} - def test_emon_not_allowed(self): - self.assertRaises(CurrentlyNotSupported, emon_optcheck, None, None, None) - def test_unsupported_flag(self): - kwargs, extra = self.parser.parse(self._get_required_args() + - ["--unsupported-flag"]) - self.assertRaises(CurrentlyNotSupported, self.option_spec.optcheck, - kwargs, extra) - def test_unsupported(self): - kwargs, extra = self.parser.parse(self._get_required_args() + - ["--unsupported", "123"]) - self.assertRaises(CurrentlyNotSupported, self.option_spec.optcheck, - kwargs, extra) - def test_explicitly_supported(self): - self._aux_test_explicitly_supported(["run-number"], - ["-R", "1234"] + - self._get_required_args()) - def test_explicitly_supported_flag(self): - self._aux_test_explicitly_supported(["leak-check-execute"], - ["-Q"] + self._get_required_args()) - def test_explicitly_supported_extra(self): - self._aux_test_explicitly_supported(["extra_argument"]) - def _check_opt_allowed(self, optn, optv=None): - # leave the value argument empty for flags - kwargs, extra = self.parser.parse(self._get_required_args() + - ["--%s" % optn] + ([] if optv is None - else [str(optv)])) - self._check_arg_set(kwargs) - d = dict(self.required.items() + [(optn,True if optv is None else optv)]) - self._check_arg_values(kwargs, d) - self.option_spec.optcheck(kwargs, extra) - def _check_opt_disallowed(self, optn, optv=None): - # we don't check the value when the option is not allowed to begin with - with self.assertRaises(BadOptionSet): - self._check_opt_allowed(optn, optv) - print >> sys.stderr, ("We did not raise exception with optn='%s' and " - "optv='%s'" % (optn, optv)) - def _aux_test_explicitly_supported(self, sup_args=[], cmd_args=None): - # sup_args are extra arguments, but they are also added to the list of - # supported arguments, so that currently unsupported options can still be - # tested (e.g. test that oh-display is supported with oh-monitoring before - # oh-display is actually supported) ) - kwargs, extra = self.parser.parse(cmd_args if cmd_args - else sup_args + self._get_required_args()) - self.option_spec.supported += sup_args - self.option_spec.optcheck(kwargs, extra) - def _get_required_args(self): - return get_arg_list_from_option_dict(self.required) - -class option_diverse_specific_tests(option_consistency_tests): - def test_leak_check_allowed(self): - opt = 'leak-check' - for value in self.option_spec[opt]['allowed']: - self._check_opt_allowed(opt, value) - def test_leak_check_disallowed(self): - disallowed = ('afga', 'star', 0, 123, -.321, self) - for value in disallowed: - self._check_opt_disallowed('leak-check', value) - def test_delete_check_allowed(self): - opt = 'delete-check' - for value in self.option_spec[opt]['allowed']: - self._check_opt_allowed(opt, value) - def test_delete_check_disallowed(self): - disallowed = ('afga', 'star', 0, 123, -.321, self) - for value in disallowed: - self._check_opt_disallowed('delete-check', value) - def test_debug_allowed(self): - opt = 'debug' - for value in self.option_spec[opt]['allowed']: - self._check_opt_allowed(opt, value) - def test_debug_disallowed(self): - disallowed = ('afga', 'star', 0, 123, -.321, self) - for value in disallowed: - self._check_opt_disallowed('debug', value) - def test_oh_display_requires_oh(self): - self._check_opt_disallowed('oh-display') - def test_user_ipc_requires_oh(self): - self._check_opt_disallowed('user-ipc') - def test_info_service_requires_oh(self): - self._check_opt_disallowed('info-service', 'bla') - def test_histogram_publishing_interval_requires_oh(self): - self._check_opt_disallowed('histogram-publishing-interval', 123) - def test_histogram_include_requires_oh(self): - self._check_opt_disallowed('histogram-include', 'abc*') - def test_histogram_exclude_requires_oh(self): - self._check_opt_disallowed('histogram-exclude', 'abc*') - def test_interactive_requires_oh(self): - self._check_opt_disallowed('interactive') - def test_multiple_files_require_oh(self): - multiple_files = '[\'fake_file\', \'another_fake_file\']' - del self.required['file'] - self._check_opt_disallowed('file', multiple_files) - def test_oh_display_ok_with_oh(self): - self._aux_test_explicitly_supported(sup_args=["--oh-display", - "--oh-monitoring"]) - def test_user_ipc_ok_with_oh(self): - self._aux_test_explicitly_supported(sup_args=["--user-ipc", - "--oh-monitoring"]) - def test_info_service_ok_with_oh(self): - self._aux_test_explicitly_supported(sup_args=["--info-service", "bla", - "--oh-monitoring"]) - def test_histogram_publishing_interval_ok_with_oh(self): - sargs=["--histogram-publishing-interval", "5", "--oh-monitoring"] - self._aux_test_explicitly_supported(sup_args=sargs) - def test_histogram_include_ok_with_oh(self): - sargs = ['--histogram-include', '.*', '--oh-monitoring'] - self._aux_test_explicitly_supported(sup_args=sargs) - def test_histogram_exclude_ok_with_oh(self): - sargs = ['--histogram-exclude', ' ', '--oh-monitoring'] - self._aux_test_explicitly_supported(sup_args=sargs) - def test_intaractive_ok_with_oh(self): - sargs = ['--interactive', '--oh-monitoring'] - self._aux_test_explicitly_supported(sup_args=sargs) - def test_multiple_files_ok_with_oh(self): - del self.required['file'] - sargs = ['--oh-monitoring', '--file', '["fake_file", "another_fake_file"]'] - self._aux_test_explicitly_supported(sup_args=sargs) - def test_sor_time_allowed(self): - allowed = ['now', 1386355338658000000, '13/3/13 08:30:00.123', - '4/4/04 4:4:4.444444', -123] - for sor in allowed: - self.option_spec['sor-time']['parse'](sor) - def test_sor_time_disallowed(self): - disallowed = ['tomorrow', 'yesterday', 'blablebli', - '13/03/2013 08:30:00.123', '4/4/04', '4:4:04.444444', - '4/4/04 4:4:4', '4/13:04 4:4:4.444444', '4/4/4 4:4:4.444444'] - for sor in disallowed: - self.assertRaises(BadOptionSet, self.option_spec['sor-time']['parse'],sor) - def test_db_options_no_usedb_disallowed(self): - disallowed = [('db-type', 'Coral'), ('db-server', 'mehhh'), - ('db-smkey', 84930), ('db-hltpskey', 40000), - ('db-extra', {'a':'b'})] - for args in disallowed: - self._check_opt_disallowed(*args) - def test_db_and_job_options_disallowed(self): - assert "extra" in self.required - self._check_opt_disallowed('use-database') - -class option_save_output_tests(option_consistency_tests): - def setUp(self): - super(option_save_output_tests, self).setUp() - def test_save_output_allowed(self): - self._check_opt_allowed('save-output', '/tmp/somedir/somefile') - def test_save_output_conventional_allowed(self): - # allowed is a dictionary of the allowed keys mapped to their default values - optvbase = self.option_spec['save-output-conventional']['allowed'] - # create a random combination out of optvbase - d = random_sub_dict(optvbase) - # check that this combination is acceptable - self._check_opt_allowed('save-output-conventional', d) - def test_save_output_conventional_disallowed_keys(self): - wrong_dict = {123: 321, 'abc': 'cba'} - for k, v in wrong_dict.items(): - self._check_opt_disallowed('save-output-conventional', {k: v}) - def test_save_output_conventional_disallowed_values(self): - # allowed keys - goodkeys = self.option_spec['save-output-conventional']['allowed'].keys() - # values with wrong type (None): - wrong_dict_base = {k: None for k in goodkeys} - # get a random combination of wrong items - wrongd = random_sub_dict(wrong_dict_base) - # check that this combination is not acceptable - self._check_opt_disallowed('save-output-conventional', wrongd) - def test_save_output_and_conventional_disallowed(self): - # allowed is a dictionary of the allowed keys mapped to their default values - optv = self.option_spec['save-output-conventional']['allowed'] - # this will also be parsed - self.required['save-output'] = '/tmp/somedir/somefile' - self._check_opt_disallowed('save-output-conventional', optv) - def test_compression_requires_save_output_somehow(self): - compv = random.randint(1,5) - # conv is a dictionary of the allowed keys mapped to their default values - conv = self.option_spec['save-output-conventional']['allowed'] - # compression allowed with save-output: - self.required['save-output'] = '/tmp/somedir/somefile' - self._check_opt_allowed('use-compression', compv) - # compression allowed with save-output-conventional - del self.required['save-output'] - self.required['save-output-conventional'] = conv - self._check_opt_allowed('use-compression', compv) - # compression disallowed without save-output or save-output-conventional - del self.required['save-output-conventional'] - self._check_opt_disallowed('use-compression', compv) - -class option_skip_events_tests(option_consistency_tests): - def setUp(self): - super(option_skip_events_tests, self).setUp() - self.required['skip-events'] = 123 - def test_skip_events_interactive_disallowed(self): - self._check_opt_disallowed('interactive') - def test_skip_events_rewind_disallowed(self): - self._check_opt_disallowed('rewind') - def test_skip_events_negative_disallowed(self): - del self.required['skip-events'] - self._check_opt_disallowed('skip-events', -1) - def test_skip_events_explicitly_supported(self): - self._aux_test_explicitly_supported(cmd_args=self._get_required_args()) - -class option_database_tests(option_consistency_tests): - def setUp(self): - super(option_database_tests, self).setUp() - del self.required['extra'] - self.required['use-database'] = True - def test_db_type_disallowed(self): - self._check_opt_disallowed('db-type', 'wrong') - def test_db_types_allowed(self): - for type in ["Oracle", "SQLite", "MySQL"]: - self._check_opt_allowed('db-type', type) - def test_db_smkey_disallowed(self): - for key in [0, -123, 1.23, 'blaa', [(1,2)]]: - self._check_opt_disallowed('db-smkey', key) - def test_db_smkey_allowed(self): - self._check_opt_allowed('db-smkey', 123) - def test_db_server_allowed(self): - self._check_opt_allowed('db-server', 'foobar') - def test_db_hltpskey_disallowed(self): - bad = [-1, 0, 5.4, 1.0, "1j", "afsg", "[(1,a)]", "[(1,4j)]", [], [1], - [(0, 123), (100, 0)], [(1, 123), (100, 0)], [(3,3),(2,2)], - [(3,3),(2,2),(1,1)], [(1,1),(3,3),(2,2)], [(1,1), (1,2)]] - for x in bad: - self._check_opt_disallowed('db-hltpskey', x) - def test_db_hltpskey_allowed(self): - good = [1, [(1,2)], [(1,123), (100,321)], [(1, 123), (100, 22)], - [(1, 123), (100, 22), (444, 123)], [(1,1),(2,2),(3,1),(44,555)]] - for x in good: - self._check_opt_allowed('db-hltpskey', x) - -if __name__ == '__main__': - from HLTTestApps import test_main - test_main() - diff --git a/HLT/HLTTestApps/python/HLTTestApps/optspec.py b/HLT/HLTTestApps/python/HLTTestApps/optspec.py deleted file mode 100644 index 04adf93c14a..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/optspec.py +++ /dev/null @@ -1,460 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -''' -Created on Jun 13, 2013 - -@author: ricab -''' - -import logging -from datetime import datetime as dt - -class BadOptionSet(Exception): pass -class CurrentlyNotSupported(BadOptionSet): pass - -# list of options that may be automatically added by the parser -auto_options = ["help", 'expert-help', 'option-file', 'dump-options', - 'dump-expert-options'] - -# list of supported option keys, or (key, value) pairs -# put options here as they become supported -supported = ['file', 'number-of-events', 'perfmon', 'verbosity', - 'event-modifier', 'precommand', 'postcommand', 'log-level', - 'appmgrdll', 'rewind', 'run-number', - 'save-output', 'save-output-conventional', - 'ers-debug-level', 'tcmalloc', 'stdcmalloc', 'imf', 'stdcmath', - 'preloadlib', 'msgsvc-type', 'joboptionsvc-type', 'interactive', - 'show-includes', 'use-database', 'db-type', 'db-server', - 'db-smkey', 'db-hltpskey', 'db-extra', 'sor-time', - 'detector-mask', 'ros2rob', 'dcm-prefetch-strategy', 'leak-check-execute', 'leak-check', - 'delete-check', 'no-ers-signal-handlers', 'oh-monitoring', - 'oh-display', 'user-ipc', 'info-service', 'histogram-include', - 'histogram-exclude', 'histogram-publishing-interval', - 'appmgrfactory', 'python-setup', 'timeout', - 'use-compression', 'trace', 'extra-l1r-robs', 'skip-events', - 'muoncal-buffername', 'muoncal-buffersize', 'max-result-size', - 'debug'] - -def sor_as_nanos(sorv): - sor = sor_as_datetime(sorv) - return int((sor - dt.fromtimestamp(0)).total_seconds() * 1e9) - -def sor_as_datetime(sorv): - sorf = common['sor-time']['format'] - if not sorv: - return dt.fromtimestamp(0) # epoch - try: # try interpreting it as now - return now_sor_as_datetime(sorv) - except ValueError: - pass - try: # try interpreting it as nanos - return int_sor_as_datetime(sorv) - except ValueError: - pass - try: # try interpreting it as the human readable format - return hr_sor_as_datetime(sorv, sorf) - except (ValueError, TypeError): - raise BadOptionSet("Bad format for option 'sor-time': neither 'now', " - "nor int, nor '%s'" % sorf) - -def now_sor_as_datetime(sorv): - if sorv == 'now': - return dt.now() - raise ValueError - -def int_sor_as_datetime(sorv): - # notice negative numbers are allowed - they represent times before epoch - nanos = int(sorv) # raises ValueError if not int - return dt.fromtimestamp(nanos / 1e9) - -def hr_sor_as_datetime(sorv, sorf): - return dt.strptime(sorv, sorf) - -#### -common = {} -common['extra-l1r-robs'] = \ - {'short': '', - 'arg': True, - 'default': [], - 'group': 'Run mode', - 'description': "List of additional ROB IDs that should be considered part of the level 1 result. Any ROBs with matching IDs in input events will be included in the list of robs that is passed to the HLT when requesting it to process an event. Each element in the list must follow eformat's definition of ROB ID. In particular, it must be integers in the range [0..4294967295]" - } -common['ros2rob'] = \ - {'short': 'm', - 'arg': True, - 'default': '{}', - 'group': 'Run mode', - 'description': "ROS to ROB map. This should be provided as a dictionary whose keys are ROS IDs - strings - and whose values are lists of ROB IDs - integers in the range [0..4294967295]. This dictionary can be provided either directly on the command line (e.g. --ros2rob '{\"foobar\": [0xABCD0001, 0xABCD0002]}'), or through a python module that contains it in the variable ros2rob (e.g. --ros2rob 'mymod', where mymod.py contains 'ros2rob={\"bla\": [0x123, 0x321]}'). In the latter case, the module should be accessible with a regular import (it should be in the PYTHONPATH). Such a module can be obtained from a partition with the script ros2rob_from_partition.py, which is included in this package. Any ROB that is not covered by the dictionary and that comes up in an event is considered as part of an artificial ROS corresponding to its subdetector. Notice, in particular, that is how all ROBs are treated when an empty dictionary is provided (the default)! In that case all ROBs are assumed to be in their SubDetector's artificial single ROS. If a non-empty dictionary is provided and, at runtime, a ROB is requested which is not in the provided map, a big WARNING is printed, as this indicates an incomplete mapping." - } -common['dcm-prefetch-strategy'] = \ - {'short': '', - 'arg': True, - 'default': 0, - 'group': 'Run mode', - 'description': "ROB prefetching strategy in DCM: = 0: retrieve ROBs on prefetch list only when needed for decoding (as in Run 1), = 1: retrieve ROBs on prefetch list immediately (as begin on Run 2)" - } -common['save-output'] = \ - {'short': 'o', - 'arg': True, - 'default': '', - 'group': 'Data', - 'description': 'Output events with the HLT result to the specified file. This parameter only sets the filename core (a sequence number and extension is still appended). If multiple input files are given, multiple output files are generated. This option cannot be used simultaneously with --save-output-conventional.'} -convallowed = {'dir': '.', - 'ProjectTag': 'UNKNOWN', - 'RunNumber': 0, - 'StreamType': 'UNKNOWN', - 'StreamName': 'UNKNOWN', - 'LumiBlockNumber': 0, - 'ProductionStep': 'UNKNOWN'} -common['save-output-conventional'] = \ - {'short': 'O', - 'arg': True, - 'default': {}, - 'group': 'Data', - 'description': 'Output events with the HLT result to files whose full names are derived from the specified dictionary, following the Atlas RAW data file naming convention. The dictionary can have between 0 and 7 items (inclusive). The only keys allowed are: %s. The default values for these keys are, respectively: %s. The specified values must have the same type as these defaults, that is, respectively: %s. Properties that are not specified are derived, for each output file, from the corresponding input file if it follows Atlas RAW naming convention. Otherwise, they the default values are used.' % (convallowed.keys(), convallowed.values(), [type(v) for v in convallowed.values()]), - 'allowed': convallowed} -common['use-compression'] = \ - {'short': 'z', - 'arg': True, - 'default': 0, - 'group': 'Data', - 'description': 'If set, written output data are compressed with the specified compression level. The compression level should be specified as an integer value between 0 and 5 (inclusive). Recommended value -z1. -z0 means no compression applied. This option requires either --save-output or --save-output-conventional.'} -common['verbosity'] = \ - {'short': 'V', - 'arg': True, - 'group': 'Run mode', - 'default': logging.INFO, - 'description': 'From which level to print system messages [%d, %d]. For details please consult the documentation of python\'s "logging" module' % (logging.NOTSET, logging.CRITICAL)} -common['timeout'] = \ - {'short': None, - 'arg': True, - 'default': {'timeout': 0, 'warn_fraction': 0.8}, - 'group': 'Run mode', - 'description': 'This option determines if a watchdog will be used to monitor the event processing. If the dictionary entry "timeout" is set, it should be set to the maximum amount of time HLT should process every event, in milliseconds. The second parameter determines the fraction of that timeout in which the HLT framework will be notified of an eventual timeout.'} -common['precommand'] = \ - {'short': 'c', - 'arg': True, - 'default': [], - 'group': 'Run mode', - 'description': 'Optional python commands executed before jobOptions script or database configuration'} -common['postcommand'] = \ - {'short': 'C', - 'arg': True, - 'default': [], - 'group': 'Run mode', - 'description': 'Optional python commands executed after jobOptions script or database configuration'} -common['number-of-events'] = \ - {'short': 'n', - 'arg': True, - 'default': -1, - 'group': 'Data', - 'description': 'Processes this number of events (<=0 means all).'} -common['skip-events'] = \ - {'short': 'k', - 'arg': True, - 'default': 0, - 'group': 'Data', - 'description': 'Skip these many events. Not allowed with "--interactive" nor "--rewind". Must be smaller than the number of events in the input stream. '} -common['rewind'] = \ - {'short': 'r', - 'arg': False, - 'default': None, - 'group': 'Data', - 'description': 'Rewind to first event in prepareForRun. Useful in interactive mode with multiple runs and running over the same events.'} -common['ers-debug-level'] = \ - {'short': 'L', - 'default': 0, - 'arg': True, - 'group': 'Run mode', - 'description': 'An ERS debug level to be set dynamically, in the range [0,3]. This will overwrite your environmental settings for TDAQ_ERS_DEBUG_LEVEL.'} -oh_warn = "This option can only be used together with --oh-monitoring." -common['oh-monitoring'] = \ - {'short': 'M', - 'arg': False, - 'default': None, - 'group': 'Online Histogramming', - 'description': 'Run with OH monitoring'} -common['oh-display'] = \ - {'short': 'W', - 'arg': False, - 'default': None, - 'group': 'Online Histogramming', - 'description': 'Launch an histogram display. ' + oh_warn} -common['info-service'] = \ - {'short': 'x', - 'arg': True, - 'default': 'MonSvcInfoService', - 'group': 'Online Histogramming', - 'description': 'The IInfoRegister that should be used as TrigMonTHistSvc back-end. ' + oh_warn} -common['user-ipc'] = \ - {'short': 'I', - 'arg': False, - 'default': None, - 'group': 'Online Histogramming', - 'description': 'Use the IPC init file pointed to by the environment variable TDAQ_IPC_INIT_REF. ' + oh_warn} -common['histogram-publishing-interval'] = \ - {'short': 'U', - 'arg': True, - 'default': 5, - 'group': 'Online Histogramming', - 'description': 'Positive integer determining the number of seconds between each two consecutive online histogram publications. ' + oh_warn} -common['histogram-exclude'] = \ - {'short': '', - 'arg': True, - 'default': '', - 'group': 'Online Histogramming', - 'description': 'Regular expression describing the histograms that should be excluded from online publishing. ' + oh_warn} -common['histogram-include'] = \ - {'short': '', - 'arg': True, - 'default': '.*', - 'group': 'Online Histogramming', - 'description': 'Regular expression describing the histograms that should be included in online publishing. ' + oh_warn} -common['show-includes'] = \ - {'short': 's', - 'arg': False, - 'default': None, - 'group': 'Run mode', - 'description': 'Show include(s) resolution in python jobOptions files'} -common['log-level'] = \ - {'short': 'l', - 'arg': True, - 'default': 'INFO,ERROR', - 'group': 'Run mode', - 'description': 'Gaudi output level, Pool output level'} -common['msgsvc-type'] = \ - {'short': 'T', - 'arg': True, - 'default': 'TrigMessageSvc', - 'group': 'Gaudi configuration', - 'description': 'Message service type'} -common['python-setup'] = \ - {'short': 'K', - 'arg': True, - 'default': '', - 'group': 'Gaudi configuration', - 'description': 'Python bootstrap/setup file for Steering Controller'} -common['joboptionsvc-type'] = \ - {'short': 'J', - 'arg': True, - 'default': 'JobOptionsSvc', - 'group': 'Gaudi configuration', - 'description': 'JobOptions service type'} -common['run-number'] = \ - {'short': 'R', - 'arg': True, - 'default': 0, - 'group': 'Run mode', - 'description': 'Defines the RunNumber to use for this run. If you do not set this value, it will be read from the first event of the first datafile you give me. If you run in interactive mode and supply a run number in the prepareForRun transition, it will overwrite this value permanently.'} -common['detector-mask'] = \ - {'short': '', - 'arg': True, - 'default': 0, - 'group': 'Run mode', - 'description': 'Defines the detector mask to use for this run. A value of 0 means that the detector mask should be picked up from COOL.'} -common['sor-time'] = \ - {'short': '', - 'arg': True, - 'default': None, - 'group': 'Run mode', - 'description': 'The Start Of Run time. Three formats are accepted: 1) the string "now", for current time; 2) the number of nanoseconds since epoch (e.g. 1386355338658000000 or int(time.time() * 1e9)); 3) the following human readable format (according to python\'s datetime directives): "%s". By default the sor-time is obtained from the Conditions DB. This happens also if the input evaluates to false or if it represents the date "1/1/70 1:0:0.0"', - 'format': '%d/%m/%y %H:%M:%S.%f'} -common['sor-time']['description'] %= common['sor-time']['format'] -common['sor-time']['parse'] = sor_as_nanos -common['event-modifier'] = \ - {'short': 'Z', - 'arg': True, - 'default': [], - 'group': 'Data', - 'description': 'If set, this should be a list of python modules containing at least one of the following functions: "modify" or "modify_general". The former takes exactly one argument: the event to be modified. The latter takes keyword arguments: currently, the event to be modified and the current configuration, under the keywords "event" and "configuration", respectively. Both functions must return, either a valid event, or something evaluating to False, to indicate that the event should be skipped. For each provided module, if it contains the function "modify_general", that function is called ("modify" is not called in this case, even in present). Otherwise, the function "modify" is called. If several modifiers are provided, they are called in sequence, until either one of them returns something that evaluates to False or until all of them have been processed.'} -common['max-result-size'] = \ - {'short': '', - 'arg': True, - 'default': -1, - 'group': 'Run mode', - 'description': 'Changes the maximum size of the HLTResult. The size is given in multiples of 32-bit words. A size of 1 means actually 4 bytes in this case. Any number smaller than zero will trigger the usage of the default buffer size, as defined in the hltinterface package.'} -common['leak-check-execute'] = \ - {'short': 'Q', - 'arg': False, - 'default': None, - 'group': 'Run mode', - 'description': 'Perform leak checking during execute. Equivalent to: --leak-check="execute".'} -checkallowed = ('all', 'initialize', 'start', 'beginrun', 'execute', 'finalize', - 'endrun', 'stop' ) -common['leak-check'] = \ - {'short': '', - 'arg': True, - 'default' : None, - 'group': 'Run mode', - 'description': 'Perform leak checking during the stage you specify %s. Syntax: --leak-check="<stage>" Example: --leak-check="all"' % str(checkallowed), - 'allowed': checkallowed} -common['delete-check'] = \ - {'short': '', - 'arg': True, - 'default' : None, - 'group': 'Run mode', - 'description': 'Perform double delete checking at the stage you specify %s. Syntax: --delete-check="<stage>" Example: --delete-check="all"' % str(checkallowed), - 'allowed': checkallowed} -common['perfmon'] = \ - {'short': 'H', - 'arg': False, - 'default': None, - 'group': 'Run mode', - 'description': 'Enables performance monitoring toolkit'} -debugallowed = ('configure', 'connect', 'prepareForRun', 'run', 'stop', - 'disconnect', 'unconfigure') -common['debug'] = \ - {'short': 'd', - 'arg': True, - 'default': '', - 'group': 'Run mode', - 'description': 'Attaches GDB just before the stage you specify %s.' % str(debugallowed), - 'allowed': debugallowed} -common['appmgrdll'] = \ - {'short': 'N', - 'arg': True, - 'default': '', - 'group': 'Gaudi configuration', - 'description': 'Sets the Application Manager DLL'} -common['appmgrfactory'] = \ - {'short': 'P', - 'arg': True, - 'default': '', - 'group': 'Gaudi configuration', - 'description': 'Sets the Application Manager factory'} -common['trace'] = \ - {'short': 'B', - 'arg': True, - 'default': '', - 'group': 'Run mode', - 'description': 'Also shows include files that match the given pattern'} -common['tcmalloc'] = \ - {'short': '', - 'arg': False, - 'default': None, - 'group': 'Run mode', - 'description': 'Use tcmalloc instead of stdcmalloc [DEFAULT].' - 'This option is incompatible with --leak-check, --leak-check-execute and --delete-check. '} -common['stdcmalloc'] = \ - {'short': '', - 'arg': False, - 'default': None, - 'group': 'Run mode', - 'description': 'Use stdcmalloc intead of tcmalloc.'} -common['imf'] = \ - {'short': '', - 'arg': False, - 'default': None, - 'group': 'Run mode', - 'description': "Use Intel's imf library, instead of stdcmath [DEFAULT]."} -common['stdcmath'] = \ - {'short': '', - 'arg': False, - 'default': None, - 'group': 'Run mode', - 'description': "Use stdcmath, instead of Intel's imf library."} -common['preloadlib'] = \ - {'short': '', - 'arg': True, - 'default': None, - 'group': 'Run mode', - 'description': 'Preload an arbitrary library, to be specified with an equals sign (e.g. --preloadlib=foobar.so).'} -common['no-ers-signal-handlers'] = \ - {'short': '', - 'arg': False, - 'default': None, - 'group': 'Run mode', - 'description': 'Do not use the ERS signal handlers.'} -common['muoncal-buffername'] = \ - {'short': '', - 'arg': True, - 'default': '', - 'group': 'Muon calibration', - 'description': 'Sets the name of the muon calibration buffer'} -common['muoncal-buffersize'] = \ - {'short': '', - 'arg': True, - 'default': '', - 'group': 'Muon calibration', - 'description': 'Sets the size of the muon calibration buffer'} -usedb_warn = 'This option can only be used together with --use-database.' -common['use-database'] = \ - {'short': 'b', - 'arg': False, - 'default': None, - 'group': 'Database', - 'description': 'Configure from the TriggerDB.'} -common['db-type'] = \ - {'short': 't', - 'arg': True, - 'default': None, - 'group': 'Database', - 'allowed': ['MySQL', 'Oracle', 'SQLite', 'Coral'], - 'description': 'Select the type of database to configure from. Allowed ' + - 'values are: ' # see below - } -common['db-type']['description'] += ( - ', '.join(['"%s"' % x for x in common['db-type']['allowed']]) + ". " + - usedb_warn - ) -common['db-server'] = \ - {'short': 'S', - 'arg': True, - 'default': None, - 'group': 'Database', - 'description': 'The meaning of this parameter depends on the value of db-type. When db-type is "Coral", db-server identifies an entry for DB lookup. Otherwise, it should contain the name of the server (e.g. "ATLAS_CONFIG"). ' + usedb_warn} -common['db-smkey'] = \ - {'short': 'X', - 'arg': True, - 'default': None, - 'group': 'Database', - 'description': 'The Super Master key to read from the trigger database. This should be a single positive integer. ' + usedb_warn} -common['db-hltpskey'] = \ - {'short': 'Y', - 'arg': True, - 'default': None, - 'group': 'Database', - 'description': 'The HLT PreScale key(s) to retrieve from the trigger database. This can be either a single positive integer, or a non-empty list of pairs of positive integers (e.g. [(1, 123), (100, 321)]). In the latter case, the list must be ordered by the first element of each pair, following a strict growing order. The first element of each pair represents a lumiblock number, while the second represents a prescale key. A prescale key specified by the second element of a pair is used for all the lumiblocks greater or equal to the lumiblock specified by the first element of the same pair and, if the pair is not the last on the list, less than lumiblock specified by the first element of the following pair. Therefore, in the example above the key 123 would be used for lumiblocks 1 to 99 (inclusive) and only for these ones; the key 321 would be used for all other lumiblocks (100 or greater). ' + usedb_warn} -common['db-extra'] = \ - {'short': 'E', - 'arg': True, - 'default': {}, - 'group': 'Database', - 'description': 'Dictionary of free key-value combinations. Each element whose key is "recognized" is extracted and treated individualy to make sure it reaches the software below by the proper means (through the corresponding individual ptree node). Other elements are passed below as "additionalConnectionParameters" (in the ptree node with that name). The "recognized" parameters are: "lvl1key", "schema" (corresponding to TriggerDBConnection.Name (e.g. "ATLAS_CONF_TRIGGER_V2")), "user", "password". The remaining parameters include "retrialperiod", and "maxretrials". ' + usedb_warn} - - - -# Options that deal with file input -fileinput = {} -fileinput['file'] = {'short': 'f', 'arg': True, 'default': [], - 'group': 'Data', - 'description': 'The input data-file, or a python list thereof. Multiple files can only be specified with --oh-monitoring, because the implicit stop/start transitions at file boundaries are not supported by the default (offline) histogramming service.'} -fileinput['interactive'] = {'short': 'i', 'arg': False, 'default': None, - 'description': 'Switches on interactive mode, so you can control the state transitions manually. This option can only be used together with --oh-monitoring, because the default (offline) histogramming service does not support arbitrary state transitions.', - 'group': 'Run mode'} - -# Options that deal with emon input -emoninput = {} # empty for now - -# constants (only common_constants for now) -common_constants = {'ohserver': 'HLT-Histogramming', - 'rootprovider': "athenaHLT", - 'oh_numslots': 5} - -# helper procedure to get the available short options -def __short_avail(): - from string import lowercase as lw, uppercase as up - - all_short = set(lw + up) - reserved_short = set(['h', 'D', 'F']) - used_short = set([v['short'] for v in (fileinput.values() + - emoninput.values()) + - common.values()]) - return all_short - used_short - reserved_short - -if __name__ == '__main__': - print ("(No tests in this file. All option tests are in option.py. Running " - "this file prints the available letters for athenaHLT options)") - print - print "Available letters for options are:", - print ''.join(sorted(__short_avail())) diff --git a/HLT/HLTTestApps/python/HLTTestApps/pausable_istream.py b/HLT/HLTTestApps/python/HLTTestApps/pausable_istream.py deleted file mode 100644 index 4f9f8116d7c..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/pausable_istream.py +++ /dev/null @@ -1,345 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# Ricardo Abreu <ricardo.abreu@cern.ch> -import eformat -from eformat import EventStorage -from libpyeformat import FullEventFragment, convert_old -import libpyeformat_helper as helper -import logging - - -class PauseIterationException(Exception): pass - -class pausable_istream(eformat.istream): - """ An istream that can only be used sequentially and that raises a - PauseIterationException whenever it gets to a new event file with a - different run number, so that prepareForRun can be executed again and things - are consistent with the new run. - - This class doesn't allow random access, that is, it doesn't provide events - by their index. Therefore, __getitem__ raises NotImplementedError - - Additionally, some metadata of the file currently being read can be obtained - with the methods current_run_number and current_detector_mask - """ - - def __init__(self,l): - """ Constructor. It takes a list of file names. This list should have at - least one element. - """ - eformat.istream.__init__(self, l) - if len(self.filelist) > 1: self.multiple_files = True - else: self.multiple_files = False - self.f = 0 - self.i = 0 - self.dr = EventStorage.pickDataReader(self.filelist[self.f]) - import sys, os - self.app_name = os.path.basename(sys.argv[0]).split('.')[0] - - def __getitem__(self, key): - """ Not implemented. Random access not allowed. - """ - raise NotImplementedError, 'Random access to a pausable_istream is not'\ - ' allowed.' - - def __iter__(self): - return self._iterator(self, False) - - def iter_raw(self): - """ Obtain an iterator that returns raw items - """ - return self._iterator(self, True) - - def _updateDataReader(self): - self._updatef() - self.i = 0 - oldrn = self.dr.runNumber() - self.dr = EventStorage.pickDataReader(self.filelist[self.f]) - if oldrn != self.dr.runNumber(): - raise PauseIterationException, 'need to prepare for run again' - - def _updatef(self): - self.f += 1 - - def rewind(self): - """Rewind to the first event in the first file""" - self.i = 0 - self.f = 0 - self.dr = EventStorage.pickDataReader(self.filelist[self.f]) - - def current_filename(self): - """ Obtain the file name of the current file""" - return self.dr.fileName() - - def current_run_number(self): - """ Obtain the run number that is present in the metadata of the file - that contains that last event returned (or the first, in case no event - was read yet) - """ - return self.dr.runNumber() - - def current_detector_mask(self): - """ Obtain the detector mask that is present in the metadata of the - current file being read. The current file is considered to be: - 1 - if no event was read or if the event returned most recently was the - last in the last file -> the first file - 2 - if the last attempt to read an event from file n raised a - PauseIterationException -> the file n+1 - 3 - if none of the previous cases -> the file of the last event returned - """ - return self.dr.detectorMask() - - def datawriter(self, directory, core_name, compression=0): - """ Creates and returns a new eformat.ostream with the same meta data of - the current input stream, but using the directory and core_name as given. - """ - - compargs = {} - if compression in range(1,6): - compargs['compression'] = EventStorage.CompressionType.ZLIB - compargs['complevel'] = compression - - return eformat.ostream(directory, core_name, self.dr.runNumber(), - self.dr.triggerType(), self.dr.detectorMask(), - self.dr.beamType(), self.dr.beamEnergy(), - **compargs) - - class _iterator: - def __init__(self, stream, raw): - self.stream = stream - self.raw = raw - def __iter__(self): - return self - def next(self): - if self.stream.i < self.stream.dr.eventsInFile(): - self.stream.i += 1 - blob = self.stream.dr.getData() - if self.raw: - return blob - else: - return self.check_version(blob) - else: - try: - self.stream._updateDataReader() - return self.next() - except IndexError: - self.stream.f = -1 - try: - self.stream._updateDataReader() - except PauseIterationException: - pass # we actually need to stop - raise StopIteration - def check_version(self, blob): - # check for people trying old versions and convert it on the spot - fragment_version = helper.Version(blob[3]) - if fragment_version.major_version() != helper.MAJOR_DEFAULT_VERSION: - current_version = helper.Version() - logging.debug("Converting from version %s to %s" % \ - (fragment_version.human_major(), - current_version.human_major())) - blob = convert_old(blob) - - if blob[0] == helper.HeaderMarker.FULL_EVENT: - return FullEventFragment(blob) - else: - raise SyntaxError, ("Expecting event marker, not 0x%08x" % - blob[0]) - - -################################################################################ -# Tests # -################################################################################ - -import unittest, string, random, glob, os - -class dif_pausable_istream_tests(unittest.TestCase): - def setUp(self): - self.stream = pausable_istream(datafiles) - - def testCycle(self): - for i in range(2): - self.aux_testCycle() - self.assertEquals(self.stream.i, 0) - self.assertEquals(self.stream.f, 0) - - def testRewindInFirstFile(self): - self._testRewind(50) # files have 100 and 99 events respectively - - def testRewindInSecondFile(self): - self._testRewind(150) # files have 100 and 99 events respectively - - def testRewindAfterCycle(self): - self._testRewind(250) # files have 100 and 99 events respectively - - def aux_testCycle(self): - try: - for e in self.stream: - pass - except PauseIterationException: - pass - - def _testRewind(self, n): - # advance n events - evs1 = self._extract_first_n_events(n) - - # now rewind and check we really are at the beginning - self.stream.rewind() - self.assertEquals(self.stream.i, 0) - self.assertEquals(self.stream.f, 0) - self.assertEquals(self.stream.dr.fileName(), self.stream.filelist[self.stream.f]) - - #repeat and confirm we get the same events as before - evs2 = self._extract_first_n_events(n) - self.assertEquals(evs1, evs2) - - def _extract_first_n_events(self, n): - evs = [] - while True: - try: - for e in self.stream: - evs.append(e) - if len(evs) == n: - return evs - except PauseIterationException: - pass - -class fixed_pausable_istream_tests(unittest.TestCase): - def setUp(self): - self.f = datafiles[0] - self.rnum = 177531 - self.numev = 100 - self.stream = pausable_istream([self.f] * 2) - def test_run_number(self): - self.assertEquals(self.stream.current_run_number(), self.rnum) - def test_run_number_event(self): - self.assertEquals(self.stream.__iter__().next().run_no(), self.rnum) - def test_run_number_events(self): - rn = self.stream.__iter__().next().run_no() - for e in self.stream: - if self.stream.i == self.numev: - break - self.assertEquals(e.run_no(), rn) - def test_detector_mask(self): - dm = self.stream.current_detector_mask() - self.assert_(dm > 0 and dm < 0xffffffffffffffffffffffffffffffffL) - def testIter(self): - for e in self.stream: - if self.stream.i == self.numev: - break # we get out when the first file was processed - self.stream.__iter__().next() - self.assertEquals(self.stream.i, 1) - self.assertEquals(self.stream.f, 1) - for e in self.stream: - if self.stream.i == self.numev: - break # we get out again - end of second file - self.assertRaises(StopIteration, self.stream.__iter__().next) - def testCycle(self): - try: - for e in self.stream: - pass - except PauseIterationException: - for e in self.stream: - pass - for e in self.stream: - if self.stream.i == self.numev and self.stream.f == 1: - break - self.assertRaises(StopIteration, self.stream.__iter__().next) - -class some_pausable_istream_tests(unittest.TestCase): - def setUp(self): - self.stream = pausable_istream(datafiles) - def testIterSimple(self): - try: - for e in self.stream: - pass - except PauseIterationException: - pass - self.assertEquals(self.stream.i, 0) - def testIter(self): - self.auxTestIter() - self.assertEquals(self.stream.f, 0) - self.assertEquals(self.stream.i, 0) - def testCycle(self): - self.auxTestIter() - self.auxTestIter() - self.assertEquals(self.stream.f, 0) - self.assertEquals(self.stream.i, 0) - - def testRandomAccess(self): - self.assertRaises(NotImplementedError, lambda: self.stream[0]) - def auxTestIter(self): - try: - for e in self.stream: - pass - except PauseIterationException: - self.auxTestIter() - -class pausable_istream_files_tests(unittest.TestCase): - def setUp(self): - self.tmpdir = "/tmp" - self.tmpbasefilename = "tmpoutfile_athenaHLT_pausable_istream_test_" - self.stream = pausable_istream(datafiles) - def tearDown(self): - for f in glob.glob("%s/%s*" % (self.tmpdir, self.tmpbasefilename)): - os.remove(f) - def test_advance_file_once(self): - self._test_advance_file_multiple(1) - def test_advance_file_twice(self): - self._test_advance_file_multiple(2) - def test_advance_file_thrice(self): - self._test_advance_file_multiple(3) - def test_advance_file_5times(self): - self._test_advance_file_multiple(5) - def test_data_writer_config_plain_fst(self): - self._test_advance_data_writer_config_plain(0) - def test_data_writer_config_plain_snd(self): - self._test_advance_data_writer_config_plain(1) - def test_data_writer_config_plain_trd(self): - self._test_advance_data_writer_config_plain(2) - def _advance_file(self): - try: - self.stream._updateDataReader() - except PauseIterationException: - pass - except IndexError: - self.stream.f = -1 - try: - self.stream._updateDataReader() - except PauseIterationException: - pass - def _test_advance_file_multiple(self, n): - oldf = self.stream.f - for _ in range(n): - self._advance_file() - numf = len(self.stream.filelist) - expect = (n + oldf) % numf - self.assertEqual(self.stream.f, expect, - "Got unexpected file index %d after advancing %d times on " - "a stream with original file index %d and a total of %d " - "files (expected to end with file index %d)" - % (self.stream.f, n, oldf, numf, expect)) - def _test_data_writer_config_plain(self): - outf = EventStorage.pickDataReader(self._create_unique_outfile()) - for item in ["runNumber", "triggerType", "detectorMask", "beamType", - "beamEnergy"]: - r, w = getattr(self.stream.dr, item)(), getattr(outf, item)() - self.assertEqual(r, w, "%s different in input (%s) and output (%s) " - "streams" % (item, str(r), str(w))) - def _test_advance_data_writer_config_plain(self, findex): - for _ in range(findex): - self._advance_file() - self._test_data_writer_config_plain() - def _create_unique_outfile(self): - ost = self.stream.datawriter(self.tmpdir, self._unique_filename(), 0) - # get the final file name (ostream adds stuff to the name) - ret = ost.last_filename() # current_filename would give the ".writable" name - ost.writer.closeFile() - del ost - return ret - def _unique_filename(self): - return self.tmpbasefilename + ''.join([random.choice(string.ascii_letters) - for _ in range(8)]) - -if __name__ == '__main__': - from HLTTestApps import test_main - test_main() diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/__init__.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/__init__.py deleted file mode 100644 index 563666836a7..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/plugins/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# author Ricardo Abreu <ricardo.abreu@cern.ch> - -def get_robhit(): - try: - from robhit import robhit - except ImportError, e: - mesg = ('For this event modification plugin, you have to have a "robhit" ' - 'module on your PYTHONPATH. A second option is to copy this module ' - 'and manually overwrite the ROB hit list import: %s' % e) - raise ImportError, mesg - return robhit \ No newline at end of file diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/fill_empty.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/fill_empty.py deleted file mode 100644 index dd7d531d0a5..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/plugins/fill_empty.py +++ /dev/null @@ -1,71 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# author Andre Anjos <andre.dos.anjos@cern.ch> -# author Ricardo Abreu <ricardo.abreu@cern.ch> - -"""Fills ROBs which are considered empty by a list -""" - -import eformat -import logging - -from HLTTestApps.plugins import get_robhit -robhit = get_robhit() - -def fill_empty(event, roblist, bitset=30): - """Fills-in missing ROB fragments in the event, according to a hit list. - - This method will fill in the event object with missing ROBs so that the - hit list defined by the second parameter gets completely satisfied. In each - newly created ROB, the status bit indicated by the "bitset" parameter will be - set. These are the ones which are currently in use for tdaq-01-08-00: - - bit | Meaning - ----+----------> - 30 | Pending: the ROBIN did not have a fragment for the requested L1ID but - | this fragment may still arrive. It therefore generated an empty - | fragment (this is the default) - | - 29 | Lost: the ROBIN did not have a fragment for the requested L1ID. It - | therefore generated an empty fragment - - ROBs which do not exist in the hit list they will also be removed and not - served via the data collector. - - More up-to-date information can be found here: - https://twiki.cern.ch/twiki/bin/view/Atlas/ROBINFragmentErrors - """ - - logging.info('Filling empty ROBs in event %d' % event.lvl1_id()) - - # now we rebuild the event with what is left. - newevent = eformat.write.FullEventFragment(event) - gen_robs = list(roblist) # deep copy so we don't change the input - - rob_model = None - for rob in newevent: - rob_model = rob - if rob.source_id().code() in gen_robs: - del gen_robs[gen_robs.index(rob.source_id().code())] - - for rob_id in gen_robs: - logging.info('Instantiating empty ROB for fragment %s' % \ - eformat.helper.SourceIdentifier(rob_id)) - newrob = eformat.write.ROBFragment() - newrob.copy_header(rob_model) - newrob.minor_version(0) - newrob.rod_minor_version(0) - rob_source = eformat.helper.SourceIdentifier(rob_id) - newrob.source_id(rob_source) - specific = 0x1 << (bitset - 16) - status = eformat.helper.Status(eformat.helper.GenericStatus.DATA_CORRUPTION, specific) - newrob.status([status.code()]) - newevent.append(newrob) - - logging.info('Instantiated %d empty ROBs in event %d' % (len(gen_robs), \ - event.lvl1_id())) - - return newevent.readonly() - -def modify(event): - return fill_empty(event, robhit) diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/print_event_header.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/print_event_header.py deleted file mode 100644 index 261b0490dbe..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/plugins/print_event_header.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# author Ricardo Abreu <ricardo.abreu@cern.ch - -"""Prints the event header and returns the event untouched""" - -import eformat.dump as edump - -def modify(event): - print 'Event Header:' - print edump.fullevent_handler(event) - return event # no changes required \ No newline at end of file diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/remove_nonlisted.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/remove_nonlisted.py deleted file mode 100644 index bb789b3c1d9..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/plugins/remove_nonlisted.py +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# author Andre Anjos <andre.dos.anjos@cern.ch> -# author Werner Wiedenmann <werner.wiedenmann@cern.ch> -# author Ricardo Abreu <ricardo.abreu@cern.ch> - -"""Removes ROBs from the event, which are not listed in the ROB hit list. -""" - -import eformat -import logging - -from HLTTestApps.plugins import get_robhit -robhit = get_robhit() - -def cleanup(event, roblist): - """Removes ROBs in the event which are not in the hitlist you specify - """ - - newevent = eformat.write.FullEventFragment() - newevent.copy_header(event) - for rob in event: - if rob.source_id().code() not in roblist: - logging.info('Removing ROB %s from event %d (not at hit list)' % \ - (rob.source_id(), event.lvl1_id())) - continue - else: - newrob = eformat.write.ROBFragment(rob) - newevent.append(newrob) - - # return modified event - # --------------------- - return newevent.readonly() - -def modify(event): - return cleanup(event, robhit) diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/truncate.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/truncate.py deleted file mode 100644 index 0cae05fdd01..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/plugins/truncate.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -# author Andre Anjos <andre.dos.anjos@cern.ch> -# author Werner Wiedenmann <werner.wiedenmann@cern.ch> -# author Ricardo Abreu <ricardo.abreu@cern.ch> - -"""Truncates a few of the ROBs in the input event according to a hit list. -""" - -import eformat -import logging - -from HLTTestApps.plugins import get_robhit -robhit = get_robhit() - -def truncate(event, roblist, ratio=0.5): - """Truncates the robs in the list you pass by the amount you choose. - """ - if ratio >= 1.0: return event - if ratio <= 0: return event - - logging.info('Truncating (at most) %d ROBs in event %d' % (len(roblist), - event.lvl1_id())) - newevent = eformat.write.FullEventFragment(event) - for rob in newevent: - if rob.source_id().code() in roblist: - newdata = list(rob.rod_data()) - point = -1*int(len(newdata) * ratio) - specific = 0x1 << (27 - 16) # this bit means truncation - status = eformat.helper.Status(eformat.helper.GenericStatus.DATA_CORRUPTION, specific) - rob.rod_data(newdata[:point]) - rob.status([status.code()]) - - return newevent.readonly() - -def modify(event): - return truncate(event, robhit) diff --git a/HLT/HLTTestApps/python/HLTTestApps/processor.py b/HLT/HLTTestApps/python/HLTTestApps/processor.py deleted file mode 100644 index 161722508ae..00000000000 --- a/HLT/HLTTestApps/python/HLTTestApps/processor.py +++ /dev/null @@ -1,610 +0,0 @@ -#!/usr/bin/env python - -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -# vim: set fileencoding=utf-8 : -# Created by Andre Anjos <andre.dos.anjos@cern.ch> -# Wed 05 Mar 2008 02:13:05 PM CET - -from libpyhlttestapps import HLTInterface, TimeoutGuard, ptree -import time, os -import logging -import HLTTestApps -from infrastructure import build_infrastructure -from pausable_istream import PauseIterationException - -def going_up(transition): - return transition in ['configure','connect','prepareForRun','prepareWorker'] - -def keep_processing(config, processed, total, skipped): - """Determines if we should continue processing events or not.""" - if config < 0: - return processed + skipped < total - else: - return processed < config - -def log_processed(skipped, processed): - logging.info('Skipped %d events at the beginning' % skipped) - logging.info('Processed %d events' % processed) - -class FSMTransitionError(RuntimeError): pass - -class Processor: - """Defines a "pythonic" version of the hltinterface""" - - def __init__(self, config): - """Wrapper for HLTInterface. """ - - self.config = config - - # Need to load libPyROOT before TrigServices (see Savannah #82614) - import cppyy - - logging.debug1('Loading libraries %s' % ', '.join(self.libraries)) - - self.state = 'UNKNOWN' - self.impl = HLTInterface(self.libraries) - self.watchdog = TimeoutGuard(config['timeout']['timeout'], - config['timeout']['warn_fraction'], - self.impl) - self.state = 'LOADED' - self.fatal = None - self.infrastructure = build_infrastructure(config) - - # for easiness sake - self.stream = config.stream - self.debug_stage = config['debug'] - self.datawriter = None - - logging.info('Current HLT processor state is "%s"' % (self.state,)) - - def __del__(self): - if 'infrastructure' in self.__dict__: - del self.infrastructure - - def __getattr__(self, attr): - try: - return self.config[attr] - except KeyError: - if attr[0] != '_': - uattr = attr.replace('_', '-') - try: - return self.config[uattr] - except KeyError: - pass - raise AttributeError, ("%s instance has no attribute '%s'" - % (self.__class__.__name__, attr)) - - def go(self): - if self.interactive: - self.interact() - else: - self.configure() - self.connect() - self.prepareForRun() - self.run() - self.stopRun() - self.disconnect() - self.unconfigure() - - def configure(self): - return self._transit('LOADED', 'configure', 'CONFIGURED', - self.config.get_config_ptree()) - - def connect(self): - return self._transit('CONFIGURED', 'connect', 'CONNECTED', - self.config.get_connect_ptree()) - - def prepareForRun(self, run_number=-1): - if self.rewind: - self.stream.rewind() - - # we overwrite the run_number we already had only if it was specified as - # in this latest prepareForRun - run_number = int(run_number) - if run_number >= 0: - self.config['run-number'] = run_number - - return (self._transit('CONNECTED', 'prepareForRun', '_INTERNAL_', - self.config.get_prepare_ptree()) and - self._transit('_INTERNAL_', 'prepareWorker', 'PREPARED', - self.config.get_prepareWorker_ptree())) - - def stopRun(self): - return self._transit('PREPARED', 'stopRun', 'CONNECTED', - self.config.get_stopRun_ptree()) - - def disconnect(self): - return self._transit('CONNECTED', 'disconnect', 'CONFIGURED', - self.config.get_disconnect_ptree()) - - def unconfigure(self): - return (self._transit('CONFIGURED', 'finalizeWorker', '_INTERNAL_', - self.config.get_finalizeWorker_ptree()) and - self._transit('_INTERNAL_', 'unconfigure', 'LOADED', - self.config.get_unconfigure_ptree())) - - def process(self, event): - self._check_fatal() # check whether the processor is in a fatal state - if self.max_result_size > 0: - return self.impl.process(event, self.watchdog, self.max_result_size) - else: - # use the default size set in src/util.h - return self.impl.process(event, self.watchdog) - - def tearDown(self): - """ - Brings the processor to the initial state (LOADED), whatever the current - state - """ - for move in self.stopRun, self.disconnect, self.unconfigure: - try: move() - except: pass - - def run(self): - self._try_debug('run') - self._transit_infrastructure('run') - logging.info('Running HLT') - skipped, processed = 0, 0 - total = len(self.stream) - - self._try_save_output() - - try: - while keep_processing(self.number_of_events,processed,total,skipped): - try: - skipped, processed = self._run_aux(skipped, processed, total) - except PauseIterationException, upd_proc: # we can still update - skipped, processed = upd_proc.args # skipped and processed - self.stopRun() - self.prepareForRun(self.stream.current_run_number()) - self._try_save_output() - - except KeyboardInterrupt, upd_proc: # we can still update processed - skipped, processed = upd_proc.args - logging.error("Keyboard interruption caught! Aborting event " - "processing.") - log_processed(skipped, processed) - raise - - logging.info("Event processing finished successfully.") - log_processed(skipped, processed) - from HLTTestApps import print_ros_hit_map - print_ros_hit_map(processed) - logging.info('Current state is "%s"' % self.state) - - def _run_aux(self, skipped, processed, total): - try: - for event in self.stream: - if skipped < self.skip_events: - logging.info("Skipping event %d" % skipped) - skipped += 1 - if keep_processing(self.number_of_events, processed, total, skipped): - continue - else: - break - - event.check() - - # update number of events read - processed += 1 - - # modify the event if the user has requested. - for k in self.config.event_modifiers: - if event: - logging.debug1('---> Applying plugin %s <' % k.__module__) - event = k(event) - logging.debug1('---> Finished applying plugin %s <' % k.__module__) - else: - break - - if not event: - if keep_processing(self.number_of_events, processed, total, skipped): - continue - else: - break - - logging.debug1('Processing event %d' % (event.lvl1_id())) - # this will trigger the HLT processing - processed_event = self.process(event) - - if self.datawriter: - if processed_event: - self.datawriter.write(processed_event) - else: - logging.debug1('Event %d was REJECTED, not saved' % event.lvl1_id()) - if not keep_processing(self.number_of_events, processed, total, skipped): - break - except PauseIterationException: - raise PauseIterationException, (skipped, processed) # update these - except KeyboardInterrupt: - raise KeyboardInterrupt, (skipped, processed) # we can still update these - return skipped, processed - - def interact(self): - """This will make the processor work in interactive mode""" - order = ['configure', 'connect', 'prepareForRun', 'start', - 'stopRun', 'disconnect', 'unconfigure'] - motions = {} - motions['LOADED'] = {'f': Processor.configure, - 'b': None} - motions['CONFIGURED'] = {'f': Processor.connect, - 'b': Processor.unconfigure} - motions['CONNECTED'] = {'f': Processor.prepareForRun, - 'b': Processor.disconnect} - motions['PREPARED'] = {'f': Processor.run, - 'b': Processor.stopRun} - - while True: - prompt = ("State is '%s' (<f>orward, <b>ackward, " - "<p>rompt, e<x>ec, <h>elp, <#>comment, <e>xit)?\n") - action = raw_input(prompt % self.state).strip() - action = action.split(' ', 1) - - if not action[0]: continue - if action[0][0] not in ('f', 'b', 'e', 'p', 'x', '#', 'h'): - logging.warning('Invalid command => `%s\'' % action[0][0]) - - elif action[0][0] == 'h': - logging.info('Valid commands are:') - logging.info('\t<f>: move forward to the next state in chain') - logging.info('\t<b>: move backward to the previous state in chain') - logging.info('\t<e>: exit the program') - logging.info('\t<x>: execute file with python commands') - logging.info('\t<#>: ignore this line') - logging.info('\t<h>: print this help message') - logging.info('Assumed State Transition chain order is: %s' % \ - ', '.join(order)) - - elif action[0] == 'e': return - elif action[0] == 'p': - - # Prepare for interative prompt (from athena.py) - logging.info('Interactive mode: Use Ctrl-D to resume') - - # readline support - import os, sys, atexit, readline, rlcompleter - - readline.parse_and_bind( 'tab: complete' ) - readline.parse_and_bind( 'set show-all-if-ambiguous On' ) - - # history support - fhistory = os.path.expanduser( '~/.athena.history' ) - if os.path.exists( fhistory ): - readline.read_history_file( fhistory ) - readline.set_history_length( 1024 ) - atexit.register( readline.write_history_file, fhistory ) - - del atexit, readline, rlcompleter - - # use of shell escapes in interactive mode - import AthenaCommon.ShellEscapes as ShellEscapes - sys.excepthook = ShellEscapes.ShellEscapes() - del ShellEscapes - - # Ready to drop into the interactive prompt - HLTTestApps.python_prompt(); - - elif action[0] == 'x': - try: - HLTTestApps.python_exec(' '.join(action[1:])) - except Exception, e: - logging.warning('Error executing command: `%s\'' % ' '.join(action[1:])) - - elif action[0][0] == '#': - continue - - else: - # try move - if motions[self.state][action[0][0]]: - param = (self, action[1]) if len(action) == 2 else (self,) - motions[self.state][action[0][0]](*param) - else: - act = 'backward' if action[0][0] == 'b' else 'forward' - logging.warning('Moving %s is not allowed from state %s.' % - (act, self.state)) - - def _try_save_output(self): - if self.config.do_save_output(): - dir, fncore = self.config.parsed_out_data_filename() - self.datawriter = self.stream.datawriter(dir,fncore,self.use_compression) - else: - self.datawriter = None - - def _try_debug(self, stage): - if not self.interactive and self.debug_stage == stage: - HLTTestApps.hook_debugger() - - def _check_fatal(self): - """ - Check whether the process is in a fatal state and, if so, raise the - corresponding exception - """ - if self.fatal: - raise self.fatal - - def _transit(self, pre, trans, post, args): - """ - Execute the transition with name trans to get from the state pre to the - state post. - """ - self._try_debug(trans) - - self._check_fatal() ## check whether the processor is in a fatal state - - logging.debug1('Asked to change state to "%s" from "%s" using trans "%s()"' - % (post, self.state, trans)) - - retval = False - if self.state == pre: - - if going_up(trans): # transit infrastructure first - self._transit_infrastructure(trans) - - logging.info("Processor is going to %s" % trans) - start = time.time() - retval = getattr(self.impl, trans)(args) - total = time.time() - start - - if not going_up(trans): # transit infrastructure last - self._transit_infrastructure(trans) - - if retval: - self.state = post - else: - raise FSMTransitionError, 'Could not execute %s() ' % (trans) - logging.info('Current state is "%s" (%s() took %.2f s)' % (self.state, - trans, total)) - else: - raise FSMTransitionError, 'Cannot %s() when state is %s' % (trans, - self.state) - - self._check_fatal() # we check it again because otherwise the main flow of - # execution would only get a chance to exit on the next - # state transition attempt - return retval - - def _transit_infrastructure(self, trans): - if getattr(self.infrastructure, trans)(): - logging.debug1('Successfully executed transition "%s" on %s' - % (trans, self.infrastructure.NAME)) - else: - logging.warning('Transition "%s" unsuccessful on %s. Trying to continue.' - % (trans, self.infrastructure.NAME)) - - -################################################################################ -# Tests # -################################################################################ - -import unittest, string, random, glob, os, re -from pausable_istream import pausable_istream -from infrastructure import infrastructure as dummy_infrastructure -from configuration import configuration, run_number_error, dummy_configuration -from option import file_opt_spec - -class dummy_processor(Processor): - def __init__(self, input_stream, run_number = 0): - self.infrastructure = dummy_infrastructure(None) - self.stream = input_stream - self.run_number = run_number - self.rewind = False - self.ostream = None - self.save_output = '' - self.state = 'LOADED' - self.event_modifier = [] - self.interactive = False - self.debug_stage = None - self.skip_events = 0 - self._add_config_specific_stuff() - def _add_config_specific_stuff(self): - self.config = dummy_configuration() - self.config.event_modifiers = [] - self.config.do_save_output = lambda: False - def _check_fatal(self): - pass - def prepareForRun(self): - runn = (self.run_number if self.run_number != 0 - else self.stream.current_run_number()) - logging.info('Setting run number to %d' % runn) - self._transit('CONNECTED', 'prepareForRun', 'PREPARED', []) - def _transit(self, condition, method, post, *args): - logging.info('dummy transition: %s' % method) - self.state = post - def process(self, event): - pass - -class pausable_istream_tests(unittest.TestCase): - def setUp(self): - self.stream = pausable_istream(filelist) - self.processor = dummy_processor(self.stream) - logging.getLogger().setLevel(logging.INFO) - def test_run_one(self): - self.aux_test_run_n(1) - def test_run_all(self): - self.aux_test_run_n(0) - def test_run_50(self): - self.aux_test_run_n(50) - def test_run_100(self): - self.aux_test_run_n(100) - def test_run_101(self): - self.aux_test_run_n(101) - def test_run_200(self): - self.aux_test_run_n(200) - def test_run_399(self): - self.aux_test_run_n(399) - def test_run_400(self): - self.aux_test_run_n(400) - def test_run_798(self): - self.aux_test_run_n(798) - def aux_test_run_n(self, n): - logging.info('running through %s event(s)', 'all' if n < 0 else n) - self.processor.number_of_events = n - self.processor.run() - -class dummy_stream: - def current_run_number(self): - return 0 - -class processor_tests(unittest.TestCase): - jops = 'TrigExMTHelloWorld/MTHelloWorldOptions.py' - def setUp(self): - self._setup_cli_args() - self._init_proc() - def tearDown(self): - self.processor.tearDown() - self._assertState('LOADED') - def test_run_number_required(self): - self.processor.config['run-number'] = 0 - self.processor.config.stream = dummy_stream() - self.assertRaises(run_number_error, self.processor.prepareForRun, "0") - def testStopStart(self): - self._test_init() - self._test_configure() - self._test_connect() - self._test_prepare("177531") - self._test_run() - self.processor.stopRun() - self._test_prepare("105200") - self._test_run() - def _setup_cli_args(self): - self.cli_args = ["-n", '10'] + self._typical_cli_args() - def _typical_cli_args(self): - return ["-f", repr(filelist), '-M', self.jops] - def _assertState(self, state): - self.assertEquals(self.processor.state, state) - def _init_proc(self): - self.processor = Processor(configuration(file_opt_spec, self.cli_args)) - def _test_init(self): - self._assertState('LOADED') - def _test_configure(self): - self.processor.configure() - self._assertState('CONFIGURED') - def _test_connect(self): - self.processor.connect() - self._assertState('CONNECTED') - def _test_prepare(self, run_number=-1): - self.processor.prepareForRun(run_number) - self._assertState('PREPARED') - def _test_run(self): - self.processor.run() - self._assertState('PREPARED') - -class datawriter_plain_processor_tests(processor_tests): - def setUp(self): - self.tmpdir = "/tmp" - self.tmpbasefilename = "tmpoutfile_athenaHLT_processor_test_" - self.fname = self._unique_filename() - super(datawriter_plain_processor_tests, self).setUp() - def tearDown(self): - super(datawriter_plain_processor_tests, self).tearDown() - for f in glob.glob("%s/%s*" % (self.tmpdir, self.tmpbasefilename)): - os.remove(f) - def test_save_output_attr(self): - regexp = "^%s/%s[a-zA-Z]*$" % (self.tmpdir, self.tmpbasefilename) - self.assertRegexpMatches(self.processor.save_output, regexp) - def test_save_output(self): - # test we get the expected output files after running - self._test_init() - self._test_configure() - self._test_connect() - self._test_prepare() - self._test_run() - self.processor.tearDown() - fre = "%s*" % self.fname - noutfiles = len(glob.glob(fre)) - self.assertEqual(noutfiles, 2, - "Expected to find 2 files matching '%s' but found %d" - % (fre, noutfiles)) - def _setup_cli_args(self): - self.cli_args = (["-o", self.fname, - "-C", "HltEventLoopMgr.ForceHltAccept=True", # accept&save - "-k", "295", "-n", "10"] # to move through all files - + self._typical_cli_args()) - def _unique_filename(self): - return "%s/%s%s" % (self.tmpdir, self.tmpbasefilename, - ''.join([random.choice(string.ascii_letters) - for _ in range(8)])) - -class datawriter_conventional_processor_tests(processor_tests): - def setUp(self): - self.tmpdir = "/tmp" - self.tmpbasefilename = "tmpprojtag_processor_test" - super(datawriter_conventional_processor_tests, self).setUp() - def tearDown(self): - super(datawriter_conventional_processor_tests, self).tearDown() - for f in glob.glob("%s/%s*" % (self.tmpdir, self.tmpbasefilename)): - os.remove(f) - def _setup_cli_args(self): - self.cli_args = (["-O", ("{'dir': '%s', 'ProjectTag': '%s'}" - % (self.tmpdir, self.tmpbasefilename)), - "-C", "HltEventLoopMgr.ForceHltAccept=True", # accept&save - "-k", "140", "-n", "20", # to move through both files - "-f", repr(extra_datafiles), '-M', self.jops]) - def test_save_output_conventional(self): - # test we get the expected output files after running - self._test_init() - self._test_configure() - self._test_connect() - self._test_prepare() - self._test_run() - self.processor.tearDown() - # build expected substrings - # we discard whatever comes before the first 8 digit sequence (run number) - # and everything after the lumiblock (_lb followed by 4 digits) - rexp = r"\d{8}.+_lb\d{4}" - expect_sub1 = re.search(rexp, os.path.basename(extra_datafiles[0])).group() - expect_sub2 = re.search(rexp, os.path.basename(extra_datafiles[1])).group() - # find actual filenames - actual_files = glob.glob("%s/%s*" % (self.tmpdir, self.tmpbasefilename)) - self.assertEquals(len(actual_files), 2, "Expected to find 2 output files, " - "but found %d" % len(actual_files)) - for f in actual_files: - self.assert_(expect_sub1 in f or expect_sub2 in f, - "Found file '%s' which does not contain any of the expected " - "substrings ('%s' and '%s')" % (f, expect_sub1, expect_sub2)) - - -def _test_in_subprocesss(test, headmsg, spanwmsg): - # announce spawning clearly - print ("\n%s\n%s %s\n%s %s\n%s\n" % (headmsg, headmsg, spawnmsg, headmsg, - test, headmsg)) - p = Process(target=test_main, args=([test],)) - try: # spawn, run, join, etc. - p.start(); p.join() - except KeyboardInterrupt: - # unittest messes with Ctrl-C and we don't want child to go on alone - while p.is_alive(): - try: - print '\nExplicitly terminating child\n' - p.terminate(); p.join() - except KeyboardInterrupt: - pass - # If this test failed, exit already (otherwise go on) - if p.exitcode: - print "%s Test(s) failed in child process" % headmsg - sys.exit(p.exitcode) - - -if __name__ == '__main__': - import sys - from multiprocessing import Process - from HLTTestApps import test_main - # we want to execute these test sets in separate processes, to ensure a clean - # athena/gaudi slate (otherwise things fail the second time around) - separate_tests = ('pausable_istream_tests', - 'processor_tests', - 'datawriter_plain_processor_tests.test_save_output_attr', - 'datawriter_plain_processor_tests.test_save_output', - 'datawriter_conventional_processor_tests.' # no comma - + 'test_save_output_conventional') # explicit same string - - spawnmsg = ("Spawning process for the test(s) below (to ensure a clean " - "athena/gaudi slate):") - headmsg = "!!!!!!" - - print "%s Running multiple tests in separate processes\n" % headmsg - for test in separate_tests: - _test_in_subprocesss(test, headmsg, spawnmsg) - - print "\n%s Successfully ran multiple tests in separate processes\n" % headmsg - diff --git a/HLT/HLTTestApps/python/scripts/athenaHLT-select-PEB-stream.py b/HLT/HLTTestApps/python/scripts/athenaHLT-select-PEB-stream.py deleted file mode 100755 index 106ce30964f..00000000000 --- a/HLT/HLTTestApps/python/scripts/athenaHLT-select-PEB-stream.py +++ /dev/null @@ -1,205 +0,0 @@ -#!/usr/bin/env tdaq_python -# Werner.Wiedenmann@cern.ch -# select events for a given stream name from an input file and write them in an outfile -# the output file obeys the conventions used by the SFO in P1 - -import sys -import os - -def peb_writer(argv): - """Runs the splitting routines""" - - import eformat, logging - import EventApps.myopt as myopt - - option = {} - - # run mode options - option['start-event'] = {'short': 'a', 'arg': True, - 'default': 0, - 'group': 'Run mode', - 'description': 'Number of events which should be skippped from the begin'} - - option['max-events'] = {'short': 'n', 'arg': True, - 'default': 0, - 'group': 'Run mode', - 'description': 'Maximum number of events in the output file. 0 means, all useful events from the input.'} - - option['verbosity'] = {'short': 'v', 'arg': True, - 'default': logging.INFO, - 'group': 'Run mode', - 'description': 'Log verbosity'} - - option['progress-bar'] = {'short': 'P', 'arg': False, - 'default': None, - 'group': 'Run mode', - 'description': 'Show progress bar when running interactively'} - - option['output-dir'] = {'short': 'd', 'arg': True, - 'default': '.', - 'group': 'Run mode', - 'description': 'Directory in which the output file should be written'} - - # stream tag options - option['stream-name'] = {'short': 's', 'arg': True, - 'default': 'DataScouting_05_Jets', - 'group': 'Stream Tag', - 'description': 'Name of stream which should be written out'} - - option['project-tag'] = {'short': 'p', 'arg': True, - 'default': 'data18_13Tev', - 'group': 'Stream Tag', - 'description': 'Project tag which should be used for the output file'} - - option['lumi-block'] = {'short': 'l', 'arg': True, - 'default': 0, - 'group': 'Stream Tag', - 'description': 'Lumiblock number used for the output file. Use 0 if multiple LB in file.'} - - parser = myopt.Parser(extra_args=True) - for (k,v) in option.items(): - parser.add_option(k, v['short'], v['description'], v['arg'], v['default'],v['group']) - - if len(sys.argv) == 1: - print parser.usage('global "%s" options:' % sys.argv[0]) - sys.exit(1) - - # process the global options - (kwargs, extra) = parser.parse(sys.argv[1:], prefix='global "%s" options:' % sys.argv[0]) - - # global defaults - logging.getLogger('').name = os.path.splitext(os.path.basename(sys.argv[0]))[0] - logging.getLogger('').setLevel(kwargs['verbosity']) - - # input data stream - stream = eformat.istream(extra) - # input event counter - totalEvents_in = 0 - - # get metadata from inputfile - dr = eformat.EventStorage.pickDataReader(extra[0]) - - # parameters for building the output file name - runNumber = dr.runNumber() - outputDirectory = kwargs['output-dir'] - streamName = kwargs['stream-name'] - projectTag = kwargs['project-tag'] - lumiBlockNumber = kwargs['lumi-block'] # if output file can have multiple lumi blocks, use 0 - applicationName = 'athenaHLT' - productionStep = 'merge' # output file with multiple lumi blocks - streamType = 'unknown' # the real stream type will be extracted from the matching stream tag - - # check the output directory if it exists - if (not os.path.exists(outputDirectory)) or (not os.path.isdir(outputDirectory)): - logging.fatal(' Output directory %s does not exist ' % outputDirectory) - sys.exit(1) - - # output event counter - totalEvents_out = 0 - - # counter of skipped events - totalEvents_skipped = 0 - - # Loop over events - for e in stream: - totalEvents_in += 1 - - # select events - if kwargs['start-event'] > 0: - kwargs['start-event'] -= 1 - totalEvents_skipped += 1 - continue - - if kwargs['max-events'] > 0 and totalEvents_in >= kwargs['max-events']: - logging.info(' Maximum number of events reached : %d' % kwargs['max-events']) - break - - # find StreamTags and see if there is a match - streamTags = e.stream_tag() - logging.debug(' === New Event nr = %s (Run,Global ID) = (%d,%d) === ' % (totalEvents_in,e.run_no(),e.global_id())) - for tag in streamTags: - if tag.name == streamName: - # the event should be written out - logging.debug(' Matching event found for stream tag = %s' % tag) - logging.debug(' Stream Tag:Robs = %s' % [hex(r) for r in tag.robs]) - logging.debug(' Stream Tag:Dets = %s' % [hex(d) for d in tag.dets]) - - # check the lumi block number from the event against the lumi block number defined for the file - # this check is only done if the lumi block number for the file is different from 0 - if lumiBlockNumber > 0: - if e.lumi_block() != lumiBlockNumber: - logging.error(' Event (Run,Global ID) = (%d,%d) has a lumi block number %d,' - ' which is different from LB = %d for the output file. Event skipped.' % - (e.run_no(),e.global_id(),e.lumi_block(),lumiBlockNumber)) - continue - - # check that all events have the same run number as the output file indicates otherwise skip event - if e.run_no() != runNumber: - logging.error(' Event (Run,Global ID) = (%d,%d) has a run number,' - ' which is different from the run number = %d for the output file. Event skipped.' % - (e.run_no(),e.global_id(),runNumber)) - continue - - # set the overall tag type for the first match - if streamType != tag.type: - streamType = tag.type - logging.debug(' streamType set to = %s' % streamType) - # create the RAW output file name - outRawFile = eformat.EventStorage.RawFileName(projectTag, - runNumber, - streamType, - streamName, - lumiBlockNumber, - applicationName, - productionStep) - logging.debug(' set output file name = %s'% outRawFile.fileNameCore()) - - # create the output stream - ostream = eformat.ostream(directory=outputDirectory, - core_name=outRawFile.fileNameCore(), - run_number=dr.runNumber(), - trigger_type=dr.triggerType(), - detector_mask=dr.detectorMask(), - beam_type=dr.beamType(), - beam_energy=dr.beamEnergy()) - - # decide what to write out - if streamType == 'physics' or streamType == 'express' or (len(tag.robs)==0 and len(tag.dets)==0): - # write out the full event fragment - pbev = eformat.write.FullEventFragment(e) - logging.debug(' Write full event fragment ') - else: - # select ROBs to write out - rob_output_list = [] - logging.debug(' Write partial event fragment ') - for rob in e: - if rob.source_id().code() in tag.robs: - rob_output_list.append(rob) - if rob.source_id().subdetector_id() in tag.dets: - rob_output_list.append(rob) - # write out the partial event fragment - pbev = eformat.write.FullEventFragment() - pbev.copy_header(e) - for out_rob in rob_output_list: - pbev.append_unchecked(out_rob) - - # put the event onto the output stream - ostream.write(pbev) - if (logging.getLogger('').getEffectiveLevel() > logging.DEBUG) and kwargs['progress-bar']: - sys.stdout.write('.') - sys.stdout.flush() - - # increase output event counter - totalEvents_out += 1 - - # print final statistics - logging.info('Total number of events processed = %d ' % totalEvents_in) - logging.info('Number of events skipped at the beginning = %d ' % totalEvents_skipped) - logging.info('Number of events written to output file = %d ' % totalEvents_out) - if totalEvents_out > 0: - logging.info('Output file = %s ' % ostream.last_filename()) - - sys.exit(0) - -if __name__ == "__main__": - peb_writer(sys.argv) diff --git a/HLT/HLTTestApps/python/scripts/athenaHLT.py b/HLT/HLTTestApps/python/scripts/athenaHLT.py deleted file mode 100755 index e1d02b82b7e..00000000000 --- a/HLT/HLTTestApps/python/scripts/athenaHLT.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -# $Id: athenaHLT.py 578197 2014-01-13 19:16:56Z ricab $ -# Ricardo Abreu <ricardo.abreu@cern.ch> - -"""true" - -### Ugly hack to preload certain libraries -### (typically malloc) - -python_path=`which python` - -preload=`which hlt_test_apps_preload.sh` -if [ -z preload ]; then - echo "hlt_test_apps_preload.sh was not found >&2" -else - . "$preload" -fi - -"exec" "$python_path" "-tt" "$0" "$@"; - -""" - -from HLTTestApps import script_main -from HLTTestApps.application import file_based - -if __name__ == '__main__': - script_main(file_based) - diff --git a/HLT/HLTTestApps/python/scripts/hlt_test_apps_preload.sh b/HLT/HLTTestApps/python/scripts/hlt_test_apps_preload.sh deleted file mode 100755 index 90fe701fc63..00000000000 --- a/HLT/HLTTestApps/python/scripts/hlt_test_apps_preload.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/sh - - -export USETCMALLOC=true -export USEIMF=true -export LEAKCHECK=false -export TCMALLOC_LIB="libtcmalloc_minimal.so" -export IMF_LIB1="libimf.so" -export IMF_LIB2="libintlc.so.5" -export ADD_PRELOAD - -for a in ${@} -do - if [[ "$a" = "--leak-check"* ]] || [ "$a" = "-Q" ] ; then - LEAKCHECK=true - elif [ "$a" = "--tcmalloc" ]; then - USETCMALLOC=true - elif [ "$a" = "--stdcmalloc" ]; then - USETCMALLOC=false - elif [ "$a" = "--imf" ]; then - USEIMF=true - elif [ "$a" = "--stdcmath" ]; then - USEIMF=false - elif [ "$a" = "--no-ers-signal-handlers" ]; then - export TDAQ_ERS_NO_SIGNAL_HANDLERS=1 - elif [[ "$a" = "--preloadlib"* ]] ; then - ADD_PRELOAD=${a#*=} - if [ "$a" = "--preloadlib" ] ; then - echo "ERROR: option --preloadlib needs to be specified with an equals sign (e.g. --preloadlib=foobar.so)" - exit 1 - fi - fi -done - -if [ $USETCMALLOC == true ]; then - if [ $LEAKCHECK == true ]; then - echo 'WARNING: cannot use tcmalloc and do leak check simultaneously. Will use libc malloc instead' - USETCMALLOC=false - elif [ -z TCMALLOCDIR ]; then - echo "WARNING: TCMALLOCDIR not defined. Will use libc malloc instead" - USETCMALLOC=false - fi -fi - -if [ $USETCMALLOC == true ]; then - if [ ! -e "$TCMALLOCDIR/$TCMALLOC_LIB" ]; then - echo "ERROR: $TCMALLOCDIR/$TCMALLOC_LIB does not exist" - exit 1 - else - echo "Preloading $TCMALLOC_LIB" - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$TCMALLOCDIR" - - # if 32 bit binaries on an 64 bit OS are used add also the path to the 64 bit tcmalloc version - # this may be needed in subshells which are opened by the code - if [ `echo $CMTCONFIG | cut -d '-' -f1` == "i686" ]; then - echo "Preloading also 64 bit version of $TCMALLOC_LIB" - cmtconfig64=`echo $CMTCONFIG | sed s/i686/x86_64/` - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$TCMALLOCDIR/../../$cmtconfig64/lib" - fi - - if [ -z $LD_PRELOAD ]; then - export LD_PRELOAD="$TCMALLOC_LIB" - else - export LD_PRELOAD="$TCMALLOC_LIB:$LD_PRELOAD" - fi - fi -fi - -if [ $USEIMF == true ]; then -fullimf1="$ATLASMKLLIBDIR_PRELOAD/$IMF_LIB1" -fullimf2="$ATLASMKLLIBDIR_PRELOAD/$IMF_LIB2" - if [ ! -e "$fullimf1" ]; then - echo "ERROR: $fullimf1 does not exit" - exit 1 - elif [ ! -e "$fullimf2" ]; then - echo "ERROR: $fullimf2 does not exit" - exit 1 - else - echo "Preloading $IMF_LIB1" - echo "Preloading $IMF_LIB2" - if [ -z $LD_PRELOAD ]; then - export LD_PRELOAD="$fullimf1:$fullimf2" - else - export LD_PRELOAD="$fullimf1:$fullimf2:$LD_PRELOAD" - fi - fi -fi - -# optionally add user-specific preload library -if [ "x$ADD_PRELOAD" != "x" ] ; then - echo "Preloading $ADD_PRELOAD" - if [ -z $LD_PRELOAD ]; then - export LD_PRELOAD="$ADD_PRELOAD" - else - export LD_PRELOAD="$ADD_PRELOAD:$LD_PRELOAD" - fi -else - unset ATHENA_ADD_PRELOAD -fi diff --git a/HLT/HLTTestApps/python/scripts/ros2rob_from_partition.py b/HLT/HLTTestApps/python/scripts/ros2rob_from_partition.py deleted file mode 100755 index d153e8489c5..00000000000 --- a/HLT/HLTTestApps/python/scripts/ros2rob_from_partition.py +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env python - -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -import eformat -from pm.project import Project -from argparse import ArgumentParser -from types import MethodType -from sys import stdout, stderr - -# get the arg parser -def argparser(): - parser = ArgumentParser(description='Produce a ros2rob map, as a python ' - 'dictionary, from a given partition.') - parser.add_argument('--database_file', '-d', required=True, - help='A partition filename (e.g. ATLAS.data.xml).') - parser.add_argument('--partition', '-p', required=True, - help='A partition filename. The name of the partition ' - 'that is read from pfile (e.g. ATLAS).') - parser.add_argument('--output_file', '-o', - help='The output filename. The name of the file to which ' - 'the ros2rob map is written. If omitted, stdout is ' - 'used (e.g. myros2rob.py).') - make_parser_print_help_on_error(parser) - return parser - -def make_parser_print_help_on_error(parser): - """ - Alter an ArgumentParser so that it shows a help msg whenever there is an - error in the command line - """ - def error(self, msg): - print >> stderr, 'error: %s\n' % msg - self.print_help() - exit(2) - parser.error = MethodType(error, parser) - -def get_roses(pfname, pname): - """ - Get all the ROSes in the partition - """ - return Project(pfname).getObject('Partition', pname).get('ROS') - -def get_ros2rob(roses): - """ - Get the ros2rob map from the ROS list - """ - ros2rob = {} - for ros in roses: - if ros.id in ros2rob: - print >> stderr, ("WARNING: %s is repeated in the partition: ignoring " - "second occurrence") - else: - ros2rob[ros.id] = get_robs(ros) - return ros2rob - - -def get_robs(ros): - """ - Get the list of ROBs that correspond to a ROS - """ - return [eformat.helper.SourceIdentifier(rol.Id).code() - for robin in ros.Contains for rol in robin.Contains] - -def print_ros2rob(ros2rob, out): - """ - Print the ros2rob map as an easily readable/editable python dictionary - """ - print >> out, "ros2rob = {" - count = 0 - for k, v in ros2rob.iteritems(): - count += 1 - print >> out, "\t'%s': \n\t[" % k - for i in range(len(v)): - print >> out, "\t\t%s" % hex(v[i]), - if i+1 != len(v): - print >> out, "," - else: - print >> out, "\n\t]", - if count != len(ros2rob): - print >> out, "," - print >> out, "\n}" - -# main -if __name__ == '__main__': - args = argparser().parse_args() - out = open(args.output_file, 'w') if args.output_file else stdout - print >> stderr, "# Extracting ROS2ROB map" - print >> out, "# ROS2ROB map extracted from %s:" % args.database_file - print_ros2rob(get_ros2rob(get_roses(args.database_file, args.partition)), out) diff --git a/HLT/HLTTestApps/python/tests/test_app.sh b/HLT/HLTTestApps/python/tests/test_app.sh deleted file mode 100755 index 0f22c958f45..00000000000 --- a/HLT/HLTTestApps/python/tests/test_app.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash -# author Andre Anjos <andre.dos.anjos@cern.ch> -# author Ricardo Abreu <ricardo.abreu@cern.ch> - -# Runs, in sequence, a few athenaMT.py tests - -# temporary solution -DATADIR="/afs/cern.ch/work/r/ricab/datafiles/" -DATAFILE="--file $DATADIR/2012-05-04VALAllPT_physicsV4-1.only3events.data" -export PYTHONPATH="$DATADIR:$PYTHONPATH" # so that the robhit module is found - -#DEBUG=-l 'DEBUG' -#DEBUG=-l 'INFO,ERROR' - -i=1 -function runtest() { - echo "===============================================================" - echo "$i) Options are [$*]" - echo "===============================================================" - echo - athenaHLT.py $* - ret=$? - echo - echo "==========================================" - echo "$i) The status output of this test is $ret" - echo "==========================================" - echo - if [ $ret -ne 0 ]; then - exit $ret - else - i=$((i+1)) - fi -} - - -# This test tries to perform a basic run of athenaHLT -runtest $DEBUG $DATAFILE -n5 TrigExMTHelloWorld/MTHelloWorldOptions.py - -# This test tries to run with --tcmalloc -runtest $DEBUG $DATAFILE --tcmalloc TrigExMTHelloWorld/MTHelloWorldOptions.py - -# This test tries to run with --leak-check-execute -runtest $DEBUG $DATAFILE --leak-check-execute \ - TrigExMTHelloWorld/MTHelloWorldOptions.py - -# This test tries to run with --tcmalloc and --leak-check-execute -# simultaneously, which mustn't be possible. A warning should be printed -# informing the user that libc malloc is chosen instead -runtest $DEBUG $DATAFILE --tcmalloc --leak-check-execute\ - TrigExMTHelloWorld/MTHelloWorldOptions.py - -# try to apply the print_event_header plugin; force accept all events -runtest $DEBUG $DATAFILE --postcommand 'HltEventLoopMgr.ForceHltAccept=True'\ - -Z 'HLTTestApps.plugins.print_event_header'\ - TrigExMTHelloWorld/MTHelloWorldOptions.py - -# try to apply the fill_empty plugin; force accept all events -runtest $DEBUG $DATAFILE --postcommand 'HltEventLoopMgr.ForceHltAccept=True'\ - -Z 'HLTTestApps.plugins.fill_empty'\ - TrigExMTHelloWorld/MTHelloWorldOptions.py - -# try to apply the remove_nonlisted plugin; force accept all events -runtest $DEBUG $DATAFILE --postcommand 'HltEventLoopMgr.ForceHltAccept=True'\ - -Z 'HLTTestApps.plugins.remove_nonlisted'\ - TrigExMTHelloWorld/MTHelloWorldOptions.py - -# try to apply the remove_nonlisted and truncate plugins; force accept all events -runtest $DEBUG $DATAFILE --postcommand 'HltEventLoopMgr.ForceHltAccept=True'\ - -Z 'HLTTestApps.plugins.remove_nonlisted' \ - -Z 'HLTTestApps.plugins.truncate'\ - TrigExMTHelloWorld/MTHelloWorldOptions.py - -runtest $DEBUG $DATAFILE -n5 -M -W TrigExMTHelloWorld/MTHelloWorldOptions.py diff --git a/HLT/HLTTestApps/python/tests/test_lib.sh b/HLT/HLTTestApps/python/tests/test_lib.sh deleted file mode 100755 index fd33926d01c..00000000000 --- a/HLT/HLTTestApps/python/tests/test_lib.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -# author Andre Anjos <andre.dos.anjos@cern.ch> -# author Ricardo Abreu <ricardo.abreu@cern.ch> - -thisdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd -P )" -testdir="$thisdir/../HLTTestApps" -echo $testdir - -function runtest() -{ - echo - echo "===============================================================" - echo "Running "$@" tests" - echo "===============================================================" - echo - python "$testdir/$@" - ret=$? - echo - echo "============================================" - echo "The status output of this set of tests is $ret" - echo "============================================" - echo - if [ $ret -ne 0 ]; then - exit $ret - fi -} - -targets=( "option.py" "pausable_istream.py" "configuration.py" "infrastructure.py" "online_infrastructure.py" "processor.py") - -for tgt in "${targets[@]}" -do - runtest $tgt -done - diff --git a/HLT/HLTTestApps/src/Event.cxx b/HLT/HLTTestApps/src/Event.cxx deleted file mode 100644 index d717abfe63c..00000000000 --- a/HLT/HLTTestApps/src/Event.cxx +++ /dev/null @@ -1,825 +0,0 @@ -//Dear emacs, this is -*- c++ -*- - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -/** - * @file HLTTestApps/src/Event.cxx - * @author <a href="mailto:Andre.dos.Anjos@cern.ch">Andre DOS ANJOS</a> - * $Author: ricab $ - * $Revision: 64 $ - * $Date: 2013-06-24 20:16:17 +0200 (Mon, 24 Jun 2013) $ - * - * Implements all the Event functionality - */ - -#include <chrono> -#include <sstream> -#include <algorithm> -#include <array> -#include <execinfo.h> -#include <cstdlib> -#include <stdlib.h> -#include <boost/python.hpp> -#include <boost/python/stl_iterator.hpp> -#include "issue.h" -#include "Event.h" -#include "L1_ROBs.h" -#include "eformat/eformat.h" -#include "eformat/index.h" -#include "eformat/SourceIdentifier.h" - -#ifndef NDEBUG - -#define DEBUG_WARN_NO_ROB(l1id, robid) \ - do { debug_warn_no_rob(l1id, robid); } while(false) -#define DEBUG_PRINT_ROB_ROS_MAP \ - do { debug_print_rob_ros_map(); } while(false) -#define DEBUG_OUT_ROBINFOS(data) \ - do { debug_out_robinfos(data); } while(false) -#define DEBUG_PRINT_HIT_ROSES \ - do { debug_print_hit_roses(); } while(false) -#define DEBUG_PRINT_L1R_ROBS \ - do { debug_print_l1r_robs(); } while(false) - -#else - -#define DEBUG_WARN_NO_ROB(l1id, robid) {} -#define DEBUG_PRINT_ROB_ROS_MAP {} -#define DEBUG_OUT_ROBINFOS(data) {} -#define DEBUG_PRINT_HIT_ROSES {} -#define DEBUG_PRINT_L1R_ROBS {} - -#endif - -using namespace boost::python; -using namespace std::chrono; -using time_point = time_point<steady_clock>; -using std::vector; -using std::string; -using std::map; -using std::array; -using std::find; - -namespace -{ - -#pragma GCC diagnostic ignored "-Wunused-function" - void debug_warn_no_rob(uint32_t l1id, uint32_t robid) - { - if(ers::debug_level() > 0) - { - boost::format msg("Event with LVL1 id=%lu does NOT contain ROB 0x%08x"); - ERS_DEBUG(1, (msg % l1id % robid).str()); - } - } - -#pragma GCC diagnostic ignored "-Wunused-function" - void debug_out_robinfos(const std::vector<hltinterface::DCM_ROBInfo>& data) - { - if(ers::debug_level() >= 2) - { - for(const auto& rob : data) - { - boost::format rmsg("0x%08x"); - - auto millis0 = duration_cast<milliseconds>( - rob.robRequestTime.time_since_epoch()).count(); - auto millis1 = duration_cast<milliseconds>( - rob.robDeliveryTime.time_since_epoch()).count(); - auto deltamillis = duration_cast<milliseconds>( - rob.robDeliveryTime - rob.robRequestTime).count(); - - ERS_DEBUG(2, "Output ROBInfo:\n[ROB ID: " - << (rmsg % rob.robFragment.rob_source_id()).str() - << ", cached: " << rob.robIsCached - << ", robRequestTime: " << millis0 - << " milliseconds since epoch, robDeliveryTime: " - << millis1 << " milliseconds since epoch (elapsed time = " - << deltamillis << "ms)]"); - } - } - } - - template <typename LIST> - string to_string_list(const LIST& l) - { - std::ostringstream oss; - oss << std::hex << "["; - if(!l.empty()) - { - oss << "0x"; - std::copy(begin(l), --end(l), - std::ostream_iterator<typename LIST::value_type>(oss, ", 0x")); - oss << *--end(l); // add last one without comma - } - oss << std::dec << ']'; - return oss.str(); - } -} - -// Static attributes -HLTTestApps::Event::ROB2ROSMap HLTTestApps::Event::sm_rob2ros{}; -HLTTestApps::Event::ROSHitMap HLTTestApps::Event::sm_rosHitMap{}; -HLTTestApps::Event::ROSHitMap HLTTestApps::Event::sm_rosHitMapReject{}; -HLTTestApps::Event::ROSHitMap HLTTestApps::Event::sm_rosHitMapAccept{}; -std::set<HLTTestApps::Event::ROBID> HLTTestApps::Event::sm_l1r_robs{}; -std::vector<int> HLTTestApps::Event::sm_eventsForROSStat{}; -int HLTTestApps::Event::sm_strategy{}; -std::ofstream HLTTestApps::Event::sm_ros_rejected_outfile{}; -std::ofstream HLTTestApps::Event::sm_ros_accepted_outfile{}; - -enum RosHitMapIndex { - // total number of ROBs in ROS - rh_number_of_robs=0, - // for all events: average number of hits/evt., average fraction of ROBs retrieved/evt., average size in words retrieved/evt. - rh_all_hit_fra=1, - rh_all_rob_fra=2, - rh_all_rob_siz=3, - // normal collect (no evt. building): average number of hits/evt., average fraction of ROBs retrieved/evt., average size in words retrieved/evt. - rh_normal_hit_fra=4, - rh_normal_rob_fra=5, - rh_normal_rob_siz=6, - // collect for evt. building: average number of hits/evt., average fraction of ROBs retrieved/evt., average size in words retrieved/evt. - rh_evbld_hit_fra=7, - rh_evbld_rob_fra=8, - rh_evbld_rob_siz=9, - // total size of rosHitMap per ROS - rh_total_size=10 -}; - -enum RosHitMapIndexPerEvent { - // total number of ROBs in ROS - rh_number_ev_of_robs=0, - // for all events: average number of hits/evt., average fraction of ROBs retrieved/evt. - rh_all_ev_hit_fra=1, // for single event - rh_all_ev_rob_fra=2, // for single event - rh_all_ev_rob_siz=3, // for single event - // normal collect (no evt. building): average number of hits/evt., average fraction of ROBs retrieved/evt. - rh_normal_ev_hit_fra=4, // for single event - rh_normal_ev_rob_fra=5, // for single event - rh_normal_ev_rob_siz=6, // for single event - // collect for evt. building: average number of hits/evt., average fraction of ROBs retrieved/evt. - rh_evbld_ev_hit_fra=7, // for single event - rh_evbld_ev_rob_fra=8, // for single event - rh_evbld_ev_rob_siz=9, // for single event - // total size of rosHitMap per ROS per event - rh_total_ev_size=10 -}; - -enum EventCounterIndex { - // total number of rejected events - rh_count_reject=0, - // total number of accepted events - rh_count_accept=1, - // total number of accepted events - rh_count_size=2 -}; - -// Static method -void HLTTestApps::Event::set_ros2rob_map(const boost::python::dict& d) -{ - sm_rob2ros.clear(); - sm_rosHitMap.clear(); - sm_rosHitMapReject.clear(); - sm_rosHitMapAccept.clear(); - sm_eventsForROSStat.clear(); - - // initialize event counter - sm_eventsForROSStat.assign(rh_count_size,0); - - // get begin and end iterators to the python dictionary's keys - stl_input_iterator<ROSID> itros{d}, endros{}; - - // for each ROSID in the dictionary... - std::for_each(itros, endros, - [&d](ROSID rosid){ - - // ... initialize ROS hit map - sm_rosHitMap[rosid] = std::vector<float>(rh_total_ev_size,0.0); - sm_rosHitMapReject[rosid] = std::vector<float>(rh_total_size,0.0); - sm_rosHitMapAccept[rosid] = std::vector<float>(rh_total_size,0.0); - - // ... get begin and end iterators to the list of corresponding ROBIDs - stl_input_iterator<ROBID> itrob1{extract<list>(d.get(rosid))()}, - endrob{}; - - // ... fill in the ROB2ROS map and get the number of ROBs in this ROS - std::for_each(itrob1, endrob, - [rosid](ROBID robid){ - sm_rob2ros[robid] = rosid; - (sm_rosHitMap[rosid])[rh_number_ev_of_robs] += 1.; - (sm_rosHitMapReject[rosid])[rh_number_of_robs] += 1.; - (sm_rosHitMapAccept[rosid])[rh_number_of_robs] += 1.; - }); - }); - - // open output files for ROS statistics - if ((ers::debug_level() > 0) && (!sm_rob2ros.empty())) { - std::ostringstream out_reject_filename, out_accept_filename; - out_reject_filename << "ROS-rejected-events.txt"; - out_accept_filename << "ROS-accepted-events.txt"; - sm_ros_rejected_outfile.open((out_reject_filename.str()).c_str()); - sm_ros_accepted_outfile.open((out_accept_filename.str()).c_str()); - } - DEBUG_PRINT_ROB_ROS_MAP; -} - -// Static method -void HLTTestApps::Event::set_l1r_robs(const boost::python::list& l) -{ - // get begin and end iterators to the python list - stl_input_iterator<ROBID> itros{l}, endros{}; - - sm_l1r_robs.clear(); - std::copy(itros, endros, std::inserter(sm_l1r_robs, begin(sm_l1r_robs))); - - DEBUG_PRINT_L1R_ROBS; -} - -// Static method -void HLTTestApps::Event::set_dcm_strategy(const boost::python::list& s) -{ - // get begin and end iterators to the python list - stl_input_iterator<int> itros{s}, endstrategy{}; - - // ROS prefetching strategy - // 0 = strategy as in Run 1,i.e. use of the prefetching list only when a ROB is needed - // 1 = strategy as at begin of Run 2, i.e. immediate retrieval of all ROBs on the prefetching list - sm_strategy = *itros; - ERS_DEBUG(1, " DCM prefetching strategy set to " << sm_strategy); -} - -HLTTestApps::Event::Event(const eformat::read::FullEventFragment& event) - : hltinterface::DataCollector() -{ - m_lvl1_id = event.lvl1_id(); - - std::ostringstream ost; - ost << "=== EVENT: LVL1 id " - << " Run / Event / Lvl1id = " << event.run_no() << " / " << event.global_id() << " / " << m_lvl1_id ; - if (sm_ros_rejected_outfile.is_open()) sm_ros_rejected_outfile << ost.str() << std::endl; - if (sm_ros_accepted_outfile.is_open()) sm_ros_accepted_outfile << ost.str() << std::endl; - - // Reset the ROB prefetching map - m_Det_Robs_for_retrieval.clear(); - m_l1r.clear(); - m_map.clear(); - - // Build a source_id based table-of-contents of this event - map<uint32_t, const uint32_t*> sid_toc; - eformat::helper::build_toc(event, sid_toc); - - for(const auto& pair : sid_toc) { - auto sid = eformat::helper::SourceIdentifier(pair.first); - auto sdid = sid.subdetector_id(); - switch (sdid) { - case eformat::TDAQ_BEAM_CRATE: - case eformat::TDAQ_SFI: - case eformat::TDAQ_SFO: - case eformat::TDAQ_LVL2: - case eformat::TDAQ_HLT: - case eformat::OTHER: - //we ignore these - break; - - default: - auto robid = sid.simple_code(); - if(find(begin(L1R_SDS), end(L1R_SDS), sdid) != end(L1R_SDS) || - find(begin(L1R_ROBS), end(L1R_ROBS), robid) != end(L1R_ROBS) || - find(begin(sm_l1r_robs), end(sm_l1r_robs), robid) !=end(sm_l1r_robs)) - { - // these, we treat as Level-1 result robs - m_l1r.emplace_back(pair.second); - } - else - { - //these, we include in our internal data map for fast access - if(m_map.find(robid) != end(m_map)) - { - boost::format msg("Found duplicate ROB id's (0x%08x) while " - "configuring event with LVL1 id=%lu. I will " - "ignore the current ROB fragment."); - msg % robid % m_lvl1_id; - ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - else if ((!sm_rob2ros.empty()) && (sm_rob2ros.find(robid)==sm_rob2ros.end())) - { - boost::format msg("Found ROB id (0x%08x) while " - "configuring event with LVL1 id=%lu, which is not in the provided ROS to ROB mapping. " - "This ROB fragment will be ignored."); - msg % robid % m_lvl1_id; - ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - else - { - m_map.insert(std::make_pair(robid, ROB{robid, pair.second, eformat::read::ROBFragment(pair.second).fragment_size_word()})); - // std::map::emplace still not available in gcc4.7.2 - // m_map.emplace(robid, ROB{robid, it->second[k]}); - } - } - break; - } - } -} - -uint32_t HLTTestApps::Event:: -collect(std::vector<hltinterface::DCM_ROBInfo>& data, - const uint32_t lvl1_id, - const std::vector<uint32_t>& ids) -{ - auto t0 = steady_clock::now(); - if(check_l1id(lvl1_id)) - { - std::vector<uint32_t> ids_for_ros_collection; - ids_for_ros_collection.reserve(ids.size()); - - for(const auto& id : ids) - { - auto it = m_map.find(id); - if(it != m_map.end()) - { - auto& rob = it->second; - data.emplace_back(rob.rob, is_cached(rob), t0, steady_clock::now()); - if (!is_cached(rob)) ids_for_ros_collection.push_back(id); - rob.reserved = true; // it was already retrieved, so it should - // be marked as cached next time around - } - else - DEBUG_WARN_NO_ROB(lvl1_id, id); - } - - // couldn't use the previous loop for caching. Otherwise, would be marking - // as cached, robs that could still be added to the output, in a subsequent - // iteration - hit_roses(ids_for_ros_collection); - - int n_additional_robs(0); - if (sm_strategy == 0) { - for(auto ros : m_hit_roses) { - // retrieve also all ROBs in the hit ROS into the cache which are - // on the prefetch list and mark them as retrieved - auto it_prefetch_ros = m_Det_Robs_for_retrieval.find(ros); - if (it_prefetch_ros != m_Det_Robs_for_retrieval.end()) { - // mark all prefetch ROBs on the list for this ROS as retrieved - for (const auto& it_prefetch_rob_id : it_prefetch_ros->second) { - auto rob_prefetched = m_map.find(it_prefetch_rob_id); - if(rob_prefetched != m_map.end() && !(rob_prefetched->second).reserved ) { - (rob_prefetched->second).reserved = true ; - if (!sm_rob2ros.empty()) { - (sm_rosHitMap[ros])[rh_all_ev_rob_fra] += 1.; - (sm_rosHitMap[ros])[rh_normal_ev_rob_fra] += 1.; - (sm_rosHitMap[ros])[rh_all_ev_rob_siz] += (rob_prefetched->second).size_word ; - (sm_rosHitMap[ros])[rh_normal_ev_rob_siz] += (rob_prefetched->second).size_word ; - } - n_additional_robs++; - } - } - // reset the list of prefetch ROBs for this ROS - (it_prefetch_ros->second).clear(); - } - } - } - DEBUG_OUT_ROBINFOS(data); - return data.size(); - } - - return 0; -} - -uint32_t HLTTestApps::Event:: -collect(std::vector<hltinterface::DCM_ROBInfo>& data, - const uint32_t lvl1_id) -{ - auto t0 = steady_clock::now(); - if(check_l1id(lvl1_id)) - { - // find out what ROSes are still needed for retrieval - // (do this before all elements are set to retrieved) - hit_roses(); - - for(auto& elem : m_map) - { - auto& rob = elem.second; - data.emplace_back(rob.rob, is_cached(rob), t0, steady_clock::now()); - rob.reserved = true; // it was already retrieved, so it should - // be marked as cached next time around - } - - DEBUG_OUT_ROBINFOS(data); - return data.size(); - } - - return 0; -} - -void HLTTestApps::Event::reserveROBData(const uint32_t lvl1_id, - const vector<uint32_t>& ids) -{ - if(check_l1id(lvl1_id)) - { - // for old strategy (sm_strategy=1) the ROBs are immediately retrieved - std::vector<uint32_t> ids_for_ros_collection; - ids_for_ros_collection.reserve(ids.size()); - - for(auto id : ids) - { - auto it = m_map.find(id); - if(it != m_map.end()) - if (sm_strategy == 0) { - m_Det_Robs_for_retrieval[get_rosid(id)].insert(id); - it->second.prefetched = true; - } else { - // old strategy: immediately retrieve ROBs on prefetching list - auto& rob = it->second; - if (!is_cached(rob)) ids_for_ros_collection.push_back(id); - it->second.reserved = true; - } - else - DEBUG_WARN_NO_ROB(lvl1_id, id); - } - - // increase ROS hits for old strategy - if (sm_strategy == 1) { - hit_roses(ids_for_ros_collection); - } - } -} - -void HLTTestApps::Event::hit_roses() -{ - m_hit_roses.clear(); - std::for_each(begin(m_map), end(m_map), - [this](std::pair<uint32_t, ROB> elem){ - if (!is_cached(elem.second)) { - m_hit_roses.insert(get_rosid(elem.first)); - if (!sm_rob2ros.empty()) { - (sm_rosHitMap[get_rosid(elem.first)])[rh_all_ev_rob_fra] += 1.; - (sm_rosHitMap[get_rosid(elem.first)])[rh_evbld_ev_rob_fra] += 1.; - (sm_rosHitMap[get_rosid(elem.first)])[rh_all_ev_rob_siz] += (elem.second).size_word ; - (sm_rosHitMap[get_rosid(elem.first)])[rh_evbld_ev_rob_siz] += (elem.second).size_word ; - } - } - }); - - // increase the ROS hit counter - if (!sm_rob2ros.empty()) { - for(const auto& ros : m_hit_roses) { - (sm_rosHitMap[ros])[rh_all_ev_hit_fra] += 1.; - (sm_rosHitMap[ros])[rh_evbld_ev_hit_fra] += 1.; - } - } - - DEBUG_PRINT_HIT_ROSES; -} - -void HLTTestApps::Event::hit_roses(const std::vector<ROBID>& robids) -{ - m_hit_roses.clear(); - std::for_each(begin(robids), end(robids), - [this](uint32_t id){ - m_hit_roses.insert(get_rosid(id)); - if (!sm_rob2ros.empty()) { - (sm_rosHitMap[get_rosid(id)])[rh_all_ev_rob_fra] += 1.; - (sm_rosHitMap[get_rosid(id)])[rh_normal_ev_rob_fra] += 1.; - auto rob = m_map.find(id); - if(rob != m_map.end()) { - (sm_rosHitMap[get_rosid(id)])[rh_all_ev_rob_siz] += (rob->second).size_word ; - (sm_rosHitMap[get_rosid(id)])[rh_normal_ev_rob_siz] += (rob->second).size_word ; - } - } - }); - - // increase the ROS hit counter - if (!sm_rob2ros.empty()) { - for(const auto& ros : m_hit_roses) { - (sm_rosHitMap[ros])[rh_all_ev_hit_fra] += 1.; - (sm_rosHitMap[ros])[rh_normal_ev_hit_fra] += 1.; - } - } - - DEBUG_PRINT_HIT_ROSES; -} - -auto HLTTestApps::Event::get_rosid(ROBID robid) const -> ROSID -{ - auto it = sm_rob2ros.find(robid); - if(it != sm_rob2ros.end()) - return it->second; - - // by default, assume each subdetector corresponds to a ROS and work with that - return get_fake_rosid(robid); -} - -auto HLTTestApps::Event::get_fake_rosid(ROBID robid) const -> ROSID -{ - if(!sm_rob2ros.empty()) - { - boost::format msg("The ROB with ID 0x%08X is being collected, but it is " - "not part of the ROS2ROB mapping. You probably provided " - "a ROS2ROB mapping that is not in agreement with your " - "data (not all ROBs are covered by the map). This could " - "create problems online. You can compile in dbg mode and " - "run with a high debug output level to get detailed " - "printouts of the internal mapping and caching " - "simulation (hit ROSes)."); - msg % robid; - ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - - std::ostringstream oss; - boost::format rmsg("0x%04x"); - auto sid = eformat::helper::SourceIdentifier(robid); - oss << "FAKE_ROS_" << sid.human_detector() << "_" - << (rmsg % sid.subdetector_id()).str(); - return oss.str(); -} - -bool HLTTestApps::Event::is_cached(const ROB& rob) const -{ - return (rob.reserved); -} - -bool HLTTestApps::Event::check_l1id(const uint32_t lvl1_id) const -{ - if (m_lvl1_id != lvl1_id) { - boost::format msg("You are not processing event %lu, but %lu. " - "Ignoring request."); - msg % lvl1_id % m_lvl1_id; - ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - return false; - } - - return true; -} - -// static -void HLTTestApps::Event::debug_print_rob_ros_map() -{ - if(ers::debug_level() > 0) - { - std::ostringstream oss; - if(sm_rob2ros.empty()) - oss << "{}"; - else - { - oss << "\n{" << std::hex; - for(const auto& robitem : sm_rob2ros) - oss << "\n\tROB 0x" << robitem.first << ": " << robitem.second; - oss << "\n}"; - } - - ERS_DEBUG(1, "Internal ROB2ROS map: " << oss.str()); - } -} - -// static -void HLTTestApps::Event::debug_print_l1r_robs() -{ - if(ers::debug_level() > 0) - { - ERS_DEBUG(1, "Custom L1R rob ids: " << to_string_list(sm_l1r_robs)); - } -} - -void HLTTestApps::Event::debug_print_hit_roses() const -{ - if(ers::debug_level() > 0) - { - ERS_DEBUG(2, "Hit ROSes: " << to_string_list(m_hit_roses)); - } -} - -void HLTTestApps::Event::debug_print_ros_hit_map(const int nevent) -{ - if (sm_rob2ros.empty()) { - ERS_DEBUG(1," No ROS-ROB mapping available"); - return; - } - std::ostringstream oss, oss_r, oss_a; - float hit_fraction, rob_fraction, rob_size ; - float hit_fraction_normal, rob_fraction_normal, rob_size_normal ; - float hit_fraction_evbuild, rob_fraction_evbuild, rob_size_evbuild ; - - oss << "\n\tprint_ros_hit_map: DCM prefetching strategy = " << sm_strategy ; - oss << "\n\tprint_ros_hit_map: Total number of events processed = " << nevent ; - - oss_r << "\n\tprint_ros_hit_map: +-----------------+ " ; - oss_r << "\n\tprint_ros_hit_map: | Rejected Events | " ; - oss_r << "\n\tprint_ros_hit_map: +-----------------+ " ; - oss_r << "\n\tprint_ros_hit_map: Number of rejected events used for statistics = " << sm_eventsForROSStat[rh_count_reject] <<"\n" ; - if (sm_eventsForROSStat[rh_count_reject] > 0) { - oss_r << "\n" << std::setw(27) << std::left << std::setfill(' ') << " " - << std::setw(36) << std::left << std::setfill(' ') << " | total" - << std::setw(36) << std::left << std::setfill(' ') << " | no evt. bld." - << std::setw(36) << std::left << std::setfill(' ') << " | evt. bld." - << " | "; - - oss_r << "\n" << std::setw(18) << std::left << std::setfill(' ') << "ROS" - << std::setw(6) << std::left << std::setfill(' ') << " | # ROBs" - << std::setw(36) << std::left << std::setfill(' ') - << " | Hits/Evt. , ROBs/Evt. , Data/Evt." - << " | Hits/Evt. , ROBs/Evt. , Data/Evt." - << " | Hits/Evt. , ROBs/Evt. , Data/Evt." - << " | "; - - for(const auto& ros : sm_rosHitMapReject) { - hit_fraction = (ros.second)[rh_all_hit_fra]/float(sm_eventsForROSStat[rh_count_reject]); - rob_fraction = (ros.second)[rh_all_rob_fra]/float(sm_eventsForROSStat[rh_count_reject]); - rob_size = (ros.second)[rh_all_rob_siz]/float(sm_eventsForROSStat[rh_count_reject]); - - hit_fraction_normal = (ros.second)[rh_normal_hit_fra]/float(sm_eventsForROSStat[rh_count_reject]); - rob_fraction_normal = (ros.second)[rh_normal_rob_fra]/float(sm_eventsForROSStat[rh_count_reject]); - rob_size_normal = (ros.second)[rh_normal_rob_siz]/float(sm_eventsForROSStat[rh_count_reject]); - - hit_fraction_evbuild = (ros.second)[rh_evbld_hit_fra]/float(sm_eventsForROSStat[rh_count_reject]); - rob_fraction_evbuild = (ros.second)[rh_evbld_rob_fra]/float(sm_eventsForROSStat[rh_count_reject]); - rob_size_evbuild = (ros.second)[rh_evbld_rob_siz]/float(sm_eventsForROSStat[rh_count_reject]); - - oss_r << "\n" << std::setw(18) << std::left << std::setfill(' ') << ros.first - << " | " << std::setw(6) << std::setfill(' ') << std::fixed << std::setprecision(0) << std::right << (ros.second)[rh_number_of_robs] - << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << hit_fraction << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << rob_fraction << " , " - << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << hit_fraction_normal << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << rob_fraction_normal << " , " - << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size_normal << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << hit_fraction_evbuild << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << rob_fraction_evbuild << " , " - << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size_evbuild << " | " ; - } - } - - oss_a << "\n\tprint_ros_hit_map: +-----------------+ " ; - oss_a << "\n\tprint_ros_hit_map: | Accepted Events | " ; - oss_a << "\n\tprint_ros_hit_map: +-----------------+ " ; - oss_a << "\n\tprint_ros_hit_map: Number of accepted events used for statistics = " << sm_eventsForROSStat[rh_count_accept] <<"\n" ; - if (sm_eventsForROSStat[rh_count_accept] > 0) { - // Accepted events - oss_a << "\n" << std::setw(27) << std::left << std::setfill(' ') << " " - << std::setw(36) << std::left << std::setfill(' ') << " | total" - << std::setw(36) << std::left << std::setfill(' ') << " | no evt. bld." - << std::setw(36) << std::left << std::setfill(' ') << " | evt. bld." - << " | "; - - oss_a << "\n" << std::setw(18) << std::left << std::setfill(' ') << "ROS" - << std::setw(6) << std::left << std::setfill(' ') << " | # ROBs" - << std::setw(36) << std::left << std::setfill(' ') - << " | Hits/Evt. , ROBs/Evt. , Data/Evt." - << " | Hits/Evt. , ROBs/Evt. , Data/Evt." - << " | Hits/Evt. , ROBs/Evt. , Data/Evt." - << " | "; - - for(const auto& ros : sm_rosHitMapAccept) { - hit_fraction = (ros.second)[rh_all_hit_fra]/float(sm_eventsForROSStat[rh_count_accept]); - rob_fraction = (ros.second)[rh_all_rob_fra]/float(sm_eventsForROSStat[rh_count_accept]); - rob_size = (ros.second)[rh_all_rob_siz]/float(sm_eventsForROSStat[rh_count_accept]); - - hit_fraction_normal = (ros.second)[rh_normal_hit_fra]/float(sm_eventsForROSStat[rh_count_accept]); - rob_fraction_normal = (ros.second)[rh_normal_rob_fra]/float(sm_eventsForROSStat[rh_count_accept]); - rob_size_normal = (ros.second)[rh_normal_rob_siz]/float(sm_eventsForROSStat[rh_count_accept]); - - hit_fraction_evbuild = (ros.second)[rh_evbld_hit_fra]/float(sm_eventsForROSStat[rh_count_accept]); - rob_fraction_evbuild = (ros.second)[rh_evbld_rob_fra]/float(sm_eventsForROSStat[rh_count_accept]); - rob_size_evbuild = (ros.second)[rh_evbld_rob_siz]/float(sm_eventsForROSStat[rh_count_accept]); - - oss_a << "\n" << std::setw(18) << std::left << std::setfill(' ') << ros.first - << " | " << std::setw(6) << std::setfill(' ') << std::fixed << std::setprecision(0) << std::right << (ros.second)[rh_number_of_robs] - << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << hit_fraction << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << rob_fraction << " , " - << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << hit_fraction_normal << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << rob_fraction_normal << " , " - << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size_normal << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << hit_fraction_evbuild << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(4) << rob_fraction_evbuild << " , " - << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size_evbuild << " | " ; - } - } else { - oss << " print_ros_hit_map: number of input events - 0 "; - } - - // print summary and close output files for ROS statistics - if (sm_ros_rejected_outfile.is_open()) { - sm_ros_rejected_outfile << oss.str() << std::endl; - sm_ros_rejected_outfile << oss_r.str() << std::endl; - sm_ros_rejected_outfile.close(); - } - if (sm_ros_accepted_outfile.is_open()) { - sm_ros_accepted_outfile << oss.str() << std::endl; - sm_ros_accepted_outfile << oss_a.str() << std::endl; - sm_ros_accepted_outfile.close(); - } - - ERS_DEBUG(1,oss.str()); - ERS_DEBUG(1,oss_r.str()); - ERS_DEBUG(1,oss_a.str()); -} - -void HLTTestApps::Event::accumulateStatistics(const int numberOfStreamTags) -{ - // No ROS-ROB mapping available - if (sm_rob2ros.empty()) { - return; - } - - // Increase event conter - if (numberOfStreamTags == 0) { - // rejected events - sm_eventsForROSStat[rh_count_reject]++; - } else { - // accpeted events - sm_eventsForROSStat[rh_count_accept]++; - } - - // Accumulate ROB/ROS statistics for accepted/rejected events - for (auto& ros : sm_rosHitMap) { - if (numberOfStreamTags == 0) { - // total - sm_rosHitMapReject[ros.first][rh_all_hit_fra] += (ros.second)[rh_all_ev_hit_fra]; - if ((ros.second)[rh_all_ev_hit_fra] != 0.) { - sm_rosHitMapReject[ros.first][rh_all_rob_fra] += ( (ros.second)[rh_all_ev_rob_fra]/(ros.second)[rh_all_ev_hit_fra]/(ros.second)[rh_number_of_robs] ); - } - sm_rosHitMapReject[ros.first][rh_all_rob_siz] += (ros.second)[rh_all_ev_rob_siz]; - // normal collect - sm_rosHitMapReject[ros.first][rh_normal_hit_fra] += (ros.second)[rh_normal_ev_hit_fra]; - if ((ros.second)[rh_normal_ev_hit_fra] != 0.) { - sm_rosHitMapReject[ros.first][rh_normal_rob_fra] += ( (ros.second)[rh_normal_ev_rob_fra]/(ros.second)[rh_normal_ev_hit_fra]/(ros.second)[rh_number_of_robs] ); - } - sm_rosHitMapReject[ros.first][rh_normal_rob_siz] += (ros.second)[rh_normal_ev_rob_siz]; - // eventbuilding collect - sm_rosHitMapReject[ros.first][rh_evbld_hit_fra] += (ros.second)[rh_evbld_ev_hit_fra]; - if ((ros.second)[rh_evbld_ev_hit_fra] != 0.) { - sm_rosHitMapReject[ros.first][rh_evbld_rob_fra] += ( (ros.second)[rh_evbld_ev_rob_fra]/(ros.second)[rh_evbld_ev_hit_fra]/(ros.second)[rh_number_of_robs] ); - } - sm_rosHitMapReject[ros.first][rh_evbld_rob_siz] += (ros.second)[rh_evbld_ev_rob_siz]; - if ((ros.second)[rh_all_ev_hit_fra] >= 1) { - std::ostringstream ost; - ost << std::setw(18) << std::left << std::setfill(' ') << ros.first - << " | " << std::setw(4) << std::setfill(' ') << std::fixed << std::setprecision(0) << std::right << (ros.second)[rh_number_of_robs] - << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_hit_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_rob_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_rob_siz] << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_hit_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_rob_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_rob_siz] << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_hit_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_rob_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_rob_siz] << " | " ; - if (sm_ros_rejected_outfile.is_open()) sm_ros_rejected_outfile << ost.str() << std::endl; - } - } else { - // total - sm_rosHitMapAccept[ros.first][rh_all_hit_fra] += (ros.second)[rh_all_ev_hit_fra]; - if ((ros.second)[rh_all_ev_hit_fra] != 0.) { - sm_rosHitMapAccept[ros.first][rh_all_rob_fra] += ( (ros.second)[rh_all_ev_rob_fra]/(ros.second)[rh_all_ev_hit_fra]/(ros.second)[rh_number_of_robs] ); - } - sm_rosHitMapAccept[ros.first][rh_all_rob_siz] += (ros.second)[rh_all_ev_rob_siz]; - // normal collect - sm_rosHitMapAccept[ros.first][rh_normal_hit_fra] += (ros.second)[rh_normal_ev_hit_fra]; - if ((ros.second)[rh_normal_ev_hit_fra] != 0.) { - sm_rosHitMapAccept[ros.first][rh_normal_rob_fra] += ( (ros.second)[rh_normal_ev_rob_fra]/(ros.second)[rh_normal_ev_hit_fra]/(ros.second)[rh_number_of_robs] ); - } - sm_rosHitMapAccept[ros.first][rh_normal_rob_siz] += (ros.second)[rh_normal_ev_rob_siz]; - // eventbuilding collect - sm_rosHitMapAccept[ros.first][rh_evbld_hit_fra] += (ros.second)[rh_evbld_ev_hit_fra]; - if ((ros.second)[rh_evbld_ev_hit_fra] != 0.) { - sm_rosHitMapAccept[ros.first][rh_evbld_rob_fra] += ( (ros.second)[rh_evbld_ev_rob_fra]/(ros.second)[rh_evbld_ev_hit_fra]/(ros.second)[rh_number_of_robs] ); - } - sm_rosHitMapAccept[ros.first][rh_evbld_rob_siz] += (ros.second)[rh_evbld_ev_rob_siz]; - if ((ros.second)[rh_all_ev_hit_fra] >= 1) { - std::ostringstream ost; - ost << std::setw(18) << std::left << std::setfill(' ') << ros.first - << " | " << std::setw(4) << std::setfill(' ') << std::fixed << std::setprecision(0) << std::right << (ros.second)[rh_number_of_robs] - << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_hit_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_rob_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_rob_siz] << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_hit_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_rob_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_rob_siz] << " | " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_hit_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_rob_fra] << " , " - << std::setw(9) << std::left << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_rob_siz] << " | " ; - if (sm_ros_accepted_outfile.is_open()) sm_ros_accepted_outfile << ost.str() << std::endl; - } - } - // total - (ros.second)[rh_all_ev_hit_fra] = 0.; - (ros.second)[rh_all_ev_rob_fra] = 0.; - (ros.second)[rh_all_ev_rob_siz] = 0.; - // normal collect - (ros.second)[rh_normal_ev_hit_fra] = 0.; - (ros.second)[rh_normal_ev_rob_fra] = 0.; - (ros.second)[rh_normal_ev_rob_siz] = 0.; - // eventbuilding collect - (ros.second)[rh_evbld_ev_hit_fra] = 0.; - (ros.second)[rh_evbld_ev_rob_fra] = 0.; - (ros.second)[rh_evbld_ev_rob_siz] = 0.; - } -} diff --git a/HLT/HLTTestApps/src/Event.h b/HLT/HLTTestApps/src/Event.h deleted file mode 100644 index ab9d31ec676..00000000000 --- a/HLT/HLTTestApps/src/Event.h +++ /dev/null @@ -1,248 +0,0 @@ -//Dear emacs, this is -*- c++ -*- - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -/** - * @file HLTTestApps/src/Event.h - * @author <a href="mailto:Andre.dos.Anjos@cern.ch">Andre Anjos</a> - * $Author: ricab $ - * $Revision: 89 $ - * $Date: 2013-07-05 15:44:02 +0200 (Fri, 05 Jul 2013) $ - * - * @brief Describes a utility class to handle the event data in an Event-basis - * way. - */ - -#ifndef HLTTESTAPPS_EVENT_H -#define HLTTESTAPPS_EVENT_H - -#include <map> -#include <set> -#include <vector> -#include <cstdint> -#include <iostream> -#include <fstream> -#include "eformat/ROBFragment.h" -#include "eformat/FullEventFragment.h" -#include "hltinterface/DataCollector.h" -#include "hltinterface/DCM_ROBInfo.h" - -// Fwd decl -namespace boost -{ - namespace python - { - class dict; - } -} - -namespace HLTTestApps { - - /** - * The hltinterface::DataCollector implementation. This class keeps both the - * event map and the original data that should be deleted when the event is - * supposed to be deleted. It provides the HLT with a transparent emulation - * of online data collection. - */ - class Event: public hltinterface::DataCollector { - - public: //interface - - /** - * C'tor. - * - * @param event The self contained input event - */ - Event(const eformat::read::FullEventFragment& event); - - /** - * D'tor - */ - virtual ~Event() {} - - /** - * Access the LVL1 identifier for this event - */ - inline uint32_t lvl1_id (void) const { return m_lvl1_id; } - - /** - * Accesses the LVL1 result - */ - inline const std::vector<eformat::ROBFragment<const uint32_t*> >& - l1r (void) const { return m_l1r; } - - /** - * Reserve a series of ROB's for possible future retrieval. This method allows to - * tell the DataCollector what ROBs may be needed based on the geometrical RoI - * dimensions. In this way ROB requests can be grouped and the ROS access rate can - * be reduced. The method can be called several times before an actual ROB retreval - * happens with the "collect" method. - * - * @param lvl1_id The LVL1 identifier for the data of interest - * @param ids The identifiers of the ROBs to reserve. - */ - virtual void reserveROBData(const uint32_t lvl1_id, - const std::vector<uint32_t>& ids); - - /** - * Collects a series of ROB's, given their identifiers. This method should - * return in addition to the number of ROB's successfully collected also their - * corresponding ROBInfo objects with additional information for cost monitoring - * - * @param data Output vector of ROBInfo objects - * @param lvl1_id The LVL1 identifier for the data of interest - * @param ids The identifiers of each ROB requested. - * @return Number of output ROBInfo objects - */ - virtual uint32_t - collect(std::vector<hltinterface::DCM_ROBInfo>& data, - const uint32_t lvl1_id, - const std::vector<uint32_t>& ids); - - /** - * Collect all remaining data for this event, AKA event building. This method should - * return in addition to the number of ROB's successfully collected also their - * corresponding ROBInfo objects with additional information for cost monitoring. - * - * @param data Output vector of ROBInfo objects - * @param lvl1_id The LVL1 identifier for the data of interest - * @return Number of output ROBInfo objects - */ - virtual uint32_t - collect(std::vector<hltinterface::DCM_ROBInfo>& data, - const uint32_t lvl1_id); - - /** - * Register this instance as the current DataCollector instance - */ - inline void register_datacollector(void) { - hltinterface::DataCollector::instance(this); - } - - // Static stuff - public: - - /** - * Method that is exposed to python to set the ROS2ROB map (fills in the - * internal ROB2ROS map). - * - * @param d A dictionary mapping ROSID to lists of ROBID's. - * @throws Boost.Python.ArgumentError if d is not a dictionary. - * @throws Boost.Python.TypeError if d does not map ROSID's to lists of - * ROBID's. - * @throws Boost.Python.OverflowError if d's keys/values do not fit into - * ROSID and ROBID types respectively. - */ - static void set_ros2rob_map(const boost::python::dict& d); - - /** - * Method that is exposed to python to set the set of ROB IDs of the custom - * ROBs that should also be included in the L1 Result - * - * @param l A list of ROBID's - * @throws Boost.Python.ArgumentError if l is not a list - * @throws Boost.Python.TypeError if any of l's elements is not ROBID's - * @throws Boost.Python.OverflowError if any of l's elements does not fit - * into the ROBID type. - */ - static void set_l1r_robs(const boost::python::list& l); - - /** - * Method that is exposed to python to set the ROB prefetching strategy used in - * the DCM - * - * @param s A list with one element and with a value of either 0 or 1 - * @throws Boost.Python.ArgumentError if s is not a list - * @throws Boost.Python.TypeError if any of s's elements of type integer - * @throws Boost.Python.OverflowError if any of s's elements does not fit - */ - static void set_dcm_strategy(const boost::python::list& s); - /** - * Method that is exposed to python to print the map of ROS hits - * - * @param number of events - */ - static void debug_print_ros_hit_map(const int); - - /** - * Method to accumulate statistics for the map of ROS hits - * - * @param number of stream tags - */ - void accumulateStatistics(const int); - - // More static stuff - private: - typedef std::string ROSID; // must be unique - used for logging - typedef uint32_t ROBID; // as received by collect methods - typedef std::map<ROBID, ROSID> ROB2ROSMap; - typedef std::map<ROSID, std::vector<float> > ROSHitMap; - - // valid for all Events in the whole run - // this should be set with set_ros2rob_map - static ROB2ROSMap sm_rob2ros; - static ROSHitMap sm_rosHitMap; - static ROSHitMap sm_rosHitMapReject; - static ROSHitMap sm_rosHitMapAccept; - - // valid for all Events in the whole run - // this specifies a set of custom source IDs for the ROBs that should be - // considered part of the L1 Result - static std::set<ROBID> sm_l1r_robs; - - // Number of events used for ROS hit map - static std::vector<int> sm_eventsForROSStat; - - // ROS prefetching strategy - // 0 = strategy as in Run 1,i.e. use of the prefetching list only when a ROB is needed - // 1 = strategy as at begin of Run 2, i.e. immediate retrieval of all ROBs on the prefetching list - static int sm_strategy; - - // for debug purposes - static void debug_print_rob_ros_map(); - static void debug_print_l1r_robs(); - - // data output files - static std::ofstream sm_ros_rejected_outfile; ///< name of output file with ROS hits for rejected events - static std::ofstream sm_ros_accepted_outfile; ///< name of output file with ROS hits for accepted events - - // Representation - private: - struct ROB - { - ROB(ROBID id, const uint32_t * r) : id(id), rob{r} {} - ROB(ROBID id, const uint32_t * r, const uint32_t s) : id(id), rob{r} , size_word(s) {} - const ROBID id; - const uint32_t * rob = nullptr; - const uint32_t size_word = 0; - bool reserved = false; - bool prefetched = false; - }; - - std::map<uint32_t, ROB> m_map; ///< The ROB ID to ROB info map - std::set<ROSID> m_hit_roses; ///< ROSes ROBs were retrieved from - std::vector<eformat::ROBFragment<const uint32_t*> > m_l1r; ///< LVL1 result - uint32_t m_lvl1_id; ///< My unique LVL1 identifier - std::map<std::string, std::set<uint32_t> > m_Det_Robs_for_retrieval; ///< for ROB prefetching - - // Mark all ROSes with ROBs in the event as hit - void hit_roses(); - // Mark all ROSes with specified ROBs as hit - void hit_roses(const std::vector<ROBID>& robids); - // get the ROSID this ROBID corresponds to. Default to a fake ROSID - ROSID get_rosid(ROBID robid) const; - // get a fake ROSID for this ROBID - ROSID get_fake_rosid(ROBID robid) const; - // check whether a ROB is cached - bool is_cached(const ROB& rob) const; - // check an L1 ID against the current event - bool check_l1id(const uint32_t l1id) const; - // for debug purposes - void debug_print_hit_roses() const; - }; -} - -#endif /* HLTTESTAPPS_EVENT_H */ diff --git a/HLT/HLTTestApps/src/IInfoRegister_wrap.cxx b/HLT/HLTTestApps/src/IInfoRegister_wrap.cxx deleted file mode 100644 index 465944dcd46..00000000000 --- a/HLT/HLTTestApps/src/IInfoRegister_wrap.cxx +++ /dev/null @@ -1,74 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - * @file IInfoRegister_wrap.cxx - * @author Ricardo Abreu - * - * @brief Python bindings for hltinterface::IInfoRegister - */ - -#include "IInfoRegister_wrap.h" -#include "issue.h" -#include "util.h" - -#include "hltinterface/IInfoRegister.h" -#include "dynlibs/Module.h" - -#include <boost/python.hpp> - -#include <memory> -#include <string> -#include <vector> - - -using namespace std; -using namespace boost::python; -using namespace boost::property_tree; -using hltinterface::IInfoRegister; - -namespace -{ - ////////////////////////////////////////////////////////////////////////////// - const string factory_name = "create_hltmp_infoservice"; - - ////////////////////////////////////////////////////////////////////////////// - shared_ptr<IInfoRegister> create_IInfoRegister(const string& lib) - { - typedef IInfoRegister* (*factory)(); - - Module::add("InfoService", vector<string>{lib}, vector<string>{}); - auto fact = Module::get("InfoService")->function<factory>(factory_name); - - if(!fact) - { - boost::format msg{"Failed to locate function %s in library %s"}; - throw(HLTTESTAPPS_UNCLASSIFIED((msg % factory_name % lib).str())); - } - - auto raw = fact(); - if(!raw) - { - boost::format msg{"Failed to create IInfoRegister with function %s " - "from library %s"}; - throw(HLTTESTAPPS_UNCLASSIFIED((msg % factory_name % lib).str())); - } - - return shared_ptr<IInfoRegister>(raw); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void HLTTestApps::wrap_IInfoRegister() -{ - class_<IInfoRegister, boost::noncopyable>("IInfoRegister", docstr, no_init) - .def("__init__", make_constructor(&create_IInfoRegister), docstr) - .def("configure", &IInfoRegister::configure, docstr) - .def("prepareForRun", &IInfoRegister::prepareForRun, docstr) - .def("prepareWorker", &IInfoRegister::prepareWorker, docstr) - .def("finalizeWorker", &IInfoRegister::finalizeWorker, docstr) - .def("finalize", &IInfoRegister::finalize, docstr); -} - - diff --git a/HLT/HLTTestApps/src/IInfoRegister_wrap.h b/HLT/HLTTestApps/src/IInfoRegister_wrap.h deleted file mode 100644 index d88e33fa570..00000000000 --- a/HLT/HLTTestApps/src/IInfoRegister_wrap.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - * @file src/IInfoRegister_wrap.h - * @author Ricardo Abreu - * - * @brief Python bindings for hltinterface::IInfoRegister - */ - -#ifndef IINFOREGISTER_WRAP_H_ -#define IINFOREGISTER_WRAP_H_ - -namespace HLTTestApps -{ - /** - * Wrap the IInfoRegister type. When this is called, a wrapped IInfoRegister - * is declared for Python usage, with the following public members: - * - a ctor, which receives a string, specifying the name of the - * library that contains a particular IInfoRegister implementation - * - configure, which receives a ptree, and returns a boolean value - * indicating success or failure - * - prepareForRun, which receives a ptree, and returns a boolean value - * indicating success or failure - * - prepareWorker, which receives a ptree, and returns a boolean value - * indicating success or failure - * - finalizeWorker, which receives a ptree, and returns a boolean value - * indicating success or failure - * - finalize, which receives a ptree, and returns a boolean value - * indicating success or failure - * - * For more information, refer to the IInfoRegister directly. - * - */ - void wrap_IInfoRegister(); -} - -#endif /* IINFOREGISTER_WRAP_H_ */ diff --git a/HLT/HLTTestApps/src/L1_ROBs.h b/HLT/HLTTestApps/src/L1_ROBs.h deleted file mode 100644 index 1e254a20a3e..00000000000 --- a/HLT/HLTTestApps/src/L1_ROBs.h +++ /dev/null @@ -1,25 +0,0 @@ -//Dear emacs, this is -*- c++ -*- - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include <array> -#include <cstdint> -#include "eformat/SourceIdentifier.h" - -namespace -{ - // ROBs that should go into the L1R - constexpr std::array<uint32_t, 12> L1R_ROBS = - {{ - 0x7300a8, 0x7300a9, 0x7300aa, 0x7300ab, // TDAQ_CALO_CLUSTER_PROC_ROI ROBs - 0x7500ac, 0x7500ad, // TDAQ_CALO_JET_PROC_ROI ROBs - 0x760001, // TDAQ_MUON_CTP_INTERFACE ROB - 0x770001, // TDAQ_CTP ROB - 0x910081, 0x910091, 0x910082, 0x910092 // TDAQ_CALO_TOPO_PROC ROBs - }}; - - constexpr std::array<eformat::SubDetector, 1> L1R_SDS = - {{eformat::TDAQ_CALO_FEAT_EXTRACT_ROI}}; -} diff --git a/HLT/HLTTestApps/src/TimeoutGuard.cxx b/HLT/HLTTestApps/src/TimeoutGuard.cxx deleted file mode 100644 index 1d0f8ee2428..00000000000 --- a/HLT/HLTTestApps/src/TimeoutGuard.cxx +++ /dev/null @@ -1,124 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - * @file TimeoutGuard.cxx - * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> - * - * @brief Implementation of our timeout watchdog. - */ - -#include "TimeoutGuard.h" -#include <boost/property_tree/ptree.hpp> -#include <boost/date_time/posix_time/posix_time_types.hpp> -#include <boost/format.hpp> -#include "ers/ers.h" -#include "issue.h" - -class BooleanPredicate { - private: - const bool& m_value; - public: - BooleanPredicate(const bool& value): m_value(value) {} - bool operator()() const { return m_value; } -}; - -/** - * Private helper - */ -struct HLTTestApps::TimeoutGuard::Watchdog { - - void operator()(unsigned int timeout_ms, - float warn_fraction, - HLTTestApps::TimeoutGuard& guard, - hltinterface::HLTInterface* processor) { - - const static boost::property_tree::ptree empty_ptree; - unsigned int warn_time_ms = unsigned(timeout_ms * warn_fraction); - unsigned int additional_error_time_ms = timeout_ms - warn_time_ms; - BooleanPredicate start_pred(guard.m_can_start); - BooleanPredicate reset_pred(guard.m_reset); - - while (!guard.m_stop) { - - boost::unique_lock<boost::mutex> lock(guard.m_mutex); - //temporarily unlocks mutex, waits for start signal - guard.m_condition.wait(lock, start_pred); - guard.m_can_start = false; - - //temporarily unlocks mutex, waits for reset signal or timeout - if (guard.m_condition.timed_wait(lock, boost::posix_time::milliseconds(warn_time_ms), reset_pred)) { - guard.m_reset = false; - continue; - } - - processor->timeOutReached(empty_ptree); - boost::format msg1("Reached \"soft timeout\" - %f%% (%d ms) of the total timeout value (%d ms). Asking HLT to wrap-up event processing..."); - msg1 % (100.0*warn_time_ms/timeout_ms) % warn_time_ms % timeout_ms; - ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg1.str())); - - //temporarily unlocks mutex, waits for reset signal or timeout - if (guard.m_condition.timed_wait(lock, boost::posix_time::milliseconds(additional_error_time_ms), reset_pred)) { - guard.m_reset = false; - continue; - } - - boost::format msg2("Reached the \"hard timeout\" value (%d ms)"); - msg2 % timeout_ms; - ers::error(HLTTESTAPPS_UNCLASSIFIED(msg2.str())); - - // Got hard timeout, need to wait for reset before continuing - guard.m_condition.wait(lock, reset_pred); - guard.m_reset = false; - } - - } -}; - -HLTTestApps::TimeoutGuard::TimeoutGuard(unsigned int timeout_ms, - float warn_fraction, hltinterface::HLTInterface* processor) - : m_stop(false), - m_mutex(), - m_condition(), - m_can_start(false), - m_reset(false), - m_timer(0) -{ - if (timeout_ms != 0) - m_timer = new boost::thread(Watchdog(), timeout_ms, warn_fraction, - boost::ref(*this), processor); -} - -HLTTestApps::TimeoutGuard::~TimeoutGuard() -{ - if (m_timer) { - m_stop = true; - - // try to reach one of the stop checks - start(); - reset(); - - m_timer->join(); - delete m_timer; - m_timer = 0; - } -} - -void HLTTestApps::TimeoutGuard::start() -{ - if (m_timer) { - boost::unique_lock<boost::mutex> lock(m_mutex); - m_can_start = true; - m_condition.notify_one(); - } -} - -void HLTTestApps::TimeoutGuard::reset() -{ - if (m_timer) { - boost::unique_lock<boost::mutex> lock(m_mutex); - m_reset = true; - m_condition.notify_one(); - } -} diff --git a/HLT/HLTTestApps/src/TimeoutGuard.h b/HLT/HLTTestApps/src/TimeoutGuard.h deleted file mode 100644 index 4d85862b140..00000000000 --- a/HLT/HLTTestApps/src/TimeoutGuard.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - * @file TimeoutGuard.h - * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> - * - * @brief Implements a python'able interface to a timeout thread. - */ - -#ifndef HLTTESTAPPS_TIMEOUTGUARD_H -#define HLTTESTAPPS_TIMEOUTGUARD_H - -#include "hltinterface/HLTInterface.h" -#include <boost/thread.hpp> - -namespace HLTTestApps { - - /** - * A threaded timer that keeps track of the time the HLT takes to process an - * event, notifying it when a timeout is imminent and issuing (logging, no - * exception is thrown) an error when the timeout is reached. The timer thread - * is started at the first call of start() (not upon object construction). It - * is stopped either when the instance is destroyed or when the timeout is - * reached (whichever happens first). A TimeoutGuard can also be reset() and - * re- start() -ed. This allows reusing the same instance -- typically for all - * the events in a process loop - as well as the timer thread itself -- - * which is not stopped or recreated, only held and released. - */ - class TimeoutGuard { - public: - - /** - * Constructor. - * - * @param timeout_ms The total timeout to be used for indicating an event is - * processing more than what was expected. In milliseconds. - * @param warn_fraction A fraction of the total time that should be used to - * warn the HLT framework a timeout is imminent. For instance, a - * warn_fraction of 0.8 means the HLT is warned about an imminent timeout - * when 80% of the time has elapsed. - * @param processor A pointer to the HLT implementation currently - * processing the event. - */ - TimeoutGuard(unsigned int timeout_ms, - float warn_fraction, - hltinterface::HLTInterface* processor); - - /** - * D'tor. Stops and joins the timer thread it it is running. - */ - virtual ~TimeoutGuard(); - - /** - * Launches the timer thread to start accounting for the current event being - * processed. - */ - void start(); - - /** - * Reset and stop the current counting until the next start. Notice the - * timer thread is kept alive and ready to go again until either start or - * the d'tor is called. - */ - void reset(); - - private: - struct Watchdog; - - bool m_stop; - boost::mutex m_mutex; - boost::condition_variable m_condition; - bool m_can_start; - bool m_reset; - boost::thread* m_timer; - }; - -} - -#endif /* HLTTESTAPPS_TIMEOUTGUARD_H */ - diff --git a/HLT/HLTTestApps/src/bindings.cxx b/HLT/HLTTestApps/src/bindings.cxx deleted file mode 100644 index 0394a0ca839..00000000000 --- a/HLT/HLTTestApps/src/bindings.cxx +++ /dev/null @@ -1,101 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - * @file src/bindings.cxx - * @author Andre Anjos, Ricardo Abreu - * - * @brief Python bindings linking to the HLT Interface. - */ - -#include <string> -#include <boost/python.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/property_tree/ptree.hpp> -#include <boost/lexical_cast.hpp> -#include "eformat/python/util.h" -#include "ptree_wrap.h" -#include "IInfoRegister_wrap.h" -#include "util.h" -#include "Event.h" -#include "issue.h" -#include "TimeoutGuard.h" - -using namespace boost::python; -using namespace boost::property_tree; -using namespace HLTTestApps; -using eformat::python::translate_ers_issue; - -/* - * Wrapper for hltinterface::HLTInterface::hltUserCommand that can receive the - * user parameters as a python tuple and puts everything in the required ptree - */ -bool hltUserCommand(hltinterface::HLTInterface& interface, - const std::string& usrCmd, - tuple usrParam) -{ - ptree pt(usrCmd); - int len = extract<int>(usrParam.attr("__len__")()); - for(int i = 0; i < len; i++) - pt.put("Params." + boost::lexical_cast<std::string>(i), - extract<std::string>(usrParam[i])()); - - return interface.hltUserCommand(pt); -} - -BOOST_PYTHON_FUNCTION_OVERLOADS(process_overloads, - process, 3, 4) - -BOOST_PYTHON_MODULE(libpyhlttestapps) -{ - //a catch-all for exception types - register_exception_translator<ers::Issue>(&translate_ers_issue); - - // wrap the boost ptree type - wrap_ptree(); - - // wrap the IInfoRegister type - wrap_IInfoRegister(); - - class_<TimeoutGuard, boost::noncopyable>("TimeoutGuard", docstr, no_init) - .def(init<unsigned int, float, hltinterface::HLTInterface*>(docstr)) - .def("start", &TimeoutGuard::start, docstr) - .def("reset", &TimeoutGuard::reset, docstr) - ; - - class_<hltinterface::HLTInterface, boost::noncopyable>("HLTInterface", docstr, - no_init) - .def("__init__", make_constructor(&load_impl<hltinterface::HLTInterface>), - docstr) - .def("configure", &hltinterface::HLTInterface::configure, docstr) - .def("connect", &hltinterface::HLTInterface::connect, docstr) - .def("prepareForRun", &hltinterface::HLTInterface::prepareForRun, docstr) - .def("process", process, process_overloads(docstr)) - .def("stopRun", &hltinterface::HLTInterface::stopRun, docstr) - .def("disconnect", &hltinterface::HLTInterface::disconnect, docstr) - .def("unconfigure", &hltinterface::HLTInterface::unconfigure, docstr) - .def("publishStatistics", &hltinterface::HLTInterface::publishStatistics, - docstr) - .def("prepareWorker", &hltinterface::HLTInterface::prepareWorker, docstr) - .def("finalizeWorker", &hltinterface::HLTInterface::finalizeWorker, docstr) - .def("hltUserCommand", hltUserCommand, docstr) - ; - - def("set_ros2rob_map", &Event::set_ros2rob_map, docstr); - def("set_l1r_robs", &Event::set_l1r_robs, docstr); - def("set_dcm_strategy", &Event::set_dcm_strategy, docstr); - def("print_ros_hit_map", &Event::debug_print_ros_hit_map, docstr); - def("python_prompt", &python_prompt, docstr); - def("python_exec", &python_exec, docstr); - def("python_execfile", &python_execfile, docstr); - def("tdaq_time_str_from_microsec", &tdaq_time_str_from_microsec, docstr); - def("ers_debug_level", &ers_debug_level, docstr); - def("get_ers_debug_level", &get_ers_debug_level, docstr); - def("ers_debug", &ers_debug, docstr); - def("ers_info", &ers_info, docstr); - def("ers_warning", &ers_warning, docstr); - def("ers_error", &ers_error, docstr); - def("ers_fatal", &ers_fatal, docstr); - def("ipc_init", &ipc_init, docstr); -} diff --git a/HLT/HLTTestApps/src/issue.h b/HLT/HLTTestApps/src/issue.h deleted file mode 100644 index fe3f6d805df..00000000000 --- a/HLT/HLTTestApps/src/issue.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - * @file issue.h - * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> - * - * @brief ERS issues that can be raised by our Boost.Python framework - */ - -#ifndef HLTTESTAPPS_ISSUE_H -#define HLTTESTAPPS_ISSUE_H - -#include <ers/ers.h> -#include <boost/format.hpp> - -ERS_DECLARE_ISSUE(HLTTestApps, Issue, " - HLTTestApps base issue", ) -#define HLTTESTAPPS_ISSUE HLTTestApps::Issue(ERS_HERE) - -ERS_DECLARE_ISSUE_BASE(HLTTestApps, Unclassified, HLTTestApps::Issue, - ": " << reason, , ((std::string)reason)) -#define HLTTESTAPPS_UNCLASSIFIED(x) HLTTestApps::Unclassified(ERS_HERE, x) - -#endif /* HLTTESTAPPS_ISSUE_H */ - diff --git a/HLT/HLTTestApps/src/ptree_wrap.cxx b/HLT/HLTTestApps/src/ptree_wrap.cxx deleted file mode 100644 index 8c684a7d38a..00000000000 --- a/HLT/HLTTestApps/src/ptree_wrap.cxx +++ /dev/null @@ -1,195 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/* - * @file: src/ptree_wrap.cxx - * @author: Ricardo Abreu - * - * @brief Python bindings for boost::property_tree::ptree - */ - -#include "ptree_wrap.h" -#include "util.h" -#include "eformat/python/util.h" -#include <boost/property_tree/ptree.hpp> -#include <boost/property_tree/xml_parser.hpp> -#include <boost/python.hpp> -#include <boost/foreach.hpp> -#include <sstream> -#include <fstream> - -using namespace boost::python; -using namespace boost::property_tree; -using std::string; - -namespace -{ - ////////////////////////////////////////////////////////////////////////////// - enum ListTarget {KEYS, VALS, VALS_DATA, ITEMS}; - - ////////////////////////////////////////////////////////////////////////////// - void readxml(ptree& p, const string& xml_filename) - { - std::ifstream input(xml_filename.c_str()); - int flags = xml_parser::no_comments | xml_parser::trim_whitespace; - xml_parser::read_xml(input, p, flags); - } - - // The methods involving a path couldn't be bound to python directly unless - // we told python how to convert from string to ptree::path_type. We use - // instead the implicit conversion of string to ptree::path_type in C++ - - ////////////////////////////////////////////////////////////////////////////// - ptree& put(ptree& p, const string& path, const string& value) - { - return p.put(path, value); - } - - ////////////////////////////////////////////////////////////////////////////// - ptree& add(ptree& p, const string& path, const string& value) - { - return p.add(path, value); - } - - ////////////////////////////////////////////////////////////////////////////// - ptree& add_child(ptree& p, const string& path, ptree& child) - { - return p.add_child(path, child); - } - - ////////////////////////////////////////////////////////////////////////////// - ptree& put_child(ptree& p, const string& path, ptree& child) - { - return p.put_child(path, child); - } - - ////////////////////////////////////////////////////////////////////////////// - const ptree& get_child(const ptree& p, const string& path) - { - boost::optional<const ptree&> ret = p.get_child_optional(path); - if(!ret) - { - PyErr_SetString(PyExc_KeyError, path.c_str()); - boost::python::throw_error_already_set(); - } - return *ret; - } - - ////////////////////////////////////////////////////////////////////////////// - const string& get(const ptree& p, const string& path) - { - return get_child(p, path).data(); - } - - ////////////////////////////////////////////////////////////////////////////// - void set_data(ptree& p, const string& data) - { - p.data() = data; - } - - ////////////////////////////////////////////////////////////////////////////// - list to_list(const ptree& p, ListTarget target) - { - list ret; - BOOST_FOREACH(const ptree::value_type& val, p) - switch(target) - { - case KEYS: - ret.append(val.first); - break; - case VALS: - ret.append(val.second); - break; - case VALS_DATA: - ret.append(val.second.data()); - break; - default: - ret.append(make_tuple(val.first, val.second)); - } - - return ret; - } - - ////////////////////////////////////////////////////////////////////////////// - list keys(const ptree& p) - { - return to_list(p, KEYS); - } - - ////////////////////////////////////////////////////////////////////////////// - list values(const ptree& p) - { - return to_list(p, VALS); - } - - ////////////////////////////////////////////////////////////////////////////// - list values_data(const ptree& p) - { - return to_list(p, VALS_DATA); - } - - ////////////////////////////////////////////////////////////////////////////// - list items(const ptree& p) - { - return to_list(p, ITEMS); - } - - ////////////////////////////////////////////////////////////////////////////// - object iter(const ptree& p) - { - return object(handle<>(PyObject_GetIter(keys(p).ptr()))); - } - - ////////////////////////////////////////////////////////////////////////////// - bool in(const ptree& p, const string& path) - { - return static_cast<bool>(p.get_child_optional(path)); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void HLTTestApps::wrap_ptree() -{ - const string& (ptree::* const_data)() const = &ptree::data; - - // some of the operations provided below are useful mainly for testing - - class_<ptree> ("ptree", docstr, init<>(docstr)) - - // default policy - .def(init<string>(docstr)) - .def("readxml", readxml, docstr) - .def("__str__", to_string, docstr) - .def("__len__", &ptree::size, docstr) - .def("set_data", set_data, docstr) - .def("keys", keys, docstr) - .def("values", values, docstr) - .def("values_data", values_data, docstr) - .def("items", items, docstr) - .def("__iter__", iter, docstr) - .def("__contains__", in, docstr) - - // Strings are immutable => python does not accept refs => need to copy - .def("data", const_data, return_value_policy<copy_const_reference>(),docstr) - .def("__getitem__", get, return_value_policy<copy_const_reference>(),docstr) - - // Can return internal reference - .def("__setitem__", put, return_internal_reference<>(), docstr) - - // if we need to add an item with a repeated path - .def("add", add, return_internal_reference<>(), docstr) - - // if we need to add a sub-ptree (possibly with a repeated path) - .def("add_child", add_child, return_internal_reference<>(), docstr) - - // if we need to add a sub-ptree (replacing existing path) - .def("put_child", put_child, return_internal_reference<>(), docstr) - - // Can return internal reference. For this one, notice that const doesn't - // mean anything at the python level, so, in python, the returned ptree - // can be modified. - .def("get_child", get_child, return_internal_reference<>(), docstr) - ; -} - diff --git a/HLT/HLTTestApps/src/ptree_wrap.h b/HLT/HLTTestApps/src/ptree_wrap.h deleted file mode 100644 index fbc3bb91044..00000000000 --- a/HLT/HLTTestApps/src/ptree_wrap.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/* - * @file: src/ptree_wrap.h - * @author: Ricardo Abreu - * - * @brief Python bindings for boost::property_tree::ptree - */ - -#ifndef PTREE_WRAP_H_ -#define PTREE_WRAP_H_ - -namespace HLTTestApps -{ - /** - * Wrap the boost ptree (string values and paths) type. When this is called, - * a wrapped IInfoRegister is declared for Python usage, with the following - * public members: - * - a ctor with no parameters. - * - a ctor receiving a string. - * - readxml, receives a string specifying an xml file name and fills in - * the ptree from the contents of this file (replacing previous ptree - * contents). - * - \__str__, returns a string representation of the ptree (following the - * xml format). Usage examples: print my_ptree, str(my_ptree). - * - \__len__, returns the size of the ptree (ptree::size). Usage example: - * len(my_ptree). - * - set_data, sets the data of the root ptree node. - * - keys, returns a list with the keys of the first children in this - * ptree. - * - values, returns a list with the first children in this ptree - * (themselves ptrees). - * - items, returns a list of key-value pairs. The keys and values are the - * same as those returned in the corresponding methods. - * - \__iter__, returns an iterator to this ptree's keys. Usage example: - * for x in my_ptree: print x. - * - \__contains__, receives a string and returns whether or not it. - * corresponds to an existing path in this ptree. Usage example: - * x in my_ptree. - * - data, returns a copy of the data contained in the root node of this - * ptree. - * - \__getitem__, receives a string path and returns a copy of the data - * contained in the corresponding node. Usage example: my_ptree['a.b.c']. - * - \__setitem__, receives a string path and a string value. Sets the data - * of node at the specified path to the specified value. Returns a - * reference to the ptree at the specified path. Usage examples: - * my_ptree['a.b.c] = 'abc'. Notice the returned reference allows - * modifying the ptree - for instance, after the following Python code, - * my_ptree['x.y.z'] will contain the data '_' - * pt.__setitem__('x.y.z', 'xyz').set_data('_'). - * - add, receives a string path and a string value and adds a ptree node - * with the value data at the specified path. Returns a reference to the - * new ptree node (which can be modified through it). Notice the path can - * be repeated. For instance, after doing my_pree.add('a','a1') and - * my_ptree.add('a','a2'), my_ptree will have two new children, both at - * key 'a' but with different values. - * - add_child, receives a string path and a ptree and adds the ptree at - * the specified path. Returns a reference to the newly inserted ptree - * which can be modified through it. Notice the path can be repeated, - * just like with add. - * - put_child, receives a string path and a ptree and puts the ptree at - * the specified path. If there was already one ptree at this path, it is - * replaced. If there were more than one ptree with this path, one of it - * is replaced (which one is unspecified). - * - get_child, receives a string path and returns an internal reference - * to the ptree at the specified path. If no ptree exists at that path, - * a KeyError is raised. - * - * For more information refer to the boost::ptree directly. - * - */ - void wrap_ptree(); -} - - -#endif /* PTREE_WRAP_H_ */ diff --git a/HLT/HLTTestApps/src/util.cxx b/HLT/HLTTestApps/src/util.cxx deleted file mode 100644 index 58f083b6bcf..00000000000 --- a/HLT/HLTTestApps/src/util.cxx +++ /dev/null @@ -1,736 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - * @file src/util.cxx - * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> - * - * @brief Implements a few of the utilities in util.h - */ - -#include "util.h" -#include "hltinterface/EventId.h" -#include "eformat/index.h" -#include "eformat/eformat.h" -#include "eformat/write/eformat.h" -#include "owl/time.h" -#include "GaudiKernel/ITHistSvc.h" -#include "GaudiKernel/ServiceHandle.h" -#include "StoreGate/DataHandle.h" -#include "StoreGate/StoreGate.h" -#include "TrigT1Result/RoIBResult.h" -#include "TrigT1Result/CTP_RDO.h" -#include "TrigT1Result/MuCTPI_RDO.h" -#include "CTPfragment/CTPdataformatVersion.h" -#include "Event.h" // datacollector implementation -#include "L1_ROBs.h" // L1 RoIB ROB identifiers -#include <Python.h> -#include <cstdlib> -#include <set> -#include <algorithm> -#include <iterator> -#include <functional> -#include <cctype> -#include <execinfo.h> -#include <iostream> -#include <boost/property_tree/xml_parser.hpp> - -using namespace std; - -namespace -{ - class ProcessProxy - { - public: - ProcessProxy(hltinterface::HLTInterface& interface, - const eformat::read::FullEventFragment& e, - HLTTestApps::TimeoutGuard& watchdog, - uint32_t max_result_size); - - /** - * Call operator. Processes the event - */ - eformat::helper::u32list operator()(); - - private: - hltinterface::HLTInterface& m_interface; - const eformat::read::FullEventFragment& m_event; - hltinterface::HLTResult m_hltr; - HLTTestApps::TimeoutGuard& m_watchdog; - uint32_t m_max_result_size; - }; - - /** - * Programatically obtain and print a stack trace. - */ - void print_stack_trace () - { - static const int TRACE_DEPTH=128; - void * array[TRACE_DEPTH]; - int nSize = backtrace(array, TRACE_DEPTH); - char ** symbols = backtrace_symbols(array, nSize); - std::cerr << "Found " << nSize << " backtrace symbols." << std::endl; - for (int i = 0; i < nSize; i++) std::cerr << symbols[i] << std::endl; - free(symbols); - } - - /* - * A PEB specification type consisting of a pair with a set of robs and a set - * of sub-detectors - */ - using PebSpec = std::pair<std::set<uint32_t>, std::set<eformat::SubDetector>>; - - /* - * If all tags specify PEB lists, get a pair with a list of ROB IDs and a list - * of SubDetector IDs, corresponding to the union of the PEB lists specified - * in all tags. Otherwise (at least one tag specifies FEB), get a pair with - * two empty sets. - */ - PebSpec get_peb_list(const std::vector<eformat::helper::StreamTag>& tags) - { - std::pair<std::set<uint32_t>, std::set<eformat::SubDetector>> ret; - for(const auto& t : tags) - { - if(!t.robs.empty() || !t.dets.empty()) - { - copy(begin(t.robs), end(t.robs), inserter(ret.first, - begin(ret.first))); - copy(begin(t.dets), end(t.dets), inserter(ret.second, - begin(ret.second))); - } - else // at least one tag requires full event building - { - // we clear everything and we're done (empty return signals no PEB) - ret.first.clear(); - ret.second.clear(); - break; - } - } - - return ret; - } - - /* - * select robs from src_robs following peb_spec, and put them into selection, - * filtering result robs or not according to filter_hltrs - */ - void choose_robs(std::vector<const uint32_t*>& selection, - const std::vector<eformat::read::ROBFragment>& src_robs, - const PebSpec& peb_spec, - bool filter_hltrs) - { - // for each rob... - for(const auto& rob : src_robs) - { - auto sid = rob.source_id(); - auto sdid = eformat::helper::SourceIdentifier{sid}.subdetector_id(); - if(!filter_hltrs || // ... if we don't need to filter... - (sdid != eformat::TDAQ_HLT && // ... or if we don't have to filter - sdid != eformat::TDAQ_LVL2)) // this particular rob... - { - auto end_peb_robs = end(peb_spec.first); - auto end_peb_dets = end(peb_spec.second); - bool peb_empty = peb_spec.first.empty() && peb_spec.second.empty(); - if(peb_empty || // ... if we need FEB, or if the rob is covered by PEB - find(begin(peb_spec.first), end_peb_robs, sid) != end_peb_robs || - find(begin(peb_spec.second), end_peb_dets, sdid) != end_peb_dets) - { - selection.push_back(rob.start()); // then we select it - } - } - } - } - - /* - * Choose which ROBs, from both src and hltr_robs, to put into the output - * event. If FEB is required, all robs from hltr_robs are included in the - * output, as well as all robs from src, with the exception of HLT results. - * If PEB is required, only the robs covered by it are included. HLTR robs - * from src are still not included in this case. - */ - std::vector<const uint32_t*> - choose_event_payload(const eformat::read::FullEventFragment& src, - const std::vector<eformat::read::ROBFragment>& hltr_robs, - const std::vector<eformat::helper::StreamTag>& tags) - { - std::vector<const uint32_t*> ret; - std::vector<eformat::read::ROBFragment> src_robs; - src.robs(src_robs); - ret.reserve(src_robs.size() + hltr_robs.size()); - - auto peb_spec = get_peb_list(tags); - choose_robs(ret, src_robs, peb_spec, true); - choose_robs(ret, hltr_robs, peb_spec, false); - - return ret; - } - - /* - * check if L1 simulation was run and get the new L1 trigger info words and the - * updated L1 ROBs - */ - bool check_rerun_L1(const eformat::read::FullEventFragment& src_event, - std::vector<uint32_t>& l1_info, - std::map<uint32_t,uint32_t* >& l1_robs) - { - bool ret(0); - // get the l1 trigger info from the original event - unsigned int number_of_words_tav = src_event.nlvl1_trigger_info()/3; - const uint32_t* buffer; - src_event.lvl1_trigger_info(buffer); - std::vector<uint32_t> original_l1_info(buffer, buffer+src_event.nlvl1_trigger_info()); - std::vector<uint32_t> original_l1_info_TBP(buffer,buffer+number_of_words_tav); - std::vector<uint32_t> original_l1_info_TAV(buffer+2*number_of_words_tav, buffer+src_event.nlvl1_trigger_info()); - - // get the l1 trigger info from the RoIB result (remade if L1 is rerun) - - // use only the RoIB object in the transient store, do not try to remake it from persistent store and - // avoid any data collector call - if ( !StoreGate::instance().transientContains<ROIB::RoIBResult>("RoIBResult") ) { - return ret; // if there is no RoIB object in SG there is nothing to do and rerunLVL1 can not be checked - } - - // a transient object is available - const DataHandle<ROIB::RoIBResult> dobj; - StoreGate::instance().retrieve(dobj,"RoIBResult"); - if (!dobj.isValid()) { - return ret; // if there is no RoIB object there is nothing to do - } - - // check if the CTPResult from RoIB is different from event header (use only the TAV words) - if (number_of_words_tav != dobj->cTPResult().TAV().size()) { // e.g. run 1 data are used to simulate run 2 - ret = 1; - } else { // input data and simulation are for the same run period - for (unsigned int index = 0; index < dobj->cTPResult().TAV().size(); ++index) { - if (dobj->cTPResult().TBP()[index].roIWord() != original_l1_info_TBP[index]) {ret = 1;} - if (dobj->cTPResult().TAV()[index].roIWord() != original_l1_info_TAV[index]) {ret = 1;} - } - } - - // the L1 was not re-made, return immediately - if (!ret) return ret; - - //-------------------------+ - // L1 decision was remade | - //-------------------------+ - - // get all original L1 ROBs - std::map<uint32_t, std::vector<const uint32_t*> > original_RoIB_Robs, original_DAQ_Robs; - std::vector<eformat::read::ROBFragment> src_robs; - src_event.robs(src_robs); - for(const auto& rob : src_robs) { - auto sid = rob.source_id(); - auto sdid = eformat::helper::SourceIdentifier{sid}.subdetector_id(); - switch (sdid) { - case eformat::TDAQ_CALO_CLUSTER_PROC_DAQ: // = 0x72 - original_DAQ_Robs[sdid].push_back(rob.start()); - break; - case eformat::TDAQ_CALO_CLUSTER_PROC_ROI: // = 0x73, - if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS)) - original_RoIB_Robs[sdid].push_back(rob.start()); - break; - case eformat::TDAQ_CALO_JET_PROC_DAQ: // = 0x74, - original_DAQ_Robs[sdid].push_back(rob.start()); - break; - case eformat::TDAQ_CALO_JET_PROC_ROI: // = 0x75, - if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS)) - original_RoIB_Robs[sdid].push_back(rob.start()); - break; - case eformat::TDAQ_MUON_CTP_INTERFACE: // = 0x76, - if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS)) - original_RoIB_Robs[sdid].push_back(rob.start()); - else - original_DAQ_Robs[sdid].push_back(rob.start()); - break; - case eformat::TDAQ_CTP: // = 0x77 - if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS)) - original_RoIB_Robs[sdid].push_back(rob.start()); - else - original_DAQ_Robs[sdid].push_back(rob.start()); - break; - case eformat::TDAQ_CALO_TOPO_PROC: // = 0x91, - if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS)) - original_RoIB_Robs[sdid].push_back(rob.start()); - else - original_DAQ_Robs[sdid].push_back(rob.start()); - break; - - default: - break; - } - } - - // Remake the new L1 trigger info words for the event header - l1_info.resize(3*dobj->cTPResult().TAV().size(),0); - for (unsigned i = 0; i < dobj->cTPResult().TAV().size(); ++i) { - if ( i < dobj->cTPResult().TBP().size() ) l1_info[i] = dobj->cTPResult().TBP()[i].roIWord() ; - if ( i < dobj->cTPResult().TAP().size() ) l1_info[i+dobj->cTPResult().TAV().size()] = dobj->cTPResult().TAP()[i].roIWord() ; - if ( i < dobj->cTPResult().TAV().size() ) l1_info[i+2*dobj->cTPResult().TAV().size()] = dobj->cTPResult().TAV()[i].roIWord() ; - } - - // remake the L1 ROB payload data from the RoIB result - /** CTP ROD */ - // Default CTP minor version word - uint16_t minorVersion = 0x0004; // default minor CTP version - bool minorVersionFromRDO(0); - if (dobj->cTPResult().TAV().size() == 8) { minorVersion = 0x0003; } // CTP version for Run 1 - // DAQ - // get the l1 CTP_RDO which was remade - const DataHandle<CTP_RDO> dobj_ctp_rdo; - StoreGate::instance().retrieve(dobj_ctp_rdo,"CTP_RDO_Rerun"); - if (dobj_ctp_rdo.isValid()) { - // calculate CTP minor version word - CTPdataformatVersion ctpVersion(dobj_ctp_rdo->getCTPVersionNumber()); - // Set L1Apos to center of readout window - uint16_t l1a = ( dobj_ctp_rdo->getNumberOfBunches() - 1u ) / 2u; - l1a <<= ctpVersion.getL1APositionShift(); - uint16_t addWords = dobj_ctp_rdo->getNumberOfAdditionalWords(); - addWords <<= ctpVersion.getProgrammableExtraWordsShift(); - uint16_t ctpVer = dobj_ctp_rdo->getCTPVersionNumber(); - ctpVer <<= ctpVersion.getCTPFormatVersionShift(); - minorVersion = addWords + l1a + ctpVer; - minorVersionFromRDO = 1; - // payload data - std::vector<uint32_t> ctpDAQRod; - ctpDAQRod.reserve(dobj_ctp_rdo->getDataWords().size()); - for(const auto& j: dobj_ctp_rdo->getDataWords()) ctpDAQRod.push_back( j ); - - if ( (original_DAQ_Robs.find(eformat::TDAQ_CTP) != original_DAQ_Robs.end()) && - (original_DAQ_Robs[eformat::TDAQ_CTP].size() == 1)) { - eformat::write::ROBFragment ctpDAQRob(original_DAQ_Robs[eformat::TDAQ_CTP][0]); - ctpDAQRob.rod_minor_version( minorVersion ); - ctpDAQRob.rod_data(ctpDAQRod.size(),ctpDAQRod.data()); - l1_robs[ ctpDAQRob.source_id() ] = new uint32_t[ctpDAQRob.size_word()]; - auto copied = eformat::write::copy(*ctpDAQRob.bind(), l1_robs[ ctpDAQRob.source_id() ], ctpDAQRob.size_word()); - if(copied == 0 || copied != ctpDAQRob.size_word()) { - boost::format msg("Copy failed for DAQ CTP Rob: words copied: %s words expected %s"); - msg % copied, ctpDAQRob.size_word(); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - } - } - - // RoIB - std::vector<uint32_t> ctpRod; - ctpRod.reserve(dobj->cTPResult().roIVec().size()); - for(const auto& j: dobj->cTPResult().roIVec()) ctpRod.push_back( j.roIWord() ); - - if ( (original_RoIB_Robs.find(eformat::TDAQ_CTP) != original_RoIB_Robs.end()) && - (original_RoIB_Robs[eformat::TDAQ_CTP].size() == 1)) { - eformat::write::ROBFragment ctpRob(original_RoIB_Robs[eformat::TDAQ_CTP][0]); - ctpRob.rod_data(ctpRod.size(),ctpRod.data()); - if (minorVersionFromRDO) ctpRob.rod_minor_version(minorVersion); // reuse minor version of DAQ CTP ROB - l1_robs[ ctpRob.source_id() ] = new uint32_t[ctpRob.size_word()]; - auto copied = eformat::write::copy(*ctpRob.bind(), l1_robs[ ctpRob.source_id() ], ctpRob.size_word()); - if(copied == 0 || copied != ctpRob.size_word()) { - boost::format msg("Copy failed for RoIB CTP Rob: words copied: %s words expected %s"); - msg % copied, ctpRob.size_word() ; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - } - - /** Muon ROD */ - // DAQ - // get the l1 MuCTP_RDO which was remade - const DataHandle<MuCTPI_RDO> dobj_muctpi_rdo; - StoreGate::instance().retrieve(dobj_muctpi_rdo,"MUCTPI_RDO+"); - if (dobj_muctpi_rdo.isValid()) { - // payload data - std::vector<uint32_t> muCTPIDAQRod; - muCTPIDAQRod.reserve(dobj_muctpi_rdo->getAllCandidateMultiplicities().size() + dobj_muctpi_rdo->dataWord().size()); - for(const auto& j: dobj_muctpi_rdo->getAllCandidateMultiplicities()) muCTPIDAQRod.push_back( j ); - for(const auto& j: dobj_muctpi_rdo->dataWord()) muCTPIDAQRod.push_back( j ); - - if ( (original_DAQ_Robs.find(eformat::TDAQ_MUON_CTP_INTERFACE) != original_DAQ_Robs.end()) && - (original_DAQ_Robs[eformat::TDAQ_MUON_CTP_INTERFACE].size() == 1)) { - eformat::write::ROBFragment muCTPIDAQRob(original_DAQ_Robs[eformat::TDAQ_MUON_CTP_INTERFACE][0]); - muCTPIDAQRob.rod_data(muCTPIDAQRod.size(),muCTPIDAQRod.data()); - l1_robs[ muCTPIDAQRob.source_id() ] = new uint32_t[muCTPIDAQRob.size_word()]; - auto copied = eformat::write::copy(*muCTPIDAQRob.bind(), l1_robs[ muCTPIDAQRob.source_id() ], muCTPIDAQRob.size_word()); - if(copied == 0 || copied != muCTPIDAQRob.size_word()) { - boost::format msg("Copy failed for DAQ muCTPI Rob: words copied: %s words expected %s"); - msg % copied, muCTPIDAQRob.size_word(); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - } - } - // RoIB - std::vector<uint32_t> muCTPIRod; - muCTPIRod.reserve(dobj->muCTPIResult().roIVec().size()); - for(const auto& j: dobj->muCTPIResult().roIVec()) muCTPIRod.push_back( j.roIWord() ); - - if ( (original_RoIB_Robs.find(eformat::TDAQ_MUON_CTP_INTERFACE) != original_RoIB_Robs.end()) && - (original_RoIB_Robs[eformat::TDAQ_MUON_CTP_INTERFACE].size() == 1)) { - eformat::write::ROBFragment muCTPIRob(original_RoIB_Robs[eformat::TDAQ_MUON_CTP_INTERFACE][0]); - muCTPIRob.rod_data(muCTPIRod.size(),muCTPIRod.data()); - l1_robs[ muCTPIRob.source_id() ] = new uint32_t[muCTPIRob.size_word()]; - auto copied = eformat::write::copy(*muCTPIRob.bind(), l1_robs[ muCTPIRob.source_id() ], muCTPIRob.size_word()); - if(copied == 0 || copied != muCTPIRob.size_word()) { - boost::format msg("Copy failed for RoIB muCTPI Rob: words copied: %s words expected %s"); - msg % copied, muCTPIRob.size_word() ; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - } - - /** Jet/Energy ROD */ - // RoIB - for( unsigned int slink = 0; slink < dobj->jetEnergyResult().size(); ++slink ) { - std::vector<uint32_t> jetEnergyRod; - jetEnergyRod.reserve(dobj->jetEnergyResult()[slink].roIVec().size()); - for(const auto& j: dobj->jetEnergyResult()[slink].roIVec()) jetEnergyRod.push_back( j.roIWord() ); - - if ( (original_RoIB_Robs.find(eformat::TDAQ_CALO_JET_PROC_ROI) != original_RoIB_Robs.end()) && - (original_RoIB_Robs[eformat::TDAQ_CALO_JET_PROC_ROI].size() == dobj->jetEnergyResult().size())) { - eformat::write::ROBFragment jetEnergyRob(original_RoIB_Robs[eformat::TDAQ_CALO_JET_PROC_ROI][slink]); - jetEnergyRob.rod_data(jetEnergyRod.size(),jetEnergyRod.data()); - l1_robs[ jetEnergyRob.source_id() ] = new uint32_t[jetEnergyRob.size_word()]; - auto copied = eformat::write::copy(*jetEnergyRob.bind(), l1_robs[ jetEnergyRob.source_id() ], jetEnergyRob.size_word()); - if(copied == 0 || copied != jetEnergyRob.size_word()) { - boost::format msg("Copy failed for RoIB JET/Energy Rob: words copied: %s words expected %s"); - msg % copied, jetEnergyRob.size_word() ; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - } - } - - /* EMTau RODs */ - // RoIB - for( unsigned int slink = 0; slink < dobj->eMTauResult().size(); ++slink ) { - std::vector<uint32_t> eMTauRod; - eMTauRod.reserve(dobj->eMTauResult()[slink].roIVec().size()); - for(const auto& j: dobj->eMTauResult()[slink].roIVec()) eMTauRod.push_back( j.roIWord() ); - - if ( (original_RoIB_Robs.find(eformat::TDAQ_CALO_CLUSTER_PROC_ROI) != original_RoIB_Robs.end()) && - (original_RoIB_Robs[eformat::TDAQ_CALO_CLUSTER_PROC_ROI].size() == dobj->eMTauResult().size())) { - eformat::write::ROBFragment eMTauRob(original_RoIB_Robs[eformat::TDAQ_CALO_CLUSTER_PROC_ROI][slink]); - eMTauRob.rod_data(eMTauRod.size(),eMTauRod.data()); - l1_robs[ eMTauRob.source_id() ] = new uint32_t[eMTauRob.size_word()]; - auto copied = eformat::write::copy(*eMTauRob.bind(), l1_robs[ eMTauRob.source_id() ], eMTauRob.size_word()); - if(copied == 0 || copied != eMTauRob.size_word()) { - boost::format msg("Copy failed for RoIB EM/Tau Rob: words copied: %s words expected %s"); - msg % copied, eMTauRob.size_word() ; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - } - } - - /** L1Topo ROD */ - // RoIB - for( unsigned int slink = 0; slink < dobj->l1TopoResult().size(); ++slink ) { - std::vector<uint32_t> l1TopoRod; - l1TopoRod.reserve(dobj->l1TopoResult()[slink].rdo().getDataWords().size()); - for(const auto& j: dobj->l1TopoResult()[slink].rdo().getDataWords()) l1TopoRod.push_back( j ); - - if ( (original_RoIB_Robs.find(eformat::TDAQ_CALO_TOPO_PROC) != original_RoIB_Robs.end()) && - (original_RoIB_Robs[eformat::TDAQ_CALO_TOPO_PROC].size() == dobj->l1TopoResult().size())) { - eformat::write::ROBFragment l1TopoRob(original_RoIB_Robs[eformat::TDAQ_CALO_TOPO_PROC][slink]); - l1TopoRob.rod_data(l1TopoRod.size(),l1TopoRod.data()); - l1_robs[ l1TopoRob.source_id() ] = new uint32_t[l1TopoRob.size_word()]; - auto copied = eformat::write::copy(*l1TopoRob.bind(), l1_robs[ l1TopoRob.source_id() ], l1TopoRob.size_word()); - if(copied == 0 || copied != l1TopoRob.size_word()) { - boost::format msg("Copy failed for RoIB L1 Topo Rob: words copied: %s words expected %s"); - msg % copied, l1TopoRob.size_word() ; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - } - } - // in case the result size = 0 produce empty ROBs - if ((dobj->l1TopoResult().size() == 0) && (original_RoIB_Robs.find(eformat::TDAQ_CALO_TOPO_PROC) != original_RoIB_Robs.end())) { - for( unsigned int slink = 0; slink < original_RoIB_Robs[eformat::TDAQ_CALO_TOPO_PROC].size(); ++slink ) { - std::vector<uint32_t> l1TopoRod; - eformat::write::ROBFragment l1TopoRob(original_RoIB_Robs[eformat::TDAQ_CALO_TOPO_PROC][slink]); - l1TopoRob.rod_data(l1TopoRod.size(),l1TopoRod.data()); - l1_robs[ l1TopoRob.source_id() ] = new uint32_t[l1TopoRob.size_word()]; - auto copied = eformat::write::copy(*l1TopoRob.bind(), l1_robs[ l1TopoRob.source_id() ], l1TopoRob.size_word()); - if(copied == 0 || copied != l1TopoRob.size_word()) { - boost::format msg("Copy failed for RoIB (empty) L1 Topo Rob: words copied: %s words expected %s"); - msg % copied, l1TopoRob.size_word() ; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - } - } - - return ret; - } -} - -ProcessProxy::ProcessProxy(hltinterface::HLTInterface& interface, - const eformat::read::FullEventFragment& e, - HLTTestApps::TimeoutGuard& watchdog, - uint32_t max_result_size) - : m_interface(interface) - , m_event(e) - , m_watchdog(watchdog) - , m_max_result_size(max_result_size) -{ - m_hltr.max_result_size = m_max_result_size; - m_hltr.fragment_pointer = new uint32_t[m_max_result_size]; - m_hltr.fragment_pointer[0] = 0; //makes WW happier -} - -eformat::helper::u32list ProcessProxy::operator()() -{ - try - { - HLTTestApps::Event proxy(m_event); //our DataCollector interface - proxy.register_datacollector(); - auto eid = hltinterface::EventId{m_event.global_id(), - m_event.lvl1_id(), - m_event.lumi_block()}; - - m_watchdog.start(); - if(!m_interface.process(proxy.l1r(), m_hltr, eid)) - ers::warning(HLTTESTAPPS_UNCLASSIFIED("HLT framework has not returned OK " - "for process() call")); - m_watchdog.reset(); - - // accumulate ROS statistics - proxy.accumulateStatistics(m_hltr.stream_tag.size()); - } - catch (ers::Issue& e) - { - m_watchdog.reset(); - print_stack_trace(); - boost::format msg("Uncaught ers::Issue left HLT framework: %s"); - msg % e.what(); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - catch (std::exception& e) - { - m_watchdog.reset(); - print_stack_trace(); - boost::format msg("Uncaught std::exception left HLT framework: %s"); - msg % e.what(); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - catch (...) - { - m_watchdog.reset(); - print_stack_trace(); - boost::format msg("Unknown left HLT framework"); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - - //do we need to do continue? - if (m_hltr.stream_tag.size() == 0) - { - delete[] m_hltr.fragment_pointer; - return eformat::helper::u32list(0, 0, 0); - } - - //check the quality of data we get back - try - { - eformat::ROBFragment<const uint32_t*>(m_hltr.fragment_pointer).check(); - } - catch (ers::Issue& e) - { - boost::format msg("HLT result ROB does not validate: %s"); - msg % e.what(); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - - eformat::write::FullEventFragment retval; - retval.copy_header(m_event.start()); - retval.lvl2_trigger_info(0, nullptr); // drop l2 trigger bits - - //set the L1 trigger info if needed - uint32_t* new_l1_info = 0; - std::vector<uint32_t> remade_l1_info; - std::map<uint32_t, uint32_t* > remade_l1_robs; - if(check_rerun_L1(m_event,remade_l1_info,remade_l1_robs)) { - new_l1_info = new uint32_t[remade_l1_info.size()]; - for(unsigned i = 0; i < remade_l1_info.size(); ++i) new_l1_info[i] = remade_l1_info[i]; - retval.lvl1_trigger_info(remade_l1_info.size(), new_l1_info); - } - - //set the HLT trigger info if needed - uint32_t* hlt_info = 0; - if(m_hltr.trigger_info.size()) - { - hlt_info = new uint32_t[m_hltr.trigger_info.size()]; - for(unsigned i = 0; i < m_hltr.trigger_info.size(); ++i) - hlt_info[i] = m_hltr.trigger_info[i]; - retval.hlt_info(m_hltr.trigger_info.size(), hlt_info); - } - - //set the stream tags - uint32_t* stream_tag = 0; - if (m_hltr.stream_tag.size()) { - uint32_t size = eformat::helper::size_word(m_hltr.stream_tag); - stream_tag = new uint32_t[size]; - eformat::helper::encode(m_hltr.stream_tag, size, stream_tag); - retval.stream_tag(size, stream_tag); - } - - //choose the stuff to put on the final event output - auto to_pack = choose_event_payload(m_event, - m_hltr.hltResult_robs, - m_hltr.stream_tag); - - //copy the selected ROB fragments to the output event - std::vector<eformat::write::ROBFragment> rob; - for(std::vector<const uint32_t*>::const_iterator it = to_pack.begin(); it != to_pack.end(); ++it) - try - { - eformat::read::ROBFragment old(*it) ; - if (remade_l1_robs.find(old.source_id()) == remade_l1_robs.end()) { // no remade l1 rob available - rob.push_back(*it); - } else { // take the remade L1 ROB - rob.push_back(remade_l1_robs[old.source_id()]); - } - } - catch(const eformat::Issue&) - { - ers::warning(HLTTESTAPPS_UNCLASSIFIED("Got an invalid ROBFragment that will be skipped")); - } - - for(unsigned i = 0; i < rob.size(); ++i) - retval.append(&rob[i]); - - - // this signals the event is finished (no more robs will be added) - // If activated, compression kicks in now - const eformat::write::node_t* top = retval.bind(); - - //finally, we serialize the new event and return that - uint32_t final_size = retval.size_word(); - uint32_t* final_event = new uint32_t[final_size]; - uint32_t result = eformat::write::copy(*top, final_event, final_size); - if (final_size != result) { - boost::format msg("Event serialization failed. Serialized %lu words out of %lu"); - msg % result % final_size; - delete[] m_hltr.fragment_pointer; - delete[] hlt_info; - delete[] stream_tag; - delete[] new_l1_info; - for (const auto& rob: remade_l1_robs) delete[] rob.second; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - - //cleanup - delete[] m_hltr.fragment_pointer; - delete[] hlt_info; - delete[] stream_tag; - delete[] new_l1_info; - for (const auto& rob: remade_l1_robs) delete[] rob.second; - - return eformat::helper::u32list(final_event, 0, final_size); -} - -eformat::helper::u32list HLTTestApps::process - (boost::shared_ptr<hltinterface::HLTInterface> interface, - const eformat::read::FullEventFragment& e, - HLTTestApps::TimeoutGuard& watchdog, - uint32_t max_result_size) -{ - ProcessProxy pp(*interface, e, watchdog, max_result_size); - return pp(); -} - -void HLTTestApps::python_prompt(void) { - PyRun_InteractiveLoop(stdin, const_cast< char* >( "\0" )); -} - -void HLTTestApps::python_exec(const std::string& command) { - int result = PyRun_SimpleString(command.c_str()); - if (result != 0) { - boost::format msg("Error detected while executing '%s'."); - msg % command; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } -} - -void HLTTestApps::python_execfile(const std::string& filename) { - FILE *fp; - if((fp = fopen(filename.c_str(), "rb")) == NULL) { - boost::format msg("Cannot open file '%s'."); - msg % filename; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - int result = PyRun_SimpleFileEx(fp, filename.c_str(), 1); //close "fp" - if (result != 0) { - boost::format msg("Error detected while executing file '%s'."); - msg % filename; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } -} - -std::string HLTTestApps::tdaq_time_str_from_microsec(time_t sec, time_t microsec) -{ - auto * cstr = OWLTime{sec, microsec}.c_str(); - auto ret = std::string{cstr}; - delete[] cstr; - return ret; -} - -void HLTTestApps::ers_debug_level(int level) { - ers::Configuration::instance().debug_level(level); -} - -int HLTTestApps::get_ers_debug_level() { - return ers::Configuration::instance().debug_level(); -} - -void HLTTestApps::ers_debug(const std::string& msg) -{ - ers::debug(HLTTESTAPPS_UNCLASSIFIED(msg)); -} - -void HLTTestApps::ers_info(const std::string& msg) -{ - ers::info(HLTTESTAPPS_UNCLASSIFIED(msg)); -} - -void HLTTestApps::ers_warning(const std::string& msg) -{ - ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg)); -} - -void HLTTestApps::ers_error(const std::string& msg) -{ - ers::error(HLTTESTAPPS_UNCLASSIFIED(msg)); -} - -void HLTTestApps::ers_fatal(const std::string& msg) -{ - ers::fatal(HLTTESTAPPS_UNCLASSIFIED(msg)); -} - -void HLTTestApps::ipc_init() -{ - try - { - IPCCore::init({}); - } - catch(const daq::ipc::AlreadyInitialized& e) - { - ers::log(e); - } -} - -using namespace boost::property_tree; -namespace -{ -#if BOOST_VERSION >= 105600 - using T = ptree::key_type; -#else - using T = char; -#endif - - auto wsettings = xml_parser::xml_writer_make_settings<T>(' ', 2); -} - -string HLTTestApps::to_string(const ptree& p) -{ - std::ostringstream oss; - xml_parser::write_xml(oss, p, wsettings); - return oss.str(); -} - -void HLTTestApps::print_ptree(const ptree& p) -{ - xml_parser::write_xml(std::cout, p, wsettings); -} - diff --git a/HLT/HLTTestApps/src/util.h b/HLT/HLTTestApps/src/util.h deleted file mode 100644 index b538dcb812d..00000000000 --- a/HLT/HLTTestApps/src/util.h +++ /dev/null @@ -1,229 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - * @file HLTTestApps/src/util.h - * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> - * - * @brief Utilties required by the python bindings to work cooperatively in - * HLT in a nice way. - */ - -#ifndef HLTTESTAPPS_UTIL_H -#define HLTTESTAPPS_UTIL_H - -#include <boost/python.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/property_tree/ptree.hpp> -#include <string> -#include <ctime> -#include "issue.h" -#include "eformat/FullEventFragment.h" -#include "eformat/blob.h" -#include "hltinterface/HLTInterface.h" -#include "hltinterface/HLTResult.h" -#include "dynlibs/Module.h" -#include "TimeoutGuard.h" -#include "ipc/core.h" - -namespace HLTTestApps { - - constexpr char docstr[] = "See doxygen documentation (from C++ code)"; - - /** - * Loads an HLTInterface from libs. - */ - template <class T> boost::shared_ptr<T> load_impl(boost::python::list libs); - - /** - * Process an event. Uses the provided HLTInterface to process an event. - * Filters earlier HLT/L2/EF results out. Checks the validity of the HLTResult - * fragment provided by the HLT. Resets L2 trigger bits (which would be - * present in events from Run 1). Monitors the HLT's execution time through - * a TimeoutGuard. - * - * @param interface The interface to the HLT (which processes the event) - * @param e The input event - * @param watchdog The timeout guard thread - * @param max_result_size The maximum size the HLTResult can occupy - * @return A possibly empty event that is serialized in the form of an u32list. - * This is an empty list if the event is not selected by the HLTInterface. - * Otherwise, it is a valid event with the new HLTResult, the new trigger info - * bits, the new stream tag(s) and without any original L2/EF/HLT result. This - * event is a partial event @a iff the HLT produced calibration and only - * calibration stream tags (tags with the type CALIBRATION_TAG, including data - * scouting). - */ - eformat::helper::u32list process - (boost::shared_ptr<hltinterface::HLTInterface> interface, - const eformat::read::FullEventFragment& e, - HLTTestApps::TimeoutGuard& watchdog, - uint32_t max_result_size=hltinterface::HLTResult::DEFAULT_MAX_RESULTSIZE); - - /** - * Makes the application go immediately into the python prompt. Exiting that - * prompt resumes. - */ - void python_prompt(void); - - /** - * Makes the application execute the given python statement inside the - * jobOptions context. Execution resumes immediately after. - * - * @param command A string containing python statement (e.g. "print 1+2") - */ - void python_exec(const std::string& command); - - /** - * Makes the application execute the given python file inside the jobOptions - * context. Execution resumes when the file ends. - * - * @param filename The name of the file that will be executed - */ - void python_execfile(const std::string& filename); - - /** - * Get a TDAQ compatible string representation of the time specified by the - * sec and microsec parameters - * - * @param sec The number of seconds - * @param microsec The number of micro seconds - */ - std::string tdaq_time_str_from_microsec(time_t sec, time_t microsec); - - /** - * Changes the ERS debug level, dynamically - * - * @param level The debugging level (0 means no messages will be printed), - * options besides that are 1, 2 or 3. - */ - void ers_debug_level(int level); - - /** - * Get the current ERS debug level - */ - int get_ers_debug_level(); - - /** - * A wrapper for ers::debug that takes a string message - * - * @param msg The message to log - */ - void ers_debug(const std::string& msg); - - /** - * A wrapper for ers::info that takes a string message - * - * @param msg The message to log - */ - void ers_info(const std::string& msg); - - /** - * A wrapper for ers::warning that takes a string message - * - * @param msg The message to log - */ - void ers_warning(const std::string& msg); - - /** - * A wrapper for ers::error that takes a string message - * - * @param msg The message to log - */ - void ers_error(const std::string& msg); - - /** - * A wrapper for ers::fatal that takes a string message - * - * @param msg The message to log - */ - void ers_fatal(const std::string& msg); - - /** - * Initialize the IPC - */ - void ipc_init(); - - /** - * Get an XML format string representing a ptree. - */ - std::string to_string(const boost::property_tree::ptree& p); - - /** - * Print a ptree in XML format (Useful to print ptree's within gdb). - */ - void print_ptree(const boost::property_tree::ptree& p); -} - -template <class T> -boost::shared_ptr<T> HLTTestApps::load_impl(boost::python::list l) { - // The factory function that we are loading - typedef T* (*factory_func)(); - // A function that is a const member of Module, that receives a const string - // reference and that returns a factory_func - typedef factory_func (Module::*my_symbol_func)(const std::string&)const; - - ERS_DEBUG(1, "Going to load algorithm libraries..."); - - std::vector<std::string> libs; - for (long i=0; i<PyList_Size(l.ptr()); ++i) { - PyObject* item = PyList_GetItem(l.ptr(), i); - if (PyString_Check(item)) libs.push_back(PyString_AsString(item)); - else { - boost::format msg("Entry %ld at input list is not string"); - msg % i; - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - } - - if (libs.size() == 0) { - boost::format msg("Cannot load implementation with zero libraries..."); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - - std::vector<std::string> other_modules; // no other modules - std::string module_name = libs[0] + "_framework"; - - // Load and configure the libraries for the first time - Module::add(module_name, libs, other_modules); - const Module* handle = Module::get(module_name); - if (handle == 0) { - std::ostringstream o; - o << "[ "; - for (unsigned int i=0; i<(libs.size()-1); ++i) - o << "'" << libs[i] << "', "; - o << "'" << libs[libs.size()-1] << "'"; - o << " ]"; - boost::format msg("Failed to load shared libraries: %s"); - msg % o.str(); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - - // Loading our factory function and then creating our interface. - // We cast the Module::symbol method to something that returns the - // factory function we need, instead of a void*. We go this way because ISO - // C++ forbids casts between pointers to objects and pointers to functions. - // If we were to obtain our factory as a void* and then cast it to - // factory_func we wouldn't be respecting the standard and we would always - // get an annoying g++43 warning about this. - //T* (*sym)() = (handle->*reinterpret_cast<T* (*(Module::*) (const std::string&) const) ()>(&Module::symbol))("factory"); - factory_func sym = (handle->*reinterpret_cast<my_symbol_func>(&Module::symbol))("hlt_factory"); - - - if (sym == 0) { - boost::format msg("Failed to locate the factory() function inside shared object."); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - T * interface = sym(); - - if (interface == 0) { - boost::format msg("Failed to get the Interface implementation"); - throw(HLTTESTAPPS_UNCLASSIFIED(msg.str())); - } - - return boost::shared_ptr<T>(interface); -} - -#endif /* HLTTESTAPPS_UTIL_H */ - diff --git a/Projects/Athena/package_filters.txt b/Projects/Athena/package_filters.txt index e450fd8f06b..29113e4a08a 100644 --- a/Projects/Athena/package_filters.txt +++ b/Projects/Athena/package_filters.txt @@ -13,10 +13,7 @@ #+ HLT/Trigger/TrigTransforms/TrigTransform #- HLT/.* #- Trigger/TrigValidation/TrigP1Test -- HLT/HLTTestApps - HLT/HLToks -- Trigger/ALP -- Event/DFStreamEventSelector # Offload service has build problems - Offloading/.* diff --git a/Trigger/ALP/ALP/ALP.h b/Trigger/ALP/ALP/ALP.h deleted file mode 100644 index 4ec05641317..00000000000 --- a/Trigger/ALP/ALP/ALP.h +++ /dev/null @@ -1,149 +0,0 @@ -// Dear emacs, this is -*- c++ -*- -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ -// Offline equivalent of HLTMPPU -// - - -#ifndef ALP_ALP_H -#define ALP_ALP_H - -#include <string> -#include <set> -#include <sys/types.h> -#include <unistd.h> -#include <deque> -#include <thread> -#include <condition_variable> -#include <mutex> -#include <memory> -#include <chrono> - -#include "hltinterface/HLTInterface.h" -#include "tbb/atomic.h" -#include "boost/thread/thread.hpp" -#include <boost/chrono/time_point.hpp> -#include <boost/chrono/system_clocks.hpp> - - -namespace hltinterface{ - class IInfoRegister; - class DataSource; - class IPCControlInterface; - class GenericHLTContainer; -} - -class TH1F; - -class ALP : public hltinterface::HLTInterface { -public: - ALP(); - ~ALP(); - bool configure(const boost::property_tree::ptree& args) override; - bool connect(const boost::property_tree::ptree& args) override; - bool prepareForRun(const boost::property_tree::ptree& args)override ; - bool stopRun(const boost::property_tree::ptree& args)override; - bool disconnect(const boost::property_tree::ptree& args)override; - bool unconfigure(const boost::property_tree::ptree& args)override; - bool publishStatistics(const boost::property_tree::ptree& args)override; - void timeOutReached(const boost::property_tree::ptree& args)override; - bool hltUserCommand(const boost::property_tree::ptree& args)override; - bool process (const std::vector<eformat::ROBFragment<const uint32_t*> >& l1r, - hltinterface::HLTResult& hltr, - const hltinterface::EventId& evId) override; - bool prepareWorker(const boost::property_tree::ptree& args)override; - bool finalizeWorker(const boost::property_tree::ptree& args)override; -private: - pid_t forkChildren(int pos); - bool doProcessLoop(const boost::property_tree::ptree& args,int childNo); - void doNannyWork(); - void collectChildExitStatus(); - void terminateChildren(int timeOut); - void printPtree(const boost::property_tree::ptree& args,std::string level); - void startNanny(); - void stopNanny(); - void statsPublisher(); - void startMotherPublisher(); - void stopMotherPublisher(); - void doMotherPublication(); - //void publishMotherInfo(std::shared_ptr<ISInfoDictionary> dict,const std::string & name); - void printOpenFDs(const std::string&); - void printTasks(const std::string&); - int countThreads(); - void softTimeout(); - void hardTimeout(); - void runTimer(); - void waitForFreeMem(int maxSleep=100); - pid_t m_myPid; - pid_t m_myPgid; - std::map<pid_t,int> m_myChildren,m_exitedChildren; - std::map<int,pid_t> m_posPidMap; - std::map<std::string,int> m_diedChildren; - std::map<std::string,pid_t> m_childPidMap; - std::deque<int> m_availableSlots; - bool m_processEvents,m_terminationStarted; - int m_numChildren; - int m_FinalizeTimeout; - boost::thread *m_nannyThread,*m_publisherThread,*m_motherPublisher; - tbb::atomic<bool> m_nannyWork,m_publisherWork,m_timerWork; - boost::mutex m_condMutex; - hltinterface::HLTInterface *m_HLTSteering; - hltinterface::DataSource *m_dataSource; - hltinterface::IInfoRegister *m_infoService; - hltinterface::IPCControlInterface *m_ipcc; - std::string m_myName; - std::string m_ISSName; - std::string m_childLogPath; - boost::chrono::steady_clock::time_point m_lastPublish; - std::chrono::steady_clock::time_point m_TOTimerStart; - int m_publishInterval; - int m_forkDelay; - int m_preforkSleep; - int m_softTimeout; - int m_hardTimeout; - int m_interEventSleep_ms; - int m_interEventSpread_ms; - int m_termStagger; - unsigned int m_l1ResultTimeout; - long m_evtNum; - long m_lbNum; - uint32_t m_CTPROBId; - bool m_dumpFD; - bool m_dumpThreads; - bool m_saveConfigOpts; - bool m_threadsExist; - bool m_softTOTrigger,m_hardTOTrigger; - bool m_keepNumForks; - bool m_skipFinalize,m_skipFinalizeWorker,m_exitImmediately; - int m_eventsInInterval,m_acceptedInInterval,m_rejectedInInterval; - std::shared_ptr<hltinterface::GenericHLTContainer> m_motherInfo,m_childInfo; - size_t m_MINumKills,m_MINumForks,m_MIUnexpectedChildExits,m_MINumRequested,m_MINumActive,m_MINumExited; - size_t m_CINumEvents,m_CIAcceptedEvents,m_CIRejectedEvents,m_CIL1ResultFetchTimeouts,m_CISoftTimeouts, - m_CILongestWaitForL1Result, m_CILongestProcessingTime, m_CIAverageProcessingTime, m_CIAverageAcceptTime, - m_CIAverageRejectTime, m_CIAverageL1ResultTime, m_CITimePercentInProcessing, m_CITimePercentInAccept, - m_CITimePercentInReject, m_CITimePercentInWait, m_CITimePercentInSend; - std::vector<TH1F*> m_histos; - boost::property_tree::ptree *m_configTree,*m_prepareForRunTree; - std::unique_ptr<std::thread> m_timeoutThread; - std::condition_variable m_timeoutCond; - std::mutex m_timeoutMutex,m_statMutex; - int m_myPos; - std::chrono::milliseconds m_accDuration,//accept - m_rejDuration, //reject - m_waitDuration, //waiting on L1Result - m_sendDuration, // time to send - m_procDuration, // time spend in processing - m_totDuration; //total time - std::chrono::milliseconds m_accDurationCum,//accept - m_rejDurationCum, //reject - m_waitDurationCum, //waiting on L1Result - m_sendDurationCum, // time to send - m_procDurationCum, // time spend in processing - m_totDurationCum; //total time -}; - -#endif diff --git a/Trigger/ALP/ALP/ALP_utils.h b/Trigger/ALP/ALP/ALP_utils.h deleted file mode 100644 index a839c96b544..00000000000 --- a/Trigger/ALP/ALP/ALP_utils.h +++ /dev/null @@ -1,61 +0,0 @@ -// --*-- c++ --*-- -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ -// Author: Sami Kama - -#ifndef ALP_UTILS_H -#define ALP_UTILS_H -#include <boost/property_tree/ptree.hpp> -#include <boost/property_tree/xml_parser.hpp> -#include <boost/algorithm/string.hpp> -#include <chrono> -#include <ctime> -#include <iostream> - -namespace ALPUtils{ - inline void printPtree(const boost::property_tree::ptree& args, std::string level) { - boost::property_tree::ptree::const_iterator it,itend=args.end(); - level+=" "; - for(it=args.begin();it!=itend;++it){ - std::string val(it->second.get_value<std::string>()); - boost::algorithm::trim(val); - std::cout<<level<<it->first<<" : "<<val<<std::endl; - printPtree(it->second,level); - } - } - - inline const std::string getTimeTag() { - auto tnow=std::chrono::system_clock::now(); - std::time_t t=std::chrono::system_clock::to_time_t(tnow); - char buff[100]; - auto countMS=std::chrono::duration_cast<std::chrono::milliseconds>(tnow.time_since_epoch()).count(); - auto countS=std::chrono::duration_cast<std::chrono::seconds>(tnow.time_since_epoch()).count(); - if (std::strftime(buff, sizeof(buff), "%Y-%b-%d %H:%M:%S", std::localtime(&t))){ - snprintf(buff+strlen(buff),100-strlen(buff),",%03ld ",countMS-countS*1000); - } - return std::string(buff); - } - - inline bool dump2File(const std::string &fname,const boost::property_tree::ptree& args) { - if(!fname.empty()){ - try{ - boost::property_tree::write_xml(fname,args,std::locale()); - }catch(boost::property_tree::xml_parser::xml_parser_error &ex){ - std::cerr<<ALPUtils::getTimeTag()<<"Caught exception when writing xml to file \"" - <<fname<<"\" exception is \""<<ex.what()<<"\""<<std::endl; - } - return false; - }else{ - std::cerr<<ALPUtils::getTimeTag()<<" File name can not be empty"<<std::endl; - return false; - } - return true; - } - -} - -#endif diff --git a/Trigger/ALP/ALP/DataSourceExceptions.h b/Trigger/ALP/ALP/DataSourceExceptions.h deleted file mode 100644 index 2251b315366..00000000000 --- a/Trigger/ALP/ALP/DataSourceExceptions.h +++ /dev/null @@ -1,86 +0,0 @@ -// -*- c++ -*- -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ -#ifndef ALP_DATASOURCEEXCEPTIONS_H -#define ALP_DATASOURCEEXCEPTIONS_H -#include <stdexcept> -#include <string> - -namespace ALPNS{ - namespace DSErrors{ - class EventNotReady:virtual public std::exception{ - public: - EventNotReady() noexcept; - EventNotReady(const EventNotReady&) noexcept; - EventNotReady& operator=(const EventNotReady&) noexcept; - EventNotReady(const std::string &m) noexcept; - virtual const char * what() const noexcept; - virtual ~EventNotReady() noexcept; - private: - std::string m_msg; - }; - class NoMoreEvents:virtual public std::exception{ - public: - NoMoreEvents() noexcept; - NoMoreEvents(const std::string &m) noexcept; - NoMoreEvents(const NoMoreEvents&) noexcept; - NoMoreEvents& operator=(const NoMoreEvents&) noexcept; - virtual const char * what() const noexcept; - virtual ~NoMoreEvents() noexcept; - private: - std::string m_msg; - }; - class CommunicationError:virtual public std::exception{ - public: - CommunicationError() noexcept; - CommunicationError(const std::string &m) noexcept; - CommunicationError(const CommunicationError&) noexcept; - CommunicationError& operator=(const CommunicationError&) noexcept; - virtual const char * what() const noexcept; - virtual ~CommunicationError() noexcept; - private: - std::string m_msg; - }; - }//namespace DSErrors - //common errors - class BadConfig:virtual public std::exception{ - public: - BadConfig() noexcept; - BadConfig(const std::string &m) noexcept; - BadConfig(const BadConfig&) noexcept; - BadConfig& operator=(const BadConfig&) noexcept; - virtual const char * what() const noexcept; - virtual ~BadConfig() noexcept; - private: - std::string m_msg; - }; - - class NonexistentLib:virtual public std::exception{ - public: - NonexistentLib() noexcept; - NonexistentLib(const std::string &m) noexcept; - NonexistentLib(const NonexistentLib&) noexcept; - NonexistentLib& operator=(const NonexistentLib&) noexcept; - virtual const char * what() const noexcept; - virtual ~NonexistentLib() noexcept; - private: - std::string m_msg; - }; - - class UnexpectedException:virtual public std::exception{ - public: - UnexpectedException()noexcept; - UnexpectedException(const std::string &m)noexcept; - UnexpectedException(const UnexpectedException&) noexcept; - UnexpectedException& operator=(const UnexpectedException&) noexcept; - virtual const char * what() const noexcept; - virtual ~UnexpectedException() noexcept; - private: - std::string m_msg; - }; -} -#endif diff --git a/Trigger/ALP/ALP/FileDataSource.h b/Trigger/ALP/ALP/FileDataSource.h deleted file mode 100644 index 317c82ead12..00000000000 --- a/Trigger/ALP/ALP/FileDataSource.h +++ /dev/null @@ -1,84 +0,0 @@ -// Dear emacs, this is -*- c++ -*- -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ - -#ifndef ALP_FILEDATASOURCE_H -#define ALP_FILEDATASOURCE_H -#include <vector> -#include <string> -#include <map> -#include <set> -#include <memory> -#include <unordered_map> -#include "hltinterface/DataSource.h" -#include "eformat/compression.h" - -namespace EventStorage{ - class DataReader; - class DataWriter; - struct run_parameters_record; -} - -namespace eformat{ - namespace read{ - class FullEventFragment; - } -} - -namespace ALPNS{ - - class FileDataSource:public hltinterface::DataSource{ - public: - FileDataSource(); - virtual ~FileDataSource(); - virtual bool configure(const boost::property_tree::ptree &args); - virtual bool prepareForRun(const boost::property_tree::ptree &args); - virtual void sendResult(const bool accept,const uint32_t l1id, const hltinterface::HLTResult& res); - - virtual uint32_t collect(std::vector<hltinterface::DCM_ROBInfo>& data, - const uint32_t lvl1_id, const std::vector<uint32_t>& ids) override; - - virtual uint32_t collect(std::vector<hltinterface::DCM_ROBInfo>& data, uint32_t lvl1_id) override; - - virtual void reserveROBData(const uint32_t lvl1_id, const std::vector<uint32_t>& ids) override; - - virtual void getL1Result(std::vector<eformat::ROBFragment<const uint32_t*> > &l1r, - uint32_t &lvl1_id, - uint64_t &gid, - uint64_t &lumiBlock) override; - - virtual bool finalize(const boost::property_tree::ptree &args); - virtual bool prepareWorker(const boost::property_tree::ptree &args); - virtual bool finalizeWorker(const boost::property_tree::ptree &args); - private: - bool nextFile(); - uint32_t* getNextEvent(); - bool skipEvents(uint num); - bool m_loopFiles; - int m_currFile; - std::vector<std::string> *m_fileNames; - std::set<uint32_t> *m_collectedRobs; - EventStorage::DataReader* m_currReader; - std::unique_ptr<EventStorage::run_parameters_record> m_runParams; - std::unique_ptr<EventStorage::DataWriter> m_writer; - eformat::read::FullEventFragment *m_currEvent; - std::unordered_map<uint32_t, const uint32_t*> *m_IDmap; ///< The ID <-> ROB map - std::vector<eformat::ROBFragment<const uint32_t*> > *m_l1r; ///< The LVL1 result - std::string m_outFileName; - eformat::Compression m_comp; - unsigned int m_compLevel; - const uint32_t * m_blob; - uint32_t m_stride; - uint32_t m_start; - uint32_t m_currEventInFile; - int m_nMaxEvents; - int m_nEventsToRead,m_nEvents; - - }; -} - -#endif diff --git a/Trigger/ALP/ALP/Issues.h b/Trigger/ALP/ALP/Issues.h deleted file mode 100644 index b3c5d2ccaa7..00000000000 --- a/Trigger/ALP/ALP/Issues.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ - -#ifndef ALP_ISSUES_H -#define ALP_ISSUES_H - -ERS_DECLARE_ISSUE(ALPIssues, // namespace name - CommandLineIssue, // issue name - "Command-line parameter issue: " << type << ".", // message - ((const char *)type ) // first attribute - ) - -ERS_DECLARE_ISSUE(ALPIssues, // namespace name - DLLIssue, // issue name - "Can't load dll: \"" << type << "\".", // message - ((const char *)type ) // first attribute - ) - -ERS_DECLARE_ISSUE(ALPIssues, // namespace name - UnexpectedIssue, // issue name - "Unexpected Issue: \"" << type << "\".", // message - ((const char *)type ) // first attribute - ) - -ERS_DECLARE_ISSUE(ALPIssues, // namespace name - ConfigurationIssue, // issue name - "Configuration Issue: \"" << type << "\".", // message - ((const char *)type ) // first attribute - ) - -ERS_DECLARE_ISSUE(ALPIssues, // namespace name - TransitionIssue, // issue name - "Transition Issue: \"" << type << "\".", // message - ((const char *)type ) // first attribute - ) - -ERS_DECLARE_ISSUE(ALPIssues, // namespace name - ChildIssue, // issue name - "Child Issue: \"" << type << "\".", // message - ((const char *)type ) // first attribute - ) - -#endif diff --git a/Trigger/ALP/ALP/PluginLoader.h b/Trigger/ALP/ALP/PluginLoader.h deleted file mode 100644 index 48c9d5cce79..00000000000 --- a/Trigger/ALP/ALP/PluginLoader.h +++ /dev/null @@ -1,84 +0,0 @@ -// --*- c++ -*-- -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ - -#ifndef __ALP_PLUGINLOADER_H -#define __ALP_PLUGINLOADER_H - -#include <errno.h> -#include <dlfcn.h> -#include <unistd.h> -#include <vector> -#include <string> -#include <iostream> -#include <map> -#include <memory> - -namespace ALPNS{ - class Plugin{ - public: - Plugin(const std::vector<std::string>& libs):m_libs(libs){}; - template <typename T> - T function(const std::string &name); - private: - std::vector<std::string> m_libs; - }; - - class LibUnloader{ - public: - LibUnloader(const std::string& lname):m_libName(lname){}; - void operator()(void* handle)const{ - char* error; - dlerror(); - int ret=dlclose(handle); - if (ret!=0){ - if((error=dlerror())!=NULL){ - std::cerr<<"Failed to close library "<<m_libName<<" Error is "<<error<<std::endl; - } - } - } - private: - std::string m_libName; - }; - - class PluginLoader{ - public: - PluginLoader(); - ~PluginLoader(); - static bool addPlugin(const std::string &unitName,const std::vector<std::string> &libList ); - static std::shared_ptr<void> getHandle(const std::string& libName); - static std::shared_ptr<ALPNS::Plugin> get(const std::string& pluginName); - private: - static std::unique_ptr<std::map<std::string,std::vector<std::string> > > m_units; - static std::unique_ptr<std::map<std::string,std::shared_ptr<void> > > m_libHandles; - }; -} - -template <typename T> -T ALPNS::Plugin::function(const std::string &name){ - union{ - void *p; - T origType; - }u; - u.p=0; - //char *error(0); - for(auto &l:m_libs){ - auto h=ALPNS::PluginLoader::getHandle(l); - if(h){ - void* handle=h.get(); - dlerror(); - void* s=dlsym(handle,name.c_str()); - if(!dlerror()){ - u.p=s; - return u.origType; - } - } - } - return u.origType; -} - -#endif diff --git a/Trigger/ALP/CMakeLists.txt b/Trigger/ALP/CMakeLists.txt deleted file mode 100644 index 36208f9dc33..00000000000 --- a/Trigger/ALP/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -################################################################################ -# Package: ALP -# Author: Sami Kama 2017 -################################################################################ - -# Declare the package name: -atlas_subdir( ALP ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - GaudiKernel -# PRIVATE - ) - -# External dependencies: -find_package( Boost COMPONENTS filesystem thread system ) -find_package( PythonLibs ) -find_package (ROOT COMPONENTS Core Hist ) -find_package( tdaq-common COMPONENTS ers eformat eformat_write hltinterface DataWriter DataReader ) -# Component(s) in the package: -atlas_add_library( ALP - src/*.cxx - PUBLIC_HEADERS ALP - INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} - PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} GaudiKernel - PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${ROOT_LIBRARIES} ) - -# Install files from the package: -atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) - diff --git a/Trigger/ALP/python/ALPPy.cxx b/Trigger/ALP/python/ALPPy.cxx deleted file mode 100644 index 6163b6f5d7d..00000000000 --- a/Trigger/ALP/python/ALPPy.cxx +++ /dev/null @@ -1,402 +0,0 @@ -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ -// Python bindings for ALP -#include <dlfcn.h> -#include <cstdio> -#include <memory> -#include <Python.h> -#include <sstream> -#include <signal.h> -#include <boost/property_tree/ptree.hpp> -#include <boost/property_tree/xml_parser.hpp> -#include "hltinterface/HLTInterface.h" -#include "ALP/ALP_utils.h" - -typedef hltinterface::HLTInterface* (*creator)(void); -typedef void (*destroyer)(hltinterface::HLTInterface*); - - -void sahandler(int sig,siginfo_t * si,void* /*vp*/){ - fprintf(stderr,"ALPPy Got signal\n"); - if(sig==SIGTERM||sig==SIGINT){ - //std::cerr<<"Got signal"<<std::endl; - std::terminate(); - } - return; - std::cerr<<ALPUtils::getTimeTag()<<__PRETTY_FUNCTION__<<"signo="<<si->si_signo - <<" , errno="<<si->si_errno<<std::endl - // <<" , trapno="<<si->si_trapno<<std::endl - <<" , pid="<<si->si_pid<<std::endl - <<" , uid="<<si->si_uid<<std::endl - <<" , status="<<si->si_status<<std::endl; - - std::cerr<<ALPUtils::getTimeTag()<<__PRETTY_FUNCTION__<<" si_code is ="; - switch (si->si_code){ - case CLD_EXITED: - std::cerr<<"CLD_EXITED"<<std::endl; - break; - case CLD_KILLED: - std::cerr<<"CLD_KILLED"<<std::endl; - break; - case CLD_DUMPED: - std::cerr<<"CLD_DUMPED"<<std::endl; - break; - case CLD_TRAPPED: - std::cerr<<"CLD_TRAPPED"<<std::endl; - break; - case CLD_STOPPED: - std::cerr<<"CLD_STOPPED"<<std::endl; - break; - case CLD_CONTINUED: - std::cerr<<"CLD_CONTINUED"<<std::endl; - break; - default: - std::cerr<<"OTHER CODE = "<<si->si_code<<std::endl; - break; - } -} - - -std::shared_ptr<hltinterface::HLTInterface> s_pu; -static PyObject* ALPPyError; - -static PyObject* loadPULibrary(PyObject* self,PyObject* args){ - const char *hltdll=0; - const char hltdllOrig[]="libHLTMMPU.so"; - if (!PyArg_ParseTuple(args, "s", &hltdll)){ - hltdll=hltdllOrig; - } - void * myDllHandle=dlopen(hltdll,RTLD_LAZY|RTLD_GLOBAL); - - if(!myDllHandle){ - char buff[2000]; - const char* errmsg=dlerror(); - if(errmsg){ - snprintf(buff,2000,"Can't open ALP dll '%s' error is %s",hltdll,errmsg); - }else{ - snprintf(buff,2000,"Can't open ALP dll '%s'",hltdll); - } - PyErr_SetString(ALPPyError, buff); - return NULL; - } - - typedef creator (*creator_dlsym)(void *, const char*); - creator c=reinterpret_cast<creator_dlsym>(dlsym)(myDllHandle,"create_interface"); - const char* dlsymError=dlerror(); - if(dlsymError){ - char buff[2000]; - snprintf(buff,2000,"Can't import create_interface function from library '%s' error is %s",hltdll,dlsymError); - PyErr_SetString(ALPPyError, buff); - return NULL; - } - - typedef destroyer (*destroyer_dlsym)(void *, const char*); - destroyer d=reinterpret_cast<destroyer_dlsym>(dlsym)(myDllHandle,"destroy_interface"); - dlsymError=dlerror(); - if(dlsymError){ - char buff[2000]; - snprintf(buff,2000,"Can't import destroy_interface function from library '%s' error is %s",hltdll,dlsymError); - PyErr_SetString(ALPPyError, buff); - return NULL; - } - - auto hltmppu=c(); - s_pu.reset(hltmppu,std::ptr_fun(d)); - - Py_RETURN_TRUE; -} - -bool checkInit(){ - if(!s_pu){ - PyErr_SetString(ALPPyError, "Need to call LoadLibrary first!"); - return false; - } - return true; -} - -static PyObject* configurePU(PyObject* self,PyObject* args){ - if(!checkInit()){ - return NULL; - } - - const char * ptreestr; - if (!PyArg_ParseTuple(args, "s", &ptreestr)){ - char buff[2000]; - snprintf(buff,2000,"Failed to parse the arguments'"); - PyErr_SetString(ALPPyError, buff); - return NULL; - }else{ - std::stringstream str(ptreestr); - boost::property_tree::ptree pt; - int fl= boost::property_tree::xml_parser::no_comments| - boost::property_tree::xml_parser::trim_whitespace; - try{ - boost::property_tree::xml_parser::read_xml(str,pt,fl); - }catch(std::exception &ex){ - str.str("Caught exception when parsing ptree. Exception was:"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - try{ - if(s_pu->configure(pt)){ - Py_RETURN_TRUE; - }else{ - Py_RETURN_FALSE; - } - }catch(std::exception &ex){ - str.str("Caught exception during configure"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - } - Py_RETURN_NONE; -} - -static PyObject* unconfigurePU(PyObject* self,PyObject* args){ - if(!checkInit()){ - return NULL; - } - const char * ptreestr; - if (!PyArg_ParseTuple(args, "s", &ptreestr)){ - char buff[2000]; - snprintf(buff,2000,"Failed to parse the arguments'"); - PyErr_SetString(ALPPyError, buff); - return NULL; - }else{ - std::stringstream str(ptreestr); - boost::property_tree::ptree pt; - int fl= boost::property_tree::xml_parser::no_comments| - boost::property_tree::xml_parser::trim_whitespace; - try{ - boost::property_tree::xml_parser::read_xml(str,pt,fl); - }catch(std::exception &ex){ - str.str("Caught exception when parsing ptree. Exception was:"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - try{ - if(s_pu->unconfigure(pt)){ - Py_RETURN_TRUE; - }else{ - Py_RETURN_FALSE; - } - }catch(std::exception &ex){ - str.str("Caught exception during unconfigure"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - - } - Py_RETURN_NONE; -} - -static PyObject* connectPU(PyObject* self,PyObject* args){ - if(!checkInit()){ - return NULL; - } - const char * ptreestr; - if (!PyArg_ParseTuple(args, "s", &ptreestr)){ - char buff[2000]; - snprintf(buff,2000,"Failed to parse the arguments'"); - PyErr_SetString(ALPPyError, buff); - return NULL; - }else{ - std::stringstream str(ptreestr); - boost::property_tree::ptree pt; - int fl= boost::property_tree::xml_parser::no_comments| - boost::property_tree::xml_parser::trim_whitespace; - try{ - boost::property_tree::xml_parser::read_xml(str,pt,fl); - }catch(std::exception &ex){ - str.str("Caught exception when parsing ptree. Exception was:"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - try{ - if(s_pu->connect(pt)){ - Py_RETURN_TRUE; - }else{ - Py_RETURN_FALSE; - } - }catch(std::exception &ex){ - str.str("Caught exception during connect"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - - } - Py_RETURN_NONE; - -} - -static PyObject* prepareForRunPU(PyObject* self,PyObject* args){ - if(!checkInit()){ - return NULL; - } - const char * ptreestr; - if (!PyArg_ParseTuple(args, "s", &ptreestr)){ - char buff[2000]; - snprintf(buff,2000,"Failed to parse the arguments'"); - PyErr_SetString(ALPPyError, buff); - return NULL; - }else{ - std::stringstream str(ptreestr); - boost::property_tree::ptree pt; - int fl= boost::property_tree::xml_parser::no_comments| - boost::property_tree::xml_parser::trim_whitespace; - try{ - boost::property_tree::xml_parser::read_xml(str,pt,fl); - }catch(std::exception &ex){ - str.str("Caught exception when parsing ptree. Exception was:"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - try{ - if(s_pu->prepareForRun(pt)){ - Py_RETURN_TRUE; - }else{ - Py_RETURN_FALSE; - } - }catch(std::exception &ex){ - str.str("Caught exception during prepareForRun"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - - } - Py_RETURN_NONE; - -} - -static PyObject* stopRunPU(PyObject* self,PyObject* args){ - if(!checkInit()){ - return NULL; - } - const char * ptreestr; - if (!PyArg_ParseTuple(args, "s", &ptreestr)){ - char buff[2000]; - snprintf(buff,2000,"Failed to parse the arguments'"); - PyErr_SetString(ALPPyError, buff); - return NULL; - }else{ - std::stringstream str(ptreestr); - boost::property_tree::ptree pt; - int fl= boost::property_tree::xml_parser::no_comments| - boost::property_tree::xml_parser::trim_whitespace; - try{ - boost::property_tree::xml_parser::read_xml(str,pt,fl); - }catch(std::exception &ex){ - str.str("Caught exception when parsing ptree. Exception was:"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - try{ - if(s_pu->stopRun(pt)){ - Py_RETURN_TRUE; - }else{ - Py_RETURN_FALSE; - } - }catch(std::exception &ex){ - str.str("Caught exception during stopRun"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - - } - Py_RETURN_NONE; - -} - -static PyObject* userCommandPU(PyObject* self,PyObject* args){ - if(!checkInit()){ - return NULL; - } - const char * ptreestr; - if (!PyArg_ParseTuple(args, "s", &ptreestr)){ - char buff[2000]; - snprintf(buff,2000,"Failed to parse the arguments'"); - PyErr_SetString(ALPPyError, buff); - return NULL; - }else{ - std::stringstream str(ptreestr); - boost::property_tree::ptree pt; - int fl= boost::property_tree::xml_parser::no_comments| - boost::property_tree::xml_parser::trim_whitespace; - try{ - boost::property_tree::xml_parser::read_xml(str,pt,fl); - }catch(std::exception &ex){ - str.str("Caught exception when parsing ptree. Exception was:"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - try{ - if(s_pu->hltUserCommand(pt)){ - Py_RETURN_TRUE; - }else{ - Py_RETURN_FALSE; - } - }catch(std::exception &ex){ - str.str("Caught exception during user command"); - str<<std::endl<<ex.what()<<std::endl; - PyErr_SetString(ALPPyError, str.str().c_str()); - return NULL; - } - - } - Py_RETURN_NONE; -} - -static PyObject* setHandler(PyObject* self,PyObject* args){ - static struct sigaction act; - memset (&act, '\0', sizeof(act)); - act.sa_sigaction=&sahandler; - act.sa_flags=SA_SIGINFO; - if(sigaction(SIGTERM,&act,NULL)<0){ - std::cerr<<ALPUtils::getTimeTag()<<"Error setting signal handler for SIGTERM"<<std::endl; - PyErr_SetString(ALPPyError, "Setting Signal handler failed"); - return NULL; - } - if(sigaction(SIGINT,&act,NULL)<0){ - std::cerr<<ALPUtils::getTimeTag()<<"Error setting signal handler for SIGINT"<<std::endl; - PyErr_SetString(ALPPyError, "Setting Signal handler failed"); - return NULL; - } - std::cout<<"Signal handler set"<<std::endl; - Py_RETURN_TRUE; -} - -static PyMethodDef HLTMPPymethods[]= { - {(char *)"LoadLibrary", (PyCFunction)loadPULibrary, METH_VARARGS, "Method to load HLTMMPU library. Needs to be called first"}, - {(char *)"ConfigurePU", (PyCFunction)configurePU, METH_VARARGS, "configure call for PU"}, - {(char *)"UnconfigurePU", (PyCFunction)unconfigurePU, METH_VARARGS, "unconfigure call for PU"}, - {(char *)"ConnectPU", (PyCFunction)connectPU, METH_VARARGS, "Connect call for PU"}, - {(char *)"PrepareForRunPU", (PyCFunction)prepareForRunPU, METH_VARARGS, "PrepareForRun call for PU"}, - {(char *)"StopRunPU", (PyCFunction)stopRunPU, METH_VARARGS, "StopRun call for PU"}, - {(char *)"UserCommandPU", (PyCFunction)userCommandPU, METH_VARARGS, "Send hltusercommand to Mother process"}, - {(char *)"SetSignalHandler", (PyCFunction)setHandler, METH_VARARGS, "Set Signal handler"}, - { NULL, NULL, 0, NULL } -}; - -PyMODINIT_FUNC init_HLTMPPy(void) { - - PyObject* m; - m=Py_InitModule("_HLTMPPy", HLTMPPymethods); - ALPPyError=PyErr_NewException("HLTMPPy.error",0,0); - Py_INCREF(ALPPyError); - PyModule_AddObject(m,"error",ALPPyError); -} diff --git a/Trigger/ALP/python/ALPPy/ALPPy.py b/Trigger/ALP/python/ALPPy/ALPPy.py deleted file mode 100644 index 8a01a4fda9d..00000000000 --- a/Trigger/ALP/python/ALPPy/ALPPy.py +++ /dev/null @@ -1,904 +0,0 @@ -##################### -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -# -# Author: Sami Kama 2017 -##################### -# Python module to construct ptrees for ALP execution -# and provide ALP class for using from python side. -# -import os,sys -from lxml import etree as et - -def recurseDict(d,rootName): - r=et.Element(rootName) - if isinstance(d,dict): - for k in iter(d): - val=d[k] - if isinstance(val,(str,unicode)): - et.SubElement(r,k).text=str(val) - else: - l=recurseDict(val,k) - r.append(l) - elif isinstance(d,(str,unicode)): - r.text=d - else: - for val in d: - r.append(recurseDict(val,rootName)) - return r - -def recurseDictOld(d,rootName): - r=et.Element(rootName) - for k in iter(d): - val=d[k] - if isinstance(val,(str,unicode)): - et.SubElement(r,k).text=str(val) - else: - l=recurseDict(val,k) - r.append(l) - return r - -class DataSource: - def __init__(self,library): - self._library=library - self._defaultDict={} - - def getLibrary(self): - return self._library - def getDefaultDict(self): - return self._defaultDict - def getTree(self): - return None - - -class DCMDataSource(DataSource): - def __init__(self,library="dfinterfaceDcm"): - DataSource.__init__(self,library) - self._defaultDict={ - # "HLTDFDCMBackend":{ - "UID" : "DataSource-is-DCM", - "library" : str(self._library) - # } - } - - def getTree(self): - return recurseDict({"HLTDFDCMBackend":self._defaultDict},"DataSource") - -class FileDataSource(DataSource): - def __init__(self,library="FileDataSource", - fileList=[], - outFile=None, - compressionFormat="ZLIB", - compressionLevel=2, - numEvents=-1, - loopFiles="false", - preload="false"): - self._fileList=fileList - DataSource.__init__(self,library) - self._defaultDataDict={ - "UID" : "FileDS", - "library" : str(self._library), - "loopOverFiles":loopFiles, - "start_id":1, - "preload":preload, - "numEvents":numEvents, - "fileOffset":-1, - "compressionLevel":compressionLevel, - "compressionFormat":compressionFormat, - "fileList":self._fileList - } - if outFile is not None: - self._defaultDataDict["outputFileName"]=outFile - self._defaultDict={ - "HLTFileDataSource": - self._defaultDataDict - } - - def getTree(self): - root=et.Element("DataSource") - ds=et.SubElement(root,"HLTFileDataSource") - plainlist=[x for x in self._defaultDataDict.keys() if x is not "fileList" ] - for k in plainlist: - et.SubElement(ds,k).text=str(self._defaultDataDict[k]) - flist=et.SubElement(ds,"fileList") - files=self._defaultDataDict["fileList"] - for f in files: - et.SubElement(flist,"file").text=str(f) - return root - -class DFFileDataSource(DataSource): - def __init__(self,library="DFFileBackend",fileList=[]): - self._fileList=fileList - DataSource.__init__(self,library) - self._defaultDataDict={ - "UID" : "DataSource-is-DCM", - "library" : str(self._library), - "loopOverFiles":"false", - "start_id":1, - "preload":"false", - "numEvents":-1, - "fileList":self._fileList - } - self._defaultDict={ - "HLTDFFileBackend": - self._defaultDataDict - } - - def getTree(self): - root=et.Element("DataSource") - ds=et.SubElement(root,"HLTDFFileBackend") - plainlist=[x for x in self._defaultDataDict.keys() if x is not "fileList" ] - for k in plainlist: - et.SubElement(ds,k).text=str(self._defaultDataDict[k]) - flist=et.SubElement(ds,"fileList") - files=self._defaultDataDict["fileList"] - for f in files: - et.SubElement(flist,"file").text=str(f) - return root - -class InfoService: - def __init__(self,libraryName): - self._library=libraryName - self._defaultDict={} - def getLibrary(self): - return self._library - def getDefaultDictionary(self): - return self._defaultDict - def getTree(self): - return None - -class MonSvcInfoService(InfoService): - def __init__(self,libraryName="MonSvcInfoService", - OHServer="${TDAQ_OH_SERVER=Histogramming}", - OHSlots=1, - OHInterval=80, - OHRegex=".*", - ISServer="${TDAQ_IS_SERVER=DF}", - ISSlots=1, - ISInterval=5, - ISRegex=".*" - - ): - InfoService.__init__(self,libraryName) - self._defaultDict={ - "UID":"hltMonSvc", - "library":"MonSvcInfoService", - "ConfigurationRules":[ - { - "UID":"HltpuConfigurationRuleBundle", - "Rules" : [ - { - "UID":"HltpuOHRule", - "IncludeFilter":str(OHRegex), - "ExcludeFilter":"", - "Name":"Dumm", - "Parameters":{ - "OHPublishingParameters":{ - "UID":"HltpuOHPublishingParameters", - "PublishInterval":str(OHInterval), - "OHServer":str(OHServer), - "NumberOfSlots":str(OHSlots), - "ROOTProvider":"${TDAQ_APPLICATION_NAME}" - } - } - }, - { - "UID":"HltpuISRule", - "IncludeFilter":str(ISRegex), - "ExcludeFilter":"", - "Name":"DummDumm", - "Parameters":{ - "ISPublishingParameters":{ - "UID":"HltpuISPublishingParameters", - "PublishInterval":str(ISInterval), - "NumberOfSlots":str(ISSlots), - "ISServer":str(ISServer) - } - } - } - ] - } - ] - } - def getTree(self): - root=et.Element("HLTMonInfoImpl") - plainlist=[x for x in iter(self._defaultDict) if x is not "ConfigurationRules" ] - for k in plainlist: - et.SubElement(root,k).text=str(self._defaultDict[k]) - crl=et.SubElement(root,"ConfigurationRules") - cr=self._defaultDict["ConfigurationRules"] - for f in cr: - crb=et.Element("ConfigurationRuleBundle") - et.SubElement(crb,"UID").text=str(f["UID"]) - rules=et.SubElement(crb,"Rules") - for r in f["Rules"]: - #crn=et.SubElement(rules,"ConfigurationRule") - crn=recurseDict(r,"ConfigurationRule") - rules.append(crn) - #et.SubElement(flist,"file").text=str(f) - crl.append(crb) - return root - -class TriggerConfig: - def __init__(self): - self._defaultDict={} - def getDefaultLibrary(self): - return None - def getDBConfig(self,SMK=0,coral=False,srv="LOCAL_HOST",port=3320, - user="ATLAS_CONF_TRIGGER_RUN2_R",pwd="TrigConfigRead2015",alias="TRIGGERDB"): - TC={"TriggerDBConnection": - { - "UID":"TriggerDB_RUN2_CoralServer_Example", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_CONFIG/ATLAS_CONF_TRIGGER_RUN2'", - "Alias":str(alias), - "User":"%s"%(user), - "Password":"%s"%(pwd), - "Type":"Coral", - "SuperMasterKey":"%s"%(SMK) - } - } - - if coral: - defaultConns= [ - { - "UID": "ATLAS_COOLONL_INDET_CORALSRV", - "Server": "%s"%(srv), - "Port" :"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_INDET'", - "Alias": "COOLONL_INDET", - "User": "''", - "Password": "''", - "Type": "Coral" - }, - { - "UID":"ATLAS_COOLONL_MDT_CORALSRV", - "Server": "%s"%(srv), - "Port": "%s"%(port), - "Name": "'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_MDT'", - "Alias":"COOLONL_MDT", - "User": "''", - "Password" :"''", - "Type": "Coral" - }, - { - "UID":"ATLAS_COOLONL_SCT_CORALSRV", - "Server": "%s"%(srv), - "Port": "%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_SCT'", - "Alias":"COOLONL_SCT", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_TRT_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_TRT'", - "Alias":"COOLOFL_TRT", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_RPC_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_RPC'", - "Alias":"COOLONL_RPC", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_TDAQ_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TDAQ'", - "Alias":"COOLONL_TDAQ", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_MUONALIGN_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_MUONALIGN'", - "Alias":"COOLONL_MUONALIGN", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_LAR_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_LAR'", - "Alias":"COOLONL_LAR", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLASDD_CORALSRV_THROUGHATLASDD", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_DD/ATLASDD'", - "Alias":"ATLASDD", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_PIXEL_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_PIXEL'", - "Alias":"COOLONL_PIXEL", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_MDT_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_MDT'", - "Alias":"COOLOFL_MDT", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_CALO_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_CALO'", - "Alias":"COOLONL_CALO", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_CSC_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_CSC'", - "Alias":"COOLONL_CSC", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_TRT_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TRT'", - "Alias":"COOLONL_TRT", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOL_GLOBAL_ORACLE", - "Server":"ATLAS_COOLPROD", - "Port":"''", - "Name":"ATLAS_COOLONL_GLOBAL", - "Alias":"COOLONL_GLOBAL", - "User":"ATLAS_COOL_READER_U", - "Password":"LMXTPRO4RED", - "Type":"Oracle" - }, - { - "UID":"ATLAS_COOLONL_GLOBAL_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_GLOBAL'", - "Alias":"COOLONL_GLOBAL", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_PIXEL_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_PIXEL'", - "Alias":"COOLOFL_PIXEL", - "User":"ATLAS_COOL_PIXEL", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_TILE_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_TILE'", - "Alias":"COOLOFL_TILE", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_INDET_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_INDET'", - "Alias":"COOLOFL_INDET", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_TRIGGER_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TRIGGER'", - "Alias":"COOLONL_TRIGGER", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_CSC_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_CSC'", - "Alias":"COOLOFL_CSC", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_SCT_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_SCT'", - "Alias":"COOLOFL_SCT", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_LAR_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_LAR'", - "Alias":"COOLOFL_LAR", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLASDD_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://atlas_dd/atlasdd'", - "Alias":"ATLASDD", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_TGC_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TGC'", - "Alias":"COOLONL_TGC", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_DCS_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_DCS'", - "Alias":"COOLOFL_DCS", - "User":"ATLAS_COOL_DCS", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_MUON_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_MUON'", - "Alias":"COOLONL_MUON", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLOFL_GLOBAL_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_GLOBAL'", - "Alias":"COOLOFL_GLOBAL", - "User":"''", - "Password":"''", - "Type":"Coral" - }, - { - "UID":"ATLAS_COOLONL_TILE_CORALSRV", - "Server":"%s"%(srv), - "Port":"%s"%(port), - "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TILE'", - "Alias":"COOLONL_TILE", - "User":"''", - "Password":"''", - "Type":"Coral" - } - ] - - root=et.Element("DBConnections") - for dbc in defaultConns: - c=et.SubElement(root,"DBConnection") - for k in dbc.keys(): - et.SubElement(c,str(k)).text=str(dbc[k]) - return (root,recurseDict(TC,"TriggerDBConnection")) - return (None,recurseDict(TC,"TriggerDBConnection")) - - def getTree(self): - return recurseDict(self._defaultDict,"TriggerConfiguration") - #return None - -class TriggerConfigJO(TriggerConfig): - def __init__(self,jopath,SMK=0,prescaleKey=0,bunchKey=0,L1MenuFrom="DB"): - TriggerConfig.__init__(self) - self._defaultDict={ - "TriggerConfiguration": - { - "UID": "JobOptionsTriggerConfig-1", - "L1TriggerConfiguration": - { - "L1TriggerConfiguration": - { - "UID":"L1TrigConf", - "Lvl1PrescaleKey":"%s"%(prescaleKey), - "Lvl1BunchGroupKey": "%s"%(bunchKey), - "ConfigureLvl1MenuFrom":"%s"%(L1MenuFrom) - } - }, - "TriggerDBConnection":{ - "TriggerDBConnection":{ - "Type":"Coral", - "Server":"TRIGGERDB", - "SuperMasterKey":"%s"%SMK, - "User":"", - "Password":"", - "Name":"dummy", - "Alias":"TRIGGERDB" - } - }, - "hlt": - { - "HLTImplementationJobOptions": - { - "UID": "HLTImplementationJobOptions-1", - "libraries":{ - "library":["TrigServices", - "TrigPSC", - ] - }, - "jobOptionsPath":"%s"%(jopath), - "evtSel":"NONE", - "pythonSetupFile": "TrigPSC/TrigPSCPythonSetup.py", - "showInclude": "false", - "logLevels":{ - "logLevel":[ - "INFO", - "ERROR" - ] - }, - "tracePattern": "", - "jobOptionsType": "NONE", - "HLTCommonParameters": - { - "HLTCommonParameters": - { - "messageSvcType": "TrigMessageSvc", - "jobOptionsSvcType" :"JobOptionsSvc", - "dllName" :'', - "factoryName": '' - } - } - } - } - } - } - -class TriggerConfigDBPython(TriggerConfig): - def __init__(self,SMK=0,L1PSK=0,L1BG=0,HPSK=0,Coral=False,preCmds=[],postCmds=[],DBAlias="TRIGGERDB"): - TriggerConfig.__init__(self) - self.__SMK=SMK - self.__useCoral=Coral - self.__precmds=None - self.__postcmds=None - self.__DBAlias=DBAlias - if preCmds is not None: - if isinstance(preCmds,list): - self.__precmds=preCmds - else: - self.__precmds=[preCmds] - if postCmds is not None: - if isinstance(postCmds,list): - self.__postcmds=postCmds - else: - self.__postcmds=[postCmds] - - self._defaultDict={ "TriggerConfiguration": - { - "UID":"DBTriggerConfig-1", - "L1TriggerConfiguration": - { - "L1TriggerConfiguration": - { - "UID":"L1TrigConf", - "Lvl1PrescaleKey":"%s"%(L1PSK), - "Lvl1BunchGroupKey":"%s"%(L1BG), - "ConfigureLvl1MenuFrom":"DB", - } - }, - "hlt": - { - "HLTImplementationDBPython": - { - "UID":"HLTImplementationDBPython-1", - "libraries": - { - "library": - [ - "TrigServices", - "TrigPSC", - "TrigConfigSvc" - ], - }, - "hltPrescaleKey":"%s"%(HPSK), - "HLTCommonParameters": - { - "HLTCommonParameters": - { - "messageSvcType":"TrigMessageSvc", - "jobOptionsSvcType":"TrigConf::HLTJobOptionsSvc", - "dllName":"", - "factoryName":"" - } - } - } - } - } - } - def getTree(self): - TC=recurseDict(self._defaultDict,"TriggerConfiguration") - hlt=TC.find("TriggerConfiguration").find("hlt").find("HLTImplementationDBPython") - if self.__precmds is not None and len(self.__precmds): - pcr=et.Element("preCommands") - for pc in self.__precmds: - if len(pc): - et.SubElement(pcr,"preCommand").text=str(pc) - hlt.append(pcr) - if self.__postcmds is not None and len(self.__postcmds): - pcr=et.Element("postCommands") - for pc in self.__postcmds: - if len(pc): - et.SubElement(pcr,"postCommand").text=str(pc) - hlt.append(pcr) - dbc=TriggerConfig.getDBConfig(self,self.__SMK,coral=self.__useCoral,alias=self.__DBAlias) - if dbc[0] is not None: - TC.find("TriggerConfiguration").append(dbc[0]) - if dbc[1] is not None: - TC.find("TriggerConfiguration").append(dbc[1]) - return TC - -class TriggerConfigDB(TriggerConfig): - def __init__(self,SMK=0,L1PSK=0,L1BG=0,HPSK=0,Coral=False,DBAlias="TRIGGERDB"): - TriggerConfig.__init__(self) - self.__SMK=SMK - self.__useCoral=Coral - self.__DBAlias=DBAlias - self._defaultDict={ "TriggerConfiguration": - { - "UID":"DBTriggerConfig-1", - "L1TriggerConfiguration": - { - "L1TriggerConfiguration": - { - "UID":"L1TrigConf", - "Lvl1PrescaleKey":"%s"%(L1PSK), - "Lvl1BunchGroupKey":"%s"%(L1BG), - "ConfigureLvl1MenuFrom":"DB", - } - }, - "hlt": - { - "HLTImplementationDB": - { - "UID":"HLTImplementationDB-1", - "libraries":{ - "library": - [ - "TrigServices", - "TrigPSC", - "TrigConfigSvc" - ], - }, - "hltPrescaleKey":"%s"%(HPSK), - "HLTCommonParameters": - { - "HLTCommonParameters": - { - "messageSvcType":"TrigMessageSvc", - "jobOptionsSvcType":"TrigConf::HLTJobOptionsSvc", - "dllName":"", - "factoryName":"" - } - } - } - } - } - } - - def getTree(self): - TC=recurseDict(self._defaultDict,"TriggerConfiguration") - #print self.__DBAlias - dbc=TriggerConfig.getDBConfig(self,self.__SMK,coral=self.__useCoral,alias=self.__DBAlias) - if dbc[0] is not None: - TC.find("TriggerConfiguration").append(dbc[0]) - if dbc[1] is not None: - TC.find("TriggerConfiguration").append(dbc[1]) - return TC - -class TriggerConfigAthenaHLT: - def __init__(self,args): - from HLTTestApps.configuration import configuration, run_number_error - from HLTTestApps.option import file_opt_spec, emon_opt_spec - conf=configuration(file_opt_spec,args) - t=et.fromstring(str(conf.get_config_ptree())) - TConfig=t.find("Partition").find("TriggerConfiguration").find("TriggerConfiguration") - TConfig.remove(TConfig.find("athenaHLTSpecificConfiguration")) - return TConfig - -class HLTMPPUConfig: - def __init__(self,numForks=2,finalizeTimeout=120, - HardTimeout=60000, - softTimeoutFraction=0.8, - extraParams=[], - childLogRoot="/tmp/", - DataSrc=None, - InfoSvc=None, - partitionName="test", - HLTLibs=["TrigServices","TrigPSC","TrigConfigSvc"]): - self._DataSource=DataSrc - self._InfoService=InfoSvc - self._childLogRoot=childLogRoot - if len(childLogRoot)==0: - self._childLogRoot="/log/%s/%s"%(os.environ["USER"],partitionName) - if not os.path.exists(self._childLogRoot): - try: - os.mkdir(self._childLogRoot) - except: - e = sys.exc_info()[0] - print "Warning log directory creation failed! %s"%(e) - self._defaultDict={ - "UID":"ALPPy", - "childLogRoot":self._childLogRoot, - "numForks":numForks, - "finalizeTimeout":finalizeTimeout, - "HardTimeout":HardTimeout, - "softTimeoutFraction":softTimeoutFraction, - "extraParams":extraParams, - "HLTImplementationLibraries":HLTLibs, - "DataSource":self._DataSource, - "InfoService":self._InfoService - } - - def getTree(self): - root=et.Element("ALPApplication") - specials=["extraParams","HLTImplementationLibraries","DataSource","InfoService"] - dd=self._defaultDict - for k in dd.keys(): - if k not in specials: - et.SubElement(root,str(k)).text=str(dd[k]) - else: - if k =="extraParams": - if dd[k] is None or len(dd[k])==0: - continue - ep=et.SubElement(root,"extraParams") - for e in dd[k]: - et.SubElement(ep,"parameter").text=str(e) - elif k=="HLTImplementationLibraries": - hl=et.SubElement(root,"HLTImplementationLibraries") - for l in dd[k]: - et.SubElement(hl,"library").text=str(l) - elif k=="DataSource": - # dt=dd[k].getTree() - # root.append(dt) - et.SubElement(root,"DataSourceLibrary").text=str(dd[k].getLibrary()) - elif k=="InfoService": - # it=dd[k].getTree() - # root.append(dt) - et.SubElement(root,"InfoServiceLibrary").text=str(dd[k].getLibrary()) - root.append(self._DataSource.getTree()) - Inf=et.SubElement(root,"InfoService") - Inf.append(self._InfoService.getTree()) - return root - -class ConfigHelper: - def __init__(self,configDict): - self._configDict=configDict - - def xml2string(self,tree): - return et.tostring(tree) - - def genRosMapping(self,ros2robMap): - ''' Convert ros2robMap dictionary to xml tree - Format has to be - ros2robMap={"ROS-FULL_SD_EVENT-00":[1120005,1120006,...], - "ROS-FULL_SD_EVENT-01":[2120005,2120006,...], - } - ''' - root=et.Element("ROS2ROBS") - for ros in iter(ros2robMap): - robs=ros2robMap[ros] - for rob in robs: - et.SubElement(r,"ROBID").text=str(rob) - return root - def recurseDict(self,d,rootName): - r=et.Element(rootName) - for k in iter(d): - if isinstance(d[k],str): - et.SubElement(r,k).text=str(d[k]) - else: - l=recurseDict(d[k],k) - r.append(l) - return r - - - -class ALPPy: - def __init__(self,libName="libALP.so"): - import _ALPPy as ALP - #ALP.LoadLibrary(libName) - self.__libName=libName - self._libLoaded=False - self.LoadLibrary() - ALP.SetSignalHandler() - def LoadLibrary(self): - import _ALPPy as ALP - if not self._libLoaded: - self._libLoaded=ALP.LoadLibrary(self.__libName) - def Configure(self,configTree): - if configTree is not None: - import _ALPPy as ALP - return ALP.ConfigurePU(configTree) - return False - def Unconfigure(self): - import _ALPPy as ALP - return ALP.UnconfigurePU("") - - def Connect(self): - import _ALPPy as ALP - return ALP.ConnectPU("") - - def PrepareForRun(self,prepTree): - import _ALPPy as ALP - import os - currpid=os.getpid() - retVal=ALP.PrepareForRunPU(prepTree) - newpid=os.getpid() - if currpid!=newpid: - print "Running in children with pid %s. Exiting!"%newpid - os.exit(0) - if not retVal: - print "Prepare for run returned false" - return retVal - def StopRun(self): - import _ALPPy as ALP - return ALP.StopRunPU("") - def UserCommand(self,comm): - import _ALPPy as ALP - return ALP.UserCommandPU(comm) - diff --git a/Trigger/ALP/python/ALPPy/__init__.py b/Trigger/ALP/python/ALPPy/__init__.py deleted file mode 100644 index d11c3551fef..00000000000 --- a/Trigger/ALP/python/ALPPy/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Trigger/ALP/python/ALPPy diff --git a/Trigger/ALP/scripts/runALPPy.py b/Trigger/ALP/scripts/runALPPy.py deleted file mode 100755 index 27007f75a5e..00000000000 --- a/Trigger/ALP/scripts/runALPPy.py +++ /dev/null @@ -1,423 +0,0 @@ -#!/usr/bin/env python -import os,sys,argparse,signal - -def signal_handler(sig,frame): - print('Signal Handler Called for' ,signum) - os.exit() -def parse_extra(parser,extra): - namespaces=[] - print "parsing commandline '%s'"%extra - while extra: - n,extra = parser.parse_known_args(extra) - namespaces.append(n) - print "Namespace=",n,"extra=",extra - return namespaces - -#from http://stackoverflow.com/questions/20094215/argparse-subparser-monolithic-help-output - -class _BigHelp(argparse._HelpAction): - def __call__(self, parser, namespace, values, option_string=None,ErrReason=None): - parser.print_help() - - modGroups={' Data Source Modules ':['dcmds','fileds'], - ' Monitoring Modules ':['monsvcis'], - ' Trigger Configuration Modules ':['joboptions','DBPython','DB'], - ' ALPPy Module ':['ALP'], - 'help':['-h','--help'] - } - modMaps={} - for mg in modGroups.keys(): - for m in modGroups[mg]: - modMaps[m]=mg - helpGroups={} - # retrieve subparsers from parser - subparsers_actions = [ - action for action in parser._actions - if isinstance(action, argparse._SubParsersAction)] - # there will probably only be one subparser_action, - # but better save than sorry - for subparsers_action in subparsers_actions: - # get all subparsers and print help - for choice, subparser in subparsers_action.choices.items(): - hg=modMaps[choice] - if hg not in helpGroups: - helpGroups[hg]=[] - helpGroups[hg].append("%s\n%s"%('{:-^40}'.format(" %s "%choice),subparser.format_help())) - print 20*"*","MODULES HELP",20*"*" - print " You can specify --help after module name to see only relative modules help" - for g in helpGroups: - print ("\n{:*^60}\n".format(g)) - for m in helpGroups[g]: - print m - if ErrReason is not None: - print - print "%s\n"%ErrReason - parser.exit() - - -def getDataSource(cdict): - NS=cdict["datasource"] - if NS is None or NS['module']=='dcmds': - from HLTMPPy.HLTMPPy import DCMDataSource as ds - return ds() - if NS['module']=='fileds': - from HLTMPPy.HLTMPPy import FileDataSource as FD - fds=FD(fileList=NS['file'], - outFile=NS["outFile"], - compressionLevel=NS["compressionLevel"], - compressionFormat=NS["compressionFormat"], - preload=NS["preload"], - numEvents=NS["numEvents"], - library=NS["dslibrary"], - loopFiles=NS["loopFiles"] - ) - return fds - return None - -def getInfoSvc(cdict): - NS=cdict['monitoring'] - if NS is None: - from HLTMPPy.HLTMPPy import MonSvcInfoService as MSI - mon=MSI() - return mon - if NS['module']=="monsvcis": - from HLTMPPy.HLTMPPy import MonSvcInfoService as MSI - mon=MSI(OHServer=NS['OHServer'], - OHSlots=NS['OHSlots'], - OHInterval=NS['OHInterval'], - OHRegex=NS['OHRegex'], - ISServer=NS['ISServer'], - ISSlots=NS['ISSlots'], - ISInterval=NS['ISInterval'], - ISRegex=NS['ISRegex']) - return mon - return None - -def getTriggerConfig(cdict): - td=cdict['trigger'] - if td['module']=='joboptions': - from HLTMPPy.HLTMPPy import TriggerConfigJO as TC - tc=TC(jopath=td['joFile'], - SMK=td['SMK'], - prescaleKey=td['l1PSK'], - bunchKey=td['l1BG'], - L1MenuFrom=td['l1MenuConfig']) - return tc - elif td['module']=='DB': - from HLTMPPy.HLTMPPy import TriggerConfigDB as TC - tc=TC(SMK=td['SMK'], - L1PSK=td['l1PSK'], - L1BG=td['l1BG'], - HPSK=td['HLTPSK'], - Coral=td['use_coral'], - DBAlias=td['db_alias']) - return tc - elif td['module']=='DBPython': - from HLTMPPy.HLTMPPy import TriggerConfigDBPython as TC - tc=TC(SMK=td['SMK'], - L1PSK=td['l1PSK'], - L1BG=td['l1BG'], - HPSK=td['HLTPSK'], - Coral=td['use_coral'], - preCmds=td['precommand'], - postCmds=td['postcommand'], - DBAlias=td['db_alias'] - ) - return tc - return None - -def getHLTMPPUConfig(cdict,DS=None,IS=None): - hd=cdict['HLTMPPU'] - DSrc=DS - if DSrc is None : DSrc=getDataSource(cdict) - ISvc=IS - if ISvc is None : ISvc=getInfoSvc(cdict) - - from HLTMPPy.HLTMPPy import HLTMPPUConfig as HC - hc=HC(numForks=hd['num_forks'], - HardTimeout=hd['hard_timeout'], - softTimeoutFraction=hd['soft_timeout_fraction'], - extraParams=hd['extra_params'], - childLogRoot=hd['log_root'], - partitionName=hd['partition_name'], - HLTLibs=cdict['trigger']['library'], - DataSrc=DSrc, - InfoSvc=ISvc - ) - return hc - -def getPartitionTree(cdict): - from lxml import etree as et - root=et.Element("Partition") - et.SubElement(root,"UID").text=str(cdict['global']['partition_name']) - et.SubElement(root,"LogRoot").text=str(cdict['global']['log_root']) - return root - -def getConfigurationTree(cdict): - from lxml import etree as et - root=et.Element("Configuration") - ds=getDataSource(cdict) - inf=getInfoSvc(cdict) - hlt=getHLTMPPUConfig(cdict,ds,inf) - trig=getTriggerConfig(cdict) - part=getPartitionTree(cdict) - part.append(trig.getTree()) - root.append(hlt.getTree()) - root.append(part) - et.SubElement(root,"ROS2ROBS") - return et.tostring(root,pretty_print=True) - -def getPrepareForRunTree(cdict): - RunParams={ - "run_number":cdict['global']['run_number'], - 'max_events':'0', - 'recording_enabled':'0', - 'trigger_type':'0', - 'run_type':'Physics', - 'det_mask':'0'*(32-len(cdict['global']['detector_mask']))+cdict['global']['detector_mask'], - 'beam_type':'0', - 'beam_energy':'0', - 'filename_tag':"", - 'T0_project_tag':'', - 'timeSOR':cdict['global']['date'], - 'timeEOR':'1/1/70 01:00:00', - 'totalTime':'0' - } - Magnets={'ToroidsCurrent': - { - 'value':cdict['global']['toroid_current'], - 'ts':cdict['global']['date'] - }, - 'SolenoidCurrent': - { - 'value':cdict['global']['solenoid_current'], - 'ts':cdict['global']['date'] - } - } - from lxml import etree as et - RT=et.Element("RunParams") - for k in iter(RunParams): - et.SubElement(RT,k).text=str(RunParams[k]) - M=et.Element("Magnets") - for m in ("ToroidsCurrent","SolenoidCurrent"): - T=et.SubElement(M,m) - for k in iter(Magnets[m]): - et.SubElement(T,k).text=str(Magnets[m][k]) - return et.tostring(RT,pretty_print=True)+et.tostring(M,pretty_print=True) - -def getConfigDictionary(NamespaceList,modMap): - d={} - globalArgs=['extra','log_root','partition_name','with_infrastructure','run_number','save_options', - 'options_file','detector_mask','toroid_current','solenoid_current','date' - ] - for n in NamespaceList: - gk=modMap[n.module] - args=vars(n) - d[gk]={key:value for (key,value) in args.items() if key not in globalArgs} - if d['trigger']['module'] is not 'joboptions': - d['trigger']['library'].append("TrigConfigSvc") - ht=d['HLTMPPU'] - ht['log_root']=NamespaceList[0].log_root - ht['partition_name']=NamespaceList[0].partition_name - d['global']={key:value for (key,value) in vars(NamespaceList[0]).items() if key in globalArgs[1:]} - if d['global']['date']=="0": - import datetime - now=datetime.datetime.now() - d['global']['date']="{:%d/%m/%y} {:%H:%M:%S}".format(now,now) - return d - - -def main(): - p=argparse.ArgumentParser(description="HLTMPPU python based steering",formatter_class=argparse.ArgumentDefaultsHelpFormatter,add_help=False) - p.add_argument('-h',"--help",action=_BigHelp,help="Print this help and exit") - subp=p.add_subparsers(help="Module configurations",dest='module') - #subp.required=True - #p.add_argument('--file',nargs='+') - # monmods=p.add_subparsers(help='Monitoring modules') - # trigmods=p.add_subparsers(help='Trigger configuration modules') - - dcmdsopts=subp.add_parser('dcmds',help="DCMDataSource options",formatter_class=argparse.ArgumentDefaultsHelpFormatter) - #dcmdsopts.add_argument('--dslibrary',nargs=1,const="dfinterfaceDcm",default="dfinterfaceDcm") - dcmdsopts.add_argument('--dslibrary',nargs=1,default="dfinterfaceDcm",help="Library that provides the interface") - dcmdsopts.add_argument('--ros2robs',nargs=1,default='',help="Either a file or a string in the form of python array that contains ros-rob mappings") - -# File DS -# -# - fileds=subp.add_parser('fileds',help="File based data source options",formatter_class=argparse.ArgumentDefaultsHelpFormatter) - fileds.add_argument('--dslibrary',nargs='?',const="FileDataSource",default="FileDataSource",help="Library that provides the interface") - fileds.add_argument('--loopFiles',action='store_true',help="Whether to loop over the files") - fileds.add_argument('--skipEvts',type=int,nargs='?',help="Number of events to skip",const=0,default=0) - fileds.add_argument('--numEvents',type=int,nargs='?',help="Number of events to process",const=-1,default=-1) - fileds.add_argument('--file',action='append',help="list of files to process, can be repeated for multiple files",required=True) - fileds.add_argument('--preload',action='store_true',help="Preload files into memory") - fileds.add_argument('--outFile',help="name of the output file") - fileds.add_argument('--compressionLevel',type=int,help="compression level of output file",default=2) - fileds.add_argument('--compressionFormat',choices=["ZLIB","UNCOMPRESSED"],help="compression level of output file",default="ZLIB") - - monsvcis=subp.add_parser('monsvcis',help="MonSvc (online) based monitoring",formatter_class=argparse.ArgumentDefaultsHelpFormatter) - monsvcis.add_argument('--histogram-server',nargs='?', - const='${TDAQ_OH_SERVER=Histogramming}', - default='${TDAQ_OH_SERVER=Histogramming}', - help="Destination IS server for Histograms",dest='OHServer') - monsvcis.add_argument('--hist-publish-period',nargs='?',type=int,const=80, - default=80,help="Publication period for histograms", - dest='OHInterval' - ) - monsvcis.add_argument('--histogram-regex',nargs='?',const='.*',default='.*', - help='Histogram regex',dest="OHRegex") - - monsvcis.add_argument('--hist-slots',nargs='?',type=int,const=8,default=8, - help="Number of slots for OH publication",dest='OHSlots') - monsvcis.add_argument('--is-publish-period',nargs='?',type=int,const=10,default=10, - help="Publication period for IS objects",dest='ISInterval') - monsvcis.add_argument('--is-server',nargs='?',const='${TDAQ_IS_SERVER=DF}', - default='${TDAQ_IS_SERVER=DF}',help="Destination IS server", - dest='ISServer') - monsvcis.add_argument('--is-slots',nargs='?',type=int,const=1,default=1, - help="Number of slots for IS publication",dest='ISSlots') - monsvcis.add_argument('--is-regex',nargs='?',const='.*',default='.*', - help='Histogram regex',dest="ISRegex") - - - trigcommon=argparse.ArgumentParser(add_help=False) - trigcommon.add_argument('--l1PSK',type=int,help="Level-1 Prescale key",default=0) - trigcommon.add_argument('--l1BG',type=int,help="Level-1 Bunch Group key",default=0) - trigcommon.add_argument('--SMK',type=int,help="Super Master Key",default=0) - trigcommon.add_argument('--library',action='append',default=["TrigServices","TrigPSC"]) - - dbcommon=argparse.ArgumentParser(add_help=False) - - dbcommon.add_argument('--HLTPSK',help='HLT Prescale key',default=0) - dbcommon.add_argument('--db-alias',help='Alias for Trigger DB configuration',default="TRIGGERDB") - dbcommon.add_argument('--use-coral', - action='store_true',help='Whether to use local coral proxy') - dbcommon.add_argument('--coral-server',nargs='?',help='Coral Server url',const='LOCAL_HOST',default='LOCAL_HOST') - dbcommon.add_argument('--coral-port',nargs='?',type=int,help='Coral Server port',const=3320,default=3320) - dbcommon.add_argument('--coral-user',nargs='?',help='Coral Server user name', - const="ATLAS_CONF_TRIGGER_RUN2_R", - default="ATLAS_CONF_TRIGGER_RUN2_R") - dbcommon.add_argument('--coral-password',nargs='?',help='Coral Server password', - const="TrigConfigRead2015", - default="TrigConfigRead2015", - ) - jotrigConf=subp.add_parser('joboptions',help="Joboptions based trigger config",parents=[trigcommon], - formatter_class=argparse.ArgumentDefaultsHelpFormatter) - jotrigConf.add_argument('--l1MenuConfig',nargs='?',const='DB',default='DB',choices=["DB"] - ,help="Where to get L1 menu configuration") - jotrigConf.add_argument('--joFile',nargs=1,required=True,help="Joboptions file to run") - - - DBPyConf=subp.add_parser("DBPython",help="DBPython based trigger config",parents=[trigcommon,dbcommon], - formatter_class=argparse.ArgumentDefaultsHelpFormatter) - DBPyConf.add_argument('--precommand',action='append',help='pre-command,can be repeated') - DBPyConf.add_argument('--postcommand',action='append',help='post-command, can be repeated') - - - DBConf=subp.add_parser("DB",help="DB based trigger config",parents=[trigcommon,dbcommon], - formatter_class=argparse.ArgumentDefaultsHelpFormatter) - puConf=subp.add_parser("HLTMPPU",help="HLTMPPU Configuration",formatter_class=argparse.ArgumentDefaultsHelpFormatter) - puConf.add_argument("-N",'--application-name',nargs='?',const="HTLMPPy-1",default="HLTMPPy-1",help="Application Name") - puConf.add_argument("-i",'--interactive',action='store_true',help="Whether to run in interactive mode") - puConf.add_argument("-f",'--num-forks',nargs='?',type=int,const=2,default=2,help="Number of children to fork") - puConf.add_argument('-F','--finalize-timeout',type=int,nargs=1,default=120,help="Timeout at finalization") - puConf.add_argument('-e','--extra-params',action='append',help='Extra parameters for HLTMPPU') - puConf.add_argument('-t','--soft-timeout-fraction',type=float,nargs=1,default=0.8,help="Fraction of hard timeout to trigger soft timeout.") - puConf.add_argument('-T','--hard-timeout',type=int,nargs=1,default=60000,help="Hard timeout duration in milliseconds.") - p.add_argument("-I",'--with-infrastructure',action='store_true',help="Whether to start ipc and IS infrastructure") - p.add_argument("-r","--run-number",type=int,nargs='?',const=-1,default=-1,help="Run number") - p.add_argument("-l","--log-root",nargs=1,default="/tmp/",help="directory to save log files of child processes") - p.add_argument("-p","--partition-name",nargs='?',default="",help="Partition Name") - p.add_argument("-O","--options-file",nargs=1,help="Read configuration from options file") - p.add_argument("-S","--save-options",nargs=1,help="Write configuration to options file. Extension defines the format (json,yaml,xml)") - - p.add_argument("--toroid-current",nargs='?',type=float,default=3.14,const=3.14,help="Value of the toroid current to pass during prepareForRun") - p.add_argument("--solenoid-current",nargs='?',type=float,default=314.15,const=314.15,help="Value of the solenoid current to pass during prepareForRun") - p.add_argument("--date",nargs='?',default="0",const="0",help="Run start date to be passed during prepareForRun") - p.add_argument("--sleep",type=int,default=120,help="Seconds to sleep before calling stop") - p.add_argument("--detector-mask",nargs='?',default="0000000000000000400269affffffff7",const="0000000000000000400269affffffff7",help="Detector mask") - - #p.add_argument('extra',nargs='*',help=argparse.SUPPRESS) - - commands=sys.argv[1:] - modGroups={'datasource':['dcmds','fileds'], - 'monitoring':['monsvcis'], - 'trigger':['DBPython','DB','joboptions'], - 'HLTMPPU':['HLTMPPU'], - } - modNames=[] - for k in modGroups.keys(): - modNames.extend(modGroups[k]) - needDefault=True - modMap={} - modCount={} - for k in modGroups.keys(): - modCount[k]=[] - for m in modGroups[k]: - modMap[m]=k - - #print modNames - for m in modNames: - if m in commands: - needDefault=False - if needDefault: commands.extend(['HLTMPPU']) - - extra_namespaces=parse_extra(p,commands) - print - for n in extra_namespaces: - g=modMap[n.module] - modCount[g].append(n.module) - print "Module __'%s'__ "%n.module,n - print - for m in modCount.keys(): - if len(modCount[m]) > 1: - - _BigHelp(None,None)(p,None,None,None,'ERROR! More than one module type defined for module class %s %s'%(m,modCount[m])) - if len(modCount[m]) == 0: - defMod=modGroups[m][0] - modCount[m].append(defMod) - print "Adding default Module '%s' for type '%s' "%(defMod,m) - extra_namespaces.append((p.parse_known_args(["%s"%((modGroups[m])[0])]))[0]) - print "Final namespaces ",extra_namespaces - import pprint - pp=pprint.PrettyPrinter() - from os import environ as env - if extra_namespaces[0].partition_name=="": - if "TDAQ_PARTITION" not in env: - extra_namespaces[0].partition_name="HLTMPPy_partition" - else: - extra_namespaces[0].partition_name=env['TDAQ_PARTITION'] - cdict=getConfigDictionary(extra_namespaces,modMap) - pp.pprint(cdict) - #HConf=getHLTMPPUConfig(cdict) - #tree=g.getTree() - if "TDAQ_APPLICATION_NAME" not in env: - env["TDAQ_APPLICATION_NAME"]=cdict['HLTMPPU']['application_name'] - if "TDAQ_PARTITION" not in env: - env["TDAQ_PARTITION"]=cdict['global']['partition_name'] - tree=getConfigurationTree(cdict) - print tree - print - prtree=getPrepareForRunTree(cdict) - print prtree - # needed to initialize ipc::core - #sys.exit(0) - from ispy import IPCPartition - from HLTMPPy.HLTMPPy import HLTMPPy as HPY - mppy=HPY() - print mppy.Configure(tree) - print 10*"* *","Configure Finished" - print mppy.Connect() - print 10*"* *","Connect Finished" - print mppy.PrepareForRun(prtree) - if cdict['HLTMPPU']['interactive']: - from IPython import embed - embed() - else: - import time - print "sleeping for %s seconds"%extra_namespaces[0].sleep - time.sleep(extra_namespaces[0].sleep) - -if "__main__" in __name__: - main() - diff --git a/Trigger/ALP/src/ALP.cxx b/Trigger/ALP/src/ALP.cxx deleted file mode 100644 index e072261e6c3..00000000000 --- a/Trigger/ALP/src/ALP.cxx +++ /dev/null @@ -1,2151 +0,0 @@ -// Dear emacs, this is -*- c++ -*- -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ - -#include "ALP/ALP.h" -// needed for system calls -#include <errno.h> -#include <sys/prctl.h> -#include <signal.h> -#include <sys/wait.h> -#include <cstdio> -#include <cstdlib> -#include <dlfcn.h> -#include <unistd.h> - -// needed for io, threads etc -#include <string> -#include <cstring> -#include <iostream> -#include <boost/thread.hpp> -#include "boost/date_time/posix_time/posix_time.hpp" -#include <boost/foreach.hpp> -#include <boost/algorithm/string.hpp> -#include <ers/ers.h> -#include "ALP/Issues.h" -//needed for IPC initialization -//#include "ipc/core.h" -#include "hltinterface/IPCControlInterface.h" -//InformationService -#include "hltinterface/IInfoRegister.h" -// Data Source -#include "hltinterface/DataSource.h" -//dynlibs Module -//#include "dynlibs/Module.h" -#include "ALP/PluginLoader.h" -#include "ALP/DataSourceExceptions.h" -//ISObjects -#include "hltinterface/ContainerFactory.h" -#include "hltinterface/GenericHLTContainer.h" -//needed temporarily for IS publication. -#include "TH1F.h" -#include "dirent.h" -//Random number generator -#include <random> -#include "ALP/ALP_utils.h" - -extern char **environ; - -namespace HLTPU { - //fix this! - class ScopedISHelper{ - public: - ScopedISHelper(long LB,long ev){ - m_tree.put("eventNumber",ev); - m_tree.put("LBNumber",LB); - try{ - hltinterface::IInfoRegister::instance()->beginEvent(m_tree); - }catch(const std::exception &ex){ - ERS_LOG("Caught exception while calling beginEvent for event " - <<ev<<" at LB "<<LB - <<". Exception was "<<ex.what()); - } - } - ~ScopedISHelper(){ - try{ - hltinterface::IInfoRegister::instance()->endEvent(m_tree); - }catch(const std::exception &ex){ - ERS_LOG("Caught exception while calling beginEvent for event "<<m_tree.get<long>("eventNumber") - <<" at LB "<<m_tree.get<long>("LBNumber") - <<". Exception was "<<ex.what()); - } - } - private: - boost::property_tree::ptree m_tree; - }; -} -#define GCIncrIntField(obj,field,val) \ - obj->setIntField(field,obj->getIntField(field)+val) -#define GCDecrIntField(obj,field,val) \ - obj->setIntField(field,obj->getIntField(field)-val) - -ALP::ALP(){ - m_myPid=getpid(); - m_myPgid=getpgid(0); - std::cout<<ALPUtils::getTimeTag()<<"Constructing ALP Interface with pid "<<m_myPid<<" and pgid "<<m_myPgid<<std::endl; - // ERS_LOG("Constructing ALP Interface with pid "<<m_myPid<<" and pgid "<<m_myPgid); - std::cout<<ALPUtils::getTimeTag()<<"Library built on "<<__DATE__<<" "<<__TIME__<<std::endl; - //ERS_LOG("Library built on "<<__DATE__<<" "<<__TIME__<<std::endl); - m_nannyWork=false; - m_nannyThread=0; - m_motherPublisher=0; - m_numChildren=1; - m_HLTSteering=0; - m_dataSource=0; - m_myName=getenv("TDAQ_APPLICATION_NAME"); - m_processEvents=true; - m_childLogPath="/tmp/"; - // to be removed - char * tmp = getenv("TDAQ_IS_SERVER"); - if(tmp){ - m_ISSName=std::string(tmp); - }else{ - m_ISSName="DF"; - } - m_publishInterval=30; - // m_motherInfo=std::make_shared<ALP::ALPMotherInfo>(); - auto inst=hltinterface::ContainerFactory::getInstance(); - m_motherInfo=inst->constructContainer("PU_MotherInfo", - "ALPMotherInfo", - hltinterface::GenericHLTContainer::UntilEOR, - hltinterface::GenericHLTContainer::WRITE); - //size_t MINumKills,MINumForks,MIUnexpectedChildExits,MINumRequested,MINumActive,MINumExited; - m_MINumKills=inst->addInt(m_motherInfo,"NumKills"); - m_MINumForks=inst->addInt(m_motherInfo,"NumForks"); - m_MIUnexpectedChildExits=inst->addInt(m_motherInfo,"UnexpectedChildExits"); - m_MINumRequested=inst->addInt(m_motherInfo,"NumRequested"); - m_MINumActive=inst->addInt(m_motherInfo,"NumActive"); - m_MINumExited=inst->addInt(m_motherInfo,"NumExited"); - m_childInfo=inst->constructContainer("PU_ChildInfo", - "ALPInfo", - hltinterface::GenericHLTContainer::UntilEOR, - hltinterface::GenericHLTContainer::WRITE); - - m_CINumEvents=inst->addInt(m_childInfo,"NumEvents"); - m_CIAcceptedEvents=inst->addInt(m_childInfo,"AcceptedEvents"); - m_CIRejectedEvents=inst->addInt(m_childInfo,"RejectedEvents"); - m_CIL1ResultFetchTimeouts=inst->addInt(m_childInfo,"L1ResultFetchTimeouts"); - m_CISoftTimeouts=inst->addInt(m_childInfo,"Softtimeouts"); - - m_CILongestWaitForL1Result=inst->addInt(m_childInfo,"LongestWaitForL1Result"); - m_CILongestProcessingTime=inst->addInt(m_childInfo,"LongestProcessingTime"); - m_CIAverageProcessingTime=inst->addFloat(m_childInfo,"AverageProcessingTime"); - m_CIAverageAcceptTime=inst->addFloat(m_childInfo,"AverageAcceptTime"); - - m_CIAverageRejectTime=inst->addFloat(m_childInfo,"AverageRejectTime"); - m_CIAverageL1ResultTime=inst->addFloat(m_childInfo,"AverageL1ResultTime"); - m_CITimePercentInProcessing=inst->addFloat(m_childInfo,"TimePercentInProcessing"); - m_CITimePercentInAccept=inst->addFloat(m_childInfo,"TimePercentInAccept"); - - m_CITimePercentInReject=inst->addFloat(m_childInfo,"TimePercentInReject"); - m_CITimePercentInWait=inst->addFloat(m_childInfo,"TimePercentInWait"); - m_CITimePercentInSend=inst->addFloat(m_childInfo,"TimePercentInSend"); - - m_configTree=new boost::property_tree::ptree(); - m_prepareForRunTree=new boost::property_tree::ptree(); - m_forkDelay=-1; - m_preforkSleep=-1; - m_terminationStarted=false; - m_dumpFD=false; - m_dumpThreads=false; - m_lbNum=0; - m_evtNum=0; - m_CTPROBId=0x770001; - m_timerWork=true; - m_l1ResultTimeout=100000;//in ms - m_softTimeout=60000;//in ms; - m_saveConfigOpts=false; - m_threadsExist=false; - m_softTOTrigger=false; - m_hardTOTrigger=false; - m_FinalizeTimeout=120; - m_publisherThread=0; - m_infoService=0; - m_hardTimeout=60; - m_interEventSleep_ms=-1; - m_interEventSpread_ms=-1; - m_keepNumForks=false; - m_termStagger=0; - m_skipFinalize=false; - m_skipFinalizeWorker=false; - m_exitImmediately=false; - m_eventsInInterval=0; - m_acceptedInInterval=0; - m_rejectedInInterval=0; - m_ipcc=0; -} - - -ALP::~ALP(){ - std::cout<<ALPUtils::getTimeTag()<<"Destructing ALP Interface with pid "<<m_myPid<<std::endl; - // delete m_dataSource; - //delete m_infoService; - //delete m_HLTSteering; - delete m_configTree; - delete m_prepareForRunTree; - stopNanny(); - stopMotherPublisher(); - -} - -bool ALP::configure(const boost::property_tree::ptree& args ) { - //ERS_LOG("--ALP_ConfigureStart. using the following configuration tree: "); - std::cout<<ALPUtils::getTimeTag()<<"--ALP_ConfigureStart. using the following configuration tree: "<<std::endl; - printPtree(args,""); - std::cout.flush(); - *m_configTree=args; - m_numChildren=args.get("Configuration.ALPApplication.numForks",4); - m_FinalizeTimeout=args.get("Configuration.ALPApplication.finalizeTimeout",120); - double softTOfraction=args.get<double>("Configuration.ALPApplication.softTimeoutFraction",0.80); - m_hardTimeout=args.get("Configuration.ALPApplication.HardTimeout",60000); - m_softTimeout=m_hardTimeout*softTOfraction; - m_childLogPath=std::string(args.get_child("Configuration.Partition.LogRoot").data()); - std::string ipclib("CorbaIPCControl"); - std::vector<std::string> libs,mods; - try{ - ipclib=std::string(args.get_child("Configuration.ALPApplication.IPCController").data()); - }catch(boost::property_tree::ptree_bad_path &ex){ - }catch(...){ - } - - std::cout<<ALPUtils::getTimeTag()<<"Trying to open ipc control library "<<ipclib<<std::endl; - - try{ - ALPNS::PluginLoader::addPlugin("IPCController",libs); - }catch(std::exception &ex){ - std::cerr<<ALPUtils::getTimeTag()<<"Error loading IPCController libraries "<<ex.what()<<std::endl; - std::string errMsg=std::string("IPCController library load failed with \"")+ex.what()+"\""; - //ers::fatal(ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str())); - throw ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str()); - return false; - } - libs.resize(0); - typedef hltinterface::IPCControlInterface* (*ipccreator)(void); - ipccreator ipccfact=ALPNS::PluginLoader::get("IPCController")->function<ipccreator>("create_ipccontroller"); - m_ipcc=ipccfact(); - m_ipcc->initializeIPC(args); - try{ - //std::pair<boost::property_tree::ptree::const_assoc_iterator,boost::property_tree::ptree::const_assoc_iterator> extras= - auto extras=args.get_child("Configuration.ALPApplication.extraParams").equal_range("parameter"); - for(auto it=extras.first;it!=extras.second;++it){ - std::vector<std::string> tokens; - std::string data=std::string(it->second.data()); - boost::algorithm::split(tokens,data,boost::is_any_of("=")); - if(tokens.size()>1){ - if(tokens.at(0)==std::string("forkDelay")){ - int forkDelay=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"Fork delay is set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_forkDelay=forkDelay; - } - }else if(tokens.at(0)==std::string("preForkSleep")){ - int preforkSleep=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"Fork sleep is set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_preforkSleep=preforkSleep; - } - }else if(tokens.at(0)==std::string("publishInterval")){ - int publishInterval=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"publication interval is set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_publishInterval=publishInterval; - if(m_publishInterval<10)m_publishInterval=10;//5 second publish interval minimum - } - }else if(tokens.at(0)==std::string("keepForks")){ - int keepForks=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"keepForks parameter set incorrectly (0 or !=0) \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_keepNumForks=(keepForks!=0); - } - }else if(tokens.at(0)==std::string("dumpFDs")){ - int dump=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"DumpFD is set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_dumpFD=(dump!=0); - } - }else if(tokens.at(0)==std::string("dumpThreads")){ - int dump=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"dumpThreads is set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_dumpThreads=(dump!=0); - } - }else if(tokens.at(0)==std::string("L1ResultTimeout")){ - int dump=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"L1Result timeout set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_l1ResultTimeout=((dump<1000)?1000:dump); - } - }else if(tokens.at(0)==std::string("SaveInputParams")){ - int dump=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"SaveInputParams set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_saveConfigOpts=(dump!=0); - } - }else if(tokens.at(0)==std::string("SkipFinalizeWorker")){ - int dump=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"SkipFinalizeWorker set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_skipFinalizeWorker=(dump!=0); - } - }else if(tokens.at(0)==std::string("SkipFinalize")){ - int dump=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"SkipFinalize set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_skipFinalize=(dump!=0); - } - }else if(tokens.at(0)==std::string("ExitWithoutCleanup")){ - int dump=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"ExitWithoutCleanup set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_exitImmediately=(dump!=0); - } - }else if(tokens.at(0)==std::string("CTPROBId")){ //needs to be in HEXADECIMAL - int dump=::strtol(tokens.at(1).c_str(),0,16); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"CTPROBId is set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_CTPROBId=dump; - } - }else if(tokens.at(0)==std::string("InterEventSleep_ms")){ - int interSleep=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"Inter event sleep is set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_interEventSleep_ms=interSleep; - } - }else if(tokens.at(0)==std::string("InterEventSpread_ms")){ - int interSpread=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"Inter event sleep is set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_interEventSpread_ms=interSpread; - } - }else if(tokens.at(0)==std::string("MaxTermStagger_s")){ - int interSpread=::strtol(tokens.at(1).c_str(),0,10); - if(errno==ERANGE||errno==EINVAL){ - std::cerr<<ALPUtils::getTimeTag()<<"Inter event sleep is set incorrectly! offending line is \""<<data<<"\""<<std::endl; - errno=0; - }else{ - m_termStagger=interSpread; - } - } - } - } - }catch(boost::property_tree::ptree_bad_path &ex){ - std::cerr<<ALPUtils::getTimeTag()<<"No ExtraParams "<<std::endl; - ERS_DEBUG(1,"there is no extraParams, skipping"); - }catch (...){ - std::cerr<<ALPUtils::getTimeTag()<<"I caught something that I don't know (i.e. catch(...) caught the exception) "<<std::endl; - } - - ERS_DEBUG(1,"Configuring. my pid is "<<m_myPid); - //load data source - - ERS_DEBUG(1,"Loading DataSource library"); - libs.emplace_back(args.get_child("Configuration.ALPApplication.DataSourceLibrary").data()); - //check whether running DFDataSource or not - { - dlerror(); - void * handle=dlopen(libs.back().c_str(),RTLD_LAZY|RTLD_LOCAL); - if(!handle){ - char b[4000]; - snprintf(b,4000,"lib%s.so",libs.back().c_str()); - ERS_DEBUG(1,"Can't find library '"<<libs.back()<<"' trying '"<<b<<"'"); - handle=dlopen(b,RTLD_LAZY|RTLD_LOCAL); - } - - if(handle){ - dlerror(); - void* sym=dlsym(handle,"create_hltmp_datasource"); - char *errv=dlerror(); - if(!sym){// then library don't have necessary function. probably dfinterfacedcm.so - ERS_LOG("Can't find symbol create_hltmp_datasource in '"<<libs.back()<<"' adding DFDataSource "); - libs.insert(libs.begin(),"DFDataSource"); - if(errv){ - ERS_DEBUG(1,"dlsym error was "<<errv); - } - }else{ - ERS_LOG("Find symbol create_hltmp_datasource in '"<<libs.back()<<"'. Bypassing DFDataSource"); - } - if(dlclose(handle)){ - ERS_DEBUG(1,"Closing library handle after plugin check failed!"); - } - }else{// couldn't open handle revert back to old behavior - ERS_LOG("Can't dlopen library '"<<libs.back()<<"' or lib"<<libs.back()<<".so adding DFDataSource"); - libs.insert(libs.begin(),"DFDataSource"); - } - } - - try{ - ALPNS::PluginLoader::addPlugin("DataSource",libs); - }catch(std::exception &ex){ - std::cerr<<ALPUtils::getTimeTag()<<"Error loading datasource libraries "<<ex.what()<<std::endl; - std::string errMsg=std::string("DataSource library load failed with \"")+ex.what()+"\""; - ers::fatal(ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str())); - throw ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str()); - return false; - } - //load information service - ERS_DEBUG(1,"Loading InformationService library"); - libs.clear(); - libs.push_back(args.get_child("Configuration.ALPApplication.InfoServiceLibrary").data()); - try{ - ALPNS::PluginLoader::addPlugin("InfoService",libs); - }catch(std::exception &ex){ - std::string errMsg=std::string("InfoService library load failed with \"")+ex.what()+"\";"; - ers::fatal(ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str())); - throw ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str()); - return false; - } - //load HLTImplementation libraries - libs.clear(); - ERS_DEBUG(1,"Loading HLTSteering libraries"); - BOOST_FOREACH(const boost::property_tree::ptree::value_type &v, - args.get_child("Configuration.ALPApplication.HLTImplementationLibraries")){ - std::cout<<ALPUtils::getTimeTag()<<"HLT Library= "<<v.second.data()<<std::endl; - libs.push_back(v.second.data()); - } - try{ - ALPNS::PluginLoader::addPlugin("HLTImplementation",libs); - }catch(std::exception &ex){ - std::string errMsg=std::string("HLTSteering libraries load failed with \"")+ex.what()+"\";"; - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str())); - throw ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str()); - return false; - } - //construct the objects - typedef hltinterface::HLTInterface* (*hltcreator)(void); - typedef hltinterface::DataSource* (*dscreator)(void); - typedef hltinterface::IInfoRegister* (*isvccreator)(void); - - ERS_DEBUG(1,"Instantiating DataSource implementation"); - dscreator dsc=ALPNS::PluginLoader::get("DataSource")->function<dscreator>("create_hltmp_datasource"); - if(!dsc){ - std::cerr<<ALPUtils::getTimeTag()<<"Can't get DataSource factory function. Check configuration! Can't continue. exiting"<<std::endl; - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get DataSource factory function. Check configuration! Can't continue. exiting")); - //exit(EXIT_FAILURE); - throw ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get DataSource factory function. Check configuration! Can't continue. exiting"); - return false; - } - m_dataSource=dsc(); - ERS_DEBUG(1,"Instantiating Info Service implementation"); - isvccreator isc=ALPNS::PluginLoader::get("InfoService")->function<isvccreator>("create_hltmp_infoservice"); - if(!isc){ - std::cerr<<ALPUtils::getTimeTag()<<"Can't get InfoService factory function. Check configuration! Can't continue. exiting"<<std::endl; - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get InfoService factory function. Check configuration! Can't continue. exiting")); - //exit(EXIT_FAILURE); - throw ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get InfoService factory function. Check configuration! Can't continue. exiting"); - return false; - } - - m_infoService=isc(); - ERS_DEBUG(1,"Instantiating HLTSteering implementation"); - hltcreator hltc=ALPNS::PluginLoader::get("HLTImplementation")->function<hltcreator>("hlt_factory"); - if(!hltc){ - std::cerr<<ALPUtils::getTimeTag()<<"Can't get HLTSteering factory function. Check configuration! Can't continue. exiting"<<std::endl; - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get HLTSteering factory function. Check configuration! Can't continue. exiting")); - throw ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get HLTSteering factory function. Check configuration! Can't continue. exiting"); - return false; - //exit(EXIT_FAILURE); - } - - m_HLTSteering=hltc(); - bool retVal=true; - - //configure infoservice - { - ERS_DEBUG(1,"Configuring Info Service implementation"); - boost::property_tree::ptree conf=args.get_child("Configuration.ALPApplication.InfoService"); - try{ - boost::optional<const boost::property_tree::ptree&> extraParms=args.get_child_optional("Configuration.ALPApplication.extraParams"); - if(extraParms){ - conf.add_child("extraParams",(*extraParms)); - } - try{ - retVal=retVal&&m_infoService->configure(conf); - }catch(ers::Issue &ex){ - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE," InfoService configuration failed! Check configuration",ex)); - throw ALPIssues::ConfigurationIssue(ERS_HERE," InfoService configuration failed! Check configuration",ex); - return false; - } - if(!retVal){ - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE," InfoService configuration failed! Check configuration")); - throw ALPIssues::ConfigurationIssue(ERS_HERE," InfoService configuration failed! Check configuration"); - } - }catch(std::exception &ex){ - std::cerr<<ALPUtils::getTimeTag()<<"Caught exception \""<<ex.what()<<"\" during InfoService configuration"<<std::endl; - std::string errMsg=std::string("InfoService configuration failed with \"")+ex.what()+"\" Check configuration"; - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str())); - throw ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str()); - return false; - } - } - - //configure data source - { - ERS_DEBUG(1,"Configuring DataSource implementation"); - // const boost::property_tree::ptree& conf=args.get_child("Configuration.ALPApplication.DataSource"); - // boost::property_tree::ptree ptemp(conf); - try{ - // DummyDataSource cannot do EB without ROB info ?? - m_configTree->put("Configuration.ALPApplication.DataSource.L1ResultTimeout",m_l1ResultTimeout); - bool r=m_dataSource->configure(*m_configTree); - retVal=retVal&&r; - if(!r){ - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE," DataSource configuration failed! Check configuration")); - throw ALPIssues::ConfigurationIssue(ERS_HERE," DataSource configuration failed! Check configuration"); - return false; - } - }catch(std::exception &ex){ - std::cerr<<ALPUtils::getTimeTag()<<"Caught exception \""<<ex.what()<<"\" during DataSource configuration"<<std::endl; - std::string errMsg=std::string("DataSource configuration failed with \"")+ex.what()+"\" Check configuration"; - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str())); - throw ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str()); - return false; - } - } - - // configure HLT - { - ERS_DEBUG(1,"Configuring HLTSteering implementation"); - try{ - bool r=m_HLTSteering->configure(args); - retVal=retVal&&r; - if(!r){ - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"HLT configuration failed! Check configuration")); - throw ALPIssues::ConfigurationIssue(ERS_HERE,"HLT configuration failed! Check configuration"); - return false; - } - }catch(std::exception &ex){ - std::cerr<<ALPUtils::getTimeTag()<<"Caught exception \""<<ex.what()<<"\" during Steering configuration"<<std::endl; - std::string errMsg=std::string("HLTSteering configuration failed with \"")+ex.what()+"\" Check configuration"; - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str())); - throw ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str()); - return false; - } - } - - //::sleep(1); - //ERS_INFO("Steering code loading failed continuing with dummy"); - //return retVal; - if(!retVal){ - throw ALPIssues::ConfigurationIssue(ERS_HERE,"Configure failed! Check Configuration"); - } - - // m_motherInfo->LastUserCommand=std::vector<std::string>(); - // m_motherInfo->LastStateTransition="Configure"; - // m_motherInfo->LastExitedChild=""; - m_motherInfo->setIntField(m_MINumKills,0); - m_motherInfo->setIntField(m_MINumForks,0); - m_motherInfo->setIntField(m_MIUnexpectedChildExits,0); - m_motherInfo->setIntField(m_MINumRequested,m_numChildren); - m_motherInfo->setIntField(m_MINumActive,0); - m_motherInfo->setIntField(m_MINumExited,0); - // char * tmp = getenv("TDAQ_PARTITION"); - // std::shared_ptr<IPCPartition> m_part(0); - // ERS_LOG("Starting IS Publishing"); - // if(tmp){ - // ERS_LOG("Using partition "<<tmp<<" server "<<m_ISSName<<" with object name "<<m_myName<<".PU_MotherInfo"); - // try{ - // m_part=std::make_shared<IPCPartition>(tmp); - // }catch(std::exception &ex){ - // ERS_LOG("Can't create partition object "<<ex.what()); - // } - // } - // if(m_part){ - // auto id=std::make_shared<ISInfoDictionary>(*m_part); - // std::string objName=m_ISSName+"."+m_myName+".PU_MotherInfo"; - // publishMotherInfo(id,objName); - // } - ERS_LOG("--ALP_ConfigureEnd "); - if(m_saveConfigOpts){ - ALPUtils::dump2File("Configure.xml",args); - try{ - std::ofstream of("Environ.sh",std::ofstream::out|std::ofstream::trunc); - for (char **env=environ; *env!=0;env++){ - of<<"export "<<*env<<std::endl; - } - of.close(); - }catch(std::exception &ex){ - std::cerr<<ALPUtils::getTimeTag()<<"Failed to dump the environment to file. Error was "<<ex.what()<<std::endl; - } - } - return retVal; -} - -bool ALP::connect(const boost::property_tree::ptree& args) { - //std::cout << "Executing connect..." << std::endl; - ERS_LOG("--ALP_ConnectStart. using the following configuration tree: "); - //ERS_LOG("Executing connect... "<<m_myPid); - printPtree(args,""); - //std::cout<<ALPUtils::getTimeTag()<<"My Pid is "<<m_myPid<<std::endl; - if(m_saveConfigOpts){ - ALPUtils::dump2File("Connect.xml",args); - } - - bool retVal=true; - if(m_HLTSteering){ - retVal=(m_HLTSteering)->connect(args); - } - //::sleep(1); - if(!retVal){ - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"HLTSteering connect() transition failed. Check configuration")); - throw ALPIssues::TransitionIssue(ERS_HERE,"HLTSteering connect() transition failed. Check configuration"); - return false; - } - ERS_LOG("--ALP_ConnectEnd. "); - - return retVal; -} - -bool ALP::prepareForRun(const boost::property_tree::ptree& args) { - // std::cout<<"Starting prepareForRun with arguments"<<std::endl; - ERS_LOG("Starting prepare for run, pid= "<<m_myPid); - ERS_LOG("--ALP_PrepareForRunStart. using the following configuration tree: "); - //ERS_INFO("Starting prepare for run, pid="<<m_myPid); - printPtree(args,""); - // std::cerr<<"My Pid is "<<m_myPid<<std::endl; - if(m_saveConfigOpts){ - ALPUtils::dump2File("PrepareForRun.xml",args); - } - - *m_prepareForRunTree=args; - bool retVal=true; - // m_motherInfo->LastUserCommand=std::vector<std::string>(); - // m_motherInfo->LastStateTransition="prepareForRun"; - // m_motherInfo->LastExitedChild=""; - - m_motherInfo->setIntField(m_MINumKills,0); - m_motherInfo->setIntField(m_MINumForks,0); - m_motherInfo->setIntField(m_MIUnexpectedChildExits,0); - m_motherInfo->setIntField(m_MINumRequested,m_numChildren); - m_motherInfo->setIntField(m_MINumActive,0); - m_motherInfo->setIntField(m_MINumExited,0); - - if(m_infoService){ - bool ret=false; - try{ - ret=m_infoService->prepareForRun(args); - }catch(ers::Issue &ex){ - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"InfoService failed to complete prepareForRun",ex)); - }catch(...){ - ret=false; - } - if(!ret){ - ERS_LOG("InfoService prepareForRun failed"); - return false; - } - } - - if(m_HLTSteering){ - try{ - retVal=m_HLTSteering->prepareForRun(args); - }catch(std::exception &ex){ - std::string errMsg=std::string("PSC threw an exception \"")+ex.what()+"\""; - ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str())); - throw ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str()); - return false; - } - } - if(!retVal){ - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"PSC failed prepareForRun transition.")); - throw ALPIssues::TransitionIssue(ERS_HERE,"PSC failed prepareForRun transition."); - return retVal; - } - if(m_nannyThread){ - ERS_LOG("Waiting for nanny thread to Join"); - //ERS_INFO("Waiting for nanny thread to Join"); - stopNanny(); - } - if(m_motherPublisher){ - ERS_LOG("Waiting for MotherInfo publisher thread to Join"); - //ERS_INFO("Waiting for nanny thread to Join"); - stopMotherPublisher(); - } - if(m_numChildren<0)m_numChildren=-m_numChildren; - // ERS_INFO("Preparing to fork "<<m_numChildren<<" child processes. SHUTTING DOWN IPC." - // <<" Mother process will be outside IPC until forking is completed!."); - std::cout<<ALPUtils::getTimeTag()<<"Preparing to fork "<<m_numChildren<<" child processes. SHUTTING DOWN IPC." - <<" Mother process will be outside IPC until forking is completed!."<<std::endl; - - //sleep(30); - //printOpenFDs(); - // if(m_childInfo){ - // m_childInfo.reset(); - // } - //m_childInfo=new ALP::ALPInfo(); - m_ipcc->shutdownIPC(args); - //remove this in real system. - std::cerr<<ALPUtils::getTimeTag()<<"IPC shutdown completed"<<std::endl; - // sleep(30); - //printOpenFDs(); - std::random_device rgen; - std::mt19937 rEngine(rgen());//seed with a real number possibly from /dev/urandom - std::uniform_int_distribution<int> uniform_dist(0,((m_forkDelay>0)?m_forkDelay:1000)); - if(m_preforkSleep>0){ - std::cout<<ALPUtils::getTimeTag()<<"Sleeping for "<<m_preforkSleep<<" milliseconds before starting fork process"<<std::endl; - try{ - boost::this_thread::sleep(boost::posix_time::milliseconds(m_preforkSleep));//sleep for given milliseconds - }catch(boost::thread_interrupted &ex){ - } - } - for(int i =1;i<=m_numChildren;i++){ - if(m_forkDelay>0){ - try{ - boost::this_thread::sleep(boost::posix_time::milliseconds(uniform_dist(rEngine)));//add a random delay - }catch(boost::thread_interrupted &ex){ - } - - } - pid_t t=forkChildren(i); - if(t!=0){// mother process - errno=0; - int spidRet=setpgid(t,m_myPgid); - if(spidRet!=0){ - //char buff[200]; - //strerror_r(errno,buff,200); - std::string errNo; - if(errno==EACCES){ - errNo="EACCESS"; - }else if(errno==EINVAL){ - errNo="EINVAL"; - }else if(errno==EPERM){ - errNo="EPERM"; - }else if(errno==ESRCH){ - errNo="ESRCH"; - }else{ - errNo="Unexpected error"; - } - std::cerr<<ALPUtils::getTimeTag()<<"setpgid failed with "<<spidRet<<" "<<errNo<<std::endl; - ers::error(ALPIssues::UnexpectedIssue(ERS_HERE,"Can't set pgid. ZOMBIE INFESTATION RISK!!!")); - } - //m_motherInfo->setField(m_MINumActive,m_motherInfo->getIntField(m_MINumActive)+1); - GCIncrIntField(m_motherInfo,m_MINumActive,1); - m_myChildren[t]=i; - m_posPidMap[i]=t; - }else{ //forked children - m_myPos=i; - return doProcessLoop(args,i); - } - }//Forking loop - - //char *dummv=0; - //int dummc=0; - //sleep(300); - // try{ - // IPCCore::init(dummc,&dummv); - // std::cerr<<ALPUtils::getTimeTag()<<"****************************** IPC INIT SUCCEEDED ******************************"<<std::endl; - // }catch(std::exception &ex){ - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - // std::cerr<<ALPUtils::getTimeTag()<<"IPC Reinitialization failed for pid="<<m_myPid<<" with "<<ex.what()<<std::endl; - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - // std::string errMsg=std::string("IPC Initialization failed with \"")+ex.what()+"\""; - // ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str())); - // throw ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str()); - // return false; - // //ERS_LOG("IPC Reinitialization failed"); - // } - m_ipcc->initializeIPC(args); - ERS_DEBUG(0,"And we are back!"); - startNanny(); - startMotherPublisher(); - try{ - boost::this_thread::sleep(boost::posix_time::milliseconds(1000));//sleep for given milliseconds - }catch(boost::thread_interrupted &ex){ - } - - ERS_LOG("--ALP_prepareForRun End. "); - if(m_motherInfo->getIntField(m_MINumActive)!=(uint)m_numChildren){ - ers::warning(ALPIssues::UnexpectedIssue(ERS_HERE,"Some children exited immediately after forking!")); - return false; - } - return true; -} - -bool ALP::process(const std::vector<eformat::ROBFragment<const uint32_t*> >& /*l1r*/, - hltinterface::HLTResult& /*hltr*/, - const hltinterface::EventId& ){ - ERS_LOG("Process method is called! This shouldn't have happened!"); - ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"Process method called!")); - throw ALPIssues::UnexpectedIssue(ERS_HERE,"Process method called!"); - return false; -} - -bool ALP::stopRun(const boost::property_tree::ptree& args) { - //std::cout << "Stopping the run with args..." << std::endl; - ERS_LOG("--ALP_stopRun Start. "); - ERS_LOG("Stopping the run from the mother process, pid="<<m_myPid); - //ERS_INFO("Stopping the run, pid="<<m_myPid); - printPtree(args,"stopRun "); - if(m_saveConfigOpts){ - ALPUtils::dump2File("StopRun.xml",args); - } - stopNanny(); - //int timeout=args.get("Configuration.ALPApplication.ApplicationTimeout",55); - ERS_LOG("Starting terminator thread to kill children in "<<m_FinalizeTimeout<<" seconds"); - boost::thread *terminator=new boost::thread(&ALP::terminateChildren,this,m_FinalizeTimeout); - collectChildExitStatus(); - m_availableSlots.clear(); - m_diedChildren.clear(); - m_posPidMap.clear(); - m_myChildren.clear(); - m_exitedChildren.clear(); - m_childPidMap.clear(); - terminator->interrupt(); - terminator->join(); - delete terminator; - terminator=0; - bool retVal=m_HLTSteering->stopRun(args); - - //m_dataSource->finalize(args); - m_infoService->finalize(args); - if(!m_keepNumForks)m_numChildren=m_configTree->get("Configuration.ALPApplication.numForks",4); - ERS_LOG("--ALP_stopRun End. returning "<<(retVal?"True":"False")); - return retVal; -} - -void ALP::terminateChildren(int timeOut){ - m_terminationStarted=false; - if(timeOut>0){ - try{ - boost::this_thread::sleep(boost::posix_time::seconds(timeOut)); - }catch(boost::thread_interrupted &ex){ - //thread is interrupted, means children exited properly - return; - } - } - ERS_LOG("Reaping children"); - std::map<pid_t,int> pidsToKill(m_myChildren);//make a copy - m_terminationStarted=true; - for(std::map<pid_t,int>::iterator it=pidsToKill.begin();it!=pidsToKill.end();++it){ - if(::kill(it->first,0)==0){ - if(::kill(it->first,SIGKILL)!=0){ - //char buff[200]; - //strerror_r(errno,buff,200); - ERS_LOG("Killing process id "<<it->first<<" failed with error \""<<strerror(errno)<<"\""); - }else{ - GCIncrIntField(m_motherInfo,m_MINumKills,1); - GCDecrIntField(m_motherInfo,m_MINumActive,1); - // m_motherInfo->setIntField(m_MINumKills,m_motherInfo->getIntField(m_MINumKills)+1); - // m_motherInfo->setIntField(m_MINumActive,m_motherInfo->getIntField(m_MINumActive)-1); - ERS_LOG("Killed child process "<<it->first); - } - } - } - return; -} - -bool ALP::disconnect(const boost::property_tree::ptree& args) { - //std::cout << "Executing disconnect with args..." << std::endl; - ERS_LOG("--ALP_stopRun Start"); - ERS_LOG("Executing disconnect, pid="<<m_myPid); - //ERS_INFO("Executing disconnect, pid="<<m_myPid); - printPtree(args,""); - ERS_LOG("Does this make sense for mother process?!"); - return m_HLTSteering->disconnect(args); - // ::sleep(0.5); - - // return true; -} - -bool ALP::unconfigure(const boost::property_tree::ptree& args) { - //std::cout << "Executing unconfigure with args" << std::endl; - ERS_LOG("--ALP_unconfigure Start"); - ERS_LOG("Executing unconfigure, pid="<<m_myPid); - printPtree(args,""); - if(m_saveConfigOpts){ - ALPUtils::dump2File("Unconfigure.xml",args); - } - std::cout<<ALPUtils::getTimeTag()<<"My Pid is "<<m_myPid<<std::endl; - //::sleep(0.5); - stopMotherPublisher(); - bool retVal=m_HLTSteering->unconfigure(args); - std::cout<<ALPUtils::getTimeTag()<<"Returning "<<(retVal?"True":"False")<<" from unconfigure "<<std::endl; - ERS_LOG("--ALP_unconfigure End"); - return retVal; -} - -bool ALP::publishStatistics(const boost::property_tree::ptree& args) { - //std::cout<<"Publish Stats with args"<<std::endl; - ERS_LOG("Executing publish stats, pid="<<m_myPid); - printPtree(args,""); - - std::cout<<ALPUtils::getTimeTag()<<"My Pid is "<<m_myPid<<std::endl; - - return true; -} - -void ALP::timeOutReached(const boost::property_tree::ptree& args) { - //std::cout << "Executing timeOutReached with args..." << std::endl; - ERS_LOG("Executing timeOut Reached, pid="<<m_myPid); - printPtree(args,""); - -} - -bool ALP::hltUserCommand(const boost::property_tree::ptree& args) { - //std::cout << "Executing hltUserCommand with args..." << std::endl; - ERS_LOG("Executing hltUserCommand, pid="<<m_myPid); - printPtree(args,"userCommand->"); - std::string Command=args.get_child("Configuration.COMMANDNAME").data(); - std::stringstream oss; - if(Command=="FORK"){ - int count=args.get("Configuration.COUNT",1); - std::string forkArgs=args.get_child("Configuration.COUNT").data(); - //m_motherInfo->LastUserCommand=std::vector<std::string>{Command,forkArgs}; - stopNanny(); - stopMotherPublisher(); - // try{ - // IPCCore::shutdown(); - // std::cerr<<ALPUtils::getTimeTag()<<"****************************** IPC SHUTDOWN SUCCEEDED ******************************"<<std::endl; - // }catch(daq::ipc::NotInitialized &ex){ - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - // std::cerr<<ALPUtils::getTimeTag()<<"IPC shutdown failed with NotInitialized! reason= "<<ex.what()<<std::endl; - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - - // }catch(daq::ipc::CorbaSystemException &ex){ - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - // std::cerr<<ALPUtils::getTimeTag()<<"IPC shutdown failed with CorbaSystemException! reason= "<<ex.what()<<std::endl; - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - // }catch(std::exception &ex){ - // std::cerr<<ALPUtils::getTimeTag()<<"Caught unexpected exception"<<std::endl; - // std::string errMsg=std::string("Caught unexpected exception \"")+ex.what()+"\" during IPC Shutdown.!"; - // ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str())); - // return false; - // } - m_ipcc->shutdownIPC(args); - for(int i=0;i<count;i++){ - int pos; - if(m_availableSlots.empty()){ - m_numChildren++; - m_motherInfo->setIntField(m_MINumRequested,m_numChildren); - // m_motherInfo->setIntField(m_MINumActive,m_motherInfo->getIntField(m_MINumActive)+1); - GCIncrIntField(m_motherInfo,m_MINumActive,1); - pos=m_numChildren; - pid_t t=forkChildren(pos); - if(t!=0){//mother - errno=0; - int spidRet=setpgid(t,m_myPgid); - if(spidRet!=0){ - //char buff[200]; - //strerror_r(errno,buff,200); - std::string errNo; - if(errno==EACCES){ - errNo="EACCESS"; - }else if(errno==EINVAL){ - errNo="EINVAL"; - }else if(errno==EPERM){ - errNo="EPERM"; - }else if(errno==ESRCH){ - errNo="ESRCH"; - }else{ - errNo="Unexpected error"; - } - std::cerr<<ALPUtils::getTimeTag()<<"setpgid failed with "<<spidRet<<" "<<errNo<<std::endl; - oss<<ALPUtils::getTimeTag()<<"Can't set pgid for child "<<pos - <<" pid="<<t<<" setpgid failed with "<<spidRet<<" errNo="<<errNo<<std::endl; - //ers::warning(ALPIssues::UnexpectedIssue(ERS_HERE,"Can't set pgid")); - } - m_myChildren[t]=pos; - m_posPidMap[pos]=t; - }else{//children - return doProcessLoop(*m_prepareForRunTree,pos); - } - }else{// avaliable slots exist - pos=m_availableSlots.front(); - m_availableSlots.pop_front(); - pid_t t=forkChildren(pos); - if(t!=0){//mother - errno=0; - int spidRet=setpgid(t,m_myPgid); - if(spidRet!=0){ - //char buff[200]; - //strerror_r(errno,buff,200); - std::string errNo; - if(errno==EACCES){ - errNo="EACCESS"; - }else if(errno==EINVAL){ - errNo="EINVAL"; - }else if(errno==EPERM){ - errNo="EPERM"; - }else if(errno==ESRCH){ - errNo="ESRCH"; - }else{ - errNo="Unexpected error"; - } - std::cerr<<ALPUtils::getTimeTag()<<"setpgid failed with "<<spidRet<<" "<<errNo<<std::endl; - oss<<ALPUtils::getTimeTag()<<"Can't set pgid for child "<<pos<<" pid="<<t - <<" setpgid failed with "<<spidRet<<" errno "<<errNo<<std::endl; - //ers::warning(ALPIssues::UnexpectedIssue(ERS_HERE,"Can't set pgid")); - } - m_myChildren[t]=pos; - m_posPidMap[pos]=t; - //m_motherInfo->NumActive++; - GCIncrIntField(m_motherInfo,m_MINumActive,1); - }else{//children - return doProcessLoop(*m_prepareForRunTree,pos); - } - } - } - if(oss.str().length()>0){ - ers::warning(ALPIssues::UnexpectedIssue(ERS_HERE,(std::string("Encountered errors during forking ")+oss.str()).c_str())); - } - // try{ - // char *dummv=0; - // int dummc=0; - // IPCCore::init(dummc,&dummv); - // std::cerr<<ALPUtils::getTimeTag()<<"****************************** IPC INIT SUCCEEDED ******************************"<<std::endl; - // std::cerr.flush(); - // //sleep(60); - // }catch(std::exception &ex){ - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - // std::cerr<<ALPUtils::getTimeTag()<<"IPC Reinitialization failed for pid="<<getpid()<<" with "<<ex.what()<<std::endl; - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - // std::cerr.flush(); - // } - m_ipcc->initializeIPC(args); - startNanny(); - startMotherPublisher(); - }else if(Command=="KILL"){ - std::string childName=args.get_child("Configuration.CHILDNAME").data(); - std::cout<<ALPUtils::getTimeTag()<<"Old child name =\""<<childName<<"\""<<std::endl; - boost::algorithm::trim(childName); - std::cout<<ALPUtils::getTimeTag()<<"Trimmed child name =\""<<childName<<"\""<<std::endl; - //m_motherInfo->LastUserCommand=std::vector<std::string>{Command,childName}; - stopNanny(); - std::map<std::string,pid_t>::iterator it=m_childPidMap.find(childName); - if(it!=m_childPidMap.end()){ - if(::kill(it->second,0)==0){ - if(::kill(it->second,SIGKILL)!=0){ - //char buff[200]; - //strerror_r(errno,buff,200); - ERS_LOG("Killing process id "<<it->second<<" failed with error \""<<strerror(errno)<<"\""); - }else{ - ERS_LOG("Killed child process "<<it->first<<" pid="<<it->second); - // m_motherInfo->NumKills++; - // m_motherInfo->NumActive--; - GCIncrIntField(m_motherInfo,m_MINumKills,1); - GCDecrIntField(m_motherInfo,m_MINumActive,1); - //m_motherInfo->LastExitedChild=childName; - std::map<pid_t,int>::iterator itPid=m_myChildren.find(it->second); - if(itPid!=m_myChildren.end()){ - m_availableSlots.push_back(itPid->second); - } - m_myChildren.erase(itPid); - m_childPidMap.erase(it); - } - }else{ - ERS_LOG("Child "<<childName<<" with pid "<<it->second<<" don't exist!"); - } - }else{ - ERS_LOG("Child \""<<childName<<"\" don't exist!"); - } - startNanny(); - }else if(Command=="KILLALL"){ - stopNanny(); - terminateChildren(0); - collectChildExitStatus(); - }else{ - std::string arg=args.get_child("Configuration.ARG").data(); - std::cout<<ALPUtils::getTimeTag()<<"Got Command \""<<Command<<"\" with arguments \""<<arg<<"\""<<std::endl; - std::cout<<ALPUtils::getTimeTag()<<"Command transfer is not implemented yet"<<std::endl; - } - // BOOST_FOREACH(const boost::property_tree::ptree::value_type &v, - // args.get_child("Configuration")){ - - return true; -} - -bool ALP::doProcessLoop(const boost::property_tree::ptree& args,int childNo){ - errno=0; - int spidRet=setpgid(0,m_myPgid); - if(spidRet!=0){ - //char buff[200]; - //strerror_r(errno,buff,200); - std::string errNo; - if(errno==EACCES){ - errNo="EACCESS"; - }else if(errno==EINVAL){ - errNo="EINVAL"; - }else if(errno==EPERM){ - errNo="EPERM"; - }else if(errno==ESRCH){ - errNo="ESRCH"; - }else{ - errNo="Unexpected error"; - } - ERS_LOG("setpgid failed with "<<spidRet<<" "<<errNo); - ers::error(ALPIssues::UnexpectedIssue(ERS_HERE,"Can't set pgid! ZOMBIE INFESTATION RISK!")); - } - ERS_LOG("I am a forked child "<<childNo<<" with pid="<<m_myPid); - //ERS_INFO("Dumping something to ers::info from pid "<<m_myPid); - boost::property_tree::ptree conf; - conf.put("start_id",childNo); - conf.put("stride",m_numChildren); - conf.put("appName",m_myName);// used by the PSC - conf.put("clientName",m_myName); - conf.put("workerId",childNo);//used by PSC - conf.put("numberOfWorkers",m_numChildren);// used by PSC - if(m_infoService){ - try{ - m_infoService->prepareWorker(conf); - }catch(ers::Issue &ex){ - ERS_LOG("InfoService prepareWorker failed"); - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"InfoService failed to complete prepareWorker",ex)); - return false; - }catch(std::exception &ex){ - ERS_LOG("InfoService prepareWorker failed"); - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"InfoService failed to complete prepareWorker",ex)); - return false; - } - - } - ERS_DEBUG(1,"InfoService completed preparation."); - if(m_dataSource){ - //if(!m_dataSource->prepareForRun(args)){ - try{ - ERS_DEBUG(1,"Trying prepareForRun for datasource"); - m_dataSource->prepareForRun(args); - }catch(ers::Issue &ex){ - ERS_LOG("DataSource prepareForRun failed with"<<ex.what()); - std::string msg="DataSource failed to complete prepareForRun transition with message: "; - msg+=ex.what(); - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,msg.c_str(),ex)); - return false; - }catch(std::exception &ex){ - ERS_LOG("DataSource prepareForRun failed with"<<ex.what()); - std::string msg="DataSource failed to complete prepareForRun transition with message: "; - msg+=ex.what(); - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,msg.c_str())); - return false; - } - try{ - ERS_DEBUG(1,"Trying prepareWorker for datasource"); - m_dataSource->prepareWorker(conf); - }catch(ers::Issue &ex){ - ERS_LOG("DataSource prepareWorker failed with"<<ex.what()); - std::string msg="DataSource failed to complete prepareWorker transition with message: "; - msg+=ex.what(); - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,msg.c_str(),ex)); - return false; - }catch(std::exception &ex){ - ERS_LOG("DataSource prepareWorker failed with"<<ex.what()); - std::string msg="DataSource failed to complete prepareWorker transition with message: "; - msg+=ex.what(); - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,msg.c_str())); - return false; - } - ERS_DEBUG(1,"DataSource completed preparation"); - if(m_HLTSteering){ - ERS_DEBUG(1,"Trying prepareWorker for PSC"); - if(!m_HLTSteering->prepareWorker(conf)){ - ERS_LOG("HLT Steering prepareWorker failed. !"); - ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"HLT Steering failed to complete prepareWorker")); - return false; - } - std::vector<eformat::ROBFragment<const uint32_t*> > l1r; - hltinterface::HLTResult hltr; - hltinterface::EventId evId; - evId.globalId=0; - evId.lbNumber=0; - evId.l1Id=0; - uint32_t * fragmentBuff=new uint32_t[hltinterface::HLTResult::DEFAULT_MAX_RESULTSIZE]; //approximately 33MB i.e. 2^25 bytes - hltr.fragment_pointer=fragmentBuff; - hltr.max_result_size=hltinterface::HLTResult::DEFAULT_MAX_RESULTSIZE; - ERS_LOG("--ALP_Starting Processing Loop"); - std::cerr<<ALPUtils::getTimeTag()<<" Starting processing loop"<<std::endl; - m_childInfo->setIntField(m_CINumEvents,0); - m_childInfo->setIntField(m_CIAcceptedEvents,0); - m_childInfo->setIntField(m_CIRejectedEvents,0); - m_childInfo->setIntField(m_CIL1ResultFetchTimeouts,0); - m_childInfo->setIntField(m_CISoftTimeouts,0); - m_childInfo->setIntField(m_CILongestWaitForL1Result,0); - m_childInfo->setIntField(m_CILongestProcessingTime,0); - m_childInfo->setFloatField(m_CIAverageAcceptTime,0); - m_childInfo->setFloatField(m_CIAverageRejectTime,0); - m_childInfo->setFloatField(m_CIAverageProcessingTime,0); - m_childInfo->setFloatField(m_CIAverageL1ResultTime,0); - m_childInfo->setFloatField(m_CITimePercentInProcessing,0); - m_childInfo->setFloatField(m_CITimePercentInAccept,0); - m_childInfo->setFloatField(m_CITimePercentInReject,0); - m_childInfo->setFloatField(m_CITimePercentInWait,0); - m_childInfo->setFloatField(m_CITimePercentInSend,0); - - m_accDuration=std::chrono::milliseconds(0); - m_rejDuration=std::chrono::milliseconds(0); - m_waitDuration=std::chrono::milliseconds(0); - m_sendDuration=std::chrono::milliseconds(0); - m_procDuration=std::chrono::milliseconds(0); - m_totDuration=std::chrono::milliseconds(0); - - m_accDurationCum=std::chrono::milliseconds(0); - m_rejDurationCum=std::chrono::milliseconds(0); - m_waitDurationCum=std::chrono::milliseconds(0); - m_sendDurationCum=std::chrono::milliseconds(0); - m_procDurationCum=std::chrono::milliseconds(0); - m_totDurationCum=std::chrono::milliseconds(0); - - m_histos.push_back(new TH1F("L1RequestTiming","L1Result receive times",1000,0.,1000.)); - m_histos.push_back(new TH1F("AcceptedTiming","Event Accept Duration",1000,0.,4000.)); - m_histos.push_back(new TH1F("RejectedTiming","Event Reject Duration",1000,0.,4000.)); - m_histos.push_back(new TH1F("ProcessingTiming","Event Processing Duration",1000,0.,4000.)); - hltinterface::IInfoRegister::instance()->registerTObject(std::string("ALP"),std::string("L1RequestTime"),m_histos[0]); - hltinterface::IInfoRegister::instance()->registerTObject("ALP","AcceptDecisionTime",m_histos[1]); - hltinterface::IInfoRegister::instance()->registerTObject("ALP","RejectDecisionTime",m_histos[2]); - hltinterface::IInfoRegister::instance()->registerTObject("ALP","TotalProcessingTime",m_histos[3]); - m_publisherThread=new boost::thread(&ALP::statsPublisher,this); - ERS_LOG("Starting timeoutThread with "<<m_softTimeout/1000<<" seconds to timeout"); - m_timeoutThread.reset(new std::thread(std::bind(&ALP::runTimer,this))); - ERS_LOG("--ALP_Processing Start. "); - bool cleanExit=true; - std::chrono::time_point<std::chrono::steady_clock> tStart; - while(m_processEvents){ - uint32_t l1id=0; - try{ - m_timeoutCond.notify_all(); - { - std::lock_guard<std::mutex> lock (m_statMutex); - tStart=std::chrono::steady_clock::now(); - } - m_dataSource->getL1Result(l1r,l1id,evId.globalId,evId.lbNumber); - std::chrono::time_point<std::chrono::steady_clock> tL1=std::chrono::steady_clock::now(); - { - std::lock_guard<std::mutex> lock(m_timeoutMutex); - m_softTOTrigger=true; - m_hardTOTrigger=false; - m_TOTimerStart=tL1; - m_timeoutCond.notify_all(); - } - evId.l1Id=l1id; - auto dtime=std::chrono::duration_cast<std::chrono::milliseconds>(tL1-tStart); - { - std::lock_guard<std::mutex> lock(m_statMutex); - m_waitDuration+=dtime; - m_waitDurationCum+=dtime; - } - uint deltaT=dtime.count(); - m_histos[0]->Fill(deltaT); - HLTPU::ScopedISHelper IInfoHelper(m_lbNum,m_evtNum); - tL1=std::chrono::steady_clock::now(); - if(!m_HLTSteering->process(l1r,hltr,evId)){ - ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE, - "Steering failed in process() method. Exiting!")); - return false; - } - { - std::lock_guard<std::mutex> lock(m_timeoutMutex); - m_softTOTrigger=false; - m_hardTOTrigger=false; - if(m_childInfo->getIntField(m_CILongestWaitForL1Result)<deltaT){ - m_childInfo->setIntField(m_CILongestWaitForL1Result,deltaT); - } - } - std::chrono::time_point<std::chrono::steady_clock> tProc=std::chrono::steady_clock::now(); - dtime=std::chrono::duration_cast<std::chrono::milliseconds>(tProc-tL1); - deltaT=dtime.count(); - bool accept=((hltr.stream_tag.size()>0)?true:false); - tL1=std::chrono::steady_clock::now(); - m_dataSource->sendResult(accept,l1id,hltr); - tProc=std::chrono::steady_clock::now(); - { - std::lock_guard<std::mutex> lock(m_statMutex); - m_procDuration+=dtime; - m_procDurationCum+=dtime; - m_eventsInInterval++; - } - if(m_childInfo->getIntField(m_CILongestProcessingTime)<deltaT){ - m_childInfo->setIntField(m_CILongestProcessingTime,deltaT); - } - if(accept){ - // m_childInfo->AverageAcceptTime+=deltaT; - GCIncrIntField(m_childInfo,m_CIAcceptedEvents,1); - m_histos[1]->Fill(deltaT); - { - std::lock_guard<std::mutex> lock(m_statMutex); - m_accDuration+=dtime; - m_accDurationCum+=dtime; - m_acceptedInInterval++; - } - }else{ - //m_childInfo->AverageRejectTime+=deltaT; - GCIncrIntField(m_childInfo,m_CIRejectedEvents,1); - m_histos[2]->Fill(deltaT); - { - std::lock_guard<std::mutex> lock(m_statMutex); - m_rejDuration+=dtime; - m_rejDurationCum+=dtime; - m_rejectedInInterval++; - } - } - m_histos[3]->Fill(deltaT); - GCIncrIntField(m_childInfo,m_CINumEvents,1); - dtime=std::chrono::duration_cast<std::chrono::milliseconds>(tProc-tL1); - { - std::lock_guard<std::mutex> lock(m_statMutex); - m_sendDuration+=dtime; - m_sendDurationCum+=dtime; - } - //std::cerr<<"Result send "<<evtCount<<std::endl; - }catch(ALPNS::DSErrors::NoMoreEvents &ex){ - ERS_LOG("ALP Caught NoMoreEvents exception: "<<ex.what()); - m_processEvents=false; - break; - }catch(ALPNS::DSErrors::EventNotReady &ex){ - continue; - }catch(ALPNS::UnexpectedException &ex){ - ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"Unexpected Exception happened",ex)); - m_processEvents=false; - break; - }catch(ers::Issue &ex){ - ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"Got an uncaught ERS issue",ex)); - m_processEvents=false; - break; - }catch(std::exception &ex){ - ERS_LOG("ALP Caught an exception in processing loop: "<<ex.what()); - m_processEvents=false; - std::string errMsg=std::string("Caught an unexpected exception in processing loop \"")+ex.what()+"\" Exiting!"; - ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str())); - break; - }catch(...){ - ERS_LOG("ALP Caught an unexpected non-std exception: ALP Doesn't know this exception. Exiting! "); - std::cerr<<"ALP Caught an unexpected non-std exception: ALP Doesn't know this exception. Check Log files Exiting!"<<std::endl; - m_processEvents=false; - ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"Caught a non-std exception in processing loop! Check Log files! Exiting!")); - break; - } - l1r.clear(); - hltr.trigger_info.clear(); - hltr.stream_tag.clear(); - hltr.psc_errors.clear(); - hltr.hltResult_robs.clear(); - { - std::lock_guard<std::mutex> lock(m_statMutex); - auto tdiff=std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now()-tStart); - m_totDuration+=tdiff; - m_totDurationCum+=tdiff; - } - if(m_interEventSleep_ms>0){ - int sleepDuration=m_interEventSleep_ms; - if(m_interEventSpread_ms>0){ - std::random_device rgen; - std::mt19937 rEngine(rgen());//seed with a real number possibly from /dev/urandom - std::uniform_int_distribution<int> uniform_dist(0,((m_interEventSpread_ms>0)?m_interEventSpread_ms:1000)); - sleepDuration+=uniform_dist(rEngine); - } - std::this_thread::sleep_for(std::chrono::milliseconds(sleepDuration));// sleep for given milliseconds to reduce trigger rate - } - }//end while - // do finalization. - ERS_LOG("--ALP_Processing Ended. "); - { - std::lock_guard<std::mutex> lock(m_timeoutMutex); - m_timerWork=false; - m_softTOTrigger=false; - m_hardTOTrigger=false; - } - m_timeoutCond.notify_all(); - m_timeoutThread->join(); - delete[] fragmentBuff; - ERS_LOG("Processing loop finished. Finalizing"); - if(m_termStagger>0){ - waitForFreeMem(std::min((int)(m_FinalizeTimeout*0.7),m_termStagger)); - } - if(!m_skipFinalize){ - if(!m_HLTSteering->stopRun(conf)){ - ERS_LOG("HLT stopRun failed."); - }else{ - ERS_LOG("--ALP_stopRun Finished "); - if(!m_skipFinalizeWorker){ - if(!m_HLTSteering->finalizeWorker(conf)){ - ERS_LOG("HLT Finalize worker failed."); - } - ERS_LOG("--ALP_finalizeWorker Finished "); - }else{ - ERS_LOG("--ALP_finalizeWorker Skipped! "); - } - } - ERS_LOG("--ALP Steering finalization completed"); - delete m_HLTSteering; - ERS_LOG("--ALP Steering deletion completed"); - }else{ - ERS_LOG("--ALP_stopRun SKIPPED! "); - } - m_dataSource->finalizeWorker(conf); - m_dataSource->finalize(conf); - delete m_dataSource; - ERS_LOG("DataFlow finalization completed."); - ERS_LOG("Waiting for last publication.");//need to fix this - m_publisherThread->interrupt(); - m_publisherThread->join(); - delete m_publisherThread; - m_publisherThread=0; - ERS_LOG("Publisher thread joined. Shutting down InfoService.");//need to fix this - m_infoService->finalizeWorker(conf); - m_infoService->finalize(conf); - delete m_infoService; - m_infoService=0; - //_exit(0); - //delete m_childInfo; - //m_childInfo=0; - // for(uint i=0;i<m_histos.size();i++){ - // delete m_histos.at(i); - // } - m_histos.clear(); - ERS_LOG("Returning from cildren."); - if(m_threadsExist){ - std::cerr<<ALPUtils::getTimeTag()<<" Threads existed during forking. calling std::_Exit()"<<std::endl; - std::_Exit(EXIT_FAILURE); - } - if(m_exitImmediately){ - std::cerr<<ALPUtils::getTimeTag()<<" Direct exit requested. Calling std::_Exit()"<<std::endl; - std::cerr.flush(); - std::_Exit(120); - } - return cleanExit; - }else{ - ERS_LOG("No HLT Steering defined! Returning false"); - ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"No HLT Steering defined yet prepareForRun is called!")); - return false; - } - } - return true; -} - -bool ALP::prepareWorker(const boost::property_tree::ptree& /*args*/) { - ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"prepareWorker method called!")); - return false; -} - -bool ALP::finalizeWorker(const boost::property_tree::ptree& /*args*/) { - ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"finalizeWorker method called!")); - return true; -} - -pid_t ALP::forkChildren(int pos){ - if(m_dumpFD)printOpenFDs("mother pre-fork->"); - if(m_dumpThreads)printTasks("mother pre-fork Tasks(threads)->"); - m_threadsExist=(countThreads()>1); - pid_t t=fork(); - if(t!=0){// parent process - std::cerr<<ALPUtils::getTimeTag()<<"Forked a child with pid "<<t<<std::endl; - std::cout<<ALPUtils::getTimeTag()<<"AfterFork"<<std::endl; - //m_motherInfo->NumForks++; - GCIncrIntField(m_motherInfo,m_MINumKills,1); - if(m_dumpFD)printOpenFDs("mother post-fork->"); - if(m_dumpThreads)printTasks("mother post-fork Tasks(threads)->"); - const int bufflen=8192; - char buff[bufflen]; - char * TDAQAPPNAME=getenv("TDAQ_APPLICATION_NAME"); - snprintf(buff,bufflen,"%s-%02d",TDAQAPPNAME,pos); - std::cout<<ALPUtils::getTimeTag()<<"Adding \""<<buff<<"\" with pid= "<<t<<std::endl; - m_childPidMap[buff]=t; - fflush(stdout); - fflush(stderr); - return t; - }else{// child process detached from parent. - if(m_dumpFD)printOpenFDs("child pre-redirection->"); - if(m_dumpThreads)printTasks("child pre-redirection Tasks(threads)->"); - //char *dummv=0; - //int dummc=0; - std::cerr<<ALPUtils::getTimeTag()<<"Fork done"<<std::endl; - std::cout<<ALPUtils::getTimeTag()<<"Fork done"<<std::endl; - m_myPid=getpid(); - char * TDAQAPPNAME=getenv("TDAQ_APPLICATION_NAME"); - std::string logsPath=m_childLogPath; - //if(logEnv)logsPath=logEnv; - auto tnow=std::chrono::system_clock::now(); - long tepoch=std::chrono::duration_cast<std::chrono::seconds>(tnow.time_since_epoch()).count(); - const int bufflen=8192; - char buff[bufflen]; - if(logsPath.empty()){ - logsPath="/tmp"; - } - snprintf(buff,bufflen,"%s:%02d", - TDAQAPPNAME,pos); - setenv("TDAQ_APPLICATION_NAME",buff,1); - snprintf(buff,bufflen,"%s/%s:%02d-%d-%ld.out", - logsPath.c_str(),TDAQAPPNAME,pos,m_myPid,tepoch); - std::cerr<<ALPUtils::getTimeTag()<<"I am the child # "<<pos<<" with pid "<<m_myPid<<". Redirecting stdout to "<<buff<<std::endl; - fflush(stdout); - freopen(buff,"a",stdout); - snprintf(buff,bufflen,"%s/%s:%02d-%d-%ld.err", - logsPath.c_str(),TDAQAPPNAME,pos,m_myPid,tepoch); - std::cerr<<ALPUtils::getTimeTag()<<"I am the child # "<<pos<<" with pid "<<m_myPid<<". Redirecting stderr to "<<buff<<std::endl; - - fflush(stderr); - freopen(buff,"a",stderr); - //sleep(30); - - if(m_dumpFD)printOpenFDs("child post-redirection->"); - if(m_dumpThreads)printTasks("child post-redirection Tasks(threads)->"); - // try{ - // IPCCore::init(dummc,&dummv); - // std::cerr<<ALPUtils::getTimeTag()<<"****************************** IPC INIT SUCCEEDED ******************************"<<std::endl; - // std::cerr.flush(); - // //sleep(60); - // }catch(std::exception &ex){ - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - // std::cerr<<ALPUtils::getTimeTag()<<"IPC Reinitialization failed for pid="<<getpid()<<" with "<<ex.what()<<std::endl; - // std::cerr<<"****************************** ERROR ******************************"<<std::endl; - // std::cerr.flush(); - // } - boost::property_tree::ptree args; - m_ipcc->initializeIPC(args); - - std::cerr<<ALPUtils::getTimeTag()<<"IPC reinitialization done "<<m_myPid<<std::endl; - //printOpenFDs(); - prctl( PR_SET_PDEATHSIG, SIGTERM ); - ::signal(SIGCHLD,SIG_DFL); - ::signal(SIGKILL,SIG_DFL); - ::signal(SIGTERM,SIG_DFL); - - //ERS_LOG("I am the children with, pid="<<m_myPid<<". Redirecting output to logfiles "); - //ERS_INFO("I am the children with, pid="<<m_myPid<<". Redirecting output to logfiles "); - //char * logEnv=getenv("TDAQ_LOGS_PATH"); - ERS_LOG("I am the child # "<<pos<<" with, pid="<<m_myPid<<". Redirection is completed"); - //ERS_INFO("I am the children with, pid="<<m_myPid<<". Redirection is completed"); - snprintf(buff,bufflen,"%s-%02d",TDAQAPPNAME,pos); - m_myName=buff; - } - return t; -} - -void ALP::doNannyWork(){ - int count=0; - pid_t baby=0; - while(m_nannyWork && baby!=-1){ - errno=0; - int retVal=0; - baby=waitpid(0,&retVal,WNOHANG); - //ERS_LOG("DOING NANNY WORK! baby= "<<baby); - if(baby==0){// if all children working sleep 1 seconds - try{ - boost::this_thread::sleep(boost::posix_time::seconds(1)); - }catch(boost::thread_interrupted &ex){ - //don't need to sleep anymore - if(!m_nannyWork) return; - } - }else if(baby==-1){//if no child remains - //m_motherInfo->NumActive=0; - m_motherInfo->setIntField(m_MINumActive,0); - if(errno==ECHILD){ - ERS_LOG("All children are exited. Returning"); - return; - } - count++; - //char buff[200]; - //strerror_r(errno,buff,200); - ERS_LOG("waitpid returned "<<::strerror(errno)); - //ERS_INFO("waitpid returned "<<buff); - if(count>10)return; //killswitch - - }else{// something happened to children - if(WIFEXITED(retVal)){ - //should we ask exit status to be 0 in order to catch failures? - int exitStat=WEXITSTATUS(retVal); - ERS_LOG("Child with PID="<<baby<<" exited normally with status="<<exitStat); - // m_motherInfo->NumActive--; - // m_motherInfo->NumExited++; - GCIncrIntField(m_motherInfo,m_MINumExited,1); - GCDecrIntField(m_motherInfo,m_MINumActive,1); - if(exitStat!=0){ - char errbuff[200]; - snprintf(errbuff,200,"Child pid= %d exited with unexpected return value %d ",baby,exitStat); - ers::warning(ALPIssues::ChildIssue(ERS_HERE, errbuff)); - //m_motherInfo->UnexpectedChildExits++; - GCIncrIntField(m_motherInfo,m_MIUnexpectedChildExits,1); - } - std::map<pid_t,int>::iterator it=m_myChildren.find(baby); - if(it!=m_myChildren.end()){ - m_availableSlots.push_back(it->second); - // const int bufflen=8192; - // char buff[bufflen]; - // char * TDAQAPPNAME=getenv("TDAQ_APPLICATION_NAME"); - // snprintf(buff,bufflen,"%s-%02d",TDAQAPPNAME,it->second); - // m_motherInfo->LastExitedChild=buff; - m_myChildren.erase(it);// remove it from the map - } - } - if(WIFSIGNALED(retVal)){ - int exitStat=WTERMSIG(retVal); - ERS_LOG("Child with PID="<<baby<<" exited with a signal="<<WTERMSIG(retVal)); - // m_motherInfo->NumActive--; - // m_motherInfo->NumExited++; - GCIncrIntField(m_motherInfo,m_MINumExited,1); - GCDecrIntField(m_motherInfo,m_MINumActive,1); - - if(exitStat!=0){ - char errbuff[200]; - snprintf(errbuff,200,"Child pid= %d exited with signal %d ",baby,exitStat); - // m_motherInfo->UnexpectedChildExits++; - GCIncrIntField(m_motherInfo,m_MIUnexpectedChildExits,1); - ers::warning(ALPIssues::ChildIssue(ERS_HERE, errbuff)); - } - // std::map<pid_t,int>::iterator it=m_myChildren.find(baby); - // if(it!=m_myChildren.end()){ - // char buff[200]; - // snprintf(buff,200,"%s-%02d",m_myName.c_str(),it->second); - // m_diedChildren[std::string(buff)]=it->second; - // m_availableSlots.push_back(it->second); - // m_myChildren.erase(it);// remove it from the map - // } - //TAKE ACTION - //Is it safe to fork here? - } - if(WIFSTOPPED(retVal)){ - ERS_LOG("Child with PID="<<baby<<" stopped by a signal="<<WSTOPSIG(retVal)); - char errbuff[200]; - snprintf(errbuff,200,"Child pid= %d stopped",baby); - ers::warning(ALPIssues::ChildIssue(ERS_HERE, errbuff)); - // std::map<pid_t,int>::iterator it=m_myChildren.find(baby); - // if(it!=m_myChildren.end())m_myChildren.erase(it);// remove it from the map - //TAKE ACTION - //Is it safe to fork here? - } - } - } -} - -void ALP::collectChildExitStatus(){ - int count=0; - pid_t baby=0; - while(baby!=-1){ - errno=0; - int retVal=0; - baby=waitpid(0,&retVal,WNOHANG); - if(baby==0){// if all children working sleep 1 seconds - try{ - boost::this_thread::sleep(boost::posix_time::milliseconds(500)); - }catch(boost::thread_interrupted &ex){ - } - }else if(baby==-1){//if no child remains - if(errno==ECHILD){ - ERS_LOG("All children are exited. Returning"); - return; - } - count++; - if(count>10){ - ERS_LOG("Returning because of killswitch"); - return; //killswitch - } - }else{// something happened to children - if(WIFEXITED(retVal)){ - //should we ask exit status to be 0 in order to catch failures? - int exitStat=WEXITSTATUS(retVal); - if(exitStat && !m_terminationStarted){ - char errbuff[200]; - snprintf(errbuff,200,"Child pid= %d exited with unexpected return value %d ",baby,exitStat); - ers::warning(ALPIssues::ChildIssue(ERS_HERE,errbuff )); - } - ERS_LOG("Child with PID="<<baby<<" exited with status="<<exitStat); - std::map<pid_t,int>::iterator it=m_myChildren.find(baby); - if(it!=m_myChildren.end()){ - m_availableSlots.push_back(it->second); - m_myChildren.erase(it);// remove it from the map - } - } - if(WIFSIGNALED(retVal)){ - int exitStat=WTERMSIG(retVal); - if(exitStat && !m_terminationStarted){ - char errbuff[200]; - snprintf(errbuff,200,"Child pid= %d exited with unexpected return value %d ",baby,exitStat); - ers::warning(ALPIssues::ChildIssue(ERS_HERE,errbuff )); - } - ERS_LOG("Child with PID="<<baby<<" exited with a signal="<<WTERMSIG(retVal)); - // std::map<pid_t,int>::iterator it=m_myChildren.find(baby); - // if(it!=m_myChildren.end()){ - // m_availableSlots.push_back(it->second); - // m_myChildren.erase(it);// remove it from the map - // } - //TAKE ACTION - //Is it safe to fork here? - } - if(WIFSTOPPED(retVal)){ - ERS_LOG("Child with PID="<<baby<<" stopped by a signal="<<WSTOPSIG(retVal)); - //TAKE ACTION - //Is it safe to fork here? - } - } - } -} - -void ALP::printPtree(const boost::property_tree::ptree& args, std::string level){ - boost::property_tree::ptree::const_iterator it,itend=args.end(); - level+=" "; - for(it=args.begin();it!=itend;++it){ - std::string val(it->second.get_value<std::string>()); - boost::algorithm::trim(val); - std::cout<<level<<it->first<<" : "<<val<<std::endl; - printPtree(it->second,level); - } -} - -void ALP::startNanny(){ - if(m_nannyThread)return; - m_nannyWork=true; - ERS_LOG("STARTING NANNY THREAD -- Mother process"); - m_nannyThread=new boost::thread(&ALP::doNannyWork,this); -} - -void ALP::stopNanny(){ - m_nannyWork=false; - if(!m_nannyThread)return; - ERS_LOG("STOPPING NANNY THREAD -- Mother process"); - m_nannyThread->interrupt(); - //::sleep(1.5); - m_nannyThread->join(); - delete m_nannyThread; - m_nannyThread=0; -} - -void ALP::statsPublisher(){ - // char * tmp = getenv("TDAQ_PARTITION"); - // IPCPartition *m_part=0; - // ERS_LOG("Starting IS Publishing"); - // if(tmp){ - // ERS_LOG("Using partition "<<tmp<<" server "<<m_ISSName<<" with object name "<<m_myName<<".PU_ChildInfo"); - // try{ - // m_part=new IPCPartition(tmp); - // }catch(std::exception &ex){ - // ERS_LOG("Can't create partition object "<<ex.what()); - // } - // } - // if(m_part){ - // ISInfoDictionary id(*m_part); - // std::string objName=m_ISSName+"."+m_myName+".PU_ChildInfo"; - // boost::chrono::steady_clock::time_point now=boost::chrono::steady_clock::now(); - // boost::chrono::seconds timeFromEpoch= - // boost::chrono::duration_cast<boost::chrono::seconds>(now.time_since_epoch()); - // auto toNext=m_publishInterval-(timeFromEpoch.count()%m_publishInterval); - // auto sleepDuration=boost::chrono::seconds(m_publishInterval); - // auto pubTime=now+boost::chrono::seconds(toNext); - // try{ - // boost::this_thread::sleep_until(pubTime); - // }catch(boost::thread_interrupted &ex){ - - // } - // try{ - // { - // std::lock_guard<std::mutex>(m_statMutex); - // if(m_eventsInInterval){ - // double ievts=1.0/m_eventsInInterval; - // m_childInfo->setFloatField(m_CIAverageL1ResultTime,m_waitDuration.count()*ievts); - // m_childInfo->setFloatField(m_CIAverageProcessingTime,m_procDuration.count()*ievts); - // } - // if(m_acceptedInInterval){ - // m_childInfo->setFloatField(m_CIAverageAcceptTime,m_accDuration.count()/m_acceptedInInterval); - // } - // if(m_rejectedInInterval){ - // m_childInfo->setFloatField(m_CIAverageRejectTime,m_rejDuration.count()/m_rejectedInInterval); - // } - // if(m_totDuration.count()){ - // double invDur=1./m_totDuration.count(); - // m_childInfo->setFloatField(m_CITimePercentInProcessing,m_procDuration.count()*invDur); - // m_childInfo->setFloatField(m_CITimePercentInAccept,m_accDuration.count()*invDur); - // m_childInfo->setFloatField(m_CITimePercentInReject,m_rejDuration.count()*invDur); - // m_childInfo->setFloatField(m_CITimePercentInWait,m_waitDuration.count()*invDur); - // m_childInfo->setFloatField(m_CITimePercentInSend,m_sendDuration.count()*invDur); - // } - // m_accDuration=std::chrono::milliseconds(0); - // m_rejDuration=std::chrono::milliseconds(0); - // m_waitDuration=std::chrono::milliseconds(0); - // m_sendDuration=std::chrono::milliseconds(0); - // m_procDuration=std::chrono::milliseconds(0); - // m_totDuration=std::chrono::milliseconds(0); - // m_eventsInInterval=0; - // m_acceptedInInterval=0; - // m_rejectedInInterval=0; - // m_childInfo->setIntField(m_CILongestProcessingTime,0); - // } - // //id.checkin(objName,*m_childInfo); - // }catch(daq::is::Exception &ex){ - // ERS_LOG("Caught exception "<<ex.what()<<" in first check-in"); - // } - // pubTime+=sleepDuration; - // while(m_processEvents){ - // try{ - // boost::this_thread::sleep_until(pubTime); - // pubTime+=sleepDuration; - // }catch(boost::thread_interrupted &ex){ - // ERS_LOG("Publisher thread sleep is interrupted"); - // auto nextPoint= - // boost::chrono::duration_cast<boost::chrono::milliseconds>(boost::chrono::steady_clock::now().time_since_epoch()); - // auto toNext=m_publishInterval*1000-(nextPoint.count()%(m_publishInterval*1000)); - // pubTime+=boost::chrono::milliseconds(toNext); - // } - // try{ - // { - // std::lock_guard<std::mutex>(m_statMutex); - // if(m_eventsInInterval){ - // double ievts=1.0/m_eventsInInterval; - // m_childInfo->setFloatField(m_CIAverageL1ResultTime,m_waitDuration.count()*ievts); - // m_childInfo->setFloatField(m_CIAverageProcessingTime,m_procDuration.count()*ievts); - // } - // if(m_acceptedInInterval){ - // m_childInfo->setFloatField(m_CIAverageAcceptTime,m_accDuration.count()/m_acceptedInInterval); - // } - // if(m_rejectedInInterval){ - // m_childInfo->setFloatField(m_CIAverageRejectTime,m_rejDuration.count()/m_rejectedInInterval); - // } - // if(m_totDuration.count()){ - // double invDur=1./(double)m_totDuration.count(); - // m_childInfo->setFloatField(m_CITimePercentInProcessing,m_procDuration.count()*invDur); - // m_childInfo->setFloatField(m_CITimePercentInAccept,m_accDuration.count()*invDur); - // m_childInfo->setFloatField(m_CITimePercentInReject,m_rejDuration.count()*invDur); - // m_childInfo->setFloatField(m_CITimePercentInWait,m_waitDuration.count()*invDur); - // m_childInfo->setFloatField(m_CITimePercentInSend,m_sendDuration.count()*invDur); - // } - // m_accDuration=std::chrono::milliseconds(0); - // m_rejDuration=std::chrono::milliseconds(0); - // m_waitDuration=std::chrono::milliseconds(0); - // m_sendDuration=std::chrono::milliseconds(0); - // m_procDuration=std::chrono::milliseconds(0); - // m_totDuration=std::chrono::milliseconds(0); - // m_eventsInInterval=0; - // m_acceptedInInterval=0; - // m_rejectedInInterval=0; - // m_childInfo->setIntField(m_CILongestProcessingTime,0); - // } - // //id.checkin(objName,*m_childInfo); - // }catch(daq::is::Exception &ex){ - // ERS_LOG("Caught exception "<<ex.what()<<" while stats publication"); - // } - // } - // }else{ - // ERS_LOG("Can't get partition object"); - // } - // delete m_part; -} - -void ALP::printOpenFDs(const std::string &header=""){ - DIR *dir; - struct dirent *ent; - pid_t mypid=getpid(); - if ((dir = opendir ("/proc/self/fd/")) != NULL) { - /* print all the files and directories within directory */ - std::cout<<ALPUtils::getTimeTag()<<header<<" "<<"List of open FDs (one will be due to this call) pid="<<getpid()<<std::endl; - while ((ent = readdir (dir)) != NULL) { - std::string name(ent->d_name); - if(name=="."||name=="..") continue; - std::string typ; - if(ent->d_type==DT_BLK){ - typ="BLOCK"; - }else if(ent->d_type==DT_CHR){ - typ="CHARACTER"; - }else if(ent->d_type==DT_DIR){ - typ="DIR"; - }else if(ent->d_type==DT_FIFO){ - typ="FIFO"; - }else if(ent->d_type==DT_LNK){ - typ="LINK"; - char buf[2001]; - std::string path="/proc/self/fd/"+name; - int len=readlink(path.c_str(),buf,2000); - if(len>0){ - buf[len]='\0'; - typ+=" -> "+std::string(buf); - } - }else if(ent->d_type==DT_REG){ - typ="FILE"; - }else if(ent->d_type==DT_SOCK){ - typ="SOCKET"; - }else if(ent->d_type==DT_UNKNOWN){ - typ="UNKNOWN"; - } - std::cout<<header<<" "<<mypid<<" "<<name<<" type="<<typ<<std::endl; - } - closedir (dir); - } else { - /* could not open directory */ - perror (""); - std::cerr<<"Can't open /proc/self/fd"<<std::endl; - //return EXIT_FAILURE; - } -} - -void ALP::printTasks(const std::string &header=""){ - DIR *dir; - struct dirent *ent; - pid_t mypid=getpid(); - if ((dir = opendir ("/proc/self/task/")) != NULL) { - /* print all the files and directories within directory */ - std::cout<<ALPUtils::getTimeTag()<<header<<" "<<"List of open FDs (one will be due to this call) pid="<<getpid()<<std::endl; - while ((ent = readdir (dir)) != NULL) { - std::string name(ent->d_name); - if(name=="."||name=="..") continue; - std::string typ; - if(ent->d_type==DT_BLK){ - typ="BLOCK"; - }else if(ent->d_type==DT_CHR){ - typ="CHARACTER"; - }else if(ent->d_type==DT_DIR){ - typ="DIR"; - }else if(ent->d_type==DT_FIFO){ - typ="FIFO"; - }else if(ent->d_type==DT_LNK){ - typ="LINK"; - char buf[2001]; - std::string path="/proc/self/task/"+name; - int len=readlink(path.c_str(),buf,2000); - if(len>0){ - buf[len]='\0'; - typ+=" -> "+std::string(buf); - } - }else if(ent->d_type==DT_REG){ - typ="FILE"; - }else if(ent->d_type==DT_SOCK){ - typ="SOCKET"; - }else if(ent->d_type==DT_UNKNOWN){ - typ="UNKNOWN"; - } - std::cout<<header<<" "<<mypid<<" "<<" threadPID= "<<name<<" type="<<typ<<std::endl; - } - closedir (dir); - } else { - /* could not open directory */ - perror (""); - std::cerr<<"Can't open /proc/self/task"<<std::endl; - //return EXIT_FAILURE; - } -} - - int ALP::countThreads(){ - DIR *dir; - struct dirent *ent; - int nThreads=0; - pid_t mypid=getpid(); - if ((dir = opendir ("/proc/self/task/")) != NULL) { - while ((ent = readdir (dir)) != NULL) { - std::string name(ent->d_name); - if(name=="."||name=="..") continue; - std::string typ; - if(ent->d_type==DT_BLK){ - typ="BLOCK"; - }else if(ent->d_type==DT_CHR){ - typ="CHARACTER"; - }else if(ent->d_type==DT_DIR){ - typ="DIR"; - }else if(ent->d_type==DT_FIFO){ - typ="FIFO"; - }else if(ent->d_type==DT_LNK){ - typ="LINK"; - char buf[2001]; - std::string path="/proc/self/task/"+name; - int len=readlink(path.c_str(),buf,2000); - if(len>0){ - buf[len]='\0'; - typ+=" -> "+std::string(buf); - } - }else if(ent->d_type==DT_REG){ - typ="FILE"; - }else if(ent->d_type==DT_SOCK){ - typ="SOCKET"; - }else if(ent->d_type==DT_UNKNOWN){ - typ="UNKNOWN"; - } - int currPid=0; - try{ - currPid=std::stoi(name); - }catch(std::exception &ex){ - - } - if(mypid!=currPid){ - nThreads++; - } - } - closedir (dir); - return nThreads; - } else { - /* could not open directory */ - perror (""); - std::cerr<<"Can't open /proc/self/task"<<std::endl; - return -1; - } - return nThreads; - } - -// void ALP::publishMotherInfo(std::shared_ptr<ISInfoDictionary> dict,const std::string& name){ -// try{ -// //dict->checkin(name,*m_motherInfo); -// m_lastPublish=boost::chrono::steady_clock::now(); -// }catch(daq::is::Exception &ex){ -// ERS_LOG("Caught exception "<<ex.what()<<" while Object deletion and creation"); -// } -// } - -void ALP::startMotherPublisher(){ - - if(m_motherPublisher)return; - m_publisherWork=true; - ERS_LOG("Starting MotherInfo publisher thread"); - m_motherPublisher=new boost::thread(&ALP::doMotherPublication,this); -} - -void ALP::stopMotherPublisher(){ - m_publisherWork=false; - if(!m_motherPublisher)return; - ERS_LOG("Stopping MotherInfo publisher thread"); - m_motherPublisher->interrupt(); - //::sleep(1.5); - m_motherPublisher->join(); - delete m_motherPublisher; - m_motherPublisher=0; - std::this_thread::sleep_for(std::chrono::milliseconds(500));// wait for potential ipc operations -} - -void ALP::doMotherPublication(){ - // char * tmp = getenv("TDAQ_PARTITION"); - // std::shared_ptr<IPCPartition> part; - // std::shared_ptr<ISInfoDictionary> id; - // std::string objName=m_ISSName+"."+m_myName+".PU_MotherInfo"; - // ERS_LOG("Starting Mother IS Publishing"); - - // if(tmp){ - // ERS_LOG("Using partition "<<tmp<<" server "<<m_ISSName<<" with object name "<<m_myName<<".PU_MotherInfo"); - // try{ - // part=std::make_shared<IPCPartition>(tmp); - // }catch(std::exception &ex){ - // ERS_LOG("Can't create partition object "<<ex.what()); - // } - // } - // if(part){ - // id=std::make_shared<ISInfoDictionary>(*part); - // } - - // boost::chrono::steady_clock::time_point now=boost::chrono::steady_clock::now(); - // boost::chrono::seconds timeFromEpoch=boost::chrono::duration_cast<boost::chrono::seconds>(now.time_since_epoch()); - // boost::chrono::seconds timeFromLast=timeFromEpoch-boost::chrono::duration_cast<boost::chrono::seconds>(m_lastPublish.time_since_epoch()); - - // auto toNext=m_publishInterval-(timeFromEpoch.count()%m_publishInterval); - // if((timeFromLast.count()>m_publishInterval)&&(toNext>m_publishInterval*0.5)){// we missed some publications - // publishMotherInfo(id,objName); - // } - // int64_t numPublishes=timeFromEpoch.count()/m_publishInterval+1; - // boost::chrono::steady_clock::time_point nextPublish(boost::chrono::seconds(numPublishes*m_publishInterval)); - // while(m_publisherWork){ - // try{ - // boost::this_thread::sleep_until(nextPublish); - // }catch(boost::thread_interrupted &ex){ - // //don't need to sleep anymore - // if(!m_publisherWork) return; - // } - // publishMotherInfo(id,objName); - // nextPublish+=boost::chrono::seconds(m_publishInterval); - // } - -} - -void ALP::softTimeout(){ - ERS_LOG("Called softTimeout Evt= "<<m_evtNum<<", LB= "<<m_lbNum); - boost::property_tree::ptree a; - a.put("StartTime_s",std::chrono::duration_cast<std::chrono::seconds>(m_TOTimerStart.time_since_epoch()).count()); - m_HLTSteering->timeOutReached(a); - m_softTOTrigger=false; - m_hardTOTrigger=false; - GCIncrIntField(m_childInfo,m_CISoftTimeouts,1); -} - -void ALP::hardTimeout(){ - ERS_LOG("Called hardTimeout This shouldn't have happened Evt="<<m_evtNum<<", LB="<<m_lbNum); - // std::exit(3); - m_hardTOTrigger=false; -} - -void ALP::runTimer(){ - auto softDuration=std::chrono::milliseconds(m_softTimeout); - auto hardDuration=std::chrono::milliseconds(m_hardTimeout); - std::unique_lock<std::mutex> lock(m_timeoutMutex); - while(m_timerWork){ - m_timeoutCond.wait_for(lock,std::chrono::seconds(1)); - auto now=std::chrono::steady_clock::now(); - if(m_softTOTrigger && (now>m_TOTimerStart+softDuration)){ - softTimeout(); - } - if(m_hardTOTrigger && (now>m_TOTimerStart+hardDuration)){ - hardTimeout(); - } - } -} - -void ALP::waitForFreeMem(int maxSleep){ - if(m_myPos==0)return; - if(maxSleep<=0)return; - auto twait=std::chrono::steady_clock::now()+std::chrono::seconds(maxSleep); - char buff[1000]; - std::ifstream selfMem("/proc/self/statm/"); - std::string line; - std::getline(selfMem,line); - long pageSize=sysconf(_SC_PAGESIZE); - if(pageSize<1){ - ERS_LOG("Couldn't get page size. Errno was ="<<errno<< ". Assuming Pagesize= 4096. "); - errno=0; - pageSize=4096; - } - unsigned int vmTot,vmRss,vmShare,vmText,vmLib,vmData,vmDirty; - - sscanf(line.c_str(),"%u %u %u %u %u %u %u",&vmTot,&vmRss,&vmShare,&vmText,&vmLib,&vmData,&vmDirty); - selfMem.close(); - vmTot*=pageSize; - vmRss*=pageSize; - std::set<int> activeSiblings; - - while(std::chrono::steady_clock::now()<twait){ - try{ - std::ifstream meminfo("/proc/meminfo"); - std::getline(meminfo,line);//MemTotal - unsigned int memTotal=0,memFree=0,memAvail=0; - sscanf(line.c_str(),"%s: %u kB",buff,&memTotal); - std::getline(meminfo,line);//MemTotal - sscanf(line.c_str(),"%s: %u kB",buff,&memFree); - std::getline(meminfo,line);//MemTotal - sscanf(line.c_str(),"%s: %u kB",buff,&memAvail); - meminfo.close(); - for(auto it:m_posPidMap){// check siblings - if(kill(it.second,0)==-1){// process is missing - errno=0; - if(activeSiblings.find(it.first)!=activeSiblings.end()){//process was not there before either - activeSiblings.erase(activeSiblings.find(it.first));//take it out - } - }else{// process is active - activeSiblings.insert(it.first); - } - } - if(activeSiblings.size()==0)break; - if(memAvail-(vmRss*activeSiblings.size())>vmRss){//there is enough space for at least one more process - break; - } - std::this_thread::sleep_for(std::chrono::milliseconds(1000));// wait for other processes - }catch(std::exception &ex){ - ERS_LOG("Failed reading proc memory information. "<<ex.what()); - break; - } - } -} diff --git a/Trigger/ALP/src/DataSourceExceptions.cxx b/Trigger/ALP/src/DataSourceExceptions.cxx deleted file mode 100644 index 1c5e9a6a440..00000000000 --- a/Trigger/ALP/src/DataSourceExceptions.cxx +++ /dev/null @@ -1,81 +0,0 @@ -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ - -#include <stdexcept> -#include <string> -#include "ALP/DataSourceExceptions.h" - -namespace ALPNS{ - namespace DSErrors{ - EventNotReady::EventNotReady()noexcept :m_msg("Event Not Ready!"){} - EventNotReady::EventNotReady(const std::string &m)noexcept{ - m_msg=std::string("Event Not Ready: "+m); - } - const char * EventNotReady::what() const noexcept { - return m_msg.c_str(); - } - EventNotReady::EventNotReady(const EventNotReady &rhs) noexcept {m_msg=rhs.m_msg;} - EventNotReady& EventNotReady::operator=(const EventNotReady &rhs) noexcept{m_msg=rhs.m_msg;return *this;} - EventNotReady::~EventNotReady()noexcept {} - - NoMoreEvents::NoMoreEvents() noexcept :m_msg("No More Events"){} - NoMoreEvents::NoMoreEvents(const std::string &m) noexcept{ - m_msg=std::string("No more events available "+m); - } - const char * NoMoreEvents::what() const noexcept { - return m_msg.c_str(); - } - NoMoreEvents::NoMoreEvents(const NoMoreEvents &rhs) noexcept {m_msg=rhs.m_msg;} - NoMoreEvents& NoMoreEvents::operator=(const NoMoreEvents &rhs) noexcept{m_msg=rhs.m_msg;return *this;} - NoMoreEvents::~NoMoreEvents()noexcept {} - - CommunicationError::CommunicationError() noexcept :m_msg("Communication Error") {} - CommunicationError::CommunicationError(const std::string &m) noexcept { - m_msg=std::string("Communication Error: "+m); - } - const char * CommunicationError::what() const noexcept { - return m_msg.c_str(); - } - CommunicationError::CommunicationError(const CommunicationError &rhs) noexcept {m_msg=rhs.m_msg;} - CommunicationError& CommunicationError::operator=(const CommunicationError &rhs) noexcept{m_msg=rhs.m_msg;return *this;} - CommunicationError::~CommunicationError() noexcept {} - - }//namespace DSErrors - //common errors - BadConfig::BadConfig() noexcept :m_msg("Bad Configuration") {} - BadConfig::BadConfig(const std::string &m) noexcept { - m_msg=std::string("Bad Configuration "+m); - } - const char * BadConfig::what() const noexcept { - return m_msg.c_str(); - } - BadConfig::BadConfig(const BadConfig &rhs) noexcept {m_msg=rhs.m_msg;} - BadConfig& BadConfig::operator=(const BadConfig &rhs) noexcept{m_msg=rhs.m_msg;return *this;} - BadConfig::~BadConfig() noexcept {} - - NonexistentLib::NonexistentLib() noexcept : m_msg("Nonexistent library!") {} - NonexistentLib::NonexistentLib(const std::string &m) noexcept { - m_msg=std::string("Non-Existent Library "+m); - } - const char * NonexistentLib::what() const noexcept { - return m_msg.c_str(); - } - NonexistentLib::NonexistentLib(const NonexistentLib &rhs) noexcept {m_msg=rhs.m_msg;} - NonexistentLib& NonexistentLib::operator=(const NonexistentLib &rhs) noexcept{m_msg=rhs.m_msg;return *this;} - - NonexistentLib::~NonexistentLib() noexcept {} - UnexpectedException::UnexpectedException() noexcept:m_msg("Unexpected Exception") {} - UnexpectedException::UnexpectedException(const std::string &m) noexcept { - m_msg=std::string("Unexpected Exception "+m); - } - const char * UnexpectedException::what() const noexcept { - return m_msg.c_str(); - } - UnexpectedException::UnexpectedException(const UnexpectedException &rhs) noexcept {m_msg=rhs.m_msg;} - UnexpectedException& UnexpectedException::operator=(const UnexpectedException &rhs) noexcept{m_msg=rhs.m_msg;return *this;} - UnexpectedException::~UnexpectedException() noexcept {} -} diff --git a/Trigger/ALP/src/FileDataSource.cxx b/Trigger/ALP/src/FileDataSource.cxx deleted file mode 100644 index b47cca480a4..00000000000 --- a/Trigger/ALP/src/FileDataSource.cxx +++ /dev/null @@ -1,485 +0,0 @@ -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ - -#include "ALP/FileDataSource.h" -#include <algorithm> -#include <unordered_set> -#include "ers/ers.h" -//#include "eformat/FullEventFragment.h" -#include "eformat/eformat.h" -#include "eformat/write/eformat.h" -#include "eformat/index.h" -#include "eformat/SourceIdentifier.h" -#include "eformat/FullEventFragmentNoTemplates.h" -#include "EventStorage/DataReader.h" -#include "EventStorage/pickDataReader.h" -#include "EventStorage/DataWriter.h" -#include "ALP/DataSourceExceptions.h" - -const std::unordered_set<uint32_t> L1R_ROBS = -{ - 0x7300a8, 0x7300a9, 0x7300aa, 0x7300ab, // TDAQ_CALO_CLUSTER_PROC_ROI ROBs - 0x7500ac, 0x7500ad, // TDAQ_CALO_JET_PROC_ROI ROBs - 0x760001, // TDAQ_MUON_CTP_INTERFACE ROB - 0x770001, // TDAQ_CTP ROB - 0x910081, 0x910082, 0x910091, 0x910092 // TDAQ_CALO_TOPO_PROC ROBs -}; - -ALPNS::FileDataSource::~FileDataSource(){ - delete m_currReader; - delete m_currEvent; - delete m_IDmap; - delete[] m_blob; - delete m_l1r; - delete m_collectedRobs; -} - -ALPNS::FileDataSource::FileDataSource(){ - m_stride=0; - m_currEventInFile=0; - m_currFile=-1; - m_start=1; - m_currReader=0; - m_currEvent=0; - m_loopFiles=false; - m_blob=0; - m_fileNames=new std::vector<std::string>(); - m_IDmap=new std::unordered_map<uint32_t, const uint32_t*>(); ///< The ID <-> ROB map - m_l1r=new std::vector<eformat::ROBFragment<const uint32_t*> >(); ///< The LVL1 result - m_collectedRobs=new std::set<uint32_t>(); - m_comp=eformat::UNCOMPRESSED; - m_compLevel=2; - DataCollector::instance(this); -} - -bool ALPNS::FileDataSource::configure(const boost::property_tree::ptree &pt){ - const boost::property_tree::ptree& args=pt.get_child("Configuration.ALPApplication.DataSource.HLTFileDataSource"); - ERS_LOG("Configuring FileDataSource"); - m_start=args.get("start_id",1); - m_stride=args.get("stride",1); - m_currFile=args.get("fileOffset",-1); - m_loopFiles=(args.get("loopOverFiles","false")!="false"); - m_nMaxEvents=args.get("numEvents",-1); - try{ - auto of=args.get_child("outputFileName"); - m_outFileName=std::string(of.data()); - ERS_LOG("Output file name "<<m_outFileName); - }catch(boost::property_tree::ptree_bad_path &ex){ - ERS_DEBUG(1,"Output file name is not specified"); - ERS_LOG("Failed to get outputFileName"); - } - try{ - auto of=args.get_child("compressionFormat"); - std::string ctype(of.data()); - if(ctype=="ZLIB")m_comp=eformat::ZLIB; - m_compLevel=args.get("compressionLevel",2); - }catch(boost::property_tree::ptree_bad_path &ex){ - ERS_DEBUG(1,"Compression is not specified"); - ERS_LOG("Failed to get Compression information"); - } - - m_runParams=std::make_unique<EventStorage::run_parameters_record>(); - m_runParams->run_number = 1234123412; - m_runParams->max_events = 0; - m_runParams->rec_enable = 0; - m_runParams->trigger_type = 0; - m_runParams->detector_mask_LS = 0; - m_runParams->detector_mask_MS = 0; - m_runParams->beam_type = 0; - m_runParams->beam_energy = 0; - - std::pair<boost::property_tree::ptree::const_assoc_iterator, - boost::property_tree::ptree::const_assoc_iterator> r(args.get_child("fileList").equal_range("file")); - for (boost::property_tree::ptree::const_assoc_iterator it(r.first); it != r.second; ++it) { - m_fileNames->push_back(it->second.get_value<std::string>()); - ERS_LOG(" Adding file "+it->second.get_value<std::string>()); - } - if(m_fileNames->size()==0){ - ERS_LOG("No input files specified"); - return false; - } - //open the first file - return true; -} - -bool ALPNS::FileDataSource::prepareForRun(const boost::property_tree::ptree& /*args*/){ - return true; -} - -uint32_t ALPNS::FileDataSource::collect( - std::vector<hltinterface::DCM_ROBInfo>& data, - const uint32_t lvl1_id, const std::vector<uint32_t>& ids){ - data.reserve(ids.size()); - for (std::vector<uint32_t>::const_iterator - it = ids.begin(); it != ids.end(); ++it) { - auto comp = m_IDmap->find(*it); - if (comp == m_IDmap->end()) { - char buff[400]; - snprintf(buff,400,"Event with LVL1 id=%u does NOT contain ROB 0x%08x",lvl1_id,*it); - // boost::format msg("Event with LVL1 id=%lu does NOT contain ROB 0x%08x"); - // msg % lvl1_id % *it; - ERS_DEBUG(1, buff); - continue; - } - //this will create a copy of the ROBFragment, but so what? - eformat::ROBFragment<const uint32_t*> cf(comp->second); - data.emplace_back(cf,true,std::chrono::steady_clock::now(), - std::chrono::steady_clock::now()); - m_collectedRobs->insert(*it); - } - ERS_DEBUG(1, "Request with LVL1 id. " << lvl1_id - << " had requests for " << ids.size() - << " ROBs and got " << data.size() << " fragments."); - return data.size(); -} - -uint32_t ALPNS::FileDataSource::collect( - std::vector<hltinterface::DCM_ROBInfo>& data, - uint32_t lvl1_id){ - ERS_DEBUG(1,"Called collect with "<<lvl1_id); - auto id=m_IDmap->begin(),idend=m_IDmap->end(); - for(;id!=idend;++id){ - if(m_collectedRobs->find(id->first)!=m_collectedRobs->end()){ - eformat::ROBFragment<const uint32_t*> cf(id->second); - data.push_back(hltinterface::DCM_ROBInfo(cf,true,std::chrono::steady_clock::now(),std::chrono::steady_clock::now())); - m_collectedRobs->insert(id->first); - } - } - ERS_DEBUG(1,"returning "<<data.size()<<" fragments"); - return data.size(); -} - -bool ALPNS::FileDataSource::skipEvents(uint num){ - for(uint i=0;i<num;i++){ - uint32_t *evt=getNextEvent(); - delete evt; - } - return true; -} - -uint32_t* ALPNS::FileDataSource::getNextEvent(){ - char *buff; - unsigned int size=0; - int error_code=m_currReader->getData(size,&buff); - while (error_code == DRWAIT) { - usleep(500000); - ERS_INFO("[FileDataSource] Waiting for more data."); - error_code = m_currReader->getData(size, &buff); - } - if (error_code == DRNOOK) { - ERS_INFO("[FileDataSource] Reading of data NOT OK!"); - delete buff; - return 0; - } - if (error_code == DROK) { - ERS_DEBUG(1, "[FileDataSource] Event OK"); - } - uint32_t *blob=reinterpret_cast<uint32_t*>(buff); - ERS_LOG("READ a new event"); - return blob; -} - -void ALPNS::FileDataSource::getL1Result(std::vector<eformat::ROBFragment<const uint32_t*> > &l1r, - uint32_t &lvl1_id, - uint64_t &gid, - uint64_t &lumiBlock){ - - delete[] m_blob; - delete m_currEvent; - m_currEvent=0; - m_blob=0; - m_collectedRobs->clear(); - m_IDmap->clear(); - m_l1r->resize(0);//keep the buffer; - if((m_nMaxEvents>0) && (m_nEvents>=m_nEventsToRead)){ - throw ALPNS::DSErrors::NoMoreEvents("Event count reached"); - return; - } - uint eventsInFile=m_currReader->eventsInFile(); - //read gid and lumiblock from file and fill it in here - gid=0; - lumiBlock=0; - - if(m_currEventInFile+m_stride<eventsInFile){ - unsigned int target=m_currEventInFile+m_stride-1; - while(m_currEventInFile<target){//skip events - m_blob=getNextEvent(); - m_currEventInFile++; - delete[] m_blob; - } - m_blob=getNextEvent(); - m_currEventInFile++; - }else{ - int newoffset=m_currEventInFile+m_stride-eventsInFile; - if(nextFile()){ - eventsInFile=m_currReader->eventsInFile(); - if(eventsInFile>(uint)newoffset){ - if(newoffset>0){ - skipEvents(newoffset-1); - } - m_blob=getNextEvent(); - m_currEventInFile=newoffset; - }else{ - lvl1_id=0; - throw ALPNS::DSErrors::NoMoreEvents("File don't contain enough events"); - //throwexception - return; - } - }else{ - lvl1_id=0; - //throw exception - throw ALPNS::DSErrors::NoMoreEvents("Can't open next file"); - return; - } - } - if(!m_blob){ - throw ALPNS::DSErrors::NoMoreEvents("Can't read anymore events!"); - } - m_nEvents++; - m_currEvent=new eformat::read::FullEventFragment(m_blob); - // Build a subdetector based table-of-contents of this event - lvl1_id=m_currEvent->lvl1_id(); - gid=m_currEvent->global_id(); - lumiBlock=m_currEvent->lumi_block(); - ERS_LOG("READ EVENT l1="<<lvl1_id<<" gid= "<<gid<<" LB= "<<lumiBlock<<" count= "<<m_nEvents<<"/"<<m_nEventsToRead); - // std::map<eformat::SubDetector, std::vector<const uint32_t*> > sd_toc; - std::map<uint32_t, const uint32_t* > sd_toc; - eformat::helper::build_toc(*m_currEvent, sd_toc); - - for(auto it = sd_toc.begin(); it != sd_toc.end(); ++it) { - auto sourceId=eformat::helper::SourceIdentifier(it->first); - auto subId=sourceId.subdetector_id(); - switch (subId) { - case eformat::TDAQ_BEAM_CRATE: - case eformat::TDAQ_SFI: - case eformat::TDAQ_SFO: - case eformat::TDAQ_LVL2: - case eformat::TDAQ_HLT: - case eformat::OTHER: - //we ignore these - break; - default: - auto robId=sourceId.simple_code(); - // char bb[100]; - // snprintf(bb,100,"0x%x",robId); - // ERS_LOG("Running for ROBId "<<bb); - if((subId==eformat::TDAQ_CALO_FEAT_EXTRACT_ROI)|| - (L1R_ROBS.find(robId)!=L1R_ROBS.end()) - ){ - // ERS_LOG("Found RobID "<<robId); - m_l1r->emplace_back(it->second); - l1r.emplace_back(it->second); - }else{ - //these, we include in our internal data map for fast access - eformat::ROBFragment<const uint32_t*> rob(it->second); - auto mit = m_IDmap->find(rob.source_id()); - //if I already have an entry there... - if (mit != m_IDmap->end()) { - ERS_DEBUG(1,"Duplicate ROBS in file. Ignoring"); - }else{ - m_IDmap->operator[](rob.source_id()) = it->second; - - } - } - break; - } - } - ERS_DEBUG(1,"returning l1id="<<lvl1_id); -} - -void ALPNS::FileDataSource::reserveROBData(const uint32_t /*lvl1_id*/, - const std::vector<uint32_t>& /*ids*/){ - ERS_LOG("Called reserveROBData "); -} - - -void ALPNS::FileDataSource::sendResult(const bool accept, - const uint32_t l1id, - const hltinterface::HLTResult& res){ - ERS_LOG("Got result for l1id="<<l1id<< (accept?" ACCEPT ":" REJECT ")); - if(!m_writer)return; - if(accept){ - if (res.stream_tag.size()==0){ - ERS_LOG("Event is accepted but stream tags are empty!"); - return; - } - try{ - eformat::ROBFragment<const uint32_t*>(res.fragment_pointer).check(); - }catch(ers::Issue& iss){ - ERS_LOG("Invalid HLT result fragment"<<iss.what()); - return; - } - eformat::write::FullEventFragment newEvent; - newEvent.copy_header(m_currEvent->start()); - //set compression type - newEvent.compression_type(m_comp); - newEvent.compression_level(m_compLevel); - newEvent.lvl2_trigger_info(0,nullptr); - // check if there are L1 simulation bits - if(res.l1Simul_robs.size()){ - newEvent.lvl1_trigger_info(res.l1Triggers.size(),&(res.l1Triggers[0])); - } - // set hlt result bits - if(res.trigger_info.size()){ - newEvent.hlt_info(res.trigger_info.size(),&(res.trigger_info[0])); - } - //check stream tags - //this needs to be changed for multi-stream output. - uint32_t* streamtag=nullptr; - if(res.stream_tag.size()){ - auto size=eformat::helper::size_word(res.stream_tag); - streamtag=new uint32_t[size]; - eformat::helper::encode(res.stream_tag,size,streamtag); - newEvent.stream_tag(size,streamtag); - } - std::vector<eformat::read::ROBFragment> currRobs; - m_currEvent->robs(currRobs); - - std::set<uint32_t> robset; - std::set<eformat::SubDetector> detset; - for(const auto &t:res.stream_tag){ - if(t.robs.empty()&& t.dets.empty()){ - robset.clear(); - detset.clear(); - break; - }else{ - std::copy(std::begin(t.robs), std::end(t.robs), - std::inserter(robset,std::begin(robset))); - std::copy(std::begin(t.dets), std::end(t.dets), - std::inserter(detset,std::begin(detset))); - } - } - std::vector<const uint32_t*> newRobs; - newRobs.reserve(currRobs.size()+res.hltResult_robs.size()+res.l1Simul_robs.size()); - //copy old robs - std::set<uint32_t> l1Overrides; - for(const auto & r : res.l1Simul_robs){ - l1Overrides.insert(r.source_id()); - } - for(const auto& r:currRobs){ - auto sId=r.source_id(); - auto subId=eformat::helper::SourceIdentifier{sId}.subdetector_id(); - if((subId!=eformat::TDAQ_HLT)&&(subId!=eformat::TDAQ_LVL2)){//filter HLT and L2 results - if(robset.empty()&&detset.empty()){ - if(l1Overrides.find(sId)==l1Overrides.end()){//don't copy l1 results if simulated exists - newRobs.push_back(r.start()); - } - }else{ - if(robset.find(sId)!=robset.end()|| - detset.find(subId)!=detset.end()){ - if(l1Overrides.find(sId)==l1Overrides.end()){ - newRobs.push_back(r.start()); - } - } - } - } - } - //append l1 results to the new robs. This would work iff - // L1 results are unique - for(const auto& r:res.l1Simul_robs){ - newRobs.push_back(r.start()); - } - - //copy new robs - for(const auto& r:res.hltResult_robs){ - auto sId=r.source_id(); - auto subId=eformat::helper::SourceIdentifier{sId}.subdetector_id(); - if(robset.empty()&&detset.empty()){ - newRobs.push_back(r.start()); - }else{ - if(robset.find(sId)!=robset.end()|| - detset.find(subId)!=detset.end()){ - newRobs.push_back(r.start()); - } - } - } - //do I need to do that? - std::vector<eformat::write::ROBFragment> robs2write; - robs2write.reserve(newRobs.size()); - for(size_t t=0;t<newRobs.size();t++){ - robs2write.emplace_back(newRobs[t]); - newEvent.append(&(robs2write.back())); - } - //compression happens here - const eformat::write::node_t* top=newEvent.bind(); - auto finalSize=newEvent.size_word(); - uint32_t* finalEvent=new uint32_t[finalSize]; - auto res=eformat::write::copy(*top,finalEvent,finalSize); - if(res!=finalSize){ - ERS_LOG("ERROR Event serialization failed. l1id= "<<l1id); - delete[] finalEvent; - delete[] streamtag; - return; - } - auto wres=m_writer->putData(finalSize,finalEvent); - if(wres){ - ERS_LOG("Writing event failed"); - } - delete[] finalEvent; - delete[] streamtag; - - } -} - -bool ALPNS::FileDataSource::finalize(const boost::property_tree::ptree& /*args*/){ - return true; -} - -bool ALPNS::FileDataSource::nextFile(){ - if(m_currFile<(int)m_fileNames->size()){ - if(m_currReader){ - delete m_currReader; - m_currReader=0; - } - m_currFile++; - ERS_LOG("Openning file "<<m_fileNames->at(m_currFile)); - m_currReader=pickDataReader(m_fileNames->at(m_currFile)); - if(!m_currReader){ - ERS_LOG("Failed to open file \""<<m_fileNames->at(m_currFile)<<"\" good() call= "<<m_currReader->good()); - if(m_loopFiles&&m_currFile>=(int)(m_fileNames->size()))m_currFile=-1; - return false; - } - ERS_DEBUG(1,"Opened file \""<<m_fileNames->at(m_currFile)<<"\" good() call= "<<m_currReader->good()); - if(m_loopFiles&&m_currFile>=((int)(m_fileNames->size())))m_currFile=-1; - return true; - } - ERS_DEBUG(1,"m_currFile="<<m_currFile<<", m_fileNames->size()="<<m_fileNames->size()); - return false; -} - -bool ALPNS::FileDataSource::prepareWorker(const boost::property_tree::ptree& args){ - nextFile(); - m_start=args.get("start_id",1); - m_stride=args.get("stride",1); - //return true; - if(m_start>1){ - skipEvents(m_start-1); - } - m_nEventsToRead=m_nMaxEvents/m_stride; - if((m_nMaxEvents%m_stride)>=(m_start)){ - m_nEventsToRead++; - } - m_nEvents=0; - if(!m_outFileName.empty()){ - char buff[2000]; - snprintf(buff,2000,"%s_Child-%03d",m_outFileName.c_str(),m_start); - ERS_LOG("Opening outputfile "<<buff); - m_writer=std::make_unique<EventStorage::DataWriter>(std::string("."),//use work Directory right now - std::string(buff), - *m_runParams, - std::vector<std::string>(), - 1); - m_writer->setMaxFileMB(2000); - } - ERS_LOG("Prepare Worker done m_start="<<m_start<<" stride="<<m_stride); - - return true; -} - -bool ALPNS::FileDataSource::finalizeWorker(const boost::property_tree::ptree& /*args*/){ - return true; -} diff --git a/Trigger/ALP/src/PluginLoader.cxx b/Trigger/ALP/src/PluginLoader.cxx deleted file mode 100644 index 5aeffeca1d3..00000000000 --- a/Trigger/ALP/src/PluginLoader.cxx +++ /dev/null @@ -1,64 +0,0 @@ -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ - -// Class to manage the library loading. -//Author: Sami Kama - -#include "ALP/PluginLoader.h" - -std::unique_ptr<std::map<std::string,std::vector<std::string> > > ALPNS::PluginLoader::m_units; -std::unique_ptr<std::map<std::string,std::shared_ptr<void > > > ALPNS::PluginLoader::m_libHandles; - -bool ALPNS::PluginLoader::addPlugin(const std::string &unitName,const std::vector<std::string> &libList){ - if(!m_units){ - m_units.reset(new std::map<std::string,std::vector<std::string> > ()); - } - if(!m_libHandles){ - m_libHandles.reset(new std::map<std::string,std::shared_ptr<void > > ); - } - auto res=m_units->insert(std::make_pair(unitName,libList)); - if(res.second){ - char* err(0); - for(const auto &l:libList){ - dlerror(); - if(m_libHandles->find(l)!=m_libHandles->end())continue; - void* handle=dlopen(l.c_str(),RTLD_LAZY|RTLD_GLOBAL); - if(!handle){ - err=dlerror(); - std::cerr<<"Plugin "<<unitName<<" opening library " - <<l <<" failed with "<<err<<std::endl; - }else{ - auto s=std::shared_ptr<void>(handle,ALPNS::LibUnloader(l)); - m_libHandles->insert(std::make_pair(l,s)); - } - } - } - return res.second; -} - -std::shared_ptr<void> ALPNS::PluginLoader::getHandle(const std::string& libName){ - if(!m_libHandles){ - m_libHandles.reset(new std::map<std::string,std::shared_ptr<void > > ()); - } - if(!m_units){ - m_units.reset(new std::map<std::string,std::vector<std::string> > ()); - } - auto it=m_libHandles->find(libName); - if(it!=m_libHandles->end()){ - return it->second; - } - return std::shared_ptr<void>(); -} - -std::shared_ptr<ALPNS::Plugin> ALPNS::PluginLoader::get(const std::string& pluginName){ - auto it =m_units->find(pluginName); - if (it!=m_units->end()){ - return std::make_shared<ALPNS::Plugin>(it->second); - } - return std::shared_ptr<ALPNS::Plugin>(0); -} - diff --git a/Trigger/ALP/src/alpfactory.cxx b/Trigger/ALP/src/alpfactory.cxx deleted file mode 100644 index f43d9939772..00000000000 --- a/Trigger/ALP/src/alpfactory.cxx +++ /dev/null @@ -1,17 +0,0 @@ -// Dear emacs, this is -*- c++ -*- -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ -#include "ALP/ALP.h" - -extern "C" hltinterface::HLTInterface* create_interface(){ - return new ALP(); -} - -extern "C" void destroy_interface(hltinterface::HLTInterface* i){ - auto h=dynamic_cast<ALP*>(i); - delete h; -} diff --git a/Trigger/ALP/src/fileds_factory.cxx b/Trigger/ALP/src/fileds_factory.cxx deleted file mode 100644 index 1a116ce0fe6..00000000000 --- a/Trigger/ALP/src/fileds_factory.cxx +++ /dev/null @@ -1,16 +0,0 @@ -/* - -Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -Author: Sami Kama 2017 -*/ -#include "ALP/FileDataSource.h" - -extern "C" hltinterface::DataSource* create_hltmp_datasource(){ - return new ALPNS::FileDataSource(); -} - -extern "C" void destroy_hltmp_datasource(hltinterface::DataSource* i){ - ALPNS::FileDataSource* k=reinterpret_cast<ALPNS::FileDataSource*>(i); - delete k; -} -- GitLab From 0f6aab0de0195bdc8f7171b17ed2629f275b2178 Mon Sep 17 00:00:00 2001 From: Tadej Novak <tadej.novak@cern.ch> Date: Fri, 16 Nov 2018 17:21:42 +0100 Subject: [PATCH 130/135] Do a proper Tile TTL1 overlay Former-commit-id: aa91ce47b020228fc9da894daa44576bfd8d13eb --- .../share/Level1Overlay_jobOptions.py | 6 ++++ .../TileSimAlgs/share/TileTTL1_jobOptions.py | 7 ++--- .../TrigT1CaloSim/TrigT1CaloSim/OverlayTTL1.h | 5 ++- .../TrigT1CaloSim/python/OverlayTTL1Config.py | 18 +++++------ .../TrigT1/TrigT1CaloSim/src/OverlayTTL1.cxx | 31 +++++++++++-------- 5 files changed, 37 insertions(+), 30 deletions(-) diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py index e2566d59074..236d3a26764 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py @@ -36,6 +36,12 @@ if DetFlags.overlay.LVL1_on(): if DetFlags.simulateLVL1.Tile_on(): include( "TileSimAlgs/TileTTL1_jobOptions.py" ) + + # If we are doing MC overlay + if not overlayFlags.isDataOverlay(): + job.TileHitToTTL1.TileTTL1Container = overlayFlags.evtStore() + '+TileTTL1Cnt' + job.TileHitToTTL1.TileMBTSTTL1Container = overlayFlags.evtStore() + '+TileTTL1MBTS' + include( "TileSimAlgs/TileMuonReceiver_jobOptions.py" ) # Add special TTL1 overlay algorithm only for MC+MC overlay diff --git a/TileCalorimeter/TileSimAlgs/share/TileTTL1_jobOptions.py b/TileCalorimeter/TileSimAlgs/share/TileTTL1_jobOptions.py index 5ed8283bdb2..4e40fd9f75e 100644 --- a/TileCalorimeter/TileSimAlgs/share/TileTTL1_jobOptions.py +++ b/TileCalorimeter/TileSimAlgs/share/TileTTL1_jobOptions.py @@ -1,14 +1,11 @@ from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() -from TileSimAlgs.TileTTL1FromHitsGetter import * +from TileSimAlgs.TileTTL1FromHitsGetter import TileTTL1FromHitsGetter theTileTTL1FromHitsGetter = TileTTL1FromHitsGetter() -from TileSimAlgs.TileSimAlgsConf import * -theTileHitToTTL1=TileHitToTTL1() - from Digitization.DigitizationFlags import jobproperties -theTileHitToTTL1.RndmSvc=jobproperties.Digitization.rndmSvc() +topSequence.TileHitToTTL1.RndmSvc = jobproperties.Digitization.rndmSvc() jobproperties.Digitization.rndmSeedList.addSeed("Tile_HitToTTL1", 4789899, 989240512) from AthenaCommon.BeamFlags import jobproperties diff --git a/Trigger/TrigT1/TrigT1CaloSim/TrigT1CaloSim/OverlayTTL1.h b/Trigger/TrigT1/TrigT1CaloSim/TrigT1CaloSim/OverlayTTL1.h index f369e6041ae..70ba0b2c7cc 100644 --- a/Trigger/TrigT1/TrigT1CaloSim/TrigT1CaloSim/OverlayTTL1.h +++ b/Trigger/TrigT1/TrigT1CaloSim/TrigT1CaloSim/OverlayTTL1.h @@ -68,16 +68,19 @@ private: SG::ReadHandleKey<LArTTL1Container> m_bkgEmTTL1Key{this,"BkgEmTTL1Key","OriginalEvent_SG+LArTTL1EM","ReadHandleKey for Background Input EM LArTTL1Container"}; SG::ReadHandleKey<LArTTL1Container> m_bkgHadTTL1Key{this,"BkgHadTTL1Key","OriginalEvent_SG+LArTTL1HAD","ReadHandleKey for Background Input Had LArTTL1Container"}; SG::ReadHandleKey<TileTTL1Container> m_bkgTileTTL1Key{this,"BkgTileTTL1Key","OriginalEvent_SG+TileTTL1Cnt","ReadHandleKey for Background Input TileTTL1Container"}; + SG::ReadHandleKey<TileTTL1Container> m_bkgTileMBTSTTL1Key{this,"BkgTileMBTSTTL1Key","OriginalEvent_SG+TileTTL1MBTS","ReadHandleKey for Background Input MBTS TileTTL1Container"}; // locations of signal TTL1 data SG::ReadHandleKey<LArTTL1Container> m_signalEmTTL1Key{this,"SignalEmTTL1Key","BkgEvent_0_SG+LArTTL1EM","ReadHandleKey for Signal Input EM LArTTL1Container"}; SG::ReadHandleKey<LArTTL1Container> m_signalHadTTL1Key{this,"SignalHadTTL1Key","BkgEvent_0_SG+LArTTL1HAD","ReadHandleKey for Signal Input Had LArTTL1Container"}; SG::ReadHandleKey<TileTTL1Container> m_signalTileTTL1Key{this,"SignalTileTTL1Key","BkgEvent_0_SG+TileTTL1Cnt","ReadHandleKey for Signal Input TileTTL1Container"}; + SG::ReadHandleKey<TileTTL1Container> m_signalTileMBTSTTL1Key{this,"SignalTileMBTSTTL1Key","BkgEvent_0_SG+TileTTL1MBTS","ReadHandleKey for Signal Input MBTS TileTTL1Container"}; // locations of output TTL1 data SG::WriteHandleKey<LArTTL1Container> m_outputEmTTL1Key{this,"OutputEmTTL1Key","StoreGateSvc+LArTTL1EM","WriteHandleKey for Output EM LArTTL1Container"}; SG::WriteHandleKey<LArTTL1Container> m_outputHadTTL1Key{this,"OutputHadTTL1Key","StoreGateSvc+LArTTL1HAD","WriteHandleKey for Output Had LArTTL1Container"}; SG::WriteHandleKey<TileTTL1Container> m_outputTileTTL1Key{this,"OutputTileTTL1Key","StoreGateSvc+TileTTL1Cnt","WriteHandleKey for Output TileTTL1Container"}; + SG::WriteHandleKey<TileTTL1Container> m_outputTileMBTSTTL1Key{this,"OutputTileMBTSTTL1Key","StoreGateSvc+TileTTL1MBTS","WriteHandleKey for Output MBTS TileTTL1Container"}; /** overlay amplitudes from other TTL1 */ void groupLArTowers(SG::ReadHandle<LArTTL1Container>& towers, std::map<Identifier, std::vector<const LArTTL1*>> &towerMap) const; @@ -85,7 +88,7 @@ private: /** specialised overlay functions */ StatusCode overlayLArTTL1(const SG::ReadHandleKey<LArTTL1Container> &bkgKey, const SG::ReadHandleKey<LArTTL1Container> &signalKey, const SG::WriteHandleKey<LArTTL1Container> &outputKey, const std::string &label); - StatusCode overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey); + StatusCode overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey, const std::string &label); }; } // namespace LVL1 diff --git a/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py b/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py index 015c45f76e5..541858b2ceb 100644 --- a/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py +++ b/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py @@ -5,9 +5,6 @@ from AthenaCommon import CfgMgr def getTTL1Overlay(name="OverlayTTL1", **kwargs): from OverlayCommonAlgs.OverlayFlags import overlayFlags - # Tile TTL1 overlay is currently not needed as Tile trigger towers are created from the overlaid container - enableTileTTL1Overlay = False - kwargs.setdefault("BkgEmTTL1Key", overlayFlags.dataStore() + "+LArTTL1EM"); kwargs.setdefault("SignalEmTTL1Key", overlayFlags.evtStore() + "+LArTTL1EM"); kwargs.setdefault("OutputEmTTL1Key", overlayFlags.outputStore() + "+LArTTL1EM"); @@ -16,13 +13,12 @@ def getTTL1Overlay(name="OverlayTTL1", **kwargs): kwargs.setdefault("SignalHadTTL1Key", overlayFlags.evtStore() + "+LArTTL1HAD"); kwargs.setdefault("OutputHadTTL1Key", overlayFlags.outputStore() + "+LArTTL1HAD"); - if enableTileTTL1Overlay: - kwargs.setdefault("BkgTileTTL1Key", overlayFlags.dataStore() + "+TileTTL1Cnt"); - kwargs.setdefault("SignalTileTTL1Key", overlayFlags.evtStore() + "+TileTTL1Cnt"); - kwargs.setdefault("OutputTileTTL1Key", overlayFlags.outputStore() + "+TileTTL1Cnt"); - else: - kwargs.setdefault("BkgTileTTL1Key", ""); - kwargs.setdefault("SignalTileTTL1Key", ""); - kwargs.setdefault("OutputTileTTL1Key", ""); + kwargs.setdefault("BkgTileTTL1Key", overlayFlags.dataStore() + "+TileTTL1Cnt"); + kwargs.setdefault("SignalTileTTL1Key", overlayFlags.evtStore() + "+TileTTL1Cnt"); + kwargs.setdefault("OutputTileTTL1Key", overlayFlags.outputStore() + "+TileTTL1Cnt"); + + kwargs.setdefault("BkgTileMBTSTTL1Key", overlayFlags.dataStore() + "+TileTTL1MBTS"); + kwargs.setdefault("SignalTileMBTSTTL1Key", overlayFlags.evtStore() + "+TileTTL1MBTS"); + kwargs.setdefault("OutputTileMBTSTTL1Key", overlayFlags.outputStore() + "+TileTTL1MBTS"); return CfgMgr.LVL1__OverlayTTL1(name, **kwargs) diff --git a/Trigger/TrigT1/TrigT1CaloSim/src/OverlayTTL1.cxx b/Trigger/TrigT1/TrigT1CaloSim/src/OverlayTTL1.cxx index 5e2d74fcad9..a641309a961 100644 --- a/Trigger/TrigT1/TrigT1CaloSim/src/OverlayTTL1.cxx +++ b/Trigger/TrigT1/TrigT1CaloSim/src/OverlayTTL1.cxx @@ -23,7 +23,7 @@ StatusCode OverlayTTL1::initialize() { ATH_MSG_DEBUG("Initialising"); - // StoreGate keys + // StoreGate keys for LAr ATH_CHECK( m_bkgEmTTL1Key.initialize() ); ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgEmTTL1Key); ATH_CHECK( m_bkgHadTTL1Key.initialize() ); @@ -37,13 +37,19 @@ StatusCode OverlayTTL1::initialize() ATH_CHECK( m_outputHadTTL1Key.initialize() ); ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_outputHadTTL1Key); - // Tile can be disabled - ATH_CHECK( m_bkgTileTTL1Key.initialize(!m_bkgTileTTL1Key.key().empty()) ); + // StoreGate keys for Tile + ATH_CHECK( m_bkgTileTTL1Key.initialize() ); ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgTileTTL1Key); - ATH_CHECK( m_signalTileTTL1Key.initialize(!m_signalTileTTL1Key.key().empty()) ); + ATH_CHECK( m_bkgTileMBTSTTL1Key.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgTileMBTSTTL1Key); + ATH_CHECK( m_signalTileTTL1Key.initialize() ); ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_signalTileTTL1Key); - ATH_CHECK( m_outputTileTTL1Key.initialize(!m_outputTileTTL1Key.key().empty()) ); + ATH_CHECK( m_signalTileMBTSTTL1Key.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_signalTileMBTSTTL1Key); + ATH_CHECK( m_outputTileTTL1Key.initialize() ); ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_outputTileTTL1Key); + ATH_CHECK( m_outputTileMBTSTTL1Key.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_outputTileMBTSTTL1Key); return StatusCode::SUCCESS; } @@ -54,9 +60,8 @@ StatusCode OverlayTTL1::execute() ATH_CHECK( overlayLArTTL1(m_bkgEmTTL1Key, m_signalEmTTL1Key, m_outputEmTTL1Key, "EM") ); ATH_CHECK( overlayLArTTL1(m_bkgHadTTL1Key, m_signalHadTTL1Key, m_outputHadTTL1Key, "Hadronic") ); - if (!m_outputTileTTL1Key.key().empty()) { - ATH_CHECK( overlayTileTTL1(m_bkgTileTTL1Key, m_signalTileTTL1Key, m_outputTileTTL1Key) ); - } + ATH_CHECK( overlayTileTTL1(m_bkgTileTTL1Key, m_signalTileTTL1Key, m_outputTileTTL1Key, "") ); + ATH_CHECK( overlayTileTTL1(m_bkgTileMBTSTTL1Key, m_signalTileMBTSTTL1Key, m_outputTileMBTSTTL1Key, "MBTS") ); return StatusCode::SUCCESS; } @@ -178,7 +183,7 @@ StatusCode OverlayTTL1::overlayLArTTL1(const SG::ReadHandleKey<LArTTL1Container> return StatusCode::SUCCESS; } -StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey) +StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey, const std::string &label) { // setup map std::map<Identifier, std::vector<const TileTTL1*>> towerMap; @@ -186,7 +191,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe // Find Tile towers in TES SG::ReadHandle<TileTTL1Container> bkgTowers(bkgKey); if (!bkgTowers.isValid()) { - ATH_MSG_ERROR("Could not get background TileTTL1Container container " << bkgTowers.name() << " from store " << bkgTowers.store()); + ATH_MSG_ERROR("Could not get background " << label << " TileTTL1Container container " << bkgTowers.name() << " from store " << bkgTowers.store()); return StatusCode::FAILURE; } @@ -194,7 +199,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe /// So here we retrieve those, match them up and sum their amplitudes SG::ReadHandle<TileTTL1Container> signalTowers(signalKey); if (!signalTowers.isValid()) { - ATH_MSG_ERROR("Could not get signal TileTTL1Container container " << signalTowers.name() << " from store " << signalTowers.store()); + ATH_MSG_ERROR("Could not get signal " << label << " TileTTL1Container container " << signalTowers.name() << " from store " << signalTowers.store()); return StatusCode::FAILURE; } @@ -205,7 +210,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe SG::WriteHandle<TileTTL1Container> outputContainer(outputKey); // Register the TTL1 container in the TES ATH_CHECK( outputContainer.record(std::make_unique<TileTTL1Container>()) ); - ATH_MSG_DEBUG( "Output TileTTL1Container registered successfully (" << outputKey.key() << ")" ); + ATH_MSG_DEBUG( "Output " << label << " TileTTL1Container registered successfully (" << outputKey.key() << ")" ); // Then the process Tile TTL1 collection for (std::map<Identifier, std::vector<const TileTTL1*>>::iterator itMap = towerMap.begin(); itMap != towerMap.end(); ++itMap) { @@ -217,7 +222,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe if (mergedAmps.size() == 0) mergedAmps = (*it)->fsamples(); else { std::vector<float> amps = (*it)->fsamples(); - if (amps.size() != mergedAmps.size()) ATH_MSG_WARNING("Tile vectors have different lengths: " << amps.size() << ", " << mergedAmps.size()); + if (amps.size() != mergedAmps.size()) ATH_MSG_WARNING("Tile " << label << " vectors have different lengths: " << amps.size() << ", " << mergedAmps.size()); else for (unsigned int i = 0; i < amps.size(); ++i) mergedAmps[i] += amps[i]; } } -- GitLab From e6674e6841169ca348debfa851631d9d66edb3ed Mon Sep 17 00:00:00 2001 From: Zhidong Zhang <zhidong.zhang@cern.ch> Date: Tue, 27 Nov 2018 03:08:54 +0100 Subject: [PATCH 131/135] Make Input File Configurable for MuonRec_myTopOptions MuonRec_myTopOptions.py is to be used in ART test. ART test jobs will run on grid, so the input files need to distribute on grid. This MR is to modify the hardcoded input file name, so that it can be configurated in ART test scripts. Former-commit-id: 7a6b34f202c4a14d196eddab851370914597774b --- .../MuonRecExample/share/MuonRec_myTopOptions.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecExample/share/MuonRec_myTopOptions.py b/MuonSpectrometer/MuonReconstruction/MuonRecExample/share/MuonRec_myTopOptions.py index c436c80e7fa..ce15d0f0ccc 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonRecExample/share/MuonRec_myTopOptions.py +++ b/MuonSpectrometer/MuonReconstruction/MuonRecExample/share/MuonRec_myTopOptions.py @@ -24,9 +24,9 @@ from MuonRecExample.MuonRecUtils import assertCastorStager,hasJobPropertyBeenSet #-------------------------------------------------------------------------------- # Input #-------------------------------------------------------------------------------- -athenaCommonFlags.FilesInput = [ -"root://eosatlas//eos/atlas/atlasgroupdisk/det-muon/dq2/rucio/user/zhidong/14/a2/user.zhidong.12100112.EXT0._000001.RDO.pool.root" -] +if not 'InputRdoFile' in dir(): + InputRdoFile="root://eosatlas//eos/atlas/atlasgroupdisk/det-muon/dq2/rucio/user/zhidong/14/a2/user.zhidong.12100112.EXT0._000001.RDO.pool.root" +athenaCommonFlags.FilesInput = [InputRdoFile] if not hasJobPropertyBeenSet(athenaCommonFlags.FilesInput): athenaCommonFlags.FilesInput = MuonRecUtils.FileList.readDirectory("root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/det-muon/ReferenceDatasets/Digitization/Zmumu_15616/") -- GitLab From 1d091da1d8c3f774fd0cba95a8dcf4d82d73f680 Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Mon, 26 Nov 2018 16:43:01 +0100 Subject: [PATCH 132/135] LArGeoCode: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: 5a1ad5b8533fed6ca2d3e08f42022d8ccefaeb13 --- .../LArGeoCode/LArMaterialManager.h | 6 ++--- .../LArGeoCode/src/LArMaterialManager.cxx | 27 +++++++++---------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoCode/LArGeoCode/LArMaterialManager.h b/LArCalorimeter/LArGeoModel/LArGeoCode/LArGeoCode/LArMaterialManager.h index dd73a6bc661..5ff9e83f152 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoCode/LArGeoCode/LArMaterialManager.h +++ b/LArCalorimeter/LArGeoModel/LArGeoCode/LArGeoCode/LArMaterialManager.h @@ -1,9 +1,9 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -#ifndef _LARMATERIALMANAGER_H_ -#define _LARMATERIALMANAGER_H_ +#ifndef LARGEOCODE_LARMATERIALMANAGER_H +#define LARGEOCODE_LARMATERIALMANAGER_H //----------------------------------------------------------// // // // class LArMaterialManager This is a material manager // diff --git a/LArCalorimeter/LArGeoModel/LArGeoCode/src/LArMaterialManager.cxx b/LArCalorimeter/LArGeoModel/LArGeoCode/src/LArMaterialManager.cxx index 13402c6376b..7dd80173909 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoCode/src/LArMaterialManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoCode/src/LArMaterialManager.cxx @@ -1,12 +1,11 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArGeoCode/LArMaterialManager.h" #include "GeoModelKernel/GeoMaterial.h" #include "GeoModelKernel/GeoElement.h" #include "StoreGate/StoreGate.h" -#include "StoreGate/DataHandle.h" #include "StoreGate/StoreGateSvc.h" #include "CLHEP/Units/PhysicalConstants.h" #include "GaudiKernel/Bootstrap.h" @@ -27,7 +26,7 @@ LArMaterialManager::LArMaterialManager(StoreGateSvc* detStore): if(status.isFailure()) throw std::runtime_error("LArMaterialManager: cannot initialize message service"); - DataHandle<StoredMaterialManager> materialManager; + StoredMaterialManager* materialManager = nullptr; status = detStore->retrieve(materialManager, std::string("MATERIALS")); if(status.isFailure()) throw std::runtime_error("Error in LArMaterialManager, list of precalculated materials is absent.."); @@ -46,7 +45,7 @@ void LArMaterialManager::buildMaterials() msg << "**** in Material Manager " << endmsg; #endif - GeoMaterial *Copper = m_storedManager->getMaterial("std::Copper"); + const GeoMaterial *Copper = m_storedManager->getMaterial("std::Copper"); if (!Copper) throw std::runtime_error("Error in LArMaterialManager, std::Copper is not found."); #ifdef DEBUGGEO msg << "Copper radiation length " << Copper->getRadLength() << " " @@ -54,10 +53,10 @@ void LArMaterialManager::buildMaterials() #endif - GeoMaterial *Iron = m_storedManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = m_storedManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in LArMaterialManager, std::Iron is not found."); - GeoMaterial *Lead = m_storedManager->getMaterial("std::Lead"); + const GeoMaterial *Lead = m_storedManager->getMaterial("std::Lead"); if (!Lead) throw std::runtime_error("Error in LArMaterialManager, std::Lead is not found."); #ifdef DEBUGGEO msg << MSG::INFO<< "Lead radiation length " << Lead->getRadLength() << " " @@ -65,7 +64,7 @@ void LArMaterialManager::buildMaterials() #endif - GeoMaterial *LAr = m_storedManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = m_storedManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in LArMaterialManager, std::LiquidArgon is not found."); #ifdef DEBUGGEO @@ -73,10 +72,10 @@ void LArMaterialManager::buildMaterials() << LAr->getDensity()/(CLHEP::g/CLHEP::cm3) << endmsg; #endif - GeoMaterial *Air = m_storedManager->getMaterial("std::Air"); + const GeoMaterial *Air = m_storedManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in LArMaterialManager, std::Air is not found."); - GeoMaterial *Kapton = m_storedManager->getMaterial("std::Kapton"); + const GeoMaterial *Kapton = m_storedManager->getMaterial("std::Kapton"); if (!Kapton) throw std::runtime_error("Error in LArMaterialManager, std::Kapton is not found."); #ifdef DEBUGGEO msg << MSG::INFO<< "Kapton radiation length " << Kapton->getRadLength() << " " @@ -88,7 +87,7 @@ void LArMaterialManager::buildMaterials() #endif - GeoMaterial *Glue = m_storedManager->getMaterial("LAr::Glue"); + const GeoMaterial *Glue = m_storedManager->getMaterial("LAr::Glue"); if (!Glue) throw std::runtime_error("Error in LArMaterialManager, LAr::Glue is not found."); #ifdef DEBUGGEO msg << MSG::INFO<< "Glue radiation length " << Glue->getRadLength() << " " @@ -99,7 +98,7 @@ void LArMaterialManager::buildMaterials() #endif - GeoMaterial *G10 = m_storedManager->getMaterial("LAr::G10"); + const GeoMaterial *G10 = m_storedManager->getMaterial("LAr::G10"); if (!G10) throw std::runtime_error("Error in LArMaterialManager, LAr::G10 is not found."); #ifdef DEBUGGEO msg << MSG::INFO<< "G10 radiation length " << G10->getRadLength() << " " @@ -253,8 +252,8 @@ void LArMaterialManager::buildMaterials() //==GU 28 July 2005 // implement latest definitions from hard coded geometry - GeoElement* Si = m_storedManager->getElement("Silicon"); - GeoElement *O = m_storedManager->getElement("Oxygen"); + const GeoElement* Si = m_storedManager->getElement("Silicon"); + const GeoElement *O = m_storedManager->getElement("Oxygen"); density = dB.getDouble("BarrelMotherboards", "BarrelMotherboards-00", "DG10")*(CLHEP::g/CLHEP::cm3); //LArEMBEpoxyVolumicMass GeoMaterial* SiO2 = new GeoMaterial("SiO2",density); @@ -311,7 +310,7 @@ void LArMaterialManager::buildMaterials() // Vacuum for TB cryostat // ---------------------- - GeoElement *H = m_storedManager->getElement( "Hydrogen" ); + const GeoElement *H = m_storedManager->getElement( "Hydrogen" ); GeoMaterial *Vacuum = new GeoMaterial( "Vacuum", CLHEP::universe_mean_density ); Vacuum->add( H, 1. ); -- GitLab From 7c4c8cfed737de94b31e32c9b91f3cb4e7f74e94 Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Mon, 26 Nov 2018 16:43:42 +0100 Subject: [PATCH 133/135] LArGeoH6Cryostats: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: b33c54091aeb8289296faedf6c97c98f944a23d5 --- .../LArGeoH6Cryostats/src/BPCConstruction.cxx | 23 +++++++++---------- .../src/H6CryostatConstruction.cxx | 11 ++++----- .../src/MWPCConstruction.cxx | 21 ++++++++--------- .../src/WallsConstruction.cxx | 17 +++++++------- 4 files changed, 34 insertions(+), 38 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/BPCConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/BPCConstruction.cxx index 6cf7cfc9adc..c9a794ea4a1 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/BPCConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/BPCConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // This will construct a generic BPC for the H6 beamline that leads to the H1 cryostat. @@ -25,7 +25,6 @@ #include "GeoModelKernel/GeoIdentifierTag.h" #include "GeoModelKernel/GeoSerialDenominator.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelKernel/GeoShapeUnion.h" @@ -102,22 +101,22 @@ GeoVPhysVol* LArGeo::BPCConstruction::GetEnvelope() // Get the materials from the material manager:-----------------------------------------------------// // // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; std::string name; double density; - GeoElement* W=materialManager->getElement("Wolfram"); + const GeoElement* W=materialManager->getElement("Wolfram"); GeoMaterial* Tungsten = new GeoMaterial(name="Tungsten", density=19.3*CLHEP::g/CLHEP::cm3); Tungsten->add(W,1.); Tungsten->lock(); - GeoElement* Ar=materialManager->getElement("Argon"); - GeoElement* C=materialManager->getElement("Carbon"); - GeoElement* O=materialManager->getElement("Oxygen"); - GeoElement* H=materialManager->getElement("Hydrogen"); - GeoElement* Al=materialManager->getElement("Aluminium"); + const GeoElement* Ar=materialManager->getElement("Argon"); + const GeoElement* C=materialManager->getElement("Carbon"); + const GeoElement* O=materialManager->getElement("Oxygen"); + const GeoElement* H=materialManager->getElement("Hydrogen"); + const GeoElement* Al=materialManager->getElement("Aluminium"); GeoMaterial* CO2 = new GeoMaterial(name="CO2", density=1.84E-03*CLHEP::g/CLHEP::cm3); CO2->add(C,0.273); CO2->add(O,0.727); @@ -139,13 +138,13 @@ GeoVPhysVol* LArGeo::BPCConstruction::GetEnvelope() AlMylar->add(Al,0.219245); AlMylar->lock(); - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in BPCConstruction, std::Air is not found."); - GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); if (!Aluminium) throw std::runtime_error("Error in BPCConstruction, std::Aluminium is not found."); - GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); + const GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); if (!Mylar) throw std::runtime_error("Error in BPCConstruction, std::Mylar is not found."); diff --git a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/H6CryostatConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/H6CryostatConstruction.cxx index 46a67790211..6ea8ebae309 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/H6CryostatConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/H6CryostatConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // H6CryostatConstruction @@ -23,7 +23,6 @@ #include "GeoModelKernel/GeoAlignableTransform.h" #include "GeoModelKernel/GeoIdentifierTag.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelKernel/GeoShapeUnion.h" @@ -70,18 +69,18 @@ GeoVFullPhysVol* LArGeo::H6CryostatConstruction::GetEnvelope() } // Material Manager - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0; - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) { throw std::runtime_error("Error in H6CryostatConstruction, std::Air is not found."); } - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) { throw std::runtime_error("Error in H6CryostatConstruction, std::Iron is not found."); } - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) { throw std::runtime_error("Error in H6CryostatConstruction, std::LiquidArgon is not found."); } diff --git a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/MWPCConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/MWPCConstruction.cxx index 0bcea6cfa7d..a47752d86c0 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/MWPCConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/MWPCConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // This will construct a generic MWPC for the H6 beamline that leads to the H1 cryostat. @@ -28,7 +28,6 @@ #include "GeoModelKernel/GeoIdentifierTag.h" #include "GeoModelKernel/GeoSerialDenominator.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelKernel/GeoShapeUnion.h" @@ -105,20 +104,20 @@ GeoVPhysVol* LArGeo::MWPCConstruction::GetEnvelope() // Get the materials from the material manager:-----------------------------------------------------// // // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; std::string name; double density; - GeoElement* W=materialManager->getElement("Wolfram"); + const GeoElement* W=materialManager->getElement("Wolfram"); GeoMaterial* Tungsten = new GeoMaterial(name="Tungsten", density=19.3*CLHEP::g/CLHEP::cm3); Tungsten->add(W,1.); Tungsten->lock(); - GeoElement* Ar=materialManager->getElement("Argon"); - GeoElement* C=materialManager->getElement("Carbon"); - GeoElement* H=materialManager->getElement("Hydrogen"); + const GeoElement* Ar=materialManager->getElement("Argon"); + const GeoElement* C=materialManager->getElement("Carbon"); + const GeoElement* H=materialManager->getElement("Hydrogen"); GeoMaterial* Isobutane = new GeoMaterial(name="Isobutane", density=2.67*CLHEP::g/CLHEP::cm3); Isobutane->add(C,0.8266); Isobutane->add(H,0.1734); @@ -131,17 +130,17 @@ GeoVPhysVol* LArGeo::MWPCConstruction::GetEnvelope() // // Test to see whether we can get the ArIso from the database -// GeoMaterial *ArIso2 = materialManager->getMaterial("LArTB::Argon70Isobutane30"); +// const GeoMaterial *ArIso2 = materialManager->getMaterial("LArTB::Argon70Isobutane30"); // if (!ArIso2) (*m_msg) << MSG::INFO << "Found no Argon70Isobutane30 in database" << endmsg; // if (ArIso2) (*m_msg) << MSG::INFO << "Did find LArTB::Argon70Isobutane30 in database!" << endmsg; - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in MWPCConstruction, std::Air is not found."); - GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); if (!Aluminium) throw std::runtime_error("Error in MWPCConstruction, std::Aluminium is not found."); - GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); + const GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); if (!Mylar) throw std::runtime_error("Error in MWPCConstruction, std::Mylar is not found."); diff --git a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/WallsConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/WallsConstruction.cxx index a08a9751b34..196408deb70 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/WallsConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/WallsConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArGeoH6Cryostats/WallsConstruction.h" @@ -23,7 +23,6 @@ #include "GeoModelKernel/GeoIdentifierTag.h" #include "GeoModelKernel/GeoSerialDenominator.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelKernel/GeoShapeUnion.h" @@ -99,7 +98,7 @@ GeoVPhysVol* LArGeo::WallsConstruction::GetEnvelope() // Get the materials from the material manager:-----------------------------------------------------// // // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; std::string name; @@ -107,16 +106,16 @@ GeoVPhysVol* LArGeo::WallsConstruction::GetEnvelope() - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in WallsConstruction, std::Air is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in WallsConstruction, std::Iron is not found."); - GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); + const GeoMaterial *Lead = materialManager->getMaterial("std::Lead"); if (!Lead) throw std::runtime_error("Error in WallsConstruction, std::Lead is not found."); - GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); if (!Aluminium) throw std::runtime_error("Error in WallsConstruction, std::Aluminium is not found."); // Is this ok for the Scintillator? @@ -126,10 +125,10 @@ GeoVPhysVol* LArGeo::WallsConstruction::GetEnvelope() // The old Walls testbeam code uses a composition of C9 H10 (density 1.032) // ... because it's easiest at the moment and not all that different from the fractional // composition of the old tb code, take the Tile material (polysterene)... - GeoMaterial *Scint = materialManager->getMaterial("std::Polystyrene"); + const GeoMaterial *Scint = materialManager->getMaterial("std::Polystyrene"); if (!Scint) throw std::runtime_error("Error in WallsConstruction, std::Polystyrene is not found."); - GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); + const GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); if (!Mylar) throw std::runtime_error("Error in WallsConstruction, std::Mylar is not found."); -- GitLab From ed6f08db35af95a1897d3002329b4b632ee72061 Mon Sep 17 00:00:00 2001 From: scott snyder <scott.snyder@cern.ch> Date: Mon, 26 Nov 2018 16:44:15 +0100 Subject: [PATCH 134/135] LArGeoH62002Algs: Avoid use of non-bound DataHandle. Deprecating use of non-bound DataHandle, especially non-const. Also adding const for materials. Former-commit-id: b4b471c6331bbddeb14eb84e4bd222e91dee8419 --- .../LArGeoH62002Algs/src/ExcluderConstruction.cxx | 15 +++++++-------- .../src/FrontBeamConstructionH62002.cxx | 13 ++++++------- .../src/HECConstructionH62002.cxx | 13 ++++++------- .../src/LArDetectorFactoryH62002.cxx | 5 ++--- .../src/LArDetectorToolH62002.cxx | 4 ++-- .../src/TableConstructionH62002.cxx | 13 ++++++------- 6 files changed, 29 insertions(+), 34 deletions(-) diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/ExcluderConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/ExcluderConstruction.cxx index 77ee1b7609a..03d858974b3 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/ExcluderConstruction.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/ExcluderConstruction.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ // ExcluderConstruction @@ -24,7 +24,6 @@ #include "GeoModelKernel/GeoAlignableTransform.h" #include "GeoModelKernel/GeoIdentifierTag.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelKernel/GeoShapeUnion.h" @@ -75,12 +74,12 @@ GeoPhysVol* LArGeo::ExcluderConstruction::GetEnvelope() // Need to add Rohacell here! <<<=============== - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0; // (use Air for the moment....) <<<================ - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) { throw std::runtime_error("Error in ExcluderConstruction, std::Air is not found."); } @@ -89,10 +88,10 @@ GeoPhysVol* LArGeo::ExcluderConstruction::GetEnvelope() // Rohacell foam has density: 0.11g/cm3 std::string name; double density; - GeoElement* C=materialManager->getElement("Carbon"); - GeoElement* H=materialManager->getElement("Hydrogen"); - GeoElement* O=materialManager->getElement("Oxygen"); - GeoElement* N=materialManager->getElement("Nitrogen"); + const GeoElement* C=materialManager->getElement("Carbon"); + const GeoElement* H=materialManager->getElement("Hydrogen"); + const GeoElement* O=materialManager->getElement("Oxygen"); + const GeoElement* N=materialManager->getElement("Nitrogen"); GeoMaterial* Rohacell = new GeoMaterial(name="Rohacell", density=0.11*CLHEP::g/CLHEP::cm3); Rohacell->add(C,0.6465); Rohacell->add(H,0.07836); diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/FrontBeamConstructionH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/FrontBeamConstructionH62002.cxx index a97657badb3..e72c0ca7869 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/FrontBeamConstructionH62002.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/FrontBeamConstructionH62002.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "FrontBeamConstructionH62002.h" @@ -24,7 +24,6 @@ #include "GeoModelKernel/GeoIdentifierTag.h" #include "GeoModelKernel/GeoSerialDenominator.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelKernel/GeoShapeUnion.h" @@ -98,14 +97,14 @@ GeoVPhysVol* LArGeo::FrontBeamConstructionH62002::GetEnvelope() // Get the materials from the material manager:-----------------------------------------------------// // // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in FrontBeamConstructionH62002, std::Air is not found."); - GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); if (!Aluminium) throw std::runtime_error("Error in FrontBeamConstructionH62002, std::Aluminium is not found."); // Is this ok for the Scintillator? @@ -115,10 +114,10 @@ GeoVPhysVol* LArGeo::FrontBeamConstructionH62002::GetEnvelope() // The old FrontBeam testbeam code uses a composition of C9 H10 (density 1.032) // ... because it's easiest at the moment and not all that different from the fractional // composition of the old tb code, take the Tile material (polysterene)... - GeoMaterial *Scint = materialManager->getMaterial("std::Polystyrene"); + const GeoMaterial *Scint = materialManager->getMaterial("std::Polystyrene"); if (!Scint) throw std::runtime_error("Error in FrontBeamConstructionH62002, std::Polystyrene is not found."); - GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); + const GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); if (!Mylar) throw std::runtime_error("Error in FrontBeamConstructionH62002, std::Mylar is not found."); diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/HECConstructionH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/HECConstructionH62002.cxx index 201bf4d5daa..e4a629bcac3 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/HECConstructionH62002.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/HECConstructionH62002.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "HECConstructionH62002.h" @@ -27,7 +27,6 @@ #include "CLHEP/GenericFunctions/Sin.hh" #include "CLHEP/GenericFunctions/Cos.hh" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelUtilities/StoredPhysVol.h" @@ -97,7 +96,7 @@ GeoVFullPhysVol* LArGeo::HECConstructionH62002::GetEnvelope() } - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detectorStore->retrieve(materialManager, std::string("MATERIALS"))) { return NULL; } @@ -110,16 +109,16 @@ GeoVFullPhysVol* LArGeo::HECConstructionH62002::GetEnvelope() //const GeoMaterial *air = materialManager->getMaterial("std::Air"); - GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); + const GeoMaterial *LAr = materialManager->getMaterial("std::LiquidArgon"); if (!LAr) throw std::runtime_error("Error in HECConstruction, std::LiquidArgon is not found."); - GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); + const GeoMaterial *Iron = materialManager->getMaterial("std::Iron"); if (!Iron) throw std::runtime_error("Error in HECConstruction, std::Iron is not found."); - GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); + const GeoMaterial *Copper = materialManager->getMaterial("std::Copper"); if (!Copper) throw std::runtime_error("Error in HECConstruction, std::Copper is not found."); - GeoMaterial *Kapton = materialManager->getMaterial("std::Kapton"); + const GeoMaterial *Kapton = materialManager->getMaterial("std::Kapton"); if (!Kapton) throw std::runtime_error("Error in HECConstruction, std::Kapton is not found."); diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorFactoryH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorFactoryH62002.cxx index 65097c73bb2..c6810a9ad3c 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorFactoryH62002.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorFactoryH62002.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArDetectorFactoryH62002.h" @@ -31,7 +31,6 @@ #include "CLHEP/GenericFunctions/Sin.hh" #include "CLHEP/GenericFunctions/Cos.hh" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" // need if we want to use EMEC from LArGeoEndcap: #include "LArGeoEndcap/EMECConstruction.h" @@ -141,7 +140,7 @@ void LArGeo::LArDetectorFactoryH62002::getSimulationParameters() void LArGeo::LArDetectorFactoryH62002::create(GeoPhysVol *world) { - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != m_detectorStore->retrieve(materialManager, std::string("MATERIALS"))) { return; } diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorToolH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorToolH62002.cxx index a33a9af26d0..845077fd57e 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorToolH62002.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorToolH62002.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "LArDetectorToolH62002.h" @@ -70,7 +70,7 @@ LArDetectorToolH62002::create() // // Locate the top level experiment node // - DataHandle<GeoModelExperiment> theExpt; + GeoModelExperiment* theExpt = nullptr; if (StatusCode::SUCCESS != detStore()->retrieve( theExpt, "ATLAS" )) { log << MSG::ERROR << "Could not find GeoModelExperiment ATLAS" diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/TableConstructionH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/TableConstructionH62002.cxx index a7b617c96b0..1ee8391944d 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/TableConstructionH62002.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/TableConstructionH62002.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ #include "TableConstructionH62002.h" @@ -24,7 +24,6 @@ #include "GeoModelKernel/GeoIdentifierTag.h" #include "GeoModelKernel/GeoSerialDenominator.h" #include "StoreGate/StoreGateSvc.h" -#include "StoreGate/DataHandle.h" #include "GeoModelInterfaces/AbsMaterialManager.h" #include "GeoModelInterfaces/StoredMaterialManager.h" #include "GeoModelKernel/GeoShapeUnion.h" @@ -96,13 +95,13 @@ GeoVPhysVol* LArGeo::TableConstructionH62002::GetEnvelope() // Get the materials from the material manager:-----------------------------------------------------// // // - DataHandle<StoredMaterialManager> materialManager; + const StoredMaterialManager* materialManager = nullptr; if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL; - GeoMaterial *Air = materialManager->getMaterial("std::Air"); + const GeoMaterial *Air = materialManager->getMaterial("std::Air"); if (!Air) throw std::runtime_error("Error in TableConstructionH62002, std::Air is not found."); - GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); + const GeoMaterial *Aluminium = materialManager->getMaterial("std::Aluminium"); if (!Aluminium) throw std::runtime_error("Error in TableConstructionH62002, std::Aluminium is not found."); // Is this ok for the Scintillator? @@ -112,10 +111,10 @@ GeoVPhysVol* LArGeo::TableConstructionH62002::GetEnvelope() // The old testbeam code uses a composition of C9 H10 (density 1.032) // ... because it's easiest at the moment and not all that different from the fractional // composition of the old tb code, take the Tile material (polysterene)... - GeoMaterial *Scint = materialManager->getMaterial("std::Polystyrene"); + const GeoMaterial *Scint = materialManager->getMaterial("std::Polystyrene"); if (!Scint) throw std::runtime_error("Error in TableConstructionH62002, std::Polystyrene is not found."); - GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); + const GeoMaterial *Mylar = materialManager->getMaterial("std::Mylar"); if (!Mylar) throw std::runtime_error("Error in TableConstructionH62002, std::Mylar is not found."); -- GitLab From 8416f3d9345fafbd6ce8b7f7371d312c39ef546e Mon Sep 17 00:00:00 2001 From: Teng Jian Khoo <teng.jian.khoo@cern.ch> Date: Tue, 27 Nov 2018 13:26:28 +0000 Subject: [PATCH 135/135] Update packages:JetCalibTools from upstream/21.2 to upstream/master via pseudo-merge Former-commit-id: 51f90f2d806c51aef192f23c1c70c5456a87b713 --- .../Jet/JetCalibTools/CMakeLists.txt | 44 +- .../GlobalSequentialCorrection.h | 39 +- .../CalibrationMethods/InsituDataCorrection.h | 4 + .../CalibrationMethods/JMSCorrection.h | 24 +- .../CalibrationMethods/JetPileupCorrection.h | 2 + .../JetSmearingCorrection.h | 91 +++ .../JetCalibTools/IJetCalibrationTool.h | 9 + .../JetCalibTools/JetCalibUtils.h | 2 + .../JetCalibTools/JetCalibrationTool.h | 17 +- .../JetCalibTools/JetCalibrationToolBase.h | 9 +- .../JetCalibTools/JetCalibTools/RootHelpers.h | 20 + .../JetCalibTools/Root/EtaJESCorrection.cxx | 8 +- .../Root/GlobalSequentialCorrection.cxx | 159 +++- .../Root/InsituDataCorrection.cxx | 17 +- .../Jet/JetCalibTools/Root/JMSCorrection.cxx | 687 +++++++++++++++--- .../Jet/JetCalibTools/Root/JetCalibUtils.cxx | 8 + .../JetCalibTools/Root/JetCalibrationTool.cxx | 95 ++- .../Root/JetPileupCorrection.cxx | 40 +- .../Root/JetSmearingCorrection.cxx | 558 ++++++++++++++ .../Root/NPVBeamspotCorrection.cxx | 29 - .../Root/ResidualOffsetCorrection.cxx | 8 +- .../Jet/JetCalibTools/Root/RootHelpers.cxx | 324 +++++++++ .../util/JetCalibTools_Example.cxx | 1 - .../util/JetCalibTools_PlotJESFactors.cxx | 221 ++++++ .../util/JetCalibTools_PlotJMSFactors.cxx | 330 +++++++++ .../util/JetCalibTools_SmearingPlots.cxx | 382 ++++++++++ .../JetRec/python/JetRecCalibrationFinder.py | 5 +- 27 files changed, 2898 insertions(+), 235 deletions(-) create mode 100644 Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JetSmearingCorrection.h create mode 100644 Reconstruction/Jet/JetCalibTools/JetCalibTools/RootHelpers.h create mode 100644 Reconstruction/Jet/JetCalibTools/Root/JetSmearingCorrection.cxx create mode 100644 Reconstruction/Jet/JetCalibTools/Root/RootHelpers.cxx create mode 100644 Reconstruction/Jet/JetCalibTools/util/JetCalibTools_PlotJESFactors.cxx create mode 100644 Reconstruction/Jet/JetCalibTools/util/JetCalibTools_PlotJMSFactors.cxx create mode 100644 Reconstruction/Jet/JetCalibTools/util/JetCalibTools_SmearingPlots.cxx diff --git a/Reconstruction/Jet/JetCalibTools/CMakeLists.txt b/Reconstruction/Jet/JetCalibTools/CMakeLists.txt index d7b48371285..cc91dcd0513 100644 --- a/Reconstruction/Jet/JetCalibTools/CMakeLists.txt +++ b/Reconstruction/Jet/JetCalibTools/CMakeLists.txt @@ -1,4 +1,4 @@ -# $Id: CMakeLists.txt 789330 2016-12-12 17:07:48Z khoo $ +# $Id: CMakeLists.txt 808750 2017-07-26 19:46:53Z jbossios $ ################################################################################ # Package: JetCalibTools ################################################################################ @@ -31,7 +31,9 @@ atlas_depends_on_subdirs( ${extra_deps} ) # External dependencies: -find_package( ROOT COMPONENTS Core Tree Hist RIO ) +find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO Graf Gpad ) + +atlas_install_generic( share/* DESTINATION data/JetCalibTools ) # Libraries in the package: atlas_add_library( JetCalibToolsLib @@ -60,11 +62,49 @@ if( XAOD_STANDALONE ) INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODJet xAODEventShape xAODCore xAODRootAccess JetCalibToolsLib ) + + atlas_add_executable( JetCalibTools_PlotJESFactors + util/JetCalibTools_PlotJESFactors.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODJet + xAODCore xAODRootAccess JetCalibToolsLib ) + + atlas_add_executable( JetCalibTools_PlotJMSFactors + util/JetCalibTools_PlotJMSFactors.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODJet + xAODCore xAODRootAccess JetCalibToolsLib ) + + atlas_add_executable( JetCalibTools_SmearingPlots + util/JetCalibTools_SmearingPlots.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODJet + xAODCore xAODRootAccess JetCalibToolsLib ) + else() atlas_add_executable( JetCalibTools_Example util/JetCalibTools_Example.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODJet xAODEventShape xAODCore POOLRootAccess xAODRootAccess JetCalibToolsLib ) + + atlas_add_executable( JetCalibTools_PlotJESFactors + util/JetCalibTools_PlotJESFactors.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODJet + xAODCore xAODRootAccess POOLRootAccess JetCalibToolsLib ) + + atlas_add_executable( JetCalibTools_PlotJMSFactors + util/JetCalibTools_PlotJMSFactors.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODJet + xAODCore xAODRootAccess POOLRootAccess JetCalibToolsLib ) + + atlas_add_executable( JetCalibTools_SmearingPlots + util/JetCalibTools_SmearingPlots.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODJet + xAODCore xAODRootAccess POOLRootAccess JetCalibToolsLib ) + endif() diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/GlobalSequentialCorrection.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/GlobalSequentialCorrection.h index 8131c49f4cf..d0ebec6dcff 100644 --- a/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/GlobalSequentialCorrection.h +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/GlobalSequentialCorrection.h @@ -48,15 +48,19 @@ class GlobalSequentialCorrection double getEM3Response(double pT, uint etabin, double EM3) const; double getChargedFractionResponse(double pT, uint etabin, double ChargedFraction) const; double getPunchThroughResponse(double E, double eta_det, int Nsegments) const; + double getCaloWIDTHResponse(double pT, uint etabin, double caloWIDTH) const; + double getN90ConstituentsResponse(double pT, uint etabin, double N90Constituents) const; double getGSCCorrection(xAOD::JetFourMom_t jetP4, double eta, - double trackWIDTH, double nTrk, double Tile0, double EM3, int Nsegments, double ChargedFraction) const; + double trackWIDTH, double nTrk, double Tile0, double EM3, int Nsegments, double ChargedFraction, double caloWIDTH, double N90Constituents) const; double getJetPropertyMax(TString jetPropName, unsigned int etabin) { if ( jetPropName.Contains("EM3") && etabin < m_EM3MaxEtaBin ) return m_respFactorsEM3[etabin]->GetYaxis()->GetXmax(); else if ( jetPropName.Contains("Tile0") && etabin < m_Tile0MaxEtaBin ) return m_respFactorsTile0[etabin]->GetYaxis()->GetXmax(); else if ( jetPropName.Contains("nTrk") && etabin < m_nTrkMaxEtaBin ) return m_respFactorsnTrk[etabin]->GetYaxis()->GetXmax(); else if ( jetPropName.Contains("trackWIDTH") && etabin < m_trackWIDTHMaxEtaBin ) return m_respFactorstrackWIDTH[etabin]->GetYaxis()->GetXmax(); + else if ( jetPropName.Contains("N90Constituents") && etabin < m_N90ConstituentsMaxEtaBin ) return m_respFactorsN90Constituents[etabin]->GetYaxis()->GetXmax(); + else if ( jetPropName.Contains("caloWIDTH") && etabin < m_caloWIDTHMaxEtaBin ) return m_respFactorscaloWIDTH[etabin]->GetYaxis()->GetXmax(); else return 1; } @@ -75,32 +79,8 @@ class GlobalSequentialCorrection double readPtJetPropertyHisto(double pT, double jetProperty, TH2F *respFactors) const; - - /* - bool fileExist(TString fn) { return gSystem->AccessPathName(fn)==false; }; - - TFile* openInputFile(TString fn) { - if ( !FileExist(fn)) error("Cannot open GSC factors file"+fn); - TFile* fileHandle = new TFile(fn); - if (fileHandle == NULL) error( "Found but could not open file %s"+fn); - return fileHandle; - }; - - TH2F *GetHisto(TFile *file, TString hname) { - TH2F *h = (TH2F*)file->Get(hname); - if (h==NULL) printf("WARNING: Cannot access histogram \"%s\" in file %s",hname.Data(),file->GetName()); - return h; - } - */ - - //shared functions/variables with JetCalibrationTool - //void error(TString msg) - //{ printf("\nERROR - GlobalSequentialCorrection:\n\n %s\n\n",msg.Data()); abort(); } - //TString FindFile(TString fn); - //end shared functions - private: - enum m_GSCSeq { ApplyChargedFraction = 1, ApplyTile0 = 2, ApplyEM3 = 4, ApplynTrk = 8, ApplytrackWIDTH = 16, ApplyPunchThrough = 32 }; + enum m_GSCSeq { ApplyChargedFraction = 1, ApplyTile0 = 2, ApplyEM3 = 4, ApplynTrk = 8, ApplytrackWIDTH = 16, ApplyPunchThrough = 32, ApplyN90Constituents = 64, ApplycaloWIDTH = 128 }; //Private members set in the constructor TEnv * m_config; @@ -108,15 +88,16 @@ class GlobalSequentialCorrection bool m_dev; //Private members set during initialization - VecTH2F m_respFactorsEM3, m_respFactorsnTrk, m_respFactorstrackWIDTH, m_respFactorsTile0, m_respFactorsPunchThrough, m_respFactorsChargedFraction; + VecTH2F m_respFactorsEM3, m_respFactorsnTrk, m_respFactorstrackWIDTH, m_respFactorsTile0, m_respFactorsPunchThrough, m_respFactorsChargedFraction, m_respFactorsN90Constituents, m_respFactorscaloWIDTH; double m_binSize; - uint m_depth, m_trackWIDTHMaxEtaBin, m_nTrkMaxEtaBin, m_Tile0MaxEtaBin, m_EM3MaxEtaBin, m_chargedFractionMaxEtaBin; - //double m_etaGapMin, m_etaGapMax; + uint m_depth, m_trackWIDTHMaxEtaBin, m_nTrkMaxEtaBin, m_Tile0MaxEtaBin, m_EM3MaxEtaBin, m_chargedFractionMaxEtaBin, m_caloWIDTHMaxEtaBin, m_N90ConstituentsMaxEtaBin; VecD m_punchThroughEtaBins; double m_punchThroughMinPt; bool m_turnOffTrackCorrections; bool m_PFlow; + bool m_caloBased; bool m_pTResponseRequirementOff; + bool m_nTrkwTrk_4PFlow; double m_turnOffStartingpT, m_turnOffEndpT; }; diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/InsituDataCorrection.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/InsituDataCorrection.h index 113ab81078e..bb2bf494acb 100644 --- a/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/InsituDataCorrection.h +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/InsituDataCorrection.h @@ -36,6 +36,9 @@ class InsituDataCorrection virtual StatusCode initializeTool(const std::string& name); + inline double getRelHistoPtMax(){return m_relhistoPtMax;} + inline double getAbsHistoPtMax(){return m_abshistoPtMax;} + protected: virtual StatusCode calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const; @@ -50,6 +53,7 @@ class InsituDataCorrection TH2D * m_insituCorr; double m_insituEtaMax, m_insituPtMin, m_insituPtMax; + double m_relhistoPtMax, m_abshistoPtMax; TH2D * m_insituCorr_ResidualMCbased; double m_insituEtaMax_ResidualMCbased, m_insituPtMin_ResidualMCbased, m_insituPtMax_ResidualMCbased; diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JMSCorrection.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JMSCorrection.h index 9c9cc4ff255..ec07fb6d67b 100644 --- a/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JMSCorrection.h +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JMSCorrection.h @@ -14,6 +14,8 @@ #include <TAxis.h> #include <TH2F.h> #include <TH2D.h> +#include <TH3F.h> +#include <TH3D.h> #include "JetCalibTools/IJetCalibrationTool.h" #include "JetCalibTools/JetCalibrationToolBase.h" @@ -43,10 +45,15 @@ class JMSCorrection virtual StatusCode calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const; private: + float getMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const; float getMassCorr(double pT_uncorr, double mass_uncorr, int etabin) const; + float getTrackAssistedMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const; float getTrackAssistedMassCorr(double pT_uncorr, double mass_uncorr, int etabin) const; + float getRelCalo3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const; float getRelCalo(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const; + float getRelTA3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const; float getRelTA(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const; + float getRho3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const; float getRho(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const; void setMassEtaBins(VecD etabins) { @@ -77,7 +84,16 @@ class JMSCorrection bool m_combination; // Mass Combination of calo mass with track-assisted mass bool m_useCorrelatedWeights; - //Private members set during initialization + // Control the binning using a private class enum + enum class BinningParam { pt_mass_eta, e_LOGmOe_eta, e_LOGmOet_eta, e_LOGmOpt_eta, et_LOGmOet_eta }; + BinningParam m_binParam; + + // Check if we are reading 2D or 3D histograms + // Defaults to false for backwards compatibility + bool m_use3Dhisto; + + + //Private members set during initialization (if 2D histos) VecTH2F m_respFactorsMass; VecD m_massEtaBins; VecTH2F m_respFactorsTrackAssistedMass; @@ -86,6 +102,12 @@ class JMSCorrection VecTH2D m_taResolutionMassCombination; // Track-Assisted Mass Resolution VecTH2D m_correlationMapMassCombination; // Correlation Map for mass combination (rho) + //Private members set during initialization (if 3D histos) + TH3F* m_respFactorMass3D; + TH3F* m_respFactorTrackAssistedMass3D; + TH3D* m_caloResolutionMassCombination3D; + TH3D* m_taResolutionMassCombination3D; + TH3D* m_correlationMapMassCombination3D; }; #endif diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JetPileupCorrection.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JetPileupCorrection.h index ee31c5177fa..3ff0ee17d73 100644 --- a/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JetPileupCorrection.h +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JetPileupCorrection.h @@ -48,6 +48,8 @@ class JetPileupCorrection bool m_useFull4vectorArea; ResidualOffsetCorrection * m_residualOffsetCorr; + + std::string m_originScale; }; diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JetSmearingCorrection.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JetSmearingCorrection.h new file mode 100644 index 00000000000..4e256fd01be --- /dev/null +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/CalibrationMethods/JetSmearingCorrection.h @@ -0,0 +1,91 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef JETCALIBTOOLS_JETSMEARINGCORRECTION_H +#define JETCALIBTOOLS_JETSMEARINGCORRECTION_H + + +#include "JetCalibTools/IJetCalibrationTool.h" +#include "JetCalibTools/JetCalibrationToolBase.h" + +#include <memory> +#include <vector> + +#include "TRandom3.h" + +class JetSmearingCorrection + : virtual public IJetCalibrationTool, virtual public JetCalibrationToolBase +{ + + ASG_TOOL_CLASS(JetSmearingCorrection,IJetCalibrationTool) + + public: + // Constructor/destructor/init + JetSmearingCorrection(const std::string name = "NominalJetSmear"); + JetSmearingCorrection(const std::string& name, TEnv* config, TString jetAlgo, TString calibAreaTag, bool dev); + virtual ~JetSmearingCorrection(); + virtual StatusCode initializeTool(const std::string& name); + + virtual StatusCode getNominalResolutionData(const xAOD::Jet& jet, double& resolution) const; + virtual StatusCode getNominalResolutionMC( const xAOD::Jet& jet, double& resolution) const; + + protected: + virtual StatusCode calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const; + + private: + // Helper methods + StatusCode getSigmaSmear(xAOD::Jet& jet, double& sigmaSmear) const; + StatusCode getNominalResolution(const xAOD::Jet& jet, TH1* histo, const std::vector< std::unique_ptr<TH1> >& projections, double& resolution) const; + StatusCode readHisto(double& returnValue, TH1* histo, double x) const; + StatusCode readHisto(double& returnValue, TH1* histo, const std::vector< std::unique_ptr<TH1> >& projections, double x, double y) const; + StatusCode cacheProjections(TH1* fullHistogram, std::vector< std::unique_ptr<TH1> >& cacheLocation, const std::string& type); + + // Private enums + enum class SmearType + { + UNKNOWN=0, // Unknown/unset/etc + Pt, // pT smearing (JpTR) + Mass, // Mass smearing (JMR) + FourVec // Four-vector smearing (JER) + }; + enum class HistType + { + UNKNOWN=0, // Unknown/unset/etc + Pt, // 1D histogram, binned in pT + PtEta, // 2D histogram, binned in x=pT y=eta + PtAbsEta // 2D histogram, binned in x=pT y=|eta| + }; + enum class InterpType + { + UNKNOWN=0, // Unknown/unset/etc + Full, // Full interpolation + None, // No interpolation + OnlyX, // Interpolate only in the x dimension + OnlyY // Interpolate only in the y dimension + }; + + // Class variables from constructor + TEnv* m_config; + const TString m_jetAlgo; + const TString m_calibAreaTag; + const bool m_dev; + mutable TRandom3 m_rand; // mutable as this we want to call in a const function (everything else is fixed, the random generator is modifiable) + + // Class variables read in from the config file + TString m_jetStartScale; + TString m_jetOutScale; + SmearType m_smearType; + HistType m_histType; + InterpType m_interpType; + std::unique_ptr<TH1> m_smearResolutionMC; + std::unique_ptr<TH1> m_smearResolutionData; + + // Variables to cache projections in case of 1-D interpolaton in 2-D or 3-D histograms + std::vector< std::unique_ptr<TH1> > m_cachedProjResMC; + std::vector< std::unique_ptr<TH1> > m_cachedProjResData; +}; + + +#endif + diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/IJetCalibrationTool.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/IJetCalibrationTool.h index 0a7eeb07521..5a206a32624 100644 --- a/Reconstruction/Jet/JetCalibTools/JetCalibTools/IJetCalibrationTool.h +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/IJetCalibrationTool.h @@ -24,6 +24,7 @@ //Package includes #include "JetCalibTools/JetEventInfo.h" +#include "JetCalibTools/JetCalibUtils.h" class IJetCalibrationTool : virtual public asg::IAsgTool { @@ -52,6 +53,14 @@ public: /// Jet modifier interface to calibrate a single jet. virtual int modifyJet(xAOD::Jet& jet) const = 0; + // Retrieve pTmax from in situ corrections + virtual VecD retrieveEtaIntercalPtMax(){VecD tmp; return tmp;} + virtual VecD retrieveAbsoluteInsituPtMax(){VecD tmp; return tmp;} + + // Get the nominal resolution + virtual StatusCode getNominalResolutionData(const xAOD::Jet&, double&) const { return StatusCode::FAILURE; } + virtual StatusCode getNominalResolutionMC( const xAOD::Jet&, double&) const { return StatusCode::FAILURE; } + }; #endif diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibUtils.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibUtils.h index f23e91417b2..d6aaffe1a32 100644 --- a/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibUtils.h +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibUtils.h @@ -11,6 +11,7 @@ #include "TObjString.h" #include "TH1D.h" #include "TH2D.h" +#include "TH3D.h" #include <cmath> #include <vector> @@ -25,6 +26,7 @@ namespace JetCalibUtils { TH1 *GetHisto(TFile *file, TString hname); TH2 *GetHisto2(TFile *file, TString hname); + TH3 *GetHisto3(TFile *file, TString hname); TTree *setTree(TTree *tree); diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibrationTool.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibrationTool.h index 2c2dd3de61c..02beff4a139 100644 --- a/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibrationTool.h +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibrationTool.h @@ -31,6 +31,7 @@ #include "JetCalibTools/CalibrationMethods/GlobalSequentialCorrection.h" #include "JetCalibTools/CalibrationMethods/InsituDataCorrection.h" #include "JetCalibTools/CalibrationMethods/JMSCorrection.h" +#include "JetCalibTools/CalibrationMethods/JetSmearingCorrection.h" class JetPileupCorrection; class ResidualOffsetCorrection; @@ -38,9 +39,10 @@ class EtaJESCorrection; class GlobalSequentialCorrection; class InsituDataCorrection; class JMSCorrection; +class JetSmearingCorrection; class JetCalibrationTool - : virtual public ::JetCalibrationToolBase { + : public ::JetCalibrationToolBase { ASG_TOOL_CLASS2(JetCalibrationTool, IJetCalibrationTool, IJetModifier) @@ -69,6 +71,14 @@ public: virtual int modify(xAOD::JetContainer&) const; virtual int modifyJet(xAOD::Jet&) const; + + // Retrieve pTmax from in situ corrections + virtual VecD retrieveEtaIntercalPtMax(){return m_relInsituPtMax;} + virtual VecD retrieveAbsoluteInsituPtMax(){return m_absInsituPtMax;} + + // Get the nominal resolution + virtual StatusCode getNominalResolutionData(const xAOD::Jet& jet, double& resolution) const; + virtual StatusCode getNominalResolutionMC( const xAOD::Jet& jet, double& resolution) const; protected: /// This is where the actual calibration code goes. @@ -93,6 +103,7 @@ private: std::string m_config; std::string m_calibSeq; std::string m_calibAreaTag; + std::string m_originScale; bool m_devMode; bool m_isData; bool m_timeDependentCalib; @@ -115,6 +126,9 @@ private: bool m_doOrigin; bool m_doGSC; + // vector with pTmax of each in situ correction + VecD m_relInsituPtMax, m_absInsituPtMax; + //Class objects for each calibration step std::vector<JetCalibrationToolBase*> m_calibClasses; JetPileupCorrection * m_jetPileupCorr; @@ -123,6 +137,7 @@ private: InsituDataCorrection * m_insituDataCorr; std::vector<JetCalibrationToolBase*> m_insituTimeDependentCorr; JMSCorrection * m_jetMassCorr; + JetSmearingCorrection* m_jetSmearCorr; }; diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibrationToolBase.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibrationToolBase.h index 3c4f2f44e64..2ba12112b0b 100644 --- a/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibrationToolBase.h +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/JetCalibrationToolBase.h @@ -30,11 +30,10 @@ //Package includes #include "JetCalibTools/IJetCalibrationTool.h" -#include "JetCalibTools/JetCalibUtils.h" class JetCalibrationToolBase - : virtual public asg::AsgTool, - virtual public CP::CorrectionTool< xAOD::JetContainer >, + : public asg::AsgTool, + public CP::CorrectionTool< xAOD::JetContainer >, virtual public ::IJetCalibrationTool, virtual public ::IJetModifier, virtual public ::ISingleJetModifier @@ -77,6 +76,10 @@ class JetCalibrationToolBase virtual int modifyJet(xAOD::Jet&) const { return 0; } virtual void setUnitsGeV(bool useGeV) { if (useGeV) m_GeV=1; else m_GeV=1000; } + + // Retrieve pTmax from in situ corrections + virtual VecD retrieveEtaIntercalPtMax(){VecD tmp;return tmp;} + virtual VecD retrieveAbsoluteInsituPtMax(){VecD tmp;return tmp;} /////////////////////////////////////////////////////////////////// // Protected methods: diff --git a/Reconstruction/Jet/JetCalibTools/JetCalibTools/RootHelpers.h b/Reconstruction/Jet/JetCalibTools/JetCalibTools/RootHelpers.h new file mode 100644 index 00000000000..d591909d246 --- /dev/null +++ b/Reconstruction/Jet/JetCalibTools/JetCalibTools/RootHelpers.h @@ -0,0 +1,20 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +class TH1; +class TAxis; + +namespace RootHelpers +{ + +double Interpolate(const TH1* histo, const double x); + +double Interpolate(const TH1* histo, const double x, const double y); + +double Interpolate2D(const TH1* histo, const double x, const double y, const int xAxis, const int yAxis, const int otherDimBin); + +double Interpolate(const TH1* histo, const double x, const double y, const double z); + +} // end RootHelpers namespace + diff --git a/Reconstruction/Jet/JetCalibTools/Root/EtaJESCorrection.cxx b/Reconstruction/Jet/JetCalibTools/Root/EtaJESCorrection.cxx index 9ad06dd3abf..57cea675206 100644 --- a/Reconstruction/Jet/JetCalibTools/Root/EtaJESCorrection.cxx +++ b/Reconstruction/Jet/JetCalibTools/Root/EtaJESCorrection.cxx @@ -6,7 +6,7 @@ #include "PathResolver/PathResolver.h" EtaJESCorrection::EtaJESCorrection() - : asg::AsgTool( "EtaJESCorrection::EtaJESCorrection" ), JetCalibrationToolBase::JetCalibrationToolBase(), + : JetCalibrationToolBase::JetCalibrationToolBase("EtaJESCorrection::EtaJESCorrection"), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_mass(false), m_dev(false), m_minPt_JES(10), m_minPt_EtaCorr(8), m_maxE_EtaCorr(2500), m_lowPtExtrap(0), m_lowPtMinR(0.25), @@ -14,7 +14,7 @@ EtaJESCorrection::EtaJESCorrection() { } EtaJESCorrection::EtaJESCorrection(const std::string& name) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), + : JetCalibrationToolBase::JetCalibrationToolBase( name ), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_mass(false), m_dev(false), m_minPt_JES(10), m_minPt_EtaCorr(8), m_maxE_EtaCorr(2500), m_lowPtExtrap(0), m_lowPtMinR(0.25), @@ -22,7 +22,7 @@ EtaJESCorrection::EtaJESCorrection(const std::string& name) { } EtaJESCorrection::EtaJESCorrection(const std::string& name, TEnv * config, TString jetAlgo, TString calibAreaTag, bool mass, bool dev) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), + : JetCalibrationToolBase::JetCalibrationToolBase( name ), m_config(config), m_jetAlgo(jetAlgo), m_calibAreaTag(calibAreaTag), m_mass(mass), m_dev(dev), m_minPt_JES(10), m_minPt_EtaCorr(8), m_maxE_EtaCorr(2500), m_lowPtExtrap(0), m_lowPtMinR(0.25), @@ -43,8 +43,8 @@ StatusCode EtaJESCorrection::initializeTool(const std::string&) { //TString calibFile = FindFile(m_config->GetValue("AbsoluteJES.CalibFile","")); TString absoluteJESCalibFile = m_config->GetValue("AbsoluteJES.CalibFile",""); if(m_dev){ + absoluteJESCalibFile.Remove(0,33); absoluteJESCalibFile.Insert(0,"JetCalibTools/"); - absoluteJESCalibFile.Insert(28,m_calibAreaTag); } else{absoluteJESCalibFile.Insert(14,m_calibAreaTag);} TString calibFile = PathResolverFindCalibFile(absoluteJESCalibFile.Data()); diff --git a/Reconstruction/Jet/JetCalibTools/Root/GlobalSequentialCorrection.cxx b/Reconstruction/Jet/JetCalibTools/Root/GlobalSequentialCorrection.cxx index 5fa52f599a9..c8c38df5552 100644 --- a/Reconstruction/Jet/JetCalibTools/Root/GlobalSequentialCorrection.cxx +++ b/Reconstruction/Jet/JetCalibTools/Root/GlobalSequentialCorrection.cxx @@ -27,28 +27,28 @@ GlobalSequentialCorrection::GlobalSequentialCorrection() - : asg::AsgTool( "GlobalSequentialCorrection::GlobalSequentialCorrection" ), JetCalibrationToolBase::JetCalibrationToolBase(), + : JetCalibrationToolBase::JetCalibrationToolBase("GlobalSequentialCorrection::GlobalSequentialCorrection"), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false), m_binSize(0.1), m_depth(0), - m_trackWIDTHMaxEtaBin(25), m_nTrkMaxEtaBin(25), m_Tile0MaxEtaBin(17), m_EM3MaxEtaBin(35), m_chargedFractionMaxEtaBin(27), + m_trackWIDTHMaxEtaBin(25), m_nTrkMaxEtaBin(25), m_Tile0MaxEtaBin(17), m_EM3MaxEtaBin(35), m_chargedFractionMaxEtaBin(27), m_caloWIDTHMaxEtaBin(35), m_N90ConstituentsMaxEtaBin(35), m_punchThroughMinPt(50) { } GlobalSequentialCorrection::GlobalSequentialCorrection(const std::string& name) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), + : JetCalibrationToolBase::JetCalibrationToolBase( name ), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false), m_binSize(0.1), m_depth(0), - m_trackWIDTHMaxEtaBin(25), m_nTrkMaxEtaBin(25), m_Tile0MaxEtaBin(17), m_EM3MaxEtaBin(35), m_chargedFractionMaxEtaBin(27), + m_trackWIDTHMaxEtaBin(25), m_nTrkMaxEtaBin(25), m_Tile0MaxEtaBin(17), m_EM3MaxEtaBin(35), m_chargedFractionMaxEtaBin(27), m_caloWIDTHMaxEtaBin(35), m_N90ConstituentsMaxEtaBin(35), m_punchThroughMinPt(50) { } GlobalSequentialCorrection::GlobalSequentialCorrection(const std::string& name, TEnv * config, TString jetAlgo, TString calibAreaTag, bool dev) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), + : JetCalibrationToolBase::JetCalibrationToolBase( name ), m_config(config), m_jetAlgo(jetAlgo), m_calibAreaTag(calibAreaTag), m_dev(dev), m_binSize(0.1), m_depth(0), - m_trackWIDTHMaxEtaBin(25), m_nTrkMaxEtaBin(25), m_Tile0MaxEtaBin(17), m_EM3MaxEtaBin(35), m_chargedFractionMaxEtaBin(27), + m_trackWIDTHMaxEtaBin(25), m_nTrkMaxEtaBin(25), m_Tile0MaxEtaBin(17), m_EM3MaxEtaBin(35), m_chargedFractionMaxEtaBin(27), m_caloWIDTHMaxEtaBin(35), m_N90ConstituentsMaxEtaBin(35), m_punchThroughMinPt(50) { } @@ -63,6 +63,10 @@ StatusCode GlobalSequentialCorrection::initializeTool(const std::string&) { // Set m_PFlow if( m_jetAlgo == "AntiKt4EMPFlow" ) m_PFlow = true; else{m_PFlow=false;} + + // Set m_caloBased + if( m_jetAlgo == "AntiKt4EMTopoTrig" && !m_PFlow ) {m_caloBased = true; ATH_MSG_INFO("Using calo based GSC");} + else{m_caloBased = false;} m_jetStartScale = m_config->GetValue("GSCStartingScale","JetEtaJESScaleMomentum"); m_turnOffTrackCorrections = m_config->GetValue("TurnOffTrackCorrections", false); @@ -70,6 +74,13 @@ StatusCode GlobalSequentialCorrection::initializeTool(const std::string&) { m_turnOffEndpT = m_config->GetValue("TurnOffEndpT", 2000); m_pTResponseRequirementOff = m_config->GetValue("PTResponseRequirementOff", false); + // In release 21, the nTrk and trackWIDTH corrections are also included for PFlow jets + // The default is set to false to maintain the backwards compatibility + m_nTrkwTrk_4PFlow = m_config->GetValue("nTrkwTrk4PFlow", false); + + // For AFII calibrations, EM3 correction should be applied up to |eta|=3.2 + m_EM3MaxEtaBin = m_config->GetValue("EM3MaxEtaBin", 35); + if ( !m_config ) { ATH_MSG_FATAL("Config file not specified. Aborting."); return StatusCode::FAILURE; } if ( m_jetAlgo.EqualTo("") ) { ATH_MSG_FATAL("No jet algorithm specified. Aborting."); return StatusCode::FAILURE; } @@ -80,20 +91,29 @@ StatusCode GlobalSequentialCorrection::initializeTool(const std::string&) { return StatusCode::FAILURE; } if(m_dev){ + GSCFile.Remove(0,33); GSCFile.Insert(0,"JetCalibTools/"); - GSCFile.Insert(28,m_calibAreaTag); } else{GSCFile.Insert(14,m_calibAreaTag);} TString fileName = PathResolverFindCalibFile(GSCFile.Data()); TFile *inputFile = TFile::Open(fileName); - if (!inputFile) ATH_MSG_FATAL("Cannot open GSC factors file" << fileName); + if (!inputFile){ + ATH_MSG_FATAL("Cannot open GSC factors file" << fileName); + return StatusCode::FAILURE; + } TString depthString = m_config->GetValue("GSCDepth","Full"); - if ( !depthString.Contains("ChargedFraction") && !depthString.Contains("Tile0") && !depthString.Contains("EM3") && !depthString.Contains("nTrk") && !depthString.Contains("trackWIDTH") && !depthString.Contains("PunchThrough") && !depthString.Contains("Full") ) { + if ( !depthString.Contains("ChargedFraction") && !depthString.Contains("Tile0") && !depthString.Contains("EM3") && !depthString.Contains("nTrk") && !depthString.Contains("trackWIDTH") && !depthString.Contains("PunchThrough") && !depthString.Contains("N90Constituents") && !depthString.Contains("N90Constituents") && !depthString.Contains("caloWIDTH") && !depthString.Contains("Full") ) { ATH_MSG_FATAL("depthString flag not properly set, please check your config file."); return StatusCode::FAILURE; } + // Protection against requesting nTrk or trackWIDTH corrections for PFlow jets when m_nTrkwTrk_4PFlow is false + if ( !m_nTrkwTrk_4PFlow && (depthString.Contains("nTrk")||depthString.Contains("trackWIDTH")) && m_PFlow ){ + ATH_MSG_FATAL("depthString flag not properly set, please check your config file. nTrkwTrk4PFlow should be set to true to apply nTrk or trackWIDTH corrections to PFlow jets"); + return StatusCode::FAILURE; + } + //ATH_MSG_INFO(" for " << m_jetAlgo << " jets\n\n"); if ( depthString.Contains("PunchThrough") || depthString.Contains("Full") ) { @@ -102,7 +122,7 @@ StatusCode GlobalSequentialCorrection::initializeTool(const std::string&) { } //set the depth private variable, used to determine which parts of the GS calibration are applied - if( !m_PFlow ){ + if( !m_PFlow && !m_caloBased ){ if ( depthString.Contains("PunchThrough") || depthString.Contains("Full") ) m_depth = ApplyTile0 | ApplyEM3 | ApplynTrk | ApplytrackWIDTH | ApplyPunchThrough; else if ( depthString.Contains("trackWIDTH") ) m_depth = ApplyTile0 | ApplyEM3 | ApplynTrk | ApplytrackWIDTH; else if ( depthString.Contains("nTrk") ) m_depth = ApplyTile0 | ApplyEM3 | ApplynTrk; @@ -110,12 +130,30 @@ StatusCode GlobalSequentialCorrection::initializeTool(const std::string&) { else if ( depthString.Contains("Tile0") ) m_depth = ApplyTile0; else { ATH_MSG_FATAL("depthString flag not properly set, please check your config file."); return StatusCode::FAILURE; } } - else{ - if ( depthString.Contains("PunchThrough") || depthString.Contains("Full") ) m_depth = ApplyChargedFraction | ApplyTile0 | ApplyEM3 | ApplyPunchThrough; - else if ( depthString.Contains("EM3") ) m_depth = ApplyChargedFraction | ApplyTile0 | ApplyEM3; - else if ( depthString.Contains("Tile0") ) m_depth = ApplyChargedFraction | ApplyTile0; - else if ( depthString.Contains("ChargedFraction") ) m_depth = ApplyChargedFraction; - else { ATH_MSG_FATAL("depthString flag not properly set, please check your config file."); return StatusCode::FAILURE; } + else if (m_caloBased){ + if ( depthString.Contains("PunchThrough") || depthString.Contains("Full") ) m_depth = ApplyTile0 | ApplyEM3 | ApplyN90Constituents | ApplycaloWIDTH; + else if ( depthString.Contains("caloWIDTH") ) m_depth = ApplyTile0 | ApplyEM3 | ApplyN90Constituents | ApplycaloWIDTH; + else if ( depthString.Contains("N90Constituents") ) m_depth = ApplyTile0 | ApplyEM3 | ApplyN90Constituents; + else if ( depthString.Contains("EM3") ) m_depth = ApplyTile0 | ApplyEM3; + else if ( depthString.Contains("Tile0") ) m_depth = ApplyTile0; + else { ATH_MSG_FATAL("depthString flag for calo based GSC not properly set, please check your config file."); return StatusCode::FAILURE; } + } + else { // PFlow + if(!m_nTrkwTrk_4PFlow){ + if ( depthString.Contains("PunchThrough") || depthString.Contains("Full") ) m_depth = ApplyChargedFraction | ApplyTile0 | ApplyEM3 | ApplyPunchThrough; + else if ( depthString.Contains("EM3") ) m_depth = ApplyChargedFraction | ApplyTile0 | ApplyEM3; + else if ( depthString.Contains("Tile0") ) m_depth = ApplyChargedFraction | ApplyTile0; + else if ( depthString.Contains("ChargedFraction") ) m_depth = ApplyChargedFraction; + else { ATH_MSG_FATAL("depthString flag not properly set, please check your config file."); return StatusCode::FAILURE; } + } else { + if ( depthString.Contains("PunchThrough") || depthString.Contains("Full") ) m_depth = ApplyChargedFraction | ApplyTile0 | ApplyEM3 | ApplynTrk | ApplytrackWIDTH | ApplyPunchThrough; + else if ( depthString.Contains("trackWIDTH") ) m_depth = ApplyChargedFraction | ApplyTile0 | ApplyEM3 | ApplynTrk | ApplytrackWIDTH; + else if ( depthString.Contains("nTrk") ) m_depth = ApplyChargedFraction | ApplyTile0 | ApplyEM3 | ApplynTrk; + else if ( depthString.Contains("EM3") ) m_depth = ApplyChargedFraction | ApplyTile0 | ApplyEM3; + else if ( depthString.Contains("Tile0") ) m_depth = ApplyChargedFraction | ApplyTile0; + else if ( depthString.Contains("ChargedFraction") ) m_depth = ApplyChargedFraction; + else { ATH_MSG_FATAL("depthString flag not properly set, please check your config file."); return StatusCode::FAILURE; } + } } //Get a TList of TKeys pointing to the histograms contained in the ROOT file @@ -142,15 +180,19 @@ StatusCode GlobalSequentialCorrection::initializeTool(const std::string&) { m_respFactorstrackWIDTH.push_back( (TH2F*)JetCalibUtils::GetHisto2(inputFile,histoNames[ihisto]) ); else if ( histoNames[ihisto].Contains("PunchThrough") ) m_respFactorsPunchThrough.push_back( (TH2F*)JetCalibUtils::GetHisto2(inputFile,histoNames[ihisto]) ); + else if ( histoNames[ihisto].Contains("N90Constituents") && m_respFactorsN90Constituents.size() < m_N90ConstituentsMaxEtaBin) + m_respFactorsN90Constituents.push_back( (TH2F*)JetCalibUtils::GetHisto2(inputFile,histoNames[ihisto]) ); + else if ( histoNames[ihisto].Contains("caloWIDTH") && m_respFactorscaloWIDTH.size() < m_caloWIDTHMaxEtaBin) + m_respFactorscaloWIDTH.push_back( (TH2F*)JetCalibUtils::GetHisto2(inputFile,histoNames[ihisto]) ); } //Make sure we put something in the vectors of TH2Fs - if( !m_PFlow ){ + if( !m_PFlow && !m_caloBased ){ if ( (m_depth & ApplyEM3) && m_respFactorsEM3.size() < 3 ) { ATH_MSG_FATAL("Vector of EM3 histograms may be empty. Please check your GSCFactors file: " << GSCFile); return StatusCode::FAILURE; } - else if ( (m_depth & ApplynTrk) &&m_respFactorsnTrk.size() < 3 ) { + else if ( (m_depth & ApplynTrk) && m_respFactorsnTrk.size() < 3 ) { ATH_MSG_FATAL("Vector of nTrk histograms may be empty. Please check your GSCFactors file: " << GSCFile); return StatusCode::FAILURE; } @@ -168,6 +210,25 @@ StatusCode GlobalSequentialCorrection::initializeTool(const std::string&) { } else ATH_MSG_INFO("GSC Tool has been initialized with binning and eta fit factors from: " << fileName); } + else if (m_caloBased) { + if ( (m_depth & ApplyEM3) && m_respFactorsEM3.size() < 3 ) { + ATH_MSG_FATAL("Vector of EM3 histograms may be empty. Please check your GSCFactors file: " << GSCFile); + return StatusCode::FAILURE; + } + else if ( (m_depth & ApplyN90Constituents) && m_respFactorsN90Constituents.size() < 3 ) { + ATH_MSG_FATAL("Vector of N90Constituents histograms may be empty. Please check your GSCFactors file: " << GSCFile); + return StatusCode::FAILURE; + } + else if ( (m_depth & ApplyTile0) && m_respFactorsTile0.size() < 3 ) { + ATH_MSG_FATAL("Vector of Tile0 histograms may be empty. Please check your GSCFactors file: " << GSCFile); + return StatusCode::FAILURE; + } + else if ( (m_depth & ApplycaloWIDTH) && m_respFactorscaloWIDTH.size() < 3 ) { + ATH_MSG_FATAL("Vector of caloWIDTH histograms may be empty. Please check your GSCFactors file: " << GSCFile); + return StatusCode::FAILURE; + } + else ATH_MSG_INFO("GSC Tool has been initialized with binning and eta fit factors from: " << fileName << "\n"); + } else{ if ( (m_depth & ApplyChargedFraction) && m_respFactorsChargedFraction.size() < 3 ) { ATH_MSG_FATAL("Vector of ChargedFraction histograms may be empty. Please check your GSCFactors file: " << GSCFile); @@ -181,6 +242,14 @@ StatusCode GlobalSequentialCorrection::initializeTool(const std::string&) { ATH_MSG_FATAL("Vector of Tile0 histograms may be empty. Please check your GSCFactors file: " << GSCFile); return StatusCode::FAILURE; } + else if ( m_nTrkwTrk_4PFlow && (m_depth & ApplynTrk) && m_respFactorsnTrk.size() < 3 ) { + ATH_MSG_FATAL("Vector of nTrk histograms may be empty. Please check your GSCFactors file: " << GSCFile); + return StatusCode::FAILURE; + } + else if ( m_nTrkwTrk_4PFlow && (m_depth & ApplytrackWIDTH) && m_respFactorstrackWIDTH.size() < 3 ) { + ATH_MSG_FATAL("Vector of trackWIDTH histograms may be empty. Please check your GSCFactors file: " << GSCFile); + return StatusCode::FAILURE; + } else if ( (m_depth & ApplyPunchThrough) && m_respFactorsPunchThrough.size() < 2 ) { ATH_MSG_FATAL("Vector of PunchThrough histograms may be empty. Please check your GSCFactors file: " << GSCFile); return StatusCode::FAILURE; @@ -279,22 +348,36 @@ double GlobalSequentialCorrection::getPunchThroughResponse(double E, double eta_ //this could probably be improved, but to avoid a seg fault... return 1; } - double PunchThroughResponse = readPtJetPropertyHisto(E,log(Nsegments),m_respFactorsPunchThrough[etabin]); + double PunchThroughResponse = readPtJetPropertyHisto(E,Nsegments,m_respFactorsPunchThrough[etabin]); if(!m_pTResponseRequirementOff && PunchThroughResponse>1) return 1; return PunchThroughResponse; } +double GlobalSequentialCorrection::getCaloWIDTHResponse(double pT, uint etabin, double caloWIDTH) const { + if (caloWIDTH<=0) return 1; + if ( etabin >= m_respFactorscaloWIDTH.size() ) return 1.; + double caloWIDTHResponse = readPtJetPropertyHisto(pT, caloWIDTH, m_respFactorscaloWIDTH[etabin]); + return caloWIDTHResponse; +} + +double GlobalSequentialCorrection::getN90ConstituentsResponse(double pT, uint etabin, double N90Constituents) const { + if (N90Constituents<=0) return 1; // N90Constituents < 0 is unphysical, N90Constituents = 0 is a special case, so return 1 for N90Constituents <= 0 + if ( etabin >= m_respFactorsN90Constituents.size() ) return 1.; + double N90ConstituentsResponse = readPtJetPropertyHisto(pT, N90Constituents, m_respFactorsN90Constituents[etabin]); + return N90ConstituentsResponse; +} + double GlobalSequentialCorrection::getGSCCorrection(xAOD::JetFourMom_t jetP4, double eta, - double trackWIDTH, double nTrk, double Tile0, double EM3, int Nsegments, double ChargedFraction) const { + double trackWIDTH, double nTrk, double Tile0, double EM3, int Nsegments, double ChargedFraction, double caloWIDTH, double N90Constituents) const { //eta bins have size m_binSize=0.1 and are numbered sequentially from 0, so |eta|=2.4 is in eta bin #24 int etabin = eta/m_binSize; double Corr=1; //Using bit sequence check to determine which GS corrections to apply. - if( !m_PFlow ){ + if( !m_PFlow && !m_caloBased ){ if (m_depth & ApplyTile0) Corr*=1./getTile0Response(jetP4.pt()/m_GeV, etabin, Tile0); if (m_depth & ApplyEM3) Corr*=1./getEM3Response(jetP4.pt()/m_GeV*Corr, etabin, EM3); - if (m_depth & ApplynTrk) Corr*=1/getNTrkResponse(jetP4.pt()/m_GeV*Corr, etabin, nTrk); - if (m_depth & ApplytrackWIDTH) Corr*=1/getTrackWIDTHResponse(jetP4.pt()/m_GeV*Corr,etabin,trackWIDTH); + if (m_depth & ApplynTrk) Corr*=1./getNTrkResponse(jetP4.pt()/m_GeV*Corr, etabin, nTrk); + if (m_depth & ApplytrackWIDTH) Corr*=1./getTrackWIDTHResponse(jetP4.pt()/m_GeV*Corr,etabin,trackWIDTH); if ( jetP4.pt() < m_punchThroughMinPt ) return Corr; //Applying punch through correction to low pT jets introduces a bias, default threshold is 50 GeV //eta binning for the punch through correction differs from the rest of the GSC, so the eta bin is determined in the GetPunchThroughResponse method else if (m_depth & ApplyPunchThrough) { @@ -302,10 +385,18 @@ double GlobalSequentialCorrection::getGSCCorrection(xAOD::JetFourMom_t jetP4, do Corr*=1/getPunchThroughResponse(jetP4.e()/m_GeV,eta,Nsegments); } } - else{ - if (m_depth & ApplyChargedFraction) Corr*=1./getChargedFractionResponse(jetP4.pt()/m_GeV, etabin, ChargedFraction); - if (m_depth & ApplyTile0) Corr*=1./getTile0Response(jetP4.pt()/m_GeV*Corr, etabin, Tile0); - if (m_depth & ApplyEM3) Corr*=1./getEM3Response(jetP4.pt()/m_GeV*Corr, etabin, EM3); + else if (m_caloBased){ + if (m_depth & ApplyTile0) Corr*=1./getTile0Response(jetP4.pt()/m_GeV*Corr, etabin, Tile0); + if (m_depth & ApplyEM3) Corr*=1./getEM3Response(jetP4.pt()/m_GeV*Corr, etabin, EM3); + if (m_depth & ApplyN90Constituents) Corr*=1/getN90ConstituentsResponse(jetP4.pt()/m_GeV*Corr, etabin, N90Constituents); + if (m_depth & ApplycaloWIDTH) Corr*=1/getCaloWIDTHResponse(jetP4.pt()/m_GeV*Corr,etabin,caloWIDTH); + } + else{ // PFlow + if (m_depth & ApplyChargedFraction) Corr*=1./getChargedFractionResponse(jetP4.pt()/m_GeV, etabin, ChargedFraction); + if (m_depth & ApplyTile0) Corr*=1./getTile0Response(jetP4.pt()/m_GeV*Corr, etabin, Tile0); + if (m_depth & ApplyEM3) Corr*=1./getEM3Response(jetP4.pt()/m_GeV*Corr, etabin, EM3); + if ( m_nTrkwTrk_4PFlow && (m_depth & ApplynTrk) ) Corr*=1./getNTrkResponse(jetP4.pt()/m_GeV*Corr, etabin, nTrk); + if ( m_nTrkwTrk_4PFlow && (m_depth & ApplytrackWIDTH) ) Corr*=1./getTrackWIDTHResponse(jetP4.pt()/m_GeV*Corr,etabin,trackWIDTH); if ( jetP4.pt() < m_punchThroughMinPt ) return Corr; //Applying punch through correction to low pT jets introduces a bias, default threshold is 50 GeV //eta binning for the punch through correction differs from the rest of the GSC, so the eta bin is determined in the GetPunchThroughResponse method else if (m_depth & ApplyPunchThrough) { @@ -412,7 +503,19 @@ StatusCode GlobalSequentialCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInf float EM3 = (samplingFrac[3]+samplingFrac[7])/jetE_constitscale; float Tile0 = (samplingFrac[12]+samplingFrac[18])/jetE_constitscale; - xAOD::JetFourMom_t calibP4 = jetStartP4*getGSCCorrection( jetStartP4, fabs(detectorEta), trackWIDTHPV0, nTrkPV0, Tile0, EM3, Nsegments, ChargedFraction ); + double N90Constituents = 0; + double caloWIDTH = 0; + if (m_caloBased) { + if (m_depth & ApplyN90Constituents) { + //numConstituents = jet.numConstituents(); + N90Constituents = jet.getAttribute<float>("N90Constituents"); + } + if (m_depth & ApplycaloWIDTH) { + caloWIDTH = jet.getAttribute<double>("Width"); + } + } + + xAOD::JetFourMom_t calibP4 = jetStartP4*getGSCCorrection( jetStartP4, fabs(detectorEta), trackWIDTHPV0, nTrkPV0, Tile0, EM3, Nsegments, ChargedFraction, caloWIDTH, N90Constituents); //Transfer calibrated jet properties to the Jet object jet.setAttribute<xAOD::JetFourMom_t>("JetGSCScaleMomentum",calibP4); diff --git a/Reconstruction/Jet/JetCalibTools/Root/InsituDataCorrection.cxx b/Reconstruction/Jet/JetCalibTools/Root/InsituDataCorrection.cxx index a2a53831206..254edd4b424 100644 --- a/Reconstruction/Jet/JetCalibTools/Root/InsituDataCorrection.cxx +++ b/Reconstruction/Jet/JetCalibTools/Root/InsituDataCorrection.cxx @@ -6,17 +6,17 @@ #include "PathResolver/PathResolver.h" InsituDataCorrection::InsituDataCorrection() - : asg::AsgTool( "InsituDataCorrection::InsituDataCorrection" ), JetCalibrationToolBase::JetCalibrationToolBase(), + : JetCalibrationToolBase::JetCalibrationToolBase("InsituDataCorrection::InsituDataCorrection"), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false), m_insituCorr(NULL), m_insituCorr_ResidualMCbased(NULL) { } InsituDataCorrection::InsituDataCorrection(const std::string& name) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), + : JetCalibrationToolBase::JetCalibrationToolBase( name ), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false), m_insituCorr(NULL), m_insituCorr_ResidualMCbased(NULL) { } InsituDataCorrection::InsituDataCorrection(const std::string& name, TEnv * config, TString jetAlgo, TString calibAreaTag, bool dev) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), + : JetCalibrationToolBase::JetCalibrationToolBase( name ), m_config(config), m_jetAlgo(jetAlgo), m_calibAreaTag(calibAreaTag), m_dev(dev), m_insituCorr(NULL), m_insituCorr_ResidualMCbased(NULL) { } @@ -57,8 +57,8 @@ StatusCode InsituDataCorrection::initializeTool(const std::string&) { //Find the absolute path to the insitu root file if ( !insitu_filename.EqualTo("None") ){ if(m_dev){ + insitu_filename.Remove(0,32); insitu_filename.Insert(0,"JetCalibTools/"); - insitu_filename.Insert(28,m_calibAreaTag); } else{insitu_filename.Insert(14,m_calibAreaTag);} insitu_filename=PathResolverFindCalibFile(insitu_filename.Data()); @@ -79,6 +79,10 @@ StatusCode InsituDataCorrection::initializeTool(const std::string&) { } else { gROOT->cd(); + // save pTmax of the relative and absolute in situ calibrations + m_relhistoPtMax = rel_histo->GetXaxis()->GetBinLowEdge(rel_histo->GetNbinsX()+1); + m_abshistoPtMax = abs_histo->GetBinLowEdge(abs_histo->GetNbinsX()+1); + // combine in situ calibrations m_insituCorr = combineCalibration(rel_histo,abs_histo); m_insituEtaMax = m_insituCorr->GetYaxis()->GetBinLowEdge(m_insituCorr->GetNbinsY()+1); m_insituPtMin = m_insituCorr->GetXaxis()->GetBinLowEdge(1); @@ -132,11 +136,6 @@ StatusCode InsituDataCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo&) co if(m_applyRelativeandAbsoluteInsitu) calibP4=calibP4*getInsituCorr( jetStartP4.pt(), detectorEta, "RelativeAbs" ); // If the jet mass calibration was applied the calibrated mass needs to be used! - if(m_jetStartScale.Contains("JetJMSScaleMomentum")){ - TLorentzVector TLVjet; - TLVjet.SetPtEtaPhiM( calibP4.pt(), jetStartP4.eta(), jetStartP4.phi(), jetStartP4.mass() ); // mass at JMS - calibP4.SetPxPyPzE( TLVjet.Px(), TLVjet.Py(), TLVjet.Pz(), TLVjet.E() ); - } //Transfer calibrated jet properties to the Jet object jet.setAttribute<xAOD::JetFourMom_t>("JetInsituScaleMomentum",calibP4); diff --git a/Reconstruction/Jet/JetCalibTools/Root/JMSCorrection.cxx b/Reconstruction/Jet/JetCalibTools/Root/JMSCorrection.cxx index 94320a5960a..5ec72f9664b 100644 --- a/Reconstruction/Jet/JetCalibTools/Root/JMSCorrection.cxx +++ b/Reconstruction/Jet/JetCalibTools/Root/JMSCorrection.cxx @@ -9,31 +9,94 @@ * */ +#include <cmath> #include <TKey.h> #include "JetCalibTools/CalibrationMethods/JMSCorrection.h" #include "PathResolver/PathResolver.h" +#include "JetCalibTools/RootHelpers.h" JMSCorrection::JMSCorrection() - : asg::AsgTool( "JMSCorrection::JMSCorrection" ), JetCalibrationToolBase::JetCalibrationToolBase(), - m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false) + : JetCalibrationToolBase::JetCalibrationToolBase("JMSCorrection::JMSCorrection"), + m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false), + m_respFactorMass3D(NULL), m_respFactorTrackAssistedMass3D(NULL), + m_caloResolutionMassCombination3D(NULL), m_taResolutionMassCombination3D(NULL), + m_correlationMapMassCombination3D(NULL) { } JMSCorrection::JMSCorrection(const std::string& name) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), - m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false) + : JetCalibrationToolBase::JetCalibrationToolBase( name ), + m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false), + m_respFactorMass3D(NULL), m_respFactorTrackAssistedMass3D(NULL), + m_caloResolutionMassCombination3D(NULL), m_taResolutionMassCombination3D(NULL), + m_correlationMapMassCombination3D(NULL) { } JMSCorrection::JMSCorrection(const std::string& name, TEnv * config, TString jetAlgo, TString calibAreaTag, bool dev) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), - m_config(config), m_jetAlgo(jetAlgo), m_calibAreaTag(calibAreaTag), m_dev(dev) + : JetCalibrationToolBase::JetCalibrationToolBase( name ), + m_config(config), m_jetAlgo(jetAlgo), m_calibAreaTag(calibAreaTag), m_dev(dev), + m_respFactorMass3D(NULL), m_respFactorTrackAssistedMass3D(NULL), + m_caloResolutionMassCombination3D(NULL), m_taResolutionMassCombination3D(NULL), + m_correlationMapMassCombination3D(NULL) { } JMSCorrection::~JMSCorrection() { + if (m_use3Dhisto) + { + // Free 3D histograms + if (m_respFactorMass3D) + { + delete m_respFactorMass3D; + m_respFactorMass3D = NULL; + } + if (m_respFactorTrackAssistedMass3D) + { + delete m_respFactorTrackAssistedMass3D; + m_respFactorTrackAssistedMass3D = NULL; + } + if (m_caloResolutionMassCombination3D) + { + delete m_caloResolutionMassCombination3D; + m_caloResolutionMassCombination3D = NULL; + } + if (m_taResolutionMassCombination3D) + { + delete m_taResolutionMassCombination3D; + m_taResolutionMassCombination3D = NULL; + } + if (m_correlationMapMassCombination3D) + { + delete m_correlationMapMassCombination3D; + m_correlationMapMassCombination3D = NULL; + } + } + { + // Free 2D histograms + for (TH2F* histo : m_respFactorsMass) + delete histo; + m_respFactorsMass.clear(); + + for (TH2F* histo : m_respFactorsTrackAssistedMass) + delete histo; + m_respFactorsTrackAssistedMass.clear(); + + for (TH2D* histo : m_caloResolutionMassCombination) + delete histo; + m_caloResolutionMassCombination.clear(); + + for (TH2D* histo : m_taResolutionMassCombination) + delete histo; + m_taResolutionMassCombination.clear(); + + for (TH2D* histo : m_correlationMapMassCombination) + delete histo; + m_correlationMapMassCombination.clear(); + } + } StatusCode JMSCorrection::initializeTool(const std::string&) { @@ -52,6 +115,15 @@ StatusCode JMSCorrection::initializeTool(const std::string&) { if ( m_jetAlgo.EqualTo("") ) { ATH_MSG_FATAL("No jet algorithm specified. Aborting."); return StatusCode::FAILURE; } + + // Check if we are reading 2D histograms (one per eta bin) or 3D histograms + // 3D histograms allow for interpolation also across the eta dimension + // Defaults to "false" (use 2D) for backwards compatibility + // *Note* that it is assumed the calo and TA masses use the same histogram dimensionality + m_use3Dhisto = m_config->GetValue("MassCalibrationIs3D",false); + + + //find the ROOT file containing response histograms, path comes from the config file. TString JMSFile = m_config->GetValue("MassCalibrationFile","empty"); if ( JMSFile.EqualTo("empty") ) { @@ -59,8 +131,8 @@ StatusCode JMSCorrection::initializeTool(const std::string&) { return StatusCode::FAILURE; } if(m_dev){ + JMSFile.Remove(0,33); JMSFile.Insert(0,"JetCalibTools/"); - JMSFile.Insert(28,m_calibAreaTag); } else{JMSFile.Insert(14,m_calibAreaTag);} TString fileName = PathResolverFindCalibFile(JMSFile.Data()); @@ -72,7 +144,7 @@ StatusCode JMSCorrection::initializeTool(const std::string&) { //ATH_MSG_INFO(" for " << m_jetAlgo << " jets\n\n"); - setMassEtaBins( JetCalibUtils::VectorizeD( m_config->GetValue("MassEtaBins","") ) ); + if (!m_use3Dhisto) setMassEtaBins( JetCalibUtils::VectorizeD( m_config->GetValue("MassEtaBins","") ) ); //Get a TList of TKeys pointing to the histograms contained in the ROOT file inputFile->cd(); @@ -81,14 +153,25 @@ StatusCode JMSCorrection::initializeTool(const std::string&) { TIter ikeys(keys); while ( TKey *iterobj = (TKey*)ikeys() ) { TString histoName = iterobj->GetName(); - if ( histoName.Contains(m_jetAlgo) ) m_respFactorsMass.push_back( (TH2F*)JetCalibUtils::GetHisto2(inputFile,histoName.Data()) ); + if ( histoName.Contains(m_jetAlgo) ) + { + if (m_use3Dhisto) + m_respFactorMass3D = dynamic_cast<TH3F*>(JetCalibUtils::GetHisto3(inputFile,histoName.Data())); + else + m_respFactorsMass.push_back( (TH2F*)JetCalibUtils::GetHisto2(inputFile,histoName.Data()) ); + } } - //Make sure we put something in the vector of TH2Fs - if ( m_respFactorsMass.size() < 3 ) { + //Make sure we put something in the vector of TH2Fs or we filled the TH3F + if ( !m_use3Dhisto && m_respFactorsMass.size() < 3 ) { ATH_MSG_FATAL("Vector of mass correction histograms may be empty. Please check your mass calibration file: " << JMSFile); return StatusCode::FAILURE; } + else if ( m_use3Dhisto && !m_respFactorMass3D) + { + ATH_MSG_FATAL("3D mass correction histogram may be missing. Please check your mass calibration file: " << JMSFile); + return StatusCode::FAILURE; + } else ATH_MSG_INFO("JMS Tool has been initialized with binning and eta fit factors from: " << fileName); // Shoulb be applied the mass combination? @@ -108,8 +191,8 @@ StatusCode JMSCorrection::initializeTool(const std::string&) { return StatusCode::FAILURE; } if(m_dev){ + JMS_TrackAssisted_File.Remove(0,33); JMS_TrackAssisted_File.Insert(0,"JetCalibTools/"); - JMS_TrackAssisted_File.Insert(28,m_calibAreaTag); } else{JMS_TrackAssisted_File.Insert(14,m_calibAreaTag);} file_trkAssisted_Name = PathResolverFindCalibFile(JMS_TrackAssisted_File.Data()); @@ -128,14 +211,25 @@ StatusCode JMSCorrection::initializeTool(const std::string&) { TIter ikeys_trkAssisted(keys_trkAssisted); while ( TKey *iterobj = (TKey*)ikeys_trkAssisted() ) { TString histoName = iterobj->GetName(); - if ( histoName.Contains(m_jetAlgo) ) m_respFactorsTrackAssistedMass.push_back( (TH2F*)JetCalibUtils::GetHisto2(inputFile_trkAssisted,histoName.Data()) ); + if ( histoName.Contains(m_jetAlgo) ) + { + if (m_use3Dhisto) + m_respFactorTrackAssistedMass3D = dynamic_cast<TH3F*>(JetCalibUtils::GetHisto3(inputFile_trkAssisted,histoName.Data())); + else + m_respFactorsTrackAssistedMass.push_back( (TH2F*)JetCalibUtils::GetHisto2(inputFile_trkAssisted,histoName.Data()) ); + } } //Make sure we put something in the vector of TH2Fs - if ( m_respFactorsTrackAssistedMass.size() < 3 ) { + if ( !m_use3Dhisto && m_respFactorsTrackAssistedMass.size() < 3 ) { ATH_MSG_FATAL("Vector of track assisted mass correction histograms may be empty. Please check your track assisted mass calibration file: " << JMSFile); return StatusCode::FAILURE; } + else if ( m_use3Dhisto && !m_respFactorTrackAssistedMass3D) + { + ATH_MSG_FATAL("3D track assisted mass correction histogram may be missing. Please check your mass calibration file: " << JMSFile); + return StatusCode::FAILURE; + } else ATH_MSG_INFO("JMS Tool has been initialized with binning and eta fit factors from: " << file_trkAssisted_Name); } @@ -151,8 +245,8 @@ StatusCode JMSCorrection::initializeTool(const std::string&) { return StatusCode::FAILURE; } if(m_dev){ + Combination_File.Remove(0,33); Combination_File.Insert(0,"JetCalibTools/"); - Combination_File.Insert(28,m_calibAreaTag); } else{Combination_File.Insert(14,m_calibAreaTag);} file_combination_Name = PathResolverFindCalibFile(Combination_File.Data()); @@ -162,7 +256,8 @@ StatusCode JMSCorrection::initializeTool(const std::string&) { return StatusCode::FAILURE; } - setMassCombinationEtaBins( JetCalibUtils::VectorizeD( m_config->GetValue("MassCombinationEtaBins","") ) ); + if (!m_use3Dhisto) + setMassCombinationEtaBins( JetCalibUtils::VectorizeD( m_config->GetValue("MassCombinationEtaBins","") ) ); // Identify which object is being tagged (QCD, Top, WZ, Hbb) TString combObj = ""; @@ -182,59 +277,201 @@ StatusCode JMSCorrection::initializeTool(const std::string&) { TIter ikeys_combination(keys_combination); while ( TKey *iterobj = (TKey*)ikeys_combination() ) { TString histoName = iterobj->GetName(); - if ( histoName.Contains("CaloMass") && histoName.Contains(combObj.Data()) ) m_caloResolutionMassCombination.push_back( (TH2D*)JetCalibUtils::GetHisto2(inputFile_combination,histoName.Data()) ); - if ( histoName.Contains("TAMass") && histoName.Contains(combObj.Data()) ) m_taResolutionMassCombination.push_back( (TH2D*)JetCalibUtils::GetHisto2(inputFile_combination,histoName.Data()) ); - if ( histoName.Contains("Correlation") && histoName.Contains(combObj.Data()) ) m_correlationMapMassCombination.push_back( (TH2D*)JetCalibUtils::GetHisto2(inputFile_combination,histoName.Data()) ); + if ( histoName.Contains("CaloMass") && histoName.Contains(combObj.Data()) ) + { + if (!m_use3Dhisto) + m_caloResolutionMassCombination.push_back( (TH2D*)JetCalibUtils::GetHisto2(inputFile_combination,histoName.Data()) ); + else + m_caloResolutionMassCombination3D = (TH3D*)JetCalibUtils::GetHisto3(inputFile_combination,histoName.Data()); + } + if ( histoName.Contains("TAMass") && histoName.Contains(combObj.Data()) ) + { + if (!m_use3Dhisto) + m_taResolutionMassCombination.push_back( (TH2D*)JetCalibUtils::GetHisto2(inputFile_combination,histoName.Data()) ); + else + m_taResolutionMassCombination3D = (TH3D*)JetCalibUtils::GetHisto3(inputFile_combination,histoName.Data()); + } + if ( histoName.Contains("Correlation") && histoName.Contains(combObj.Data()) ) + { + if (!m_use3Dhisto) + m_correlationMapMassCombination.push_back( (TH2D*)JetCalibUtils::GetHisto2(inputFile_combination,histoName.Data()) ); + else + m_correlationMapMassCombination3D = (TH3D*)JetCalibUtils::GetHisto3(inputFile_combination,histoName.Data()); + } } - //Make sure we put something in the vector of TH2Ds - if ( m_caloResolutionMassCombination.size() < 1 ) { - ATH_MSG_FATAL("Vector of mass combination histograms with calo factors may be empty. Please check your mass combination file: " << JMSFile); - return StatusCode::FAILURE; + //Make sure we put something in the vector of TH2Ds OR filled the TH3s + if ( !m_use3Dhisto) + { + if ( m_caloResolutionMassCombination.size() < 1 ) { + ATH_MSG_FATAL("Vector of mass combination histograms with calo factors may be empty. Please check your mass combination file: " << JMSFile); + return StatusCode::FAILURE; + } + else if ( m_taResolutionMassCombination.size() < 1 ) { + ATH_MSG_FATAL("Vector of mass combination histograms with trk-assisted factors may be empty. Please check your mass combination file: " << JMSFile); + return StatusCode::FAILURE; + } + } + else + { + if (!m_caloResolutionMassCombination3D) + { + ATH_MSG_FATAL("Mass combination 3D histogram with calo factors was not filled. Please check your mass combination file: " << JMSFile); + return StatusCode::FAILURE; + } + else if (!m_taResolutionMassCombination3D) + { + ATH_MSG_FATAL("Mass combination 3D histogram with trk-assisted factors was not filled. Please check your mass combination file: " << JMSFile); + return StatusCode::FAILURE; + } } - else if ( m_taResolutionMassCombination.size() < 1 ) { - ATH_MSG_FATAL("Vector of mass combination histograms with trk-assisted factors may be empty. Please check your mass combination file: " << JMSFile); + + ATH_MSG_INFO("JMS Tool has been initialized with mass combination weights from: " << file_combination_Name); + } + + // Determine the binning strategy + // History is to use pt_mass_eta, with many past config files that don't specify + // As such, if nothing is specified, assume pt_mass_eta + // If something is specified and it's not understood, then that's a failure + // *Note* that it is assumed the calo and TA masses use the same binning parametrization + TString binParamString = m_config->GetValue("JMSBinningParam",""); + if (binParamString == "") + { + m_binParam = BinningParam::pt_mass_eta; + ATH_MSG_INFO("JMS Tool will use the implied pt_mass_eta binning strategy"); + } + else + { + // Check if we recognize what was specified + if (!binParamString.CompareTo("pt_mass_eta",TString::kIgnoreCase)) + m_binParam = BinningParam::pt_mass_eta; + else if (!binParamString.CompareTo("e_LOGmOe_eta",TString::kIgnoreCase)) + m_binParam = BinningParam::e_LOGmOe_eta; + else if (!binParamString.CompareTo("e_LOGmOet_eta",TString::kIgnoreCase)) + m_binParam = BinningParam::e_LOGmOet_eta; + else if (!binParamString.CompareTo("e_LOGmOpt_eta",TString::kIgnoreCase)) + m_binParam = BinningParam::e_LOGmOpt_eta; + else if (!binParamString.CompareTo("et_LOGmOet_eta",TString::kIgnoreCase)) + m_binParam = BinningParam::et_LOGmOet_eta; + else + { + // Failed to determine what was specified + ATH_MSG_FATAL("JMSBinningParam was specified, but input was not understood: " << binParamString); return StatusCode::FAILURE; } - else ATH_MSG_INFO("JMS Tool has been initialized with mass combination weights from: " << file_combination_Name); + ATH_MSG_INFO("JMS Tool will use the " << binParamString << " binning strategy"); } + + return StatusCode::SUCCESS; } +float JMSCorrection::getMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const +{ + const double pTMax = m_respFactorMass3D->GetXaxis()->GetBinLowEdge(m_respFactorMass3D->GetNbinsX()+1); + const double pTMin = m_respFactorMass3D->GetXaxis()->GetBinLowEdge(1); + const double massMax = m_respFactorMass3D->GetYaxis()->GetBinLowEdge(m_respFactorMass3D->GetNbinsY()+1); + const double massMin = m_respFactorMass3D->GetYaxis()->GetBinLowEdge(1); + const double etaMax = m_respFactorMass3D->GetZaxis()->GetBinLowEdge(m_respFactorMass3D->GetNbinsZ()+1); + const double etaMin = m_respFactorMass3D->GetZaxis()->GetBinLowEdge(1); + if ( pT_uncorr >= pTMax) pT_uncorr = pTMax-1e-6; // so it fits the up-most pt-bin + if ( pT_uncorr <= m_pTMinCorr ) return 1; // no correction + if ( pT_uncorr <= pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(mass_uncorr)) return 1; // no correction if the input is NaN, can happen for log(X) + if ( mass_uncorr >= massMax ) mass_uncorr = massMax-1e-6; //so it fits the up-most m-bin + if ( mass_uncorr <= massMin ) mass_uncorr = massMin+1e-6; //so it fits the low-most m-bin + if ( eta >= etaMax) eta = etaMax-1e-6; // so it fits the up-most eta-bin + if ( eta <= etaMin) eta = etaMin+1e-6; // so it fits the low-most eta-bin + + float mass_corr = RootHelpers::Interpolate(m_respFactorMass3D,pT_uncorr,mass_uncorr,eta); + + return mass_corr; +} + float JMSCorrection::getMassCorr(double pT_uncorr, double mass_uncorr, int etabin) const { // Asymptotic values - double pTMax = m_respFactorsMass[etabin]->GetXaxis()->GetBinLowEdge(m_respFactorsMass[etabin]->GetNbinsX()+1); - double pTMin = m_respFactorsMass[etabin]->GetXaxis()->GetBinLowEdge(1); - double massMax = m_respFactorsMass[etabin]->GetYaxis()->GetBinLowEdge(m_respFactorsMass[etabin]->GetNbinsY()+1); + const double pTMax = m_respFactorsMass[etabin]->GetXaxis()->GetBinLowEdge(m_respFactorsMass[etabin]->GetNbinsX()+1); + const double pTMin = m_respFactorsMass[etabin]->GetXaxis()->GetBinLowEdge(1); + const double massMax = m_respFactorsMass[etabin]->GetYaxis()->GetBinLowEdge(m_respFactorsMass[etabin]->GetNbinsY()+1); + const double massMin = m_respFactorsMass[etabin]->GetYaxis()->GetBinLowEdge(1); if ( pT_uncorr > pTMax ) pT_uncorr = pTMax-1e-6 ; //so it fits the up-most pt-bin if ( pT_uncorr < m_pTMinCorr ) return 1; // no correction if ( pT_uncorr < pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(mass_uncorr)) return 1; // no correction if the input is NaN, can happen for log(X) if ( mass_uncorr > massMax ) mass_uncorr = massMax-1e-6; //so it fits the up-most m-bin + if ( mass_uncorr < massMin ) mass_uncorr = massMin+1e-6; //so it fits the low-most m-bin float mass_corr = m_respFactorsMass[etabin]->Interpolate( pT_uncorr, mass_uncorr ); return mass_corr; } +float JMSCorrection::getTrackAssistedMassCorr3D(double pT_uncorr, double mass_uncorr, double eta) const +{ + const double pTMax = m_respFactorTrackAssistedMass3D->GetXaxis()->GetBinLowEdge(m_respFactorTrackAssistedMass3D->GetNbinsX()+1); + const double pTMin = m_respFactorTrackAssistedMass3D->GetXaxis()->GetBinLowEdge(1); + const double massMax = m_respFactorTrackAssistedMass3D->GetYaxis()->GetBinLowEdge(m_respFactorTrackAssistedMass3D->GetNbinsY()+1); + const double massMin = m_respFactorTrackAssistedMass3D->GetYaxis()->GetBinLowEdge(1); + const double etaMax = m_respFactorTrackAssistedMass3D->GetZaxis()->GetBinLowEdge(m_respFactorTrackAssistedMass3D->GetNbinsZ()+1); + const double etaMin = m_respFactorTrackAssistedMass3D->GetZaxis()->GetBinLowEdge(1); + if ( pT_uncorr >= pTMax) pT_uncorr = pTMax-1e-6; // so it fits the up-most pt-bin + if ( pT_uncorr <= m_pTMinCorr ) return 1; // no correction + if ( pT_uncorr <= pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(mass_uncorr)) return 1; // no correction if the input is NaN, can happen for log(X) + if ( mass_uncorr >= massMax ) mass_uncorr = massMax-1e-6; //so it fits the up-most m-bin + if ( mass_uncorr <= massMin ) mass_uncorr = massMin+1e-6; //so it fits the low-most m-bin + if ( eta >= etaMax) eta = etaMax-1e-6; // so it fits the up-most eta-bin + if ( eta <= etaMin) eta = etaMin+1e-6; // so it fits the low-most eta-bin + + float mass_corr = RootHelpers::Interpolate(m_respFactorTrackAssistedMass3D,pT_uncorr,mass_uncorr,eta); + + return mass_corr; +} + float JMSCorrection::getTrackAssistedMassCorr(double pT_uncorr, double uncorr, int etabin) const { // Asymptotic values - double pTMax = m_respFactorsTrackAssistedMass[etabin]->GetXaxis()->GetBinLowEdge(m_respFactorsTrackAssistedMass[etabin]->GetNbinsX()+1); - double pTMin = m_respFactorsTrackAssistedMass[etabin]->GetXaxis()->GetBinLowEdge(1); - double massMax = m_respFactorsTrackAssistedMass[etabin]->GetYaxis()->GetBinLowEdge(m_respFactorsTrackAssistedMass[etabin]->GetNbinsY()+1); + const double pTMax = m_respFactorsTrackAssistedMass[etabin]->GetXaxis()->GetBinLowEdge(m_respFactorsTrackAssistedMass[etabin]->GetNbinsX()+1); + const double pTMin = m_respFactorsTrackAssistedMass[etabin]->GetXaxis()->GetBinLowEdge(1); + const double massMax = m_respFactorsTrackAssistedMass[etabin]->GetYaxis()->GetBinLowEdge(m_respFactorsTrackAssistedMass[etabin]->GetNbinsY()+1); + const double massMin = m_respFactorsTrackAssistedMass[etabin]->GetYaxis()->GetBinLowEdge(1); if ( pT_uncorr > pTMax ) pT_uncorr = pTMax-1e-6 ; //so it fits the up-most pt-bin if ( pT_uncorr < m_pTMinCorr ) return 1; // no correction if ( pT_uncorr < pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(uncorr)) return 1; // no correction if the input is NaN, can happen for log(X) if ( uncorr > massMax ) uncorr = massMax-1e-6; //so it fits the up-most m-bin + if ( uncorr < massMin ) uncorr = massMin+1e-6; //so it fits the low-most m-bin float mass_corr = m_respFactorsTrackAssistedMass[etabin]->Interpolate( pT_uncorr, uncorr ); return mass_corr; } +float JMSCorrection::getRelCalo3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const { + + // Asymptotic values + double pTMax = m_caloResolutionMassCombination3D->GetXaxis()->GetBinLowEdge(m_caloResolutionMassCombination3D->GetNbinsX()+1); + double pTMin = m_caloResolutionMassCombination3D->GetXaxis()->GetBinLowEdge(1); + double mass_over_pTMax = m_caloResolutionMassCombination3D->GetYaxis()->GetBinLowEdge(m_caloResolutionMassCombination3D->GetNbinsY()+1); + double mass_over_pTMin = m_caloResolutionMassCombination3D->GetYaxis()->GetBinLowEdge(1); + double etaMax = m_caloResolutionMassCombination3D->GetZaxis()->GetBinLowEdge(m_caloResolutionMassCombination3D->GetNbinsZ()+1); + double etaMin = m_caloResolutionMassCombination3D->GetZaxis()->GetBinLowEdge(1); + if ( pT_uncorr >= pTMax ) pT_uncorr = pTMax-1e-6 ; //so it fits the up-most pt-bin + if ( pT_uncorr <= pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(mass_over_pt_uncorr)) return 0; // no weight if the input is NaN, can happen for log(X) + if ( mass_over_pt_uncorr >= mass_over_pTMax ) mass_over_pt_uncorr = mass_over_pTMax-1e-6; //so it fits the up-most m_over_pt-bin + if ( mass_over_pt_uncorr <= mass_over_pTMin ) mass_over_pt_uncorr = mass_over_pTMin+1e-6; //so it fits the low-most m_over_pt-bin + if (eta >= etaMax) eta = etaMax-1e-6; // so it fits the up-most eta-bin + if (eta <= etaMin) eta = etaMin+1e-6; // so it fits the low-most eta-bin + + float rel = RootHelpers::Interpolate(m_caloResolutionMassCombination3D,pT_uncorr,mass_over_pt_uncorr,eta); + + return rel; +} + float JMSCorrection::getRelCalo(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const { // Asymptotic values @@ -244,6 +481,7 @@ float JMSCorrection::getRelCalo(double pT_uncorr, double mass_over_pt_uncorr, in double mass_over_pTMin = m_caloResolutionMassCombination[etabin]->GetYaxis()->GetBinLowEdge(1); if ( pT_uncorr > pTMax ) pT_uncorr = pTMax-1e-6 ; //so it fits the up-most pt-bin if ( pT_uncorr < pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(mass_over_pt_uncorr)) return 0; // no weight if the input is NaN, can happen for log(X) if ( mass_over_pt_uncorr > mass_over_pTMax ) mass_over_pt_uncorr = mass_over_pTMax-1e-6; //so it fits the up-most m_over_pt-bin if ( mass_over_pt_uncorr < mass_over_pTMin ) mass_over_pt_uncorr = mass_over_pTMin+1e-6; //so it fits the low-most m_over_pt-bin @@ -252,6 +490,29 @@ float JMSCorrection::getRelCalo(double pT_uncorr, double mass_over_pt_uncorr, in return rel; } + +float JMSCorrection::getRelTA3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const { + + // Asymptotic values + double pTMax = m_taResolutionMassCombination3D->GetXaxis()->GetBinLowEdge(m_taResolutionMassCombination3D->GetNbinsX()+1); + double pTMin = m_taResolutionMassCombination3D->GetXaxis()->GetBinLowEdge(1); + double mass_over_pTMax = m_taResolutionMassCombination3D->GetYaxis()->GetBinLowEdge(m_taResolutionMassCombination3D->GetNbinsY()+1); + double mass_over_pTMin = m_taResolutionMassCombination3D->GetYaxis()->GetBinLowEdge(1); + double etaMax = m_taResolutionMassCombination3D->GetZaxis()->GetBinLowEdge(m_taResolutionMassCombination3D->GetNbinsZ()+1); + double etaMin = m_taResolutionMassCombination3D->GetZaxis()->GetBinLowEdge(1); + if ( pT_uncorr >= pTMax ) pT_uncorr = pTMax-1e-6 ; //so it fits the up-most pt-bin + if ( pT_uncorr <= pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(mass_over_pt_uncorr)) return 0; // no weight if the input is NaN, can happen for log(X) + if ( mass_over_pt_uncorr >= mass_over_pTMax ) mass_over_pt_uncorr = mass_over_pTMax-1e-6; //so it fits the up-most m_over_pt-bin + if ( mass_over_pt_uncorr <= mass_over_pTMin ) mass_over_pt_uncorr = mass_over_pTMin+1e-6; //so it fits the low-most m_over_pt-bin + if (eta >= etaMax) eta = etaMax-1e-6; // so it fits the up-most eta-bin + if (eta <= etaMin) eta = etaMin+1e-6; // so it fits the low-most eta-bin + + float rel = RootHelpers::Interpolate(m_taResolutionMassCombination3D,pT_uncorr,mass_over_pt_uncorr,eta); + + return rel; +} + float JMSCorrection::getRelTA(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const { // Asymptotic values @@ -261,6 +522,7 @@ float JMSCorrection::getRelTA(double pT_uncorr, double mass_over_pt_uncorr, int double mass_over_pTMin = m_taResolutionMassCombination[etabin]->GetYaxis()->GetBinLowEdge(1); if ( pT_uncorr > pTMax ) pT_uncorr = pTMax-1e-6 ; //so it fits the up-most pt-bin if ( pT_uncorr < pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(mass_over_pt_uncorr)) return 0; // no weight if the input is NaN, can happen for log(X) if ( mass_over_pt_uncorr > mass_over_pTMax ) mass_over_pt_uncorr = mass_over_pTMax-1e-6; //so it fits the up-most m_over_pt-bin if ( mass_over_pt_uncorr < mass_over_pTMin ) mass_over_pt_uncorr = mass_over_pTMin+1e-6; //so it fits the low-most m_over_pt-bin @@ -269,6 +531,28 @@ float JMSCorrection::getRelTA(double pT_uncorr, double mass_over_pt_uncorr, int return rel; } +float JMSCorrection::getRho3D(double pT_uncorr, double mass_over_pt_uncorr, double eta) const { + + // Asymptotic values + double pTMax = m_correlationMapMassCombination3D->GetXaxis()->GetBinLowEdge(m_correlationMapMassCombination3D->GetNbinsX()+1); + double pTMin = m_correlationMapMassCombination3D->GetXaxis()->GetBinLowEdge(1); + double mass_over_pTMax = m_correlationMapMassCombination3D->GetYaxis()->GetBinLowEdge(m_correlationMapMassCombination3D->GetNbinsY()+1); + double mass_over_pTMin = m_correlationMapMassCombination3D->GetYaxis()->GetBinLowEdge(1); + double etaMax = m_correlationMapMassCombination3D->GetZaxis()->GetBinLowEdge(m_correlationMapMassCombination3D->GetNbinsZ()+1); + double etaMin = m_correlationMapMassCombination3D->GetZaxis()->GetBinLowEdge(1); + if ( pT_uncorr >= pTMax ) pT_uncorr = pTMax-1e-6 ; //so it fits the up-most pt-bin + if ( pT_uncorr <= pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(mass_over_pt_uncorr)) return 0; // no weight if the input is NaN, can happen for log(X) + if ( mass_over_pt_uncorr >= mass_over_pTMax ) mass_over_pt_uncorr = mass_over_pTMax-1e-6; //so it fits the up-most m_over_pt-bin + if ( mass_over_pt_uncorr <= mass_over_pTMin ) mass_over_pt_uncorr = mass_over_pTMin+1e-6; //so it fits the low-most m_over_pt-bin + if (eta >= etaMax) eta = etaMax-1e-6; // so it fits the up-most eta-bin + if (eta <= etaMin) eta = etaMin+1e-6; // so it fits the low-most eta-bin + + float rel = RootHelpers::Interpolate(m_correlationMapMassCombination3D,pT_uncorr,mass_over_pt_uncorr,eta); + + return rel; +} + float JMSCorrection::getRho(double pT_uncorr, double mass_over_pt_uncorr, int etabin) const { // Asymptotic values @@ -278,6 +562,7 @@ float JMSCorrection::getRho(double pT_uncorr, double mass_over_pt_uncorr, int et double mass_over_pTMin = m_correlationMapMassCombination[etabin]->GetYaxis()->GetBinLowEdge(1); if ( pT_uncorr > pTMax ) pT_uncorr = pTMax-1e-6 ; //so it fits the up-most pt-bin if ( pT_uncorr < pTMin ) pT_uncorr = pTMin+1e-6; //so it fits the low-most pt-bin + if ( std::isnan(mass_over_pt_uncorr)) return 0; // no weight if the input is NaN, can happen for log(X) if ( mass_over_pt_uncorr > mass_over_pTMax ) mass_over_pt_uncorr = mass_over_pTMax-1e-6; //so it fits the up-most m_over_pt-bin if ( mass_over_pt_uncorr < mass_over_pTMin ) mass_over_pt_uncorr = mass_over_pTMin+1e-6; //so it fits the low-most m_over_pt-bin @@ -302,40 +587,94 @@ StatusCode JMSCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const { xAOD::JetFourMom_t calibP4 = jet.jetP4(); // For combination - float mass_calo; // saving calibrated calo mass - double pT_calo; // saving pT corrected by calo mass calib float mass_ta; // saving calibrated trk-assisted mass float mass_corr = jetStartP4.mass(); double pT_corr = jetStartP4.pt(); - // Determine mass eta bin to use + // Determine mass eta bin to use (if using 2D histograms) int etabin=-99; - if (m_massEtaBins.size()==0 || m_respFactorsMass.size() != m_massEtaBins.size()-1){ + if (!m_use3Dhisto && (m_massEtaBins.size()==0 || m_respFactorsMass.size() != m_massEtaBins.size()-1)){ ATH_MSG_FATAL("Please check that the mass correction eta binning is properly set in your config file"); return StatusCode::FAILURE; } - xAOD::JetConstituentVector constituents = jet.getConstituents(); - int nconstituents = constituents.size(); - if ( absdetectorEta < m_massEtaBins.back() && nconstituents>1 ) { //Fiducial Cuts - for (uint i=0; i<m_massEtaBins.size()-1; ++i) { - if(absdetectorEta >= m_massEtaBins[i] && absdetectorEta < m_massEtaBins[i+1]) etabin = i; + else if (m_use3Dhisto && !m_respFactorMass3D) + { + ATH_MSG_FATAL("Please check that the mass correction 3D histogram is provided"); + return StatusCode::FAILURE; + } + + // Originally was jet.getConstituents().size() > 1 + // This essentially requires that the jet has a mass + // However, constituents are not stored now in rel21 (LCOrigTopoClusters are transient) + // Thus, getConstituents() breaks unless they are specifically written out + // Instead, this has been changed to require a non-zero mass + // Done by S. Schramm on Oct 21, 2017 + + if ( ( ( !m_use3Dhisto && absdetectorEta < m_massEtaBins.back() ) || + ( m_use3Dhisto && absdetectorEta < m_respFactorMass3D->GetZaxis()->GetBinLowEdge(m_respFactorMass3D->GetNbinsZ()+1)) + ) && jetStartP4.mass() != 0 ) { // Fiducial cuts + if (!m_use3Dhisto) + { + for (uint i=0; i<m_massEtaBins.size()-1; ++i) { + if(absdetectorEta >= m_massEtaBins[i] && absdetectorEta < m_massEtaBins[i+1]) etabin = i; + } + if (etabin< 0){ + ATH_MSG_FATAL("There was a problem determining the eta bin to use for the mass correction"); + return StatusCode::FAILURE; + } } - if (etabin< 0){ - ATH_MSG_FATAL("There was a problem determining the eta bin to use for the mass correction"); - return StatusCode::FAILURE; + + // Use the correct histogram binning parametrisation when reading the corrected mass + double massFactor = 1; + switch (m_binParam) + { + case BinningParam::pt_mass_eta: + if (m_use3Dhisto) + massFactor = getMassCorr3D( jetStartP4.pt()/m_GeV, jetStartP4.mass()/m_GeV, absdetectorEta ); + else + massFactor = getMassCorr( jetStartP4.pt()/m_GeV, jetStartP4.mass()/m_GeV, etabin ); + break; + case BinningParam::e_LOGmOe_eta: + if (m_use3Dhisto) + massFactor = getMassCorr3D( jetStartP4.e()/m_GeV, log(jetStartP4.mass() / jetStartP4.e()), absdetectorEta); + else + massFactor = getMassCorr( jetStartP4.e()/m_GeV, log(jetStartP4.mass() / jetStartP4.e()), etabin); + break; + case BinningParam::e_LOGmOet_eta: + if (m_use3Dhisto) + massFactor = getMassCorr3D( jetStartP4.e()/m_GeV, log(jetStartP4.mass() / jetStartP4.Et()), absdetectorEta); + else + massFactor = getMassCorr( jetStartP4.e()/m_GeV, log(jetStartP4.mass() / jetStartP4.Et()), etabin); + break; + case BinningParam::e_LOGmOpt_eta: + if (m_use3Dhisto) + massFactor = getMassCorr3D( jetStartP4.e()/m_GeV, log(jetStartP4.mass() / jetStartP4.pt()), absdetectorEta); + else + massFactor = getMassCorr( jetStartP4.e()/m_GeV, log(jetStartP4.mass() / jetStartP4.pt()), etabin); + break; + case BinningParam::et_LOGmOet_eta: + if (m_use3Dhisto) + massFactor = getMassCorr3D( jetStartP4.Et()/m_GeV, log(jetStartP4.mass() / jetStartP4.Et()), absdetectorEta); + else + massFactor = getMassCorr( jetStartP4.Et()/m_GeV, log(jetStartP4.mass() / jetStartP4.Et()), etabin); + break; + default: + ATH_MSG_FATAL("This should never be reached - if it happens, it's because a new BinningParam enum option was added, but how to handle it for the calo mass was not. Please contact the tool developer(s) to fix this."); + return StatusCode::FAILURE; + break; } - mass_corr = jetStartP4.mass()/getMassCorr( jetStartP4.pt()/m_GeV, jetStartP4.mass()/m_GeV, etabin ); + + mass_corr = jetStartP4.mass() / massFactor; + if(!m_pTfixed) pT_corr = sqrt(jetStartP4.e()*jetStartP4.e()-mass_corr*mass_corr)/cosh( jetStartP4.eta() ); } - mass_calo = mass_corr; - pT_calo = pT_corr; + TLorentzVector caloCalibJet; + caloCalibJet.SetPtEtaPhiM(pT_corr, jetStartP4.eta(), jetStartP4.phi(), mass_corr); if(!m_combination){ - TLorentzVector TLVjet; - TLVjet.SetPtEtaPhiM( pT_corr, jetStartP4.eta(), jetStartP4.phi(), mass_corr ); - calibP4.SetPxPyPzE( TLVjet.Px(), TLVjet.Py(), TLVjet.Pz(), TLVjet.E() ); + calibP4.SetPxPyPzE( caloCalibJet.Px(), caloCalibJet.Py(), caloCalibJet.Pz(), caloCalibJet.E() ); //Transfer calibrated jet properties to the Jet object jet.setAttribute<xAOD::JetFourMom_t>("JetJMSScaleMomentum",calibP4); @@ -348,13 +687,20 @@ StatusCode JMSCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const { double E_corr = jetStartP4.e(); // Determine mass eta bin to use - etabin=-99; - if (m_massEtaBins.size()==0 || m_respFactorsTrackAssistedMass.size() != m_massEtaBins.size()-1){ - ATH_MSG_FATAL("Please check that the mass correction eta binning is properly set in your config file"); - if(m_combination) return StatusCode::FAILURE; + if (!m_use3Dhisto) + { + etabin=-99; + if (m_massEtaBins.size()==0 || m_respFactorsTrackAssistedMass.size() != m_massEtaBins.size()-1){ + ATH_MSG_FATAL("Please check that the mass correction eta binning is properly set in your config file"); + if(m_combination) return StatusCode::FAILURE; + } + } + else if (m_use3Dhisto && !m_respFactorTrackAssistedMass3D) + { + ATH_MSG_FATAL("Please check that the track assisted mass correction 3D histogram is provided"); + return StatusCode::FAILURE; } - xAOD::JetConstituentVector constituents = jet.getConstituents(); - int nconstituents = constituents.size(); + float trackSumMass; std::string TrackSumMassStr = "TrackSumMass"; if(m_jetAlgo=="AntiKt4EMTopo" || m_jetAlgo=="AntiKt4LCTopo") TrackSumMassStr = "DFCommonJets_TrackSumMass"; @@ -389,16 +735,70 @@ StatusCode JMSCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const { else{mTA = (jetStartP4.pt()/trackSumPt)*trackSumMass;} if(mTA<0) mTA = 0; mass_corr = mTA; - if ( absdetectorEta < m_massEtaBins.back() && nconstituents>1 ) { //Fiducial Cuts - for (uint i=0; i<m_massEtaBins.size()-1; ++i) { - if(absdetectorEta >= m_massEtaBins[i] && absdetectorEta < m_massEtaBins[i+1]) etabin = i; - } - if (etabin< 0){ - ATH_MSG_FATAL("There was a problem determining the eta bin to use for the track assisted mass correction"); - if(m_combination) return StatusCode::FAILURE; + + if ( ( ( !m_use3Dhisto && absdetectorEta < m_massEtaBins.back() ) || + ( m_use3Dhisto && absdetectorEta < m_respFactorMass3D->GetZaxis()->GetBinLowEdge(m_respFactorMass3D->GetNbinsZ()+1)) + ) && jetStartP4.mass() != 0 ) { // Fiducial cuts + if (!m_use3Dhisto) + { + for (uint i=0; i<m_massEtaBins.size()-1; ++i) { + if(absdetectorEta >= m_massEtaBins[i] && absdetectorEta < m_massEtaBins[i+1]) etabin = i; + } + if (etabin< 0){ + ATH_MSG_FATAL("There was a problem determining the eta bin to use for the track assisted mass correction"); + return StatusCode::FAILURE; + } } - mass_corr = mTA/getTrackAssistedMassCorr( jetStartP4.pt()/m_GeV, mTA/m_GeV, etabin ); + double mTAFactor = 1; + + if(mTA!=0){ // Read the calibration values from histograms only when this value is non-zero + // Use the correct histogram binning parametrisation when reading the corrected mass + switch (m_binParam) + { + case BinningParam::pt_mass_eta: + if (m_use3Dhisto) + mTAFactor = getTrackAssistedMassCorr3D( jetStartP4.pt()/m_GeV, mTA/m_GeV, absdetectorEta ); + else + mTAFactor = getTrackAssistedMassCorr( jetStartP4.pt()/m_GeV, mTA/m_GeV, etabin ); + break; + case BinningParam::e_LOGmOe_eta: + if (m_use3Dhisto) + mTAFactor = getTrackAssistedMassCorr3D( jetStartP4.e()/m_GeV, log(mTA / jetStartP4.e()), absdetectorEta); + else + mTAFactor = getTrackAssistedMassCorr( jetStartP4.e()/m_GeV, log(mTA / jetStartP4.e()), etabin); + break; + case BinningParam::e_LOGmOet_eta: + if (m_use3Dhisto) + mTAFactor = getTrackAssistedMassCorr3D( jetStartP4.e()/m_GeV, log(mTA / jetStartP4.Et()), absdetectorEta); + else + mTAFactor = getTrackAssistedMassCorr( jetStartP4.e()/m_GeV, log(mTA / jetStartP4.Et()), etabin); + break; + case BinningParam::e_LOGmOpt_eta: + if (m_use3Dhisto) + mTAFactor = getTrackAssistedMassCorr3D( jetStartP4.e()/m_GeV, log(mTA / jetStartP4.pt()), absdetectorEta); + else + mTAFactor = getTrackAssistedMassCorr( jetStartP4.e()/m_GeV, log(mTA / jetStartP4.pt()), etabin); + break; + case BinningParam::et_LOGmOet_eta: + if (m_use3Dhisto) + mTAFactor = getTrackAssistedMassCorr3D( jetStartP4.Et()/m_GeV, log(mTA / jetStartP4.Et()), absdetectorEta); + else + mTAFactor = getTrackAssistedMassCorr( jetStartP4.Et()/m_GeV, log(mTA / jetStartP4.Et()), etabin); + break; + default: + ATH_MSG_FATAL("This should never be reached - if it happens, it's because a new BinningParam enum option was added, but how to handle it for the TA mass was not. Please contact the tool developer(s) to fix this."); + return StatusCode::FAILURE; + break; + } + } + + if(mTAFactor!=0) mass_corr = mTA/mTAFactor; + else{ + ATH_MSG_FATAL("The calibration histogram may have a bad filling bin that is causing mTAFactor to be zero. This value should be different from zero in order to take the ratio. Please contact the tool developer to fix this since the calibration histogram may be corrupted. "); + return StatusCode::FAILURE; + } + if(!m_pTfixed) pT_corr = sqrt(jetStartP4.e()*jetStartP4.e()-mass_corr*mass_corr)/cosh( jetStartP4.eta() ); else{E_corr = sqrt(jetStartP4.P()*jetStartP4.P()+mass_corr*mass_corr);} } @@ -429,8 +829,8 @@ StatusCode JMSCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const { calibP4_ta.SetPxPyPzE( TLVjet_ta.Px(), TLVjet_ta.Py(), TLVjet_ta.Pz(), TLVjet_ta.E() ); jet.setAttribute<xAOD::JetFourMom_t>("JetJMSScaleMomentumTA",calibP4_ta); - float mass_comb = mass_calo; // combined mass - double pT_comb = pT_calo; + float mass_comb = caloCalibJet.M(); // combined mass + double pT_comb = caloCalibJet.Pt(); // if one of the mass is null, use the other one if( (mass_comb==0) || (mass_corr==0) ) { @@ -439,35 +839,148 @@ StatusCode JMSCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const { else { // Determine mass combination eta bin to use int etabin=-99; - if (m_massCombinationEtaBins.size()==0 || m_caloResolutionMassCombination.size() != m_massCombinationEtaBins.size()-1){ - ATH_MSG_FATAL("Please check that the mass combination eta binning is properly set in your config file"); - return StatusCode::FAILURE; - } - if (m_massCombinationEtaBins.size()==0 || m_taResolutionMassCombination.size() != m_massCombinationEtaBins.size()-1){ - ATH_MSG_FATAL("Please check that the mass combination eta binning is properly set in your config file"); - return StatusCode::FAILURE; - } - - if ( absdetectorEta < m_massCombinationEtaBins.back() ) { - for (uint i=0; i<m_massCombinationEtaBins.size()-1; ++i) { - if(absdetectorEta >= m_massCombinationEtaBins[i] && absdetectorEta < m_massCombinationEtaBins[i+1]) etabin = i; - } - if (etabin< 0){ - ATH_MSG_FATAL("There was a problem determining the eta bin to use for the mass combination"); + if (!m_use3Dhisto) + { + if (m_massCombinationEtaBins.size()==0 || m_caloResolutionMassCombination.size() != m_massCombinationEtaBins.size()-1){ + ATH_MSG_FATAL("Please check that the mass combination eta binning is properly set in your config file"); + return StatusCode::FAILURE; + } + if (m_massCombinationEtaBins.size()==0 || m_taResolutionMassCombination.size() != m_massCombinationEtaBins.size()-1){ + ATH_MSG_FATAL("Please check that the mass combination eta binning is properly set in your config file"); return StatusCode::FAILURE; } - const double relCalo = getRelCalo( pT_calo/m_GeV, mass_calo/pT_calo, etabin ); - const double relTA = getRelTA( pT_calo/m_GeV, mass_ta/pT_calo, etabin ); - const double rho = ( m_useCorrelatedWeights ? getRho( pT_calo/m_GeV, mass_calo/pT_calo, etabin ) : 0); + } + else if (m_use3Dhisto && !m_caloResolutionMassCombination3D) + { + ATH_MSG_FATAL("Please check that the mass resolution 3D histogram is provided"); + return StatusCode::FAILURE; + } + else if (m_use3Dhisto && !m_taResolutionMassCombination3D) + { + ATH_MSG_FATAL("Please check that the track assisted mass resolution 3D histogram is provided"); + return StatusCode::FAILURE; + } + + + + if ( ( ( !m_use3Dhisto && absdetectorEta < m_massCombinationEtaBins.back() ) || + ( m_use3Dhisto && absdetectorEta < m_caloResolutionMassCombination3D->GetZaxis()->GetBinLowEdge(m_caloResolutionMassCombination3D->GetNbinsZ()+1)) ) ) { + + if (!m_use3Dhisto) + { + for (uint i=0; i<m_massCombinationEtaBins.size()-1; ++i) { + if(absdetectorEta >= m_massCombinationEtaBins[i] && absdetectorEta < m_massCombinationEtaBins[i+1]) etabin = i; + } + if (etabin< 0){ + ATH_MSG_FATAL("There was a problem determining the eta bin to use for the mass combination"); + return StatusCode::FAILURE; + } + } + + + // Use the correct histogram binning parametrisation when reading the combined mass weights + double relCalo = 0; + double relTA = 0; + double rho = 0; + switch (m_binParam) + { + case BinningParam::pt_mass_eta: + if (m_use3Dhisto) + { + relCalo = getRelCalo3D( caloCalibJet.Pt()/m_GeV, caloCalibJet.M()/caloCalibJet.Pt(), absdetectorEta ); + relTA = getRelTA3D( caloCalibJet.Pt()/m_GeV, mass_ta /caloCalibJet.Pt(), absdetectorEta ); + if (m_useCorrelatedWeights) + rho = getRho3D( caloCalibJet.Pt()/m_GeV, caloCalibJet.M()/caloCalibJet.Pt(), absdetectorEta ); + } + else + { + relCalo = getRelCalo( caloCalibJet.Pt()/m_GeV, caloCalibJet.M()/caloCalibJet.Pt(), etabin ); + relTA = getRelTA( caloCalibJet.Pt()/m_GeV, mass_ta /caloCalibJet.Pt(), etabin ); + if (m_useCorrelatedWeights) + rho = getRho( caloCalibJet.Pt()/m_GeV, caloCalibJet.M()/caloCalibJet.Pt(), etabin ); + } + break; + case BinningParam::e_LOGmOe_eta: + if (m_use3Dhisto) + { + relCalo = getRelCalo3D( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.E()), absdetectorEta ); + relTA = getRelTA3D( caloCalibJet.E()/m_GeV, log(mass_ta /caloCalibJet.E()), absdetectorEta ); + if (m_useCorrelatedWeights) + rho = getRho3D( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.E()), absdetectorEta ); + } + else + { + relCalo = getRelCalo( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.E()), etabin ); + relTA = getRelTA( caloCalibJet.E()/m_GeV, log(mass_ta /caloCalibJet.E()), etabin ); + if (m_useCorrelatedWeights) + rho = getRho( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.E()), etabin ); + } + break; + case BinningParam::e_LOGmOet_eta: + if (m_use3Dhisto) + { + relCalo = getRelCalo3D( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Et()), absdetectorEta ); + relTA = getRelTA3D( caloCalibJet.E()/m_GeV, log(mass_ta /caloCalibJet.Et()), absdetectorEta ); + if (m_useCorrelatedWeights) + rho = getRho3D( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Et()), absdetectorEta ); + } + else + { + relCalo = getRelCalo( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Et()), etabin ); + relTA = getRelTA( caloCalibJet.E()/m_GeV, log(mass_ta /caloCalibJet.Et()), etabin ); + if (m_useCorrelatedWeights) + rho = getRho( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Et()), etabin ); + } + break; + case BinningParam::e_LOGmOpt_eta: + if (m_use3Dhisto) + { + relCalo = getRelCalo3D( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Pt()), absdetectorEta ); + relTA = getRelTA3D( caloCalibJet.E()/m_GeV, log(mass_ta /caloCalibJet.Pt()), absdetectorEta ); + if (m_useCorrelatedWeights) + rho = getRho3D( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Pt()), absdetectorEta ); + } + else + { + relCalo = getRelCalo( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Pt()), etabin ); + relTA = getRelTA( caloCalibJet.E()/m_GeV, log(mass_ta /caloCalibJet.Pt()), etabin ); + if (m_useCorrelatedWeights) + rho = getRho( caloCalibJet.E()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Pt()), etabin ); + } + break; + case BinningParam::et_LOGmOet_eta: + if (m_use3Dhisto) + { + relCalo = getRelCalo3D( caloCalibJet.Et()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Et()), absdetectorEta ); + relTA = getRelTA3D( caloCalibJet.Et()/m_GeV, log(mass_ta /caloCalibJet.Et()), absdetectorEta ); + if (m_useCorrelatedWeights) + rho = getRho3D( caloCalibJet.Et()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Et()), absdetectorEta ); + } + else + { + relCalo = getRelCalo( caloCalibJet.Et()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Et()), etabin ); + relTA = getRelTA( caloCalibJet.Et()/m_GeV, log(mass_ta /caloCalibJet.Et()), etabin ); + if (m_useCorrelatedWeights) + rho = getRho( caloCalibJet.Et()/m_GeV, log(caloCalibJet.M()/caloCalibJet.Et()), etabin ); + } + break; + default: + ATH_MSG_FATAL("This should never be reached - if it happens, it's because a new BinningParam enum option was added, but how to handle it for the TA mass was not. Please contact the tool developer(s) to fix this."); + return StatusCode::FAILURE; + break; + } + + + // Watch for division by zero if(m_useCorrelatedWeights && (relCalo*relCalo + relTA*relTA - 2 * rho* relCalo * relTA == 0)){ ATH_MSG_ERROR("Encountered division by zero when calculating mass combination weight using correlated weights"); return StatusCode::FAILURE; } const double Weight = ( relTA*relTA - rho *relCalo*relTA ) / ( relCalo*relCalo + relTA*relTA - 2 * rho* relCalo * relTA ); - mass_comb = ( mass_calo * Weight ) + ( mass_ta * ( 1 - Weight) ); + mass_comb = ( caloCalibJet.M() * Weight ) + ( mass_ta * ( 1 - Weight) ); // Protection - if(mass_comb>jetStartP4.e()) mass_comb = mass_calo; + if(mass_comb>jetStartP4.e()) mass_comb = caloCalibJet.M(); else if(!m_pTfixed) pT_comb = sqrt(jetStartP4.e()*jetStartP4.e()-mass_comb*mass_comb)/cosh( jetStartP4.eta() ); } } @@ -483,7 +996,7 @@ StatusCode JMSCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const { //Transfer calibrated calo mass property to the Jet object xAOD::JetFourMom_t calibP4_calo = jet.jetP4(); - calibP4_calo.SetCoordinates( pT_calo, jetStartP4.eta(), jetStartP4.phi(), mass_calo ); + calibP4_calo.SetCoordinates( caloCalibJet.Pt(), jetStartP4.eta(), jetStartP4.phi(), caloCalibJet.M() ); jet.setAttribute<xAOD::JetFourMom_t>("JetJMSScaleMomentumCalo",calibP4_calo); } diff --git a/Reconstruction/Jet/JetCalibTools/Root/JetCalibUtils.cxx b/Reconstruction/Jet/JetCalibTools/Root/JetCalibUtils.cxx index 3619b5072ad..fe552e52cad 100644 --- a/Reconstruction/Jet/JetCalibTools/Root/JetCalibUtils.cxx +++ b/Reconstruction/Jet/JetCalibTools/Root/JetCalibUtils.cxx @@ -50,6 +50,14 @@ namespace JetCalibUtils { return h; } + TH3 *GetHisto3(TFile *file, TString hname) { + TH3* h = (TH3*)file->Get(hname); + if (h==NULL) + printf("WARNING: Cannot access histogram \"%s\" in file %s", + hname.Data(),file->GetName()); + return h; + } + TTree *setTree(TTree *tree) { return tree; } } diff --git a/Reconstruction/Jet/JetCalibTools/Root/JetCalibrationTool.cxx b/Reconstruction/Jet/JetCalibTools/Root/JetCalibrationTool.cxx index 59dbe9a061a..ea8163acaf9 100644 --- a/Reconstruction/Jet/JetCalibTools/Root/JetCalibrationTool.cxx +++ b/Reconstruction/Jet/JetCalibTools/Root/JetCalibrationTool.cxx @@ -18,13 +18,13 @@ //////////////// JetCalibrationTool::JetCalibrationTool(const std::string& name) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), + : JetCalibrationToolBase::JetCalibrationToolBase( name ), m_rhkEvtInfo("EventInfo"), m_rhkRhoKey(""), m_rhkPV("PrimaryVertices"), - m_jetAlgo(""), m_config(""), m_calibSeq(""), m_calibAreaTag(""), m_devMode(false), m_isData(true), m_timeDependentCalib(false), m_rhoKey("auto"), m_dir(""), m_eInfoName(""), m_globalConfig(NULL), - m_doJetArea(true), m_doResidual(true), m_doOrigin(true), m_doGSC(true), - m_jetPileupCorr(NULL), m_etaJESCorr(NULL), m_globalSequentialCorr(NULL), m_insituDataCorr(NULL), m_jetMassCorr(NULL) + m_jetAlgo(""), m_config(""), m_calibSeq(""), m_calibAreaTag(""), m_originScale(""), m_devMode(false), m_isData(true), m_timeDependentCalib(false), m_rhoKey("auto"), m_dir(""), m_eInfoName(""), m_globalConfig(NULL), + m_doJetArea(true), m_doResidual(true), m_doOrigin(true), m_doGSC(true), + m_jetPileupCorr(NULL), m_etaJESCorr(NULL), m_globalSequentialCorr(NULL), m_insituDataCorr(NULL), m_jetMassCorr(NULL), m_jetSmearCorr(NULL) { declareProperty( "JetCollection", m_jetAlgo = "AntiKt4LCTopo" ); @@ -34,6 +34,9 @@ JetCalibrationTool::JetCalibrationTool(const std::string& name) declareProperty( "IsData", m_isData = true ); declareProperty( "ConfigDir", m_dir = "JetCalibTools/CalibrationConfigs/" ); declareProperty( "EventInfoName", m_eInfoName = "EventInfo"); + declareProperty( "DEVmode", m_devMode = false); + declareProperty( "OriginScale", m_originScale = "JetOriginConstitScaleMomentum"); + declareProperty( "CalibArea", m_calibAreaTag = "00-04-82"); } @@ -48,6 +51,7 @@ JetCalibrationTool::~JetCalibrationTool() { if (m_globalSequentialCorr) delete m_globalSequentialCorr; if (m_insituDataCorr) delete m_insituDataCorr; if (m_jetMassCorr) delete m_jetMassCorr; + if (m_jetSmearCorr) delete m_jetSmearCorr; } @@ -92,15 +96,14 @@ StatusCode JetCalibrationTool::initializeTool(const std::string& name) { } if ( config.EqualTo("") || !config ) { ATH_MSG_FATAL("No configuration file specified."); return StatusCode::FAILURE; } - m_calibAreaTag.insert(0,"CalibArea-00-04-77/"); // Hard-coding the CalibArea tag - if(calibSeq.Contains("DEV")){ - m_devMode = true; - ATH_MSG_WARNING("Dev Mode is ON!!! \n\n"); - ATH_MSG_WARNING("Dev Mode is NOT RECOMMENDED!!! \n\n"); - dir.insert(0,"JetCalibTools/"); - dir.insert(28,m_calibAreaTag); // Obtaining the path of the configuration file + // The calibration area tag is a property of the tool + const std::string calibPath = "CalibArea-" + m_calibAreaTag + "/"; + if(m_devMode){ + ATH_MSG_WARNING("Dev Mode is ON!!!"); + ATH_MSG_WARNING("Dev Mode is NOT RECOMMENDED!!!"); + dir = "JetCalibTools/"; } - else{dir.insert(14,m_calibAreaTag);} // Obtaining the path of the configuration file + else{dir.insert(14,calibPath);} // Obtaining the path of the configuration file std::string configPath=dir+m_config; // Full path TString fn = PathResolverFindCalibFile(configPath); @@ -200,14 +203,15 @@ StatusCode JetCalibrationTool::initializeTool(const std::string& name) { //Method for initializing the requested calibration derived classes StatusCode JetCalibrationTool::getCalibClass(const std::string&name, TString calibration) { TString jetAlgo = m_jetAlgo; - TString calibAreaTag = m_calibAreaTag; + const TString calibPath = "CalibArea-" + m_calibAreaTag + "/"; std::string suffix = ""; //ATH_MSG_INFO("Initializing sub tools."); if ( calibration.EqualTo("JetArea") ) { ATH_MSG_INFO("Initializing pileup correction."); suffix="_Pileup"; if(m_devMode) suffix+="_DEV"; - m_jetPileupCorr = new JetPileupCorrection(name+suffix,m_globalConfig,jetAlgo,calibAreaTag,m_doResidual,m_doOrigin,m_isData,m_devMode); + m_jetPileupCorr = new JetPileupCorrection(name+suffix,m_globalConfig,jetAlgo,calibPath,m_doResidual,m_doOrigin,m_isData,m_devMode); + ATH_CHECK( m_jetPileupCorr->setProperty("OriginScale",m_originScale.c_str()) ); m_jetPileupCorr->msg().setLevel( this->msg().level() ); if( m_jetPileupCorr->initializeTool(name+suffix).isFailure() ) { ATH_MSG_FATAL("Couldn't initialize the pileup correction. Aborting"); @@ -220,7 +224,7 @@ StatusCode JetCalibrationTool::getCalibClass(const std::string&name, TString cal ATH_MSG_INFO("Initializing JES correction."); suffix="_EtaJES"; if(m_devMode) suffix+="_DEV"; - m_etaJESCorr = new EtaJESCorrection(name+suffix,m_globalConfig,jetAlgo,calibAreaTag,false,m_devMode); + m_etaJESCorr = new EtaJESCorrection(name+suffix,m_globalConfig,jetAlgo,calibPath,false,m_devMode); m_etaJESCorr->msg().setLevel( this->msg().level() ); if ( m_etaJESCorr->initializeTool(name+suffix).isFailure() ) { ATH_MSG_FATAL("Couldn't initialize the Monte Carlo JES correction. Aborting"); @@ -233,7 +237,7 @@ StatusCode JetCalibrationTool::getCalibClass(const std::string&name, TString cal ATH_MSG_INFO("Initializing JES correction."); suffix="_EtaMassJES"; if(m_devMode) suffix+="_DEV"; - m_etaJESCorr = new EtaJESCorrection(name+suffix,m_globalConfig,jetAlgo,calibAreaTag,true,m_devMode); + m_etaJESCorr = new EtaJESCorrection(name+suffix,m_globalConfig,jetAlgo,calibPath,true,m_devMode); m_etaJESCorr->msg().setLevel( this->msg().level() ); if ( m_etaJESCorr->initializeTool(name+suffix).isFailure() ) { ATH_MSG_FATAL("Couldn't initialize the Monte Carlo JES correction. Aborting"); @@ -246,7 +250,7 @@ StatusCode JetCalibrationTool::getCalibClass(const std::string&name, TString cal ATH_MSG_INFO("Initializing GSC correction."); suffix="_GSC"; if(m_devMode) suffix+="_DEV"; - m_globalSequentialCorr = new GlobalSequentialCorrection(name+suffix,m_globalConfig,jetAlgo,calibAreaTag,m_devMode); + m_globalSequentialCorr = new GlobalSequentialCorrection(name+suffix,m_globalConfig,jetAlgo,calibPath,m_devMode); m_globalSequentialCorr->msg().setLevel( this->msg().level() ); if ( m_globalSequentialCorr->initializeTool(name+suffix).isFailure() ) { ATH_MSG_FATAL("Couldn't initialize the Global Sequential Calibration. Aborting"); @@ -259,7 +263,7 @@ StatusCode JetCalibrationTool::getCalibClass(const std::string&name, TString cal ATH_MSG_INFO("Initializing JMS correction."); suffix="_JMS"; if(m_devMode) suffix+="_DEV"; - m_jetMassCorr = new JMSCorrection(name+suffix,m_globalConfig,jetAlgo,calibAreaTag,m_devMode); + m_jetMassCorr = new JMSCorrection(name+suffix,m_globalConfig,jetAlgo,calibPath,m_devMode); m_jetMassCorr->msg().setLevel( this->msg().level() ); if ( m_jetMassCorr->initializeTool(name+suffix).isFailure() ) { ATH_MSG_FATAL("Couldn't initialize the JMS Calibration. Aborting"); @@ -273,13 +277,15 @@ StatusCode JetCalibrationTool::getCalibClass(const std::string&name, TString cal ATH_MSG_INFO("Initializing Insitu correction."); suffix="_Insitu"; if(m_devMode) suffix+="_DEV"; - m_insituDataCorr = new InsituDataCorrection(name+suffix,m_globalConfig,jetAlgo,calibAreaTag,m_devMode); + m_insituDataCorr = new InsituDataCorrection(name+suffix,m_globalConfig,jetAlgo,calibPath,m_devMode); m_insituDataCorr->msg().setLevel( this->msg().level() ); if ( m_insituDataCorr->initializeTool(name+suffix).isFailure() ) { ATH_MSG_FATAL("Couldn't initialize the In-situ data correction. Aborting"); return StatusCode::FAILURE; } else { - m_calibClasses.push_back(m_insituDataCorr); + m_calibClasses.push_back(m_insituDataCorr); + m_relInsituPtMax.push_back(m_insituDataCorr->getRelHistoPtMax()); + m_absInsituPtMax.push_back(m_insituDataCorr->getAbsHistoPtMax()); return StatusCode::SUCCESS; } } else{ @@ -287,17 +293,40 @@ StatusCode JetCalibrationTool::getCalibClass(const std::string&name, TString cal for(unsigned int i=0;i<m_timeDependentInsituConfigs.size();++i){ suffix="_Insitu"; suffix += "_"; suffix += std::to_string(i); if(m_devMode) suffix+="_DEV"; - InsituDataCorrection *insituTimeDependentCorr_Tmp = new InsituDataCorrection(name+suffix,m_globalTimeDependentConfigs.at(i),jetAlgo,calibAreaTag,m_devMode); + InsituDataCorrection *insituTimeDependentCorr_Tmp = new InsituDataCorrection(name+suffix,m_globalTimeDependentConfigs.at(i),jetAlgo,calibPath,m_devMode); insituTimeDependentCorr_Tmp->msg().setLevel( this->msg().level() ); if ( insituTimeDependentCorr_Tmp->initializeTool(name+suffix).isFailure() ) { ATH_MSG_FATAL("Couldn't initialize the In-situ data correction. Aborting"); return StatusCode::FAILURE; } else { - m_insituTimeDependentCorr.push_back(insituTimeDependentCorr_Tmp); + m_insituTimeDependentCorr.push_back(insituTimeDependentCorr_Tmp); + m_relInsituPtMax.push_back(insituTimeDependentCorr_Tmp->getRelHistoPtMax()); + m_absInsituPtMax.push_back(insituTimeDependentCorr_Tmp->getAbsHistoPtMax()); } } return StatusCode::SUCCESS; } + } else if ( calibration.EqualTo("Smear") ) { + if (m_isData) + { + ATH_MSG_FATAL("Asked for smearing of data, which is not supported. Aborting."); + return StatusCode::FAILURE; + } + + ATH_MSG_INFO("Initializing jet smearing correction"); + suffix = "_Smear"; + if (m_devMode) suffix += "_DEV"; + + m_jetSmearCorr = new JetSmearingCorrection(name+suffix,m_globalConfig,jetAlgo,calibPath,m_devMode); + m_jetSmearCorr->msg().setLevel(this->msg().level()); + + if (m_jetSmearCorr->initializeTool(name+suffix).isFailure()) + { + ATH_MSG_FATAL("Couldn't initialize the jet smearing correction. Aborting."); + return StatusCode::FAILURE; + } + m_calibClasses.push_back(m_jetSmearCorr); + return StatusCode::SUCCESS; } ATH_MSG_FATAL("Calibration string not recognized: " << calibration << ", aborting."); //ATH_MSG_INFO("Initializing of sub tools is complete."); @@ -554,3 +583,25 @@ StatusCode JetCalibrationTool::calibrateImpl(xAOD::Jet& jet, JetEventInfo& jetEv } return StatusCode::SUCCESS; } + + +StatusCode JetCalibrationTool::getNominalResolutionData(const xAOD::Jet& jet, double& resolution) const +{ + if (!m_jetSmearCorr) + { + ATH_MSG_ERROR("Cannot retrieve the nominal data resolution - smearing was not configured during initialization"); + return StatusCode::FAILURE; + } + return m_jetSmearCorr->getNominalResolutionData(jet,resolution); +} + +StatusCode JetCalibrationTool::getNominalResolutionMC(const xAOD::Jet& jet, double& resolution) const +{ + if (!m_jetSmearCorr) + { + ATH_MSG_ERROR("Cannot retrieve the nominal MC resolution - smearing was not configured during initialization"); + return StatusCode::FAILURE; + } + return m_jetSmearCorr->getNominalResolutionMC(jet,resolution); +} + diff --git a/Reconstruction/Jet/JetCalibTools/Root/JetPileupCorrection.cxx b/Reconstruction/Jet/JetCalibTools/Root/JetPileupCorrection.cxx index d1640eb033f..31117677b60 100644 --- a/Reconstruction/Jet/JetCalibTools/Root/JetPileupCorrection.cxx +++ b/Reconstruction/Jet/JetCalibTools/Root/JetPileupCorrection.cxx @@ -5,22 +5,34 @@ #include "JetCalibTools/CalibrationMethods/JetPileupCorrection.h" JetPileupCorrection::JetPileupCorrection() - : asg::AsgTool( "JetPileupCorrection::JetPileupCorrection" ), JetCalibrationToolBase::JetCalibrationToolBase(), + : JetCalibrationToolBase::JetCalibrationToolBase("JetPileupCorrection::JetPileupCorrection"), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false), m_doResidual(false), m_doOrigin(false), m_isData(false), - m_useFull4vectorArea(false), m_residualOffsetCorr(NULL) -{ } + m_useFull4vectorArea(false), m_residualOffsetCorr(NULL), m_originScale("") +{ + + declareProperty( "OriginScale", m_originScale = "JetOriginConstitScaleMomentum"); + +} JetPileupCorrection::JetPileupCorrection(const std::string& name) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), + : JetCalibrationToolBase::JetCalibrationToolBase( name ), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(), m_dev(false), m_doResidual(false), m_doOrigin(false), m_isData(false), - m_useFull4vectorArea(false), m_residualOffsetCorr(NULL) -{ } + m_useFull4vectorArea(false), m_residualOffsetCorr(NULL), m_originScale("") +{ + + declareProperty( "OriginScale", m_originScale = "JetOriginConstitScaleMomentum"); + +} JetPileupCorrection::JetPileupCorrection(const std::string& name, TEnv * config, TString jetAlgo, TString calibAreaTag, bool doResidual, bool doOrigin, bool isData, bool dev) - : asg::AsgTool( name ), JetCalibrationToolBase::JetCalibrationToolBase( name ), + : JetCalibrationToolBase::JetCalibrationToolBase( name ), m_config(config), m_jetAlgo(jetAlgo), m_calibAreaTag(calibAreaTag), m_dev(dev), m_doResidual(doResidual), m_doOrigin(doOrigin), m_isData(isData), - m_useFull4vectorArea(false), m_residualOffsetCorr(NULL) -{ } + m_useFull4vectorArea(false), m_residualOffsetCorr(NULL), m_originScale("") +{ + + declareProperty( "OriginScale", m_originScale = "JetOriginConstitScaleMomentum"); + +} JetPileupCorrection::~JetPileupCorrection() { @@ -32,6 +44,8 @@ JetPileupCorrection::~JetPileupCorrection() { //bool JetPileupCorrection::initializeTool(const std::string& name, TEnv * config, TString jetAlgo, bool doResidual, bool isData) { StatusCode JetPileupCorrection::initializeTool(const std::string& name) { + if (m_doOrigin) ATH_MSG_INFO("OriginScale: " << m_originScale); + m_jetStartScale = m_config->GetValue("PileupStartingScale","JetConstitScaleMomentum"); ATH_MSG_INFO("JetPileupCorrection: Starting scale: " << m_jetStartScale); if ( m_jetStartScale == "DO_NOT_USE" ) { @@ -114,11 +128,11 @@ StatusCode JetPileupCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo& jetE if ( m_doOrigin ) { xAOD::JetFourMom_t jetOriginP4; static unsigned int originWarnings = 0; - if ( jet.getAttribute<xAOD::JetFourMom_t>("JetOriginConstitScaleMomentum",jetOriginP4) ) + if ( jet.getAttribute<xAOD::JetFourMom_t>(m_originScale.c_str(),jetOriginP4) ) calibP4 = jetOriginP4*pileup_SF; else { if ( originWarnings < 20 ) { - ATH_MSG_WARNING("Could not retrieve JetOriginConstitScaleMomentum jet attribute, origin correction will not be applied."); + ATH_MSG_WARNING("Could not retrieve " << m_originScale << " jet attribute, origin correction will not be applied."); ++originWarnings; } calibP4 = jetStartP4*pileup_SF; @@ -143,11 +157,11 @@ StatusCode JetPileupCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo& jetE if ( m_doOrigin ) { xAOD::JetFourMom_t jetOriginP4; static unsigned int originWarnings = 0; - if ( jet.getAttribute<xAOD::JetFourMom_t>("JetOriginConstitScaleMomentum",jetOriginP4) ) + if ( jet.getAttribute<xAOD::JetFourMom_t>(m_originScale.c_str(),jetOriginP4) ) calibP4 = jetOriginP4*area_SF; else { if ( originWarnings < 20 ) { - ATH_MSG_WARNING("Could not retrieve JetOriginConstitScaleMomentum jet attribute, origin correction will not be applied."); + ATH_MSG_WARNING("Could not retrieve " << m_originScale << " jet attribute, origin correction will not be applied."); ++originWarnings; } calibP4 = jetStartP4*area_SF; diff --git a/Reconstruction/Jet/JetCalibTools/Root/JetSmearingCorrection.cxx b/Reconstruction/Jet/JetCalibTools/Root/JetSmearingCorrection.cxx new file mode 100644 index 00000000000..48eea129b79 --- /dev/null +++ b/Reconstruction/Jet/JetCalibTools/Root/JetSmearingCorrection.cxx @@ -0,0 +1,558 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#include "JetCalibTools/CalibrationMethods/JetSmearingCorrection.h" +#include "PathResolver/PathResolver.h" +#include "JetCalibTools/RootHelpers.h" + +JetSmearingCorrection::JetSmearingCorrection(const std::string name) + : JetCalibrationToolBase(name) + , m_config(NULL) + , m_jetAlgo("") + , m_calibAreaTag("") + , m_dev(false) + , m_rand() + , m_jetStartScale("") + , m_jetOutScale("") + , m_smearType(SmearType::UNKNOWN) + , m_histType(HistType::UNKNOWN) + , m_interpType(InterpType::UNKNOWN) + , m_smearResolutionMC() + , m_smearResolutionData() + , m_cachedProjResMC() + , m_cachedProjResData() +{ } + +JetSmearingCorrection::JetSmearingCorrection(const std::string& name, TEnv* config, TString jetAlgo, TString calibAreaTag, bool dev) + : JetCalibrationToolBase(name) + , m_config(config) + , m_jetAlgo(jetAlgo) + , m_calibAreaTag(calibAreaTag) + , m_dev(dev) + , m_rand() + , m_jetStartScale("") + , m_jetOutScale("") + , m_smearType(SmearType::UNKNOWN) + , m_histType(HistType::UNKNOWN) + , m_interpType(InterpType::UNKNOWN) + , m_smearResolutionMC() + , m_smearResolutionData() + , m_cachedProjResMC() + , m_cachedProjResData() +{ } + +JetSmearingCorrection::~JetSmearingCorrection() +{ } + +StatusCode JetSmearingCorrection::initializeTool(const std::string&) +{ + ATH_MSG_INFO("Initializing the jet smearing correction tool"); + + if (!m_config) + { + ATH_MSG_FATAL("Config file not specified. Aborting."); + return StatusCode::FAILURE; + } + if (m_jetAlgo == "") + { + ATH_MSG_FATAL("No jet algorithm specified. Aborting."); + return StatusCode::FAILURE; + } + + // Get the starting and ending jet scales + m_jetStartScale = m_config->GetValue("JSCStartingScale","JetGSCScaleMomentum"); + m_jetOutScale = m_config->GetValue("JSCOutScale","JetSmearedMomentum"); + ATH_MSG_INFO("Reading from " << m_jetStartScale.Data() << " and writing to " << m_jetOutScale.Data()); + + // Get information about how to smear + TString smearType = m_config->GetValue("SmearType",""); + if (smearType == "") + { + ATH_MSG_FATAL("No jet smearing type was specified. Aborting."); + return StatusCode::FAILURE; + } + else if (!smearType.CompareTo("pt",TString::kIgnoreCase)) + m_smearType = SmearType::Pt; + else if (!smearType.CompareTo("mass",TString::kIgnoreCase)) + m_smearType = SmearType::Mass; + else if (!smearType.CompareTo("FourVec",TString::kIgnoreCase)) + m_smearType = SmearType::FourVec; + else + { + ATH_MSG_FATAL("Unrecognized jet smearing type: " << smearType.Data()); + return StatusCode::FAILURE; + } + + // Determine the histogram parametrization + TString histType = m_config->GetValue("SmearingCorrectionHistType",""); + if (histType == "") + { + ATH_MSG_FATAL("No jet smearing histogram parametrization was specified. Aborting."); + return StatusCode::FAILURE; + } + else if (!histType.CompareTo("pt",TString::kIgnoreCase)) + m_histType = HistType::Pt; + else if (!histType.CompareTo("PtEta",TString::kIgnoreCase)) + m_histType = HistType::PtEta; + else if (!histType.CompareTo("PtAbsEta",TString::kIgnoreCase)) + m_histType = HistType::PtAbsEta; + else + { + ATH_MSG_FATAL("Unrecognized jet smearing histogram parametrization: " << histType.Data()); + return StatusCode::FAILURE; + } + + // Determine the histogram interpolation strategy + TString interpType = m_config->GetValue("SmearingCorrectionInterpType",""); + if (interpType == "") + { + ATH_MSG_FATAL("No jet smearing histogram interpolation type was specified. Aborting."); + return StatusCode::FAILURE; + } + else if (!interpType.CompareTo("full",TString::kIgnoreCase)) + m_interpType = InterpType::Full; + else if (!interpType.CompareTo("none",TString::kIgnoreCase)) + m_interpType = InterpType::None; + else if (!interpType.CompareTo("onlyx",TString::kIgnoreCase)) + m_interpType = InterpType::OnlyX; + else if (!interpType.CompareTo("onlyy",TString::kIgnoreCase)) + m_interpType = InterpType::OnlyY; + else + { + ATH_MSG_FATAL("Unrecognized jet smearing interpolation type: " << interpType.Data()); + return StatusCode::FAILURE; + } + + // Find the ROOT file containing the smearing histogram, path comes from the config file + TString smearingFile = m_config->GetValue("SmearingCorrectionFile",""); + if (smearingFile == "") + { + ATH_MSG_FATAL("No jet smearing correction file specified. Aborting."); + return StatusCode::FAILURE; + } + + // Find the name of the MC nominal resolution histogram, from the config file + TString smearingHistNameMC = m_config->GetValue("SmearingHistNameResolutionMC",""); + if (smearingHistNameMC == "") + { + ATH_MSG_FATAL("No MC jet smearing histogram name specified. Aborting."); + return StatusCode::FAILURE; + } + TString smearingHistNameData = m_config->GetValue("SmearingHistNameResolutionData",""); + if (smearingHistNameData == "") + { + ATH_MSG_FATAL("No data jet smearing histogram name specified. Aborting."); + return StatusCode::FAILURE; + } + + // Open the histogram file + if (m_dev) + { + smearingFile.Remove(0,33); + smearingFile.Insert(0,"JetCalibTools/"); + } + else + smearingFile.Insert(14,m_calibAreaTag); + + TString fileName = PathResolverFindCalibFile(smearingFile.Data()); + std::unique_ptr<TFile> inputFile(TFile::Open(fileName)); + if (!inputFile || inputFile->IsZombie()) + { + ATH_MSG_FATAL("Cannot open jet smearing correction file: " << fileName); + return StatusCode::FAILURE; + } + + // Retrieve the histogram froms the file + m_smearResolutionMC = std::unique_ptr<TH1>(dynamic_cast<TH1*>(inputFile->Get(smearingHistNameMC))); + if (!m_smearResolutionMC) + { + ATH_MSG_FATAL("Failed to get specified histogram from the file: " << smearingHistNameMC.Data()); + return StatusCode::FAILURE; + } + m_smearResolutionMC->SetDirectory(0); + + m_smearResolutionData = std::unique_ptr<TH1>(dynamic_cast<TH1*>(inputFile->Get(smearingHistNameData))); + if (!m_smearResolutionData) + { + ATH_MSG_FATAL("Failed to get specified histogram from the file: " << smearingHistNameData.Data()); + return StatusCode::FAILURE; + } + m_smearResolutionData->SetDirectory(0); + + // Done with the input file, close it + inputFile->Close(); + + // Ensure that the histogram we retrieved has the right number of dimensions + // It must match the dimensionality of the parametrization + switch (m_histType) + { + case HistType::Pt: + if (m_smearResolutionMC->GetDimension() != 1) + { + ATH_MSG_FATAL("Specified MC histogram has " << m_smearResolutionMC->GetDimension() << " dimensions, but parametrization expects 1 dimension"); + return StatusCode::FAILURE; + } + if (m_smearResolutionData->GetDimension() != 1) + { + ATH_MSG_FATAL("Specified data histogram has " << m_smearResolutionData->GetDimension() << " dimensions, but parametrization expects 1 dimension"); + return StatusCode::FAILURE; + } + break; + + case HistType::PtEta: + case HistType::PtAbsEta: + if (m_smearResolutionMC->GetDimension() != 2) + { + ATH_MSG_FATAL("Specified MC histogram has " << m_smearResolutionMC->GetDimension() << " dimensions, but parametrization expects 2 dimensions"); + return StatusCode::FAILURE; + } + if (m_smearResolutionData->GetDimension() != 2) + { + ATH_MSG_FATAL("Specified data histogram has " << m_smearResolutionData->GetDimension() << " dimensions, but parametrization expects 2 dimensions"); + return StatusCode::FAILURE; + } + break; + + default: + ATH_MSG_FATAL("Read the histogram, but the parametrization is UNKNOWN"); + return StatusCode::FAILURE; + } + + // Pre-cache the histogram file in 1D projections if relevant (depends on InterpType) + if (m_interpType == InterpType::OnlyX || m_interpType == InterpType::OnlyY) + { + if (cacheProjections(m_smearResolutionMC.get(), m_cachedProjResMC,"mc").isFailure()) + return StatusCode::FAILURE; + if (cacheProjections(m_smearResolutionData.get(),m_cachedProjResData,"data").isFailure()) + return StatusCode::FAILURE; + } + + return StatusCode::SUCCESS; +} + +StatusCode JetSmearingCorrection::readHisto(double& returnValue, TH1* histo, double x) const +{ + // Ensure that the histogram exists + if (!histo) + { + ATH_MSG_ERROR("Unable to read histogram - address is NULL"); + return StatusCode::FAILURE; + } + + // Check dimensionality just to be safe + if (histo->GetDimension() != 1) + { + ATH_MSG_ERROR("Blocking reading of a " << histo->GetDimension() << "D histogram as a 1D histogram"); + return StatusCode::FAILURE; + } + + // Ensure we are within boundaries + const double minX = histo->GetXaxis()->GetBinLowEdge(1); + const double maxX = histo->GetXaxis()->GetBinLowEdge(histo->GetNbinsX()+1); + if ( x >= maxX ) + x = maxX - 1.e-6; + else if ( x <= minX ) + x = minX + 1.e-6; + + // Get the result, interpolating as appropriate + switch (m_interpType) + { + case InterpType::Full: + case InterpType::OnlyX: + returnValue = histo->Interpolate(x); + break; + + case InterpType::None: + returnValue = histo->GetBinContent(histo->GetXaxis()->FindBin(x)); + break; + + default: + ATH_MSG_ERROR("Unsupported interpolation type for a 1D histogram"); + return StatusCode::FAILURE; + } + + return StatusCode::SUCCESS; +} + +StatusCode JetSmearingCorrection::readHisto(double& returnValue, TH1* histo, const std::vector< std::unique_ptr<TH1> >& projections, double x, double y) const +{ + // Ensure that the histogram exists + if (!histo) + { + ATH_MSG_ERROR("Unable to read histogram - address is NULL"); + return StatusCode::FAILURE; + } + + // Check dimensionality just to be safe + if (histo->GetDimension() != 2) + { + ATH_MSG_ERROR("Blocking reading of a " << histo->GetDimension() << "D histogram as a 2D histogram"); + return StatusCode::FAILURE; + } + + // Ensure we are within boundaries + const double minX = histo->GetXaxis()->GetBinLowEdge(1); + const double maxX = histo->GetXaxis()->GetBinLowEdge(histo->GetNbinsX()+1); + if ( x >= maxX ) + x = maxX - 1.e-6; + else if ( x <= minX ) + x = minX + 1.e-6; + const double minY = histo->GetYaxis()->GetBinLowEdge(1); + const double maxY = histo->GetYaxis()->GetBinLowEdge(histo->GetNbinsY()+1); + if ( y >= maxY ) + y = maxY - 1.e-6; + else if ( y <= minY ) + y = minY + 1.e-6; + + // Get the result, interpolating as appropriate + switch (m_interpType) + { + case InterpType::Full: + returnValue = histo->Interpolate(x,y); + break; + + case InterpType::None: + returnValue = histo->GetBinContent(histo->GetXaxis()->FindBin(x),histo->GetYaxis()->FindBin(y)); + break; + + case InterpType::OnlyX: + // Determine the y-bin and use the cached projection to interpolate x + returnValue = projections.at(histo->GetYaxis()->FindBin(y))->Interpolate(x); + break; + + case InterpType::OnlyY: + // Determine the x-bin and use the cached projection to interpolate y + returnValue = projections.at(histo->GetXaxis()->FindBin(x))->Interpolate(y); + break; + + default: + ATH_MSG_ERROR("Unsupported interpolation type for a 2D histogram"); + return StatusCode::FAILURE; + } + + return StatusCode::SUCCESS; +} + + +StatusCode JetSmearingCorrection::getSigmaSmear(xAOD::Jet& jet, double& sigmaSmear) const +{ + /* + Nominal jet smearing + If sigma_data > sigma_MC, then we want to smear MC to match data + If sigma_data < sigma_MC, then we do not want to smear data to match MC + The second case is instead the source of an uncertainty (see JetUncertainties) + + To make MC agree with data: + if (sigma_data > sigma_MC) then sigma_smear^2 = sigma_data^2 - sigma_MC^2 + if (sigma_data < sigma_MC) then do nothing + Smearing using a Gaussian centered at 1 and with a width of sigma_smear + + Note that data is never smeared, as blocked in JetCalibrationTool.cxx + */ + + double resolutionMC = 0; + if (getNominalResolutionMC(jet,resolutionMC).isFailure()) + return StatusCode::FAILURE; + + double resolutionData = 0; + if (getNominalResolutionData(jet,resolutionData).isFailure()) + return StatusCode::FAILURE; + + // Nominal smearing only if data resolution is larger than MC resolution + // This is because we want to smear the MC to match the data + // if MC is larger than data, don't make the nominal data worse, so smear is 0 + if (resolutionMC < resolutionData) + sigmaSmear = sqrt(resolutionData*resolutionData - resolutionMC*resolutionMC); + else + sigmaSmear = 0; + + return StatusCode::SUCCESS; +} + +StatusCode JetSmearingCorrection::getNominalResolution(const xAOD::Jet& jet, TH1* histo, const std::vector< std::unique_ptr<TH1> >& projections, double& resolution) const +{ + double localRes = 0; + switch (m_histType) + { + case HistType::Pt: + if (readHisto(localRes,histo,jet.pt()/m_GeV).isFailure()) + return StatusCode::FAILURE; + break; + + case HistType::PtEta: + if (readHisto(localRes,histo,projections,jet.pt()/m_GeV,jet.eta()).isFailure()) + return StatusCode::FAILURE; + break; + + case HistType::PtAbsEta: + if (readHisto(localRes,histo,projections,jet.pt()/m_GeV,fabs(jet.eta())).isFailure()) + return StatusCode::FAILURE; + break; + + default: + // We should never reach this, it was checked during initialization + ATH_MSG_ERROR("Cannot get the nominal resolution, the smearing histogram type was not set"); + return StatusCode::FAILURE; + } + + // If we got here, everything went well + // Set the resolution and return success + resolution = localRes; + return StatusCode::SUCCESS; +} + +StatusCode JetSmearingCorrection::getNominalResolutionData(const xAOD::Jet& jet, double& resolution) const +{ + return getNominalResolution(jet,m_smearResolutionData.get(),m_cachedProjResData,resolution); +} + +StatusCode JetSmearingCorrection::getNominalResolutionMC(const xAOD::Jet& jet, double& resolution) const +{ + return getNominalResolution(jet,m_smearResolutionMC.get(),m_cachedProjResMC,resolution); +} + + + +StatusCode JetSmearingCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const +{ + // Apply the jet smearing correction + + // Calculate the smearing width to use + double sigmaSmear = 0; + if (getSigmaSmear(jet,sigmaSmear).isFailure()) + return StatusCode::FAILURE; + + // Set the random seed deterministically using jet phi + m_rand.SetSeed(1.e+5*fabs(jet.phi())); + + // Get the Gaussian-distributed random number + // Force this to be a positive value + // Negative values should be extraordinarily rare, but they do exist + double smearingFactor = -1; + while (smearingFactor < 0) + smearingFactor = m_rand.Gaus(1.,sigmaSmear); + + // Apply the smearing factor to the jet as appropriate + xAOD::JetFourMom_t calibP4 = jet.jetP4(); + switch (m_smearType) + { + case SmearType::Pt: + calibP4 = xAOD::JetFourMom_t(jet.pt()*smearingFactor,jet.eta(),jet.phi(),jet.m()); + break; + + case SmearType::Mass: + calibP4 = xAOD::JetFourMom_t(jet.pt(),jet.eta(),jet.phi(),smearingFactor*jet.m()); + break; + + case SmearType::FourVec: + calibP4 = xAOD::JetFourMom_t(jet.pt()*smearingFactor,jet.eta(),jet.phi(),jet.m()*smearingFactor); + break; + + default: + // We should never reach this, it was checked during initialization + ATH_MSG_ERROR("Cannot smear the jet, the smearing type was not set"); + return StatusCode::FAILURE; + } + + // Set the output scale + jet.setAttribute<xAOD::JetFourMom_t>(m_jetOutScale.Data(),calibP4); + jet.setJetP4(calibP4); + + + return StatusCode::SUCCESS; +} + +StatusCode JetSmearingCorrection::cacheProjections(TH1* fullHistogram, std::vector< std::unique_ptr<TH1> >& cacheLocation, const std::string& type) +{ + // Ensure the histogram exists + if (!fullHistogram) + { + ATH_MSG_FATAL("Cannot cache histogram as it doesn't exist: " << type); + return StatusCode::FAILURE; + } + + // Ensure the number of dimensions is sane + if (fullHistogram->GetDimension() < 1 || fullHistogram->GetDimension() > 2) + { + ATH_MSG_FATAL("Unsupported histogram dimensionality for projection caching: " << fullHistogram->GetDimension()); + return StatusCode::FAILURE; + } + + // Protect vs InterpType + switch (m_interpType) + { + case InterpType::OnlyX: + // Simple case of 1D + if (fullHistogram->GetDimension() == 1) + return StatusCode::SUCCESS; + break; + + case InterpType::OnlyY: + // Failure case of 1D + if (fullHistogram->GetDimension() == 1) + { + ATH_MSG_FATAL("Cannot project in Y for a 1D histogram: " << type); + return StatusCode::FAILURE; + } + break; + + default: + ATH_MSG_FATAL("The interpolation type is not supported for caching: " << type); + return StatusCode::FAILURE; + } + + // If we got here, then the request makes sense + // Start the projections + // Intentionally include underflow and overflow bins + // This keeps the same indexing scheme as root + // Avoids confusion and problems later at cost of a small amount of RAM + if (fullHistogram->GetDimension() == 2) + { + TH2* localHist = dynamic_cast<TH2*>(fullHistogram); + if (!localHist) + { + ATH_MSG_FATAL("Failed to convert histogram to a TH2, please check inputs: " << type); + return StatusCode::FAILURE; + } + if (m_interpType == InterpType::OnlyX) + { + for (Long64_t binY = 0; binY < localHist->GetNbinsY()+1; ++binY) + { + // Single bin of Y, interpolate across X + cacheLocation.emplace_back(localHist->ProjectionX(Form("projx_%s_%lld",type.c_str(),binY),binY,binY)); + } + } + else if (m_interpType == InterpType::OnlyY) + { + for (Long64_t binX = 0; binX < localHist->GetNbinsX()+1; ++binX) + { + // Single bin of X, interpolate across Y + cacheLocation.emplace_back(localHist->ProjectionY(Form("projy_%s_%lld",type.c_str(),binX),binX,binX)); + } + } + else + { + // We shouldn't make it here due to earlier checks + ATH_MSG_FATAL("Unexpected interpolation type, somehow escaped earlier checks: " << type); + return StatusCode::FAILURE; + } + } + else + { + // We shouldn't make it here due to earlier checks + ATH_MSG_FATAL("Unexpected dimensionality: " << fullHistogram->GetDimension()); + return StatusCode::FAILURE; + } + + // Ensure that ROOT doesn't try to take posession + for (auto& hist : cacheLocation) + { + hist->SetDirectory(nullptr); + } + + // All done + return StatusCode::SUCCESS; +} + + diff --git a/Reconstruction/Jet/JetCalibTools/Root/NPVBeamspotCorrection.cxx b/Reconstruction/Jet/JetCalibTools/Root/NPVBeamspotCorrection.cxx index 6cbbb41019c..af93cced3cc 100644 --- a/Reconstruction/Jet/JetCalibTools/Root/NPVBeamspotCorrection.cxx +++ b/Reconstruction/Jet/JetCalibTools/Root/NPVBeamspotCorrection.cxx @@ -68,35 +68,6 @@ double NPVBeamspotCorrection::GetNVertexBsCorrection(double nRecoVtx) return m_g_nvtx_nreco_bs47mm->Eval(m_invGraph->Eval(nRecoVtx)); } -/* -double NPVBeamspotCorrection::GetNVertexBsCorrection(double nRecoVtx) { - - //get corresponding NReconstructible (points are already sorted in X, monotonic in Y) - double nRecon=-1; - if (nRecoVtx < m_g_nvtx_nreco_bs66mm->GetY()[0]) { - std::cout << "WARNING - NPVBeamspotCorrection: Requested nVertex outside the expected range: " << nRecoVtx << std::endl; - return nRecoVtx; //do not correct - } - if (nRecoVtx > m_g_nvtx_nreco_bs66mm->GetY()[m_g_nvtx_nreco_bs66mm->GetN()-1]) { - std::cout << "WARNING - NPVBeamspotCorrection: Requested nVertex outside the expected range: " << nRecoVtx << std::endl; - return nRecoVtx; //do not correct - } - for (int i=1; i < m_g_nvtx_nreco_bs66mm->GetN(); i++) { - if (nRecoVtx < m_g_nvtx_nreco_bs66mm->GetY()[i]) { - //linear interpolation - nRecon = m_g_nvtx_nreco_bs66mm->GetX()[i-1]+(nRecoVtx - (m_g_nvtx_nreco_bs66mm->GetY()[i-1])) * - (m_g_nvtx_nreco_bs66mm->GetX()[i] - m_g_nvtx_nreco_bs66mm->GetX()[i-1]) / - (m_g_nvtx_nreco_bs66mm->GetY()[i] - m_g_nvtx_nreco_bs66mm->GetY()[i-1]); - - break; - } - } - - //now return corresponding reconstructed vertices for bs=47mm - return m_g_nvtx_nreco_bs47mm->Eval(nRecon); -} -*/ - TGraph* NPVBeamspotCorrection::NVtx_NReconstructible_bs47mm() { TGraph *graph = new TGraph(41); graph->SetName("g_shadowedAverage_bs47mm"); diff --git a/Reconstruction/Jet/JetCalibTools/Root/ResidualOffsetCorrection.cxx b/Reconstruction/Jet/JetCalibTools/Root/ResidualOffsetCorrection.cxx index 985695def8d..2a93cfdbacb 100644 --- a/Reconstruction/Jet/JetCalibTools/Root/ResidualOffsetCorrection.cxx +++ b/Reconstruction/Jet/JetCalibTools/Root/ResidualOffsetCorrection.cxx @@ -6,19 +6,19 @@ #include "PathResolver/PathResolver.h" ResidualOffsetCorrection::ResidualOffsetCorrection() - : asg::AsgTool( "ResidualOffsetCorrection::ResidualOffsetCorrection" ), + : JetCalibrationToolBase( "ResidualOffsetCorrection::ResidualOffsetCorrection" ), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false), m_isData(false), m_npvBeamspotCorr(NULL), m_resOffsetBins(NULL) { } ResidualOffsetCorrection::ResidualOffsetCorrection(const std::string& name) - : asg::AsgTool( name ), + : JetCalibrationToolBase( name ), m_config(NULL), m_jetAlgo(""), m_calibAreaTag(""), m_dev(false), m_isData(false), m_npvBeamspotCorr(NULL), m_resOffsetBins(NULL) { } ResidualOffsetCorrection::ResidualOffsetCorrection(const std::string& name, TEnv * config, TString jetAlgo, TString calibAreaTag, bool isData, bool dev) - : asg::AsgTool( name ), + : JetCalibrationToolBase( name ), m_config(config), m_jetAlgo(jetAlgo), m_calibAreaTag(calibAreaTag), m_dev(dev), m_isData(isData), m_npvBeamspotCorr(NULL), m_resOffsetBins(NULL) { } @@ -47,8 +47,8 @@ StatusCode ResidualOffsetCorrection::initializeTool(const std::string&) { //Add the residual offset correction factors to the config TEnv TString ResidualOffsetCalibFile = m_config->GetValue("ResidualOffset.CalibFile",""); if(m_dev){ + ResidualOffsetCalibFile.Remove(0,33); ResidualOffsetCalibFile.Insert(0,"JetCalibTools/"); - ResidualOffsetCalibFile.Insert(28,m_calibAreaTag); } else{ResidualOffsetCalibFile.Insert(14,m_calibAreaTag);} TString calibFile = PathResolverFindCalibFile(ResidualOffsetCalibFile.Data()); diff --git a/Reconstruction/Jet/JetCalibTools/Root/RootHelpers.cxx b/Reconstruction/Jet/JetCalibTools/Root/RootHelpers.cxx new file mode 100644 index 00000000000..de269f392e7 --- /dev/null +++ b/Reconstruction/Jet/JetCalibTools/Root/RootHelpers.cxx @@ -0,0 +1,324 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "JetCalibTools/RootHelpers.h" + +#include "TH1.h" +#include "TMath.h" + +namespace RootHelpers +{ + + +Int_t FindBin(const TAxis* axis, const double x) +{ + // Copied from ROOT directly and trivially modified, all credit to ROOT authors of TAxis FindBin method + // This is done because I want a const version of bin finding (no expanding on under/overflow) + const double fXmin = axis->GetXmin(); + const double fXmax = axis->GetXmax(); + const Int_t fNbins = axis->GetNbins(); + const TArrayD* fXbins = axis->GetXbins(); + Int_t bin; + if (x < fXmin) { //*-* underflow + bin = 0; + } else if ( !(x < fXmax)) { //*-* overflow (note the way to catch NaN + bin = fNbins+1; + } else { + if (!fXbins->fN) { //*-* fix bins + bin = 1 + int (fNbins*(x-fXmin)/(fXmax-fXmin) ); + } else { //*-* variable bin sizes + //for (bin =1; x >= fXbins->fArray[bin]; bin++); + bin = 1 + TMath::BinarySearch(fXbins->fN,fXbins->fArray,x); + } + } + return bin; +} + + +double Interpolate(const TH1* histo, const double x) +{ + // Copied from ROOT directly and trivially modified, all credit to ROOT authors of TH1, TH2, and TH3 Interpolate methods + // This is done because I want a const version of interpolation, and none of the methods require modification of the histogram + // Probable reason is that FindBin isn't const, but there should be a const version... + Int_t xbin = RootHelpers::FindBin(histo->GetXaxis(),x); + Double_t x0,x1,y0,y1; + + if(x<=histo->GetBinCenter(1)) { + return histo->GetBinContent(1); + } else if(x>=histo->GetBinCenter(histo->GetNbinsX())) { + return histo->GetBinContent(histo->GetNbinsX()); + } else { + if(x<=histo->GetBinCenter(xbin)) { + y0 = histo->GetBinContent(xbin-1); + x0 = histo->GetBinCenter(xbin-1); + y1 = histo->GetBinContent(xbin); + x1 = histo->GetBinCenter(xbin); + } else { + y0 = histo->GetBinContent(xbin); + x0 = histo->GetBinCenter(xbin); + y1 = histo->GetBinContent(xbin+1); + x1 = histo->GetBinCenter(xbin+1); + } + return y0 + (x-x0)*((y1-y0)/(x1-x0)); + } +} + +double Interpolate(const TH1* histo, const double x, const double y) +{ + // Call the unified method for consistency + return RootHelpers::Interpolate2D(histo,x,y,1,2,-1); +} + +double Interpolate2D(const TH1* histo, const double x, const double y, const int xAxis, const int yAxis, const int otherDimBin) +{ + // Copied from ROOT directly and trivially modified, all credit to ROOT authors of TH1, TH2, and TH3 Interpolate methods + // This is done because I want a const version of interpolation, and none of the methods require modification of the histogram + // Probable reason is that FindBin isn't const, but there should be a const version... + const TAxis* fXaxis = xAxis == 1 ? histo->GetXaxis() : xAxis == 2 ? histo->GetYaxis() : xAxis == 3 ? histo->GetZaxis() : NULL; + const TAxis* fYaxis = yAxis == 1 ? histo->GetXaxis() : yAxis == 2 ? histo->GetYaxis() : yAxis == 3 ? histo->GetZaxis() : NULL; + + if (!fXaxis || !fYaxis) + { + histo->Error("Interpolate2D","Failed to parse axes from inputs"); + return 0; + } + + Double_t f=0; + Double_t x1=0,x2=0,y1=0,y2=0; + Double_t dx,dy; + Int_t bin_x = RootHelpers::FindBin(fXaxis,x); + Int_t bin_y = RootHelpers::FindBin(fYaxis,y); + if(bin_x<1 || bin_x>fXaxis->GetNbins() || bin_y<1 || bin_y>fYaxis->GetNbins()) { + histo->Error("Interpolate","Cannot interpolate outside histogram domain. (x: %f vs [%f,%f], y: %f vs [%f,%f])",x,fXaxis->GetBinLowEdge(1),fXaxis->GetBinLowEdge(fXaxis->GetNbins()+1),y,fYaxis->GetBinLowEdge(1),fYaxis->GetBinLowEdge(fYaxis->GetNbins()+1)); + return 0; + } + Int_t quadrant = 0; // CCW from UR 1,2,3,4 + // which quadrant of the bin (bin_P) are we in? + dx = fXaxis->GetBinUpEdge(bin_x)-x; + dy = fYaxis->GetBinUpEdge(bin_y)-y; + if (dx<=fXaxis->GetBinWidth(bin_x)/2 && dy<=fYaxis->GetBinWidth(bin_y)/2) + quadrant = 1; // upper right + if (dx>fXaxis->GetBinWidth(bin_x)/2 && dy<=fYaxis->GetBinWidth(bin_y)/2) + quadrant = 2; // upper left + if (dx>fXaxis->GetBinWidth(bin_x)/2 && dy>fYaxis->GetBinWidth(bin_y)/2) + quadrant = 3; // lower left + if (dx<=fXaxis->GetBinWidth(bin_x)/2 && dy>fYaxis->GetBinWidth(bin_y)/2) + quadrant = 4; // lower right + switch(quadrant) { + case 1: + x1 = fXaxis->GetBinCenter(bin_x); + y1 = fYaxis->GetBinCenter(bin_y); + x2 = fXaxis->GetBinCenter(bin_x+1); + y2 = fYaxis->GetBinCenter(bin_y+1); + break; + case 2: + x1 = fXaxis->GetBinCenter(bin_x-1); + y1 = fYaxis->GetBinCenter(bin_y); + x2 = fXaxis->GetBinCenter(bin_x); + y2 = fYaxis->GetBinCenter(bin_y+1); + break; + case 3: + x1 = fXaxis->GetBinCenter(bin_x-1); + y1 = fYaxis->GetBinCenter(bin_y-1); + x2 = fXaxis->GetBinCenter(bin_x); + y2 = fYaxis->GetBinCenter(bin_y); + break; + case 4: + x1 = fXaxis->GetBinCenter(bin_x); + y1 = fYaxis->GetBinCenter(bin_y-1); + x2 = fXaxis->GetBinCenter(bin_x+1); + y2 = fYaxis->GetBinCenter(bin_y); + break; + } + Int_t bin_x1 = RootHelpers::FindBin(fXaxis,x1); + if(bin_x1<1) bin_x1=1; + Int_t bin_x2 = RootHelpers::FindBin(fXaxis,x2); + if(bin_x2>fXaxis->GetNbins()) bin_x2=fXaxis->GetNbins(); + Int_t bin_y1 = RootHelpers::FindBin(fYaxis,y1); + if(bin_y1<1) bin_y1=1; + Int_t bin_y2 = RootHelpers::FindBin(fYaxis,y2); + if(bin_y2>fYaxis->GetNbins()) bin_y2=fYaxis->GetNbins(); + + Double_t q11; + Double_t q12; + Double_t q21; + Double_t q22; + if (otherDimBin > 0) + { + // X,Y variable and Z fixed + if (xAxis == 1 && yAxis == 2) + { + q11 = histo->GetBinContent(histo->GetBin(bin_x1,bin_y1,otherDimBin)); + q12 = histo->GetBinContent(histo->GetBin(bin_x1,bin_y2,otherDimBin)); + q21 = histo->GetBinContent(histo->GetBin(bin_x2,bin_y1,otherDimBin)); + q22 = histo->GetBinContent(histo->GetBin(bin_x2,bin_y2,otherDimBin)); + } + // X,Z variable and Y fixed + else if (xAxis == 1 && yAxis == 3) + { + q11 = histo->GetBinContent(histo->GetBin(bin_x1,otherDimBin,bin_y1)); + q12 = histo->GetBinContent(histo->GetBin(bin_x1,otherDimBin,bin_y2)); + q21 = histo->GetBinContent(histo->GetBin(bin_x2,otherDimBin,bin_y1)); + q22 = histo->GetBinContent(histo->GetBin(bin_x2,otherDimBin,bin_y2)); + } + // Y,Z variable and X fixed + else if (xAxis == 2 && yAxis == 3) + { + q11 = histo->GetBinContent(histo->GetBin(otherDimBin,bin_x1,bin_y1)); + q12 = histo->GetBinContent(histo->GetBin(otherDimBin,bin_x1,bin_y2)); + q21 = histo->GetBinContent(histo->GetBin(otherDimBin,bin_x2,bin_y1)); + q22 = histo->GetBinContent(histo->GetBin(otherDimBin,bin_x2,bin_y2)); + } + // Y,X variable and Z fixed + else if (xAxis == 2 && yAxis == 1) + { + q11 = histo->GetBinContent(histo->GetBin(bin_y1,bin_x1,otherDimBin)); + q12 = histo->GetBinContent(histo->GetBin(bin_y1,bin_x2,otherDimBin)); + q21 = histo->GetBinContent(histo->GetBin(bin_y2,bin_x1,otherDimBin)); + q22 = histo->GetBinContent(histo->GetBin(bin_y2,bin_x2,otherDimBin)); + } + // Z,X variable and Y fixed + else if (xAxis == 3 && yAxis == 1) + { + q11 = histo->GetBinContent(histo->GetBin(bin_y1,otherDimBin,bin_x1)); + q12 = histo->GetBinContent(histo->GetBin(bin_y1,otherDimBin,bin_x2)); + q21 = histo->GetBinContent(histo->GetBin(bin_y2,otherDimBin,bin_x1)); + q22 = histo->GetBinContent(histo->GetBin(bin_y2,otherDimBin,bin_x2)); + } + // Z,Y variable and X fixed + else if (xAxis == 3 && yAxis == 2) + { + q11 = histo->GetBinContent(histo->GetBin(otherDimBin,bin_y1,bin_x1)); + q12 = histo->GetBinContent(histo->GetBin(otherDimBin,bin_y1,bin_x2)); + q21 = histo->GetBinContent(histo->GetBin(otherDimBin,bin_y2,bin_x1)); + q22 = histo->GetBinContent(histo->GetBin(otherDimBin,bin_y2,bin_x2)); + } + else + { + histo->Error("Interpolate2D","Unsupported axis combination: (x,y)=(%d,%d) with one bin fixed",xAxis,yAxis); + return 0; + } + } + else + { + // X,Y variable, no Z + if (xAxis == 1 && yAxis == 2) + { + q11 = histo->GetBinContent(histo->GetBin(bin_x1,bin_y1)); + q12 = histo->GetBinContent(histo->GetBin(bin_x1,bin_y2)); + q21 = histo->GetBinContent(histo->GetBin(bin_x2,bin_y1)); + q22 = histo->GetBinContent(histo->GetBin(bin_x2,bin_y2)); + } + // Y,X variable, no Z + else if (xAxis == 2 && yAxis == 1) + { + q11 = histo->GetBinContent(histo->GetBin(bin_y1,bin_x1)); + q12 = histo->GetBinContent(histo->GetBin(bin_y1,bin_x2)); + q21 = histo->GetBinContent(histo->GetBin(bin_y2,bin_x1)); + q22 = histo->GetBinContent(histo->GetBin(bin_y2,bin_x2)); + } + else + { + histo->Error("Interpolate2D","Unsupported axis combination: (x,y)=(%d,%d)",xAxis,yAxis); + return 0; + } + } + + Double_t d = 1.0*(x2-x1)*(y2-y1); + f = 1.0*q11/d*(x2-x)*(y2-y)+1.0*q21/d*(x-x1)*(y2-y)+1.0*q12/d*(x2-x)*(y-y1)+1.0*q22/d*(x-x1)*(y-y1); + return f; +} + +double Interpolate(const TH1* histo, const double x, const double y, const double z) +{ + // Copied from ROOT directly and trivially modified, all credit to ROOT authors of TH1, TH2, and TH3 Interpolate methods + // This is done because I want a const version of interpolation, and none of the methods require modification of the histogram + // Probable reason is that FindBin isn't const, but there should be a const version... + const TAxis* fXaxis = histo->GetXaxis(); + const TAxis* fYaxis = histo->GetYaxis(); + const TAxis* fZaxis = histo->GetZaxis(); + + // Find the bin by bin edges + Int_t ubx = RootHelpers::FindBin(fXaxis,x); + Int_t uby = RootHelpers::FindBin(fYaxis,y); + Int_t ubz = RootHelpers::FindBin(fZaxis,z); + + // Check if the value(s) are outside of the bin range(s) + if ( ubx < 1 || ubx > histo->GetNbinsX() || uby < 1 || uby > histo->GetNbinsY() || ubz < 1 || ubz > histo->GetNbinsZ() ) + { + histo->Error("Interpolate","Cannot interpolate outside histogram domain. (x: %f vs [%f,%f], y: %f vs [%f,%f], z: %f vs [%f,%f])",x,fXaxis->GetBinLowEdge(1),fXaxis->GetBinLowEdge(histo->GetNbinsX()+1),y,fYaxis->GetBinLowEdge(1),fYaxis->GetBinLowEdge(histo->GetNbinsY()+1),z,fZaxis->GetBinLowEdge(1),fZaxis->GetBinLowEdge(histo->GetNbinsZ()+1)); + return 0; + } + + // Now switch from bin edges to bin centres + // Note that we want to support edge cases, so it is possible that ub* == ob* + // This functionality is not in original ROOT TH3::Interpolate() + // This functionality is inspired by TH2::Interpolate() + Int_t obx = ubx + 1; + Int_t oby = uby + 1; + Int_t obz = ubz + 1; + + // Calculate distance weights before checking under/overflow bins + Double_t xw = fXaxis->GetBinCenter(obx) - fXaxis->GetBinCenter(ubx); + Double_t yw = fYaxis->GetBinCenter(oby) - fYaxis->GetBinCenter(uby); + Double_t zw = fZaxis->GetBinCenter(obz) - fZaxis->GetBinCenter(ubz); + + if (x < fXaxis->GetBinCenter(ubx)) { ubx -= 1; obx -= 1; } + if (ubx < 1) ubx = 1; + if (obx > histo->GetNbinsX()) obx = histo->GetNbinsX(); + + if (y < fYaxis->GetBinCenter(uby)) { uby -= 1; oby -= 1; } + if (uby < 1) uby = 1; + if (oby > histo->GetNbinsY()) oby = histo->GetNbinsY(); + + if (z < fZaxis->GetBinCenter(ubz)) { ubz -= 1; obz -= 1; } + if (ubz < 1) ubz = 1; + if (obz > histo->GetNbinsZ()) obz = histo->GetNbinsZ(); + + // Edge cases were tried with weights set including the under/overflow bins (to follow what TH2::Interpolate() does for boundaries) + // In some cases, it performed quite poorly + // Tests of switching to 2D interpolation with the third dimension fixed appeared to work much better + // Thus, the below is now a switch to bilinear interpolation when bin(s) are equal in trilinear interpolation + + // The below code block contains added functionality with respect to standard ROOT TH3::Interpolate() + // Fall back on bilinear interpolation + { + if (ubz == obz) + return RootHelpers::Interpolate2D(histo,x,y,1,2,ubz); + else if (uby == oby) + return RootHelpers::Interpolate2D(histo,x,z,1,3,uby); + else if (ubx == obx) + return RootHelpers::Interpolate2D(histo,y,z,2,3,ubx); + + } + + // Not a boundary case, resume normal ROOT::TH3::Interpolate() + Double_t xd = (x - fXaxis->GetBinCenter(ubx)) / xw; + Double_t yd = (y - fYaxis->GetBinCenter(uby)) / yw; + Double_t zd = (z - fZaxis->GetBinCenter(ubz)) / zw; + + + Double_t v[] = { histo->GetBinContent( ubx, uby, ubz ), histo->GetBinContent( ubx, uby, obz ), + histo->GetBinContent( ubx, oby, ubz ), histo->GetBinContent( ubx, oby, obz ), + histo->GetBinContent( obx, uby, ubz ), histo->GetBinContent( obx, uby, obz ), + histo->GetBinContent( obx, oby, ubz ), histo->GetBinContent( obx, oby, obz ) }; + + + Double_t i1 = v[0] * (1 - zd) + v[1] * zd; + Double_t i2 = v[2] * (1 - zd) + v[3] * zd; + Double_t j1 = v[4] * (1 - zd) + v[5] * zd; + Double_t j2 = v[6] * (1 - zd) + v[7] * zd; + + + Double_t w1 = i1 * (1 - yd) + i2 * yd; + Double_t w2 = j1 * (1 - yd) + j2 * yd; + + + Double_t result = w1 * (1 - xd) + w2 * xd; + + return result; +} + + +} // end RootHelpers namespace diff --git a/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_Example.cxx b/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_Example.cxx index 575c6105eb7..e2dc6c38d05 100644 --- a/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_Example.cxx +++ b/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_Example.cxx @@ -142,7 +142,6 @@ int main(int argc, char* argv[]){ POOL::TEvent event( POOL::TEvent::kClassAccess ); CHECK_WITH_CONTEXT( event.readFrom( ifile.get() ), APP_NAME, 1 ); #endif - //---------------------------------- // Initialization of JetCalibTools diff --git a/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_PlotJESFactors.cxx b/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_PlotJESFactors.cxx new file mode 100644 index 00000000000..9d28af0d69b --- /dev/null +++ b/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_PlotJESFactors.cxx @@ -0,0 +1,221 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "JetCalibTools/JetCalibrationTool.h" + +#include "xAODJet/Jet.h" +#include "xAODJet/JetContainer.h" +#include "xAODJet/JetAuxContainer.h" + +#include "xAODRootAccess/TEvent.h" +#include "xAODRootAccess/TStore.h" + +#include "AsgTools/AnaToolHandle.h" + +#include <vector> +#include "TString.h" +#include "TH2D.h" +#include "TCanvas.h" + + +namespace jet +{ + /// JetFourMomAccessor is an extension of JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t> + /// AccessorWrapper<xAOD::JetFourMom_t> purpose is to provide a direct and simple access to JetFourMom_t attributes (which are + /// internally saved as 4 floats inside jets). + /// JetFourMomAccessor is here to workaround 2 limitations of AccessorWrapper + /// - it does not provide an operator() method + /// - it does not provide const methods as needed in this package. + /// AccessorWrapper should be updated to remove these limitations. + /// when this happens, JetFourMomAccessor can just be replaced by a typedef to the AccessorWrapper<xAOD::JetFourMom_t> + class JetFourMomAccessor: public xAOD::JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t> { + public: + using xAOD::JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t>::AccessorWrapper; + xAOD::JetFourMom_t operator()(const xAOD::Jet & jet) const {return const_cast<JetFourMomAccessor*>(this)->getAttribute(jet);} + }; +} + + + +int main (int argc, char* argv[]) +{ + // Check argument usage + if (argc < 4 || argc > 6) + { + std::cout << "USAGE: " << argv[0] << " <JetCollection> <ConfigFile> <OutputFile> (dev mode switch) (JES_vs_E switch)" << std::endl; + return 1; + } + + // Store the arguments + const TString jetAlgo = argv[1]; + const TString config = argv[2]; + const TString outFile = argv[3]; + const bool isDevMode = ( argc > 4 && (TString(argv[4]) == "true" || TString(argv[4]) == "dev") ) ? true : false; + const bool vsE = ( argc > 5 && (TString(argv[5]) == "true") ) ? true : false; + + // Derived information + const bool outFileIsExtensible = outFile.EndsWith(".pdf") || outFile.EndsWith(".ps") || outFile.EndsWith(".root"); + + // Assumed constants + const TString calibSeq = "EtaJES"; // only want to apply the JES here + const bool isData = false; // doesn't actually matter for JES, which is always active + float massForScan = 80.385e3; // W-boson + if ( !jetAlgo.Contains("AntiKt10") ) massForScan = 0; + + // Accessor strings + TString startingScaleString = "JetConstitScaleMomentum"; + if ( !jetAlgo.Contains("AntiKt10") ) startingScaleString = "JetPileupScaleMomentum"; + const TString endingScaleString = "JetEtaJESScaleMomentum"; + const TString detectorEtaString = "DetectorEta"; + + // Accessors + jet::JetFourMomAccessor startingScale(startingScaleString.Data()); + jet::JetFourMomAccessor endingScale(endingScaleString.Data()); + SG::AuxElement::Accessor<float> detectorEta(detectorEtaString.Data()); + + + // Create the calib tool + asg::AnaToolHandle<IJetCalibrationTool> calibTool; + calibTool.setTypeAndName("JetCalibrationTool/MyJetCalibTool"); + if ( !calibTool.isUserConfigured() ) + { + if (ASG_MAKE_ANA_TOOL(calibTool, JetCalibrationTool).isFailure()) + { + std::cout << "Failed to make ana tool" << std::endl; + return 2; + } + if (calibTool.setProperty("JetCollection",jetAlgo.Data()).isFailure()) + { + std::cout << "Failed to set JetCollection: " << jetAlgo.Data() << std::endl; + return 3; + } + if (calibTool.setProperty("ConfigFile",config.Data()).isFailure()) + { + std::cout << "Failed to set ConfigFile: " << config.Data() << std::endl; + return 3; + } + if (calibTool.setProperty("CalibSequence",calibSeq.Data()).isFailure()) + { + std::cout << "Failed to set CalibSequence: " << calibSeq.Data() << std::endl; + return 3; + } + if (calibTool.setProperty("IsData",isData).isFailure()) + { + std::cout << "Failed to set IsData: " << (isData ? std::string("true") : std::string("false")) << std::endl; + return 3; + } + if (isDevMode && calibTool.setProperty("DEVmode",isDevMode).isFailure()) + { + std::cout << "Failed to set DEVmode" << std::endl; + return 4; + } + if (calibTool.retrieve().isFailure()) + { + std::cout << "Failed to initialize the JetCalibTool" << std::endl; + return 5; + } + } + + + // Build a jet container and a jet for us to manipulate later + xAOD::TEvent event; + xAOD::TStore store; + xAOD::JetContainer* jets = new xAOD::JetContainer(); + jets->setStore(new xAOD::JetAuxContainer()); + jets->push_back(new xAOD::Jet()); + xAOD::Jet* jet = jets->at(0); + + + // Make the histogram to fill + TH2D* hist_pt_eta; + if ( jetAlgo.Contains("AntiKt10") ) hist_pt_eta = new TH2D("JES_pt_eta",Form("JES for jets with mass=%.1f GeV",massForScan/1.e3),1200,100,2500,60,-3,3); + else { hist_pt_eta = new TH2D("JES_pt_eta",Form("JES for jets with mass=%.1f GeV",massForScan/1.e3),2500,20,5000,90,-4.5,4.5); } + + // Fill the histogram + for (int xBin = 1; xBin <= hist_pt_eta->GetNbinsX(); ++xBin) + { + const double pt = hist_pt_eta->GetXaxis()->GetBinCenter(xBin)*1.e3; // E if vsE + for (int yBin = 1; yBin <= hist_pt_eta->GetNbinsY(); ++yBin) + { + const double eta = hist_pt_eta->GetYaxis()->GetBinCenter(yBin); + + // Set the main 4-vector and scale 4-vector + if ( !vsE ){ + jet->setJetP4(xAOD::JetFourMom_t(pt,eta,0,massForScan)); + detectorEta(*jet) = eta; + startingScale.setAttribute(*jet,xAOD::JetFourMom_t(pt,eta,0,massForScan)); + } else { + const double E = pt; // pt is actually E if vsE + const double pT = sqrt((E*E)-(massForScan*massForScan))/cosh(eta); + jet->setJetP4(xAOD::JetFourMom_t(pT,eta,0,massForScan)); + detectorEta(*jet) = eta; + startingScale.setAttribute(*jet,xAOD::JetFourMom_t(pT,eta,0,massForScan)); + } + + // Jet kinematics set, now apply calibration + xAOD::Jet* calibJet = nullptr; + calibTool->calibratedCopy(*jet,calibJet); + + // Calculate the scale factors + const double JES = calibJet->e()/startingScale(*jet).e(); + + // JMS retrieved, fill the plot(s) + hist_pt_eta->SetBinContent(xBin,yBin,JES); + + // Clean up + delete calibJet; + } + } + + + + // Make the plots + + // First the canvas + TCanvas* canvas = new TCanvas("canvas"); + canvas->SetMargin(0.07,0.13,0.1,0.10); + canvas->SetFillStyle(4000); + canvas->SetFillColor(0); + canvas->SetFrameBorderMode(0); + canvas->cd(); + canvas->SetLogx(true); + + // Now labels/etc + hist_pt_eta->SetStats(false); + if ( !vsE ) hist_pt_eta->GetXaxis()->SetTitle("Jet #it{p}_{T} [GeV]"); + else { hist_pt_eta->GetXaxis()->SetTitle("Jet E [GeV]"); } + hist_pt_eta->GetXaxis()->SetTitleOffset(1.35); + hist_pt_eta->GetXaxis()->SetMoreLogLabels(); + hist_pt_eta->GetYaxis()->SetTitle("#eta"); + hist_pt_eta->GetYaxis()->SetTitleOffset(0.9); + hist_pt_eta->GetZaxis()->SetTitle("JES_{Factor}"); + + // Now write them out + if (outFileIsExtensible) + { + + if ( outFile.EndsWith(".pdf") || outFile.EndsWith(".ps") ){ + canvas->Print(outFile+"["); + hist_pt_eta->Draw("colz"); + canvas->Print(outFile); + canvas->Print(outFile+"]"); + } else if ( outFile.EndsWith(".root") ){ + TFile *fout = new TFile(outFile.Data(),"RECREATE"); + hist_pt_eta->Write(); + fout->Close(); + delete fout; + } + + } + else + { + unsigned int counter = 1; + hist_pt_eta->Draw("colz"); + canvas->Print(Form("%u-fixMass-%s",counter++,outFile.Data())); + } + + delete hist_pt_eta; + + return 0; +} diff --git a/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_PlotJMSFactors.cxx b/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_PlotJMSFactors.cxx new file mode 100644 index 00000000000..dcc2e76920a --- /dev/null +++ b/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_PlotJMSFactors.cxx @@ -0,0 +1,330 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "JetCalibTools/JetCalibrationTool.h" + +#include "xAODJet/Jet.h" +#include "xAODJet/JetContainer.h" +#include "xAODJet/JetAuxContainer.h" + +#include "xAODRootAccess/TEvent.h" +#include "xAODRootAccess/TStore.h" + +#include "AsgTools/AnaToolHandle.h" + +#include <vector> +#include "TString.h" +#include "TH2D.h" +#include "TCanvas.h" + + +namespace jet +{ + /// JetFourMomAccessor is an extension of JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t> + /// AccessorWrapper<xAOD::JetFourMom_t> purpose is to provide a direct and simple access to JetFourMom_t attributes (which are + /// internally saved as 4 floats inside jets). + /// JetFourMomAccessor is here to workaround 2 limitations of AccessorWrapper + /// - it does not provide an operator() method + /// - it does not provide const methods as needed in this package. + /// AccessorWrapper should be updated to remove these limitations. + /// when this happens, JetFourMomAccessor can just be replaced by a typedef to the AccessorWrapper<xAOD::JetFourMom_t> + class JetFourMomAccessor: public xAOD::JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t> { + public: + using xAOD::JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t>::AccessorWrapper; + xAOD::JetFourMom_t operator()(const xAOD::Jet & jet) const {return const_cast<JetFourMomAccessor*>(this)->getAttribute(jet);} + }; +} + + +double mTA(const double trackMass, const double trackPt, const double caloPt) +{ + return trackMass * caloPt / trackPt; +} + + + +int main (int argc, char* argv[]) +{ + // Check argument usage + if (argc != 5 && argc != 6) + { + std::cout << "USAGE: " << argv[0] << " <JetCollection> <ConfigFile> <OutputFile> <mass type> (dev mode switch)" << std::endl; + std::cout << "\tMass types: \"calo\", \"TA\", \"comb\" (capitalization is ignored)" << std::endl; + return 1; + } + + // Store the arguments + const TString jetAlgo = argv[1]; + const TString config = argv[2]; + const TString outFile = argv[3]; + const TString massType = argv[4]; + const bool isDevMode = ( argc > 5 && (TString(argv[5]) == "true" || TString(argv[5]) == "dev") ) ? true : false; + + // Derived information + const bool outFileIsExtensible = outFile.EndsWith(".pdf") || outFile.EndsWith(".ps"); + const bool outFileIsRoot = outFile.EndsWith(".root"); + const bool doCombMass = !massType.CompareTo("comb",TString::kIgnoreCase); + const bool doCaloMass = doCombMass || !massType.CompareTo("calo",TString::kIgnoreCase); + const bool doTAMass = doCombMass || !massType.CompareTo("ta",TString::kIgnoreCase); + + // Assumed constants + const TString calibSeq = "JMS"; // only want to apply the JMS here + const bool isData = false; // doesn't actually matter for JMS, which is always active + const float massForScan = 80.385e3; // W-boson + const float etaForScan = 0; // central jets + const float etaRange = (doCombMass || doTAMass) ? 2 : 3; // how far to go in |eta| (-etaRange,etaRange) + const float trackMassFactor = 2./3.; // Recall: mTA = ptCalo * (mTrack/ptTrack), this multiplies mTrack + const float trackPtFactor = 2./3.; // Recall: mTA = ptCalo * (mTrack/ptTrack), this multiplies ptTrack + + // Accessor strings + const TString startingScaleString = "JetEtaJESScaleMomentum"; + const TString caloMassScaleString = "JetJMSScaleMomentumCalo"; + const TString taMassScaleString = "JetJMSScaleMomentumTA"; + const TString taMassFloatString = "JetTrackAssistedMassCalibrated"; + const TString detectorEtaString = "DetectorEta"; + const TString trackMassString = "TrackSumMass"; + const TString trackPtString = "TrackSumPt"; + + // Accessors + jet::JetFourMomAccessor startingScale(startingScaleString.Data()); + jet::JetFourMomAccessor caloMassScale(caloMassScaleString.Data()); + jet::JetFourMomAccessor taMassScale(taMassScaleString.Data()); + SG::AuxElement::Accessor<float> mTAfloat(taMassFloatString.Data()); + SG::AuxElement::Accessor<float> detectorEta(detectorEtaString.Data()); + SG::AuxElement::Accessor<float> trackMass(trackMassString.Data()); + SG::AuxElement::Accessor<float> trackPt(trackPtString.Data()); + + + // Create the calib tool + asg::AnaToolHandle<IJetCalibrationTool> calibTool; + calibTool.setTypeAndName("JetCalibrationTool/MyJetCalibTool"); + if ( !calibTool.isUserConfigured() ) + { + if (ASG_MAKE_ANA_TOOL(calibTool, JetCalibrationTool).isFailure()) + { + std::cout << "Failed to make ana tool" << std::endl; + return 2; + } + if (calibTool.setProperty("JetCollection",jetAlgo.Data()).isFailure()) + { + std::cout << "Failed to set JetCollection: " << jetAlgo.Data() << std::endl; + return 3; + } + if (calibTool.setProperty("ConfigFile",config.Data()).isFailure()) + { + std::cout << "Failed to set ConfigFile: " << config.Data() << std::endl; + return 3; + } + if (calibTool.setProperty("CalibSequence",calibSeq.Data()).isFailure()) + { + std::cout << "Failed to set CalibSequence: " << calibSeq.Data() << std::endl; + return 3; + } + if (calibTool.setProperty("IsData",isData).isFailure()) + { + std::cout << "Failed to set IsData: " << (isData ? std::string("true") : std::string("false")) << std::endl; + return 3; + } + if (isDevMode && calibTool.setProperty("DEVmode",isDevMode).isFailure()) + { + std::cout << "Failed to set DEVmode" << std::endl; + return 4; + } + if (calibTool.retrieve().isFailure()) + { + std::cout << "Failed to initialize the JetCalibTool" << std::endl; + return 5; + } + } + + + // Build a jet container and a jet for us to manipulate later + xAOD::TEvent event; + xAOD::TStore store; + xAOD::JetContainer* jets = new xAOD::JetContainer(); + jets->setStore(new xAOD::JetAuxContainer()); + jets->push_back(new xAOD::Jet()); + xAOD::Jet* jet = jets->at(0); + + + // Make the histograms to fill + std::vector<TH2D*> hists_pt_eta; + std::vector<TH2D*> hists_pt_mpt; + if (doCaloMass) + { + hists_pt_eta.push_back(new TH2D("JMS_calo_pt_eta",Form("JMS (calo) for jets with mass=%.1f GeV",massForScan/1.e3),1150,200,2500,20*etaRange,-etaRange,etaRange)); + hists_pt_mpt.push_back(new TH2D("JMS_calo_pt_mpt",Form("JMS (calo): for jets with #eta=%.1f",etaForScan),1150,200,2500,100,0,1)); + } + if (doTAMass) + { + hists_pt_eta.push_back(new TH2D("JMS_TA_pt_eta",Form("JMS (TA) for jets with mass=%.1f GeV (TA factor = %.1f)",massForScan/1.e3,trackMassFactor/trackPtFactor),1150,200,2500,20*etaRange,-etaRange,etaRange)); + hists_pt_mpt.push_back(new TH2D("JMS_TA_pt_mpt",Form("JMS (TA) for jets with #eta=%.1f",etaForScan),1150,200,2500,100,0,1)); + } + if (doCombMass) + { + hists_pt_eta.push_back(new TH2D("JMS_comb_pt_eta",Form("JMS (comb) for jets with mass=%.1f GeV",massForScan/1.e3),1150,200,2500,20*etaRange,-etaRange,etaRange)); + hists_pt_mpt.push_back(new TH2D("JMS_comb_pt_mpt",Form("JMS (comb) for jets with eta=%.1f",etaForScan),1150,200,2500,100,0,1)); + } + + // Fill the pt vs eta histogram + for (int xBin = 1; xBin <= hists_pt_eta.at(0)->GetNbinsX(); ++xBin) + { + const double pt = hists_pt_eta.at(0)->GetXaxis()->GetBinCenter(xBin)*1.e3; + for (int yBin = 1; yBin <= hists_pt_eta.at(0)->GetNbinsY(); ++yBin) + { + const double eta = hists_pt_eta.at(0)->GetYaxis()->GetBinCenter(yBin); + + // Set the main 4-vector and scale 4-vector + jet->setJetP4(xAOD::JetFourMom_t(pt,eta,0,massForScan)); + detectorEta(*jet) = eta; + trackMass(*jet) = trackMassFactor*massForScan; + trackPt(*jet) = trackPtFactor*pt; + startingScale.setAttribute(*jet,xAOD::JetFourMom_t(pt,eta,0,massForScan)); + + // Jet kinematics set, now apply calibration + xAOD::Jet* calibJet = nullptr; + calibTool->calibratedCopy(*jet,calibJet); + + // Calculate the scale factors + const double JMS = calibJet->m()/startingScale(*jet).mass(); + const double JMScalo = doCombMass ? caloMassScale(*calibJet).mass()/startingScale(*jet).mass() : JMS; + const double JMSTA = (doCombMass ? taMassScale(*calibJet).mass() : mTAfloat(*calibJet))/mTA(trackMass(*jet),trackPt(*jet),startingScale(*jet).pt()); + + // JMS retrieved, fill the plot(s) + size_t plotIndex = 0; + if (doCaloMass) + hists_pt_eta.at(plotIndex++)->SetBinContent(xBin,yBin,JMScalo); + if (doTAMass) + hists_pt_eta.at(plotIndex++)->SetBinContent(xBin,yBin,JMSTA); + if (doCombMass) + hists_pt_eta.at(plotIndex++)->SetBinContent(xBin,yBin,JMS); + + // Clean up + delete calibJet; + } + } + + // Fill the pt vs m/pt histogram + for (int xBin = 1; xBin <= hists_pt_mpt.at(0)->GetNbinsX(); ++xBin) + { + const double pt = hists_pt_mpt.at(0)->GetXaxis()->GetBinCenter(xBin)*1.e3; + for (int yBin = 1; yBin <= hists_pt_mpt.at(0)->GetNbinsY(); ++yBin) + { + const double mpt = hists_pt_mpt.at(0)->GetYaxis()->GetBinCenter(yBin); + const double mass = pt*mpt; + + // Set the main 4-vector and scale 4-vector + jet->setJetP4(xAOD::JetFourMom_t(pt,etaForScan,0,mass)); + detectorEta(*jet) = etaForScan; + trackMass(*jet) = trackMassFactor*massForScan; + trackPt(*jet) = trackPtFactor*pt; + startingScale.setAttribute(*jet,xAOD::JetFourMom_t(pt,etaForScan,0,mass)); + + // Jet kinematics set, now apply calibration + xAOD::Jet* calibJet = nullptr; + calibTool->calibratedCopy(*jet,calibJet); + + // Calculate the scale factors + const double JMS = calibJet->m()/startingScale(*jet).mass(); + const double JMScalo = doCombMass ? caloMassScale(*calibJet).mass()/startingScale(*jet).mass() : JMS; + const double JMSTA = (doCombMass ? taMassScale(*calibJet).mass() : mTAfloat(*calibJet))/mTA(trackMass(*jet),trackPt(*jet),startingScale(*jet).pt()); + + // JMS retrieved, fill the plot(s) + size_t plotIndex = 0; + if (doCaloMass) + hists_pt_mpt.at(plotIndex++)->SetBinContent(xBin,yBin,JMScalo); + if (doTAMass) + hists_pt_mpt.at(plotIndex++)->SetBinContent(xBin,yBin,JMSTA); + if (doCombMass) + hists_pt_mpt.at(plotIndex++)->SetBinContent(xBin,yBin,JMS); + + // Clean up + delete calibJet; + } + } + + + // Make the plots + + // First the canvas + TCanvas* canvas = new TCanvas("canvas"); + canvas->SetMargin(0.07,0.13,0.1,0.10); + canvas->SetFillStyle(4000); + canvas->SetFillColor(0); + canvas->SetFrameBorderMode(0); + canvas->cd(); + canvas->SetLogx(true); + + // Now labels/etc + for (TH2* hist : hists_pt_eta) + { + hist->SetStats(false); + hist->GetXaxis()->SetTitle("Jet #it{p}_{T} [GeV]"); + hist->GetXaxis()->SetTitleOffset(1.35); + hist->GetXaxis()->SetMoreLogLabels(); + hist->GetYaxis()->SetTitle("#eta"); + hist->GetYaxis()->SetTitleOffset(0.9); + hist->GetZaxis()->SetTitle("m_{JES+JMS} / m_{JES}"); + //hist->GetZaxis()->SetRangeUser(0.4,1.1); + } + for (TH2* hist : hists_pt_mpt) + { + hist->SetStats(false); + hist->GetXaxis()->SetTitle("Jet #it{p}_{T} [GeV]"); + hist->GetXaxis()->SetTitleOffset(1.35); + hist->GetXaxis()->SetMoreLogLabels(); + hist->GetYaxis()->SetTitle("m / #it{p}_{T}"); + hist->GetYaxis()->SetTitleOffset(0.9); + hist->GetZaxis()->SetTitle("m_{JES+JMS} / m_{JES}"); + //hist->GetZaxis()->SetRangeUser(0.4,1.1); + } + + // Now write them out + if (outFileIsExtensible) + { + canvas->Print(outFile+"["); + for (size_t iHist = 0; iHist < hists_pt_eta.size(); ++iHist) + { + hists_pt_eta.at(iHist)->Draw("colz"); + canvas->Print(outFile); + hists_pt_mpt.at(iHist)->Draw("colz"); + canvas->Print(outFile); + } + canvas->Print(outFile+"]"); + } + else if (outFileIsRoot) + { + TFile* outRootFile = new TFile(outFile,"RECREATE"); + std::cout << "Writing to output ROOT file: " << outFile << std::endl; + outRootFile->cd(); + for (size_t iHist = 0; iHist < hists_pt_eta.size(); ++iHist) + { + hists_pt_eta.at(iHist)->Write(); + hists_pt_mpt.at(iHist)->Write(); + } + outRootFile->Close(); + } + else + { + unsigned int counter = 1; + for (size_t iHist = 0; iHist < hists_pt_eta.size(); ++iHist) + { + hists_pt_eta.at(iHist)->Draw("colz"); + canvas->Print(Form("%u-fixMass-%s",counter,outFile.Data())); + hists_pt_mpt.at(iHist)->Draw("colz"); + canvas->Print(Form("%u-fixMass-%s",counter++,outFile.Data())); + } + } + + // Clean up a bit (although the program is about to end...) + for (TH2D* hist : hists_pt_eta) + delete hist; + hists_pt_eta.clear(); + + for (TH2D* hist : hists_pt_mpt) + delete hist; + hists_pt_mpt.clear(); + + return 0; +} diff --git a/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_SmearingPlots.cxx b/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_SmearingPlots.cxx new file mode 100644 index 00000000000..ace27098b2d --- /dev/null +++ b/Reconstruction/Jet/JetCalibTools/util/JetCalibTools_SmearingPlots.cxx @@ -0,0 +1,382 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#include "JetCalibTools/JetCalibrationTool.h" + +#include "xAODJet/Jet.h" +#include "xAODJet/JetContainer.h" +#include "xAODJet/JetAuxContainer.h" + +#include "xAODRootAccess/TEvent.h" +#include "xAODRootAccess/TStore.h" + +#include "AsgTools/AnaToolHandle.h" + +#include <vector> +#include <ctime> +#include "TString.h" +#include "TH1D.h" +#include "TF1.h" +#include "TCanvas.h" +#include "TLatex.h" +#include "TRandom3.h" + + +namespace jet +{ + /// JetFourMomAccessor is an extension of JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t> + /// AccessorWrapper<xAOD::JetFourMom_t> purpose is to provide a direct and simple access to JetFourMom_t attributes (which are + /// internally saved as 4 floats inside jets). + /// JetFourMomAccessor is here to workaround 2 limitations of AccessorWrapper + /// - it does not provide an operator() method + /// - it does not provide const methods as needed in this package. + /// AccessorWrapper should be updated to remove these limitations. + /// when this happens, JetFourMomAccessor can just be replaced by a typedef to the AccessorWrapper<xAOD::JetFourMom_t> + class JetFourMomAccessor: public xAOD::JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t> { + public: + using xAOD::JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t>::AccessorWrapper; + xAOD::JetFourMom_t operator()(const xAOD::Jet & jet) const {return const_cast<JetFourMomAccessor*>(this)->getAttribute(jet);} + }; +} + +int main (int argc, char* argv[]) +{ + // Check argument usage + if (argc < 5 || argc > 7) + { + std::cout << "USAGE: " << argv[0] << " <JetCollection> <ConfigFile> <OutputFile> <isData> (dev mode switch) (timing test switch)" << std::endl; + return 1; + } + + // Store the arguments + const TString jetAlgo = argv[1]; + const TString config = argv[2]; + const TString outFile = argv[3]; + const bool isData = (TString(argv[4]) == "true"); + const bool isDevMode = ( argc > 5 && (TString(argv[5]) == "true" || TString(argv[5]) == "dev") ) ? true : false; + const bool isTimeTest = ( argc > 6 && TString(argv[6]) == "true" ) ? true : false; + + // Derived information + const bool outFileIsExtensible = outFile.EndsWith(".pdf") || outFile.EndsWith(".ps"); + const bool outFileIsRoot = outFile.EndsWith(".root"); + + // Assumed constants + const TString calibSeq = "Smear"; // only want to apply the smearing correction here + const std::vector<float> ptVals = {20, 40, 60, 100, 400, 1000}; + const float eta = 0.202; + const float phi = 0; + const float mass = 10; + const int maxNumIter = 1e5; + const int numTimeIter = 100; + + // Accessor strings + const TString startingScaleString = "JetGSCScaleMomentum"; + const TString endingScaleString = "JetSmearedMomentum"; + + // Accessors + jet::JetFourMomAccessor startingScale(startingScaleString.Data()); + jet::JetFourMomAccessor endingScale(endingScaleString.Data()); + + // Create the calib tool + asg::AnaToolHandle<IJetCalibrationTool> calibTool; + calibTool.setTypeAndName("JetCalibrationTool/MyJetCalibTool"); + if ( !calibTool.isUserConfigured() ) + { + if (ASG_MAKE_ANA_TOOL(calibTool, JetCalibrationTool).isFailure()) + { + std::cout << "Failed to make ana tool" << std::endl; + return 2; + } + if (calibTool.setProperty("JetCollection",jetAlgo.Data()).isFailure()) + { + std::cout << "Failed to set JetCollection: " << jetAlgo.Data() << std::endl; + return 3; + } + if (calibTool.setProperty("ConfigFile",config.Data()).isFailure()) + { + std::cout << "Failed to set ConfigFile: " << config.Data() << std::endl; + return 3; + } + if (calibTool.setProperty("CalibSequence",calibSeq.Data()).isFailure()) + { + std::cout << "Failed to set CalibSequence: " << calibSeq.Data() << std::endl; + return 3; + } + if (calibTool.setProperty("IsData",isData).isFailure()) + { + std::cout << "Failed to set IsData: " << (isData ? std::string("true") : std::string("false")) << std::endl; + return 3; + } + if (isDevMode && calibTool.setProperty("DEVmode",isDevMode).isFailure()) + { + std::cout << "Failed to set DEVmode" << std::endl; + return 4; + } + if (calibTool.retrieve().isFailure()) + { + std::cout << "Failed to initialize the JetCalibTool" << std::endl; + return 5; + } + } + + // Build a jet container and a jet for us to manipulate later + xAOD::TEvent event; + xAOD::TStore store; + xAOD::JetContainer* jets = new xAOD::JetContainer(); + jets->setStore(new xAOD::JetAuxContainer()); + jets->push_back(new xAOD::Jet()); + xAOD::Jet* jet = jets->at(0); + + + + // Make the histograms to fill + std::vector<TH1D*> hists_pt; + std::vector<TH1D*> hists_m; + for (float pt : ptVals) + { + const TString baseName = Form("Smear_%.0f",pt); + hists_pt.push_back(new TH1D(baseName+"_pT",baseName+"_pT",100,0.25*pt,1.75*pt)); + hists_m.push_back(new TH1D(baseName+"_mass",baseName+"_mass",100,0.25*mass,1.75*mass)); + } + + // Run the timing test if specified + if (isTimeTest) + { + TRandom3 rand; + rand.SetSeed(0); // Deterministic random test + + for (int numTest = 0; numTest < numTimeIter; ++numTest) + { + // Make a new calibration tool each time + JetCalibrationTool* jetCalibTool = new JetCalibrationTool(Form("mytool_%d",numTest)); + if (jetCalibTool->setProperty("JetCollection",jetAlgo.Data()).isFailure()) + exit(1); + if (jetCalibTool->setProperty("ConfigFile",config.Data()).isFailure()) + exit(1); + if (jetCalibTool->setProperty("CalibSequence",calibSeq.Data()).isFailure()) + exit(1); + if (jetCalibTool->setProperty("IsData",isData).isFailure()) + exit(1); + if (isDevMode && jetCalibTool->setProperty("DEVmode",isDevMode).isFailure()) + exit(1); + if (jetCalibTool->initialize().isFailure()) + exit(1); + + clock_t startTime = clock(); + for (int numIter = 0; numIter < maxNumIter; ++numIter) + { + xAOD::JetFourMom_t fourvec(rand.Uniform(20.e3,1000.e3),rand.Uniform(-2,2),rand.Uniform(-3.14,3.14),10.e3); + jet->setJetP4(fourvec); + startingScale.setAttribute(*jet,fourvec); + xAOD::Jet* smearedJet = nullptr; + jetCalibTool->calibratedCopy(*jet,smearedJet); + //calibTool->calibratedCopy(*jet,smearedJet); + delete smearedJet; + } + delete jetCalibTool; + printf("Iteration %d: %f seconds\n",numTest+1,(clock()-startTime)/((double)CLOCKS_PER_SEC)); + } + } + + // Fill the histograms + for (size_t index = 0; index < ptVals.size(); ++index) + { + // Get the relevant vector entries + const float pt = ptVals.at(index); + TH1D* hist_pt = hists_pt.at(index); + TH1D* hist_m = hists_m.at(index); + hist_pt->Sumw2(); + hist_m->Sumw2(); + + + printf("Running for pT of %.0f\n",pt); + + for (int numIter = 0; numIter < maxNumIter; ++numIter) + { + // Set the jet four-vector + xAOD::JetFourMom_t fourvec(pt*1.e3,eta,phi,mass*1.e3); + jet->setJetP4(fourvec); + startingScale.setAttribute(*jet,fourvec); + + // Jet kinematics set, now apply the smearing correction + xAOD::Jet* smearedJet = nullptr; + calibTool->calibratedCopy(*jet,smearedJet); + + // Ensure the expected scale was written (within 1 MeV, for floating point differences) + if (fabs(endingScale(*smearedJet).pt() - smearedJet->pt()) > 1.e-3) + { + printf("ERROR: mismatch between ending scale (%.3f) and jet pT (%.3f)\n",endingScale(*smearedJet).pt(),smearedJet->pt()); + exit(1); + } + if (endingScale(*smearedJet).pt() == startingScale(*smearedJet).pt()) + { + // This can happen (smearing factor can be exactly 1), but it should be rare + printf("WARNING: starting and ending scales are identical: %.3f\n",endingScale(*smearedJet).pt()); + } + + // Fill the histograms + hist_pt->Fill(smearedJet->pt()/1.e3); + hist_m->Fill(smearedJet->m()/1.e3); + + // Clean up + delete smearedJet; + } + } + + + // Get the nominal resolution + printf("Getting nominal resolutions\n"); + TH1D nominalResData("NominalResData","NominalResData",1000,20,2020); + TH1D nominalResMC( "NominalResMC", "NominalResMC", 1000,20,2020); + for (Long64_t binX = 1; binX < nominalResData.GetNbinsX()+1; ++binX) + { + // Set the jet four-vector + const float pt = nominalResData.GetXaxis()->GetBinCenter(binX); + xAOD::JetFourMom_t fourvec(pt*1.e3,eta,phi,mass*1.e3); + jet->setJetP4(fourvec); + + // Jet kinematics set, now get the nominal resolutions + double resolution = 0; + if (calibTool->getNominalResolutionData(*jet,resolution).isFailure()) + { + printf("ERROR: Failed to get nominal data resolution\n"); + exit(1); + } + nominalResData.SetBinContent(binX,resolution); + if (calibTool->getNominalResolutionMC(*jet,resolution).isFailure()) + { + printf("ERROR: Failed to get nominal MC resolution\n"); + exit(1); + } + nominalResMC.SetBinContent(binX,resolution); + } + + + // Make the plots + // First the canvas + TCanvas* canvas = new TCanvas("canvas"); + canvas->SetMargin(0.07,0.13,0.1,0.10); + canvas->SetFillStyle(4000); + canvas->SetFillColor(0); + canvas->SetFrameBorderMode(0); + canvas->cd(); + + // Make the fits + std::vector<TF1*> fits_pt; + std::vector<TF1*> fits_m; + for (size_t index = 0; index < hists_pt.size(); ++index) + { + TH1D* hist_pt = hists_pt.at(index); + TH1D* hist_m = hists_m.at(index); + + TF1* fit_pt = new TF1(Form("fitPt_%zu",index),"gaus"); + TF1* fit_m = new TF1(Form("fitMass_%zu",index),"gaus"); + + hist_pt->Fit(fit_pt,"E"); + hist_m->Fit(fit_m,"E"); + + fits_pt.push_back(fit_pt); + fits_m.push_back(fit_m); + } + + // Set plot labels + for (TH1D* hist : hists_pt) + { + hist->SetStats(false); + hist->GetXaxis()->SetTitle("Jet #it{p}_{T} [GeV]"); + hist->GetXaxis()->SetTitleOffset(1.35); + hist->GetYaxis()->SetTitle("Number of events"); + hist->GetYaxis()->SetTitleOffset(0.9); + } + for (TH1D* hist : hists_m) + { + hist->SetStats(false); + hist->GetXaxis()->SetTitle("Jet mass [GeV]"); + hist->GetXaxis()->SetTitleOffset(1.35); + hist->GetYaxis()->SetTitle("Number of events"); + hist->GetYaxis()->SetTitleOffset(0.9); + } + + // Prepare to add labels + TLatex tex; + tex.SetNDC(); + tex.SetTextFont(42); + tex.SetTextSize(0.04); + + // Prepare to write out + if (outFileIsExtensible) + { + canvas->Print(outFile+"["); + + // Nominal resolutions + canvas->SetLogx(true); + nominalResData.Draw(); + canvas->Print(outFile); + nominalResMC.Draw(); + canvas->Print(outFile); + canvas->SetLogx(false); + + // Smearing plots + for (size_t index = 0; index < hists_pt.size(); ++index) + { + hists_pt.at(index)->Draw("pe"); + tex.DrawLatex(0.70,0.9,"Gaussian fit results"); + tex.DrawLatex(0.70,0.85,Form("#mu = %.0f GeV",fits_pt.at(index)->GetParameter(1))); + tex.DrawLatex(0.70,0.80,Form("#sigma = %.1f GeV",fits_pt.at(index)->GetParameter(2))); + tex.DrawLatex(0.70,0.75,Form("#mu/#sigma = %.1f%%",fits_pt.at(index)->GetParameter(2)/fits_pt.at(index)->GetParameter(1)*100)); + canvas->Print(outFile); + + hists_m.at(index)->Draw("pe"); + tex.DrawLatex(0.70,0.9,"Gaussian fit results"); + tex.DrawLatex(0.70,0.85,Form("#mu = %.0f GeV",fits_m.at(index)->GetParameter(1))); + tex.DrawLatex(0.70,0.80,Form("#sigma = %.1f GeV",fits_m.at(index)->GetParameter(2))); + tex.DrawLatex(0.70,0.75,Form("#mu/#sigma = %.1f%%",fits_m.at(index)->GetParameter(2)/fits_m.at(index)->GetParameter(1)*100)); + canvas->Print(outFile); + } + canvas->Print(outFile+"]"); + } + else if (outFileIsRoot) + { + TFile* outRootFile = new TFile(outFile,"RECREATE"); + std::cout << "Writing to output ROOT file: " << outFile << std::endl; + outRootFile->cd(); + + // Nominal resolutions + nominalResData.Write(); + nominalResMC.Write(); + + // Smearing plots + for (size_t index = 0; index < hists_pt.size(); ++index) + { + hists_pt.at(index)->Write(); + hists_m.at(index)->Write(); + } + outRootFile->Close(); + } + else + { + unsigned int counter = 1; + + // Nominal resolutions + canvas->SetLogx(true); + nominalResData.Draw(); + canvas->Print(Form("%u-%s",counter++,outFile.Data())); + nominalResMC.Draw(); + canvas->Print(Form("%u-%s",counter++,outFile.Data())); + canvas->SetLogx(false); + + // Smearing plots + for (size_t index = 0; index < hists_pt.size(); ++index) + { + hists_pt.at(index)->Draw("pe"); + canvas->Print(Form("%u-%s",counter,outFile.Data())); + + hists_m.at(index)->Draw("pe"); + canvas->Print(Form("%u-%s",counter++,outFile.Data())); + } + } + + + return 0; +} diff --git a/Reconstruction/Jet/JetRec/python/JetRecCalibrationFinder.py b/Reconstruction/Jet/JetRec/python/JetRecCalibrationFinder.py index a1edf9dfff2..17b1bfbb902 100644 --- a/Reconstruction/Jet/JetRec/python/JetRecCalibrationFinder.py +++ b/Reconstruction/Jet/JetRec/python/JetRecCalibrationFinder.py @@ -54,7 +54,7 @@ class JetRecCalibrationFinder: "pflow" : "JES_MC15cRecommendation_PFlow_Aug2016_rel21.config" } - def find(self, alg, rad, inpin, seq, configkeyin, evsprefix): + def find(self, alg, rad, inpin, seq, configkeyin, evsprefix, calibareatag="00-04-77"): from JetCalibTools.JetCalibToolsConf import JetCalibrationTool from JetRec.JetRecStandardToolManager import jtm inp = inpin @@ -117,7 +117,8 @@ class JetRecCalibrationFinder: evskey = evsprefix + evssuf jetlog.info( myname + " Event shape key: " + evskey ) # ...create the tool. - jtm += JetCalibrationTool(tname, JetCollection=jetdefn, ConfigFile=configfile, CalibSequence=fullseq, RhoKey=evskey) + jtm += JetCalibrationTool(tname, JetCollection=jetdefn, ConfigFile=configfile, CalibSequence=fullseq, RhoKey=evskey, + CalibArea=calibareatag) return jtm.tools[tname] -- GitLab