CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
L3MuonTrajectoryBuilder Class Reference

#include <L3MuonTrajectoryBuilder.h>

Inheritance diagram for L3MuonTrajectoryBuilder:
GlobalTrajectoryBuilderBase MuonTrajectoryBuilder

Public Member Functions

 L3MuonTrajectoryBuilder (const edm::ParameterSet &, const MuonServiceProxy *, edm::ConsumesCollector &)
 constructor with Parameter Set and MuonServiceProxy More...
 
virtual void setEvent (const edm::Event &)
 pass the Event to the algo at each event More...
 
MuonTrajectoryBuilder::CandidateContainer trajectories (const TrackCand &)
 return a container reconstructed muons starting from a given track More...
 
 ~L3MuonTrajectoryBuilder ()
 destructor More...
 
- Public Member Functions inherited from GlobalTrajectoryBuilderBase
 GlobalTrajectoryBuilderBase (const edm::ParameterSet &, const MuonServiceProxy *, edm::ConsumesCollector &)
 constructor with Parameter Set and MuonServiceProxy More...
 
MuonTrajectoryBuilder::TrajectoryContainer trajectories (const TrajectorySeed &)
 dummy implementation, unused in this class More...
 
virtual ~GlobalTrajectoryBuilderBase ()
 destructor More...
 
- Public Member Functions inherited from MuonTrajectoryBuilder
 MuonTrajectoryBuilder ()
 constructor More...
 
virtual ~MuonTrajectoryBuilder ()
 destructor More...
 

Private Member Functions

std::vector< TrackCandmakeTkCandCollection (const TrackCand &)
 make a TrackCand collection using tracker Track, Trajectory information More...
 

Private Attributes

edm::Handle
< reco::TrackCollection
allTrackerTracks
 
reco::BeamSpot beamSpot
 
edm::Handle< reco::BeamSpotbeamSpotHandle
 
edm::Handle
< reco::VertexCollection
pvHandle
 
edm::InputTag theBeamSpotInputTag
 
double theDXYBeamSpot
 
double theMaxChi2
 
edm::InputTag theTkCollName
 
TrajectoryCleanertheTrajectoryCleaner
 
bool theUseVertex
 
edm::InputTag theVertexCollInputTag
 
edm::EDGetTokenT
< reco::TrackCollection
trackToken_
 
reco::Vertex vtx
 

Additional Inherited Members

- Public Types inherited from GlobalTrajectoryBuilderBase
typedef
MuonTransientTrackingRecHit::ConstMuonRecHitContainer 
ConstMuonRecHitContainer
 
typedef
MuonTransientTrackingRecHit::ConstMuonRecHitPointer 
ConstMuonRecHitPointer
 
typedef
TransientTrackingRecHit::ConstRecHitContainer 
ConstRecHitContainer
 
typedef
TransientTrackingRecHit::ConstRecHitPointer 
ConstRecHitPointer
 
typedef
MuonTransientTrackingRecHit::MuonRecHitContainer 
MuonRecHitContainer
 
typedef
MuonTransientTrackingRecHit::MuonRecHitPointer 
MuonRecHitPointer
 
typedef
TransientTrackingRecHit::RecHitContainer 
RecHitContainer
 
typedef
TransientTrackingRecHit::RecHitPointer 
RecHitPointer
 
typedef std::vector< TrajectoryTC
 
typedef TC::const_iterator TI
 
- Public Types inherited from MuonTrajectoryBuilder
typedef
MuonCandidate::CandidateContainer 
CandidateContainer
 
typedef std::pair< const
Trajectory *, reco::TrackRef
TrackCand
 
typedef
MuonCandidate::TrajectoryContainer 
TrajectoryContainer
 
- Protected Types inherited from GlobalTrajectoryBuilderBase
enum  RefitDirection { inToOut, outToIn, undetermined }
 
- Protected Member Functions inherited from GlobalTrajectoryBuilderBase
void addTraj (TrackCand &)
 if TrackCand has only a TrackRef, attempt to add Trajectory* More...
 
MuonTrajectoryBuilder::CandidateContainer build (const TrackCand &, MuonTrajectoryBuilder::CandidateContainer &) const
 build combined trajectory from sta Track and tracker RecHits More...
 
void checkMuonHits (const reco::Track &, ConstRecHitContainer &, ConstRecHitContainer &, std::vector< int > &) const
 check muon RecHits, calculate chamber occupancy and select hits to be used in the final fit More...
 
RefitDirection checkRecHitsOrdering (const ConstRecHitContainer &) const
 This does nothing now. More...
 
std::vector< TrackCandchooseRegionalTrackerTracks (const TrackCand &, const std::vector< TrackCand > &)
 choose tracker tracks within region of interest More...
 
const TrajectorychooseTrajectory (const std::vector< Trajectory * > &, int) const
 choose final trajectory More...
 
RectangularEtaPhiTrackingRegion defineRegionOfInterest (const reco::TrackRef &) const
 define region of interest with tracker More...
 
void fixTEC (ConstRecHitContainer &all, double scl_x, double scl_y) const
 rescale errors of outermost TEC RecHit More...
 
TransientTrackingRecHit::ConstRecHitContainer getTransientRecHits (const reco::Track &) const
 get transient RecHits of a Track More...
 
void printHits (const ConstRecHitContainer &) const
 print all RecHits of a trajectory More...
 
ConstRecHitContainer selectMuonHits (const Trajectory &, const std::vector< int > &) const
 select muon hits compatible with trajectory; check hits in chambers with showers More...
 
ConstRecHitContainer selectTrackerHits (const ConstRecHitContainer &) const
 select tracker hits; exclude some tracker hits in the global trajectory More...
 
const MuonServiceProxyservice () const
 
GlobalMuonTrackMatchertrackMatcher () const
 
double trackProbability (const Trajectory &) const
 calculate chi2 probability (-ln(P)) More...
 
- Protected Attributes inherited from GlobalTrajectoryBuilderBase
std::string theCategory
 
float thePCut
 
float thePtCut
 

Detailed Description

class to build muon trajectory

Author
N. Neumeister Purdue University
C. Liu Purdue University
A. Everett Purdue University

Definition at line 30 of file L3MuonTrajectoryBuilder.h.

Constructor & Destructor Documentation

L3MuonTrajectoryBuilder::L3MuonTrajectoryBuilder ( const edm::ParameterSet par,
const MuonServiceProxy service,
edm::ConsumesCollector iC 
)

constructor with Parameter Set and MuonServiceProxy

Definition at line 70 of file L3MuonTrajectoryBuilder.cc.

References edm::ConsumesCollector::consumes(), edm::ParameterSet::getParameter(), theBeamSpotInputTag, theDXYBeamSpot, theMaxChi2, theTkCollName, theTrajectoryCleaner, theUseVertex, theVertexCollInputTag, and trackToken_.

73 
75 
76  theTkCollName = par.getParameter<edm::InputTag>("tkTrajLabel");
77  theBeamSpotInputTag = par.getParameter<edm::InputTag>("tkTrajBeamSpot");
78  theMaxChi2 = par.getParameter<double>("tkTrajMaxChi2");
79  theDXYBeamSpot = par.getParameter<double>("tkTrajMaxDXYBeamSpot");
80  theUseVertex = par.getParameter<bool>("tkTrajUseVertex");
81  theVertexCollInputTag = par.getParameter<edm::InputTag>("tkTrajVertex");
83 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:10
edm::EDGetTokenT< reco::TrackCollection > trackToken_
const MuonServiceProxy * service() const
GlobalTrajectoryBuilderBase(const edm::ParameterSet &, const MuonServiceProxy *, edm::ConsumesCollector &)
constructor with Parameter Set and MuonServiceProxy
TrajectoryCleaner * theTrajectoryCleaner
L3MuonTrajectoryBuilder::~L3MuonTrajectoryBuilder ( )

destructor

Definition at line 90 of file L3MuonTrajectoryBuilder.cc.

References theTrajectoryCleaner.

90  {
92 }
TrajectoryCleaner * theTrajectoryCleaner

Member Function Documentation

vector< L3MuonTrajectoryBuilder::TrackCand > L3MuonTrajectoryBuilder::makeTkCandCollection ( const TrackCand staCand)
privatevirtual

make a TrackCand collection using tracker Track, Trajectory information

Implements GlobalTrajectoryBuilderBase.

Definition at line 205 of file L3MuonTrajectoryBuilder.cc.

References allTrackerTracks, beamSpot, python.rootplot.argparse::category, reco::BeamSpot::position(), reco::Vertex::position(), position, AlCaHLTBitMon_QueryRunRegistry::string, theDXYBeamSpot, theMaxChi2, theUseVertex, and vtx.

Referenced by trajectories().

205  {
206 
207  const std::string category = "Muon|RecoMuon|L3MuonTrajectoryBuilder|makeTkCandCollection";
208 
209  vector<TrackCand> tkCandColl;
210 
211  vector<TrackCand> tkTrackCands;
212 
213  for ( unsigned int position = 0; position != allTrackerTracks->size(); ++position ) {
215  TrackCand tkCand = TrackCand((Trajectory*)(0),tkTrackRef);
216  tkCandColl.push_back(tkCand);
217  }
218 
219  for(vector<TrackCand>::const_iterator tk = tkCandColl.begin(); tk != tkCandColl.end() ; ++tk) {
220  edm::Ref<L3MuonTrajectorySeedCollection> l3seedRef = (*tk).second->seedRef().castTo<edm::Ref<L3MuonTrajectorySeedCollection> >() ;
221  reco::TrackRef staTrack = l3seedRef->l2Track();
222  if( staTrack == (staCand.second) ) {
223  // apply a filter (dxy, chi2 cut)
224  double tk_vtx;
225  if( theUseVertex ) tk_vtx = (*tk).second->dxy(vtx.position());
226  else tk_vtx = (*tk).second->dxy(beamSpot.position());
227 
228  if( fabs(tk_vtx) > theDXYBeamSpot || (*tk).second->normalizedChi2() > theMaxChi2 ) continue;
229 
230  tkTrackCands.push_back(*tk);
231  }
232  }
233 
234  return tkTrackCands;
235 
236 }
std::pair< const Trajectory *, reco::TrackRef > TrackCand
const Point & position() const
position
Definition: Vertex.h:106
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
edm::Handle< reco::TrackCollection > allTrackerTracks
const Point & position() const
position
Definition: BeamSpot.h:62
void L3MuonTrajectoryBuilder::setEvent ( const edm::Event event)
virtual

pass the Event to the algo at each event

Reimplemented from GlobalTrajectoryBuilderBase.

Definition at line 97 of file L3MuonTrajectoryBuilder.cc.

References allTrackerTracks, beamSpot, beamSpotHandle, python.rootplot.argparse::category, edm::HandleBase::isValid(), LogDebug, pvHandle, GlobalTrajectoryBuilderBase::setEvent(), AlCaHLTBitMon_QueryRunRegistry::string, theBeamSpotInputTag, theTkCollName, theUseVertex, trackToken_, and vtx.

97  {
98 
99  const std::string category = "Muon|RecoMuon|L3MuonTrajectoryBuilder|setEvent";
100 
102 
103  // get tracker TrackCollection from Event
104  event.getByToken(trackToken_,allTrackerTracks);
105  LogDebug(category)
106  << "Found " << allTrackerTracks->size()
107  << " tracker Tracks with label "<< theTkCollName;
108 
109  if( theUseVertex ) {
110  // PV
112  if ( pvHandle.isValid() ) {
113  vtx = pvHandle->front();
114  }
115  else {
116  edm::LogInfo(category)
117  << "No Primary Vertex available from EventSetup \n";
118  }
119  }
120  else {
121  // BS
122  event.getByLabel(theBeamSpotInputTag, beamSpotHandle);
123  if( beamSpotHandle.isValid() ) {
125  }
126  else {
127  edm::LogInfo(category)
128  << "No beam spot available from EventSetup \n";
129  }
130  }
131 }
#define LogDebug(id)
virtual void setEvent(const edm::Event &)
pass the Event to the algo at each event
edm::EDGetTokenT< reco::TrackCollection > trackToken_
edm::Handle< reco::TrackCollection > allTrackerTracks
edm::Handle< reco::VertexCollection > pvHandle
bool isValid() const
Definition: HandleBase.h:76
edm::Handle< reco::BeamSpot > beamSpotHandle
MuonCandidate::CandidateContainer L3MuonTrajectoryBuilder::trajectories ( const TrackCand )
virtual

return a container reconstructed muons starting from a given track

Implements MuonTrajectoryBuilder.

Definition at line 136 of file L3MuonTrajectoryBuilder.cc.

References GlobalTrajectoryBuilderBase::build(), python.rootplot.argparse::category, LogDebug, makeTkCandCollection(), GlobalMuonTrackMatcher::match(), query::result, edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, GlobalTrajectoryBuilderBase::thePtCut, and GlobalTrajectoryBuilderBase::trackMatcher().

136  {
137 
138  const std::string category = "Muon|RecoMuon|L3MuonTrajectoryBuilder|trajectories";
139 
140  // cut on muons with low momenta
141  if ( (staCandIn).second->pt() < thePtCut || (staCandIn).second->innerMomentum().Rho() < thePtCut || (staCandIn).second->innerMomentum().R() < 2.5 ) return CandidateContainer();
142 
143  // convert the STA track into a Trajectory if Trajectory not already present
144  TrackCand staCand(staCandIn);
145 
146  vector<TrackCand> trackerTracks;
147 
148  vector<TrackCand> regionalTkTracks = makeTkCandCollection(staCand);
149  LogDebug(category) << "Found " << regionalTkTracks.size() << " tracks within region of interest";
150 
151  // match tracker tracks to muon track
152  trackerTracks = trackMatcher()->match(staCand, regionalTkTracks);
153 
154  LogDebug(category) << "Found " << trackerTracks.size() << " matching tracker tracks within region of interest";
155  if ( trackerTracks.empty() ) return CandidateContainer();
156 
157  // build a combined tracker-muon MuonCandidate
158  //
159  // turn tkMatchedTracks into MuonCandidates
160  //
161  LogDebug(category) << "turn tkMatchedTracks into MuonCandidates";
162  CandidateContainer tkTrajs;
163  for (vector<TrackCand>::const_iterator tkt = trackerTracks.begin(); tkt != trackerTracks.end(); tkt++) {
164  if ((*tkt).first != 0 && (*tkt).first->isValid()) {
165  //
166  MuonCandidate* muonCand = new MuonCandidate( 0 ,staCand.second,(*tkt).second, new Trajectory(*(*tkt).first));
167  tkTrajs.push_back(muonCand);
168  // LogTrace(category) << "tpush";
169  //
170  } else {
171  MuonCandidate* muonCand = new MuonCandidate( 0 ,staCand.second,(*tkt).second, 0);
172  tkTrajs.push_back(muonCand);
173  }
174  }
175 
176  if ( tkTrajs.empty() ) {
177  LogDebug(category) << "tkTrajs empty";
178  return CandidateContainer();
179  }
180 
181  CandidateContainer result = build(staCand, tkTrajs);
182  LogDebug(category) << "Found "<< result.size() << " L3Muons from one L2Cand";
183 
184  // free memory
185  if ( staCandIn.first == 0) delete staCand.first;
186 
187  for( CandidateContainer::const_iterator it = tkTrajs.begin(); it != tkTrajs.end(); ++it) {
188  if ( (*it)->trajectory() ) delete (*it)->trajectory();
189  if ( (*it)->trackerTrajectory() ) delete (*it)->trackerTrajectory();
190  if ( *it ) delete (*it);
191  }
192  tkTrajs.clear();
193 
194  for ( vector<TrackCand>::const_iterator is = regionalTkTracks.begin(); is != regionalTkTracks.end(); ++is) {
195  delete (*is).first;
196  }
197 
198  return result;
199 
200 }
#define LogDebug(id)
MuonCandidate::CandidateContainer CandidateContainer
GlobalMuonTrackMatcher * trackMatcher() const
std::pair< const Trajectory *, reco::TrackRef > TrackCand
U second(std::pair< T, U > const &p)
tuple result
Definition: query.py:137
std::vector< TrackCand > makeTkCandCollection(const TrackCand &)
make a TrackCand collection using tracker Track, Trajectory information
double match(const TrackCand &sta, const TrackCand &track, int matchOption=0, int surfaceOption=1) const
MuonTrajectoryBuilder::CandidateContainer build(const TrackCand &, MuonTrajectoryBuilder::CandidateContainer &) const
build combined trajectory from sta Track and tracker RecHits

Member Data Documentation

edm::Handle<reco::TrackCollection> L3MuonTrajectoryBuilder::allTrackerTracks
private

Definition at line 48 of file L3MuonTrajectoryBuilder.h.

Referenced by makeTkCandCollection(), and setEvent().

reco::BeamSpot L3MuonTrajectoryBuilder::beamSpot
private

Definition at line 49 of file L3MuonTrajectoryBuilder.h.

Referenced by makeTkCandCollection(), and setEvent().

edm::Handle<reco::BeamSpot> L3MuonTrajectoryBuilder::beamSpotHandle
private

Definition at line 50 of file L3MuonTrajectoryBuilder.h.

Referenced by setEvent().

edm::Handle<reco::VertexCollection> L3MuonTrajectoryBuilder::pvHandle
private

Definition at line 54 of file L3MuonTrajectoryBuilder.h.

Referenced by setEvent().

edm::InputTag L3MuonTrajectoryBuilder::theBeamSpotInputTag
private

Definition at line 51 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and setEvent().

double L3MuonTrajectoryBuilder::theDXYBeamSpot
private

Definition at line 59 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and makeTkCandCollection().

double L3MuonTrajectoryBuilder::theMaxChi2
private

Definition at line 58 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and makeTkCandCollection().

edm::InputTag L3MuonTrajectoryBuilder::theTkCollName
private

Definition at line 47 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and setEvent().

TrajectoryCleaner* L3MuonTrajectoryBuilder::theTrajectoryCleaner
private

Definition at line 46 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and ~L3MuonTrajectoryBuilder().

bool L3MuonTrajectoryBuilder::theUseVertex
private
edm::InputTag L3MuonTrajectoryBuilder::theVertexCollInputTag
private

Definition at line 55 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder().

edm::EDGetTokenT<reco::TrackCollection> L3MuonTrajectoryBuilder::trackToken_
private

Definition at line 60 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and setEvent().

reco::Vertex L3MuonTrajectoryBuilder::vtx
private

Definition at line 53 of file L3MuonTrajectoryBuilder.h.

Referenced by makeTkCandCollection(), and setEvent().