ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/DGele/PhysicsTools/RecoAlgos/src/TrackWithVertexSelector.cc
Revision: 1.1.1.1 (vendor branch)
Committed: Tue Oct 20 17:15:15 2009 UTC (15 years, 6 months ago) by dgele
Content type: text/plain
Branch: ANA
CVS Tags: start
Changes since 1.1: +0 -0 lines
Log Message:
version CMSSW_2_2_10

File Contents

# User Rev Content
1 dgele 1.1 #include "PhysicsTools/RecoAlgos/interface/TrackWithVertexSelector.h"
2     //
3     // constructors and destructor
4     //
5    
6     TrackWithVertexSelector::TrackWithVertexSelector(const edm::ParameterSet& iConfig) :
7     numberOfValidHits_(iConfig.getParameter<uint32_t>("numberOfValidHits")),
8     numberOfValidPixelHits_(iConfig.getParameter<uint32_t>("numberOfValidPixelHits")),
9     numberOfLostHits_(iConfig.getParameter<uint32_t>("numberOfLostHits")),
10     normalizedChi2_(iConfig.getParameter<double>("normalizedChi2")),
11     ptMin_(iConfig.getParameter<double>("ptMin")),
12     ptMax_(iConfig.getParameter<double>("ptMax")),
13     etaMin_(iConfig.getParameter<double>("etaMin")),
14     etaMax_(iConfig.getParameter<double>("etaMax")),
15     dzMax_(iConfig.getParameter<double>("dzMax")),
16     d0Max_(iConfig.getParameter<double>("d0Max")),
17     nVertices_(iConfig.getParameter<bool>("useVtx") ? iConfig.getParameter<uint32_t>("nVertices") : 0),
18     vertexTag_(iConfig.getParameter<edm::InputTag>("vertexTag")),
19     vtxFallback_(iConfig.getParameter<bool>("vtxFallback")),
20     zetaVtx_(iConfig.getParameter<double>("zetaVtx")),
21     rhoVtx_(iConfig.getParameter<double>("rhoVtx")) {
22     }
23    
24     TrackWithVertexSelector::~TrackWithVertexSelector() { }
25    
26     bool TrackWithVertexSelector::testTrack(const reco::Track &t) const {
27     using std::abs;
28     if ((t.numberOfValidHits() >= numberOfValidHits_) &&
29     (static_cast<unsigned int>(t.hitPattern().numberOfValidPixelHits()) >= numberOfValidPixelHits_) &&
30     (t.numberOfLostHits() <= numberOfLostHits_) &&
31     (t.normalizedChi2() <= normalizedChi2_) &&
32     (t.pt() >= ptMin_) &&
33     (t.pt() <= ptMax_) &&
34     (abs(t.eta()) <= etaMax_) &&
35     (abs(t.eta()) >= etaMin_) &&
36     (abs(t.dz()) <= dzMax_) &&
37     (abs(t.d0()) <= d0Max_) ) {
38     return true;
39     }
40     return false;
41     }
42    
43     bool TrackWithVertexSelector::testVertices(const reco::Track &t, const reco::VertexCollection &vtxs) const {
44     bool ok = false;
45     const Point &pca = t.vertex();
46     if (vtxs.size() > 0) {
47     unsigned int tested = 1;
48     for (reco::VertexCollection::const_iterator it = vtxs.begin(), ed = vtxs.end();
49     it != ed; ++it) {
50     if (testPoint(pca, it->position())) { ok = true; break; }
51     if (tested++ >= nVertices_) break;
52     }
53     } else if (vtxFallback_) {
54     return ( (std::abs(pca.z()) < 15.9) && (pca.Rho() < 0.2) );
55     }
56     return ok;
57     }
58    
59     bool TrackWithVertexSelector::operator()(const reco::Track &t, const edm::Event &evt) const {
60     using std::abs;
61     if (!testTrack(t)) return false;
62     if (nVertices_ == 0) return true;
63     edm::Handle<reco::VertexCollection> hVtx;
64     evt.getByLabel(vertexTag_, hVtx);
65     return testVertices(t, *hVtx);
66     }
67    
68     bool TrackWithVertexSelector::operator()(const reco::Track &t, const reco::VertexCollection &vtxs) const {
69     using std::abs;
70     if (!testTrack(t)) return false;
71     if (nVertices_ == 0) return true;
72     return testVertices(t, vtxs);
73     }
74    
75     bool TrackWithVertexSelector::testPoint(const Point &point, const Point &vtx) const {
76     using std::abs;
77     math::XYZVector d = point - vtx;
78     return ((abs(d.z()) < zetaVtx_) && (abs(d.Rho()) < rhoVtx_));
79     }