CMS 3D CMS Logo

ExhaustiveMuonTrajectoryBuilder.cc
Go to the documentation of this file.
5 
7  const MuonServiceProxy* proxy,
9  : theTrajBuilder(pset, proxy, iC), theSeeder(), theService(proxy) {}
10 
12 
14  LocalTrajectoryParameters localTrajectoryParameters(seed.startingState().parameters());
15  LocalVector p(localTrajectoryParameters.momentum());
16  int rawId = seed.startingState().detId();
17  DetId detId(rawId);
18  bool isBarrel = (detId.subdetId() == 1);
19  // homemade local-to-global
20  double pt = (isBarrel) ? -p.z() : p.perp();
21  pt *= localTrajectoryParameters.charge();
22  float err00 = seed.startingState().error(0);
23  // float p_err = sqr(sptmean/(ptmean*ptmean));
24  // mat[0][0]= p_err;
25  float sigmapt = sqrt(err00) * pt * pt;
26  TrajectorySeed::range range = seed.recHits();
28  // Make a new seed based on each segment, using the original pt and sigmapt
29  for (TrajectorySeed::const_iterator recHitItr = range.first; recHitItr != range.second; ++recHitItr) {
30  const GeomDet* geomDet = theService->trackingGeometry()->idToDet((*recHitItr).geographicalId());
32  MuonTransientTrackingRecHit::specificBuild(geomDet, &*recHitItr);
33  TrajectorySeed tmpSeed(theSeeder.createSeed(pt, sigmapt, muonRecHit));
35  result.insert(
36  result.end(), std::make_move_iterator(trajectories.begin()), std::make_move_iterator(trajectories.end()));
37  }
38  return result;
39 }
40 
42  return CandidateContainer();
43 }
44 
46 
48  // choose the one with the most hits, and the smallest chi-squared
49  if (trajectories.empty()) {
50  return;
51  }
52  int best_nhits = 0;
53  unsigned best = 0;
54  unsigned ntraj = trajectories.size();
55  for (unsigned i = 0; i < ntraj; ++i) {
56  int nhits = trajectories[i]->foundHits();
57  if (nhits > best_nhits) {
58  best_nhits = nhits;
59  best = i;
60  } else if (nhits == best_nhits && trajectories[i]->chiSquared() < trajectories[best]->chiSquared()) {
61  best = i;
62  }
63  }
65  result.reserve(1);
66  result.emplace_back(std::move(trajectories[best]));
67  trajectories.swap(result);
68 }
Vector3DBase< float, LocalTag >
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
mps_fire.i
i
Definition: mps_fire.py:355
MuonTransientTrackingRecHit::specificBuild
static MuonRecHitPointer specificBuild(const GeomDet *geom, const TrackingRecHit *rh)
Definition: MuonTransientTrackingRecHit.h:75
GeomDet
Definition: GeomDet.h:27
ExhaustiveMuonTrajectoryBuilder::theSeeder
MuonSeedFromRecHits theSeeder
Definition: ExhaustiveMuonTrajectoryBuilder.h:35
ExhaustiveMuonTrajectoryBuilder::~ExhaustiveMuonTrajectoryBuilder
~ExhaustiveMuonTrajectoryBuilder() override
Definition: ExhaustiveMuonTrajectoryBuilder.cc:11
TrajectorySeed::range
std::pair< const_iterator, const_iterator > range
Definition: TrajectorySeed.h:21
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
ExhaustiveMuonTrajectoryBuilder::theService
const MuonServiceProxy * theService
Definition: ExhaustiveMuonTrajectoryBuilder.h:36
TrajectorySeed::const_iterator
recHitContainer::const_iterator const_iterator
Definition: TrajectorySeed.h:20
FastTrackerRecHitMaskProducer_cfi.trajectories
trajectories
Definition: FastTrackerRecHitMaskProducer_cfi.py:7
ExhaustiveMuonTrajectoryBuilder::clean
void clean(TrajectoryContainer &trajectories) const
Definition: ExhaustiveMuonTrajectoryBuilder.cc:47
MuonTrajectoryBuilder::CandidateContainer
MuonCandidate::CandidateContainer CandidateContainer
Definition: MuonTrajectoryBuilder.h:24
LocalTrajectoryParameters
Definition: LocalTrajectoryParameters.h:25
DetId
Definition: DetId.h:17
MuonTransientTrackingRecHit::MuonRecHitPointer
std::shared_ptr< MuonTransientTrackingRecHit > MuonRecHitPointer
Definition: MuonTransientTrackingRecHit.h:21
StandAloneMuonTrajectoryBuilder::trajectories
TrajectoryContainer trajectories(const TrajectorySeed &) override
return a container of the reconstructed trajectories compatible with a given seed
Definition: StandAloneTrajectoryBuilder.cc:138
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
ExhaustiveMuonTrajectoryBuilder::theTrajBuilder
StandAloneMuonTrajectoryBuilder theTrajBuilder
Definition: ExhaustiveMuonTrajectoryBuilder.h:34
nhits
Definition: HIMultiTrackSelector.h:42
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
PixelPluginsPhase0_cfi.isBarrel
isBarrel
Definition: PixelPluginsPhase0_cfi.py:17
edm::ParameterSet
Definition: ParameterSet.h:36
StandAloneMuonTrajectoryBuilder::setEvent
void setEvent(const edm::Event &event) override
Pass the Event to the algo at each event.
Definition: StandAloneTrajectoryBuilder.cc:107
ExhaustiveMuonTrajectoryBuilder.h
eostools.move
def move(src, dest)
Definition: eostools.py:511
MuonTrajectoryBuilder::TrajectoryContainer
MuonCandidate::TrajectoryContainer TrajectoryContainer
Definition: MuonTrajectoryBuilder.h:23
ExhaustiveMuonTrajectoryBuilder::trajectories
TrajectoryContainer trajectories(const TrajectorySeed &) override
return a container of the reconstructed trajectories compatible with a given seed
Definition: ExhaustiveMuonTrajectoryBuilder.cc:13
MuonTransientTrackingRecHitBuilder.h
MuonServiceProxy::trackingGeometry
edm::ESHandle< GlobalTrackingGeometry > trackingGeometry() const
get the tracking geometry
Definition: MuonServiceProxy.h:59
ExhaustiveMuonTrajectoryBuilder::ExhaustiveMuonTrajectoryBuilder
ExhaustiveMuonTrajectoryBuilder(const edm::ParameterSet &pset, const MuonServiceProxy *, edm::ConsumesCollector &)
Definition: ExhaustiveMuonTrajectoryBuilder.cc:6
GlobalTrackingGeometry::idToDet
const GeomDet * idToDet(DetId) const override
Definition: GlobalTrackingGeometry.cc:44
MuonServiceProxy.h
TrajectorySeed
Definition: TrajectorySeed.h:17
MuonTrajectoryBuilder::TrackCand
std::pair< const Trajectory *, reco::TrackRef > TrackCand
Definition: MuonTrajectoryBuilder.h:25
mps_fire.result
result
Definition: mps_fire.py:303
ParameterSet.h
MuonServiceProxy
Definition: MuonServiceProxy.h:38
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
ExhaustiveMuonTrajectoryBuilder::setEvent
void setEvent(const edm::Event &event) override
pass the Event to the algo at each event
Definition: ExhaustiveMuonTrajectoryBuilder.cc:45
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
SurveyInfoScenario_cff.seed
seed
Definition: SurveyInfoScenario_cff.py:295
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
MuonSeedFromRecHits::createSeed
TrajectorySeed createSeed(float ptmean, float sptmean, MuonTransientTrackingRecHit::ConstMuonRecHitPointer last) const
Definition: MuonSeedFromRecHits.cc:38