CMS 3D CMS Logo

NavigateEventsLooper.cc
Go to the documentation of this file.
1 
24 
25 #include <iostream>
26 
27 namespace edm {
28 
30  public:
32  NavigateEventsLooper(NavigateEventsLooper const&) = delete; // stop default
33  NavigateEventsLooper const& operator=(NavigateEventsLooper const&) = delete; // stop default
34  ~NavigateEventsLooper() override;
35 
36  void startingNewLoop(unsigned int iIteration) override;
37  Status duringLoop(Event const& ev, EventSetup const& es, ProcessingController& pc) override;
38  Status endOfLoop(EventSetup const& es, unsigned int iCounter) override;
39 
40  private:
41  int maxLoops_;
45  };
46 
48  : maxLoops_(pset.getUntrackedParameter<int>("maxLoops", -1)),
49  countLoops_(0),
50  shouldStopLoop_(false),
51  shouldStopProcess_(false) {}
52 
54 
55  void NavigateEventsLooper::startingNewLoop(unsigned int /*iIteration*/) {}
56 
58  if (!pc.lastOperationSucceeded()) {
59  std::cout << "Event could not be found. Nothing done. Try again.\n";
60  }
61 
62  std::cout << "\nWhat should we do next?\n";
63 
65  std::cout << "(0) process the next event\n";
67  std::cout << "(0) process the next event if it exists (at last event in the open file. there are more files)\n";
69  std::cout << "(0) will stop the loop because this is the last event\n";
71  std::cout << "(0) process the next event (if it exists)\n";
72  }
73 
74  if (pc.canRandomAccess()) {
76  std::cout << "(1) process the previous event\n";
78  std::cout << "(1) process the previous event if there are any (at first event in the open file. there are "
79  "previous files)\n";
81  std::cout << "(1) will stop the loop because this is the first event\n";
82  }
83 
84  std::cout << "(2) process a specific event\n";
85  }
86 
87  std::cout << "(3) stop loop\n";
88  std::cout << "(4) stop process" << std::endl;
89  long long int x;
90 
91  bool inputFailed = false;
92  do {
93  inputFailed = false;
94  if (!(std::cin >> x) || x < 0 || x > 4) {
95  inputFailed = true;
96  std::cin.clear();
97  std::cin.ignore(10000, '\n');
98  std::cout << "Please enter numeric characters only. The value must be in the range 0 to 4 (inclusive). Please "
99  "try again."
100  << std::endl;
101  }
102  if (!pc.canRandomAccess() && (x == 1 || x == 2)) {
103  inputFailed = true;
104  std::cout << "The source cannot do random access. 1 and 2 are illegal values. Please try again." << std::endl;
105  }
106  } while (inputFailed);
107 
108  shouldStopLoop_ = false;
109  shouldStopProcess_ = false;
110  if (x == 0) {
112  } else if (x == 1) {
114  } else if (x == 2) {
115  std::cout << "Which run?" << std::endl;
116  do {
117  inputFailed = false;
118  if (!(std::cin >> x)) {
119  inputFailed = true;
120  std::cin.clear();
121  std::cin.ignore(10000, '\n');
122  std::cout << "Please enter numeric characters only. Please try again." << std::endl;
123  }
124  } while (inputFailed);
125  RunNumber_t run = x;
126  std::cout << "Which luminosity block?" << std::endl;
127  do {
128  inputFailed = false;
129  if (!(std::cin >> x)) {
130  inputFailed = true;
131  std::cin.clear();
132  std::cin.ignore(10000, '\n');
133  std::cout << "Please enter numeric characters only. Please try again." << std::endl;
134  }
135  } while (inputFailed);
137  std::cout << "Which event?" << std::endl;
138  do {
139  inputFailed = false;
140  if (!(std::cin >> x)) {
141  inputFailed = true;
142  std::cin.clear();
143  std::cin.ignore(10000, '\n');
144  std::cout << "Please enter numeric characters only. Please try again." << std::endl;
145  }
146  } while (inputFailed);
147  EventNumber_t ev = x;
149  } else if (x == 3) {
151  shouldStopLoop_ = true;
152  } else if (x == 4) {
154  shouldStopLoop_ = true;
155  shouldStopProcess_ = true;
156  }
157  return shouldStopLoop_ ? kStop : kContinue;
158  }
159 
161  std::cout << "Ending loop" << std::endl;
162  if (shouldStopProcess_)
163  return kStop;
164  ++countLoops_;
165  return (maxLoops_ < 0 || countLoops_ < maxLoops_) ? kContinue : kStop;
166  }
167 } // namespace edm
168 
edm::RunNumber_t
unsigned int RunNumber_t
Definition: RunLumiEventNumber.h:14
edm::EDLooperBase::Status
Status
Definition: EDLooperBase.h:82
edm::ProcessingController::lastOperationSucceeded
bool lastOperationSucceeded() const
Definition: ProcessingController.cc:86
edm::NavigateEventsLooper::~NavigateEventsLooper
~NavigateEventsLooper() override
Definition: NavigateEventsLooper.cc:53
edm::ProcessingController::kAtLastEvent
Definition: ProcessingController.h:34
funct::false
false
Definition: Factorize.h:29
edm
HLT enums.
Definition: AlignableModifier.h:19
gather_cfg.cout
cout
Definition: gather_cfg.py:144
edm::ProcessingController::forwardState
ForwardState forwardState() const
Returns the present state of processing.
Definition: ProcessingController.cc:76
edm::NavigateEventsLooper::NavigateEventsLooper
NavigateEventsLooper(ParameterSet const &pset)
Definition: NavigateEventsLooper.cc:47
edm::LuminosityBlockNumber_t
unsigned int LuminosityBlockNumber_t
Definition: RunLumiEventNumber.h:13
DEFINE_FWK_LOOPER
#define DEFINE_FWK_LOOPER(type)
Definition: LooperFactory.h:108
edm::ProcessingController
Definition: ProcessingController.h:29
edm::EDLooperBase::kStop
Definition: EDLooperBase.h:82
edm::ProcessingController::kNextFileExists
Definition: ProcessingController.h:33
edm::ProcessingController::kAtFirstEvent
Definition: ProcessingController.h:41
edm::EventNumber_t
unsigned long long EventNumber_t
Definition: RunLumiEventNumber.h:12
edm::NavigateEventsLooper::shouldStopLoop_
bool shouldStopLoop_
Definition: NavigateEventsLooper.cc:43
edm::NavigateEventsLooper::endOfLoop
Status endOfLoop(EventSetup const &es, unsigned int iCounter) override
Definition: NavigateEventsLooper.cc:160
edm::ProcessingController::kEventsAheadInFile
Definition: ProcessingController.h:32
edm::ProcessingController::reverseState
ReverseState reverseState() const
Definition: ProcessingController.cc:78
LooperFactory.h
ProcessingController.h
edm::ProcessingController::setTransitionToPreviousEvent
void setTransitionToPreviousEvent()
Definition: ProcessingController.cc:64
edm::ParameterSet
Definition: ParameterSet.h:47
EDLooperBase.h
edm::NavigateEventsLooper::maxLoops_
int maxLoops_
Definition: NavigateEventsLooper.cc:41
edm::ProcessingController::setTransitionToNextEvent
void setTransitionToNextEvent()
Definition: ProcessingController.cc:62
createfilelist.int
int
Definition: createfilelist.py:10
edm::EventSetup
Definition: EventSetup.h:58
edm::EDLooperBase::kContinue
Definition: EDLooperBase.h:82
edm::NavigateEventsLooper::duringLoop
Status duringLoop(Event const &ev, EventSetup const &es, ProcessingController &pc) override
Definition: NavigateEventsLooper.cc:57
edm::NavigateEventsLooper::shouldStopProcess_
bool shouldStopProcess_
Definition: NavigateEventsLooper.cc:44
edm::ProcessingController::kEventsBackwardsInFile
Definition: ProcessingController.h:39
writedatasetfile.run
run
Definition: writedatasetfile.py:27
edm::NavigateEventsLooper
Definition: NavigateEventsLooper.cc:29
ev
bool ev
Definition: Hydjet2Hadronizer.cc:97
edm::NavigateEventsLooper::operator=
NavigateEventsLooper const & operator=(NavigateEventsLooper const &)=delete
edm::ProcessingController::kUnknownForward
Definition: ProcessingController.h:35
edm::ProcessingController::kPreviousFileExists
Definition: ProcessingController.h:40
edm::ProcessingController::canRandomAccess
bool canRandomAccess() const
Returns 'true' if the job's source can randomly access.
Definition: ProcessingController.cc:80
edm::EDLooperBase
Definition: EDLooperBase.h:80
ParameterSet.h
edm::EventID
Definition: EventID.h:31
edm::Event
Definition: Event.h:73
edm::ProcessingController::setTransitionToEvent
void setTransitionToEvent(edm::EventID const &iID)
Definition: ProcessingController.cc:66
lumi
Definition: LumiSectionData.h:20
edm::NavigateEventsLooper::countLoops_
int countLoops_
Definition: NavigateEventsLooper.cc:42
edm::NavigateEventsLooper::startingNewLoop
void startingNewLoop(unsigned int iIteration) override
Definition: NavigateEventsLooper.cc:55
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27