ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/GPetrucc/interface/DTree.h
Revision: 1.1
Committed: Wed Feb 24 11:50:12 2010 UTC (15 years, 2 months ago) by gpetrucc
Content type: text/plain
Branch: MAIN
CVS Tags: V03-00-00, HEAD
Log Message:
Improvements and some new stuff

File Contents

# User Rev Content
1 gpetrucc 1.1 #include <memory>
2     #include "FWCore/ParameterSet/interface/ParameterSet.h"
3     #include "CommonTools/Utils/interface/StringCutObjectSelector.h"
4    
5     template<typename T, typename V=int>
6     class DTree {
7     public:
8     DTree(const edm::ParameterSet &pset) ;
9     ~DTree() {}
10     const V & classify(const T &t) const {
11     if (cut_(t)) {
12     return (yes_.get() ? yes_->classify(t) : yesValue_);
13     } else {
14     return (no_.get() ? no_->classify(t) : noValue_);
15     }
16     }
17     private:
18     StringCutObjectSelector<T> cut_;
19     std::auto_ptr<DTree<T,V> > yes_, no_;
20     V yesValue_, noValue_;
21     };
22    
23     template<typename T, typename V>
24     DTree<T,V>::DTree(const edm::ParameterSet &pset) :
25     cut_(pset.getParameter<std::string>("cut"), true)
26     {
27     if (pset.existsAs<edm::ParameterSet>("yes")) {
28     yes_.reset(new DTree<T,V>(pset.getParameter<edm::ParameterSet>("yes")));
29     } else {
30     yesValue_ = pset.getParameter<V>("yes");
31     }
32     if (pset.existsAs<edm::ParameterSet>("no")) {
33     no_.reset(new DTree<T,V>(pset.getParameter<edm::ParameterSet>("no")));
34     } else {
35     noValue_ = pset.getParameter<V>("no");
36     }
37     }