16 auto v =
cfg.getParameter<std::vector<double>>(
name);
22 auto v =
cfg.getParameter<std::vector<int>>(
name);
28 constexpr float mvaVal[3] = {-.5, .5, 1.};
30 template <
typename T,
typename Comp>
32 for (
int i = 2;
i >= 0; --
i) {
60 if (
hit->dimension() == 2) {
80 for (
int i = 2;
i >= 0; --
i) {
84 inline void drCut_par1(
reco::Track const& trk,
int&
nLayers,
const float* par,
const int*
exp,
float drCut[]) {
86 for (
int i = 2;
i >= 0; --
i) {
101 for (
int i = 2;
i >= 0; --
i) {
105 float nomdzE = nomd0E * (
p /
pt);
119 for (
int i = 2;
i >= 0; --
i) {
127 inline void dzCut_wPVerror_par(
reco::Track const& trk,
131 Point const& bestVertexError,
134 float zPVerr = bestVertexError.z();
136 float dzErrPV =
std::sqrt(dzE * dzE + zPVerr * zPVerr);
137 for (
int i = 2;
i >= 0; --
i) {
144 inline void drCut_wPVerror_par(
reco::Track const& trk,
148 Point const& bestVertexError,
152 float rPVerr =
sqrt(bestVertexError.x() * bestVertexError.y());
154 float drErrPV =
std::sqrt(drE * drE + rPVerr * rPVerr);
155 for (
int i = 2;
i >= 0; --
i) {
156 drCut[
i] = par[
i] * drErrPV;
164 isHLT =
cfg.getParameter<
bool>(
"isHLT");
193 void beginStream() {}
253 if (bestVertex.z() < -99998.) {
268 Point bestVertexError(-1., -1., -1.);
274 dzCut_wPVerror_par(trk,
nLayers, dzWPVerr_par,
dz_exp, bestVertexError, maxDz_par);
275 drCut_wPVerror_par(trk,
nLayers, drWPVerr_par,
dr_exp, bestVertexError, maxDr_par);
295 std::copy(std::begin(maxDz_par1), std::end(maxDz_par1), std::begin(maxDz_par));
296 std::copy(std::begin(maxDr_par1), std::end(maxDr_par1), std::begin(maxDr_par));
305 for (
int i = 2;
i >= 0; --
i) {
306 if (maxDr_par2[
i] < maxDr_par[
i])
307 maxDr_par[
i] = maxDr_par2[
i];
308 if (maxDz_par2[
i] < maxDz_par[
i])
309 maxDz_par[
i] = maxDz_par2[
i];
314 if (bestVertex.z() < -99998.) {
331 static const char*
name() {
return "TrackCutClassifier"; }
334 desc.add<
bool>(
"isHLT",
false);
335 desc.add<std::vector<int>>(
338 desc.add<std::vector<int>>(
"minHits", {0, 0, 1});
339 desc.add<std::vector<int>>(
"minPixelHits", {0, 0, 1});
340 desc.add<std::vector<int>>(
"minLayers", {3, 4, 5});
341 desc.add<std::vector<int>>(
"min3DLayers", {1, 2, 3});
342 desc.add<std::vector<int>>(
"maxLostLayers", {99, 3, 3});
343 desc.add<std::vector<double>>(
346 desc.add<std::vector<double>>(
"minNdof", {-1., -1., -1.});
347 desc.add<std::vector<double>>(
"maxChi2", {9999., 25., 16.});
348 desc.add<std::vector<double>>(
"maxChi2n", {9999., 1.0, 0.4});
350 desc.add<
int>(
"minNVtxTrk", 2);
352 desc.add<std::vector<double>>(
356 desc.add<std::vector<double>>(
361 dz_par.add<std::vector<int>>(
"dz_exp",
365 dz_par.add<std::vector<double>>(
"dz_par1",
369 dz_par.add<std::vector<double>>(
"dz_par2",
373 dz_par.add<std::vector<double>>(
"dzWPVerr_par",
380 dr_par.add<std::vector<int>>(
"dr_exp",
384 dr_par.add<std::vector<double>>(
"dr_par1",
388 dr_par.add<std::vector<double>>(
"dr_par2",
392 dr_par.add<std::vector<double>>(
"d0err", {0.003, 0.003, 0.003});
393 dr_par.add<std::vector<double>>(
"d0err_par", {0.001, 0.001, 0.001});
394 dr_par.add<std::vector<double>>(
"drWPVerr_par",
419 float dzWPVerr_par[3];
425 float drWPVerr_par[3];
int numberOfValidPixelHits() const
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
unsigned short numberOfValidHits() const
number of valid hits found
ret
prodAgent to be discontinued
double p() const
momentum vector magnitude
int trackerLayersWithMeasurement() const
std::vector< Vertex > VertexCollection
collection of Vertex objects
Point getBestVertex_withError(reco::Track const &trk, reco::VertexCollection const &vertices, Point &error, const size_t minNtracks=2)
double pt() const
track transverse momentum
double ndof() const
number of degrees of freedom of the fit
int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
double dzError() const
error on dz
Abs< T >::type abs(const T &t)
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
#define DEFINE_FWK_MODULE(type)
void fillArrayI(int *x, const edm::ParameterSet &cfg, const char *name)
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
int trackerLayersWithoutMeasurement(HitCategory category) const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Structure Point Contains parameters of Gaussian fits to DMRs.
Point getBestVertex(reco::Track const &trk, reco::VertexCollection const &vertices, const size_t minNtracks=2)
bool isFromDetOrFast(TrackingRecHit const &hit)
int pixelLayersWithMeasurement() const
TupleMultiplicity< TrackerTraits > const *__restrict__ uint32_t nHits
double d0Error() const
error on d0
void fillArrayF(float *x, const edm::ParameterSet &cfg, const char *name)
Power< A, B >::type pow(const A &a, const B &b)
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...