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 &)
 reconstruct trajectories from standalone and tracker only Tracks More...
 
 ~L3MuonTrajectoryBuilder ()
 destructor More...
 
- Public Member Functions inherited from GlobalTrajectoryBuilderBase
 GlobalTrajectoryBuilderBase (const edm::ParameterSet &, const MuonServiceProxy *)
 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 72 of file L3MuonTrajectoryBuilder.cc.

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

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

destructor

Definition at line 92 of file L3MuonTrajectoryBuilder.cc.

References theTrajectoryCleaner.

92  {
94 }
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 207 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().

207  {
208 
209  const std::string category = "Muon|RecoMuon|L3MuonTrajectoryBuilder|makeTkCandCollection";
210 
211  vector<TrackCand> tkCandColl;
212 
213  vector<TrackCand> tkTrackCands;
214 
215  for ( unsigned int position = 0; position != allTrackerTracks->size(); ++position ) {
217  TrackCand tkCand = TrackCand((Trajectory*)(0),tkTrackRef);
218  tkCandColl.push_back(tkCand);
219  }
220 
221  for(vector<TrackCand>::const_iterator tk = tkCandColl.begin(); tk != tkCandColl.end() ; ++tk) {
222  edm::Ref<L3MuonTrajectorySeedCollection> l3seedRef = (*tk).second->seedRef().castTo<edm::Ref<L3MuonTrajectorySeedCollection> >() ;
223  reco::TrackRef staTrack = l3seedRef->l2Track();
224  if( staTrack == (staCand.second) ) {
225  // apply a filter (dxy, chi2 cut)
226  double tk_vtx;
227  if( theUseVertex ) tk_vtx = (*tk).second->dxy(vtx.position());
228  else tk_vtx = (*tk).second->dxy(beamSpot.position());
229 
230  if( fabs(tk_vtx) > theDXYBeamSpot || (*tk).second->normalizedChi2() > theMaxChi2 ) continue;
231 
232  tkTrackCands.push_back(*tk);
233  }
234  }
235 
236  return tkTrackCands;
237 
238 }
std::pair< const Trajectory *, reco::TrackRef > TrackCand
const Point & position() const
position
Definition: Vertex.h:92
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 99 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.

99  {
100 
101  const std::string category = "Muon|RecoMuon|L3MuonTrajectoryBuilder|setEvent";
102 
104 
105  // get tracker TrackCollection from Event
106  event.getByToken(trackToken_,allTrackerTracks);
107  LogDebug(category)
108  << "Found " << allTrackerTracks->size()
109  << " tracker Tracks with label "<< theTkCollName;
110 
111  if( theUseVertex ) {
112  // PV
114  if ( pvHandle.isValid() ) {
115  vtx = pvHandle->front();
116  }
117  else {
118  edm::LogInfo(category)
119  << "No Primary Vertex available from EventSetup \n";
120  }
121  }
122  else {
123  // BS
124  event.getByLabel(theBeamSpotInputTag, beamSpotHandle);
125  if( beamSpotHandle.isValid() ) {
127  }
128  else {
129  edm::LogInfo(category)
130  << "No beam spot available from EventSetup \n";
131  }
132  }
133 }
#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 staCandIn)
virtual

reconstruct trajectories from standalone and tracker only Tracks

Implements MuonTrajectoryBuilder.

Definition at line 138 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().

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

Referenced by makeTkCandCollection(), and setEvent().

reco::BeamSpot L3MuonTrajectoryBuilder::beamSpot
private

Definition at line 48 of file L3MuonTrajectoryBuilder.h.

Referenced by makeTkCandCollection(), and setEvent().

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

Definition at line 49 of file L3MuonTrajectoryBuilder.h.

Referenced by setEvent().

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

Definition at line 53 of file L3MuonTrajectoryBuilder.h.

Referenced by setEvent().

edm::InputTag L3MuonTrajectoryBuilder::theBeamSpotInputTag
private

Definition at line 50 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and setEvent().

double L3MuonTrajectoryBuilder::theDXYBeamSpot
private

Definition at line 58 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and makeTkCandCollection().

double L3MuonTrajectoryBuilder::theMaxChi2
private

Definition at line 57 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and makeTkCandCollection().

edm::InputTag L3MuonTrajectoryBuilder::theTkCollName
private

Definition at line 46 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and setEvent().

TrajectoryCleaner* L3MuonTrajectoryBuilder::theTrajectoryCleaner
private

Definition at line 45 of file L3MuonTrajectoryBuilder.h.

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

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

Definition at line 54 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder().

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

Definition at line 59 of file L3MuonTrajectoryBuilder.h.

Referenced by L3MuonTrajectoryBuilder(), and setEvent().

reco::Vertex L3MuonTrajectoryBuilder::vtx
private

Definition at line 52 of file L3MuonTrajectoryBuilder.h.

Referenced by makeTkCandCollection(), and setEvent().