CMS 3D CMS Logo

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

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

Inheritance diagram for LumiProducer:
edm::one::EDProducer< edm::one::WatchRuns, edm::BeginLuminosityBlockProducer, edm::EndRunProducer > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

struct  HLTData
 
struct  L1Data
 
struct  PerLSData
 
struct  PerRunData
 

Public Member Functions

 LumiProducer (const edm::ParameterSet &)
 
 ~LumiProducer () override
 
- Public Member Functions inherited from edm::one::EDProducer< edm::one::WatchRuns, edm::BeginLuminosityBlockProducer, edm::EndRunProducer >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () 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
 
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)
 
 ~ProducerBase () 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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
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
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void beginLuminosityBlockProduce (edm::LuminosityBlock &iLBlock, edm::EventSetup const &iSetup) final
 
void beginRun (edm::Run const &, edm::EventSetup const &) final
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &, edm::EventSetup const &) final
 
void fillLSCache (unsigned int luminum)
 
bool fillLumi (edm::LuminosityBlock &iLBlock)
 
void fillRunCache (const coral::ISchema &schema, unsigned int runnumber)
 
std::string getCurrentDataTag (const coral::ISchema &schema)
 
unsigned long long getHltDataId (const coral::ISchema &schema, unsigned int runnumber)
 
unsigned long long getLumiDataId (const coral::ISchema &schema, unsigned int runnumber)
 
unsigned long long getTrgDataId (const coral::ISchema &schema, unsigned int runnumber)
 
void produce (edm::Event &, const edm::EventSetup &) final
 
XMLCh * s2x (const std::string &input) const
 
const std::string servletTranslation (const std::string &servlet) const
 
std::string toParentString (const xercesc::DOMNode &nodeToConvert) const
 
void writeProductsForEntry (edm::LuminosityBlock &iLBlock, unsigned int runnumber, unsigned int luminum)
 
std::string x2s (const XMLCh *input) const
 

Private Attributes

unsigned long long m_cachedhltdataid
 
unsigned long long m_cachedlumidataid
 
unsigned int m_cachedrun
 
unsigned long long m_cachedtrgdataid
 
unsigned int m_cachesize
 
std::string m_connectStr
 
bool m_isNullRun
 
std::map< unsigned int, PerLSDatam_lscache
 
std::string m_lumiversion
 
PerRunData m_runcache
 
std::string m_siteconfpath
 

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::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
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 ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: This class would load the luminosity object into a Luminosity Block

Implementation: The are two main steps, the first one retrieve the record of the luminosity data from the DB and the second loads the Luminosity Obj into the Lumi Block. (Actually in the initial implementation it is retrieving from the ParameterSet from the configuration file, the DB is not implemented yet)

Definition at line 81 of file LumiProducer.cc.

Constructor & Destructor Documentation

LumiProducer::LumiProducer ( const edm::ParameterSet )
explicit
LumiProducer::~LumiProducer ( )
override

Definition at line 292 of file LumiProducer.cc.

292  {
293 }

Member Function Documentation

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

Definition at line 443 of file LumiProducer.cc.

References edm::LuminosityBlockBase::luminosityBlock(), edm::LuminosityBlock::put(), edm::LuminosityBlockBase::run(), and cond::runnumber.

444 {
445  unsigned int runnumber=iLBlock.run();
446  unsigned int luminum=iLBlock.luminosityBlock();
447  //std::cout<<"beg of beginLuminosityBlock "<<luminum<<std::endl;
448  //if is null run, fill empty values and return
449  if(m_isNullRun){
450  iLBlock.put(std::make_unique<LumiSummary>());
451  iLBlock.put(std::make_unique<LumiDetails>());
452  return;
453  }
454  if(m_lscache.find(luminum)==m_lscache.end()){
455  //if runnumber is cached but LS is not, this is the first LS, fill LS cache to full capacity
456  fillLSCache(luminum);
457  }
458  //here the presence of ls is guaranteed
459  writeProductsForEntry(iLBlock,runnumber,luminum);
460 }
void writeProductsForEntry(edm::LuminosityBlock &iLBlock, unsigned int runnumber, unsigned int luminum)
LuminosityBlockNumber_t luminosityBlock() const
void put(std::unique_ptr< PROD > product)
Put a new product.
void fillLSCache(unsigned int luminum)
RunNumber_t run() const
std::map< unsigned int, PerLSData > m_lscache
void LumiProducer::beginRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
finalprivate

Definition at line 413 of file LumiProducer.cc.

References lumi::service::DBService::connectReadOnly(), Exception, edm::Service< T >::isAvailable(), edm::RunBase::run(), cond::runnumber, and dataDML::session.

414 {
415  unsigned int runnumber=run.run();
416  if(m_cachedrun!=runnumber){
417  //queries once per run
420  if( !mydbservice.isAvailable() ){
421  throw cms::Exception("Non existing service lumi::service::DBService");
422  }
423  auto session=mydbservice->connectReadOnly(m_connectStr);
424  try{
425  session->transaction().start(true);
427  if(m_cachedlumidataid!=0){//if no lumi, do not bother other info
430  fillRunCache(session->nominalSchema(),runnumber);
431  }else{
432  m_isNullRun=true;
433  }
434  session->transaction().commit();
435  }catch(const coral::Exception& er){
436  session->transaction().rollback();
437  throw cms::Exception("DatabaseError ")<<er.what();
438  }
439  }
440  //std::cout<<"end of beginRun "<<runnumber<<std::endl;
441 }
unsigned long long m_cachedhltdataid
unsigned long long getLumiDataId(const coral::ISchema &schema, unsigned int runnumber)
ISessionProxyPtr connectReadOnly(const std::string &connectstring)
Definition: DBService.cc:22
std::string m_connectStr
unsigned long long getHltDataId(const coral::ISchema &schema, unsigned int runnumber)
bool isAvailable() const
Definition: Service.h:46
unsigned int m_cachedrun
unsigned long long m_cachedtrgdataid
unsigned long long m_cachedlumidataid
unsigned long long getTrgDataId(const coral::ISchema &schema, unsigned int runnumber)
void fillRunCache(const coral::ISchema &schema, unsigned int runnumber)
void LumiProducer::endRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
finalprivate

Definition at line 462 of file LumiProducer.cc.

463 {}
void LumiProducer::endRunProduce ( edm::Run run,
edm::EventSetup const &  iSetup 
)
finalprivate

Definition at line 465 of file LumiProducer.cc.

References eostools::move(), and edm::Run::put().

466 {
467  auto lsrh = std::make_unique<LumiSummaryRunHeader>();
468  lsrh->swapL1Names(m_runcache.TRGBitNames);
469  lsrh->swapHLTNames(m_runcache.HLTPathNames);
470  run.put(std::move(lsrh));
473 }
std::map< std::string, unsigned int > HLTPathNameToIndex
void put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Run.h:114
std::vector< std::string > TRGBitNames
std::vector< std::string > HLTPathNames
def move(src, dest)
Definition: eostools.py:510
std::map< std::string, unsigned int > TRGBitNameToIndex
PerRunData m_runcache
void LumiProducer::fillLSCache ( unsigned int  luminum)
private

Definition at line 542 of file LumiProducer.cc.

References LumiProducer::HLTData::acceptcount, LumiProducer::PerLSData::beam1intensity, LumiProducer::PerLSData::beam2intensity, LumiProducer::L1Data::bitname, LumiProducer::PerLSData::bunchlumierror, LumiProducer::PerLSData::bunchlumiquality, LumiProducer::PerLSData::bunchlumivalue, estimatePileup2::cmslsnum, lumi::service::DBService::connectReadOnly(), LumiProducer::PerLSData::deadcount, Exception, objects.autophobj::float, LumiProducer::PerLSData::hltdata, mps_fire::i, training_settings::idx, edm::Service< T >::isAvailable(), checklumidiff::l, LumiProducer::PerLSData::l1data, LumiProducer::HLTData::l1passcount, lumi::LumiNames::lshltTableName(), lumi::LumiNames::lstrgTableName(), lumi::LumiNames::lumisummaryv2TableName(), LumiProducer::PerLSData::lumivalue, gen::n, LumiProducer::HLTData::pathname, LumiProducer::HLTData::prescale, LumiProducer::L1Data::prescale, LumiProducer::L1Data::ratecount, dataDML::schema, dataDML::session, and AlCaHLTBitMon_QueryRunRegistry::string.

542  {
543  //initialize cache
544  if(m_isNullRun) return;
545  m_lscache.clear();
546  for(unsigned int n=luminum;n<luminum+m_cachesize;++n){
547  PerLSData l;
548  l.hltdata.reserve(250);
549  l.l1data.reserve(192);
550  l.bunchlumivalue.reserve(5);
551  l.bunchlumierror.reserve(5);
552  l.bunchlumiquality.reserve(5);
553  l.beam1intensity.resize(3564,0.0);
554  l.beam2intensity.resize(3564,0.0);
555  m_lscache.insert(std::make_pair(n,l));
556  }
557  //queries once per cache refill
558  //
559  //select cmslsnum,instlumi,startorbit,numorbit,bxindex,beam1intensity,beam2intensity,bxlumivalue_occ1,bxlumivalue_occ2,bxlumivalue_et from lumisummaryv2 where cmslsnum>=:lsmin and cmslsnum<:lsmax and data_id=:lumidataid;
560  //
562  if( !mydbservice.isAvailable() ){
563  throw cms::Exception("Non existing service lumi::service::DBService");
564  }
565  auto session=mydbservice->connectReadOnly(m_connectStr);
566  try{
567  session->transaction().start(true);
568  coral::ISchema& schema=session->nominalSchema();
569  coral::AttributeList lumisummaryBindVariables;
570  lumisummaryBindVariables.extend("lsmin",typeid(unsigned int));
571  lumisummaryBindVariables.extend("lsmax",typeid(unsigned int));
572  lumisummaryBindVariables.extend("lumidataid",typeid(unsigned long long));
573  lumisummaryBindVariables["lumidataid"].data<unsigned long long>()=m_cachedlumidataid;
574  lumisummaryBindVariables["lsmin"].data<unsigned int>()=luminum;
575  lumisummaryBindVariables["lsmax"].data<unsigned int>()=luminum+m_cachesize;
576  coral::AttributeList lumisummaryOutput;
577  lumisummaryOutput.extend("CMSLSNUM",typeid(unsigned int));
578  lumisummaryOutput.extend("INSTLUMI",typeid(float));
579  lumisummaryOutput.extend("STARTORBIT",typeid(unsigned int));
580  lumisummaryOutput.extend("NUMORBIT",typeid(unsigned int));
581  lumisummaryOutput.extend("CMSBXINDEXBLOB",typeid(coral::Blob));
582  lumisummaryOutput.extend("BEAMINTENSITYBLOB_1",typeid(coral::Blob));
583  lumisummaryOutput.extend("BEAMINTENSITYBLOB_2",typeid(coral::Blob));
584  lumisummaryOutput.extend("BXLUMIVALUE_OCC1",typeid(coral::Blob));
585  lumisummaryOutput.extend("BXLUMIVALUE_OCC2",typeid(coral::Blob));
586  lumisummaryOutput.extend("BXLUMIVALUE_ET",typeid(coral::Blob));
587  coral::IQuery* lumisummaryQuery=schema.newQuery();
588  lumisummaryQuery->addToTableList(lumi::LumiNames::lumisummaryv2TableName());
589  lumisummaryQuery->addToOutputList("CMSLSNUM");
590  lumisummaryQuery->addToOutputList("INSTLUMI");
591  lumisummaryQuery->addToOutputList("STARTORBIT");
592  lumisummaryQuery->addToOutputList("NUMORBIT");
593  lumisummaryQuery->addToOutputList("CMSBXINDEXBLOB");
594  lumisummaryQuery->addToOutputList("BEAMINTENSITYBLOB_1");
595  lumisummaryQuery->addToOutputList("BEAMINTENSITYBLOB_2");
596  lumisummaryQuery->addToOutputList("BXLUMIVALUE_OCC1");
597  lumisummaryQuery->addToOutputList("BXLUMIVALUE_OCC2");
598  lumisummaryQuery->addToOutputList("BXLUMIVALUE_ET");
599  lumisummaryQuery->setCondition("CMSLSNUM>=:lsmin AND CMSLSNUM<:lsmax AND DATA_ID=:lumidataid",lumisummaryBindVariables);
600  lumisummaryQuery->defineOutput(lumisummaryOutput);
601  coral::ICursor& lumisummarycursor=lumisummaryQuery->execute();
602  unsigned int rowcounter=0;
603  while( lumisummarycursor.next() ){
604  const coral::AttributeList& row=lumisummarycursor.currentRow();
605  unsigned int cmslsnum=row["CMSLSNUM"].data<unsigned int>();
606  //std::cout<<"cmslsnum "<<cmslsnum<<std::endl;
607  PerLSData& lsdata=m_lscache[cmslsnum];
608  lsdata.lumivalue=row["INSTLUMI"].data<float>();
609  lsdata.lumierror=0.0;
610  lsdata.lumiquality=0;
611  lsdata.startorbit=row["STARTORBIT"].data<unsigned int>();
612  lsdata.numorbit=row["NUMORBIT"].data<unsigned int>();
613 
614  if(!row["CMSBXINDEXBLOB"].isNull() && !row["BXLUMIVALUE_OCC1"].isNull() ){
615  const coral::Blob& bxindexBlob=row["CMSBXINDEXBLOB"].data<coral::Blob>();
616  const void* bxindex_StartAddress=bxindexBlob.startingAddress();
617  short* bxindex=(short*)::malloc(bxindexBlob.size());
618  const coral::Blob& beam1intensityBlob=row["BEAMINTENSITYBLOB_1"].data<coral::Blob>();
619  const void* beam1intensityBlob_StartAddress=beam1intensityBlob.startingAddress();
620  float* beam1intensity=(float*)::malloc(beam1intensityBlob.size());
621  const coral::Blob& beam2intensityBlob=row["BEAMINTENSITYBLOB_2"].data<coral::Blob>();
622  const void* beam2intensityBlob_StartAddress=beam2intensityBlob.startingAddress();
623  float* beam2intensity=(float*)::malloc(beam2intensityBlob.size());
624  std::memmove(bxindex,bxindex_StartAddress,bxindexBlob.size());
625  std::memmove(beam1intensity,beam1intensityBlob_StartAddress,beam1intensityBlob.size());
626  std::memmove(beam2intensity,beam2intensityBlob_StartAddress,beam2intensityBlob.size());
627 
628  unsigned int iMax = bxindexBlob.size()/sizeof(short);
629  unsigned int lsb1Max = lsdata.beam1intensity.size();
630  unsigned int lsb2Max = lsdata.beam2intensity.size();
631  unsigned int ib1Max = beam1intensityBlob.size()/sizeof(float);
632  unsigned int ib2Max = beam2intensityBlob.size()/sizeof(float);
633  for(unsigned int i=0;i<iMax;++i){
634  unsigned int idx=bxindex[i];
635  if(ib1Max>i && lsb1Max>idx){
636  lsdata.beam1intensity.at(idx)=beam1intensity[i];
637  }
638  if(ib2Max>i && lsb2Max>idx){
639  lsdata.beam2intensity.at(idx)=beam2intensity[i];
640  }
641  }
642  ::free(bxindex);
643  ::free(beam1intensity);
644  ::free(beam2intensity);
645 
646  const coral::Blob& bxlumivalBlob_occ1=row["BXLUMIVALUE_OCC1"].data<coral::Blob>();
647  const void* bxlumival_occ1_StartAddress=bxlumivalBlob_occ1.startingAddress();
648  float* bxlumival_occ1=(float*)::malloc(bxlumivalBlob_occ1.size());
649  std::memmove(bxlumival_occ1,bxlumival_occ1_StartAddress,bxlumivalBlob_occ1.size());
650  std::vector<float> bxlumivalVec_occ1(bxlumival_occ1,bxlumival_occ1+bxlumivalBlob_occ1.size()/sizeof(float));
651  ::free(bxlumival_occ1);
652  lsdata.bunchlumivalue.push_back(std::make_pair(std::string("OCC1"),bxlumivalVec_occ1));
653  lsdata.bunchlumierror.push_back(std::make_pair(std::string("OCC1"),std::vector<float>(3564)));
654  lsdata.bunchlumiquality.push_back(std::make_pair(std::string("OCC1"),std::vector<short>(3564)));
655  const coral::Blob& bxlumivalBlob_occ2=row["BXLUMIVALUE_OCC2"].data<coral::Blob>();
656  const void* bxlumival_occ2_StartAddress=bxlumivalBlob_occ2.startingAddress();
657  float* bxlumival_occ2=(float*)::malloc(bxlumivalBlob_occ2.size());
658  std::memmove(bxlumival_occ2,bxlumival_occ2_StartAddress,bxlumivalBlob_occ2.size());
659  std::vector<float> bxlumivalVec_occ2(bxlumival_occ2,bxlumival_occ2+bxlumivalBlob_occ1.size()/sizeof(float));
660  ::free(bxlumival_occ2);
661  lsdata.bunchlumivalue.push_back(std::make_pair(std::string("OCC2"),bxlumivalVec_occ2));
662  lsdata.bunchlumierror.push_back(std::make_pair(std::string("OCC2"),std::vector<float>(3564)));
663  lsdata.bunchlumiquality.push_back(std::make_pair(std::string("OCC2"),std::vector<short>(3564)));
664 
665  const coral::Blob& bxlumivalBlob_et=row["BXLUMIVALUE_ET"].data<coral::Blob>();
666  const void* bxlumival_et_StartAddress=bxlumivalBlob_et.startingAddress();
667  float* bxlumival_et=(float*)::malloc(bxlumivalBlob_et.size());
668  std::memmove(bxlumival_et,bxlumival_et_StartAddress,bxlumivalBlob_et.size());
669  std::vector<float> bxlumivalVec_et(bxlumival_et,bxlumival_et+bxlumivalBlob_et.size()/sizeof(float));
670  ::free(bxlumival_et);
671  lsdata.bunchlumivalue.push_back(std::make_pair(std::string("ET"),bxlumivalVec_et));
672  lsdata.bunchlumierror.push_back(std::make_pair(std::string("ET"),std::vector<float>(3564)));
673  lsdata.bunchlumiquality.push_back(std::make_pair(std::string("ET"),std::vector<short>(3564)));
674  }
675  ++rowcounter;
676  }
677  if (rowcounter==0){
678  m_isNullRun=true;
679  return;
680  }
681  delete lumisummaryQuery;
682 
683  //
684  //select cmslsnum,deadtimecount,bitzerocount,bitzeroprescale,prescaleblob,trgcountblob from lstrg where cmslsnum >=:luminum and cmslsnum<:luminum+cachesize AND data_id=:trgdataid;
685  //
686  coral::AttributeList trgBindVariables;
687  trgBindVariables.extend("lsmin",typeid(unsigned int));
688  trgBindVariables.extend("lsmax",typeid(unsigned int));
689  trgBindVariables.extend("trgdataid",typeid(unsigned long long));
690  trgBindVariables["lsmin"].data<unsigned int>()=luminum;
691  trgBindVariables["lsmax"].data<unsigned int>()=luminum+m_cachesize;
692  trgBindVariables["trgdataid"].data<unsigned long long>()=m_cachedtrgdataid;
693  coral::AttributeList trgOutput;
694  trgOutput.extend("CMSLSNUM",typeid(unsigned int));
695  trgOutput.extend("DEADTIMECOUNT",typeid(unsigned long long));
696  trgOutput.extend("BITZEROCOUNT",typeid(unsigned int));
697  trgOutput.extend("BITZEROPRESCALE",typeid(unsigned int));
698  trgOutput.extend("PRESCALEBLOB",typeid(coral::Blob));
699  trgOutput.extend("TRGCOUNTBLOB",typeid(coral::Blob));
700 
701  coral::IQuery* trgQuery=schema.newQuery();
702  trgQuery->addToTableList(lumi::LumiNames::lstrgTableName());
703  trgQuery->addToOutputList("CMSLSNUM");
704  trgQuery->addToOutputList("DEADTIMECOUNT");
705  trgQuery->addToOutputList("BITZEROCOUNT");
706  trgQuery->addToOutputList("BITZEROPRESCALE");
707  trgQuery->addToOutputList("PRESCALEBLOB");
708  trgQuery->addToOutputList("TRGCOUNTBLOB");
709  trgQuery->setCondition("CMSLSNUM>=:lsmin AND CMSLSNUM<:lsmax AND DATA_ID=:trgdataid",trgBindVariables);
710  trgQuery->defineOutput(trgOutput);
711  coral::ICursor& trgcursor=trgQuery->execute();
712  while( trgcursor.next() ){
713  const coral::AttributeList& row=trgcursor.currentRow();
714  unsigned int cmslsnum=row["CMSLSNUM"].data<unsigned int>();
715  PerLSData& lsdata=m_lscache[cmslsnum];
716  lsdata.deadcount=row["DEADTIMECOUNT"].data<unsigned long long>();
717  lsdata.bitzerocount=row["BITZEROCOUNT"].data<unsigned int>();
718  lsdata.bitzeroprescale=row["BITZEROPRESCALE"].data<unsigned int>();
719  if(!row["PRESCALEBLOB"].isNull()){
720  const coral::Blob& prescaleblob=row["PRESCALEBLOB"].data<coral::Blob>();
721  const void* prescaleblob_StartAddress=prescaleblob.startingAddress();
722  unsigned int* prescales=(unsigned int*)::malloc(prescaleblob.size());
723  std::memmove(prescales,prescaleblob_StartAddress,prescaleblob.size());
724  const coral::Blob& trgcountblob=row["TRGCOUNTBLOB"].data<coral::Blob>();
725  const void* trgcountblob_StartAddress=trgcountblob.startingAddress();
726  unsigned int* trgcounts=(unsigned int*)::malloc(trgcountblob.size());
727  std::memmove(trgcounts,trgcountblob_StartAddress,trgcountblob.size());
728  for(unsigned int i=0;i<sizeof(trgcounts)/sizeof(unsigned int);++i){
729  L1Data l1tmp;
730  l1tmp.bitname=m_runcache.TRGBitNames[i];
731  l1tmp.prescale=prescales[i];
732  l1tmp.ratecount=trgcounts[i];
733  lsdata.l1data.push_back(l1tmp);
734  }
735  ::free(prescales);
736  ::free(trgcounts);
737  }
738  }
739  delete trgQuery;
740  //
741  //select cmslsnum,hltcountblob,hltacceptblob,prescaleblob from hlt where cmslsnum >=:luminum and cmslsnum<=:luminum+cachesize and data_id=:hltdataid
742  //
743  coral::AttributeList hltBindVariables;
744  hltBindVariables.extend("lsmin",typeid(unsigned int));
745  hltBindVariables.extend("lsmax",typeid(unsigned int));
746  hltBindVariables.extend("hltdataid",typeid(unsigned long long));
747  hltBindVariables["lsmin"].data<unsigned int>()=luminum;
748  hltBindVariables["lsmax"].data<unsigned int>()=luminum+m_cachesize;
749  hltBindVariables["hltdataid"].data<unsigned long long>()=m_cachedhltdataid;
750  coral::AttributeList hltOutput;
751  hltOutput.extend("CMSLSNUM",typeid(unsigned int));
752  hltOutput.extend("HLTCOUNTBLOB",typeid(coral::Blob));
753  hltOutput.extend("HLTACCEPTBLOB",typeid(coral::Blob));
754  hltOutput.extend("PRESCALEBLOB",typeid(coral::Blob));
755  coral::IQuery* hltQuery=schema.newQuery();
756  hltQuery->addToTableList(lumi::LumiNames::lshltTableName());
757  hltQuery->addToOutputList("CMSLSNUM");
758  hltQuery->addToOutputList("HLTCOUNTBLOB");
759  hltQuery->addToOutputList("HLTACCEPTBLOB");
760  hltQuery->addToOutputList("PRESCALEBLOB");
761  hltQuery->setCondition("CMSLSNUM>=:lsmin AND CMSLSNUM<:lsmax AND DATA_ID=:hltdataid",hltBindVariables);
762  hltQuery->defineOutput(hltOutput);
763  coral::ICursor& hltcursor=hltQuery->execute();
764  while( hltcursor.next() ){
765  const coral::AttributeList& row=hltcursor.currentRow();
766  unsigned int cmslsnum=row["CMSLSNUM"].data<unsigned int>();
767  PerLSData& lsdata=m_lscache[cmslsnum];
768  if(!row["PRESCALEBLOB"].isNull()){
769  const coral::Blob& hltprescaleblob=row["PRESCALEBLOB"].data<coral::Blob>();
770  const void* hltprescaleblob_StartAddress=hltprescaleblob.startingAddress();
771  unsigned int* hltprescales=(unsigned int*)::malloc(hltprescaleblob.size());
772  std::memmove(hltprescales,hltprescaleblob_StartAddress,hltprescaleblob.size());
773  const coral::Blob& hltcountblob=row["HLTCOUNTBLOB"].data<coral::Blob>();
774  const void* hltcountblob_StartAddress=hltcountblob.startingAddress();
775  unsigned int* hltcounts=(unsigned int*)::malloc(hltcountblob.size());
776  std::memmove(hltcounts,hltcountblob_StartAddress,hltcountblob.size());
777  const coral::Blob& hltacceptblob=row["HLTACCEPTBLOB"].data<coral::Blob>();
778  const void* hltacceptblob_StartAddress=hltacceptblob.startingAddress();
779  unsigned int* hltaccepts=(unsigned int*)::malloc(hltacceptblob.size());
780  std::memmove(hltaccepts,hltacceptblob_StartAddress,hltacceptblob.size());
781  unsigned int nhltaccepts = sizeof(hltaccepts)/sizeof(unsigned int);
782  if(nhltaccepts > 0 && m_runcache.HLTPathNames.empty()){
783  edm::LogWarning("CorruptOrMissingHLTData")<<"Got "<<nhltaccepts
784 <<" hltaccepts, but the run chache is empty. hltdata will not be written";
785  break;
786  }
787 
788  for(unsigned int i=0;i<sizeof(hltaccepts)/sizeof(unsigned int);++i){
789  HLTData hlttmp;
790  hlttmp.pathname=m_runcache.HLTPathNames[i];
791  hlttmp.prescale=hltprescales[i];
792  hlttmp.l1passcount=hltcounts[i];
793  hlttmp.acceptcount=hltaccepts[i];
794  lsdata.hltdata.push_back(hlttmp);
795  }
796  ::free(hltprescales);
797  ::free(hltcounts);
798  ::free(hltaccepts);
799  }
800  }
801  delete hltQuery;
802  session->transaction().commit();
803  }catch(const coral::Exception& er){
804  session->transaction().rollback();
805  throw cms::Exception("DatabaseError ")<<er.what();
806  }
807 }
static const std::string lshltTableName()
Definition: LumiNames.cc:44
unsigned long long m_cachedhltdataid
ISessionProxyPtr connectReadOnly(const std::string &connectstring)
Definition: DBService.cc:22
static const std::string lstrgTableName()
Definition: LumiNames.cc:32
std::string m_connectStr
bool isAvailable() const
Definition: Service.h:46
unsigned long long m_cachedtrgdataid
unsigned long long m_cachedlumidataid
std::map< unsigned int, PerLSData > m_lscache
std::vector< std::string > TRGBitNames
static const std::string lumisummaryv2TableName()
Definition: LumiNames.cc:14
unsigned int m_cachesize
std::vector< std::string > HLTPathNames
PerRunData m_runcache
bool LumiProducer::fillLumi ( edm::LuminosityBlock iLBlock)
private
void LumiProducer::fillRunCache ( const coral::ISchema &  schema,
unsigned int  runnumber 
)
private

Definition at line 475 of file LumiProducer.cc.

References gather_cfg::cout, lumi::LumiNames::hltdataTableName(), mps_fire::i, lumiPlot::pathnames, AlCaHLTBitMon_QueryRunRegistry::string, and lumi::LumiNames::trgdataTableName().

475  {
476  if(m_lumiversion.empty()){
478  }
479  std::cout<<"lumi tag version 2 "<<m_lumiversion<<std::endl;
480  if(m_cachedtrgdataid!=0){
481  coral::AttributeList trgBindVariables;
482  trgBindVariables.extend("trgdataid",typeid(unsigned long long));
483  trgBindVariables["trgdataid"].data<unsigned long long>()=m_cachedtrgdataid;
484  //std::cout<<"cached trgdataid "<<m_cachedtrgdataid<<std::endl;
485  coral::AttributeList trgOutput;
486  trgOutput.extend("bitzeroname",typeid(std::string));
487  trgOutput.extend("bitnameclob",typeid(std::string));
488  coral::IQuery* trgQuery=schema.newQuery();
489  trgQuery->addToTableList(lumi::LumiNames::trgdataTableName());
490  trgQuery->addToOutputList("BITZERONAME");
491  trgQuery->addToOutputList("BITNAMECLOB");
492  trgQuery->setCondition("DATA_ID=:trgdataid",trgBindVariables);
493  trgQuery->defineOutput(trgOutput);
494  coral::ICursor& trgcursor=trgQuery->execute();
495  while( trgcursor.next() ){
496  const coral::AttributeList& row=trgcursor.currentRow();
497  m_runcache.bitzeroname=row["bitzeroname"].data<std::string>();
498  //std::cout<<"bitzeroname "<<m_runcache.bitzeroname<<std::endl;
499  std::string bitnames=row["bitnameclob"].data<std::string>();
500  boost::char_separator<char> sep(",");
501  boost::tokenizer<boost::char_separator<char> > tokens(bitnames,sep);
502  for(boost::tokenizer<boost::char_separator<char> >::iterator tok_it=tokens.begin();tok_it!=tokens.end();++tok_it){
503  m_runcache.TRGBitNames.push_back(*tok_it);
504  }
505  for(unsigned int i=0;i<m_runcache.TRGBitNames.size();++i){
506  m_runcache.TRGBitNameToIndex.insert(std::make_pair(m_runcache.TRGBitNames.at(i),i) );
507  }
508  }
509  delete trgQuery;
510  }
511  if(m_cachedhltdataid!=0){
512  //
513  //select pathnameclob from hltdata where data_id=:hltdataid
514  //
515  coral::AttributeList hltBindVariables;
516  hltBindVariables.extend("hltdataid",typeid(unsigned long long));
517  hltBindVariables["hltdataid"].data<unsigned long long>()=m_cachedhltdataid;
518  coral::AttributeList hltOutput;
519  hltOutput.extend("PATHNAMECLOB",typeid(std::string));
520  coral::IQuery* hltQuery=schema.newQuery();
521  hltQuery->addToTableList(lumi::LumiNames::hltdataTableName());
522  hltQuery->addToOutputList("PATHNAMECLOB");
523  hltQuery->setCondition("DATA_ID=:hltdataid",hltBindVariables);
524  hltQuery->defineOutput(hltOutput);
525  coral::ICursor& hltcursor=hltQuery->execute();
526  while( hltcursor.next() ){
527  const coral::AttributeList& row=hltcursor.currentRow();
528  std::string pathnames=row["PATHNAMECLOB"].data<std::string>();
529  boost::char_separator<char> sep(",");
530  boost::tokenizer<boost::char_separator<char> > tokens(pathnames,sep);
531  for(boost::tokenizer<boost::char_separator<char> >::iterator tok_it=tokens.begin();tok_it!=tokens.end();++tok_it){
532  m_runcache.HLTPathNames.push_back(*tok_it);
533  }
534  for(unsigned int i=0;i<m_runcache.HLTPathNames.size();++i){
535  m_runcache.HLTPathNameToIndex.insert(std::make_pair(m_runcache.HLTPathNames.at(i),i));
536  }
537  }
538  delete hltQuery;
539  }
540 }
static const std::string trgdataTableName()
Definition: LumiNames.cc:29
unsigned long long m_cachedhltdataid
static const std::string hltdataTableName()
Definition: LumiNames.cc:41
std::map< std::string, unsigned int > HLTPathNameToIndex
unsigned long long m_cachedtrgdataid
std::vector< std::string > TRGBitNames
std::string m_lumiversion
std::string getCurrentDataTag(const coral::ISchema &schema)
std::vector< std::string > HLTPathNames
std::map< std::string, unsigned int > TRGBitNameToIndex
PerRunData m_runcache
std::string LumiProducer::getCurrentDataTag ( const coral::ISchema &  schema)
private

Definition at line 382 of file LumiProducer.cc.

References lumiTag::alltags, mps_fire::result, AlCaHLTBitMon_QueryRunRegistry::string, createPayload::tagname, and lumi::LumiNames::tagsTableName().

382  {
383  //select tagid,tagname from tags
385  std::map<unsigned long long,std::string> alltags;
386  coral::IQuery* tagQuery=schema.newQuery();
387  tagQuery->addToTableList(lumi::LumiNames::tagsTableName());
388  tagQuery->addToOutputList("TAGID");
389  tagQuery->addToOutputList("TAGNAME");
390  coral::AttributeList tagoutput;
391  tagoutput.extend("TAGID",typeid(unsigned long long));
392  tagoutput.extend("TAGNAME",typeid(std::string));
393  tagQuery->defineOutput(tagoutput);
394  coral::ICursor& tagcursor=tagQuery->execute();
395  while( tagcursor.next() ){
396  const coral::AttributeList& row=tagcursor.currentRow();
397  unsigned long long tagid=row["TAGID"].data<unsigned long long>();
398  const std::string tagname=row["TAGNAME"].data<std::string>();
399  alltags.insert(std::make_pair(tagid,tagname));
400  }
401  delete tagQuery;
402  unsigned long long maxid=0;
403  for(std::map<unsigned long long,std::string>::iterator it = alltags.begin(); it !=alltags.end(); ++it) {
404  if( it->first > maxid){
405  maxid=it->first;
406  }
407  }
408  result=alltags[maxid];
409  return result;
410 }
static const std::string tagsTableName()
Definition: LumiNames.cc:50
alltags
Definition: lumiTag.py:77
unsigned long long LumiProducer::getHltDataId ( const coral::ISchema &  schema,
unsigned int  runnumber 
)
private

Definition at line 355 of file LumiProducer.cc.

References dataDML::hltdataid, lumi::LumiNames::hltdataTableName(), and AlCaHLTBitMon_QueryRunRegistry::string.

355  {
356  //
357  //select max(data_id) from hltdata where runnum=:runnum
358  //
359  unsigned long long hltdataid=0;
360  coral::AttributeList bindVariables;
361  bindVariables.extend("runnum",typeid(unsigned int));
362  bindVariables["runnum"].data<unsigned int>()=runnumber;
363  coral::AttributeList hltidOutput;
364  hltidOutput.extend("hltdataid",typeid(unsigned long long));
365  coral::IQuery* hltQuery=schema.newQuery();
366  hltQuery->addToTableList(lumi::LumiNames::hltdataTableName());
367  hltQuery->addToOutputList("MAX(DATA_ID)","hltdataid");
368  hltQuery->setCondition("RUNNUM=:runnum",bindVariables);
369  hltQuery->defineOutput(hltidOutput);
370  coral::ICursor& hltcursor=hltQuery->execute();
371  while( hltcursor.next() ){
372  const coral::AttributeList& row=hltcursor.currentRow();
373  if(!row["hltdataid"].isNull()){
374  hltdataid=row["hltdataid"].data<unsigned long long>();
375  }
376  }
377  delete hltQuery;
378  return hltdataid;
379 }
static const std::string hltdataTableName()
Definition: LumiNames.cc:41
unsigned long long LumiProducer::getLumiDataId ( const coral::ISchema &  schema,
unsigned int  runnumber 
)
private

Definition at line 302 of file LumiProducer.cc.

References dataDML::lumidataid, and lumi::LumiNames::lumidataTableName().

302  {
303  //
304  //select max(data_id) from lumidata where runnum=:runnum
305  //
306  //std::count<<"entering getLumiDataId "<<std::endl;
307  unsigned long long lumidataid=0;
308  coral::AttributeList bindVariables;
309  bindVariables.extend("runnum",typeid(unsigned int));
310  bindVariables["runnum"].data<unsigned int>()=runnumber;
311  coral::AttributeList lumiidOutput;
312  lumiidOutput.extend("lumidataid",typeid(unsigned long long));
313  coral::IQuery* lumiQuery=schema.newQuery();
314  lumiQuery->addToTableList(lumi::LumiNames::lumidataTableName());
315  lumiQuery->addToOutputList("MAX(DATA_ID)","lumidataid");
316  lumiQuery->setCondition("RUNNUM=:runnum",bindVariables);
317  lumiQuery->defineOutput(lumiidOutput);
318  coral::ICursor& lumicursor=lumiQuery->execute();
319  while( lumicursor.next() ){
320  const coral::AttributeList& row=lumicursor.currentRow();
321  if(!row["lumidataid"].isNull()){
322  lumidataid=row["lumidataid"].data<unsigned long long>();
323  }
324  }
325  delete lumiQuery;
326  return lumidataid;
327 }
static const std::string lumidataTableName()
Definition: LumiNames.cc:5
lumidataid
Definition: dataDML.py:2364
unsigned long long LumiProducer::getTrgDataId ( const coral::ISchema &  schema,
unsigned int  runnumber 
)
private

Definition at line 329 of file LumiProducer.cc.

References dataDML::trgdataid, and lumi::LumiNames::trgdataTableName().

329  {
330  //
331  //select max(data_id) from trgdata where runnum=:runnum
332  //
333  unsigned long long trgdataid=0;
334  coral::AttributeList bindVariables;
335  bindVariables.extend("runnum",typeid(unsigned int));
336  bindVariables["runnum"].data<unsigned int>()=runnumber;
337  coral::AttributeList trgidOutput;
338  trgidOutput.extend("trgdataid",typeid(unsigned long long));
339  coral::IQuery* trgQuery=schema.newQuery();
340  trgQuery->addToTableList(lumi::LumiNames::trgdataTableName());
341  trgQuery->addToOutputList("MAX(DATA_ID)","trgdataid");
342  trgQuery->setCondition("RUNNUM=:runnum",bindVariables);
343  trgQuery->defineOutput(trgidOutput);
344  coral::ICursor& trgcursor=trgQuery->execute();
345  while( trgcursor.next() ){
346  const coral::AttributeList& row=trgcursor.currentRow();
347  if(!row["trgdataid"].isNull()){
348  trgdataid=row["trgdataid"].data<unsigned long long>();
349  }
350  }
351  delete trgQuery;
352  return trgdataid;
353 }
static const std::string trgdataTableName()
Definition: LumiNames.cc:29
void LumiProducer::produce ( edm::Event e,
const edm::EventSetup iSetup 
)
finalprivate

Definition at line 298 of file LumiProducer.cc.

299 {
300 }
XMLCh * LumiProducer::s2x ( const std::string &  input) const
private

Definition at line 175 of file LumiProducer.cc.

References AlCaHLTBitMon_QueryRunRegistry::string.

175  {
176  XMLCh* buff = xercesc::XMLString::transcode(temp.c_str());
177  return buff;
178 }
const std::string LumiProducer::servletTranslation ( const std::string &  servlet) const
private

Definition at line 208 of file LumiProducer.cc.

References common_cff::doc, MillePedeFileConverter_cfg::e, Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), createfilelist::parser, callgraph::path, lumiCalc2::siteconfpath, AlCaHLTBitMon_QueryRunRegistry::string, tmp, relmon_authenticated_wget::url, and cms::concurrency::xercesInitialize().

208  {
209  std::string frontierConnect;
210  std::string realconnect;
212  std::auto_ptr< xercesc::XercesDOMParser > parser(new xercesc::XercesDOMParser);
213  try{
214  parser->setValidationScheme(xercesc::XercesDOMParser::Val_Auto);
215  parser->setDoNamespaces(false);
216  parser->parse(m_siteconfpath.c_str());
217  xercesc::DOMDocument* doc=parser->getDocument();
218  if(!doc){
219  return "";
220  }
221 
222  xercesc::DOMNodeList *frontierConnectList=doc->getElementsByTagName(s2x("frontier-connect"));
223  if (frontierConnectList->getLength()>0){
224  xercesc::DOMElement *frontierConnectElement=static_cast < xercesc::DOMElement *> (frontierConnectList->item (0));
225  frontierConnect = toParentString(*frontierConnectElement);
226  }
227  // Replace the last component of every "serverurl=" piece (up to the
228  // next close-paren) with the servlet
229  std::string::size_type nextparen = 0;
230  std::string::size_type serverurl, lastslash;
231  std::string complexstr = "";
232  while ((serverurl=frontierConnect.find("(serverurl=", nextparen)) != std::string::npos){
233  realconnect.append(frontierConnect, nextparen, serverurl - nextparen);
234  nextparen=frontierConnect.find(')', serverurl);
235  lastslash=frontierConnect.rfind('/', nextparen);
236  realconnect.append(frontierConnect,serverurl,lastslash-serverurl+1);
237  realconnect.append(servlet);
238  }
239  realconnect.append(frontierConnect, nextparen,frontierConnect.length()-nextparen);
240  }catch(xercesc::DOMException &e){
241  }
242  return realconnect;
243 }
XMLCh * s2x(const std::string &input) const
void xercesInitialize()
Definition: Xerces.cc:18
uint16_t size_type
std::string toParentString(const xercesc::DOMNode &nodeToConvert) const
std::string m_siteconfpath
std::string LumiProducer::toParentString ( const xercesc::DOMNode &  nodeToConvert) const
private

Definition at line 181 of file LumiProducer.cc.

References mps_fire::i, and AlCaHLTBitMon_QueryRunRegistry::string.

181  {
182  std::ostringstream oss;
183  xercesc::DOMNodeList *childList = nodeToConvert.getChildNodes();
184 
185  unsigned int numNodes = childList->getLength ();
186  for (unsigned int i = 0; i < numNodes; ++i){
187  xercesc::DOMNode *childNode = childList->item(i);
188  if (childNode->getNodeType() != xercesc::DOMNode::ELEMENT_NODE)
189  continue;
190  xercesc::DOMElement *child = static_cast < xercesc::DOMElement *> (childNode);
191  xercesc::DOMNamedNodeMap *attributes = child->getAttributes();
192  unsigned int numAttributes = attributes->getLength ();
193  for (unsigned int j = 0; j < numAttributes; ++j){
194  xercesc::DOMNode *attributeNode = attributes->item(j);
195  if (attributeNode->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE)
196  continue;
197  xercesc::DOMAttr *attribute = static_cast <xercesc::DOMAttr *> (attributeNode);
198 
199  oss << "(" << x2s(child->getTagName()) <<
200  x2s(attribute->getName()) << "=" <<
201  x2s(attribute->getValue()) << ")";
202  }
203  }
204  return oss.str();
205 }
std::string x2s(const XMLCh *input) const
void LumiProducer::writeProductsForEntry ( edm::LuminosityBlock iLBlock,
unsigned int  runnumber,
unsigned int  luminum 
)
private

Definition at line 809 of file LumiProducer.cc.

References estimatePileup2::algoname, LumiProducer::PerLSData::beam1intensity, LumiProducer::PerLSData::beam2intensity, LumiProducer::PerLSData::bitzerocount, LumiProducer::PerLSData::bitzeroprescale, LumiProducer::PerLSData::bunchlumierror, LumiProducer::PerLSData::bunchlumiquality, LumiProducer::PerLSData::bunchlumivalue, LumiProducer::PerLSData::deadcount, DEFINE_FWK_MODULE, LumiProducer::PerLSData::hltdata, mps_fire::i, LumiDetails::kET, LumiDetails::kOCC1, LumiDetails::kOCC2, LumiDetails::kPLT, LumiProducer::PerLSData::l1data, LumiProducer::PerLSData::lumierror, LumiProducer::PerLSData::lumiquality, LumiProducer::PerLSData::lumivalue, eostools::move(), LumiProducer::PerLSData::numorbit, LumiSummary::HLT::pathnameidx, LumiSummary::L1::prescale, LumiSummary::HLT::prescale, edm::LuminosityBlock::put(), LumiProducer::PerLSData::startorbit, AlCaHLTBitMon_QueryRunRegistry::string, and LumiSummary::L1::triggernameidx.

809  {
810  //std::cout<<"writing runnumber,luminum "<<runnumber<<" "<<luminum<<std::endl;
811  auto pIn1 = std::make_unique<LumiSummary>();
812  auto pIn2 = std::make_unique<LumiDetails>();
813  if(m_isNullRun){
814  pIn1->setLumiVersion("-1");
815  pIn2->setLumiVersion("-1");
816  iLBlock.put(std::move(pIn1));
817  iLBlock.put(std::move(pIn2));
818  return;
819  }
820  PerLSData& lsdata=m_lscache[luminum];
821  pIn1->setLumiData(lsdata.lumivalue,lsdata.lumierror,lsdata.lumiquality);
822  pIn1->setDeadCount(lsdata.deadcount);
823  if(!lsdata.l1data.empty()){
824  //std::cout<<"bitzerocount "<<lsdata.bitzerocount<<std::endl;
825  //std::cout<<"bitzeroprescale "<<lsdata.bitzeroprescale<<std::endl;
826  //std::cout<<"product "<<lsdata.bitzerocount*lsdata.bitzeroprescale<<std::endl;
827  pIn1->setBitZeroCount(lsdata.bitzerocount*lsdata.bitzeroprescale);
828  }
829  pIn1->setlsnumber(luminum);
830  pIn1->setOrbitData(lsdata.startorbit,lsdata.numorbit);
831  std::vector<LumiSummary::L1> l1temp;
832  for(std::vector< L1Data >::iterator it=lsdata.l1data.begin();it!=lsdata.l1data.end();++it){
833  LumiSummary::L1 trgtmp;
834  trgtmp.triggernameidx=m_runcache.TRGBitNameToIndex[it->bitname];
835  trgtmp.prescale=it->prescale;
836  l1temp.push_back(trgtmp);
837  }
838  std::vector<LumiSummary::HLT> hlttemp;
839  for(std::vector< HLTData >::iterator it=lsdata.hltdata.begin();it!=lsdata.hltdata.end();++it){
840  LumiSummary::HLT hlttmp;
841  hlttmp.pathnameidx=m_runcache.HLTPathNameToIndex[it->pathname];;
842  hlttmp.prescale=it->prescale;
843  hlttemp.push_back(hlttmp);
844  }
845  pIn1->swapL1Data(l1temp);
846  pIn1->swapHLTData(hlttemp);
847  pIn1->setLumiVersion(m_lumiversion);
848  pIn2->fillBeamIntensities(lsdata.beam1intensity,lsdata.beam2intensity);
849  for(unsigned int i=0;i<lsdata.bunchlumivalue.size();++i){
850  std::string algoname=lsdata.bunchlumivalue[i].first;
851  if(algoname=="OCC1"){
852  pIn2->fill(LumiDetails::kOCC1,lsdata.bunchlumivalue[i].second,lsdata.bunchlumierror[i].second,lsdata.bunchlumiquality[i].second);
853  }else if(algoname=="OCC2"){
854  pIn2->fill(LumiDetails::kOCC2,lsdata.bunchlumivalue[i].second,lsdata.bunchlumierror[i].second,lsdata.bunchlumiquality[i].second);
855  }else if(algoname=="ET"){
856  pIn2->fill(LumiDetails::kET,lsdata.bunchlumivalue[i].second,lsdata.bunchlumierror[i].second,lsdata.bunchlumiquality[i].second);
857  }else if(algoname=="PLT"){
858  pIn2->fill(LumiDetails::kPLT,lsdata.bunchlumivalue[i].second,lsdata.bunchlumierror[i].second,lsdata.bunchlumiquality[i].second);
859  }
860  }
861  pIn2->setLumiVersion(m_lumiversion);
862  iLBlock.put(std::move(pIn1));
863  iLBlock.put(std::move(pIn2));
864 }
std::map< std::string, unsigned int > HLTPathNameToIndex
unsigned int prescale
Definition: LumiSummary.h:26
void put(std::unique_ptr< PROD > product)
Put a new product.
std::map< unsigned int, PerLSData > m_lscache
std::string m_lumiversion
def move(src, dest)
Definition: eostools.py:510
std::map< std::string, unsigned int > TRGBitNameToIndex
PerRunData m_runcache
unsigned int prescale
Definition: LumiSummary.h:32
std::string LumiProducer::x2s ( const XMLCh *  input) const
private

Definition at line 169 of file LumiProducer.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and tmp.

169  {
170  std::string tmp(xercesc::XMLString::transcode(toTranscode));
171  return tmp;
172 }
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100

Member Data Documentation

unsigned long long LumiProducer::m_cachedhltdataid
private

Definition at line 157 of file LumiProducer.cc.

unsigned long long LumiProducer::m_cachedlumidataid
private

Definition at line 155 of file LumiProducer.cc.

unsigned int LumiProducer::m_cachedrun
private

Definition at line 154 of file LumiProducer.cc.

unsigned long long LumiProducer::m_cachedtrgdataid
private

Definition at line 156 of file LumiProducer.cc.

unsigned int LumiProducer::m_cachesize
private

Definition at line 161 of file LumiProducer.cc.

std::string LumiProducer::m_connectStr
private

Definition at line 151 of file LumiProducer.cc.

bool LumiProducer::m_isNullRun
private

Definition at line 160 of file LumiProducer.cc.

std::map< unsigned int,PerLSData > LumiProducer::m_lscache
private

Definition at line 159 of file LumiProducer.cc.

std::string LumiProducer::m_lumiversion
private

Definition at line 152 of file LumiProducer.cc.

PerRunData LumiProducer::m_runcache
private

Definition at line 158 of file LumiProducer.cc.

std::string LumiProducer::m_siteconfpath
private

Definition at line 153 of file LumiProducer.cc.