ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/src/LeptonAnalyzer.cc
Revision: 1.2
Committed: Tue Apr 21 10:42:23 2009 UTC (16 years ago) by lethuill
Content type: text/plain
Branch: MAIN
CVS Tags: pat_2_2_7_01
Changes since 1.1: +8 -21 lines
Log Message:
Use beam spot in impact parameter calculation

File Contents

# User Rev Content
1 lethuill 1.1 #include "../interface/LeptonAnalyzer.h"
2    
3    
4    
5     using namespace std;
6     using namespace reco;
7     using namespace edm;
8    
9     LeptonAnalyzer::LeptonAnalyzer(const edm::ParameterSet& producersNames):verbosity_(0),dummyVertex_(false),trackBuilder_(),primaryVertex_(0),vertexPoint_(0)
10     {
11     dataType_ = producersNames.getUntrackedParameter<string>("dataType","unknown");
12     vertexProducer_ = producersNames.getParameter<edm::InputTag>("primaryVertexProducer");
13     }
14    
15    
16     LeptonAnalyzer::LeptonAnalyzer(const edm::ParameterSet& producersNames, int verbosity):verbosity_(verbosity),dummyVertex_(false),trackBuilder_(),primaryVertex_(0),vertexPoint_(0)
17     {
18     dataType_ = producersNames.getUntrackedParameter<string>("dataType","unknown");
19     vertexProducer_ = producersNames.getParameter<edm::InputTag>("primaryVertexProducer");
20     }
21    
22    
23     LeptonAnalyzer::~LeptonAnalyzer()
24     {
25     if (dummyVertex_) delete primaryVertex_;
26     if (vertexPoint_ != 0) delete vertexPoint_;
27     }
28    
29    
30     void LeptonAnalyzer::initIPCalculator(const edm::Event& iEvent, const edm::EventSetup& iSetup, TRootEvent* rootEvent)
31     {
32     // get the track builder
33     iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",trackBuilder_);
34    
35     // Get primary vertex collection
36 lethuill 1.2 edm::Handle< reco::VertexCollection > recoVertices;
37     iEvent.getByLabel(vertexProducer_, recoVertices);
38 lethuill 1.1
39 lethuill 1.2 if ( recoVertices->size()==0 )
40 lethuill 1.1 {
41 lethuill 1.2 // FIXME - Take beamspot instead ?
42 lethuill 1.1 cout << "***** ERROR in LeptonAnalyzer::initIPCalculator() - No reco::Vertex for this event - Will use dummy vertex *****" << endl;
43     reco::Vertex::Point point(0,0,0);
44     reco::Vertex::Error error;
45     error(0,0) = 0.0015*0.0015;
46     error(1,1) = 0.0015*0.0015;
47     error(2,2) = 15.*15.;
48     primaryVertex_ = new reco::Vertex(point,error,1,1,1);
49     dummyVertex_ = true;
50     }
51 lethuill 1.2 else if ( rootEvent->primaryVertexIndex()>=int(recoVertices->size()) )
52 lethuill 1.1 {
53     cout << "***** ERROR in LeptonAnalyzer::initIPCalculator() - Selected primary vertex not found in reco::Vertex collection - Will use first reco::Vertex *****" << endl;
54 lethuill 1.2 primaryVertex_ = & ((*recoVertices)[0]);
55 lethuill 1.1 }
56     else if ( rootEvent->primaryVertexIndex()<0 )
57     {
58     cout << "***** ERROR in LeptonAnalyzer::initIPCalculator() - No Primary vertex was selected in reco::Vertex collection - Will use first reco::Vertex *****" << endl;
59 lethuill 1.2 primaryVertex_ = & ((*recoVertices)[0]);
60 lethuill 1.1 }
61     else
62     {
63 lethuill 1.2 primaryVertex_ = & ((*recoVertices)[rootEvent->primaryVertexIndex()]);
64 lethuill 1.1 }
65    
66     vertexPoint_ = new GlobalPoint(primaryVertex_->position().x(),primaryVertex_->position().y(),primaryVertex_->position().z());
67     }
68    
69    
70     float LeptonAnalyzer::IP3DSignificance(const reco::TransientTrack& track)
71     {
72    
73     const TrajectoryStateOnSurface tsos = track.stateOnSurface(*vertexPoint_);
74     float significance = -9999.;
75     if (!tsos.isValid())
76     {
77     significance = -8888.;
78     }
79     else
80     {
81     std::pair<bool,Measurement1D> muIPpair;
82     muIPpair = IPTools::signedImpactParameter3D(tsos, tsos.globalDirection(), *primaryVertex_);
83    
84     if (muIPpair.first)
85     {
86     significance = muIPpair.second.significance();
87     }
88     else
89     {
90     significance = -7777.;
91     }
92     }
93    
94     return significance;
95     }