00001 #ifndef Alignment_ReferenceTrajectories_TrajectoryFactoryBase_h 00002 #define Alignment_ReferenceTrajectories_TrajectoryFactoryBase_h 00003 00004 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentAlgorithmBase.h" 00005 #include "Alignment/ReferenceTrajectories/interface/ReferenceTrajectoryBase.h" 00006 00007 #include "TrackingTools/PatternTools/interface/Trajectory.h" 00008 00009 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h" 00010 00013 00014 00015 class TrajectoryFactoryBase 00016 { 00017 00018 public: 00019 00020 typedef ReferenceTrajectoryBase::ReferenceTrajectoryPtr ReferenceTrajectoryPtr; 00021 typedef ReferenceTrajectoryBase::MaterialEffects MaterialEffects; 00022 typedef AlignmentAlgorithmBase::ConstTrajTrackPair ConstTrajTrackPair; 00023 typedef AlignmentAlgorithmBase::ConstTrajTrackPairCollection ConstTrajTrackPairCollection; 00024 typedef std::vector< ReferenceTrajectoryPtr > ReferenceTrajectoryCollection; 00025 typedef std::pair< TrajectoryStateOnSurface, TransientTrackingRecHit::ConstRecHitContainer > TrajectoryInput; 00026 typedef std::vector< TrajectoryStateOnSurface > ExternalPredictionCollection; 00027 00028 TrajectoryFactoryBase( const edm::ParameterSet & config ); 00029 virtual ~TrajectoryFactoryBase( void ); 00030 00031 virtual const ReferenceTrajectoryCollection trajectories( const edm::EventSetup & setup, 00032 const ConstTrajTrackPairCollection & tracks ) const = 0; 00033 00034 virtual const ReferenceTrajectoryCollection trajectories( const edm::EventSetup& setup, 00035 const ConstTrajTrackPairCollection& tracks, 00036 const ExternalPredictionCollection& external ) const = 0; 00037 00038 virtual TrajectoryFactoryBase* clone( void ) const = 0; 00039 00040 inline const MaterialEffects materialEffects( void ) const { return theMaterialEffects; } 00041 inline const PropagationDirection propagationDirection( void ) const { return thePropDir; } 00042 00043 protected: 00044 00045 virtual const TrajectoryInput innermostStateAndRecHits( const ConstTrajTrackPair & track ) const; 00046 virtual const Trajectory::DataContainer orderedTrajectoryMeasurements( const Trajectory & trajectory ) const; 00047 bool sameSurface( const Surface& s1, const Surface& s2 ) const; 00048 bool useRecHit( const TransientTrackingRecHit::ConstRecHitPointer& hitPtr ) const; 00049 00050 private: 00051 00052 const MaterialEffects materialEffects( const std::string & strME ) const; 00053 const PropagationDirection propagationDirection( const std::string & strPD ) const; 00054 00055 MaterialEffects theMaterialEffects; 00056 PropagationDirection thePropDir; 00057 00058 bool theUseWithoutDet; 00059 bool theUseInvalidHits; 00060 bool theUseProjectedHits; 00061 00062 }; 00063 00064 00065 #endif