CMS 3D CMS Logo

GlobalTrajectoryBuilderBase.cc
Go to the documentation of this file.
1 
21 
22 //---------------
23 // C++ Headers --
24 //---------------
25 
26 #include <iostream>
27 #include <algorithm>
28 #include <limits>
29 
30 //-------------------------------
31 // Collaborating Class Headers --
32 //-------------------------------
33 
37 
42 
44 
49 
54 
61 
66 
69 
72 
73 //----------------
74 // Constructors --
75 //----------------
79  : theLayerMeasurements(nullptr),
80  theTrackTransformer(nullptr),
81  theRegionBuilder(nullptr),
82  theService(service),
83  theGlbRefitter(nullptr) {
84  theCategory =
85  par.getUntrackedParameter<std::string>("Category", "Muon|RecoMuon|GlobalMuon|GlobalTrajectoryBuilderBase");
86 
87  edm::ParameterSet trackMatcherPSet = par.getParameter<edm::ParameterSet>("GlobalMuonTrackMatcher");
88  theTrackMatcher = new GlobalMuonTrackMatcher(trackMatcherPSet, theService);
89 
90  theTrackerPropagatorName = par.getParameter<std::string>("TrackerPropagator");
91 
92  edm::ParameterSet trackTransformerPSet = par.getParameter<edm::ParameterSet>("TrackTransformer");
93  theTrackTransformer = new TrackTransformer(trackTransformerPSet);
94 
95  edm::ParameterSet regionBuilderPSet = par.getParameter<edm::ParameterSet>("MuonTrackingRegionBuilder");
96 
97  theRegionBuilder = new MuonTrackingRegionBuilder(regionBuilderPSet, iC);
98 
99  // TrackRefitter parameters
100  edm::ParameterSet refitterParameters = par.getParameter<edm::ParameterSet>("GlbRefitterParameters");
101  theGlbRefitter = new GlobalMuonRefitter(refitterParameters, theService, iC);
102 
103  theMuonHitsOption = refitterParameters.getParameter<int>("MuonHitsOption");
104  theRefitFlag = refitterParameters.getParameter<bool>("RefitFlag");
105 
106  theTrackerRecHitBuilderName = par.getParameter<std::string>("TrackerRecHitBuilder");
107  theMuonRecHitBuilderName = par.getParameter<std::string>("MuonRecHitBuilder");
108 
109  theRPCInTheFit = par.getParameter<bool>("RefitRPCHits");
110 
111  theTECxScale = par.getParameter<double>("ScaleTECxFactor");
112  theTECyScale = par.getParameter<double>("ScaleTECyFactor");
113  thePtCut = par.getParameter<double>("PtCut");
114  thePCut = par.getParameter<double>("PCut");
115 
116  theCacheId_TRH = 0;
117 }
118 
119 //--------------
120 // Destructor --
121 //--------------
123  if (theTrackMatcher)
124  delete theTrackMatcher;
125  if (theRegionBuilder)
126  delete theRegionBuilder;
128  delete theTrackTransformer;
129  if (theGlbRefitter)
130  delete theGlbRefitter;
131 }
132 
133 //
134 // set Event
135 //
137  theEvent = &event;
138 
141 
144 
145  unsigned long long newCacheId_TRH = theService->eventSetup().get<TransientRecHitRecord>().cacheIdentifier();
146  if (newCacheId_TRH != theCacheId_TRH) {
147  LogDebug(theCategory) << "TransientRecHitRecord changed!";
148  theCacheId_TRH = newCacheId_TRH;
151  }
152 
153  //Retrieve tracker topology from geometry
156  theTopo = tTopoHand.product();
157 }
158 
159 //
160 // build a combined tracker-muon trajectory
161 //
163  MuonCandidate::CandidateContainer& tkTrajs) const {
164  LogTrace(theCategory) << " Begin Build" << std::endl;
165 
166  // tracker trajectory should be built and refit before this point
167  if (tkTrajs.empty())
168  return CandidateContainer();
169 
170  // add muon hits and refit/smooth trajectories
171  CandidateContainer refittedResult;
172  ConstRecHitContainer muonRecHits = getTransientRecHits(*(staCand.second));
173 
174  // check order of muon measurements
175  if ((muonRecHits.size() > 1) &&
176  (muonRecHits.front()->globalPosition().mag() > muonRecHits.back()->globalPosition().mag())) {
177  LogTrace(theCategory) << " reverse order: ";
178  }
179 
180  for (auto&& it : tkTrajs) {
181  // cut on tracks with low momenta
182  LogTrace(theCategory) << " Track p and pT " << it->trackerTrack()->p() << " " << it->trackerTrack()->pt();
183  if (it->trackerTrack()->p() < thePCut || it->trackerTrack()->pt() < thePtCut)
184  continue;
185 
186  // If true we will run theGlbRefitter->refit from all hits
187  if (theRefitFlag) {
188  ConstRecHitContainer trackerRecHits;
189  if (it->trackerTrack().isNonnull()) {
190  trackerRecHits = getTransientRecHits(*it->trackerTrack());
191  } else {
192  LogDebug(theCategory) << " NEED HITS FROM TRAJ";
193  }
194 
195  // ToDo: Do we need the following ?:
196  // check for single TEC RecHits in trajectories in the overalp region
197  if (std::abs(it->trackerTrack()->eta()) > 0.95 && std::abs(it->trackerTrack()->eta()) < 1.15 &&
198  it->trackerTrack()->pt() < 60) {
199  if (theTECxScale < 0 || theTECyScale < 0)
200  trackerRecHits = selectTrackerHits(trackerRecHits);
201  else
202  fixTEC(trackerRecHits, theTECxScale, theTECyScale);
203  }
204 
205  RefitDirection recHitDir = checkRecHitsOrdering(trackerRecHits);
206  if (recHitDir == outToIn)
207  reverse(trackerRecHits.begin(), trackerRecHits.end());
208 
209  reco::TransientTrack tTT(it->trackerTrack(), &*theService->magneticField(), theService->trackingGeometry());
210  TrajectoryStateOnSurface innerTsos = tTT.innermostMeasurementState();
211 
213  if (it->trackerTrack()->seedRef().isAvailable())
214  tmpSeed = it->trackerTrack()->seedRef();
215 
216  if (!innerTsos.isValid()) {
217  LogTrace(theCategory) << " inner Trajectory State is invalid. ";
218  continue;
219  }
220 
221  innerTsos.rescaleError(100.);
222 
223  TC refitted0, refitted1;
224  std::unique_ptr<Trajectory> tkTrajectory;
225 
226  // tracker only track
227  if (!(it->trackerTrajectory() && it->trackerTrajectory()->isValid())) {
228  refitted0 = theTrackTransformer->transform(it->trackerTrack());
229  if (!refitted0.empty())
230  tkTrajectory = std::make_unique<Trajectory>(*(refitted0.begin()));
231  else
232  edm::LogWarning(theCategory) << " Failed to load tracker track trajectory";
233  } else
234  tkTrajectory = it->releaseTrackerTrajectory();
235  if (tkTrajectory)
236  tkTrajectory->setSeedRef(tmpSeed);
237 
238  // full track with all muon hits using theGlbRefitter
239  ConstRecHitContainer allRecHits = trackerRecHits;
240  allRecHits.insert(allRecHits.end(), muonRecHits.begin(), muonRecHits.end());
241  refitted1 = theGlbRefitter->refit(*it->trackerTrack(), tTT, allRecHits, theMuonHitsOption, theTopo);
242  LogTrace(theCategory) << " This track-sta refitted to " << refitted1.size() << " trajectories";
243 
244  std::unique_ptr<Trajectory> glbTrajectory1;
245  if (!refitted1.empty())
246  glbTrajectory1 = std::make_unique<Trajectory>(*(refitted1.begin()));
247  else
248  LogDebug(theCategory) << " Failed to load global track trajectory 1";
249  if (glbTrajectory1)
250  glbTrajectory1->setSeedRef(tmpSeed);
251 
252  if (glbTrajectory1 && tkTrajectory) {
253  refittedResult.emplace_back(std::make_unique<MuonCandidate>(
254  std::move(glbTrajectory1), it->muonTrack(), it->trackerTrack(), std::move(tkTrajectory)));
255  }
256  } else {
258  if (it->trackerTrack()->seedRef().isAvailable())
259  tmpSeed = it->trackerTrack()->seedRef();
260 
261  TC refitted0;
262  std::unique_ptr<Trajectory> tkTrajectory;
263  if (!(it->trackerTrajectory() && it->trackerTrajectory()->isValid())) {
264  refitted0 = theTrackTransformer->transform(it->trackerTrack());
265  if (!refitted0.empty()) {
266  tkTrajectory = std::make_unique<Trajectory>(*(refitted0.begin()));
267  } else
268  edm::LogWarning(theCategory) << " Failed to load tracker track trajectory";
269  } else
270  tkTrajectory = it->releaseTrackerTrajectory();
271  std::unique_ptr<Trajectory> cpy;
272  if (tkTrajectory) {
273  tkTrajectory->setSeedRef(tmpSeed);
274  cpy = std::make_unique<Trajectory>(*tkTrajectory);
275  }
276  // Creating MuonCandidate using only the tracker trajectory:
277  refittedResult.emplace_back(std::make_unique<MuonCandidate>(
278  std::move(tkTrajectory), it->muonTrack(), it->trackerTrack(), std::move(cpy)));
279  }
280  }
281 
282  // choose the best global fit for this Standalone Muon based on the track probability
283  CandidateContainer selectedResult;
284  std::unique_ptr<MuonCandidate> tmpCand;
286 
287  for (auto&& cand : refittedResult) {
288  double prob = trackProbability(*cand->trajectory());
289  LogTrace(theCategory) << " refitted-track-sta with pT " << cand->trackerTrack()->pt() << " has probability "
290  << prob;
291 
292  if (prob < minProb or not tmpCand) {
293  minProb = prob;
294  tmpCand = std::move(cand);
295  }
296  }
297 
298  if (tmpCand)
299  selectedResult.push_back(std::move(tmpCand));
300 
301  refittedResult.clear();
302 
303  return selectedResult;
304 }
305 
306 //
307 // select tracker tracks within a region of interest
308 //
309 std::vector<GlobalTrajectoryBuilderBase::TrackCand> GlobalTrajectoryBuilderBase::chooseRegionalTrackerTracks(
310  const TrackCand& staCand, const std::vector<TrackCand>& tkTs) {
311  // define eta-phi region
312  RectangularEtaPhiTrackingRegion regionOfInterest = defineRegionOfInterest(staCand.second);
313 
314  // get region's etaRange and phiMargin
315  //UNUSED: PixelRecoRange<float> etaRange = regionOfInterest.etaRange();
316  //UNUSED: TkTrackingRegionsMargin<float> phiMargin = regionOfInterest.phiMargin();
317 
318  std::vector<TrackCand> result;
319 
320  double deltaR_max = 1.0;
321 
322  for (auto&& is : tkTs) {
323  double deltaR_tmp = deltaR(static_cast<double>(regionOfInterest.direction().eta()),
324  static_cast<double>(regionOfInterest.direction().phi()),
325  is.second->eta(),
326  is.second->phi());
327 
328  // for each trackCand in region, add trajectory and add to result
329  //if ( inEtaRange && inPhiRange ) {
330  if (deltaR_tmp < deltaR_max) {
331  TrackCand tmpCand = TrackCand(is);
332  result.push_back(tmpCand);
333  }
334  }
335 
336  return result;
337 }
338 
339 //
340 // define a region of interest within the tracker
341 //
343  const reco::TrackRef& staTrack) const {
344  std::unique_ptr<RectangularEtaPhiTrackingRegion> region1 = theRegionBuilder->region(staTrack);
345 
346  TkTrackingRegionsMargin<float> etaMargin(std::abs(region1->etaRange().min() - region1->etaRange().mean()),
347  std::abs(region1->etaRange().max() - region1->etaRange().mean()));
348 
349  RectangularEtaPhiTrackingRegion region2(region1->direction(),
350  region1->origin(),
351  region1->ptMin(),
352  region1->originRBound(),
353  region1->originZBound(),
354  etaMargin,
355  region1->phiMargin());
356 
357  return region2;
358 }
359 
360 //
361 // calculate the tail probability (-ln(P)) of a fit
362 //
364  if (track.ndof() > 0 && track.chiSquared() > 0) {
365  return -LnChiSquaredProbability(track.chiSquared(), track.ndof());
366  } else {
367  return 0.0;
368  }
369 }
370 
371 //
372 // print RecHits
373 //
375  LogTrace(theCategory) << "Used RecHits: " << hits.size();
376  for (auto&& ir : hits) {
377  if (!ir->isValid()) {
378  LogTrace(theCategory) << "invalid RecHit";
379  continue;
380  }
381 
382  const GlobalPoint& pos = ir->globalPosition();
383 
384  LogTrace(theCategory) << "r = " << sqrt(pos.x() * pos.x() + pos.y() * pos.y()) << " z = " << pos.z()
385  << " dimension = " << ir->dimension() << " " << ir->det()->geographicalId().det() << " "
386  << ir->det()->subDetector();
387  }
388 }
389 
390 //
391 // check order of RechIts on a trajectory
392 //
395  if (!recHits.empty()) {
396  ConstRecHitContainer::const_iterator frontHit = recHits.begin();
397  ConstRecHitContainer::const_iterator backHit = recHits.end() - 1;
398  while (!(*frontHit)->isValid() && frontHit != backHit) {
399  frontHit++;
400  }
401  while (!(*backHit)->isValid() && backHit != frontHit) {
402  backHit--;
403  }
404 
405  double rFirst = (*frontHit)->globalPosition().mag();
406  double rLast = (*backHit)->globalPosition().mag();
407 
408  if (rFirst < rLast)
409  return inToOut;
410  else if (rFirst > rLast)
411  return outToIn;
412  else {
413  edm::LogError(theCategory) << "Impossible to determine the rechits order" << std::endl;
414  return undetermined;
415  }
416  } else {
417  edm::LogError(theCategory) << "Impossible to determine the rechits order" << std::endl;
418  return undetermined;
419  }
420 }
421 
422 //
423 // select trajectories with only a single TEC hit
424 //
426  const ConstRecHitContainer& all) const {
427  int nTEC(0);
428 
430  for (auto&& i : all) {
431  if (!i->isValid())
432  continue;
433  if (i->det()->geographicalId().det() == DetId::Tracker &&
434  i->det()->geographicalId().subdetId() == StripSubdetector::TEC) {
435  nTEC++;
436  } else {
437  hits.push_back(i);
438  }
439  if (nTEC > 1)
440  return all;
441  }
442 
443  return hits;
444 }
445 
446 //
447 // rescale errors of outermost TEC RecHit
448 //
449 void GlobalTrajectoryBuilderBase::fixTEC(ConstRecHitContainer& all, double scl_x, double scl_y) const {
450  int nTEC(0);
451  ConstRecHitContainer::iterator lone_tec;
452 
453  for (ConstRecHitContainer::iterator i = all.begin(); i != all.end(); i++) {
454  if (!(*i)->isValid())
455  continue;
456 
457  if ((*i)->det()->geographicalId().det() == DetId::Tracker &&
458  (*i)->det()->geographicalId().subdetId() == StripSubdetector::TEC) {
459  lone_tec = i;
460  nTEC++;
461 
462  if ((i + 1) != all.end() && (*(i + 1))->isValid() &&
463  (*(i + 1))->det()->geographicalId().det() == DetId::Tracker &&
464  (*(i + 1))->det()->geographicalId().subdetId() == StripSubdetector::TEC) {
465  nTEC++;
466  break;
467  }
468  }
469 
470  if (nTEC > 1)
471  break;
472  }
473 
474  int hitDet = (*lone_tec)->hit()->geographicalId().det();
475  int hitSubDet = (*lone_tec)->hit()->geographicalId().subdetId();
476  if (nTEC == 1 && (*lone_tec)->hit()->isValid() && hitDet == DetId::Tracker && hitSubDet == StripSubdetector::TEC) {
477  // rescale the TEC rechit error matrix in its rotated frame
478  const SiStripRecHit2D* strip = dynamic_cast<const SiStripRecHit2D*>((*lone_tec)->hit());
479  if (strip && strip->det()) {
480  LocalPoint pos = strip->localPosition();
481  if ((*lone_tec)->detUnit()) {
482  const StripTopology* topology = dynamic_cast<const StripTopology*>(&(*lone_tec)->detUnit()->topology());
483  if (topology) {
484  // rescale the local error along/perp the strip by a factor
485  float angle = topology->stripAngle(topology->strip((*lone_tec)->hit()->localPosition()));
486  LocalError error = strip->localPositionError();
487  LocalError rotError = error.rotate(angle);
488  LocalError scaledError(rotError.xx() * scl_x * scl_x, 0, rotError.yy() * scl_y * scl_y);
489  error = scaledError.rotate(-angle);
494  SiStripRecHit2D* st = new SiStripRecHit2D(pos, error, *strip->det(), strip->cluster());
495  *lone_tec = MuonTransientTrackingRecHit::build((*lone_tec)->det(), st);
496  }
497  }
498  }
499  }
500 }
501 
503 //
504 // get transient RecHits
505 //
507  const reco::Track& track) const {
509 
512 
513  auto tkbuilder = static_cast<TkTransientTrackingRecHitBuilder const*>(theTrackerRecHitBuilder.product());
514  auto hitCloner = tkbuilder->cloner();
515  for (trackingRecHit_iterator hit = track.recHitsBegin(); hit != track.recHitsEnd(); ++hit) {
516  if ((*hit)->isValid()) {
517  DetId recoid = (*hit)->geographicalId();
518  if (recoid.det() == DetId::Tracker) {
519  if (!(*hit)->hasPositionAndError()) {
520  TrajectoryStateOnSurface predTsos =
522  ->propagate(currTsos, theService->trackingGeometry()->idToDet(recoid)->surface());
523 
524  if (!predTsos.isValid()) {
525  edm::LogError("MissingTransientHit")
526  << "Could not get a tsos on the hit surface. We will miss a tracking hit.";
527  continue;
528  }
529  currTsos = predTsos;
530  auto h = (**hit).cloneForFit(*tkbuilder->geometry()->idToDet((**hit).geographicalId()));
531  result.emplace_back(hitCloner.makeShared(h, predTsos));
532  } else {
533  result.push_back((*hit)->cloneSH());
534  }
535  } else if (recoid.det() == DetId::Muon) {
536  if ((*hit)->geographicalId().subdetId() == 3 && !theRPCInTheFit) {
537  LogDebug(theCategory) << "RPC Rec Hit discarded";
538  continue;
539  }
540  result.push_back(theMuonRecHitBuilder->build(&**hit));
541  }
542  }
543  }
544 
545  return result;
546 }
GlobalTrajectoryBuilderBase::RefitDirection
RefitDirection
Definition: GlobalTrajectoryBuilderBase.h:70
GlobalMuonRefitter_cff.GlobalMuonRefitter
GlobalMuonRefitter
Definition: GlobalMuonRefitter_cff.py:3
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
GlobalTrajectoryBuilderBase::chooseRegionalTrackerTracks
std::vector< TrackCand > chooseRegionalTrackerTracks(const TrackCand &, const std::vector< TrackCand > &)
choose tracker tracks within region of interest
Definition: GlobalTrajectoryBuilderBase.cc:309
service
Definition: service.py:1
GlobalTrajectoryBuilderBase::thePtCut
float thePtCut
Definition: GlobalTrajectoryBuilderBase.h:144
TkTrackingRegionsMargin.h
mps_fire.i
i
Definition: mps_fire.py:355
GlobalMuonRefitter.h
GlobalTrajectoryBuilderBase.h
GlobalTrajectoryBuilderBase::theService
const MuonServiceProxy * theService
Definition: GlobalTrajectoryBuilderBase.h:152
MessageLogger.h
RectangularEtaPhiTrackingRegion
Definition: RectangularEtaPhiTrackingRegion.h:25
TrackExtraFwd.h
GlobalTrajectoryBuilderBase::theEvent
const edm::Event * theEvent
Definition: GlobalTrajectoryBuilderBase.h:161
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
GlobalTrajectoryBuilderBase::theTrackerPropagatorName
std::string theTrackerPropagatorName
Definition: GlobalTrajectoryBuilderBase.h:160
TrackTransformer::setServices
void setServices(const edm::EventSetup &) override
set the services needed by the TrackTransformer
Definition: TrackTransformer.cc:66
GlobalTrajectoryBuilderBase::theTrackerRecHitBuilder
edm::ESHandle< TransientTrackingRecHitBuilder > theTrackerRecHitBuilder
Definition: GlobalTrajectoryBuilderBase.h:163
digitizers_cfi.strip
strip
Definition: digitizers_cfi.py:19
GlobalMuonTrackMatcher.h
TransientRecHitRecord.h
DetId::det
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
GlobalTrajectoryBuilderBase::ConstRecHitContainer
TransientTrackingRecHit::ConstRecHitContainer ConstRecHitContainer
Definition: GlobalTrajectoryBuilderBase.h:45
pos
Definition: PixelAliasList.h:18
GlobalTrajectoryBuilderBase::theMuonRecHitBuilder
edm::ESHandle< TransientTrackingRecHitBuilder > theMuonRecHitBuilder
Definition: GlobalTrajectoryBuilderBase.h:165
HLT_2018_cff.TrackTransformer
TrackTransformer
Definition: HLT_2018_cff.py:8374
GlobalTrajectoryBuilderBase::GlobalTrajectoryBuilderBase
GlobalTrajectoryBuilderBase(const edm::ParameterSet &, const MuonServiceProxy *, edm::ConsumesCollector &)
constructor with Parameter Set and MuonServiceProxy
Definition: GlobalTrajectoryBuilderBase.cc:76
TransientRecHitRecord
Definition: TransientRecHitRecord.h:14
TrackTransformer::transform
std::vector< Trajectory > transform(const reco::Track &) const override
Convert a reco::Track into Trajectory.
Definition: TrackTransformer.cc:164
MuonTrackingRegionBuilder::region
std::unique_ptr< RectangularEtaPhiTrackingRegion > region(const reco::TrackRef &) const
Define tracking region.
Definition: MuonTrackingRegionBuilder.cc:117
ChiSquaredProbability.h
SiStripRecHit2D
Definition: SiStripRecHit2D.h:7
TrajectoryMeasurement.h
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
StripTopology.h
MuonTransientTrackingRecHit.h
MuonTrackingRegionBuilder.h
TransientTrack.h
TransientTrackingRecHitBuilder::build
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
GlobalTrajectoryBuilderBase::TC
std::vector< Trajectory > TC
Definition: GlobalTrajectoryBuilderBase.h:52
GlobalTrajectoryBuilderBase::build
MuonTrajectoryBuilder::CandidateContainer build(const TrackCand &, MuonTrajectoryBuilder::CandidateContainer &) const
build combined trajectory from sta Track and tracker RecHits
Definition: GlobalTrajectoryBuilderBase.cc:162
relativeConstraints.error
error
Definition: relativeConstraints.py:53
python.cmstools.all
def all(container)
workaround iterator generators for ROOT classes
Definition: cmstools.py:26
MuonTrajectoryBuilder::CandidateContainer
MuonCandidate::CandidateContainer CandidateContainer
Definition: MuonTrajectoryBuilder.h:24
CSCDetId.h
TkTransientTrackingRecHitBuilder.h
groupFilesInBlocks.reverse
reverse
Definition: groupFilesInBlocks.py:131
edm::Ref< TrackCollection >
GlobalTrajectoryBuilderBase::theTECxScale
float theTECxScale
Definition: GlobalTrajectoryBuilderBase.h:158
deltaR.h
MuonTrackingRegionBuilder::setEvent
virtual void setEvent(const edm::Event &)
Pass the Event to the algo at each event.
Definition: MuonTrackingRegionBuilder.cc:124
DetId
Definition: DetId.h:17
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
TrackerTopology.h
GlobalTrajectoryBuilderBase::theRefitFlag
bool theRefitFlag
Definition: GlobalTrajectoryBuilderBase.h:156
TrackerTopologyRcd.h
Track.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
GlobalTrajectoryBuilderBase::inToOut
Definition: GlobalTrajectoryBuilderBase.h:70
LocalError::xx
float xx() const
Definition: LocalError.h:22
ecaldqm::topology
const CaloTopology * topology(nullptr)
LnChiSquaredProbability
float LnChiSquaredProbability(double chiSquared, double nrDOF)
Definition: ChiSquaredProbability.cc:17
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
reco::Track
Definition: Track.h:27
edm::ESHandle< TrackerTopology >
h
GlobalTrajectoryBuilderBase::defineRegionOfInterest
RectangularEtaPhiTrackingRegion defineRegionOfInterest(const reco::TrackRef &) const
define region of interest with tracker
Definition: GlobalTrajectoryBuilderBase.cc:342
Point3DBase< float, GlobalTag >
DTChamberId.h
GlobalTrajectoryBuilderBase::theTrackMatcher
GlobalMuonTrackMatcher * theTrackMatcher
Definition: GlobalTrajectoryBuilderBase.h:148
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
edm::OwnVector::const_iterator
Definition: OwnVector.h:41
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
FastTrackerRecHitMaskProducer_cfi.recHits
recHits
Definition: FastTrackerRecHitMaskProducer_cfi.py:8
RPCDetId.h
edm::LogWarning
Definition: MessageLogger.h:141
GlobalTrajectoryBuilderBase::fixTEC
void fixTEC(ConstRecHitContainer &all, double scl_x, double scl_y) const
rescale errors of outermost TEC RecHit
Definition: GlobalTrajectoryBuilderBase.cc:449
MuonServiceProxy::eventSetup
const edm::EventSetup & eventSetup() const
Definition: MuonServiceProxy.h:76
GlobalTrajectoryBuilderBase::theTECyScale
float theTECyScale
Definition: GlobalTrajectoryBuilderBase.h:159
GlobalTrajectoryBuilderBase::setEvent
void setEvent(const edm::Event &) override
pass the Event to the algo at each event
Definition: GlobalTrajectoryBuilderBase.cc:136
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
DetId::Tracker
Definition: DetId.h:25
GlobalTrajectoryBuilderBase::theGlbRefitter
GlobalMuonRefitter * theGlbRefitter
Definition: GlobalTrajectoryBuilderBase.h:153
Event.h
GlobalTrajectoryBuilderBase::theTrackerRecHitBuilderName
std::string theTrackerRecHitBuilderName
Definition: GlobalTrajectoryBuilderBase.h:162
TrackingRecHit::ConstRecHitContainer
std::vector< ConstRecHitPointer > ConstRecHitContainer
Definition: TrackingRecHit.h:32
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
MuonCandidate.h
GlobalTrajectoryBuilderBase::~GlobalTrajectoryBuilderBase
~GlobalTrajectoryBuilderBase() override
destructor
Definition: GlobalTrajectoryBuilderBase.cc:122
LocalError
Definition: LocalError.h:12
GlobalTrajectoryBuilderBase::theCacheId_TRH
unsigned long long theCacheId_TRH
Definition: GlobalTrajectoryBuilderBase.h:154
GlobalTrajectoryBuilderBase::trackProbability
double trackProbability(const Trajectory &) const
calculate chi2 probability (-ln(P))
Definition: GlobalTrajectoryBuilderBase.cc:363
MuonTransientTrackingRecHit::build
static RecHitPointer build(const GeomDet *geom, const TrackingRecHit *rh)
FIXME virtual ConstMuonRecHitContainer specificTransientHits() const;.
Definition: MuonTransientTrackingRecHit.h:71
GlobalTrajectoryBuilderBase::outToIn
Definition: GlobalTrajectoryBuilderBase.h:70
MuonCandidate::CandidateContainer
std::vector< std::unique_ptr< MuonCandidate > > CandidateContainer
Definition: MuonCandidate.h:18
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
cand
Definition: decayParser.h:34
GlobalTrajectoryBuilderBase::theCategory
std::string theCategory
Definition: GlobalTrajectoryBuilderBase.h:143
TrackingRegion::direction
GlobalVector const & direction() const
the direction around which region is constructed
Definition: TrackingRegion.h:62
MuonServiceProxy::propagator
edm::ESHandle< Propagator > propagator(std::string propagatorName) const
get the propagator
Definition: MuonServiceProxy.cc:177
RefitDirection
Definition: RefitDirection.h:13
conversionTrackMerger_cfi.minProb
minProb
Definition: conversionTrackMerger_cfi.py:10
TkTrackingRegionsMargin< float >
Propagator::propagate
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
GlobalMuonRefitter::setServices
void setServices(const edm::EventSetup &)
set the services needed by the TrackTransformer
Definition: GlobalMuonRefitter.cc:163
get
#define get
HLT_2018_cff.MuonTrackingRegionBuilder
MuonTrackingRegionBuilder
Definition: HLT_2018_cff.py:8346
GlobalTrajectoryBuilderBase::theMuonHitsOption
int theMuonHitsOption
Definition: GlobalTrajectoryBuilderBase.h:157
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
GlobalTrajectoryBuilderBase::checkRecHitsOrdering
RefitDirection checkRecHitsOrdering(const ConstRecHitContainer &) const
This does nothing now.
Definition: GlobalTrajectoryBuilderBase.cc:393
eostools.move
def move(src, dest)
Definition: eostools.py:511
GlobalTrajectoryBuilderBase::theMuonRecHitBuilderName
std::string theMuonRecHitBuilderName
Definition: GlobalTrajectoryBuilderBase.h:164
GlobalMuonRefitter::setEvent
virtual void setEvent(const edm::Event &)
pass the Event to the algo at each event
Definition: GlobalMuonRefitter.cc:153
reco::TransientTrack
Definition: TransientTrack.h:19
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
GlobalTrajectoryBuilderBase::getTransientRecHits
TransientTrackingRecHit::ConstRecHitContainer getTransientRecHits(const reco::Track &) const
get transient RecHits of a Track
Definition: GlobalTrajectoryBuilderBase.cc:506
DetId.h
Trajectory
Definition: Trajectory.h:38
HLT_2018_cff.GlobalMuonTrackMatcher
GlobalMuonTrackMatcher
Definition: HLT_2018_cff.py:8323
MuonTransientTrackingRecHitBuilder.h
MuonServiceProxy::trackingGeometry
edm::ESHandle< GlobalTrackingGeometry > trackingGeometry() const
get the tracking geometry
Definition: MuonServiceProxy.h:59
TrackingComponentsRecord.h
GlobalTrackingGeometry::idToDet
const GeomDet * idToDet(DetId) const override
Definition: GlobalTrackingGeometry.cc:44
MuonServiceProxy.h
GlobalTrajectoryBuilderBase::thePCut
float thePCut
Definition: GlobalTrajectoryBuilderBase.h:145
angle
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11
MuonServiceProxy::magneticField
edm::ESHandle< MagneticField > magneticField() const
get the magnetic field
Definition: MuonServiceProxy.h:56
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
GlobalTrajectoryBuilderBase::theTrackTransformer
TrackTransformer * theTrackTransformer
Definition: GlobalTrajectoryBuilderBase.h:150
edm::RefToBase< TrajectorySeed >
MuonTrajectoryBuilder::TrackCand
std::pair< const Trajectory *, reco::TrackRef > TrackCand
Definition: MuonTrajectoryBuilder.h:25
TrajectoryStateTransform.h
GlobalTrajectoryBuilderBase::undetermined
Definition: GlobalTrajectoryBuilderBase.h:70
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
mps_fire.result
result
Definition: mps_fire.py:303
GlobalTrajectoryBuilderBase::theRegionBuilder
MuonTrackingRegionBuilder * theRegionBuilder
Definition: GlobalTrajectoryBuilderBase.h:151
DetId::Muon
Definition: DetId.h:26
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:671
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
ParameterSet.h
MuonServiceProxy
Definition: MuonServiceProxy.h:38
GlobalTrajectoryBuilderBase::printHits
void printHits(const ConstRecHitContainer &) const
print all RecHits of a trajectory
Definition: GlobalTrajectoryBuilderBase.cc:374
RecHitLessByDet.h
trajectoryStateTransform::innerStateOnSurface
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:110
event
Definition: event.py:1
GlobalMuonRefitter::refit
std::vector< Trajectory > refit(const reco::Track &globalTrack, const int theMuonHitsOption, const TrackerTopology *tTopo) const
build combined trajectory from sta Track and tracker RecHits
Definition: GlobalMuonRefitter.cc:182
edm::Event
Definition: Event.h:73
event
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of "!*" before the partial wildcard feature was incorporated). The per-event "cost" of each negative criterion with multiple relevant triggers is about the same as ! *was in the past
SiStripRecHit2D.h
StripTopology
Definition: StripTopology.h:11
TtFullHadEvtBuilder_cfi.prob
prob
Definition: TtFullHadEvtBuilder_cfi.py:33
LocalError::yy
float yy() const
Definition: LocalError.h:24
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
GlobalTrajectoryBuilderBase::selectTrackerHits
ConstRecHitContainer selectTrackerHits(const ConstRecHitContainer &) const
select tracker hits; exclude some tracker hits in the global trajectory
Definition: GlobalTrajectoryBuilderBase.cc:425
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
PixelRecoRange.h
hit
Definition: SiStripHitEffFromCalibTree.cc:88
GlobalTrajectoryBuilderBase::theRPCInTheFit
bool theRPCInTheFit
Definition: GlobalTrajectoryBuilderBase.h:155
GlobalTrajectoryBuilderBase::theTopo
const TrackerTopology * theTopo
Definition: GlobalTrajectoryBuilderBase.h:166