ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LumiBlock
LumiBlockComps
src
LumiBlockMuWriter.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
LumiBlockMuWriter.h
"
6
#include "
StoreGate/ReadCondHandle.h
"
7
#include "
StoreGate/WriteDecorHandle.h
"
8
9
LumiBlockMuWriter::LumiBlockMuWriter
(
const
std::string& name, ISvcLocator* pSvcLocator)
10
:
AthReentrantAlgorithm
(name,pSvcLocator)
11
{
12
}
13
14
StatusCode
LumiBlockMuWriter::initialize
()
15
{
16
ATH_MSG_INFO
(
"LumiBlockMuWriter::initialize()"
);
17
18
ATH_CHECK
(
m_lumiDataKey
.initialize(
SG::AllowEmpty
));
19
ATH_CHECK
(
m_actMuKey
.initialize());
20
ATH_CHECK
(
m_aveMuKey
.initialize());
21
22
return
StatusCode::SUCCESS;
23
}
24
25
StatusCode
LumiBlockMuWriter::execute
(
const
EventContext& ctx)
const
26
{
27
ATH_MSG_DEBUG
(
"LumiBlockMuWriter::execute()"
);
28
29
float
actualMu = 0.0;
30
float
muToLumi = 0.0;
31
float
averageMu = 0.0;
32
if
(!
m_lumiDataKey
.empty()) {
33
SG::ReadCondHandle<LuminosityCondData>
lumiData (
m_lumiDataKey
, ctx);
34
if
(lumiData->lbAverageLuminosity() != 0 ||
35
lumiData->lbAverageInteractionsPerCrossing() != 0) {
36
muToLumi = lumiData->muToLumi();
37
if
( std::abs( muToLumi ) > 0.00001 ) {
38
unsigned
int
bcid = ctx.eventID().bunch_crossing_id();
39
actualMu = lumiData->lbLuminosityPerBCIDVector().at(bcid) / muToLumi;
40
}
41
}
42
averageMu = lumiData->lbAverageInteractionsPerCrossing();
43
}
44
45
SG::WriteDecorHandle<xAOD::EventInfo,float>
actMu(
m_actMuKey
,ctx);
46
if
(!actMu.
isPresent
()) {
47
ATH_MSG_ERROR
(
"actualInteractionsPerCrossing.isPresent check fails"
);
48
return
StatusCode::FAILURE;
49
}
50
if
(!actMu.
isAvailable
()) {
51
actMu(0) = actualMu;
52
}
53
54
SG::WriteDecorHandle<xAOD::EventInfo,float>
aveMu(
m_aveMuKey
,ctx);
55
if
(!aveMu.
isPresent
()) {
56
ATH_MSG_ERROR
(
"averageInteractionsPerCrossing.isPresent check fails"
);
57
return
StatusCode::FAILURE;
58
}
59
if
(!aveMu.
isAvailable
()) {
60
aveMu(0) = averageMu;
61
}
62
63
return
StatusCode::SUCCESS;
64
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
LumiBlockMuWriter.h
ReadCondHandle.h
WriteDecorHandle.h
Handle class for adding a decoration to an object.
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition
AthReentrantAlgorithm.h:74
LumiBlockMuWriter::m_actMuKey
SG::WriteDecorHandleKey< xAOD::EventInfo > m_actMuKey
Definition
LumiBlockMuWriter.h:36
LumiBlockMuWriter::m_aveMuKey
SG::WriteDecorHandleKey< xAOD::EventInfo > m_aveMuKey
Definition
LumiBlockMuWriter.h:41
LumiBlockMuWriter::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition
LumiBlockMuWriter.cxx:25
LumiBlockMuWriter::LumiBlockMuWriter
LumiBlockMuWriter(const std::string &name, ISvcLocator *pSvcLocator)
Definition
LumiBlockMuWriter.cxx:9
LumiBlockMuWriter::initialize
virtual StatusCode initialize() override
Definition
LumiBlockMuWriter.cxx:14
LumiBlockMuWriter::m_lumiDataKey
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey
Definition
LumiBlockMuWriter.h:31
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition
StoreGate/StoreGate/WriteDecorHandle.h:100
SG::WriteDecorHandle::isAvailable
bool isAvailable()
Test to see if this variable exists in the store, for the referenced object.
SG::WriteDecorHandle::isPresent
bool isPresent() const
Is the referenced container present in SG?
SG::AllowEmpty
@ AllowEmpty
Definition
StoreGate/StoreGate/VarHandleKey.h:27
Generated on
for ATLAS Offline Software by
1.17.0