CMS 3D CMS Logo

MuonRoadTrajectoryBuilder.cc File Reference

#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)


Function Documentation

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; }}


Generated on Tue Jun 9 17:55:29 2009 for CMSSW by  doxygen 1.5.4