27 if (!vtx.
isValid())
return false;
30 if (TMath::Prob( vtx.
chi2(), vtx.
ndof() )<probMin)
return false;
34 double dbsx = vtx.
x() - beamspot.x();
35 double dbsy = vtx.
y() - beamspot.y();
36 double lxy = (mom.x()*dbsx + mom.y()*dbsy)/mom.rho();
44 if ( (*it)>nHitsBeforeVtxMax )
return false;
83 float dEta = mom.eta() - cscvector.eta();
86 if (dR>dRMax)
return false;
87 if (dEta>dEtaMax)
return false;
88 if (dPhi>dPhiMax)
return false;
101 if (trk.
isNull())
return false;
103 const std::vector<edm::RefToBase<reco::Track> > &
convTracks = conv.
tracks();
105 if (trk.
id()==it->
id() && trk.
key()==it->key())
return true;
117 if (trk.
isNull())
return false;
119 const std::vector<edm::RefToBase<reco::Track> > &
convTracks = conv.
tracks();
121 if (trk.
id()==it->
id() && trk.
key()==it->key())
return true;
133 if (trk.
isNull())
return false;
135 const std::vector<edm::RefToBase<reco::Track> > &
convTracks = conv.
tracks();
137 if (trk.
id()==it->
id() && trk.
key()==it->key())
return true;
147 const math::XYZPoint &beamspot,
bool allowCkfMatch,
float lxyMin,
float probMin,
unsigned int nHitsBeforeVtxMax)
153 for (ConversionCollection::const_iterator it = convCol->begin(); it!=convCol->end(); ++it) {
154 if (!matchesConversion(ele, *it, allowCkfMatch))
continue;
155 if (!isGoodConversion(*it,beamspot,lxyMin,probMin,nHitsBeforeVtxMax))
continue;
167 const math::XYZPoint &beamspot,
float lxyMin,
float probMin,
unsigned int nHitsBeforeVtxMax)
172 if (trk.
isNull())
return false;
174 for (ConversionCollection::const_iterator it = convCol->begin(); it!=convCol->end(); ++it) {
175 if (!matchesConversion(trk, *it))
continue;
176 if (!isGoodConversion(*it,beamspot,lxyMin,probMin,nHitsBeforeVtxMax))
continue;
188 const math::XYZPoint &beamspot,
float dRMax,
float dEtaMax,
float dPhiMax,
float lxyMin,
float probMin,
unsigned int nHitsBeforeVtxMax)
194 for (ConversionCollection::const_iterator it = convCol->begin(); it!=convCol->end(); ++it) {
195 if (!matchesConversion(sc, *it))
continue;
196 if (!isGoodConversion(*it,beamspot,lxyMin,probMin,nHitsBeforeVtxMax))
continue;
209 const math::XYZPoint &beamspot,
bool allowCkfMatch,
float lxyMin,
float probMin,
unsigned int nHitsBeforeVtxMax)
219 double minRho = 999.;
220 for (ConversionCollection::const_iterator it = convCol->begin(); it!=convCol->end(); ++it) {
221 float rho = it->conversionVertex().position().rho();
222 if (rho>minRho)
continue;
223 if (!matchesConversion(ele, *it, allowCkfMatch))
continue;
224 if (!isGoodConversion(*it,beamspot,lxyMin,probMin,nHitsBeforeVtxMax))
continue;
237 const math::XYZPoint &beamspot,
float lxyMin,
float probMin,
unsigned int nHitsBeforeVtxMax)
246 if (trk.
isNull())
return match;
248 double minRho = 999.;
249 for (ConversionCollection::const_iterator it = convCol->begin(); it!=convCol->end(); ++it) {
250 float rho = it->conversionVertex().position().rho();
251 if (rho>minRho)
continue;
252 if (!matchesConversion(trk, *it))
continue;
253 if (!isGoodConversion(*it,beamspot,lxyMin,probMin,nHitsBeforeVtxMax))
continue;
266 const math::XYZPoint &beamspot,
float dRMax,
float dEtaMax,
float dPhiMax,
float lxyMin,
float probMin,
unsigned int nHitsBeforeVtxMax)
276 double minRho = 999.;
277 for (ConversionCollection::const_iterator it = convCol->begin(); it!=convCol->end(); ++it) {
278 float rho = it->conversionVertex().position().rho();
279 if (rho>minRho)
continue;
280 if (!matchesConversion(sc, *it, dRMax,dEtaMax,dPhiMax))
continue;
281 if (!isGoodConversion(*it,beamspot,lxyMin,probMin,nHitsBeforeVtxMax))
continue;
299 if (sc.
isNull())
return false;
301 for (GsfElectronCollection::const_iterator it = eleCol->begin(); it!=eleCol->end(); ++it) {
303 if (it->superCluster()!=sc)
continue;
306 if (it->gsfTrack()->trackerExpectedHitsInner().numberOfHits()>0)
continue;
309 if (hasMatchedConversion(*it,convCol,beamspot,lxyMin,probMin,nHitsBeforeVtxMax))
continue;
331 if (sc.
isNull())
return match;
333 for (GsfElectronCollection::const_iterator it = eleCol->begin(); it!=eleCol->end(); ++it) {
335 if (it->superCluster()!=sc)
continue;
338 if (it->gsfTrack()->trackerExpectedHitsInner().numberOfHits()>0)
continue;
341 if (hasMatchedConversion(*it,convCol,beamspot,lxyMin,probMin,nHitsBeforeVtxMax))
continue;
const reco::Vertex & conversionVertex() const
returns the reco conversion vertex
const math::XYZPoint & position() const
cluster centroid position
static HepMC::IO_HEPEVT conv
double y() const
y coordinate
bool isValid() const
Tells whether the vertex is valid.
bool isNull() const
Checks for null.
std::string match(BranchDescription const &a, BranchDescription const &b, std::string const &fileName, BranchDescription::MatchMode m)
const Point & position() const
position
math::XYZVectorF refittedPairMomentum() const
Conversion tracks momentum from the tracks refitted with vertex constraint.
TrackRef closestCtfTrackRef() const
std::vector< edm::RefToBase< reco::Track > > tracks() const
vector of track to base references
bool isNonnull() const
Checks for non-null.
bool isNull() const
Checks for null.
double dPhi(double phi1, double phi2)
double chi2() const
chi-squares
auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
edm::Ref< GsfElectronCollection > GsfElectronRef
reference to an object in a collection of GsfElectron objects
double deltaPhi(double phi1, double phi2)
double x() const
x coordinate
XYZVectorD XYZVector
spatial vector with cartesian internal representation
XYZPointD XYZPoint
point in space with cartesian internal representation
key_type key() const
Accessor for product key.
const std::vector< uint8_t > & nHitsBeforeVtx() const
Vector of the number of hits before the vertex along each track trajector.
edm::Ref< ConversionCollection > ConversionRef
reference to an object in a collection of Conversion objects
ProductID id() const
Accessor for product ID.
virtual GsfTrackRef gsfTrack() const
reference to a GsfTrack