Skip to content
Snippets Groups Projects
Commit 22210f7a authored by Edward Moyse's avatar Edward Moyse
Browse files

Merge branch 'checkerConst.CaloTrkMuIdTools-20220112' into 'master'

CaloTrkMuIdTools: Update for thread-safety checker const changes.

See merge request !49614
parents c7a64b57 84cc4cee
5 merge requests!69091Fix correlated smearing bug in JER in JetUncertainties in 22.0,!58791DataQualityConfigurations: Modify L1Calo config for web display,!51674Fixing hotSpotInHIST for Run3 HIST,!50012RecExConfig: Adjust log message levels from GetRunNumber and GetLBNumber,!49614CaloTrkMuIdTools: Update for thread-safety checker const changes.
......@@ -14,7 +14,7 @@ atlas_add_component( CaloTrkMuIdTools
src/*.cxx
src/components/*.cxx
INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} CaloEvent AthenaBaseComps StoreGateLib xAODTracking GaudiKernel ICaloTrkMuIdTools RecoToolInterfaces TrkExInterfaces CaloDetDescrLib CaloGeoHelpers CaloIdentifier CaloUtilsLib xAODCaloEvent ParticleCaloExtension TileDetDescr PathResolver TrkSurfaces TrkCaloExtension TrkEventPrimitives CaloTrackingGeometryLib AthOnnxruntimeServiceLib FourMomUtils)
LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} CaloEvent AthenaBaseComps StoreGateLib xAODTracking GaudiKernel ICaloTrkMuIdTools RecoToolInterfaces TrkExInterfaces CaloDetDescrLib CaloGeoHelpers CaloIdentifier CaloUtilsLib xAODCaloEvent ParticleCaloExtension TileDetDescr PathResolver TrkSurfaces TrkCaloExtension TrkEventPrimitives CaloTrackingGeometryLib AthOnnxruntimeServiceLib FourMomUtils AthenaKernel )
# Install files from the package:
atlas_install_headers( CaloTrkMuIdTools )
......
/*
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#ifndef CALOTRKMUIDTOOLS_TRACKDEPOSITINCALOTOOL_H
......@@ -203,27 +203,33 @@ private:
std::once_flag mutable m_initializeOnce ATLAS_THREAD_SAFE;
// Histograms
TH1F* m_hDepositLayer12{};
TH1F* m_hDepositLayer13{};
TH1F* m_hDepositLayer14{};
TH2F* m_hParELossEta{};
TH2F* m_hParELossSample{};
///////////////////////////////
TH1F* m_hDeltaEtaLastPar{};
TH1F* m_hDeltaRadiusLastPar{};
TH1F* m_hDepositsInCore{};
TH1F* m_hDepositsInCone{};
TH2F* m_hDistDepositsTile{};
TH2F* m_hDistDepositsHEC{};
TH2F* m_hEMB1vsdPhi{};
TH2F* m_hEMB2vsdPhi{};
TH2F* m_hEMB3vsdPhi{};
TH2F* m_hEMB1vsdEta{};
TH2F* m_hEMB2vsdEta{};
TH2F* m_hEMB3vsdEta{};
struct Hists {
StatusCode book (ITHistSvc& histSvc);
TH1F* m_hDepositLayer12{};
TH1F* m_hDepositLayer13{};
TH1F* m_hDepositLayer14{};
TH2F* m_hParELossEta{};
TH2F* m_hParELossSample{};
///////////////////////////////
TH1F* m_hDeltaEtaLastPar{};
TH1F* m_hDeltaRadiusLastPar{};
TH1F* m_hDepositsInCore{};
TH1F* m_hDepositsInCone{};
TH2F* m_hDistDepositsTile{};
TH2F* m_hDistDepositsHEC{};
TH2F* m_hEMB1vsdPhi{};
TH2F* m_hEMB2vsdPhi{};
TH2F* m_hEMB3vsdPhi{};
TH2F* m_hEMB1vsdEta{};
TH2F* m_hEMB2vsdEta{};
TH2F* m_hEMB3vsdEta{};
};
std::unique_ptr<Hists> m_h;
Hists& getHists() const;
const Trk::ParticleMasses m_particlemasses;
};
......
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#include "CaloTrkMuIdTools/CaloMuonScoreTool.h"
......@@ -215,7 +215,12 @@ float CaloMuonScoreTool::runOnnxInference(std::vector<float> &tensor) const {
// score model & input tensor, get back output tensor
auto output_tensors = m_session->Run(Ort::RunOptions{nullptr}, m_input_node_names.data(), &input_tensor, m_input_node_names.size(),
// Ort::Session::Run is non-const.
// However, the onxx authors claim that it is safe to call
// from multiple threads:
// https://github.com/Microsoft/onnxruntime/issues/114
Ort::Session* session ATLAS_THREAD_SAFE = m_session.get();
auto output_tensors = session->Run(Ort::RunOptions{nullptr}, m_input_node_names.data(), &input_tensor, m_input_node_names.size(),
m_output_node_names.data(), m_output_node_names.size());
// Get pointer to output tensor float values
......
/*
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#include "CaloTrkMuIdTools/TrackDepositInCaloTool.h"
......@@ -26,6 +26,7 @@
#include "TrkCaloExtension/CaloExtension.h"
#include "TrkCaloExtension/CaloExtensionCollection.h"
#include "TrkCaloExtension/CaloExtensionHelpers.h"
#include "AthenaKernel/SlotSpecificObj.h"
// --- ROOT ---
#include <cmath>
......@@ -52,7 +53,6 @@ TrackDepositInCaloTool::TrackDepositInCaloTool(const std::string& type, const st
StatusCode TrackDepositInCaloTool::initialize() {
ATH_CHECK(detStore()->retrieve(m_tileDDM));
if (!m_tileDDM) { return StatusCode::FAILURE; }
ATH_CHECK(service("THistSvc", m_histSvc));
if (m_doHist) { ATH_CHECK(bookHistos()); }
ATH_CHECK(m_extrapolator.retrieve());
......@@ -609,8 +609,9 @@ std::vector<DepositInCalo> TrackDepositInCaloTool::deposits(const Trk::TrackPara
ATH_MSG_DEBUG("Sample: " << sample << "\tEnergyDeposit: " << energyDeposit << "\tEnergyLoss: " << energyLoss);
if (m_doHist) {
m_hParELossEta->Fill(energyLoss, itP->eta());
m_hParELossSample->Fill(energyLoss, sample);
Hists& h = getHists();
h.m_hParELossEta->Fill(energyLoss, itP->eta());
h.m_hParELossSample->Fill(energyLoss, sample);
}
// itP++;
......@@ -772,8 +773,9 @@ StatusCode TrackDepositInCaloTool::getTraversedLayers(const CaloDetDescrManager*
double deltaR_solLast = std::abs(parAtSolenoid->position().perp() - par->position().perp());
double deltaEta_solLast = std::abs(parAtSolenoid->position().eta() - par->position().eta());
if (m_doHist) {
m_hDeltaEtaLastPar->Fill(deltaEta_solLast);
m_hDeltaRadiusLastPar->Fill(deltaR_solLast);
Hists& h = getHists();
h.m_hDeltaEtaLastPar->Fill(deltaEta_solLast);
h.m_hDeltaRadiusLastPar->Fill(deltaR_solLast);
}
const Amg::Vector3D positionAtSolenoid = parAtSolenoid->position();
......@@ -1000,8 +1002,19 @@ TrackDepositInCaloTool::getClosestCellTile(
///////////////////////////////////////////////////////////////////////////////
StatusCode TrackDepositInCaloTool::bookHistos() {
ATH_MSG_DEBUG("Booking the ROOT Histos");
StatusCode sc;
if (SG::getNSlots() > 1) {
ATH_MSG_FATAL("Filling histograms not supported in MT jobs.");
return StatusCode::FAILURE;
}
ATH_CHECK(service("THistSvc", m_histSvc));
if (!m_histSvc) return StatusCode::FAILURE;
m_h = std::make_unique<Hists>();
ATH_CHECK( m_h->book (*m_histSvc) );
return StatusCode::SUCCESS;
}
StatusCode TrackDepositInCaloTool::Hists::book (ITHistSvc& histSvc)
{
m_hDepositLayer12 = new TH1F("hDepositLayer12", "hDepositLayer12", 40, 0, 4000);
m_hDepositLayer13 = new TH1F("hDepositLayer13", "hDepositLayer13", 40, 0, 4000);
m_hDepositLayer14 = new TH1F("hDepositLayer14", "hDepositLayer14", 40, 0, 4000);
......@@ -1021,32 +1034,43 @@ StatusCode TrackDepositInCaloTool::bookHistos() {
m_hEMB2vsdEta = new TH2F("hEMB2vsdEta", "hEMB2vsdEta", 50, -M_PI, M_PI, 50, 0, 500);
m_hEMB3vsdEta = new TH2F("hEMB3vsdEta", "hEMB3vsdEta", 50, -M_PI, M_PI, 50, 0, 500);
if (m_histSvc) {
sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hDepositLayer12", m_hDepositLayer12);
sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hDepositLayer13", m_hDepositLayer13);
sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hDepositLayer14", m_hDepositLayer14);
sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hParELossSample", m_hParELossSample);
sc = m_histSvc->regHist("/AANT/CaloTrkMuId/hParELossEta", m_hParELossEta);
sc = m_histSvc->regHist("/AANT/DetStore/hDeltaEtaLastPar", m_hDeltaEtaLastPar);
sc = m_histSvc->regHist("/AANT/DetStore/hDeltaRadiusLastPar", m_hDeltaRadiusLastPar);
sc = m_histSvc->regHist("/AANT/DetStore/hDepositsInCore", m_hDepositsInCore);
sc = m_histSvc->regHist("/AANT/DetStore/hDepositsInCone", m_hDepositsInCone);
sc = m_histSvc->regHist("/AANT/DetStore/hDistDepositsTile", m_hDistDepositsTile);
sc = m_histSvc->regHist("/AANT/DetStore/hDistDepositsHEC", m_hDistDepositsHEC);
sc = m_histSvc->regHist("/AANT/DetStore/hEMB1vsdPhi", m_hEMB1vsdPhi);
sc = m_histSvc->regHist("/AANT/DetStore/hEMB2vsdPhi", m_hEMB2vsdPhi);
sc = m_histSvc->regHist("/AANT/DetStore/hEMB3vsdPhi", m_hEMB3vsdPhi);
sc = m_histSvc->regHist("/AANT/DetStore/hEMB1vsdEta", m_hEMB1vsdEta);
sc = m_histSvc->regHist("/AANT/DetStore/hEMB2vsdEta", m_hEMB2vsdEta);
sc = m_histSvc->regHist("/AANT/DetStore/hEMB3vsdEta", m_hEMB3vsdEta);
} else {
return StatusCode::FAILURE;
}
#define H_CHECK(X) if((X).isFailure()) return StatusCode::FAILURE
H_CHECK( histSvc.regHist("/AANT/CaloTrkMuId/hDepositLayer12", m_hDepositLayer12) );
H_CHECK( histSvc.regHist("/AANT/CaloTrkMuId/hDepositLayer13", m_hDepositLayer13) );
H_CHECK( histSvc.regHist("/AANT/CaloTrkMuId/hDepositLayer14", m_hDepositLayer14) );
H_CHECK( histSvc.regHist("/AANT/CaloTrkMuId/hParELossSample", m_hParELossSample) );
H_CHECK( histSvc.regHist("/AANT/CaloTrkMuId/hParELossEta", m_hParELossEta) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hDeltaEtaLastPar", m_hDeltaEtaLastPar) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hDeltaRadiusLastPar", m_hDeltaRadiusLastPar) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hDepositsInCore", m_hDepositsInCore) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hDepositsInCone", m_hDepositsInCone) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hDistDepositsTile", m_hDistDepositsTile) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hDistDepositsHEC", m_hDistDepositsHEC) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hEMB1vsdPhi", m_hEMB1vsdPhi) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hEMB2vsdPhi", m_hEMB2vsdPhi) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hEMB3vsdPhi", m_hEMB3vsdPhi) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hEMB1vsdEta", m_hEMB1vsdEta) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hEMB2vsdEta", m_hEMB2vsdEta) );
H_CHECK( histSvc.regHist("/AANT/DetStore/hEMB3vsdEta", m_hEMB3vsdEta) );
#undef H_CHECK
return sc;
return StatusCode::SUCCESS;
}
///////////////////////////////////////////////////////////////////////////////
// Get reference to histograms.
///////////////////////////////////////////////////////////////////////////////
TrackDepositInCaloTool::Hists&
TrackDepositInCaloTool::getHists() const
{
// We earlier checked that no more than one thread is being used.
Hists* h ATLAS_THREAD_SAFE = m_h.get();
return *h;
}
///////////////////////////////////////////////////////////////////////////////
// Functions below are under development, these are not used yet.
///////////////////////////////////////////////////////////////////////////////
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment