#include <RecoMuon/L3TrackFinder/interface/MuonRoadTrajectoryBuilder.h>
#include <FWCore/MessageLogger/interface/MessageLogger.h>
#include <DataFormats/GeometrySurface/interface/TkRotation.h>
#include <DataFormats/GeometryCommonDetAlgo/interface/ErrorFrameTransformer.h>
#include <DataFormats/GeometryVector/interface/LocalPoint.h>
#include <DataFormats/GeometryVector/interface/LocalVector.h>
#include <DataFormats/GeometrySurface/interface/BoundPlane.h>
#include <DataFormats/GeometrySurface/interface/OpenBounds.h>
#include <DataFormats/GeometrySurface/interface/SimpleDiskBounds.h>
#include <DataFormats/TrajectoryState/interface/PTrajectoryStateOnDet.h>
#include <DataFormats/DetId/interface/DetId.h>
#include <TrackingTools/TransientTrackingRecHit/interface/GenericTransientTrackingRecHit.h>
#include <TrackingTools/MeasurementDet/interface/MeasurementDet.h>
#include <TrackingTools/KalmanUpdators/interface/KFUpdator.h>
#include <TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h>
#include <RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h>
#include <RecoTracker/Record/interface/CkfComponentsRecord.h>
#include <DataFormats/TrackerRecHit2D/interface/SiStripRecHit2D.h>
#include <DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h>
Go to the source code of this file.
Functions | |
void | sortTrajectoryMeasurements (Trajectory &traj) |
bool | trajectorymeasurementInverseOrder (const TrajectoryMeasurement &meas_1, const TrajectoryMeasurement &meas_2) |
bool | trajectorymeasurementOrder (const TrajectoryMeasurement &meas_1, const TrajectoryMeasurement &meas_2) |
bool | trajectoryOrder (const MuonRoadTrajectoryBuilder::trajectory &traj1, const MuonRoadTrajectoryBuilder::trajectory &traj2) |
void sortTrajectoryMeasurements | ( | Trajectory & | traj | ) |
Definition at line 421 of file MuonRoadTrajectoryBuilder.cc.
References Trajectory::direction(), Trajectory::measurements(), oppositeToMomentum, Trajectory::seed(), python::multivaluedict::sort(), trajectorymeasurementInverseOrder(), and trajectorymeasurementOrder().
Referenced by MuonRoadTrajectoryBuilder::smooth().
00421 { 00422 Trajectory::DataContainer meas =traj.measurements(); 00423 00424 // edm::LogInfo(theCategory)<<"sorting ("<< meas.size() <<") measurements."; 00425 //sort the measurements 00426 if (traj.direction() == oppositeToMomentum) 00427 {std::sort(meas.begin(),meas.end(),trajectorymeasurementInverseOrder);} 00428 else 00429 {std::sort(meas.begin(),meas.end(),trajectorymeasurementOrder);} 00430 00431 //create a new one 00432 Trajectory newTraj(traj.seed(),traj.direction()); 00433 for (Trajectory::DataContainer::iterator mit=meas.begin();mit!=meas.end();++mit) 00434 {newTraj.push(*mit);} 00435 00436 //exchange now. 00437 traj = newTraj; 00438 }
bool trajectorymeasurementInverseOrder | ( | const TrajectoryMeasurement & | meas_1, | |
const TrajectoryMeasurement & | meas_2 | |||
) |
Definition at line 389 of file MuonRoadTrajectoryBuilder.cc.
References trajectorymeasurementOrder().
Referenced by sortTrajectoryMeasurements().
00390 {return trajectorymeasurementOrder(meas_2,meas_1);}
bool trajectorymeasurementOrder | ( | const TrajectoryMeasurement & | meas_1, | |
const TrajectoryMeasurement & | meas_2 | |||
) |
Definition at line 379 of file MuonRoadTrajectoryBuilder.cc.
References d, Vector3DBase< T, FrameTag >::dot(), TrajectoryStateOnSurface::globalDirection(), TrajectoryStateOnSurface::globalPosition(), TrajectoryMeasurement::predictedState(), and Vector3DBase< T, FrameTag >::unit().
Referenced by sortTrajectoryMeasurements(), and trajectorymeasurementInverseOrder().
00380 { 00381 // GlobalVector d= (meas_2.recHit()->globalPosition () - meas_1.recHit()->globalPosition ()).unit(); 00382 GlobalVector d= (meas_2.predictedState().globalPosition() - meas_1.predictedState().globalPosition()).unit(); 00383 00384 GlobalVector u1= meas_1.predictedState().globalDirection().unit(); //was using only that before 00385 GlobalVector u2= meas_2.predictedState().globalDirection().unit(); 00386 GlobalVector u =(u1+u2)/2.; //the average momentum to be sure that the relation is symetrical. 00387 return d.dot(u) > 0; 00388 }
bool trajectoryOrder | ( | const MuonRoadTrajectoryBuilder::trajectory & | traj1, | |
const MuonRoadTrajectoryBuilder::trajectory & | traj2 | |||
) |
Definition at line 108 of file MuonRoadTrajectoryBuilder.cc.
References MuonRoadTrajectoryBuilder::trajectory::chi2, MuonRoadTrajectoryBuilder::trajectory::measurements, s1, and s2.
Referenced by MuonRoadTrajectoryBuilder::checkStep(), and MuonRoadTrajectoryBuilder::makeTrajectories_0().
00109 { //order so that first element of the list have 00110 //most hits, if equal smallest chi2 00111 uint s1=traj1.measurements.size(); 00112 uint s2=traj2.measurements.size(); 00113 if (s1>s2) return true; //decreasing order of measurements.size() 00114 else { 00115 if (s1==s2) return (traj1.chi2<traj2.chi2); //increase order of chi2 00116 else return false; }}