CMS 3D CMS Logo

MuonTrackFinder.cc
Go to the documentation of this file.
1 
11 
16 
21 
24 
27 
28 using namespace std;
29 using namespace edm;
30 
31 // Constructor, with default cleaner. For the STA reconstruction the trackLoader must have the propagator.
33  MuonTrackLoader *trackLoader) :
34  theTrajBuilder(ConcreteMuonTrajectoryBuilder),
35  theTrajCleaner(new MuonTrajectoryCleaner()),
36  theTrackLoader(trackLoader) {
37 }
38 
39 // Constructor, with user-defined cleaner. For the STA reconstruction the trackLoader must have the propagator.
41  MuonTrackLoader *trackLoader,
42  MuonTrajectoryCleaner* cleaner) :
43  theTrajBuilder(ConcreteMuonTrajectoryBuilder),
44  theTrajCleaner(cleaner),
45  theTrackLoader(trackLoader) {
46 }
47 
48 // destructor
50 
51  LogTrace("Muon|RecoMuon|MuonTrackFinder")<<"MuonTrackFinder destructor called"<<endl;
52  delete theTrajBuilder;
53  delete theTrajCleaner;
54  delete theTrackLoader;
55 
56 }
57 
58 // percolate the event setup
60  theTrajBuilder->setEvent(event);
61 }
62 
63 // convert the trajectories into tracks and load them in to the event
67  const TrackerTopology& ttopo) {
68 
69  return theTrackLoader->loadTracks(trajectories, event, ttopo);
70 }
71 
72 // convert the trajectories into tracks and load them in to the event
74  Event& event,
75  const TrackerTopology& ttopo) {
76 
77  theTrackLoader->loadTracks(muonCands, event, ttopo);
78 
79 }
80 
81 // reconstruct trajectories
85  const edm::EventSetup& es){
86 
87  const string metname = "Muon|RecoMuon|MuonTrackFinder";
88  LogTrace(metname)<<"SA Recostruction starting from: "<<seeds->size()<<endl;
89 
90  // Percolate the event
91  setEvent(event);
92 
94  es.get<TrackerTopologyRcd>().get(httopo);
95 
96  // Trajectory container
97  TrajectoryContainer muonTrajectories;
99  // reconstruct the trajectory
101  for(seed = seeds->begin();
102  seed != seeds->end(); ++seed, ++nSeed){
103  LogTrace(metname)<<"+++ New Seed +++"<<endl;
104  TrajectoryContainer muonTrajs_temp = theTrajBuilder->trajectories(*seed);
105  for(TrajectoryContainer::iterator it = muonTrajs_temp.begin();
106  it != muonTrajs_temp.end(); ++it){
107  (*it)->setSeedRef(seeds->refAt(nSeed));
108  muonTrajectories.push_back(*it);
109  }
110  }
111 
112  // clean the clone traj
113  LogTrace(metname)<<"Clean the trajectories container"<<endl;
114  if(theTrajCleaner) theTrajCleaner->clean(muonTrajectories, event, seeds); //used by reference...
115 
116  // convert the trajectories into tracks and load them in to the event
117  LogTrace(metname)
118  <<"Convert the trajectories into tracks and load them in to the event"<<endl;
119  return load(muonTrajectories,event, *httopo);
120 
121 }
122 
123 
124 // reconstruct trajectories
125 void MuonTrackFinder::reconstruct(const std::vector<TrackCand>& staCandColl,
126  Event& event,
127  const edm::EventSetup& es){
128 
129  const string metname = "Muon|RecoMuon|MuonTrackFinder";
130 
131  // percolate the event
132  setEvent(event);
133 
135  es.get<TrackerTopologyRcd>().get(httopo);
136 
137  // Muon Candidate container
139 
140  // reconstruct the muon candidates
141  for (vector<TrackCand>::const_iterator staCand = staCandColl.begin(); staCand != staCandColl.end(); ++staCand) {
142  CandidateContainer muonCands_temp = theTrajBuilder->trajectories(*staCand);
143  muonCandidates.insert(muonCandidates.end(), muonCands_temp.begin(),muonCands_temp.end());
144  }
145 
146  // clean the cloned candidates
147  if(theTrajCleaner) theTrajCleaner->clean(muonCandidates);
148 
149  // convert the trajectories into staTracks and load them into the event
150  LogTrace(metname)<<"Load Muon Candidates into the event"<<endl;
151  load(muonCandidates,event, *httopo);
152 
153 }
void clean(TrajectoryContainer &muonTrajectories, edm::Event &evt, const edm::Handle< edm::View< TrajectorySeed > > &seeds)
Clean the trajectories container, erasing the (worst) clone trajectory.
const std::string metname
uint16_t size_type
virtual TrajectoryContainer trajectories(const TrajectorySeed &)=0
return a container of the reconstructed trajectories compatible with a given seed ...
void setEvent(const edm::Event &)
percolate the Event Setup
virtual ~MuonTrackFinder()
destructor
virtual void setEvent(const edm::Event &event)=0
pass the Event to the algo at each event
const_iterator begin() const
MuonTrackFinder(MuonTrajectoryBuilder *ConcreteMuonTrajectoryBuilder, MuonTrackLoader *trackLoader)
Constructor, with default cleaner. For the STA reconstruction the trackLoader must have the propagato...
edm::OrphanHandle< reco::TrackCollection > load(const TrajectoryContainer &, edm::Event &, const TrackerTopology &ttopo)
convert the trajectories into tracks and load them in to the event
edm::OrphanHandle< reco::TrackCollection > loadTracks(const TrajectoryContainer &, edm::Event &, const TrackerTopology &ttopo, const std::string &="", bool=true)
Convert the trajectories into tracks and load the tracks in the event.
MuonTrackLoader * theTrackLoader
#define LogTrace(id)
MuonCandidate::TrajectoryContainer TrajectoryContainer
const T & get() const
Definition: EventSetup.h:55
MuonTrajectoryBuilder * theTrajBuilder
MuonTrajectoryCleaner * theTrajCleaner
HLT enums.
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
const_iterator end() const
edm::OrphanHandle< reco::TrackCollection > reconstruct(const edm::Handle< edm::View< TrajectorySeed > > &, edm::Event &, const edm::EventSetup &)
reconstruct standalone tracks starting from a collection of seeds
Definition: event.py:1
MuonCandidate::CandidateContainer CandidateContainer