CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
MuonTrackFinder Class Reference

#include <MuonTrackFinder.h>

Public Types

typedef MuonCandidate::CandidateContainer CandidateContainer
 
typedef std::pair< const Trajectory *, reco::TrackRefTrackCand
 
typedef MuonCandidate::TrajectoryContainer TrajectoryContainer
 

Public Member Functions

 MuonTrackFinder (std::unique_ptr< MuonTrajectoryBuilder > ConcreteMuonTrajectoryBuilder, std::unique_ptr< MuonTrackLoader > trackLoader, edm::ConsumesCollector iC)
 Constructor, with default cleaner. For the STA reconstruction the trackLoader must have the propagator. More...
 
 MuonTrackFinder (std::unique_ptr< MuonTrajectoryBuilder > ConcreteMuonTrajectoryBuilder, std::unique_ptr< MuonTrackLoader > trackLoader, std::unique_ptr< MuonTrajectoryCleaner > cleaner, edm::ConsumesCollector iC)
 Constructor, with user-defined cleaner. For the STA reconstruction the trackLoader must have the propagator. More...
 
edm::OrphanHandle< reco::TrackCollectionreconstruct (const edm::Handle< edm::View< TrajectorySeed > > &, edm::Event &, const edm::EventSetup &)
 reconstruct standalone tracks starting from a collection of seeds More...
 
void reconstruct (const std::vector< TrackCand > &, edm::Event &, const edm::EventSetup &)
 
virtual ~MuonTrackFinder ()
 destructor More...
 

Private Member Functions

edm::OrphanHandle< reco::TrackCollectionload (TrajectoryContainer &, edm::Event &, const TrackerTopology &ttopo)
 convert the trajectories into tracks and load them in to the event More...
 
void load (CandidateContainer &, edm::Event &, const TrackerTopology &ttopo)
 convert the trajectories into tracks and load them in to the event More...
 
void setEvent (const edm::Event &)
 percolate the Event Setup More...
 

Private Attributes

std::unique_ptr< MuonTrackLoadertheTrackLoader
 
std::unique_ptr< MuonTrajectoryBuildertheTrajBuilder
 
std::unique_ptr< MuonTrajectoryCleanertheTrajCleaner
 
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtheTtopoToken
 

Detailed Description

Track finder for the Muon Reco

Author
R. Bellan - INFN Torino

Concrete Track finder for the Muon Reco

Author
R. Bellan - INFN Torino

Definition at line 26 of file MuonTrackFinder.h.

Member Typedef Documentation

◆ CandidateContainer

Definition at line 29 of file MuonTrackFinder.h.

◆ TrackCand

Definition at line 30 of file MuonTrackFinder.h.

◆ TrajectoryContainer

Definition at line 28 of file MuonTrackFinder.h.

Constructor & Destructor Documentation

◆ MuonTrackFinder() [1/2]

MuonTrackFinder::MuonTrackFinder ( std::unique_ptr< MuonTrajectoryBuilder ConcreteMuonTrajectoryBuilder,
std::unique_ptr< MuonTrackLoader trackLoader,
edm::ConsumesCollector  iC 
)

Constructor, with default cleaner. For the STA reconstruction the trackLoader must have the propagator.

Definition at line 29 of file MuonTrackFinder.cc.

32  : MuonTrackFinder(std::move(ConcreteMuonTrajectoryBuilder),
33  std::move(trackLoader),
34  std::make_unique<MuonTrajectoryCleaner>(),
35  iC) {}
MuonTrackFinder(std::unique_ptr< MuonTrajectoryBuilder > ConcreteMuonTrajectoryBuilder, std::unique_ptr< MuonTrackLoader > trackLoader, edm::ConsumesCollector iC)
Constructor, with default cleaner. For the STA reconstruction the trackLoader must have the propagato...
def move(src, dest)
Definition: eostools.py:511

◆ MuonTrackFinder() [2/2]

MuonTrackFinder::MuonTrackFinder ( std::unique_ptr< MuonTrajectoryBuilder ConcreteMuonTrajectoryBuilder,
std::unique_ptr< MuonTrackLoader trackLoader,
std::unique_ptr< MuonTrajectoryCleaner cleaner,
edm::ConsumesCollector  iC 
)

Constructor, with user-defined cleaner. For the STA reconstruction the trackLoader must have the propagator.

Definition at line 38 of file MuonTrackFinder.cc.

42  : theTtopoToken(iC.esConsumes()),
43  theTrajBuilder(std::move(ConcreteMuonTrajectoryBuilder)),
44  theTrajCleaner(std::move(cleaner)),
45  theTrackLoader(std::move(trackLoader)) {}
std::unique_ptr< MuonTrajectoryCleaner > theTrajCleaner
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > theTtopoToken
std::unique_ptr< MuonTrajectoryBuilder > theTrajBuilder
std::unique_ptr< MuonTrackLoader > theTrackLoader
def move(src, dest)
Definition: eostools.py:511

◆ ~MuonTrackFinder()

MuonTrackFinder::~MuonTrackFinder ( )
virtual

destructor

Definition at line 48 of file MuonTrackFinder.cc.

References LogTrace.

48  {
49  LogTrace("Muon|RecoMuon|MuonTrackFinder") << "MuonTrackFinder destructor called" << endl;
50 }
#define LogTrace(id)

Member Function Documentation

◆ load() [1/2]

edm::OrphanHandle< reco::TrackCollection > MuonTrackFinder::load ( TrajectoryContainer trajectories,
edm::Event event,
const TrackerTopology ttopo 
)
private

convert the trajectories into tracks and load them in to the event

Definition at line 56 of file MuonTrackFinder.cc.

References theTrackLoader, and FastTrackerRecHitMaskProducer_cfi::trajectories.

Referenced by reconstruct().

58  {
59  return theTrackLoader->loadTracks(trajectories, event, ttopo);
60 }
std::unique_ptr< MuonTrackLoader > theTrackLoader
Definition: event.py:1

◆ load() [2/2]

void MuonTrackFinder::load ( CandidateContainer muonCands,
edm::Event event,
const TrackerTopology ttopo 
)
private

convert the trajectories into tracks and load them in to the event

Definition at line 63 of file MuonTrackFinder.cc.

References theTrackLoader.

63  {
64  theTrackLoader->loadTracks(muonCands, event, ttopo);
65 }
std::unique_ptr< MuonTrackLoader > theTrackLoader
Definition: event.py:1

◆ reconstruct() [1/2]

edm::OrphanHandle< reco::TrackCollection > MuonTrackFinder::reconstruct ( const edm::Handle< edm::View< TrajectorySeed > > &  seeds,
edm::Event event,
const edm::EventSetup es 
)

reconstruct standalone tracks starting from a collection of seeds

Definition at line 68 of file MuonTrackFinder.cc.

References edm::EventSetup::getData(), load(), LogTrace, metname, eostools::move(), fileCollector::seed, DetachedQuadStep_cff::seeds, setEvent(), theTrajBuilder, theTrajCleaner, and theTtopoToken.

69  {
70  const string metname = "Muon|RecoMuon|MuonTrackFinder";
71  LogTrace(metname) << "SA Recostruction starting from: " << seeds->size() << endl;
72 
73  // Percolate the event
74  setEvent(event);
75 
76  const auto& ttopo = es.getData(theTtopoToken);
77 
78  // Trajectory container
79  TrajectoryContainer muonTrajectories;
81  // reconstruct the trajectory
83  for (seed = seeds->begin(); seed != seeds->end(); ++seed, ++nSeed) {
84  LogTrace(metname) << "+++ New Seed +++" << endl;
85  TrajectoryContainer muonTrajs_temp = theTrajBuilder->trajectories(*seed);
86  for (TrajectoryContainer::iterator it = muonTrajs_temp.begin(); it != muonTrajs_temp.end(); ++it) {
87  (*it)->setSeedRef(seeds->refAt(nSeed));
88  muonTrajectories.push_back(std::move(*it));
89  }
90  }
91 
92  // clean the clone traj
93  LogTrace(metname) << "Clean the trajectories container" << endl;
94  if (theTrajCleaner)
95  theTrajCleaner->clean(muonTrajectories, event, seeds); //used by reference...
96 
97  // convert the trajectories into tracks and load them in to the event
98  LogTrace(metname) << "Convert the trajectories into tracks and load them in to the event" << endl;
99  return load(muonTrajectories, event, ttopo);
100 }
edm::OrphanHandle< reco::TrackCollection > load(TrajectoryContainer &, edm::Event &, const TrackerTopology &ttopo)
convert the trajectories into tracks and load them in to the event
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
std::unique_ptr< MuonTrajectoryCleaner > theTrajCleaner
const std::string metname
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > theTtopoToken
uint16_t size_type
#define LogTrace(id)
void setEvent(const edm::Event &)
percolate the Event Setup
MuonCandidate::TrajectoryContainer TrajectoryContainer
std::unique_ptr< MuonTrajectoryBuilder > theTrajBuilder
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
def move(src, dest)
Definition: eostools.py:511
Definition: event.py:1

◆ reconstruct() [2/2]

void MuonTrackFinder::reconstruct ( const std::vector< TrackCand > &  staCandColl,
edm::Event event,
const edm::EventSetup es 
)

reconstruct global tracks starting from a collection of standalone tracks and one of trakectories. If the latter is invalid, trajectories are refitted.

Definition at line 103 of file MuonTrackFinder.cc.

References edm::EventSetup::getData(), load(), LogTrace, metname, QuarkoniaTrackSelector_cfi::muonCandidates, setEvent(), theTrajBuilder, theTrajCleaner, and theTtopoToken.

103  {
104  const string metname = "Muon|RecoMuon|MuonTrackFinder";
105 
106  // percolate the event
107  setEvent(event);
108 
109  const auto& ttopo = es.getData(theTtopoToken);
110 
111  // Muon Candidate container
113 
114  // reconstruct the muon candidates
115  for (vector<TrackCand>::const_iterator staCand = staCandColl.begin(); staCand != staCandColl.end(); ++staCand) {
116  CandidateContainer muonCands_temp = theTrajBuilder->trajectories(*staCand);
117  muonCandidates.insert(muonCandidates.end(),
118  std::make_move_iterator(muonCands_temp.begin()),
119  std::make_move_iterator(muonCands_temp.end()));
120  }
121 
122  // clean the cloned candidates
123  if (theTrajCleaner)
125 
126  // convert the trajectories into staTracks and load them into the event
127  LogTrace(metname) << "Load Muon Candidates into the event" << endl;
128  load(muonCandidates, event, ttopo);
129 }
edm::OrphanHandle< reco::TrackCollection > load(TrajectoryContainer &, edm::Event &, const TrackerTopology &ttopo)
convert the trajectories into tracks and load them in to the event
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
std::unique_ptr< MuonTrajectoryCleaner > theTrajCleaner
const std::string metname
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > theTtopoToken
#define LogTrace(id)
void setEvent(const edm::Event &)
percolate the Event Setup
std::unique_ptr< MuonTrajectoryBuilder > theTrajBuilder
Definition: event.py:1
MuonCandidate::CandidateContainer CandidateContainer

◆ setEvent()

void MuonTrackFinder::setEvent ( const edm::Event event)
private

percolate the Event Setup

Definition at line 53 of file MuonTrackFinder.cc.

References theTrajBuilder.

Referenced by reconstruct().

53 { theTrajBuilder->setEvent(event); }
std::unique_ptr< MuonTrajectoryBuilder > theTrajBuilder
Definition: event.py:1

Member Data Documentation

◆ theTrackLoader

std::unique_ptr<MuonTrackLoader> MuonTrackFinder::theTrackLoader
private

Definition at line 74 of file MuonTrackFinder.h.

Referenced by load().

◆ theTrajBuilder

std::unique_ptr<MuonTrajectoryBuilder> MuonTrackFinder::theTrajBuilder
private

Definition at line 70 of file MuonTrackFinder.h.

Referenced by reconstruct(), and setEvent().

◆ theTrajCleaner

std::unique_ptr<MuonTrajectoryCleaner> MuonTrackFinder::theTrajCleaner
private

Definition at line 72 of file MuonTrackFinder.h.

Referenced by reconstruct().

◆ theTtopoToken

const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> MuonTrackFinder::theTtopoToken
private

Definition at line 68 of file MuonTrackFinder.h.

Referenced by reconstruct().