48 typedef std::map<eventsetup::EventSetupRecordKey, std::pair<unsigned long long, std::map<eventsetup::DataKey,bool> > >
RetrievedDataMap;
88 desc.
addUntracked<
bool>(
"printProviders",
false)->setComment(
89 "If 'true' also print which ES module provides the data");
90 desc.
addUntracked<
bool>(
"checkDuringBeginRun",
false)->setComment(
91 "If 'true' check for retrieved data during each begin run is processed");
92 desc.
addUntracked<
bool>(
"checkDuringBeginLumi",
false)->setComment(
93 "If 'true' check for retrieved data during each begin lumi is processed");
94 desc.
addUntracked<
bool>(
"checkDuringEvent",
true)->setComment(
95 "If 'true' check for retrieved data during an event is processed");
96 descriptions.
add(
"PrintEventSetupDataRetrieval", desc);
97 descriptions.
setComment(
"This analyzer reports when EventSetup data is retrieved by a module in the job.");
143 std::unique_ptr<LogSystem>
msg;
144 for(std::vector<eventsetup::EventSetupRecordKey>::const_iterator it =
m_recordKeys.begin(), itEnd =
m_recordKeys.end();
148 auto r = iES.
find(*it);
153 itRetrievedData =
m_retrievedDataMap.insert(std::make_pair(*it,std::pair<
unsigned long long, std::map<eventsetup::DataKey,bool> >())).first;
154 itRetrievedData->second.first =
r->cacheIdentifier();
155 std::vector<eventsetup::DataKey>
keys;
156 r->fillRegisteredDataKeys(keys);
157 for(std::vector<eventsetup::DataKey>::const_iterator itData = keys.begin(), itDataEnd = keys.end();
160 itRetrievedData->second.second.insert(std::make_pair(*itData,
false));
164 if(itRetrievedData->second.first !=
r->cacheIdentifier()) {
165 itRetrievedData->second.first =
r->cacheIdentifier();
166 for(std::map<eventsetup::DataKey,bool>::iterator itDatum = retrievedData.second.second.begin(), itDatumEnd = retrievedData.second.second.end();
167 itDatum != itDatumEnd;
169 itDatum->second =
false;
173 for(std::map<eventsetup::DataKey,bool>::iterator itDatum = retrievedData.second.second.begin(), itDatumEnd = retrievedData.second.second.end();
174 itDatum != itDatumEnd;
176 bool wasGotten =
r->wasGotten(itDatum->first);
177 if (wasGotten != itDatum->second) {
182 itDatum->second = wasGotten;
183 *msg <<
"Retrieved> record:" << it->name() <<
" data:" << itDatum->first.type().name() <<
" '" << itDatum->first.name().value() <<
"'";
186 assert(
nullptr != d);
187 *msg <<
" provider:" << d->
type_ <<
" '" << d->
label_ <<
"'";
std::map< eventsetup::EventSetupRecordKey, std::pair< unsigned long long, std::map< eventsetup::DataKey, bool > > > RetrievedDataMap
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
#define DEFINE_FWK_MODULE(type)
void endRun(edm::Run const &, edm::EventSetup const &) override
const bool m_checkDuringEvent
const bool m_checkDuringBeginRun
RetrievedDataMap m_retrievedDataMap
std::vector< eventsetup::EventSetupRecordKey > m_recordKeys
Container::value_type value_type
const bool m_printProviders
void fillAvailableRecordKeys(std::vector< eventsetup::EventSetupRecordKey > &oToFill) const
clears the oToFill vector and then fills it with the keys for all available records ...
std::optional< eventsetup::EventSetupRecordGeneric > find(const eventsetup::EventSetupRecordKey &) const
void analyze(edm::Event const &, edm::EventSetup const &) override
PrintEventSetupDataRetrieval(edm::ParameterSet const &)
void setComment(std::string const &value)
const bool m_checkDuringBeginLumi
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void check(EventSetup const &)
void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
void beginRun(edm::Run const &, edm::EventSetup const &) override