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

# Content
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 }