31 |
|
printFullEventId_(ev->isRealData()), |
32 |
|
ignoreExceptions_(false), |
33 |
|
exprSep_(":"), |
34 |
+ |
maxEntries_(-1), |
35 |
|
maxLinesToPrint_(50) |
36 |
|
{ |
37 |
|
objType = helper::Parser::elementType(Reflex::Type::ByTypeInfo(HandleT::TempWrapT::typeInfo())); |
110 |
|
scanner.setCut(cut); |
111 |
|
|
112 |
|
size_t npass = 0; |
113 |
< |
for (event_->toBegin(); !event_->atEnd(); ++(*event_)) { |
113 |
> |
int iev = 0; |
114 |
> |
for (event_->toBegin(); !event_->atEnd(); ++(*event_), ++iev) { |
115 |
> |
if (maxEntries_ > -1 && iev > maxEntries_) break; |
116 |
|
if (!selectEvent(*event_)) continue; |
117 |
|
handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str()); |
118 |
|
const std::vector<T> & vals = *handle_; |
148 |
|
} |
149 |
|
|
150 |
|
// fill histogram |
151 |
< |
for (event_->toBegin(); !event_->atEnd(); ++(*event_)) { |
151 |
> |
int iev = 0; |
152 |
> |
for (event_->toBegin(); !event_->atEnd(); ++(*event_), ++iev) { |
153 |
> |
if (maxEntries_ > -1 && iev > maxEntries_) break; |
154 |
|
if (!selectEvent(*event_)) continue; |
155 |
|
handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str()); |
156 |
|
const std::vector<T> & vals = *handle_; |
186 |
|
} |
187 |
|
|
188 |
|
// fill histogram |
189 |
< |
for (event_->toBegin(); !event_->atEnd(); ++(*event_)) { |
189 |
> |
int iev = 0; |
190 |
> |
for (event_->toBegin(); !event_->atEnd(); ++(*event_), ++iev) { |
191 |
> |
if (maxEntries_ > -1 && iev > maxEntries_) break; |
192 |
|
if (!selectEvent(*event_)) continue; |
193 |
|
handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str()); |
194 |
|
const std::vector<T> & vals = *handle_; |
214 |
|
if (!scanner.addExpression((const char *)yexpr)) return 0; |
215 |
|
if (strlen(cut)) scanner.setCut(cut); |
216 |
|
|
217 |
+ |
int iev = 0; |
218 |
|
// make histo, if needed |
219 |
|
if (hist == 0) { |
220 |
|
// ok this is much more a hack than for the 1D case |
221 |
|
double xmin = 0, xmax = -1, ymin = 0, ymax = -1; |
222 |
< |
for (event_->toBegin(); !event_->atEnd(); ++(*event_)) { |
222 |
> |
for (event_->toBegin(), iev = 0; !event_->atEnd(); ++(*event_), ++iev) { |
223 |
> |
if (maxEntries_ > -1 && iev > maxEntries_) break; |
224 |
|
if (!selectEvent(*event_)) continue; |
225 |
|
handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str()); |
226 |
|
const std::vector<T> & vals = *handle_; |
242 |
|
} |
243 |
|
|
244 |
|
// fill histogram |
245 |
< |
for (event_->toBegin(); !event_->atEnd(); ++(*event_)) { |
245 |
> |
for (event_->toBegin(), iev = 0; !event_->atEnd(); ++(*event_), ++iev) { |
246 |
> |
if (maxEntries_ > -1 && iev > maxEntries_) break; |
247 |
|
if (!selectEvent(*event_)) continue; |
248 |
|
handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str()); |
249 |
|
const std::vector<T> & vals = *handle_; |
283 |
|
} |
284 |
|
|
285 |
|
// fill graph |
286 |
< |
for (event_->toBegin(); !event_->atEnd(); ++(*event_)) { |
286 |
> |
int iev = 0; |
287 |
> |
for (event_->toBegin(); !event_->atEnd(); ++(*event_), ++iev) { |
288 |
> |
if (maxEntries_ > -1 && iev > maxEntries_) break; |
289 |
|
if (!selectEvent(*event_)) continue; |
290 |
|
handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str()); |
291 |
|
const std::vector<T> & vals = *handle_; |
314 |
|
} |
315 |
|
return true; |
316 |
|
} |
317 |
+ |
|
318 |
+ |
void setMaxEntries(int max) { maxEntries_ = max; } |
319 |
|
private: |
320 |
|
fwlite::EventBase *event_; |
321 |
|
std::string label_, instance_, process_; |
327 |
|
|
328 |
|
TObjArray eventSelectors_; |
329 |
|
|
330 |
+ |
int maxEntries_; |
331 |
+ |
|
332 |
|
int maxLinesToPrint_; |
333 |
|
bool wantMore() const { |
334 |
|
// ask if user wants more |