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.5 by gpetrucc, Sun Jan 31 19:44:41 2010 UTC vs.
Revision 1.6 by gpetrucc, Tue Feb 2 18:11:54 2010 UTC

# Line 10 | Line 10
10   #if !defined(__CINT__) && !defined(__MAKECINT__)
11   #include "UserCode/GPetrucc/interface/fwliteHelpers.h"
12   #else
13 + #ifndef UserCode_GPetrucc_CINT_load_library
14 + #define UserCode_GPetrucc_CINT_load_library
15   // load the library that contains the dictionaries
16   int _load_UserCodeGPetrucc = gSystem->Load("libUserCodeGPetrucc.so");
17   #endif
18 + #endif
19 +
20 + #include "UserCode/GPetrucc/interface/fwlite/EventSelectors.h"
21  
22   namespace fwlite {
23      template<typename T>
# Line 20 | Line 25 | namespace fwlite {
25          public:
26              typedef fwlite::Handle<std::vector<T> > HandleT;
27              Scanner(fwlite::EventBase *ev, const char *label, const char *instance = "", const char *process="")  :
23                //helper::ScannerBase(Reflex::Type::ByTypeInfo(typeid(T))),
28                  event_(ev), label_(label), instance_(instance),
29                  printFullEventId_(ev->isRealData()),
30                  ignoreExceptions_(false),
31                  exprSep_(":")
32              {
33 <                Reflex::Type wrapperType = Reflex::Type::ByTypeInfo(HandleT::TempWrapT::typeInfo());
34 <                objType = helpme.elementType(Reflex::Type::ByTypeInfo(HandleT::TempWrapT::typeInfo()));
33 >                objType = helper::Parser::elementType(Reflex::Type::ByTypeInfo(HandleT::TempWrapT::typeInfo()));
34 >                eventSelectors_.SetOwner();
35              }
36  
37              
# Line 60 | Line 64 | namespace fwlite {
64                  if (strlen(cut)) scanner.setCut(cut);
65  
66                  int iev = 0;
67 <                for (event_->toBegin(); (iev < nmax) && !event_->atEnd(); ++iev, ++(*event_)) {
67 >                for (event_->toBegin(); (iev != nmax) && !event_->atEnd(); ++iev, ++(*event_)) {
68 >                    if (!selectEvent(*event_)) continue;
69                      handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str());
70                      const std::vector<T> & vals = *handle_;
71                      for (size_t j = 0, n = vals.size(); j < n; ++j) {
# Line 96 | Line 101 | namespace fwlite {
101  
102                  // fill histogram
103                  for (event_->toBegin(); !event_->atEnd(); ++(*event_)) {
104 +                    if (!selectEvent(*event_)) continue;
105                      handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str());
106                      const std::vector<T> & vals = *handle_;
107                      for (size_t j = 0, n = vals.size(); j < n; ++j) {
# Line 129 | Line 135 | namespace fwlite {
135  
136                  // fill histogram
137                  for (event_->toBegin(); !event_->atEnd(); ++(*event_)) {
138 +                    if (!selectEvent(*event_)) continue;
139                      handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str());
140                      const std::vector<T> & vals = *handle_;
141                      for (size_t j = 0, n = vals.size(); j < n; ++j) {
# Line 163 | Line 170 | namespace fwlite {
170  
171                  // fill histogram
172                  for (event_->toBegin(); !event_->atEnd(); ++(*event_)) {
173 +                    if (!selectEvent(*event_)) continue;
174                      handle_.getByLabel(*event_, label_.c_str(), instance_.c_str(), process_.c_str());
175                      const std::vector<T> & vals = *handle_;
176                      for (size_t j = 0, n = vals.size(); j < n; ++j) {
# Line 186 | Line 194 | namespace fwlite {
194              void setPrintFullEventId(bool printIt=true) { printFullEventId_ = printIt; }
195              void setExpressionSeparator(TString separator) { exprSep_ = separator; }
196              void setIgnoreExceptions(bool ignoreThem) { ignoreExceptions_ = ignoreThem; }
197 +
198 +            void addEventSelector(fwlite::EventSelector *selector) { eventSelectors_.Add(selector); }
199 +            void clearEventSelector() { eventSelectors_.Clear(); }
200 +            TObjArray & eventSelectors() { return eventSelectors_; }
201 +            bool selectEvent(const fwlite::EventBase &ev) const {
202 +                for (int i = 0, n = eventSelectors_.GetEntries(); i < n; ++i) {
203 +                    if (!((fwlite::EventSelector *)(eventSelectors_[i]))->accept(ev)) return false;
204 +                }
205 +                return true;
206 +            }
207          private:
208              fwlite::EventBase *event_;
209              std::string    label_, instance_, process_;
# Line 193 | Line 211 | namespace fwlite {
211              bool ignoreExceptions_;
212              TString exprSep_;
213              HandleT        handle_;
196            helper::Parser helpme;
214              Reflex::Type   objType;
215  
216 +            TObjArray eventSelectors_;
217 +
218      };
219   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines