CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros 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  fillHLT_(true),
17  doPUWeights_(false),
18  useAvgVtx_(useAvgVtx),
19  maxAllowedWeight_(maxWeight),
20  lumiWeights_()
21 {
22 
23  // check PU files exists, and reweight if they do
24  struct stat buf;
25  if ((stat(puMCFile.c_str(), &buf) != -1) && (stat(puDataFile.c_str(), &buf) != -1)) {
27  puDataFile,
28  puMCHist,
29  puDataHist);
30  doPUWeights_ = true;
31  }
32  else {
33  edm::LogWarning("L1Prompt") << "No PU reweighting inputs - not going to calculate weights"<<std::endl;
34  }
35 
36 
37 }
38 
40 {
41 
42 }
43 
45 {
46 
47  event_.run = e.id().run();
48  event_.event = e.id().event();
49  event_.time = e.time().value();
50  event_.bx = e.bunchCrossing(); //overwritten by EVM info until fixed by fw
51  event_.lumi = e.luminosityBlock();
52  event_.orbit = e.orbitNumber(); //overwritten by EVM info until fixed by fw
53 
54 
55  if (!hlt_.isUninitialized()){
57  e.getByToken(hlt_,hltresults);
58  const edm::TriggerNames TrigNames_ = e.triggerNames(*hltresults);
59  const int ntrigs = hltresults->size();
60 
61  for (int itr=0; itr<ntrigs; itr++){
62  TString trigName=TrigNames_.triggerName(itr);
63  if (!hltresults->accept(itr)) continue;
64  event_.hlt.push_back(trigName);
65  }
66  }
67 
68  // do PU re-weighting for MC only
69  double weight = 1.;
70 
71  if (doPUWeights_ && (! e.eventAuxiliary().isRealData())) {
72 
74  e.getByLabel(edm::InputTag("addPileupInfo"), puInfo);
75 
76  if (puInfo.isValid()) {
77  std::vector<PileupSummaryInfo>::const_iterator pvi;
78 
79  float npv = -1;
80  for(pvi = puInfo->begin(); pvi != puInfo->end(); ++pvi) {
81 
82  int bx = pvi->getBunchCrossing();
83 
84  if(bx == 0) {
85  npv = useAvgVtx_ ? pvi->getTrueNumInteractions() :
86  pvi->getPU_NumInteractions();
87  continue;
88  }
89 
90  }
91 
92  weight = lumiWeights_.weight( npv );
93  if (maxAllowedWeight_ > 0. && weight > maxAllowedWeight_)
94  weight = maxAllowedWeight_;
95 
96  }
97 
98  }
99 
100  event_.puWeight = weight;
101 
102 
103 
104 
105 }
106 
107 
108 
109 
RunNumber_t run() const
Definition: EventID.h:39
EventNumber_t event() const
Definition: EventID.h:41
bool isRealData() const
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:215
L1AnalysisEvent(std::string puMCFile, std::string puMCHist, std::string puDataFile, std::string puDataHist, bool useAvgVtx, double maxWeight)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
int bunchCrossing() const
Definition: EventBase.h:65
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:62
int orbitNumber() const
Definition: EventBase.h:66
bool isValid() const
Definition: HandleBase.h:75
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:418
void Set(const edm::Event &e, const edm::EDGetTokenT< edm::TriggerResults > &hlt_)
EventAuxiliary const & eventAuxiliary() const
Definition: Event.h:77
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:27
edm::EventID id() const
Definition: EventBase.h:59
void event_()
edm::LumiReWeighting lumiWeights_
bool isUninitialized() const
Definition: EDGetToken.h:73
volatile std::atomic< bool > shutdown_flag false
TimeValue_t value() const
Definition: Timestamp.h:56
edm::Timestamp time() const
Definition: EventBase.h:60