CMS 3D CMS Logo

ShallowEventDataProducer.cc
Go to the documentation of this file.
4 
6  produces <unsigned int> ( "run" );
7  produces <unsigned int> ( "event" );
8  produces <unsigned int> ( "bx" );
9  produces <unsigned int> ( "lumi" );
10  produces <float> ( "instLumi" );
11  produces <float> ( "PU" );
12  produces <std::vector<bool> > ( "TrigTech" );
13  produces <std::vector<bool> > ( "TrigPh" );
14 
15  trig_token_ = consumes<L1GlobalTriggerReadoutRecord>(iConfig.getParameter<edm::InputTag>("trigRecord"));
16  scalerToken_ = consumes< LumiScalersCollection >(iConfig.getParameter<edm::InputTag>("lumiScalers"));
17 
18 }
19 
22 
23 
24  auto run = std::make_unique<unsigned int>(iEvent.id().run() );
25  auto event = std::make_unique<unsigned int>(iEvent.id().event() );
26  auto bx = std::make_unique<unsigned int>(iEvent.bunchCrossing() );
27  auto lumi = std::make_unique<unsigned int>(iEvent.luminosityBlock() );
28 
30  iEvent.getByToken(trig_token_, gtRecord);
31 
32  std::vector<bool> TrigTech_(64,0);
33  std::vector<bool> TrigPh_(128,0);
34 
35  // Get dWord after masking disabled bits
36  DecisionWord dWord = gtRecord->decisionWord();
37  if ( ! dWord.empty() ) { // if board not there this is zero
38  // loop over dec. bit to get total rate (no overlap)
39  for ( int i = 0; i < 64; ++i ) {
40  TrigPh_[i]= dWord[i];
41  }
42  }
43 
44  TechnicalTriggerWord tw = gtRecord->technicalTriggerWord();
45  if ( ! tw.empty() ) {
46  // loop over dec. bit to get total rate (no overlap)
47  for ( int i = 0; i < 64; ++i ) {
48  TrigTech_[i]=tw[i];
49  }
50  }
51 
52  auto TrigTech = std::make_unique<std::vector<bool>>(TrigTech_);
53  auto TrigPh = std::make_unique<std::vector<bool>>(TrigPh_);
54 
55  // Luminosity informations
57  float instLumi_=0; float PU_=0;
58  iEvent.getByToken(scalerToken_, lumiScalers);
59  if (lumiScalers->begin() != lumiScalers->end()) {
60  instLumi_ = lumiScalers->begin()->instantLumi();
61  PU_ = lumiScalers->begin()->pileup();
62  }
63 
64  auto instLumi = std::make_unique<float>(instLumi_);
65  auto PU = std::make_unique<float>(PU_);
66 
67  iEvent.put(std::move(run), "run" );
68  iEvent.put(std::move(event), "event" );
69  iEvent.put(std::move(bx), "bx" );
70  iEvent.put(std::move(lumi), "lumi" );
71  iEvent.put(std::move(TrigTech), "TrigTech" );
72  iEvent.put(std::move(TrigPh), "TrigPh" );
73  iEvent.put(std::move(instLumi), "instLumi");
74  iEvent.put(std::move(PU), "PU");
75 }
RunNumber_t run() const
Definition: EventID.h:39
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:41
int i
Definition: DBlmapReader.cc:9
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:122
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
edm::EDGetTokenT< LumiScalersCollection > scalerToken_
int bunchCrossing() const
Definition: EventBase.h:64
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:61
int iEvent
Definition: GenABIO.cc:230
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > trig_token_
std::vector< bool > DecisionWord
typedefs
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
void produce(edm::Event &, const edm::EventSetup &)
edm::EventID id() const
Definition: EventBase.h:58
def move(src, dest)
Definition: eostools.py:510
Definition: event.py:1
ShallowEventDataProducer(const edm::ParameterSet &)