ATLAS Offline Software
Loading...
Searching...
No Matches
LuminosityCondAlg Class Reference

Conditions algorithm for luminosity data. More...

#include <LuminosityCondAlg.h>

Inheritance diagram for LuminosityCondAlg:

Public Member Functions

virtual StatusCode initialize () override
 Gaudi initialize method.
virtual StatusCode execute (const EventContext &ctx) const override
 Algorithm execute method.
virtual bool isReEntrant () const override
 Avoid scheduling algorithm multiple times.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode updateAvgLumi (const CondAttrListCollection &lumiData, LuminosityCondData &lumi, unsigned int &preferredChannel, unsigned int &calibChannel, const coral::Blob *&bunchInstLumiBlob) const
 Unpack luminosity data from the attribute list.
StatusCode updatePerBunchLumi (const EventContext &ctx, const coral::Blob *bunchInstLumiBlob, unsigned int preferredChannel, unsigned int calibChannel, SG::WriteCondHandle< LuminosityCondData > &wHdl, LuminosityCondData &lumi) const
 Fill in per-bunch luminosity data.
StatusCode updateMuToLumi (const EventContext &ctx, unsigned int calibChannel, SG::WriteCondHandle< LuminosityCondData > &wHdl, LuminosityCondData &lumi, bool &isValid) const
 Fill in mu-to-lumi calibration.
StatusCode updatePerBunchLumiRun2 (const coral::Blob &bunchInstLumiBlob, unsigned int preferredChannel, LuminosityCondData &lumi) const
 Fill in per-bunch luminosity data, run 2 and later.
StatusCode updatePerBunchLumiRun1 (const EventContext &ctx, unsigned int preferredChannel, SG::WriteCondHandle< LuminosityCondData > &wHdl, LuminosityCondData &lumi) const
 Fill in per-bunch luminosity data, run 1.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Property< unsigned long > m_lumiChannel { this, "LumiChannelNumber", 0, "Luminosity channel to read. 0 means to determine from the data." }
Gaudi::Property< unsigned long > m_calibBackupChannel { this, "CalibBackupChannel", 112, "Backup channel in case calibChannel doesn't exist in online calibration folder" }
Gaudi::Property< bool > m_skipInvalid { this, "SkipInvalid", true, "Flag to control whether invalid data is skipped: True (default), returning a zero luminosity; false, returning available luminosity values anyway." }
Gaudi::Property< bool > m_expectInvalid { this, "ExpectInvalid", false, "Flag to control printouts when invalid data are encountered: True suppresses messages, False (default) leaves them in" }
Gaudi::Property< bool > m_isMC { this, "IsMC", false, "Set to true when running on MC instead of data" }
Gaudi::Property< float > m_muToLumi { this, "MCMuToLumi", 0.140569, "mu to lumi conversion factor in MC (80 mb/LHC rev freq)" }
SG::ReadCondHandleKey< CondAttrListCollectionm_luminosityFolderInputKey
SG::ReadCondHandleKey< OnlineLumiCalibrationCondDatam_onlineLumiCalibrationInputKey
SG::ReadCondHandleKey< BunchLumisCondDatam_bunchLumisInputKey
SG::ReadCondHandleKey< BunchGroupCondDatam_bunchGroupInputKey
SG::ReadCondHandleKey< FillParamsCondDatam_fillParamsInputKey
SG::ReadCondHandleKey< AthenaAttributeListm_mcDigitizationInputKey
SG::ReadHandleKey< ByteStreamMetadataContainerm_byteStreamMetadataKey
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey { this, "EventInfoKey", "EventInfo", "EventInfo key, used to read in simulated mu in MC" }
SG::ReadDecorHandleKey< xAOD::EventInfom_actualMuKey
SG::ReadDecorHandleKey< xAOD::EventInfom_averageMuKey
SG::WriteCondHandleKey< LuminosityCondDatam_luminosityOutputKey
 Output conditions object.
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Conditions algorithm for luminosity data.

Definition at line 35 of file LuminosityCondAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode LuminosityCondAlg::execute ( const EventContext & ctx) const
overridevirtual

Algorithm execute method.

Parameters
ctxEvent Context.

Definition at line 90 of file LuminosityCondAlg.cxx.

91{
92 auto lumi = std::make_unique<LuminosityCondData>();
93 SG::WriteCondHandle<LuminosityCondData> luminosityCondData
95
96 if (m_isMC) {
97 // MC case.
98 const auto* eventinfo = SG::get(m_eventInfoKey, ctx);
99 // define a range for this one LB with one second validity
100 EventIDRange range = EventIDRange(EventIDBase(eventinfo->runNumber(),
101 EventIDBase::UNDEFEVT,
102 eventinfo->timeStamp(),
103 eventinfo->timeStampNSOffset(),
104 eventinfo->lumiBlock()),
105 EventIDBase(eventinfo->runNumber(),
106 EventIDBase::UNDEFEVT,
107 eventinfo->timeStamp()+1,
108 eventinfo->timeStampNSOffset(),
109 eventinfo->lumiBlock()+1));
110
111 luminosityCondData.addDependency(range);
112
113 const float avgMu = eventinfo->averageInteractionsPerCrossing();
114 std::string sbunches;
115
116 // Try to read from digitization folder first (traditional source for POOL files)
117 bool foundInDigitization = false;
118
119 if (!m_mcDigitizationInputKey.empty()) {
120 SG::ReadCondHandle<AthenaAttributeList> digitizationFolder(m_mcDigitizationInputKey, ctx);
121
122 if (digitizationFolder.isValid()) {
123 try {
124 const auto& attr = (**digitizationFolder)[std::string("BeamIntensityPattern")];
125 sbunches = attr.data<std::string>();
126 foundInDigitization = true;
127 ATH_MSG_DEBUG("Read BeamIntensityPattern from Digitization folder");
128 } catch (const std::exception& e) {
129 ATH_MSG_DEBUG("Could not read from Digitization folder: " << e.what());
130 }
131 }
132 }
133
134 // Fall back to ByteStream metadata if not found in digitization folder
135 if (!foundInDigitization) {
136 SG::ReadHandle<ByteStreamMetadataContainer> bsMetadata(m_byteStreamMetadataKey, ctx);
137
138 if (bsMetadata.isValid() && !bsMetadata->empty()) {
139 const ByteStreamMetadata* metadata = bsMetadata->at(0);
140 const std::vector<std::string>& freeStrings = metadata->getFreeMetaDataStrings();
141
142 // Look for IOVMeta./Digitization/Parameters= in freeMetaDataStrings
143 for (const std::string& str : freeStrings) {
144 if (str.starts_with("IOVMeta./Digitization/Parameters=")) {
145 // Extract JSON string after the '=' sign
146 size_t eqPos = str.find('=');
147 if (eqPos != std::string::npos && eqPos + 1 < str.size()) {
148 std::string jsonStr = str.substr(eqPos + 1);
149
150 try {
151 nlohmann::json iovMetadata = nlohmann::json::parse(jsonStr);
152
153 // Extract BeamIntensityPattern from the JSON
154 // The JSON structure is: {"iovs": [{"attrs": {"chan65535": {"BeamIntensityPattern": "..."}}}]}
155 if (iovMetadata.contains("iovs") && iovMetadata["iovs"].is_array() && !iovMetadata["iovs"].empty()) {
156 const auto& firstIov = iovMetadata["iovs"][0];
157 if (firstIov.contains("attrs")) {
158 // Look through all channels for BeamIntensityPattern
159 for (const auto& chanItem : firstIov["attrs"].items()) {
160 const auto& chanAttrs = chanItem.value();
161 if (chanAttrs.contains("BeamIntensityPattern")) {
162 sbunches = chanAttrs["BeamIntensityPattern"].get<std::string>();
163 ATH_MSG_INFO("Read BeamIntensityPattern from ByteStream metadata");
164 break;
165 }
166 }
167 if (!sbunches.empty()) break;
168 }
169 }
170 } catch (const std::exception& e) {
171 ATH_MSG_WARNING("Failed to parse IOV metadata from ByteStream: " << e.what());
172 }
173 }
174 }
175 }
176 }
177
178 if (sbunches.empty()) {
179 ATH_MSG_ERROR("Could not read BeamIntensityPattern from either Digitization folder or ByteStream metadata");
180 }
181 }
182
183 std::vector<float> bunchpattern = tokenize(sbunches);
184
185 if (bunchpattern.size() != LuminosityCondData::TOTAL_LHC_BCIDS) {
186 ATH_MSG_ERROR("Decoding MC bunch structure failed, improper number of LHC BCIDs");
187 bunchpattern = std::vector<float>(LuminosityCondData::TOTAL_LHC_BCIDS, 1.);
188 }
189
190 float totintensity = 0.;
191 for (size_t i = 0; i < bunchpattern.size(); ++i) {
192 totintensity += bunchpattern[i];
193 bunchpattern[i] *= (avgMu*m_muToLumi);
194 }
195
196 lumi->setLbAverageInteractionsPerCrossing(avgMu);
197 lumi->setLbAverageLuminosity(totintensity*avgMu*m_muToLumi);
198 lumi->setLbLuminosityPerBCIDVector(std::move(bunchpattern));
199 lumi->setMuToLumi(m_muToLumi);
200 }
201 else {
202 SG::ReadCondHandle<CondAttrListCollection> luminosityFolder
204 luminosityCondData.addDependency(luminosityFolder);
205
206 unsigned int preferredChannel;
207 unsigned int calibChannel;
208 const coral::Blob* bunchInstLumiBlob = nullptr;
209 ATH_CHECK( updateAvgLumi (**luminosityFolder,
210 *lumi,
211 preferredChannel,
212 calibChannel,
213 bunchInstLumiBlob) );
214
216 bunchInstLumiBlob,
217 preferredChannel,
218 calibChannel,
219 luminosityCondData,
220 *lumi) );
221 }
222
223
224 ATH_CHECK( luminosityCondData.record (std::move (lumi)) );
225 return StatusCode::SUCCESS;
226}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
StatusCode updatePerBunchLumi(const EventContext &ctx, const coral::Blob *bunchInstLumiBlob, unsigned int preferredChannel, unsigned int calibChannel, SG::WriteCondHandle< LuminosityCondData > &wHdl, LuminosityCondData &lumi) const
Fill in per-bunch luminosity data.
Gaudi::Property< float > m_muToLumi
SG::WriteCondHandleKey< LuminosityCondData > m_luminosityOutputKey
Output conditions object.
Gaudi::Property< bool > m_isMC
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
SG::ReadHandleKey< ByteStreamMetadataContainer > m_byteStreamMetadataKey
SG::ReadCondHandleKey< AthenaAttributeList > m_mcDigitizationInputKey
StatusCode updateAvgLumi(const CondAttrListCollection &lumiData, LuminosityCondData &lumi, unsigned int &preferredChannel, unsigned int &calibChannel, const coral::Blob *&bunchInstLumiBlob) const
Unpack luminosity data from the attribute list.
SG::ReadCondHandleKey< CondAttrListCollection > m_luminosityFolderInputKey
static constexpr unsigned int TOTAL_LHC_BCIDS
std::vector< std::string > tokenize(const std::string &the_str, std::string_view delimiters)
Splits the string into smaller substrings.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ initialize()

StatusCode LuminosityCondAlg::initialize ( )
overridevirtual

Gaudi initialize method.

Definition at line 60 of file LuminosityCondAlg.cxx.

61{
62 ATH_CHECK( m_luminosityOutputKey.initialize() );
63
64 // May be empty if configured for MC.
67
68 // May be empty if configured for data, or for MC ByteStream (will use BS metadata instead).
70 // ByteStream metadata is only used in MC mode, but we initialize with AllowEmpty always
71 // since the code may try to access it. For data mode, it will just be unused.
73 ATH_CHECK( m_eventInfoKey.initialize(m_isMC) );
74 ATH_CHECK( m_actualMuKey.initialize(m_isMC) );
75 ATH_CHECK( m_averageMuKey.initialize(m_isMC) );
76
77 // Only used for run1.
81 return StatusCode::SUCCESS;
82}
SG::ReadCondHandleKey< BunchGroupCondData > m_bunchGroupInputKey
SG::ReadCondHandleKey< OnlineLumiCalibrationCondData > m_onlineLumiCalibrationInputKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_averageMuKey
SG::ReadCondHandleKey< FillParamsCondData > m_fillParamsInputKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_actualMuKey
SG::ReadCondHandleKey< BunchLumisCondData > m_bunchLumisInputKey

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

◆ isReEntrant()

virtual bool AthCondAlgorithm::isReEntrant ( ) const
inlineoverridevirtualinherited

Avoid scheduling algorithm multiple times.

With multiple concurrent events, conditions objects often expire simultaneously for all slots. To avoid that the scheduler runs the CondAlg in each slot, we declare it as "non-reentrant". This ensures that the conditions objects are only created once.

In case a particular CondAlg should behave differently, it can override this method again and return true.

See also
ATEAM-836

Definition at line 39 of file AthCondAlgorithm.h.

39{ return false; }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateAvgLumi()

StatusCode LuminosityCondAlg::updateAvgLumi ( const CondAttrListCollection & lumiData,
LuminosityCondData & lumi,
unsigned int & preferredChannel,
unsigned int & calibChannel,
const coral::Blob *& bunchInstLumiBlob ) const
private

Unpack luminosity data from the attribute list.

Parameters
lumiDataInput luminosity data.
lumiOutput luminosity data being filled.
preferredChannel[out]Preferred luminosity channel to use.
calibChannel[out]Calibration luminosity channel to use.
bunchInstLumiBlob[out]Packed per-bunch luminosity data. Set to null for Run 1.

Unpacks luminosity data from the attribute list. Fills in the average luminosity fields in lumi, and determines the luminosity channels to use. For Run 2 and later, returns the packed luminosity data.

Definition at line 244 of file LuminosityCondAlg.cxx.

250{
251 preferredChannel = 0;
252 calibChannel = 0;
253 bunchInstLumiBlob = nullptr;
254
255 const coral::AttributeList& attrList = lumiData.attributeList (m_lumiChannel);
256 if (attrList.size() == 0 || attrList["Valid"].isNull()) {
257 ATH_MSG_DEBUG ("Can't find luminosity information for channel " << m_lumiChannel);
258 return StatusCode::SUCCESS;
259 }
260
261 if (msgLvl (MSG::DEBUG)) {
262 std::ostringstream attrStr1;
263 attrList.toOutputStream( attrStr1 );
264 ATH_MSG_DEBUG( "ChanNum " << m_lumiChannel << " Attribute list "
265 << attrStr1.str() );
266 }
267
268 // Check data availability
269 if (attrList["LBAvInstLumi"].isNull() || attrList["LBAvEvtsPerBX"].isNull()) {
270 ATH_MSG_ERROR( " NULL Luminosity information in database " );
271 return StatusCode::FAILURE;
272 }
273
274 // Check validity (don't bother continuing if invalid)
275 uint32_t valid = attrList["Valid"].data<cool::UInt32>();
276 lumi.setLbAverageValid (valid);
277 if (valid & 0x01) {
278 if (m_skipInvalid) {
279 if (!m_expectInvalid) {
280 ATH_MSG_INFO( " Invalid LB Average luminosity ... set lumi to 0" );
281 }
282 return StatusCode::SUCCESS;
283 } else {
284 ATH_MSG_DEBUG( " Invalid LB Average luminosity ... continuing because skipInvalid == FALSE" );
285 }
286 }
287
288 // Get preferred channel (needed for per-BCID calculation)
289 if (m_lumiChannel == 0u) {
290
291 // Check if we have a payload for this (Run2 only)
292 bool hasAlgorithmID = false;
293 for (coral::AttributeList::const_iterator attr = attrList.begin();
294 attr != attrList.end(); ++attr) {
295 if (attr->specification().name() == "AlgorithmID") {
296 hasAlgorithmID = true;
297 break;
298 }
299 }
300
301 if (hasAlgorithmID) {
302 // In Run2, channel 0 should be good. Leave as is
303 preferredChannel = m_lumiChannel;
304 calibChannel = attrList["AlgorithmID"].data<cool::UInt32>();
305
306 } else {
307 // In Run1, we need to recalculate from the actual channel number
308 preferredChannel = (valid >> 22);
309 calibChannel = preferredChannel;
310 }
311
312 } else {
313 preferredChannel = m_lumiChannel;
314 calibChannel = m_lumiChannel;
315 }
316
317 float LBAvInstLumi = attrList["LBAvInstLumi"].data<cool::Float>(); // Lumi
318 float LBAvEvtsPerBX = attrList["LBAvEvtsPerBX"].data<cool::Float>(); // Mu
319
320 // Check (and protect for NaN
321 if ( std::isnan (LBAvInstLumi) ) {
322 ATH_MSG_WARNING( " Luminosity is not a number.. " << LBAvInstLumi << " ... set it to 0 " );
323 LBAvInstLumi=0.;
324 }
325
326 if ( std::isnan (LBAvEvtsPerBX) ) {
327 ATH_MSG_WARNING( " Luminosity is not a number.. " << LBAvEvtsPerBX << " ... set it to 0 " );
328 LBAvEvtsPerBX=0.;
329 }
330
331 lumi.setLbAverageLuminosity (LBAvInstLumi);
332 lumi.setLbAverageInteractionsPerCrossing (LBAvEvtsPerBX);
333
334 // Check validity of per-BCID luminosity (will issue warning in recalcPerBCIDLumi
335 int perBcidValid = ((valid&0x3ff)/10) % 10;
336 if ((perBcidValid > 0) && m_skipInvalid) {
337 return StatusCode::SUCCESS;
338 }
339
340 // Also save per-BCID blob if it exists
341 for (coral::AttributeList::const_iterator attr = attrList.begin();
342 attr != attrList.end(); ++attr)
343 {
344 if (attr->specification().name() == "BunchInstLumi") {
345 if (!attrList["BunchInstLumi"].isNull())
346 bunchInstLumiBlob = &attrList["BunchInstLumi"].data<coral::Blob>();
347 break;
348 }
349 }
350
351 return StatusCode::SUCCESS;
352}
bool msgLvl(const MSG::Level lvl) const
const AttributeList & attributeList(ChanNum chanNum) const
attribute list for a given channel number
Gaudi::Property< unsigned long > m_lumiChannel
Gaudi::Property< bool > m_skipInvalid
Gaudi::Property< bool > m_expectInvalid
list valid
Definition calibdata.py:44
setEventNumber uint32_t

◆ updateMuToLumi()

StatusCode LuminosityCondAlg::updateMuToLumi ( const EventContext & ctx,
unsigned int calibChannel,
SG::WriteCondHandle< LuminosityCondData > & wHdl,
LuminosityCondData & lumi,
bool & isValid ) const
private

Fill in mu-to-lumi calibration.

Parameters
ctxEvent context.
calibChannelCalibration luminosity channel to use.
wHdlWriteCondHandle of the conditions data being filled. Range is updated if needed.
lumiOutput luminosity data being filled.
isValidSet to false if data are not valid.
ctxEvent context.
calibChannelCalibration luminosity channel to use.
wHdlWriteHandle of the conditions data being filled. Range is updated if needed.
lumiOutput luminosity data being filled.
isValidSet to false if data are not valid.

Definition at line 418 of file LuminosityCondAlg.cxx.

423{
424 SG::ReadCondHandle<OnlineLumiCalibrationCondData> onlineLumiCalibration
426 wHdl.addDependency(onlineLumiCalibration);
427
428 // This is the only correct way to do this!
429 // The division below gives average mu (over all bunches) to total lumi
430 float muToLumi = onlineLumiCalibration->getMuToLumi (calibChannel);
431
432 // Check if this is reasonable
433 if (muToLumi < 0.) {
434 ATH_MSG_WARNING(" Found muToLumi = " << muToLumi << " for channel " << calibChannel << ". Try backup channel..." );
435 muToLumi = onlineLumiCalibration->getMuToLumi(m_calibBackupChannel);
436 ATH_MSG_WARNING(" Found muToLumi = " << muToLumi << " for backup channel " << m_calibBackupChannel);
437 }
438
439 lumi.setMuToLumi (muToLumi);
440
441 // Check validity
442 isValid = true;
443 int perBcidValid = ((lumi.lbAverageValid()&0x3ff)/10) % 10;
444 if ((lumi.lbAverageValid() & 0x03) || (perBcidValid > 0)) { // Skip if either per-BCID or LBAv is invalid
445 isValid = false;
446 if (m_skipInvalid) {
447 ATH_MSG_WARNING( " Invalid per-BCID luminosity found: "
448 << lumi.lbAverageValid() << "!" );
449 return StatusCode::SUCCESS;
450 } else {
451 ATH_MSG_WARNING( " Invalid per-BCID luminosity found: "
452 << lumi.lbAverageValid()
453 << " continuing because skipInvalid == FALSE" );
454 }
455 }
456
457 // Now check muToLumi and report depending upon whether lumi is valid or not
458 if (muToLumi < 0.) {
459 if (isValid) {
460 ATH_MSG_ERROR(" Found invalid muToLumi = " << muToLumi << " for backup channel " << m_calibBackupChannel << "!");
461 } else {
462 ATH_MSG_WARNING(" Found invalid muToLumi = " << muToLumi << " for backup channel " << m_calibBackupChannel << "!");
463 }
464
465 // Don't keep negative values
466 muToLumi = 0.;
467 lumi.setMuToLumi (muToLumi);
468 }
469
470 ATH_MSG_DEBUG(" Found muToLumi = " << muToLumi << " for channel "
471 << calibChannel );
472
473 return StatusCode::SUCCESS;
474}
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition AtlasPID.h:878
Gaudi::Property< unsigned long > m_calibBackupChannel
void addDependency(const EventIDRange &range)

◆ updatePerBunchLumi()

StatusCode LuminosityCondAlg::updatePerBunchLumi ( const EventContext & ctx,
const coral::Blob * bunchInstLumiBlob,
unsigned int preferredChannel,
unsigned int calibChannel,
SG::WriteCondHandle< LuminosityCondData > & wHdl,
LuminosityCondData & lumi ) const
private

Fill in per-bunch luminosity data.

Parameters
ctxEvent context.
bunchInstLumiBlobPacked per-bunch luminosity data. Null for Run 1.
preferredChannelPreferred luminosity channel to use.
calibChannelCalibration luminosity channel to use.
wHdlWriteCondHandle conditions data being filled. Range is updated if needed.
lumiOutput luminosity data being filled.
ctxEvent context.
bunchInstLumiBlobPacked per-bunch luminosity data. Null for Run 1.
preferredChannelPreferred luminosity channel to use.
calibChannelCalibration luminosity channel to use.
wHdlWriteHandle of the conditions data being filled. Range is updated if needed.
lumiOutput luminosity data being filled.

Definition at line 367 of file LuminosityCondAlg.cxx.

373{
374 if (lumi.lbAverageLuminosity() <= 0.) {
375 if (!m_expectInvalid) {
376 ATH_MSG_INFO( "LBAvInstLumi is zero or negative in updatePerBunchLumi():"
377 << lumi.lbAverageLuminosity());
379 }
380 return StatusCode::SUCCESS;
381 }
382 bool isValid = true;
383 ATH_CHECK( updateMuToLumi (ctx, calibChannel, wHdl, lumi, isValid) );
384
385 // Check here if we want to do this the Run1 way (hard) or the Run2 way (easy)
386
387 if (!isValid) {
388 // Skip if not valid.
389 }
390 else if (bunchInstLumiBlob != nullptr) { // Run2 way, easy
391 ATH_CHECK( updatePerBunchLumiRun2 (*bunchInstLumiBlob,
392 preferredChannel,
393 lumi) );
394 }
395 else { // Run1 way, hard!
397 preferredChannel,
398 wHdl,
399 lumi) );
400 }
401
402 ATH_MSG_DEBUG( "finished updatePerBunchLumi() for alg: "
403 << preferredChannel );
404 return StatusCode::SUCCESS;
405}
static EventIDRange infiniteRunLB()
Produces an EventIDRange that is infinite in RunLumi and invalid in Time.
StatusCode updatePerBunchLumiRun1(const EventContext &ctx, unsigned int preferredChannel, SG::WriteCondHandle< LuminosityCondData > &wHdl, LuminosityCondData &lumi) const
Fill in per-bunch luminosity data, run 1.
StatusCode updateMuToLumi(const EventContext &ctx, unsigned int calibChannel, SG::WriteCondHandle< LuminosityCondData > &wHdl, LuminosityCondData &lumi, bool &isValid) const
Fill in mu-to-lumi calibration.
StatusCode updatePerBunchLumiRun2(const coral::Blob &bunchInstLumiBlob, unsigned int preferredChannel, LuminosityCondData &lumi) const
Fill in per-bunch luminosity data, run 2 and later.

◆ updatePerBunchLumiRun1()

StatusCode LuminosityCondAlg::updatePerBunchLumiRun1 ( const EventContext & ctx,
unsigned int preferredChannel,
SG::WriteCondHandle< LuminosityCondData > & wHdl,
LuminosityCondData & lumi ) const
private

Fill in per-bunch luminosity data, run 1.

Parameters
preferredChannelPreferred luminosity channel to use.
wHdlWriteHandle of the conditions data being filled. Range is updated if needed.
lumiOutput luminosity data being filled.
preferredChannelPreferred luminosity channel to use.
wHdlWriteHandle of the conditions data being filled.
lumiOutput luminosity data being filled.

Definition at line 551 of file LuminosityCondAlg.cxx.

555{
556 ATH_MSG_DEBUG( "starting updatePerBunchLumiRun1() for alg: " << preferredChannel );
557
558 if (preferredChannel == 0) {
559 return StatusCode::SUCCESS;
560 }
561
562 // Nothing to do if we don't have the ingredients
564 ATH_MSG_DEBUG( "OnlineLumiCalibrationInputKey.empty() is TRUE, skipping..." );
565 return StatusCode::SUCCESS;
566 }
567 if (m_bunchLumisInputKey.empty()) {
568 ATH_MSG_DEBUG( "BunchLumisInputKey.empty() is TRUE, skipping..." );
569 return StatusCode::SUCCESS;
570 }
571 if (m_bunchGroupInputKey.empty()) {
572 ATH_MSG_DEBUG( "BunchGroupTool.empty() is TRUE, skipping..." );
573 return StatusCode::SUCCESS;
574 }
575 if (m_fillParamsInputKey.empty()) {
576 ATH_MSG_DEBUG( "FillParamsInputKey.empty() is TRUE, skipping..." );
577 return StatusCode::SUCCESS;
578 }
579
580 SG::ReadCondHandle<OnlineLumiCalibrationCondData> onlineLumiCalibration
582 wHdl.addDependency(onlineLumiCalibration);
583 SG::ReadCondHandle<BunchLumisCondData> bunchLumis (m_bunchLumisInputKey, ctx);
584 wHdl.addDependency(bunchLumis);
585 SG::ReadCondHandle<BunchGroupCondData> bunchGroup (m_bunchGroupInputKey, ctx);
586 wHdl.addDependency(bunchGroup);
587 SG::ReadCondHandle<FillParamsCondData> fillParams (m_fillParamsInputKey, ctx);
588 wHdl.addDependency(fillParams);
589
590 const std::vector<unsigned int>& luminousBunches = fillParams->luminousBunches();
591 ATH_MSG_DEBUG( "N LuminousBunches:" << luminousBunches.size() );
592
593 // Get the raw data for the preferred channel
594 const std::vector<float>& rawLumiVec = bunchLumis->rawLuminosity(preferredChannel);
595 if (rawLumiVec.empty()) {
596 ATH_MSG_DEBUG( "Empty raw luminosity vector" );
597 return StatusCode::SUCCESS;
598 }
599
600 //
601 // Calibration step
602 //
603
604 // Here we want to go through and calibrate raw values in the luminous bunches only.
605 // This is what the OL adds up, and since these are online calibrations, we want to rescale the total
606 // to agree to whatever offline tag we are using.
607 std::vector<float> calLumiVec (LuminosityCondData::TOTAL_LHC_BCIDS, 0.);
608
609 // Update muToLumi while we are at it (also check that calibration exists)
610 float muToLumi = onlineLumiCalibration->getMuToLumi (preferredChannel);
611 if (muToLumi <= 0.) {
612 ATH_MSG_ERROR( " dont have calibration information for preferred channel "
613 << preferredChannel << "!" );
614 return StatusCode::FAILURE;
615 }
616 lumi.setMuToLumi (muToLumi);
617
618 double lumiSum = 0.;
619 for (unsigned int bcid : luminousBunches) {
620 // Don't waste time on zero lumi
621 if (rawLumiVec.at(bcid) <= 0.) {
622 ATH_MSG_DEBUG( "Calibrate BCID " << bcid << " with raw "
623 << rawLumiVec.at(bcid) << " -> skipping" );
624 continue;
625 }
626
627 // Calibrate
628 if (!onlineLumiCalibration->calibrateLumi(preferredChannel,
629 rawLumiVec[bcid],
630 calLumiVec[bcid]))
631 {
632 ATH_MSG_DEBUG( "Calibrate BCID " << bcid << " with raw " << rawLumiVec[bcid] << " -> calibration failed!" );
633 ATH_MSG_WARNING( "Per-BCID calibration failed for bcid " << bcid << " with raw lumi = " << rawLumiVec[bcid] );
634 continue;
635 }
636
637 lumiSum += calLumiVec[bcid];
638
639 ATH_MSG_DEBUG( "Calibrate BCID " << bcid << " with raw " << rawLumiVec[bcid] << " -> " << calLumiVec[bcid] );
640 }
641
642 // Work out scale factor between offline and online estimate
643 float offlineOnlineRatio = 1.;
644 if (lumiSum > 0.) offlineOnlineRatio = lumi.lbAverageLuminosity() / lumiSum;
645
646 ATH_MSG_DEBUG( " Offline/Online scale factor: " << lumi.lbAverageLuminosity()
647 << " / " << lumiSum << " = " << offlineOnlineRatio );
648
649 // Make sure we have values for all BCIDs in the physics bunch group
650 for (unsigned int bcid : bunchGroup->bunchGroup (1)) {
651 // Don't repeat if value already exists
652 if (calLumiVec[bcid] > 0.) continue;
653 if (rawLumiVec[bcid] <= 0.) continue;
654
655 // Calibrate
656 if (!onlineLumiCalibration->calibrateLumi(preferredChannel,
657 rawLumiVec[bcid],
658 calLumiVec[bcid]))
659 {
660 ATH_MSG_DEBUG( " -> Calibration failed!" );
661 ATH_MSG_WARNING( "Per-BCID calibration failed for bcid " << bcid
662 << " with raw lumi = " << rawLumiVec[bcid] );
663 continue;
664 }
665 }
666
667 // Almost done, now we apply the scale factor to all BCIDs
668 for (float& bclumi : calLumiVec) {
669 bclumi *= offlineOnlineRatio;
670 }
671
672 lumi.setLbLuminosityPerBCIDVector (std::move (calLumiVec));
673
674 return StatusCode::SUCCESS;
675}
setEventNumber setTimeStamp bcid

◆ updatePerBunchLumiRun2()

StatusCode LuminosityCondAlg::updatePerBunchLumiRun2 ( const coral::Blob & bunchInstLumiBlob,
unsigned int preferredChannel,
LuminosityCondData & lumi ) const
private

Fill in per-bunch luminosity data, run 2 and later.

Parameters
bunchInstLumiBlobPacked per-bunch luminosity data.
preferredChannelPreferred luminosity channel to use.
lumiOutput luminosity data being filled.

Definition at line 484 of file LuminosityCondAlg.cxx.

487{
488 ATH_MSG_DEBUG( "starting updatePerBunchLumiRun2() for alg: " << preferredChannel );
489
490 // Check that the length isn't zero
491 if (bunchInstLumiBlob.size() == 0) {
492 ATH_MSG_ERROR("BunchInstLumi blob found with zero length!");
493 return StatusCode::FAILURE;
494 }
495
496 // Hardcode the Run2 BLOB decoding (should use CoolLumiUtilities...)
497 const uint8_t* ATH_RESTRICT pchar =
498 static_cast<const uint8_t*>(bunchInstLumiBlob.startingAddress()); // First byte holds storage size and mode
499 unsigned int bss = ((*pchar) % 100) / 10; // Byte storage size
500 unsigned int smod = ((*pchar) % 10); // Storage mode
501 ++pchar; // Points to next char after header
502
503 ATH_MSG_DEBUG( "BunchInstLumi blob found with storage mode " << smod
504 << " and byte storage size " << bss );
505
506 // Make sure we have what we think we have
507 if (bss != 4 || smod != 1) {
508 ATH_MSG_ERROR( "BunchInstLumi blob found with storage mode " << smod << " and byte storage size " << bss << " - Unknown!");
509 return StatusCode::FAILURE;
510 }
511
512 unsigned int nbcids = LuminosityCondData::TOTAL_LHC_BCIDS;
513 unsigned int bloblength = bss * nbcids + 1;
514
515 if (static_cast<cool::UInt32>(bunchInstLumiBlob.size()) != bloblength) {
516 ATH_MSG_ERROR( "BunchRawInstLumi blob found with length"
517 << bunchInstLumiBlob.size() << "in storage mode" << smod
518 << ", expecting " << bloblength << "!" );
519 return StatusCode::FAILURE;
520 }
521
522 // Length is correct, read raw data according to packing scheme
523 // This is absolute luminosity, so just unpack values into our array
524
525 ATH_MSG_DEBUG( "Unpacking lumi value from blob");
526 std::vector<float> instLumi (nbcids);
527 for (unsigned int i=0; i<nbcids; i++) {
528 // Can't use assignment directly because source may be misaligned.
529 instLumi[i] = CxxUtils::get_unaligned_float (pchar);
530 }
531
532 if (msgLvl (MSG::DEBUG)) {
533 for (unsigned int i=0; i<nbcids; i++) {
534 ATH_MSG_DEBUG( "Bcid: " << i << " Lumi: " << instLumi[i] );
535 }
536 }
537
538 lumi.setLbLuminosityPerBCIDVector (std::move (instLumi));
539
540 return StatusCode::SUCCESS;
541}
float get_unaligned_float(const uint8_t *ATH_RESTRICT &p)
Read a little-endian float value from a possibly unaligned pointer.
#define ATH_RESTRICT
Definition restrict.h:31

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_actualMuKey

SG::ReadDecorHandleKey<xAOD::EventInfo> LuminosityCondAlg::m_actualMuKey
private
Initial value:
{ this, "actualMuKey", m_eventInfoKey, "actualInteractionsPerCrossing",
"Decoration for Actual Interaction Per Crossing, for MC" }

Definition at line 189 of file LuminosityCondAlg.h.

190 { this, "actualMuKey", m_eventInfoKey, "actualInteractionsPerCrossing",
191 "Decoration for Actual Interaction Per Crossing, for MC" };

◆ m_averageMuKey

SG::ReadDecorHandleKey<xAOD::EventInfo> LuminosityCondAlg::m_averageMuKey
private
Initial value:
{ this, "averageMuKey", m_eventInfoKey, "averageInteractionsPerCrossing",
"Decoration for Average Interaction Per Crossing" }

Definition at line 193 of file LuminosityCondAlg.h.

194 { this, "averageMuKey", m_eventInfoKey, "averageInteractionsPerCrossing",
195 "Decoration for Average Interaction Per Crossing" };

◆ m_bunchGroupInputKey

SG::ReadCondHandleKey<BunchGroupCondData> LuminosityCondAlg::m_bunchGroupInputKey
private
Initial value:
{ this, "BunchGroupInputKey", "",
"Input filled bunch data. Only used for Run 1." }

Definition at line 169 of file LuminosityCondAlg.h.

170 { this, "BunchGroupInputKey", "",
171 "Input filled bunch data. Only used for Run 1." };

◆ m_bunchLumisInputKey

SG::ReadCondHandleKey<BunchLumisCondData> LuminosityCondAlg::m_bunchLumisInputKey
private
Initial value:
{ this, "BunchLumisInputKey", "",
"Input raw luminosities. Only used for Run 1." }

Definition at line 165 of file LuminosityCondAlg.h.

166 { this, "BunchLumisInputKey", "",
167 "Input raw luminosities. Only used for Run 1." };

◆ m_byteStreamMetadataKey

SG::ReadHandleKey<ByteStreamMetadataContainer> LuminosityCondAlg::m_byteStreamMetadataKey
private
Initial value:
{ this, "ByteStreamMetadataKey", "",
"ByteStream metadata (for reading IOV metadata from BS files in MC mode)" }

Definition at line 182 of file LuminosityCondAlg.h.

183 { this, "ByteStreamMetadataKey", "",
184 "ByteStream metadata (for reading IOV metadata from BS files in MC mode)" };

◆ m_calibBackupChannel

Gaudi::Property<unsigned long> LuminosityCondAlg::m_calibBackupChannel { this, "CalibBackupChannel", 112, "Backup channel in case calibChannel doesn't exist in online calibration folder" }
private

Definition at line 140 of file LuminosityCondAlg.h.

141{ this, "CalibBackupChannel", 112, "Backup channel in case calibChannel doesn't exist in online calibration folder" };

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> LuminosityCondAlg::m_eventInfoKey { this, "EventInfoKey", "EventInfo", "EventInfo key, used to read in simulated mu in MC" }
private

Definition at line 186 of file LuminosityCondAlg.h.

187{ this, "EventInfoKey", "EventInfo", "EventInfo key, used to read in simulated mu in MC" };

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_expectInvalid

Gaudi::Property<bool> LuminosityCondAlg::m_expectInvalid { this, "ExpectInvalid", false, "Flag to control printouts when invalid data are encountered: True suppresses messages, False (default) leaves them in" }
private

Definition at line 146 of file LuminosityCondAlg.h.

147{ this, "ExpectInvalid", false, "Flag to control printouts when invalid data are encountered: True suppresses messages, False (default) leaves them in" };

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_fillParamsInputKey

SG::ReadCondHandleKey<FillParamsCondData> LuminosityCondAlg::m_fillParamsInputKey
private
Initial value:
{ this, "FillParamsInputKey", "",
"Input luminous bunch data. Only used for Run 1." }

Definition at line 173 of file LuminosityCondAlg.h.

174 { this, "FillParamsInputKey", "",
175 "Input luminous bunch data. Only used for Run 1." };

◆ m_isMC

Gaudi::Property<bool> LuminosityCondAlg::m_isMC { this, "IsMC", false, "Set to true when running on MC instead of data" }
private

Definition at line 150 of file LuminosityCondAlg.h.

151{ this, "IsMC", false, "Set to true when running on MC instead of data" };

◆ m_lumiChannel

Gaudi::Property<unsigned long> LuminosityCondAlg::m_lumiChannel { this, "LumiChannelNumber", 0, "Luminosity channel to read. 0 means to determine from the data." }
private

Definition at line 137 of file LuminosityCondAlg.h.

138{ this, "LumiChannelNumber", 0, "Luminosity channel to read. 0 means to determine from the data." };

◆ m_luminosityFolderInputKey

SG::ReadCondHandleKey<CondAttrListCollection> LuminosityCondAlg::m_luminosityFolderInputKey
private
Initial value:
{ this, "LuminosityFolderInputKey", "/TRIGGER/OFLLUMI/LBLESTOFL",
"Input luminosity COOL folder." }

Definition at line 157 of file LuminosityCondAlg.h.

158 { this, "LuminosityFolderInputKey", "/TRIGGER/OFLLUMI/LBLESTOFL",
159 "Input luminosity COOL folder." };

◆ m_luminosityOutputKey

SG::WriteCondHandleKey<LuminosityCondData> LuminosityCondAlg::m_luminosityOutputKey
private
Initial value:
{ this, "LuminosityOutputKey", "LuminosityCondData",
"Output luminosity data." }

Output conditions object.

Definition at line 198 of file LuminosityCondAlg.h.

199 { this, "LuminosityOutputKey", "LuminosityCondData",
200 "Output luminosity data." };

◆ m_mcDigitizationInputKey

SG::ReadCondHandleKey<AthenaAttributeList> LuminosityCondAlg::m_mcDigitizationInputKey
private
Initial value:
{ this, "DigitizationFolderInputKey", "/Digitization/Parameters",
"Digitization parameters metadata folder." }

Definition at line 178 of file LuminosityCondAlg.h.

179 { this, "DigitizationFolderInputKey", "/Digitization/Parameters",
180 "Digitization parameters metadata folder." };

◆ m_muToLumi

Gaudi::Property<float> LuminosityCondAlg::m_muToLumi { this, "MCMuToLumi", 0.140569, "mu to lumi conversion factor in MC (80 mb/LHC rev freq)" }
private

Definition at line 153 of file LuminosityCondAlg.h.

154{ this, "MCMuToLumi", 0.140569, "mu to lumi conversion factor in MC (80 mb/LHC rev freq)" };

◆ m_onlineLumiCalibrationInputKey

SG::ReadCondHandleKey<OnlineLumiCalibrationCondData> LuminosityCondAlg::m_onlineLumiCalibrationInputKey
private
Initial value:
{ this, "OnlineLumiCalibrationInputKey", "OnlineLumiCalibrationCondData",
"Input luminosity calibration." }

Definition at line 161 of file LuminosityCondAlg.h.

162 { this, "OnlineLumiCalibrationInputKey", "OnlineLumiCalibrationCondData",
163 "Input luminosity calibration." };

◆ m_skipInvalid

Gaudi::Property<bool> LuminosityCondAlg::m_skipInvalid { this, "SkipInvalid", true, "Flag to control whether invalid data is skipped: True (default), returning a zero luminosity; false, returning available luminosity values anyway." }
private

Definition at line 143 of file LuminosityCondAlg.h.

144{ this, "SkipInvalid", true, "Flag to control whether invalid data is skipped: True (default), returning a zero luminosity; false, returning available luminosity values anyway." };

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: