ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1CaloMonitoring
src
EfexSimMonitorAlgorithm.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
#ifndef TRIGT1CALOMONITORING_EFEXSIMMONITORALGORITHM_H
5
#define TRIGT1CALOMONITORING_EFEXSIMMONITORALGORITHM_H
6
7
#include "
AthenaMonitoring/AthMonitorAlgorithm.h
"
8
#include "
AthenaMonitoringKernel/Monitored.h
"
9
#include "
StoreGate/ReadHandleKey.h
"
10
//
11
#include "
xAODTrigger/eFexEMRoIContainer.h
"
12
#include "
xAODTrigger/eFexEMRoI.h
"
13
#include "
xAODTrigger/eFexTauRoIContainer.h
"
14
#include "
xAODTrigger/eFexTauRoI.h
"
15
16
#include "
xAODTrigL1Calo/eFexTowerContainer.h
"
17
#include "
xAODTrigL1Calo/eFexTower.h
"
18
#include "
FourMomUtils/P4Helpers.h
"
19
20
#include "
LArRecConditions/LArBadChannelCont.h
"
21
#include "
CaloEvent/CaloCellContainer.h
"
22
23
class
EfexSimMonitorAlgorithm
:
public
AthMonitorAlgorithm
{
24
public
:
EfexSimMonitorAlgorithm
(
const
std::string& name, ISvcLocator* pSvcLocator );
25
virtual
~EfexSimMonitorAlgorithm
()=
default
;
26
virtual
StatusCode
initialize
()
override
;
27
virtual
StatusCode
fillHistograms
(
const
EventContext& ctx )
const override
;
28
29
private
:
30
31
32
// these maps hold the binlabels (in form of LBN:FirstEventNum) to use for each lb
33
mutable
std::map<int,std::string> m_firstEvents_DataTowers
ATLAS_THREAD_SAFE
;
34
mutable
std::map<int,std::string> m_firstEvents_EmulatedTowers
ATLAS_THREAD_SAFE
;
35
mutable
std::mutex
m_firstEventsMutex
;
36
37
// container keys including this, steering parameter, default value and help description
38
SG::ReadHandleKey<xAOD::eFexEMRoIContainer>
m_eFexEmContainerKey
{
this
,
"eFexEMRoIContainer"
,
"L1_eEMRoI"
,
"SG key of the data eFex Em RoI container"
};
39
SG::ReadHandleKey<xAOD::eFexTauRoIContainer>
m_eFexTauContainerKey
{
this
,
"eFexTauRoIContainer"
,
"L1_eTauRoI"
,
"SG key of the data eFex Tau RoI container"
};
40
SG::ReadHandleKey<xAOD::eFexEMRoIContainer>
m_eFexEmSimContainerKey
{
this
,
"eFexEMRoISimContainer"
,
"L1_eEMRoISim"
,
"SG key of the simulated eFex Em RoI container"
};
41
SG::ReadHandleKey<xAOD::eFexTauRoIContainer>
m_eFexTauSimContainerKey
{
this
,
"eFexTauSimRoIContainer"
,
"L1_eTauRoISim"
,
"SG key of the simulated eFex Tau RoI container"
};
42
43
// same again for xTOBs
44
SG::ReadHandleKey<xAOD::eFexEMRoIContainer>
m_eFexEmxContainerKey
{
this
,
"eFexEMxRoIContainer"
,
""
,
"SG key of the data eFex Em RoI container"
};
45
SG::ReadHandleKey<xAOD::eFexTauRoIContainer>
m_eFexTauxContainerKey
{
this
,
"eFexTauxRoIContainer"
,
""
,
"SG key of the data eFex Tau RoI container"
};
46
SG::ReadHandleKey<xAOD::eFexEMRoIContainer>
m_eFexEmxSimContainerKey
{
this
,
"eFexEMxRoISimContainer"
,
""
,
"SG key of the simulated eFex Em RoI container"
};
47
SG::ReadHandleKey<xAOD::eFexTauRoIContainer>
m_eFexTauxSimContainerKey
{
this
,
"eFexTauxSimRoIContainer"
,
""
,
"SG key of the simulated eFex Tau RoI container"
};
48
49
// need to check how many supercells there are, as expect mismatches when any are missing:
50
SG::ReadHandleKey<CaloCellContainer>
m_scellKey
{
this
,
"CaloCellContainerReadKey"
,
"SCell"
,
"Read handle key for the supercells"
};
51
52
SG::ReadHandleKey<xAOD::eFexTowerContainer>
m_eFexTowerContainerKey
{
this
,
"eFexTowerContainer"
,
"L1_eFexDataTowers"
,
"SG key of the primary eFex tower container, which should be populated if fex readout occurring"
};
53
54
SG::ReadCondHandleKey<LArBadChannelCont>
m_bcContKey
{
this
,
"LArMaskedChannelKey"
,
"LArMaskedSC"
,
"Key of the OTF-Masked SC"
};
55
56
57
struct
SortableTob
{
58
SortableTob
(
unsigned
int
w,
float
e,
float
p) :
word0
(w),
eta
(e),
phi
(p) { }
59
unsigned
int
word0
;
60
float
eta
,
phi
;
61
};
62
63
template
<
typename
T>
void
fillVectors
(
const
SG::ReadHandleKey<T>
& key,
const
EventContext& ctx, std::vector<float>& etas, std::vector<float>& phis, std::vector<unsigned int>& word0s)
const
{
64
etas.clear();phis.clear();word0s.clear();
65
SG::ReadHandle<T>
tobs{key, ctx};
66
if
(tobs.
isValid
()) {
67
etas.reserve(tobs->size());
68
phis.reserve(tobs->size());
69
word0s.reserve(tobs->size());
70
std::vector<SortableTob> sortedTobs;
71
sortedTobs.reserve(tobs->size());
72
for
(
auto
tob : *tobs) {
73
sortedTobs.emplace_back(SortableTob{tob->word0(),tob->eta(),tob->phi()});
74
}
75
std::sort
(sortedTobs.begin(),sortedTobs.end(),[](
const
SortableTob& lhs,
const
SortableTob& rhs) { return lhs.word0<rhs.word0; });
76
for
(
auto
& tob : sortedTobs) {
77
etas.push_back(tob.eta);
78
phis.push_back(tob.phi);
79
word0s.push_back(tob.word0);
80
}
81
}
82
}
83
84
85
template
<
typename
T>
unsigned
int
fillHistos(
const
SG::ReadHandleKey<T>
& key1,
const
SG::ReadHandleKey<T>
& key2,
const
EventContext& ctx,
const
std::string& signa =
""
)
const
;
86
87
88
};
89
#endif
AthMonitorAlgorithm.h
CaloCellContainer.h
LArBadChannelCont.h
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
P4Helpers.h
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
AthMonitorAlgorithm::AthMonitorAlgorithm
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthMonitorAlgorithm.cxx:8
EfexSimMonitorAlgorithm::m_eFexEmContainerKey
SG::ReadHandleKey< xAOD::eFexEMRoIContainer > m_eFexEmContainerKey
Definition
EfexSimMonitorAlgorithm.h:38
EfexSimMonitorAlgorithm::m_scellKey
SG::ReadHandleKey< CaloCellContainer > m_scellKey
Definition
EfexSimMonitorAlgorithm.h:50
EfexSimMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition
EfexSimMonitorAlgorithm.cxx:38
EfexSimMonitorAlgorithm::m_bcContKey
SG::ReadCondHandleKey< LArBadChannelCont > m_bcContKey
Definition
EfexSimMonitorAlgorithm.h:54
EfexSimMonitorAlgorithm::ATLAS_THREAD_SAFE
std::map< int, std::string > m_firstEvents_DataTowers ATLAS_THREAD_SAFE
Definition
EfexSimMonitorAlgorithm.h:33
EfexSimMonitorAlgorithm::m_eFexTauxSimContainerKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_eFexTauxSimContainerKey
Definition
EfexSimMonitorAlgorithm.h:47
EfexSimMonitorAlgorithm::m_eFexEmSimContainerKey
SG::ReadHandleKey< xAOD::eFexEMRoIContainer > m_eFexEmSimContainerKey
Definition
EfexSimMonitorAlgorithm.h:40
EfexSimMonitorAlgorithm::m_eFexTauContainerKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_eFexTauContainerKey
Definition
EfexSimMonitorAlgorithm.h:39
EfexSimMonitorAlgorithm::m_eFexTowerContainerKey
SG::ReadHandleKey< xAOD::eFexTowerContainer > m_eFexTowerContainerKey
Definition
EfexSimMonitorAlgorithm.h:52
EfexSimMonitorAlgorithm::m_eFexTauSimContainerKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_eFexTauSimContainerKey
Definition
EfexSimMonitorAlgorithm.h:41
EfexSimMonitorAlgorithm::fillVectors
void fillVectors(const SG::ReadHandleKey< T > &key, const EventContext &ctx, std::vector< float > &etas, std::vector< float > &phis, std::vector< unsigned int > &word0s) const
Definition
EfexSimMonitorAlgorithm.h:63
EfexSimMonitorAlgorithm::~EfexSimMonitorAlgorithm
virtual ~EfexSimMonitorAlgorithm()=default
EfexSimMonitorAlgorithm::m_firstEventsMutex
std::mutex m_firstEventsMutex
Definition
EfexSimMonitorAlgorithm.h:35
EfexSimMonitorAlgorithm::m_eFexEmxSimContainerKey
SG::ReadHandleKey< xAOD::eFexEMRoIContainer > m_eFexEmxSimContainerKey
Definition
EfexSimMonitorAlgorithm.h:46
EfexSimMonitorAlgorithm::m_eFexTauxContainerKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_eFexTauxContainerKey
Definition
EfexSimMonitorAlgorithm.h:45
EfexSimMonitorAlgorithm::m_eFexEmxContainerKey
SG::ReadHandleKey< xAOD::eFexEMRoIContainer > m_eFexEmxContainerKey
Definition
EfexSimMonitorAlgorithm.h:44
SG::ReadCondHandleKey
Definition
ReadCondHandleKey.h:21
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition
StoreGate/StoreGate/ReadHandleKey.h:40
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
eFexEMRoIContainer.h
eFexEMRoI.h
eFexTauRoIContainer.h
eFexTauRoI.h
eFexTowerContainer.h
eFexTower.h
EfexSimMonitorAlgorithm
Definition
EfexSimMonitorAlgorithm.py:1
std::sort
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
Definition
DVL_algorithms.h:554
initialize
void initialize()
Definition
run_EoverP.cxx:894
EfexSimMonitorAlgorithm::SortableTob::SortableTob
SortableTob(unsigned int w, float e, float p)
Definition
EfexSimMonitorAlgorithm.h:58
EfexSimMonitorAlgorithm::SortableTob::phi
float phi
Definition
EfexSimMonitorAlgorithm.h:60
EfexSimMonitorAlgorithm::SortableTob::word0
unsigned int word0
Definition
EfexSimMonitorAlgorithm.h:59
EfexSimMonitorAlgorithm::SortableTob::eta
float eta
Definition
EfexSimMonitorAlgorithm.h:60
Generated on
for ATLAS Offline Software by
1.17.0