test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::one::WatchRuns, edm::BeginLuminosityBlockProducer, edm::EndRunProducer >
 EDProducer ()=default
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- 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 ()
 
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, std::unordered_multimap< std::string, edm::ProductResolverIndex > const &iIndicies, std::string const &moduleLabel)
 
virtual ~ProducerBase () noexcept(false)
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 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 & 
itemsToGetFromEvent () 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
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

virtual void beginLuminosityBlockProduce (edm::LuminosityBlock &iLBlock, edm::EventSetup const &iSetup) overridefinal
 
virtual void beginRun (edm::Run const &, edm::EventSetup const &) overridefinal
 
virtual void endRun (edm::Run const &, edm::EventSetup const &) overridefinal
 
virtual void endRunProduce (edm::Run &, edm::EventSetup const &) overridefinal
 
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)
 
virtual void produce (edm::Event &, const edm::EventSetup &) overridefinal
 
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
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 ( )

Definition at line 292 of file LumiProducer.cc.

292  {
293 }

Member Function Documentation

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

Definition at line 445 of file LumiProducer.cc.

References fillLSCache(), edm::LuminosityBlockBase::luminosityBlock(), m_isNullRun, m_lscache, edm::LuminosityBlock::put(), edm::LuminosityBlockBase::run(), cond::runnumber, and writeProductsForEntry().

446 {
447  unsigned int runnumber=iLBlock.run();
448  unsigned int luminum=iLBlock.luminosityBlock();
449  //std::cout<<"beg of beginLuminosityBlock "<<luminum<<std::endl;
450  //if is null run, fill empty values and return
451  if(m_isNullRun){
452  iLBlock.put(std::make_unique<LumiSummary>());
453  iLBlock.put(std::make_unique<LumiDetails>());
454  return;
455  }
456  if(m_lscache.find(luminum)==m_lscache.end()){
457  //if runnumber is cached but LS is not, this is the first LS, fill LS cache to full capacity
458  fillLSCache(luminum);
459  }
460  //here the presence of ls is guaranteed
461  writeProductsForEntry(iLBlock,runnumber,luminum);
462 }
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 
)
finaloverrideprivatevirtual

Definition at line 413 of file LumiProducer.cc.

References lumi::service::DBService::connectReadOnly(), lumi::service::DBService::disconnect(), Exception, fillRunCache(), getHltDataId(), getLumiDataId(), getTrgDataId(), edm::Service< T >::isAvailable(), m_cachedhltdataid, m_cachedlumidataid, m_cachedrun, m_cachedtrgdataid, m_connectStr, m_isNullRun, 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  coral::ISessionProxy* session=mydbservice->connectReadOnly(m_connectStr);
424  try{
425  session->transaction().start(true);
426  m_cachedlumidataid=getLumiDataId(session->nominalSchema(),runnumber);
427  if(m_cachedlumidataid!=0){//if no lumi, do not bother other info
428  m_cachedtrgdataid=getTrgDataId(session->nominalSchema(),runnumber);
429  m_cachedhltdataid=getHltDataId(session->nominalSchema(),runnumber);
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  mydbservice->disconnect(session);
438  throw cms::Exception("DatabaseError ")<<er.what();
439  }
440  mydbservice->disconnect(session);
441  }
442  //std::cout<<"end of beginRun "<<runnumber<<std::endl;
443 }
tuple session
Definition: dataDML.py:2333
unsigned long long m_cachedhltdataid
unsigned long long getLumiDataId(const coral::ISchema &schema, unsigned int runnumber)
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
void disconnect(coral::ISessionProxy *session)
Definition: DBService.cc:27
unsigned long long m_cachedlumidataid
unsigned long long getTrgDataId(const coral::ISchema &schema, unsigned int runnumber)
coral::ISessionProxy * connectReadOnly(const std::string &connectstring)
Definition: DBService.cc:23
void fillRunCache(const coral::ISchema &schema, unsigned int runnumber)
void LumiProducer::endRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
finaloverrideprivatevirtual

Definition at line 464 of file LumiProducer.cc.

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

Definition at line 467 of file LumiProducer.cc.

References LumiProducer::PerRunData::HLTPathNames, LumiProducer::PerRunData::HLTPathNameToIndex, m_runcache, eostools::move(), edm::Run::put(), LumiProducer::PerRunData::TRGBitNames, and LumiProducer::PerRunData::TRGBitNameToIndex.

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

Definition at line 544 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(), lumi::service::DBService::disconnect(), Exception, LumiProducer::PerLSData::hltdata, LumiProducer::PerRunData::HLTPathNames, i, edm::Service< T >::isAvailable(), cmsLHEtoEOSManager::l, LumiProducer::PerLSData::l1data, LumiProducer::HLTData::l1passcount, lumi::LumiNames::lshltTableName(), lumi::LumiNames::lstrgTableName(), lumi::LumiNames::lumisummaryv2TableName(), m_cachedhltdataid, m_cachedlumidataid, m_cachedtrgdataid, m_cachesize, m_connectStr, m_isNullRun, m_lscache, m_runcache, gen::n, LumiProducer::HLTData::pathname, LumiProducer::HLTData::prescale, LumiProducer::L1Data::prescale, makeHLTPrescaleTable::prescales, LumiProducer::L1Data::ratecount, dataDML::schema, dataDML::session, AlCaHLTBitMon_QueryRunRegistry::string, and LumiProducer::PerRunData::TRGBitNames.

Referenced by beginLuminosityBlockProduce().

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

References LumiProducer::PerRunData::bitzeroname, gather_cfg::cout, getCurrentDataTag(), lumi::LumiNames::hltdataTableName(), LumiProducer::PerRunData::HLTPathNames, LumiProducer::PerRunData::HLTPathNameToIndex, i, m_cachedhltdataid, m_cachedtrgdataid, m_runcache, lumiPlot::pathnames, cmsHarvester::sep, AlCaHLTBitMon_QueryRunRegistry::string, LumiProducer::PerRunData::TRGBitNames, LumiProducer::PerRunData::TRGBitNameToIndex, and lumi::LumiNames::trgdataTableName().

Referenced by beginRun().

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

Referenced by fillRunCache().

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 }
tuple schema
Definition: dataDML.py:2334
tuple result
Definition: mps_fire.py:84
static const std::string tagsTableName()
Definition: LumiNames.cc:50
tuple 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 lumi::LumiNames::hltdataTableName().

Referenced by beginRun().

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 }
tuple schema
Definition: dataDML.py:2334
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 lumi::LumiNames::lumidataTableName().

Referenced by beginRun().

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 }
tuple schema
Definition: dataDML.py:2334
static const std::string lumidataTableName()
Definition: LumiNames.cc:5
unsigned long long LumiProducer::getTrgDataId ( const coral::ISchema &  schema,
unsigned int  runnumber 
)
private

Definition at line 329 of file LumiProducer.cc.

References lumi::LumiNames::trgdataTableName().

Referenced by beginRun().

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
tuple schema
Definition: dataDML.py:2334
void LumiProducer::produce ( edm::Event e,
const edm::EventSetup iSetup 
)
finaloverrideprivatevirtual

Implements edm::one::EDProducerBase.

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.

Referenced by servletTranslation().

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 alignCSCRings::e, m_siteconfpath, createfilelist::parser, s2x(), AlCaHLTBitMon_QueryRunRegistry::string, toParentString(), 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 i, j, and x2s().

Referenced by servletTranslation().

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 }
int i
Definition: DBlmapReader.cc:9
std::string x2s(const XMLCh *input) const
int j
Definition: DBlmapReader.cc:9
void LumiProducer::writeProductsForEntry ( edm::LuminosityBlock iLBlock,
unsigned int  runnumber,
unsigned int  luminum 
)
private

Definition at line 813 of file LumiProducer.cc.

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

Referenced by beginLuminosityBlockProduce().

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

Referenced by toParentString().

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.

Referenced by beginRun(), fillLSCache(), and fillRunCache().

unsigned long long LumiProducer::m_cachedlumidataid
private

Definition at line 155 of file LumiProducer.cc.

Referenced by beginRun(), and fillLSCache().

unsigned int LumiProducer::m_cachedrun
private

Definition at line 154 of file LumiProducer.cc.

Referenced by beginRun().

unsigned long long LumiProducer::m_cachedtrgdataid
private

Definition at line 156 of file LumiProducer.cc.

Referenced by beginRun(), fillLSCache(), and fillRunCache().

unsigned int LumiProducer::m_cachesize
private

Definition at line 161 of file LumiProducer.cc.

Referenced by fillLSCache().

std::string LumiProducer::m_connectStr
private

Definition at line 151 of file LumiProducer.cc.

Referenced by beginRun(), and fillLSCache().

bool LumiProducer::m_isNullRun
private
std::map< unsigned int,PerLSData > LumiProducer::m_lscache
private
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.

Referenced by endRunProduce(), fillLSCache(), fillRunCache(), and writeProductsForEntry().

std::string LumiProducer::m_siteconfpath
private

Definition at line 153 of file LumiProducer.cc.

Referenced by servletTranslation().