CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
HLTPrescaleRecorder Class Reference

#include <HLTPrescaleRecorder.h>

Inheritance diagram for HLTPrescaleRecorder:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

virtual void beginLuminosityBlock (edm::LuminosityBlock &iLumi, const edm::EventSetup &iSetup)
 
virtual void beginRun (edm::Run &iRun, const edm::EventSetup &iSetup)
 
virtual void endLuminosityBlock (edm::LuminosityBlock &iLumi, const edm::EventSetup &iSetup)
 
virtual void endRun (edm::Run &iRun, const edm::EventSetup &iSetup)
 
 HLTPrescaleRecorder (const edm::ParameterSet &)
 
virtual void produce (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
 ~HLTPrescaleRecorder ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Attributes

bool condDB_
 
cond::service::PoolDBOutputServicedb_
 Pool DB service. More...
 
bool event_
 
trigger::HLTPrescaleTable hlt_
 payload HLT object More...
 
std::string hltDBTag_
 Tag of DB entry (HLT Key Name) (src=4) More...
 
edm::ESHandle
< trigger::HLTPrescaleTableCond
hltESHandle_
 
edm::Handle
< trigger::HLTPrescaleTable
hltHandle_
 Handle and ESHandle for existing HLT object. More...
 
edm::InputTag hltInputTag_
 InputTag of HLTPrescaleTable product (src=1,2,3) More...
 
bool lumi_
 
edm::service::PrescaleServiceps_
 Prescale service. More...
 
std::string psetName_
 
bool run_
 (Multiple) Destinations More...
 
int src_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

This class is an EDProducer making the HLTPrescaleTable object

Date:
2010/02/28 08:09:04
Revision:
1.3
Author
Martin Grunewald

See header file for documentation

Date:
2010/03/08 17:12:09
Revision:
1.4
Author
Martin Grunewald

Definition at line 41 of file HLTPrescaleRecorder.h.

Constructor & Destructor Documentation

HLTPrescaleRecorder::HLTPrescaleRecorder ( const edm::ParameterSet ps)
explicit

Definition at line 37 of file HLTPrescaleRecorder.cc.

References condDB_, db_, edm::InputTag::encode(), event_, hltDBTag_, hltInputTag_, lumi_, cmsCodeRules.cppFunctionSkipper::operator, ps_, psetName_, run_, and src_.

37  :
38  src_(ps.getParameter<int>("src")),
39  run_(ps.getParameter<bool>("run")),
40  lumi_(ps.getParameter<bool>("lumi")),
41  event_(ps.getParameter<bool>("event")),
42  condDB_(ps.getParameter<bool>("condDB")),
43  psetName_(ps.getParameter<string>("psetName")),
44  hltInputTag_(ps.getParameter<InputTag>("hltInputTag")),
45  hltDBTag_(ps.getParameter<string>("hltDBTag")),
46  ps_(0),
47  db_(0),
48  hltHandle_(),
49  hltESHandle_(),
50  hlt_()
51 {
52 
53  LogInfo("HLTPrescaleRecorder")
54  << "src:run-lumi-event-condDB+psetName+tags: "
55  << src_ << ":" << run_ << "-" << lumi_ << "-" << event_ << "-"
56  << condDB_ << "+" << psetName_ << "+"
57  << hltInputTag_.encode() << "+" << hltDBTag_;
58 
61  } else if (src_==0) {
62  LogError("HLTPrescaleRecorder")<<"PrescaleService requested as source but unavailable!";
63  }
64 
67  } else if (condDB_) {
68  LogError("HLTPrescaleRecorder")<<"PoolDBOutputService requested as destination but unavailable!";
69  }
70 
71  if (run_) produces<HLTPrescaleTable,edm::InRun>("Run");
72  if (lumi_) produces<HLTPrescaleTable,edm::InLumi>("Lumi");
73  if (event_) produces<HLTPrescaleTable,edm::InEvent>("Event");
74 
75 }
T getParameter(std::string const &) const
edm::service::PrescaleService * ps_
Prescale service.
std::string hltDBTag_
Tag of DB entry (HLT Key Name) (src=4)
edm::ESHandle< trigger::HLTPrescaleTableCond > hltESHandle_
std::string encode() const
Definition: InputTag.cc:72
cond::service::PoolDBOutputService * db_
Pool DB service.
trigger::HLTPrescaleTable hlt_
payload HLT object
edm::Handle< trigger::HLTPrescaleTable > hltHandle_
Handle and ESHandle for existing HLT object.
bool run_
(Multiple) Destinations
edm::InputTag hltInputTag_
InputTag of HLTPrescaleTable product (src=1,2,3)
HLTPrescaleRecorder::~HLTPrescaleRecorder ( )

Definition at line 77 of file HLTPrescaleRecorder.cc.

78 {
79 }

Member Function Documentation

void HLTPrescaleRecorder::beginLuminosityBlock ( edm::LuminosityBlock iLumi,
const edm::EventSetup iSetup 
)
virtual

From PrescaleService default index updated at lumi block boundaries

From Lumi Block

Reimplemented from edm::EDProducer.

Definition at line 138 of file HLTPrescaleRecorder.cc.

References edm::LuminosityBlock::getByLabel(), edm::service::PrescaleService::getLvl1IndexDefault(), edm::service::PrescaleService::getLvl1Labels(), edm::service::PrescaleService::getPrescaleTable(), hlt_, hltHandle_, hltInputTag_, ps_, and src_.

138  {
139 
140  if (src_==0) {
143  if (ps_!=0) {
145  } else {
147  LogError("HLTPrescaleRecorder")<<"PrescaleService not found!";
148  }
149  } else if (src_==2) {
151  if (iLumi.getByLabel(hltInputTag_,hltHandle_)) {
152  hlt_=*hltHandle_;
153  } else {
155  LogError("HLTPrescaleRecorder")<<"HLTPrescaleTable not found in LumiBlock!";
156  }
157  }
158 
159  return;
160 }
edm::service::PrescaleService * ps_
Prescale service.
unsigned int getLvl1IndexDefault() const
The single EDProduct containing the HLT Prescale Table.
const PrescaleTable_t & getPrescaleTable() const
bool getByLabel(std::string const &label, Handle< PROD > &result) const
trigger::HLTPrescaleTable hlt_
payload HLT object
const VString_t & getLvl1Labels() const
edm::Handle< trigger::HLTPrescaleTable > hltHandle_
Handle and ESHandle for existing HLT object.
edm::InputTag hltInputTag_
InputTag of HLTPrescaleTable product (src=1,2,3)
void HLTPrescaleRecorder::beginRun ( edm::Run iRun,
const edm::EventSetup iSetup 
)
virtual

From PrescaleTable tracked PSet

From PrescaleService default index updated at lumi block boundaries

From Run Block

From CondDB (needs ESProducer module as well)

Reimplemented from edm::EDProducer.

Definition at line 85 of file HLTPrescaleRecorder.cc.

References edm::EventSetup::get(), edm::eventsetup::EventSetupRecord::get(), edm::Run::getByLabel(), edm::service::PrescaleService::getLvl1IndexDefault(), edm::service::PrescaleService::getLvl1Labels(), edm::ParameterSet::getParameter(), edm::service::PrescaleService::getPrescaleTable(), edm::getProcessParameterSet(), edm::ParameterSet::getUntrackedParameter(), hlt_, hltDBTag_, hltESHandle_, hltHandle_, hltInputTag_, i, L1TDQM_cfg::labels, m, n, ps_, psetName_, src_, and asciidump::table.

85  {
86 
88 
89  if (src_==-1) {
92  ParameterSet iPS(pPSet.getParameter<ParameterSet>(psetName_));
93 
94  string defaultLabel(iPS.getUntrackedParameter<std::string>("lvl1DefaultLabel",""));
95  vector<string> labels(iPS.getParameter<std::vector<std::string> >("lvl1Labels"));
96  vector<ParameterSet> vpTable(iPS.getParameter<std::vector<ParameterSet> >("prescaleTable"));
97 
98  unsigned int set(0);
99  const unsigned int n(labels.size());
100  for (unsigned int i=0; i!=n; ++i) {
101  if (labels[i]==defaultLabel) set=i;
102  }
103 
104  map<string,vector<unsigned int> > table;
105  const unsigned int m (vpTable.size());
106  for (unsigned int i=0; i!=m; ++i) {
107  table[vpTable[i].getParameter<std::string>("pathName")] =
108  vpTable[i].getParameter<std::vector<unsigned int> >("prescales");
109  }
110  hlt_=HLTPrescaleTable(set,labels,table);
111 
112  } else if (src_==0) {
115  if (ps_!=0) {
117  } else {
119  LogError("HLTPrescaleRecorder")<<"PrescaleService not found!";
120  }
121  } else if (src_==1) {
123  if (iRun.getByLabel(hltInputTag_,hltHandle_)) {
124  hlt_=*hltHandle_;
125  } else {
126  LogError("HLTPrescaleRecorder")<<"HLTPrescaleTable not found in Run!";
127  }
128  } else if (src_==4) {
130  const HLTPrescaleTableRcd& hltRecord(iSetup.get<HLTPrescaleTableRcd>());
131  hltRecord.get(hltDBTag_,hltESHandle_);
132  hlt_=hltESHandle_->hltPrescaleTable();
133  }
134 
135  return;
136 }
list table
Definition: asciidump.py:386
bool getByLabel(std::string const &label, Handle< PROD > &result) const
Definition: Run.h:174
int i
Definition: DBlmapReader.cc:9
edm::service::PrescaleService * ps_
Prescale service.
unsigned int getLvl1IndexDefault() const
The single EDProduct containing the HLT Prescale Table.
std::string hltDBTag_
Tag of DB entry (HLT Key Name) (src=4)
const PrescaleTable_t & getPrescaleTable() const
edm::ESHandle< trigger::HLTPrescaleTableCond > hltESHandle_
trigger::HLTPrescaleTable hlt_
payload HLT object
tuple labels
Definition: L1TDQM_cfg.py:62
const VString_t & getLvl1Labels() const
ParameterSet const & getProcessParameterSet()
Definition: Registry.cc:34
const T & get() const
Definition: EventSetup.h:55
edm::Handle< trigger::HLTPrescaleTable > hltHandle_
Handle and ESHandle for existing HLT object.
edm::InputTag hltInputTag_
InputTag of HLTPrescaleTable product (src=1,2,3)
void HLTPrescaleRecorder::endLuminosityBlock ( edm::LuminosityBlock iLumi,
const edm::EventSetup iSetup 
)
virtual

Writing to Lumi Block

Reimplemented from edm::EDProducer.

Definition at line 183 of file HLTPrescaleRecorder.cc.

References hlt_, lumi_, and edm::LuminosityBlock::put().

183  {
184 
185  if (lumi_) {
187  auto_ptr<HLTPrescaleTable> product (new HLTPrescaleTable(hlt_));
188  iLumi.put(product,"Lumi");
189  }
190 
191  return;
192 }
The single EDProduct containing the HLT Prescale Table.
trigger::HLTPrescaleTable hlt_
payload HLT object
void put(std::auto_ptr< PROD > product)
Put a new product.
void HLTPrescaleRecorder::endRun ( edm::Run iRun,
const edm::EventSetup iSetup 
)
virtual

Dump to logfile

Writing to Run Block

Writing to CondDB (needs PoolDBOutputService)

Reimplemented from edm::EDProducer.

Definition at line 194 of file HLTPrescaleRecorder.cc.

References cond::service::PoolDBOutputService::appendSinceTime(), cond::service::PoolDBOutputService::beginOfTime(), condDB_, cond::service::PoolDBOutputService::createNewIOV(), db_, cond::service::PoolDBOutputService::endOfTime(), hlt_, i, cond::service::PoolDBOutputService::isNewTagRequest(), L1TDQM_cfg::labels, trigger::HLTPrescaleTable::labels(), Association::map, n, edm::Run::put(), run_, trigger::HLTPrescaleTable::size(), trigger::HLTPrescaleTable::table(), asciidump::table, and edm::Timestamp::value().

194  {
195 
197  ostringstream oss;
198  const unsigned int n(hlt_.size());
199  oss << "PrescaleTable: # of labels = " << n << endl;
200  const vector<string>& labels(hlt_.labels());
201  for (unsigned int i=0; i!=n; ++i) {
202  oss << " " << i << "/'" << labels.at(i) << "'";
203  }
204  oss << endl;
205  const map<string,vector<unsigned int> >& table(hlt_.table());
206  oss << "PrescaleTable: # of paths = " << table.size() << endl;
207  const map<string,vector<unsigned int> >::const_iterator tb(table.begin());
208  const map<string,vector<unsigned int> >::const_iterator te(table.end());
209  for (map<string,vector<unsigned int> >::const_iterator ti=tb; ti!=te; ++ti) {
210  for (unsigned int i=0; i!=n; ++i) {
211  oss << " " << ti->second.at(i);
212  }
213  oss << " " << ti->first << endl;
214  }
215  LogVerbatim("HLTPrescaleRecorder") << oss.str();
216 
217  if (run_) {
219  auto_ptr<HLTPrescaleTable> product (new HLTPrescaleTable(hlt_));
220  iRun.put(product,"Run");
221  }
222 
223  if (condDB_) {
225  if (db_!=0) {
227  const string rcdName("HLTPrescaleTableRcd");
228  if ( db_->isNewTagRequest(rcdName) ) {
230  db_->beginOfTime(),db_->endOfTime(),rcdName);
231  } else {
232  ::timeval tv;
233  gettimeofday(&tv,0);
234  edm::Timestamp tstamp((unsigned long long)tv.tv_sec);
236 // db_->currentTime()
237  tstamp.value()
238  ,rcdName);
239  }
240  } else {
241  LogError("HLTPrescaleRecorder") << "PoolDBOutputService not available!";
242  }
243  }
244 
245  return;
246 }
list table
Definition: asciidump.py:386
int i
Definition: DBlmapReader.cc:9
The single EDProduct containing the HLT Prescale Table.
const std::map< std::string, std::vector< unsigned int > > & table() const
dictionary map
Definition: Association.py:160
void appendSinceTime(T *payloadObj, cond::Time_t sinceTime, const std::string &recordName, bool withlogging=false)
bool isNewTagRequest(const std::string &recordName)
const std::vector< std::string > & labels() const
cond::service::PoolDBOutputService * db_
Pool DB service.
trigger::HLTPrescaleTable hlt_
payload HLT object
void createNewIOV(T *firstPayloadObj, cond::Time_t firstSinceTime, cond::Time_t firstTillTime, const std::string &recordName, bool withlogging=false)
tuple labels
Definition: L1TDQM_cfg.py:62
bool run_
(Multiple) Destinations
void put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Run.h:79
unsigned int size() const
consistency condition: all vectors must have the same length
void HLTPrescaleRecorder::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

From Event Block

Writing to Event

Implements edm::EDProducer.

Definition at line 162 of file HLTPrescaleRecorder.cc.

References event_, edm::Event::getByLabel(), hlt_, hltHandle_, hltInputTag_, edm::Event::put(), and src_.

162  {
163 
164  if (src_==3) {
166  if (iEvent.getByLabel(hltInputTag_,hltHandle_)) {
167  hlt_=*hltHandle_;
168  } else {
170  LogError("HLTPrescaleRecorder")<<"HLTPrescaleTable not found in Event!";
171  }
172  }
173 
174  if (event_) {
176  auto_ptr<HLTPrescaleTable> product (new HLTPrescaleTable(hlt_));
177  iEvent.put(product,"Event");
178  }
179 
180  return;
181 }
The single EDProduct containing the HLT Prescale Table.
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:84
trigger::HLTPrescaleTable hlt_
payload HLT object
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
edm::Handle< trigger::HLTPrescaleTable > hltHandle_
Handle and ESHandle for existing HLT object.
edm::InputTag hltInputTag_
InputTag of HLTPrescaleTable product (src=1,2,3)

Member Data Documentation

bool HLTPrescaleRecorder::condDB_
private

Definition at line 62 of file HLTPrescaleRecorder.h.

Referenced by endRun(), and HLTPrescaleRecorder().

cond::service::PoolDBOutputService* HLTPrescaleRecorder::db_
private

Pool DB service.

Definition at line 75 of file HLTPrescaleRecorder.h.

Referenced by endRun(), and HLTPrescaleRecorder().

bool HLTPrescaleRecorder::event_
private

Definition at line 61 of file HLTPrescaleRecorder.h.

Referenced by HLTPrescaleRecorder(), and produce().

trigger::HLTPrescaleTable HLTPrescaleRecorder::hlt_
private

payload HLT object

Definition at line 82 of file HLTPrescaleRecorder.h.

Referenced by beginLuminosityBlock(), beginRun(), endLuminosityBlock(), endRun(), and produce().

std::string HLTPrescaleRecorder::hltDBTag_
private

Tag of DB entry (HLT Key Name) (src=4)

Definition at line 70 of file HLTPrescaleRecorder.h.

Referenced by beginRun(), and HLTPrescaleRecorder().

edm::ESHandle<trigger::HLTPrescaleTableCond> HLTPrescaleRecorder::hltESHandle_
private

Definition at line 79 of file HLTPrescaleRecorder.h.

Referenced by beginRun().

edm::Handle<trigger::HLTPrescaleTable> HLTPrescaleRecorder::hltHandle_
private

Handle and ESHandle for existing HLT object.

Definition at line 78 of file HLTPrescaleRecorder.h.

Referenced by beginLuminosityBlock(), beginRun(), and produce().

edm::InputTag HLTPrescaleRecorder::hltInputTag_
private

InputTag of HLTPrescaleTable product (src=1,2,3)

Definition at line 68 of file HLTPrescaleRecorder.h.

Referenced by beginLuminosityBlock(), beginRun(), HLTPrescaleRecorder(), and produce().

bool HLTPrescaleRecorder::lumi_
private

Definition at line 60 of file HLTPrescaleRecorder.h.

Referenced by endLuminosityBlock(), and HLTPrescaleRecorder().

edm::service::PrescaleService* HLTPrescaleRecorder::ps_
private

Prescale service.

Definition at line 73 of file HLTPrescaleRecorder.h.

Referenced by beginLuminosityBlock(), beginRun(), and HLTPrescaleRecorder().

std::string HLTPrescaleRecorder::psetName_
private

Source configs name of PrescaleServicePSet (src=-1)

Definition at line 66 of file HLTPrescaleRecorder.h.

Referenced by beginRun(), and HLTPrescaleRecorder().

bool HLTPrescaleRecorder::run_
private

(Multiple) Destinations

Definition at line 59 of file HLTPrescaleRecorder.h.

Referenced by endRun(), and HLTPrescaleRecorder().

int HLTPrescaleRecorder::src_
private

(Single) source: -1:PrescaleServicePSet 0:PrescaleService, 1:Run, 2:Lumi, 3:Event, 4:CondDB

Definition at line 56 of file HLTPrescaleRecorder.h.

Referenced by beginLuminosityBlock(), beginRun(), HLTPrescaleRecorder(), and produce().