1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#ifndef EgammaCandidates_SiStripElectron_h
#define EgammaCandidates_SiStripElectron_h
// -*- C++ -*-
//
// Package: EgammaCandidates
// Class : SiStripElectron
//
/**\class SiStripElectron SiStripElectron.h DataFormats/EgammaCandidates/interface/SiStripElectron.h
Description: <one line class summary>
Usage:
<usage>
*/
//
// Original Author: Jim Pivarski
// Created: Fri May 26 15:43:14 EDT 2006
//
// system include files
#include <vector>
// user include files
#include "DataFormats/RecoCandidate/interface/RecoCandidate.h"
#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
#include "DataFormats/Common/interface/RefVector.h"
// forward declarations
namespace reco {
class SiStripElectron : public RecoCandidate {
public:
/// default constructor
SiStripElectron() : RecoCandidate() {}
/// constructor from band algorithm
SiStripElectron(const reco::SuperClusterRef& superCluster,
Charge q,
const std::vector<SiStripRecHit2D>& rphiRecHits,
const std::vector<SiStripRecHit2D>& stereoRecHits,
double superClusterPhiVsRSlope,
double phiVsRSlope,
double phiAtOrigin,
double chi2,
int ndof,
double pt,
double pz,
double zVsRSlope,
unsigned int numberOfStereoHits,
unsigned int numberOfBarrelRphiHits,
unsigned int numberOfEndcapZphiHits)
: RecoCandidate(q, PtEtaPhiMass(pt, etaFromRZ(pt, pz), phiAtOrigin, 0.000510f), Point(0, 0, 0), -11 * q),
superCluster_(superCluster),
rphiRecHits_(rphiRecHits),
stereoRecHits_(stereoRecHits),
superClusterPhiVsRSlope_(superClusterPhiVsRSlope),
phiVsRSlope_(phiVsRSlope),
phiAtOrigin_(phiAtOrigin),
chi2_(chi2),
ndof_(ndof),
zVsRSlope_(zVsRSlope),
numberOfStereoHits_(numberOfStereoHits),
numberOfBarrelRphiHits_(numberOfBarrelRphiHits),
numberOfEndcapZphiHits_(numberOfEndcapZphiHits) {}
/// constructor from RecoCandidate
template <typename P4>
SiStripElectron(Charge q, const P4& p4, const Point& vtx = Point(0, 0, 0)) : RecoCandidate(q, p4, vtx, -11 * q) {}
/// destructor
~SiStripElectron() override;
/// returns a clone of the candidate
SiStripElectron* clone() const override;
/// reference to a SuperCluster
reco::SuperClusterRef superCluster() const override;
/// reference to the rphiRecHits identified as belonging to an electron
const std::vector<SiStripRecHit2D>& rphiRecHits() const { return rphiRecHits_; }
/// reference to the stereoRecHits identified as belonging to an electron
const std::vector<SiStripRecHit2D>& stereoRecHits() const { return stereoRecHits_; }
/// returns phi(r) projection from supercluster
double superClusterPhiVsRSlope() const { return superClusterPhiVsRSlope_; }
/// returns phi(r) slope from fit to tracker hits
double phiVsRSlope() const { return phiVsRSlope_; }
/// returns phi(r=0) intercept from fit to tracker hits
double phiAtOrigin() const { return phiAtOrigin_; }
/// returns chi^2 of fit to tracker hits
double chi2() const { return chi2_; }
/// returns number of degrees of freedom of fit to tracker hits
int ndof() const { return ndof_; }
/// returns z(r) slope fit from stereo tracker hits (constrained to pass through supercluster)
double zVsRSlope() const { return zVsRSlope_; }
/// returns number of stereo hits in phi band (barrel + endcap)
unsigned int numberOfStereoHits() const { return numberOfStereoHits_; }
/// returns number of barrel rphi hits in phi band
unsigned int numberOfBarrelRphiHits() const { return numberOfBarrelRphiHits_; }
/// returns number of endcap zphi hits in phi band
unsigned int numberOfEndcapZphiHits() const { return numberOfEndcapZphiHits_; }
bool isElectron() const override;
private:
/// check overlap with another candidate
bool overlap(const Candidate&) const override;
/// reference to a SuperCluster
reco::SuperClusterRef superCluster_;
std::vector<SiStripRecHit2D> rphiRecHits_;
std::vector<SiStripRecHit2D> stereoRecHits_;
double superClusterPhiVsRSlope_;
double phiVsRSlope_;
double phiAtOrigin_;
double chi2_;
int ndof_;
double zVsRSlope_;
unsigned int numberOfStereoHits_;
unsigned int numberOfBarrelRphiHits_;
unsigned int numberOfEndcapZphiHits_;
};
} // namespace reco
#endif
|