CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
GlobalTrackQualityProducer Class Reference

#include <GlobalTrackQualityProducer.h>

Inheritance diagram for GlobalTrackQualityProducer:
edm::stream::EDProducer<>

Public Member Functions

 GlobalTrackQualityProducer (const edm::ParameterSet &iConfig)
 
 ~GlobalTrackQualityProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

virtual std::pair< double, double > kink (Trajectory &muon) const
 
virtual std::pair< double, double > newChi2 (Trajectory &muon) const
 
void produce (edm::Event &, const edm::EventSetup &) override
 
virtual double trackProbability (Trajectory &track) const
 

Private Attributes

edm::EDGetTokenT< reco::TrackCollectionglbMuonsToken
 
edm::InputTag inputCollection_
 
edm::InputTag inputLinksCollection_
 
edm::EDGetTokenT< reco::MuonTrackLinksCollectionlinkCollectionToken
 
MeasurementEstimatortheEstimator
 
GlobalMuonTrackMatchertheGlbMatcher
 
GlobalMuonRefittertheGlbRefitter
 
MuonServiceProxytheService
 
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtTopoToken_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Definition at line 28 of file GlobalTrackQualityProducer.h.

Constructor & Destructor Documentation

◆ GlobalTrackQualityProducer()

GlobalTrackQualityProducer::GlobalTrackQualityProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 28 of file GlobalTrackQualityProducer.cc.

References Chi2MeasurementEstimator_cfi::Chi2MeasurementEstimator, edm::ParameterSet::getParameter(), glbMuonsToken, GlobalMuonRefitter_cff::GlobalMuonRefitter, HLT_2022v12_cff::GlobalMuonTrackMatcher, inputCollection_, inputLinksCollection_, linkCollectionToken, beam_dqm_sourceclient-live_cfg::maxChi2, MuonServiceProxy_cff::MuonServiceProxy, HLTSiStripMonitoring_cff::nSigma, theEstimator, theGlbMatcher, theGlbRefitter, and theService.

29  : inputCollection_(iConfig.getParameter<edm::InputTag>("InputCollection")),
30  inputLinksCollection_(iConfig.getParameter<edm::InputTag>("InputLinksCollection")),
32  theService(nullptr),
33  theGlbRefitter(nullptr),
34  theGlbMatcher(nullptr) {
35  // service parameters
36  edm::ParameterSet serviceParameters = iConfig.getParameter<edm::ParameterSet>("ServiceParameters");
37  theService = new MuonServiceProxy(serviceParameters, consumesCollector());
38 
39  // TrackRefitter parameters
40  edm::ConsumesCollector iC = consumesCollector();
41  edm::ParameterSet refitterParameters = iConfig.getParameter<edm::ParameterSet>("RefitterParameters");
42  theGlbRefitter = new GlobalMuonRefitter(refitterParameters, theService, iC);
43 
44  edm::ParameterSet trackMatcherPSet = iConfig.getParameter<edm::ParameterSet>("GlobalMuonTrackMatcher");
45  theGlbMatcher = new GlobalMuonTrackMatcher(trackMatcherPSet, theService);
46 
47  double maxChi2 = iConfig.getParameter<double>("MaxChi2");
48  double nSigma = iConfig.getParameter<double>("nSigma");
50 
51  glbMuonsToken = consumes<reco::TrackCollection>(inputCollection_);
52  linkCollectionToken = consumes<reco::MuonTrackLinksCollection>(inputLinksCollection_);
53 
54  produces<edm::ValueMap<reco::MuonQuality>>();
55 }
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< reco::TrackCollection > glbMuonsToken
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
edm::EDGetTokenT< reco::MuonTrackLinksCollection > linkCollectionToken
GlobalMuonTrackMatcher * theGlbMatcher

◆ ~GlobalTrackQualityProducer()

GlobalTrackQualityProducer::~GlobalTrackQualityProducer ( )
override

Definition at line 57 of file GlobalTrackQualityProducer.cc.

References theEstimator, theGlbMatcher, theGlbRefitter, and theService.

57  {
58  if (theService)
59  delete theService;
60  if (theGlbRefitter)
61  delete theGlbRefitter;
62  if (theGlbMatcher)
63  delete theGlbMatcher;
64  if (theEstimator)
65  delete theEstimator;
66 }
GlobalMuonTrackMatcher * theGlbMatcher

Member Function Documentation

◆ fillDescriptions()

void GlobalTrackQualityProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 319 of file GlobalTrackQualityProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), submitPVResolutionJobs::desc, HLT_2022v12_cff::InputTag, edm::ParameterSetDescription::setAllowAnything(), and AlCaHLTBitMon_QueryRunRegistry::string.

319  {
321  {
323  psd1.setAllowAnything();
324  desc.add<edm::ParameterSetDescription>("ServiceParameters", psd1);
325  }
326  {
328  psd1.setAllowAnything();
329  desc.add<edm::ParameterSetDescription>("GlobalMuonTrackMatcher", psd1);
330  }
331  desc.add<edm::InputTag>("InputCollection", edm::InputTag("globalMuons"));
332  desc.add<edm::InputTag>("InputLinksCollection", edm::InputTag("globalMuons"));
333  desc.add<std::string>("BaseLabel", "GLB");
334  {
335  edm::ParameterSetDescription descGlbMuonRefitter;
336  descGlbMuonRefitter.setAllowAnything();
337  descGlbMuonRefitter.add<edm::InputTag>("DTRecSegmentLabel", edm::InputTag("dt1DRecHits"));
338  descGlbMuonRefitter.add<edm::InputTag>("CSCRecSegmentLabel", edm::InputTag("csc2DRecHits"));
339  descGlbMuonRefitter.add<edm::InputTag>("GEMRecHitLabel", edm::InputTag("gemRecHits"));
340  descGlbMuonRefitter.add<edm::InputTag>("ME0RecHitLabel", edm::InputTag("me0Segments"));
341  descGlbMuonRefitter.add<edm::InputTag>("RPCRecSegmentLabel", edm::InputTag("rpcRecHits"));
342 
343  descGlbMuonRefitter.add<std::string>("Fitter", "KFFitterForRefitInsideOut");
344  descGlbMuonRefitter.add<std::string>("Smoother", "KFSmootherForRefitInsideOut");
345  descGlbMuonRefitter.add<std::string>("Propagator", "SmartPropagatorAnyRK");
346  descGlbMuonRefitter.add<std::string>("TrackerRecHitBuilder", "WithAngleAndTemplate");
347  descGlbMuonRefitter.add<std::string>("MuonRecHitBuilder", "MuonRecHitBuilder");
348  descGlbMuonRefitter.add<bool>("DoPredictionsOnly", false);
349  descGlbMuonRefitter.add<std::string>("RefitDirection", "insideOut");
350  descGlbMuonRefitter.add<bool>("PropDirForCosmics", false);
351  descGlbMuonRefitter.add<bool>("RefitRPCHits", true);
352 
353  descGlbMuonRefitter.add<std::vector<int>>("DYTthrs", {10, 10});
354  descGlbMuonRefitter.add<int>("DYTselector", 1);
355  descGlbMuonRefitter.add<bool>("DYTupdator", false);
356  descGlbMuonRefitter.add<bool>("DYTuseAPE", false);
357  descGlbMuonRefitter.add<bool>("DYTuseThrsParametrization", true);
358  {
359  edm::ParameterSetDescription descDYTthrs;
360  descDYTthrs.add<std::vector<double>>("eta0p8", {1, -0.919853, 0.990742});
361  descDYTthrs.add<std::vector<double>>("eta1p2", {1, -0.897354, 0.987738});
362  descDYTthrs.add<std::vector<double>>("eta2p0", {4, -0.986855, 0.998516});
363  descDYTthrs.add<std::vector<double>>("eta2p2", {1, -0.940342, 0.992955});
364  descDYTthrs.add<std::vector<double>>("eta2p4", {1, -0.947633, 0.993762});
365  descGlbMuonRefitter.add<edm::ParameterSetDescription>("DYTthrsParameters", descDYTthrs);
366  }
367 
368  descGlbMuonRefitter.add<int>("SkipStation", -1);
369  descGlbMuonRefitter.add<int>("TrackerSkipSystem", -1);
370  descGlbMuonRefitter.add<int>("TrackerSkipSection", -1);
371  descGlbMuonRefitter.add<bool>("RefitFlag", true);
372 
373  desc.add<edm::ParameterSetDescription>("RefitterParameters", descGlbMuonRefitter);
374  }
375  desc.add<double>("nSigma", 3.0);
376  desc.add<double>("MaxChi2", 100000.0);
377 
378  descriptions.add("globalTrackQualityProducer", desc);
379 }
void setAllowAnything()
allow any parameter label/value pairs
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ kink()

std::pair< double, double > GlobalTrackQualityProducer::kink ( Trajectory muon) const
privatevirtual

Definition at line 184 of file GlobalTrackQualityProducer.cc.

References change_name::diff, relativeConstraints::error, TrajectoryStateOnSurface::globalPosition(), edm::isNotFinite(), TrajectoryStateOnSurface::isValid(), visualization-live-secondInstance_cfg::m, M_PI, convertSQLiteXML::ok, PV3DBase< T, PVType, FrameType >::phi(), GlobalErrorBase< T, ErrorWeightType >::phierr(), mps_fire::result, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, and DetId::Tracker.

Referenced by produce().

184  {
185  const std::string theCategory = "Muon|RecoMuon|GlobalTrackQualityProducer";
186 
187  using namespace std;
188  using namespace edm;
189  using namespace reco;
190 
191  double result = 0.0;
192  double resultGlb = 0.0;
193 
195  typedef ConstRecHitPointer RecHit;
196  typedef std::vector<TrajectoryMeasurement>::const_iterator TMI;
197 
198  vector<TrajectoryMeasurement> meas = muon.measurements();
199 
200  for (TMI m = meas.begin(); m != meas.end(); m++) {
202 
203  //not used double estimate = 0.0;
204 
205  RecHit rhit = (*m).recHit();
206  bool ok = false;
207  if (rhit->isValid()) {
208  if (DetId::Tracker == rhit->geographicalId().det())
209  ok = true;
210  }
211 
212  //if ( !ok ) continue;
213 
214  const TrajectoryStateOnSurface& tsos = (*m).predictedState();
215 
216  if (tsos.isValid() && rhit->isValid() && rhit->hit()->isValid() &&
217  !edm::isNotFinite(rhit->localPositionError().xx()) //this is paranoia induced by reported case
218  && !edm::isNotFinite(rhit->localPositionError().xy()) //it's better to track down the origin of bad numbers
219  && !edm::isNotFinite(rhit->localPositionError().yy())) {
220  double phi1 = tsos.globalPosition().phi();
221  if (phi1 < 0)
222  phi1 = 2 * M_PI + phi1;
223 
224  double phi2 = rhit->globalPosition().phi();
225  if (phi2 < 0)
226  phi2 = 2 * M_PI + phi2;
227 
228  double diff = fabs(phi1 - phi2);
229  if (diff > M_PI)
230  diff = 2 * M_PI - diff;
231 
232  GlobalPoint hitPos = rhit->globalPosition();
233 
234  GlobalError hitErr = rhit->globalPositionError();
235  //LogDebug(theCategory)<<"hitPos " << hitPos;
236  double error = hitErr.phierr(hitPos); // error squared
237 
238  double s = (error > 0.0) ? (diff * diff) / error : (diff * diff);
239 
240  if (ok)
241  result += s;
242  resultGlb += s;
243  }
244  }
245 
246  return std::pair<double, double>(result, resultGlb);
247 }
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
T phierr(const GlobalPoint &aPoint) const
TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer
GlobalPoint globalPosition() const
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
#define M_PI
fixed size matrix
HLT enums.

◆ newChi2()

std::pair< double, double > GlobalTrackQualityProducer::newChi2 ( Trajectory muon) const
privatevirtual

Definition at line 249 of file GlobalTrackQualityProducer.cc.

References MeasurementEstimator::estimate(), TrajectoryStateOnSurface::isValid(), visualization-live-secondInstance_cfg::m, DetId::Muon, AlCaHLTBitMon_QueryRunRegistry::string, theEstimator, and DetId::Tracker.

Referenced by produce().

249  {
250  const std::string theCategory = "Muon|RecoMuon|GlobalTrackQualityProducer";
251 
252  using namespace std;
253  using namespace edm;
254  using namespace reco;
255 
256  double muChi2 = 0.0;
257  double tkChi2 = 0.0;
258  unsigned int muNdof = 0;
259  unsigned int tkNdof = 0;
260 
262  typedef ConstRecHitPointer RecHit;
263  typedef vector<TrajectoryMeasurement>::const_iterator TMI;
264 
265  vector<TrajectoryMeasurement> meas = muon.measurements();
266 
267  for (TMI m = meas.begin(); m != meas.end(); m++) {
269  const TrajectoryStateOnSurface& uptsos = (*m).updatedState();
270  // FIXME FIXME CLONE!!!
271  // TrackingRecHit::RecHitPointer preciseHit = hit->clone(uptsos);
272  const auto& preciseHit = hit;
273  double estimate = 0.0;
274  if (preciseHit->isValid() && uptsos.isValid()) {
275  estimate = theEstimator->estimate(uptsos, *preciseHit).second;
276  }
277 
278  //LogTrace(theCategory) << "estimate " << estimate << " TM.est " << m->estimate();
279  //UNUSED: double tkDiff = 0.0;
280  //UNUSED: double staDiff = 0.0;
281  if (hit->isValid() && (hit->geographicalId().det()) == DetId::Tracker) {
282  tkChi2 += estimate;
283  //UNUSED: tkDiff = estimate - m->estimate();
284  tkNdof += hit->dimension();
285  }
286  if (hit->isValid() && (hit->geographicalId().det()) == DetId::Muon) {
287  muChi2 += estimate;
288  //UNUSED staDiff = estimate - m->estimate();
289  muNdof += hit->dimension();
290  }
291  }
292 
293  //For tkNdof < 6, should a large number or something else
294  // be used instead of just tkChi2 directly?
295  if (tkNdof > 5) {
296  tkChi2 /= (tkNdof - 5.);
297  }
298 
299  //For muNdof < 6, should a large number or something else
300  // be used instead of just muChi2 directly?
301  if (muNdof > 5) {
302  muChi2 /= (muNdof - 5.);
303  }
304 
305  return std::pair<double, double>(tkChi2, muChi2);
306 }
TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TrackingRecHit &hit) const =0
fixed size matrix
HLT enums.

◆ produce()

void GlobalTrackQualityProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 68 of file GlobalTrackQualityProducer.cc.

References hltPixelTracks_cff::chi2, reco::MuonQuality::chi2LocalMomentum, reco::MuonQuality::chi2LocalPosition, ztail::d, MuonServiceProxy::eventSetup(), edm::EventSetup::getData(), reco::MuonQuality::glbKink, glbMuonsToken, reco::MuonQuality::glbTrackProbability, reco::MuonQuality::globalDeltaEtaPhi, edm::Ref< C, T, F >::id(), iEvent, edm::Ref< C, T, F >::isNull(), edm::HandleBase::isValid(), kink(), linkCollectionToken, electronStore::links, reco::MuonQuality::localDistance, LogTrace, GlobalMuonTrackMatcher::match(), GlobalMuonTrackMatcher::matchTight(), SiStripPI::max, eostools::move(), newChi2(), GlobalMuonRefitter::refit(), GlobalMuonRefitter::setEvent(), GlobalMuonRefitter::setServices(), reco::MuonQuality::staRelChi2, AlCaHLTBitMon_QueryRunRegistry::string, theGlbMatcher, theGlbRefitter, theService, reco::MuonQuality::tightMatch, HLT_2022v12_cff::track, HLT_2022v12_cff::TrackCand, trackProbability(), reco::MuonQuality::trkKink, reco::MuonQuality::trkRelChi2, tTopoToken_, MuonServiceProxy::update(), and reco::MuonQuality::updatedSta.

68  {
69  const std::string theCategory = "Muon|RecoMuon|GlobalTrackQualityProducer";
70 
71  theService->update(iSetup);
72 
74 
76 
77  // Take the GLB muon container(s)
79  iEvent.getByToken(glbMuonsToken, glbMuons);
80 
82  iEvent.getByToken(linkCollectionToken, linkCollectionHandle);
83 
84  //Retrieve tracker topology from geometry
85  const TrackerTopology* tTopo = &iSetup.getData(tTopoToken_);
86 
87  // reserve some space
88  std::vector<reco::MuonQuality> valuesQual;
89  valuesQual.reserve(glbMuons->size());
90 
91  int trackIndex = 0;
92  for (reco::TrackCollection::const_iterator track = glbMuons->begin(); track != glbMuons->end();
93  ++track, ++trackIndex) {
94  reco::TrackRef glbRef(glbMuons, trackIndex);
95  reco::TrackRef staTrack = reco::TrackRef();
96 
97  std::vector<Trajectory> refitted = theGlbRefitter->refit(*track, 1, tTopo);
98 
99  LogTrace(theCategory) << "GLBQual N refitted " << refitted.size();
100 
101  std::pair<double, double> thisKink;
102  double relative_muon_chi2 = 0.0;
103  double relative_tracker_chi2 = 0.0;
104  double glbTrackProbability = 0.0;
105  if (!refitted.empty()) {
106  thisKink = kink(refitted.front());
107  std::pair<double, double> chi = newChi2(refitted.front());
108  relative_muon_chi2 = chi.second; //normalized inside to /sum(muHits.dimension)
109  relative_tracker_chi2 = chi.first; //normalized inside to /sum(tkHits.dimension)
110  glbTrackProbability = trackProbability(refitted.front());
111  }
112 
113  LogTrace(theCategory) << "GLBQual: Kink " << thisKink.first << " " << thisKink.second;
114  LogTrace(theCategory) << "GLBQual: Rel Chi2 " << relative_tracker_chi2 << " " << relative_muon_chi2;
115  LogTrace(theCategory) << "GLBQual: trackProbability " << glbTrackProbability;
116 
117  // Fill the STA-TK match information
118  float chi2, d, dist, Rpos;
119  chi2 = d = dist = Rpos = -1.0;
120  bool passTight = false;
122  if (linkCollectionHandle.isValid()) {
123  for (reco::MuonTrackLinksCollection::const_iterator links = linkCollectionHandle->begin();
124  links != linkCollectionHandle->end();
125  ++links) {
126  if (links->trackerTrack().isNull() || links->standAloneTrack().isNull() || links->globalTrack().isNull()) {
127  edm::LogWarning(theCategory) << "Global muon links to constituent tracks are invalid. There should be no "
128  "such object. Muon is skipped.";
129  continue;
130  }
131  if (links->globalTrack() == glbRef) {
132  staTrack = !links->standAloneTrack().isNull() ? links->standAloneTrack() : reco::TrackRef();
133  TrackCand staCand = TrackCand((Trajectory*)nullptr, links->standAloneTrack());
134  TrackCand tkCand = TrackCand((Trajectory*)nullptr, links->trackerTrack());
135  chi2 = theGlbMatcher->match(staCand, tkCand, 0, 0);
136  d = theGlbMatcher->match(staCand, tkCand, 1, 0);
137  Rpos = theGlbMatcher->match(staCand, tkCand, 2, 0);
138  dist = theGlbMatcher->match(staCand, tkCand, 3, 0);
139  passTight = theGlbMatcher->matchTight(staCand, tkCand);
140  }
141  }
142  }
143 
144  if (!staTrack.isNull())
145  LogTrace(theCategory) << "GLBQual: Used UpdatedAtVtx : "
146  << (iEvent.getStableProvenance(staTrack.id()).productInstanceName() ==
147  std::string("UpdatedAtVtx"));
148 
149  float maxFloat01 =
150  std::numeric_limits<float>::max() * 0.1; // a better solution would be to use float above .. m/be not
151  reco::MuonQuality muQual;
152  if (!staTrack.isNull())
153  muQual.updatedSta =
154  iEvent.getStableProvenance(staTrack.id()).productInstanceName() == std::string("UpdatedAtVtx");
155  muQual.trkKink = thisKink.first > maxFloat01 ? maxFloat01 : thisKink.first;
156  muQual.glbKink = thisKink.second > maxFloat01 ? maxFloat01 : thisKink.second;
157  muQual.trkRelChi2 = relative_tracker_chi2 > maxFloat01 ? maxFloat01 : relative_tracker_chi2;
158  muQual.staRelChi2 = relative_muon_chi2 > maxFloat01 ? maxFloat01 : relative_muon_chi2;
159  muQual.tightMatch = passTight;
160  muQual.chi2LocalPosition = dist;
161  muQual.chi2LocalMomentum = chi2;
162  muQual.localDistance = d;
163  muQual.globalDeltaEtaPhi = Rpos;
164  muQual.glbTrackProbability = glbTrackProbability;
165  valuesQual.push_back(muQual);
166  }
167 
168  /*
169  for(int i = 0; i < valuesTkRelChi2.size(); i++) {
170  LogTrace(theCategory)<<"value " << valuesTkRelChi2[i] ;
171  }
172  */
173 
174  // create and fill value maps
175  auto outQual = std::make_unique<edm::ValueMap<reco::MuonQuality>>();
176  edm::ValueMap<reco::MuonQuality>::Filler fillerQual(*outQual);
177  fillerQual.insert(glbMuons, valuesQual.begin(), valuesQual.end());
178  fillerQual.fill();
179 
180  // put value map into event
181  iEvent.put(std::move(outQual));
182 }
float chi2LocalPosition
chi2 value for the STA-TK matching of local position
Definition: MuonQuality.h:19
ProductID id() const
Accessor for product ID.
Definition: Ref.h:244
float chi2LocalMomentum
chi2 value for the STA-TK matching of local momentum
Definition: MuonQuality.h:21
std::pair< const Trajectory *, reco::TrackRef > TrackCand
bool updatedSta
bool returns true if standAloneMuon_updatedAtVtx was used in the fit
Definition: MuonQuality.h:9
float glbKink
value of the kink algorithm applied to the global track
Definition: MuonQuality.h:13
edm::EDGetTokenT< reco::TrackCollection > glbMuonsToken
float glbTrackProbability
the tail probability (-ln(P)) of the global fit
Definition: MuonQuality.h:29
void setServices(const edm::EventSetup &)
set the services needed by the TrackTransformer
float trkKink
value of the kink algorithm applied to the inner track stub
Definition: MuonQuality.h:11
float trkRelChi2
chi2 value for the inner track stub with respect to the global track
Definition: MuonQuality.h:15
#define LogTrace(id)
int iEvent
Definition: GenABIO.cc:224
bool tightMatch
if the STA-TK matching passed the tighter matching criteria
Definition: MuonQuality.h:27
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
bool matchTight(const TrackCand &sta, const TrackCand &track) const
check if two tracks are compatible (less than Chi2Cut, DeltaDCut, DeltaRCut)
bool getData(T &iHolder) const
Definition: EventSetup.h:122
float globalDeltaEtaPhi
global delta-Eta-Phi of STA-TK matching
Definition: MuonQuality.h:25
bool isNull() const
Checks for null.
Definition: Ref.h:235
double match(const TrackCand &sta, const TrackCand &track, int matchOption=0, int surfaceOption=1) const
d
Definition: ztail.py:151
virtual std::pair< double, double > newChi2(Trajectory &muon) const
virtual void setEvent(const edm::Event &)
pass the Event to the algo at each event
float staRelChi2
chi2 value for the outer track stub with respect to the global track
Definition: MuonQuality.h:17
virtual double trackProbability(Trajectory &track) const
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:20
edm::EDGetTokenT< reco::MuonTrackLinksCollection > linkCollectionToken
bool isValid() const
Definition: HandleBase.h:70
float localDistance
local distance seperation for STA-TK TSOS matching on same surface
Definition: MuonQuality.h:23
GlobalMuonTrackMatcher * theGlbMatcher
std::vector< Trajectory > refit(const reco::Track &globalTrack, const int theMuonHitsOption, const TrackerTopology *tTopo) const
build combined trajectory from sta Track and tracker RecHits
void update(const edm::EventSetup &setup, bool duringEvent=true)
update the services each event
const edm::EventSetup & eventSetup() const
virtual std::pair< double, double > kink(Trajectory &muon) const
Log< level::Warning, false > LogWarning
def move(src, dest)
Definition: eostools.py:511

◆ trackProbability()

double GlobalTrackQualityProducer::trackProbability ( Trajectory track) const
privatevirtual

Definition at line 311 of file GlobalTrackQualityProducer.cc.

References LnChiSquaredProbability(), and HLT_2022v12_cff::track.

Referenced by produce().

311  {
312  if (track.ndof() > 0 && track.chiSquared() > 0) {
313  return -LnChiSquaredProbability(track.chiSquared(), track.ndof());
314  } else {
315  return 0.0;
316  }
317 }
float LnChiSquaredProbability(double chiSquared, double nrDOF)

Member Data Documentation

◆ glbMuonsToken

edm::EDGetTokenT<reco::TrackCollection> GlobalTrackQualityProducer::glbMuonsToken
private

Definition at line 45 of file GlobalTrackQualityProducer.h.

Referenced by GlobalTrackQualityProducer(), and produce().

◆ inputCollection_

edm::InputTag GlobalTrackQualityProducer::inputCollection_
private

Definition at line 43 of file GlobalTrackQualityProducer.h.

Referenced by GlobalTrackQualityProducer().

◆ inputLinksCollection_

edm::InputTag GlobalTrackQualityProducer::inputLinksCollection_
private

Definition at line 44 of file GlobalTrackQualityProducer.h.

Referenced by GlobalTrackQualityProducer().

◆ linkCollectionToken

edm::EDGetTokenT<reco::MuonTrackLinksCollection> GlobalTrackQualityProducer::linkCollectionToken
private

Definition at line 46 of file GlobalTrackQualityProducer.h.

Referenced by GlobalTrackQualityProducer(), and produce().

◆ theEstimator

MeasurementEstimator* GlobalTrackQualityProducer::theEstimator
private

◆ theGlbMatcher

GlobalMuonTrackMatcher* GlobalTrackQualityProducer::theGlbMatcher
private

◆ theGlbRefitter

GlobalMuonRefitter* GlobalTrackQualityProducer::theGlbRefitter
private

◆ theService

MuonServiceProxy* GlobalTrackQualityProducer::theService
private

◆ tTopoToken_

const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> GlobalTrackQualityProducer::tTopoToken_
private

Definition at line 47 of file GlobalTrackQualityProducer.h.

Referenced by produce().