CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
L1AnalysisEvent.cc
Go to the documentation of this file.
2 
5 
6 #include <string>
7 #include <iostream>
8 #include <sys/stat.h>
9 
11  std::string puMCHist,
12  std::string puDataFile,
13  std::string puDataHist,
14  bool useAvgVtx,
15  double maxWeight,
16  edm::ConsumesCollector&& iConsumes)
17  : fillHLT_(true), doPUWeights_(false), useAvgVtx_(useAvgVtx), maxAllowedWeight_(maxWeight), lumiWeights_() {
18  pileupSummaryInfoToken_ = iConsumes.consumes<std::vector<PileupSummaryInfo>>(edm::InputTag("addPileupInfo"));
19  // check PU files exists, and reweight if they do
20  struct stat buf;
21  if ((stat(puMCFile.c_str(), &buf) != -1) && (stat(puDataFile.c_str(), &buf) != -1)) {
22  lumiWeights_ = edm::LumiReWeighting(puMCFile, puDataFile, puMCHist, puDataHist);
23  doPUWeights_ = true;
24  } else {
25  edm::LogWarning("L1Prompt") << "No PU reweighting inputs - not going to calculate weights" << std::endl;
26  }
27 }
28 
30 
32  event_.run = e.id().run();
33  event_.event = e.id().event();
34  event_.time = e.time().value();
35  event_.bx = e.bunchCrossing(); //overwritten by EVM info until fixed by fw
36  event_.lumi = e.luminosityBlock();
37  event_.orbit = e.orbitNumber(); //overwritten by EVM info until fixed by fw
38 
39  if (!hlt_.isUninitialized()) {
41  e.getByToken(hlt_, hltresults);
42  const edm::TriggerNames& TrigNames_ = e.triggerNames(*hltresults);
43  const int ntrigs = hltresults->size();
44 
45  for (int itr = 0; itr < ntrigs; itr++) {
46  TString trigName = TrigNames_.triggerName(itr);
47  if (!hltresults->accept(itr))
48  continue;
49  event_.hlt.push_back(trigName);
50  }
51  }
52 
53  // do PU re-weighting for MC only
54  double weight = 1.;
55 
56  if (doPUWeights_ && (!e.eventAuxiliary().isRealData())) {
58  e.getByLabel(edm::InputTag("addPileupInfo"), puInfo);
59 
60  if (puInfo.isValid()) {
61  std::vector<PileupSummaryInfo>::const_iterator pvi;
62 
63  float npv = -1;
64  for (pvi = puInfo->begin(); pvi != puInfo->end(); ++pvi) {
65  int bx = pvi->getBunchCrossing();
66 
67  if (bx == 0) {
68  npv = useAvgVtx_ ? pvi->getTrueNumInteractions() : pvi->getPU_NumInteractions();
69  continue;
70  }
71  }
72 
73  weight = lumiWeights_.weight(npv);
74  if (maxAllowedWeight_ > 0. && weight > maxAllowedWeight_)
75  weight = maxAllowedWeight_;
76  }
77  }
78 
79  if (!e.eventAuxiliary().isRealData()) {
81  e.getByToken(pileupSummaryInfoToken_, puInfo);
82  if (puInfo.isValid()) {
83  for (std::vector<PileupSummaryInfo>::const_iterator pvi = puInfo->begin(); pvi != puInfo->end(); pvi++) {
84  int bx = pvi->getBunchCrossing();
85  if (bx == 0) {
86  event_.nPV = pvi->getPU_NumInteractions();
87  event_.nPV_True = pvi->getTrueNumInteractions();
88  }
89  }
90  }
91  }
92 
93  event_.puWeight = weight;
94 }
RunNumber_t run() const
Definition: EventID.h:38
edm::EDGetTokenT< std::vector< PileupSummaryInfo > > pileupSummaryInfoToken_
EventNumber_t event() const
Definition: EventID.h:40
bool isRealData() const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
L1AnalysisEvent(std::string puMCFile, std::string puMCHist, std::string puDataFile, std::string puDataHist, bool useAvgVtx, double maxWeight, edm::ConsumesCollector &&)
constexpr bool isUninitialized() const noexcept
Definition: EDGetToken.h:99
int bunchCrossing() const
Definition: EventBase.h:64
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:61
EventAuxiliary const & eventAuxiliary() const override
Definition: Event.h:95
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:275
int orbitNumber() const
Definition: EventBase.h:65
bool isValid() const
Definition: HandleBase.h:70
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:500
void Set(const edm::Event &e, const edm::EDGetTokenT< edm::TriggerResults > &hlt_)
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:50
edm::EventID id() const
Definition: EventBase.h:59
void event_()
edm::LumiReWeighting lumiWeights_
Log< level::Warning, false > LogWarning
int weight
Definition: histoStyle.py:51
TimeValue_t value() const
Definition: Timestamp.h:45
edm::Timestamp time() const
Definition: EventBase.h:60