CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
ExpressLumiProducer Class Reference

#include <RecoLuminosity/LumiProducer/src/ExpressLumiProducer.cc>

Inheritance diagram for ExpressLumiProducer:
edm::one::EDProducer< edm::BeginLuminosityBlockProducer > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

struct  PerLSData
 

Public Member Functions

 ExpressLumiProducer (const edm::ParameterSet &)
 
 ~ExpressLumiProducer () override
 
- Public Member Functions inherited from edm::one::EDProducer< edm::BeginLuminosityBlockProducer >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void beginLuminosityBlockProduce (edm::LuminosityBlock &iLBlock, edm::EventSetup const &iSetup) final
 
void fillLSCache (unsigned int runnum, unsigned int luminum)
 
bool fillLumi (edm::LuminosityBlock &iLBlock)
 
unsigned int maxavailableLSforRun (coral::ISchema &schema, const std::string &tablename, unsigned int runnumber)
 
void produce (edm::Event &, const edm::EventSetup &) final
 
void writeEmptyProductForEntry (edm::LuminosityBlock &iLBlock)
 
void writeProductsForEntry (edm::LuminosityBlock &iLBlock, unsigned int luminum)
 

Private Attributes

unsigned int m_cachedrun
 
unsigned int m_cachesize
 
std::string m_connectStr
 
bool m_isNullRun
 
std::map< unsigned int, PerLSDatam_lscache
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Description: A essource/esproducer for lumi values from DIP via runtime logger DB

Definition at line 61 of file ExpressLumiProducer.cc.

Constructor & Destructor Documentation

◆ ExpressLumiProducer()

ExpressLumiProducer::ExpressLumiProducer ( const edm::ParameterSet )
explicit

◆ ~ExpressLumiProducer()

ExpressLumiProducer::~ExpressLumiProducer ( )
override

Definition at line 106 of file ExpressLumiProducer.cc.

106 {}

Member Function Documentation

◆ beginLuminosityBlockProduce()

void ExpressLumiProducer::beginLuminosityBlockProduce ( edm::LuminosityBlock iLBlock,
edm::EventSetup const &  iSetup 
)
finalprivate

Definition at line 117 of file ExpressLumiProducer.cc.

117  {
118  unsigned int currentrun = iLBlock.run();
119  unsigned int currentls = iLBlock.luminosityBlock();
120  //if is null run, fill empty values and return
121  if (m_isNullRun) {
122  writeEmptyProductForEntry(iLBlock);
123  return;
124  }
125  if (m_cachedrun != currentrun) {
126  fillLSCache(currentrun, currentls);
127  } else {
128  if (m_lscache.find(currentls) == m_lscache.end()) {
129  //if runnumber is cached but LS is not, this is the first LS, fill LS cache to full capacity
130  fillLSCache(currentrun, currentls);
131  }
132  }
133  if (m_lscache.empty()) {
134  writeEmptyProductForEntry(iLBlock);
135  return;
136  }
137  unsigned int lstowriteout = 0;
138  if (m_lscache.find(currentls) == m_lscache.end()) { //if the currentls is not in the cache
139  std::vector<unsigned int> v;
140  for (std::map<unsigned int, ExpressLumiProducer::PerLSData>::iterator it = m_lscache.begin(); it != m_lscache.end();
141  ++it) {
142  v.push_back(it->first);
143  }
144  lstowriteout = v.back(); //last available
145  } else { //if the current ls is cached
146  lstowriteout = currentls;
147  }
148  //here the presence of ls is guaranteed
149  //std::cout<<"writing "<<runnumber<<" "<<luminum<<std::endl;
150  if (lstowriteout == 0) {
151  writeEmptyProductForEntry(iLBlock);
152  } else {
153  writeProductsForEntry(iLBlock, lstowriteout);
154  }
155 }

References dqmiodumpmetadata::currentrun, fillLSCache(), edm::LuminosityBlockBase::luminosityBlock(), m_cachedrun, m_isNullRun, m_lscache, edm::LuminosityBlockBase::run(), findQualityFiles::v, writeEmptyProductForEntry(), and writeProductsForEntry().

◆ fillLSCache()

void ExpressLumiProducer::fillLSCache ( unsigned int  runnum,
unsigned int  luminum 
)
private

Definition at line 184 of file ExpressLumiProducer.cc.

184  {
185  m_lscache.clear();
187  //
188  //queries once per cache refill
189  //
190  //select lumisection,instlumi,delivlumi,livelumi from cms_runtime_logger.lumi_sections where lumisection>=:lsmin and lumisection<:lsmax and runnumber=:runnumber;
191  //
193  if (!mydbservice.isAvailable()) {
194  throw cms::Exception("Non existing service lumi::service::DBService");
195  }
196  auto session = mydbservice->connectReadOnly(m_connectStr);
197  coral::ITypeConverter& tconverter = session->typeConverter();
198  tconverter.setCppTypeForSqlType(std::string("float"), std::string("FLOAT(63)"));
199  tconverter.setCppTypeForSqlType(std::string("unsigned int"), std::string("NUMBER(10)"));
200  tconverter.setCppTypeForSqlType(std::string("unsigned short"), std::string("NUMBER(1)"));
201  unsigned int lsmin = 1;
202  unsigned int lsmax = currentlsnum;
203  try {
204  session->transaction().start(true);
205  coral::ISchema& schema = session->nominalSchema();
206  unsigned int maxavailableLS = maxavailableLSforRun(schema, std::string("LUMI_SECTIONS"), m_cachedrun);
207  if (maxavailableLS != 0 && maxavailableLS < currentlsnum) {
208  lsmax = maxavailableLS;
209  } else if (maxavailableLS == 0) {
210  //this run not existing (yet)
211  session->transaction().commit();
212  return;
213  }
214  if (m_cachesize != 0) {
215  lsmin = (lsmax - m_cachesize) > 0 ? (lsmax - m_cachesize + 1) : 1;
216  }
217  for (unsigned int n = lsmin; n <= lsmax; ++n) {
218  PerLSData l;
219  std::vector<float> mytmp(3564, 0.0);
220  l.bunchlumivalue.swap(mytmp);
221  std::vector<float> myerrtmp(3564, 0.0);
222  l.bunchlumierror.swap(myerrtmp);
223  std::vector<short> myqtmp(3564, 0);
224  l.bunchlumiquality.swap(myqtmp);
225  m_lscache.insert(std::make_pair(n, l));
226  }
227 
228  coral::AttributeList lumisummaryBindVariables;
229  lumisummaryBindVariables.extend("lsmin", typeid(unsigned int));
230  lumisummaryBindVariables.extend("runnumber", typeid(unsigned int));
231  lumisummaryBindVariables["runnumber"].data<unsigned int>() = m_cachedrun;
232  lumisummaryBindVariables["lsmin"].data<unsigned int>() = lsmin;
233  std::string conditionStr(" RUNNUMBER=:runnumber AND LUMISECTION>=:lsmin ");
234  coral::AttributeList lumisummaryOutput;
235  lumisummaryOutput.extend("LUMISECTION", typeid(unsigned int));
236  lumisummaryOutput.extend("INSTLUMI", typeid(float));
237  lumisummaryOutput.extend("DELIVLUMISECTION", typeid(float));
238  lumisummaryOutput.extend("LIVELUMISECTION", typeid(float));
239  lumisummaryOutput.extend("STARTORBIT", typeid(unsigned long long));
240  if (m_cachesize != 0) {
241  lumisummaryBindVariables.extend("lsmax", typeid(unsigned int));
242  conditionStr = conditionStr + "AND LUMISECTION<=:lsmax";
243  lumisummaryBindVariables["lsmax"].data<unsigned int>() = lsmax;
244  }
245  coral::IQuery* lumisummaryQuery = schema.newQuery();
246  lumisummaryQuery->addToTableList(std::string("LUMI_SECTIONS"));
247  lumisummaryQuery->addToOutputList("LUMISECTION");
248  lumisummaryQuery->addToOutputList("INSTLUMI");
249  lumisummaryQuery->addToOutputList("DELIVLUMISECTION");
250  lumisummaryQuery->addToOutputList("LIVELUMISECTION");
251  lumisummaryQuery->addToOutputList("STARTORBIT");
252  lumisummaryQuery->setCondition(conditionStr, lumisummaryBindVariables);
253  lumisummaryQuery->defineOutput(lumisummaryOutput);
254  coral::ICursor& lumisummarycursor = lumisummaryQuery->execute();
255  unsigned int rowcounter = 0;
256  while (lumisummarycursor.next()) {
257  const coral::AttributeList& row = lumisummarycursor.currentRow();
258  unsigned int lsnum = row["LUMISECTION"].data<unsigned int>();
259  float instlumi = 0.0;
260  if (!row["INSTLUMI"].isNull()) {
261  instlumi = row["INSTLUMI"].data<float>(); //Hz/ub
262  }
263  float deadfrac = 1.0;
264  float intgdellumi = 0.0;
265  float intgreclumi = 0.0;
266  unsigned long long startorbit = 0;
267  if (!row["DELIVLUMISECTION"].isNull()) {
268  intgdellumi = row["DELIVLUMISECTION"].data<float>() * 1000.0; //convert to /ub
269  }
270  if (!row["LIVELUMISECTION"].isNull()) {
271  intgreclumi = row["LIVELUMISECTION"].data<float>() * 1000.0; //convert to /ub
272  }
273  if (intgdellumi > 0) {
274  deadfrac = 1.0 - intgreclumi / intgdellumi;
275  }
276  if (!row["STARTORBIT"].isNull()) {
277  startorbit = row["STARTORBIT"].data<unsigned long long>(); //convert to /ub
278  }
279  unsigned long long deadcount = deadfrac * 10000.0;
280  unsigned long long bitzerocount = 10000.0;
281  PerLSData& lsdata = m_lscache[lsnum];
282  lsdata.lsnum = lsnum;
283  lsdata.lumivalue = instlumi;
284  lsdata.deadcount = deadcount;
285  lsdata.bitzerocount = bitzerocount;
286  lsdata.startorbit = startorbit;
287  lsdata.numorbit = 262144;
288  ++rowcounter;
289  }
290  if (rowcounter == 0) {
291  m_isNullRun = true;
292  }
293  delete lumisummaryQuery;
294  if (m_isNullRun)
295  return;
296  //
297  //queries once per cache refill
298  //
299  //select lumisection,bunch,bunchlumi from cms_runtime_logger.bunch_lumi_sections where lumisection>=:lsmin and lumisection<:lsmax and runnumber=:runnumber;
300  //
301  coral::AttributeList lumidetailBindVariables;
302  lumidetailBindVariables.extend("lsmin", typeid(unsigned int));
303  lumidetailBindVariables.extend("runnumber", typeid(unsigned int));
304  lumidetailBindVariables["runnumber"].data<unsigned int>() = m_cachedrun;
305  lumidetailBindVariables["lsmin"].data<unsigned int>() = lsmin;
306  std::string detailconditionStr(" RUNNUMBER=:runnumber AND LUMISECTION>=:lsmin AND BUNCHLUMI>0 ");
307  coral::AttributeList lumidetailOutput;
308  lumidetailOutput.extend("LUMISECTION", typeid(unsigned int));
309  lumidetailOutput.extend("BUNCH", typeid(unsigned int));
310  lumidetailOutput.extend("BUNCHLUMI", typeid(float));
311  if (m_cachesize != 0) {
312  lumidetailBindVariables.extend("lsmax", typeid(unsigned int));
313  detailconditionStr = detailconditionStr + "AND LUMISECTION<=:lsmax";
314  lumidetailBindVariables["lsmax"].data<unsigned int>() = lsmax;
315  }
316  coral::IQuery* lumidetailQuery = schema.newQuery();
317  lumidetailQuery->addToTableList(std::string("BUNCH_LUMI_SECTIONS"));
318  lumidetailQuery->addToOutputList("LUMISECTION");
319  lumidetailQuery->addToOutputList("BUNCH");
320  lumidetailQuery->addToOutputList("BUNCHLUMI");
321  lumidetailQuery->setCondition(detailconditionStr, lumidetailBindVariables);
322  lumidetailQuery->defineOutput(lumidetailOutput);
323  coral::ICursor& lumidetailcursor = lumidetailQuery->execute();
324  while (lumidetailcursor.next()) {
325  const coral::AttributeList& row = lumidetailcursor.currentRow();
326  unsigned int lsnum = row["LUMISECTION"].data<unsigned int>();
327  unsigned int bxidx = row["BUNCH"].data<unsigned int>();
328  float bxlumi = row["BUNCHLUMI"].data<float>(); //Hz/ub
329  m_lscache[lsnum].bunchlumivalue[bxidx] = bxlumi;
330  }
331  delete lumidetailQuery;
332  session->transaction().commit();
333  } catch (const coral::Exception& er) {
334  session->transaction().rollback();
335  throw cms::Exception("DatabaseError ") << er.what();
336  }
337 }

References ExpressLumiProducer::PerLSData::bitzerocount, lumi::service::DBService::connectReadOnly(), ExpressLumiProducer::PerLSData::deadcount, Exception, edm::Service< T >::isAvailable(), cmsLHEtoEOSManager::l, remoteMonitoring_LED_IterMethod_cfg::lsmax, remoteMonitoring_LED_IterMethod_cfg::lsmin, ExpressLumiProducer::PerLSData::lsnum, ExpressLumiProducer::PerLSData::lumivalue, m_cachedrun, m_cachesize, m_connectStr, m_isNullRun, m_lscache, maxavailableLSforRun(), dqmiodumpmetadata::n, ExpressLumiProducer::PerLSData::numorbit, cond::runnumber, ExpressLumiProducer::PerLSData::startorbit, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by beginLuminosityBlockProduce().

◆ fillLumi()

bool ExpressLumiProducer::fillLumi ( edm::LuminosityBlock iLBlock)
private

◆ maxavailableLSforRun()

unsigned int ExpressLumiProducer::maxavailableLSforRun ( coral::ISchema &  schema,
const std::string &  tablename,
unsigned int  runnumber 
)
private

select max(lumisection) as maxavailable from cms_runtime_logger.lumi_sections where runnumber=:runnumber;

Definition at line 157 of file ExpressLumiProducer.cc.

159  {
163  unsigned int result = 0;
164  coral::AttributeList bindVariables;
165  bindVariables.extend("runnumber", typeid(unsigned int));
166  bindVariables["runnumber"].data<unsigned int>() = runnumber;
167  std::string conditionStr("RUNNUMBER=:runnumber");
168  coral::AttributeList MyOutput;
169  MyOutput.extend("maxavailablels", typeid(unsigned int));
170  coral::IQuery* myQuery = schema.newQuery();
171  myQuery->addToTableList(tablename);
172  myQuery->addToOutputList("max(LUMISECTION)", "maxavailablels");
173  myQuery->setCondition(conditionStr, bindVariables);
174  myQuery->defineOutput(MyOutput);
175  coral::ICursor& mycursor = myQuery->execute();
176  while (mycursor.next()) {
177  const coral::AttributeList& row = mycursor.currentRow();
178  if (!row["maxavailablels"].isNull()) {
179  result = row["maxavailablels"].data<unsigned int>();
180  }
181  }
182  return result;
183 }

References inputsource_file_cfi::myQuery, mps_fire::result, cond::runnumber, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by fillLSCache().

◆ produce()

void ExpressLumiProducer::produce ( edm::Event e,
const edm::EventSetup iSetup 
)
finalprivatevirtual

Implements edm::one::EDProducerBase.

Definition at line 111 of file ExpressLumiProducer.cc.

111 {}

◆ writeEmptyProductForEntry()

void ExpressLumiProducer::writeEmptyProductForEntry ( edm::LuminosityBlock iLBlock)
private

Definition at line 113 of file ExpressLumiProducer.cc.

113  {
114  iLBlock.put(std::make_unique<LumiSummary>());
115  iLBlock.put(std::make_unique<LumiDetails>());
116 }

References edm::LuminosityBlock::put().

Referenced by beginLuminosityBlockProduce().

◆ writeProductsForEntry()

void ExpressLumiProducer::writeProductsForEntry ( edm::LuminosityBlock iLBlock,
unsigned int  luminum 
)
private

Definition at line 338 of file ExpressLumiProducer.cc.

338  {
339  //std::cout<<"writing runnumber,luminum "<<runnumber<<" "<<luminum<<std::endl;
340  auto pIn1 = std::make_unique<LumiSummary>();
341  auto pIn2 = std::make_unique<LumiDetails>();
342  if (m_isNullRun) {
343  pIn1->setLumiVersion("DIP");
344  pIn2->setLumiVersion("DIP");
345  iLBlock.put(std::move(pIn1));
346  iLBlock.put(std::move(pIn2));
347  return;
348  }
349  PerLSData& lsdata = m_lscache[luminum];
350  pIn1->setLumiVersion("DIP");
351  pIn1->setLumiData(lsdata.lumivalue, 0.0, 0.0);
352  pIn1->setDeadCount(lsdata.deadcount);
353  pIn1->setBitZeroCount(lsdata.bitzerocount);
354  pIn1->setlsnumber(lsdata.lsnum);
355  pIn1->setOrbitData(lsdata.startorbit, lsdata.numorbit);
356 
357  pIn2->setLumiVersion("DIP");
358  pIn2->fill(LumiDetails::kOCC1, lsdata.bunchlumivalue, lsdata.bunchlumierror, lsdata.bunchlumiquality);
359  iLBlock.put(std::move(pIn1));
360  iLBlock.put(std::move(pIn2));
361 }

References ExpressLumiProducer::PerLSData::bitzerocount, ExpressLumiProducer::PerLSData::bunchlumierror, ExpressLumiProducer::PerLSData::bunchlumiquality, ExpressLumiProducer::PerLSData::bunchlumivalue, ExpressLumiProducer::PerLSData::deadcount, LumiDetails::kOCC1, ExpressLumiProducer::PerLSData::lsnum, ExpressLumiProducer::PerLSData::lumivalue, m_isNullRun, m_lscache, eostools::move(), ExpressLumiProducer::PerLSData::numorbit, edm::LuminosityBlock::put(), and ExpressLumiProducer::PerLSData::startorbit.

Referenced by beginLuminosityBlockProduce().

Member Data Documentation

◆ m_cachedrun

unsigned int ExpressLumiProducer::m_cachedrun
private

Definition at line 90 of file ExpressLumiProducer.cc.

Referenced by beginLuminosityBlockProduce(), and fillLSCache().

◆ m_cachesize

unsigned int ExpressLumiProducer::m_cachesize
private

Definition at line 92 of file ExpressLumiProducer.cc.

Referenced by fillLSCache().

◆ m_connectStr

std::string ExpressLumiProducer::m_connectStr
private

Definition at line 89 of file ExpressLumiProducer.cc.

Referenced by fillLSCache().

◆ m_isNullRun

bool ExpressLumiProducer::m_isNullRun
private

◆ m_lscache

std::map<unsigned int, PerLSData> ExpressLumiProducer::m_lscache
private
ExpressLumiProducer::m_lscache
std::map< unsigned int, PerLSData > m_lscache
Definition: ExpressLumiProducer.cc:93
ExpressLumiProducer::m_cachedrun
unsigned int m_cachedrun
Definition: ExpressLumiProducer.cc:90
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
ExpressLumiProducer::m_cachesize
unsigned int m_cachesize
Definition: ExpressLumiProducer.cc:92
LumiDetails::kOCC1
Definition: LumiDetails.h:26
edm::LuminosityBlockBase::run
RunNumber_t run() const
Definition: LuminosityBlockBase.h:42
findQualityFiles.v
v
Definition: findQualityFiles.py:179
edm::Service::isAvailable
bool isAvailable() const
Definition: Service.h:40
edm::LuminosityBlockBase::luminosityBlock
LuminosityBlockNumber_t luminosityBlock() const
Definition: LuminosityBlockBase.h:40
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
cond::runnumber
Definition: Time.h:19
remoteMonitoring_LED_IterMethod_cfg.lsmax
lsmax
Definition: remoteMonitoring_LED_IterMethod_cfg.py:215
inputsource_file_cfi.myQuery
myQuery
Definition: inputsource_file_cfi.py:102
ExpressLumiProducer::fillLSCache
void fillLSCache(unsigned int runnum, unsigned int luminum)
Definition: ExpressLumiProducer.cc:184
edm::Service
Definition: Service.h:30
ExpressLumiProducer::m_connectStr
std::string m_connectStr
Definition: ExpressLumiProducer.cc:89
ExpressLumiProducer::writeProductsForEntry
void writeProductsForEntry(edm::LuminosityBlock &iLBlock, unsigned int luminum)
Definition: ExpressLumiProducer.cc:338
edm::LuminosityBlock::put
void put(std::unique_ptr< PROD > product)
Put a new product.
Definition: LuminosityBlock.h:116
ExpressLumiProducer::m_isNullRun
bool m_isNullRun
Definition: ExpressLumiProducer.cc:91
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:204
ExpressLumiProducer::writeEmptyProductForEntry
void writeEmptyProductForEntry(edm::LuminosityBlock &iLBlock)
Definition: ExpressLumiProducer.cc:113
eostools.move
def move(src, dest)
Definition: eostools.py:511
Exception
Definition: hltDiff.cc:246
ExpressLumiProducer::maxavailableLSforRun
unsigned int maxavailableLSforRun(coral::ISchema &schema, const std::string &tablename, unsigned int runnumber)
Definition: ExpressLumiProducer.cc:157
mps_fire.result
result
Definition: mps_fire.py:311
dqmiodumpmetadata.currentrun
currentrun
Definition: dqmiodumpmetadata.py:34
remoteMonitoring_LED_IterMethod_cfg.lsmin
lsmin
Definition: remoteMonitoring_LED_IterMethod_cfg.py:213
lumi::service::DBService::connectReadOnly
ISessionProxyPtr connectReadOnly(const std::string &connectstring)
Definition: DBService.cc:19