CMS 3D CMS Logo

ReferenceTrajectoryFactory Class Reference

A factory that produces instances of class ReferenceTrajectory from a given TrajTrackPairCollection. More...

#include <Alignment/ReferenceTrajectories/plugins/ReferenceTrajectoryFactory.h>

Inheritance diagram for ReferenceTrajectoryFactory:

TrajectoryFactoryBase

List of all members.

Public Member Functions

virtual
ReferenceTrajectoryFactory
clone (void) const
 ReferenceTrajectoryFactory (const edm::ParameterSet &config)
virtual const
ReferenceTrajectoryCollection 
trajectories (const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const ExternalPredictionCollection &external) const
virtual const
ReferenceTrajectoryCollection 
trajectories (const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks) const
 Produce the reference trajectories.
virtual ~ReferenceTrajectoryFactory (void)

Protected Attributes

double theMass


Detailed Description

A factory that produces instances of class ReferenceTrajectory from a given TrajTrackPairCollection.

Definition at line 9 of file ReferenceTrajectoryFactory.h.


Constructor & Destructor Documentation

ReferenceTrajectoryFactory::ReferenceTrajectoryFactory ( const edm::ParameterSet config  ) 

Definition at line 12 of file ReferenceTrajectoryFactory.cc.

References edm::ParameterSet::getParameter(), and theMass.

Referenced by clone().

00012                                                                                        :
00013   TrajectoryFactoryBase( config )
00014 {
00015   theMass = config.getParameter< double >( "ParticleMass" );
00016 }

ReferenceTrajectoryFactory::~ReferenceTrajectoryFactory ( void   )  [virtual]

Definition at line 19 of file ReferenceTrajectoryFactory.cc.

00019 {}


Member Function Documentation

virtual ReferenceTrajectoryFactory* ReferenceTrajectoryFactory::clone ( void   )  const [inline, virtual]

Implements TrajectoryFactoryBase.

Definition at line 25 of file ReferenceTrajectoryFactory.h.

References ReferenceTrajectoryFactory().

00025 { return new ReferenceTrajectoryFactory( *this ); }

const ReferenceTrajectoryFactory::ReferenceTrajectoryCollection ReferenceTrajectoryFactory::trajectories ( const edm::EventSetup setup,
const ConstTrajTrackPairCollection tracks,
const ExternalPredictionCollection external 
) const [virtual]

Definition at line 53 of file ReferenceTrajectoryFactory.cc.

References edm::EventSetup::get(), TrajectoryFactoryBase::innermostStateAndRecHits(), iggi_31X_cfg::input, TrajectoryFactoryBase::materialEffects(), edm::ESHandle< T >::product(), TrajectoryFactoryBase::propagationDirection(), TrajectoryFactoryBase::sameSurface(), theMass, and trajectories().

00056 {
00057   ReferenceTrajectoryCollection trajectories;
00058 
00059   if ( tracks.size() != external.size() )
00060   {
00061     edm::LogInfo("ReferenceTrajectories") << "@SUB=ReferenceTrajectoryFactory::trajectories"
00062                                           << "Inconsistent input:\n"
00063                                           << "\tnumber of tracks = " << tracks.size()
00064                                           << "\tnumber of external predictions = " << external.size();
00065     return trajectories;
00066   }
00067 
00068   edm::ESHandle< MagneticField > magneticField;
00069   setup.get< IdealMagneticFieldRecord >().get( magneticField );
00070 
00071   ConstTrajTrackPairCollection::const_iterator itTracks = tracks.begin();
00072   ExternalPredictionCollection::const_iterator itExternal = external.begin();
00073 
00074   while ( itTracks != tracks.end() )
00075   {
00076     TrajectoryInput input = innermostStateAndRecHits( *itTracks );
00077     // Check input: If all hits were rejected, the TSOS is initialized as invalid.
00078     if ( input.first.isValid() )
00079     {
00080       if ( (*itExternal).isValid() && sameSurface( (*itExternal).surface(), input.first.surface() ) )
00081       {
00082         // set the flag for reversing the RecHits to false, since they are already in the correct order.
00083         ReferenceTrajectoryPtr refTraj( new ReferenceTrajectory( *itExternal, input.second, false,
00084                                                                  magneticField.product(), materialEffects(),
00085                                                                  propagationDirection(), theMass) );
00086 
00087         AlgebraicSymMatrix externalParamErrors( asHepMatrix<5>( (*itExternal).localError().matrix() ) );
00088         refTraj->setParameterErrors( externalParamErrors );
00089 
00090         trajectories.push_back( refTraj );
00091       }
00092       else
00093       {
00094         trajectories.push_back(ReferenceTrajectoryPtr(new ReferenceTrajectory(input.first, input.second, false,
00095                                                                               magneticField.product(), materialEffects(),
00096                                                                               propagationDirection(), theMass)));
00097       }
00098     }
00099 
00100     ++itTracks;
00101     ++itExternal;
00102   }
00103 
00104   return trajectories;
00105 }

const ReferenceTrajectoryFactory::ReferenceTrajectoryCollection ReferenceTrajectoryFactory::trajectories ( const edm::EventSetup setup,
const ConstTrajTrackPairCollection tracks 
) const [virtual]

Produce the reference trajectories.

Definition at line 23 of file ReferenceTrajectoryFactory.cc.

References edm::EventSetup::get(), TrajectoryFactoryBase::innermostStateAndRecHits(), iggi_31X_cfg::input, TrajectoryFactoryBase::materialEffects(), edm::ESHandle< T >::product(), TrajectoryFactoryBase::propagationDirection(), and theMass.

Referenced by trajectories().

00025 {
00026   ReferenceTrajectoryCollection trajectories;
00027 
00028   edm::ESHandle< MagneticField > magneticField;
00029   setup.get< IdealMagneticFieldRecord >().get( magneticField );
00030 
00031   ConstTrajTrackPairCollection::const_iterator itTracks = tracks.begin();
00032 
00033   while ( itTracks != tracks.end() )
00034   { 
00035     TrajectoryInput input = this->innermostStateAndRecHits( *itTracks );
00036     // Check input: If all hits were rejected, the TSOS is initialized as invalid.
00037     if ( input.first.isValid() )
00038     {
00039       // set the flag for reversing the RecHits to false, since they are already in the correct order.
00040       trajectories.push_back(ReferenceTrajectoryPtr(new ReferenceTrajectory(input.first, input.second, false,
00041                                                                             magneticField.product(), materialEffects(),
00042                                                                             propagationDirection(), theMass)));
00043     }
00044 
00045     ++itTracks;
00046   }
00047 
00048   return trajectories;
00049 }


Member Data Documentation

double ReferenceTrajectoryFactory::theMass [protected]

Definition at line 29 of file ReferenceTrajectoryFactory.h.

Referenced by ReferenceTrajectoryFactory(), and trajectories().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:30:42 2009 for CMSSW by  doxygen 1.5.4