CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
edm::EventSkipperByID Class Reference

#include <EventSkipperByID.h>

Public Member Functions

 EventSkipperByID (ParameterSet const &pset)
 
bool skipIt (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
 
bool skippingEvents () const
 
bool skippingLumis () const
 
bool somethingToSkip () const
 
 ~EventSkipperByID ()
 

Static Public Member Functions

static std::unique_ptr< EventSkipperByIDcreate (ParameterSet const &pset)
 
static void fillDescription (ParameterSetDescription &desc)
 

Private Attributes

EventNumber_t firstEvent_
 
LuminosityBlockNumber_t firstLumi_
 
RunNumber_t firstRun_
 
bool skippingEvents_
 
bool skippingLumis_
 
bool somethingToSkip_
 
std::vector< EventRangewhichEventsToProcess_
 
std::vector< EventRangewhichEventsToSkip_
 
std::vector< LuminosityBlockRangewhichLumisToProcess_
 
std::vector< LuminosityBlockRangewhichLumisToSkip_
 

Detailed Description

Definition at line 17 of file EventSkipperByID.h.

Constructor & Destructor Documentation

edm::EventSkipperByID::EventSkipperByID ( ParameterSet const &  pset)
explicit

Definition at line 7 of file EventSkipperByID.cc.

References edm::sortAndRemoveOverlaps(), whichEventsToProcess_, whichEventsToSkip_, whichLumisToProcess_, and whichLumisToSkip_.

7  :
8  // The default value provided as the second argument to the getUntrackedParameter function call
9  // is not used when the ParameterSet has been validated and the parameters are not optional
10  // in the description. As soon as all primary input sources and all modules with a secondary
11  // input sources have defined descriptions, the defaults in the getUntrackedParameterSet function
12  // calls can and should be deleted from the code.
13  firstRun_(pset.getUntrackedParameter<unsigned int>("firstRun", 1U)),
14  firstLumi_(pset.getUntrackedParameter<unsigned int>("firstLuminosityBlock", 0U)),
15  firstEvent_(pset.existsAs<unsigned int>("firstEvent", false) ? pset.getUntrackedParameter<unsigned int>("firstEvent") :
16  pset.getUntrackedParameter<unsigned long long>("firstEvent", 1U)),
17  whichLumisToSkip_(pset.getUntrackedParameter<std::vector<LuminosityBlockRange> >("lumisToSkip", std::vector<LuminosityBlockRange>())),
18  whichLumisToProcess_(pset.getUntrackedParameter<std::vector<LuminosityBlockRange> >("lumisToProcess", std::vector<LuminosityBlockRange>())),
19  whichEventsToSkip_(pset.getUntrackedParameter<std::vector<EventRange> >("eventsToSkip",std::vector<EventRange>())),
20  whichEventsToProcess_(pset.getUntrackedParameter<std::vector<EventRange> >("eventsToProcess",std::vector<EventRange>())),
24 
29  }
LuminosityBlockNumber_t firstLumi_
std::vector< LuminosityBlockRange > whichLumisToSkip_
std::vector< EventRange > whichEventsToProcess_
std::vector< LuminosityBlockRange > whichLumisToProcess_
std::vector< EventRange > whichEventsToSkip_
EventNumber_t firstEvent_
std::vector< EventRange > & sortAndRemoveOverlaps(std::vector< EventRange > &eventRange)
Definition: EventRange.cc:102
edm::EventSkipperByID::~EventSkipperByID ( )

Definition at line 31 of file EventSkipperByID.cc.

31 {}

Member Function Documentation

std::unique_ptr< EventSkipperByID > edm::EventSkipperByID::create ( ParameterSet const &  pset)
static

Definition at line 34 of file EventSkipperByID.cc.

References muonDTDigis_cfi::pset.

Referenced by somethingToSkip().

34  {
35  auto evSkp = std::make_unique<EventSkipperByID>(pset);
36  if (!evSkp->somethingToSkip()) {
37  evSkp.reset();
38  }
39  return evSkp;
40  }
void edm::EventSkipperByID::fillDescription ( ParameterSetDescription desc)
static

Definition at line 112 of file EventSkipperByID.cc.

References edm::ParameterSetDescription::addNode(), edm::ParameterSetDescription::addUntracked(), edm::ParameterDescriptionNode::setComment(), and mitigatedMETSequence_cff::U.

Referenced by edm::RootPrimaryFileSequence::fillDescription(), edm::StreamerFileReader::fillDescriptions(), dqmservices::DQMStreamerReader::fillDescriptions(), and somethingToSkip().

112  {
113 
114  desc.addUntracked<unsigned int>("firstRun", 1U)
115  ->setComment("Skip any run with run number < 'firstRun'.");
116  desc.addUntracked<unsigned int>("firstLuminosityBlock", 0U)
117  ->setComment("Skip any lumi in run 'firstRun' with lumi number < 'firstLuminosityBlock'.");
118 
119  desc.addNode( edm::ParameterDescription<unsigned int>("firstEvent", 1U, false) xor
120  edm::ParameterDescription<unsigned long long>("firstEvent", 1ULL, false))
121  ->setComment("'firstEvent' is an XOR group because it can have type uint32 or uint64, default:1\n"
122  "If 'firstLuminosityBlock' == 0, skip any event in run 'firstRun' with event number < 'firstEvent'.\n"
123  "If 'firstLuminosityBlock' != 0, skip any event in lumi 'firstRun:firstLuminosityBlock' with event number < 'firstEvent'.");
124 
125  std::vector<LuminosityBlockRange> defaultLumis;
126  desc.addUntracked<std::vector<LuminosityBlockRange> >("lumisToSkip", defaultLumis)
127  ->setComment("Skip any lumi inside the specified run:lumi range. In python do 'help(cms.LuminosityBlockRange)' for documentation.");
128  desc.addUntracked<std::vector<LuminosityBlockRange> >("lumisToProcess", defaultLumis)
129  ->setComment("If not empty, skip any lumi outside the specified run:lumi range. In python do 'help(cms.LuminosityBlockRange)' for documentation.");
130 
131  std::vector<EventRange> defaultEvents;
132  desc.addUntracked<std::vector<EventRange> >("eventsToSkip", defaultEvents)
133  ->setComment("Skip any event inside the specified run:event or run:lumi:event range. In python do 'help(cms.EventRange)' for documentation.");
134  desc.addUntracked<std::vector<EventRange> >("eventsToProcess", defaultEvents)
135  ->setComment("If not empty, skip any event outside the specified run:event or run:lumi:event range. In python do 'help(cms.EventRange)' for documentation.");
136  }
bool edm::EventSkipperByID::skipIt ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi,
EventNumber_t  event 
) const

Definition at line 46 of file EventSkipperByID.cc.

References edm::binary_search_all(), electrons_cff::bool, firstEvent_, firstLumi_, firstRun_, edm::lessThan(), edm::lessThanSpecial(), skippingEvents(), skippingLumis(), mitigatedMETSequence_cff::U, whichEventsToProcess_, whichEventsToSkip_, whichLumisToProcess_, and whichLumisToSkip_.

46  {
47 
48  if(run == 0U) run = 1U; // Correct zero run number
49  if(run < firstRun_) {
50  // Skip all entries before the first run.
51  return true;
52  }
53  if(lumi == 0U) {
54  // This is a run entry that is not before the first run.
55  // Keep it, since there are no other parameters to skip runs.
56  return false;
57  }
58  // If we get here, this is a lumi or event entry.
59  if(run == firstRun_) {
60  // This lumi or event entry is in the first run to be processed.
61  if(lumi < firstLumi_) {
62  // This lumi or event entry is for a lumi prior to the first lumi to be processed. Skip it.
63  return true;
64  }
65  if(firstLumi_ == 0 || lumi == firstLumi_) {
66  // If we get here, this entry is in the first lumi to be processed in the first run.
67  // Note that if firstLumi_ == 0, we are processing all lumis in the run.
68  if(event != 0U && event < firstEvent_) {
69  // This is an event entry prior to the first event to be processed. Skip it.
70  return true;
71  }
72  }
73  }
74  if (skippingLumis()) {
75  // If we get here, the entry was not skipped due to firstRun, firstLuminosityBlock, and/or firstEvent.
76  LuminosityBlockID lumiID = LuminosityBlockID(run, lumi);
77  LuminosityBlockRange lumiRange = LuminosityBlockRange(lumiID, lumiID);
79  if(binary_search_all(whichLumisToSkip_, lumiRange, lt)) {
80  // The entry is in a lumi specified in whichLumisToSkip. Skip it.
81  return true;
82  }
83  if(!whichLumisToProcess_.empty() && !binary_search_all(whichLumisToProcess_, lumiRange, lt)) {
84  // The entry is not in a lumi specified in non-empty whichLumisToProcess. Skip it.
85  return true;
86  }
87  }
88  if(event == 0U) {
89  // The entry is a lumi entry that was not skipped above. Keep it.
90  return false;
91  }
92  if (skippingEvents()) {
93  // If we get here, the entry was not skipped due to firstRun, firstLuminosityBlock, and/or firstEvent.
94  EventID eventID = EventID(run, lumi, event);
95  EventRange eventRange = EventRange(eventID, eventID);
96  EventID eventIDNoLumi = EventID(run, 0U, event);
97  EventRange eventRangeNoLumi = EventRange(eventIDNoLumi, eventIDNoLumi);
98  bool(*lt)(EventRange const&, EventRange const&) = &lessThanSpecial;
99  if(binary_search_all(whichEventsToSkip_, eventRange, lt) || binary_search_all(whichEventsToSkip_, eventRangeNoLumi, lt)) {
100  // The entry is an event specified in whichEventsToSkip. Skip it.
101  return true;
102  }
103  if(!whichEventsToProcess_.empty() && !binary_search_all(whichEventsToProcess_, eventRange, lt) && !binary_search_all(whichEventsToProcess_, eventRangeNoLumi, lt)) {
104  // The entry is not an event specified in non-empty whichEventsToProcess. Skip it.
105  return true;
106  }
107  }
108  return false;
109  }
bool skippingLumis() const
LuminosityBlockNumber_t firstLumi_
bool skippingEvents() const
std::vector< LuminosityBlockRange > whichLumisToSkip_
std::vector< EventRange > whichEventsToProcess_
bool lessThanSpecial(EventRange const &lh, EventRange const &rh)
Definition: EventRange.cc:59
std::vector< LuminosityBlockRange > whichLumisToProcess_
std::vector< EventRange > whichEventsToSkip_
EventNumber_t firstEvent_
bool binary_search_all(ForwardSequence const &s, Datum const &d)
wrappers for std::binary_search
Definition: Algorithms.h:76
bool lessThan(EventRange const &lh, EventRange const &rh)
Definition: EventRange.cc:67
Definition: event.py:1
bool edm::EventSkipperByID::skippingEvents ( ) const
inline

Definition at line 23 of file EventSkipperByID.h.

References skippingEvents_.

Referenced by skipIt().

bool edm::EventSkipperByID::skippingLumis ( ) const
inline

Definition at line 22 of file EventSkipperByID.h.

References skippingLumis_.

Referenced by skipIt().

bool edm::EventSkipperByID::somethingToSkip ( ) const
inline

Definition at line 24 of file EventSkipperByID.h.

References create(), fillDescription(), and somethingToSkip_.

Member Data Documentation

EventNumber_t edm::EventSkipperByID::firstEvent_
private

Definition at line 33 of file EventSkipperByID.h.

Referenced by skipIt().

LuminosityBlockNumber_t edm::EventSkipperByID::firstLumi_
private

Definition at line 32 of file EventSkipperByID.h.

Referenced by skipIt().

RunNumber_t edm::EventSkipperByID::firstRun_
private

Definition at line 31 of file EventSkipperByID.h.

Referenced by skipIt().

bool edm::EventSkipperByID::skippingEvents_
private

Definition at line 39 of file EventSkipperByID.h.

Referenced by skippingEvents().

bool edm::EventSkipperByID::skippingLumis_
private

Definition at line 38 of file EventSkipperByID.h.

Referenced by skippingLumis().

bool edm::EventSkipperByID::somethingToSkip_
private

Definition at line 40 of file EventSkipperByID.h.

Referenced by somethingToSkip().

std::vector<EventRange> edm::EventSkipperByID::whichEventsToProcess_
private

Definition at line 37 of file EventSkipperByID.h.

Referenced by EventSkipperByID(), and skipIt().

std::vector<EventRange> edm::EventSkipperByID::whichEventsToSkip_
private

Definition at line 36 of file EventSkipperByID.h.

Referenced by EventSkipperByID(), and skipIt().

std::vector<LuminosityBlockRange> edm::EventSkipperByID::whichLumisToProcess_
private

Definition at line 35 of file EventSkipperByID.h.

Referenced by EventSkipperByID(), and skipIt().

std::vector<LuminosityBlockRange> edm::EventSkipperByID::whichLumisToSkip_
private

Definition at line 34 of file EventSkipperByID.h.

Referenced by EventSkipperByID(), and skipIt().