ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/GPetrucc/interface/fwlite/Scanner.h
(Generate patch)

Comparing UserCode/GPetrucc/interface/fwlite/Scanner.h (file contents):
Revision 1.8 by gpetrucc, Thu Feb 11 10:12:09 2010 UTC vs.
Revision 1.10 by gpetrucc, Wed Feb 24 11:50:12 2010 UTC

# Line 31 | Line 31 | namespace fwlite {
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()));
38 <                eventSelectors_.SetOwner();
38 >                //eventSelectors_.SetOwner(); // better a few leaks for lazy users than a few crashes for unweary ones
39              }
40  
41              
# Line 109 | Line 110 | namespace fwlite {
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_;
# Line 145 | Line 148 | namespace fwlite {
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_;
# Line 167 | Line 172 | namespace fwlite {
172                  // prep the machinery
173                  helper::ScannerBase scanner(objType);
174                  scanner.setIgnoreExceptions(ignoreExceptions_);
175 <                if (!scanner.addExpression(xexpr)) return 0;
176 <                if (!scanner.addExpression(yexpr)) return 0;
175 >                if (!scanner.addExpression(xexpr.Data())) return 0;
176 >                if (!scanner.addExpression(yexpr.Data())) return 0;
177                  if (strlen(cut)) scanner.setCut(cut);
178  
179                  // make histo, if needed
# Line 181 | Line 186 | namespace fwlite {
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_;
# Line 207 | Line 214 | namespace fwlite {
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_;
# Line 233 | Line 242 | namespace fwlite {
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_;
# Line 273 | Line 283 | namespace fwlite {
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_;
# Line 302 | Line 314 | namespace fwlite {
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_;
# Line 313 | Line 327 | namespace fwlite {
327  
328              TObjArray eventSelectors_;
329  
330 +            int maxEntries_;
331 +
332              int maxLinesToPrint_;
333              bool wantMore() const {
334                  // ask if user wants more

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines