![]() |
![]() |
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 00011 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00012 00015 00016 00017 namespace reco { class BeamSpot;} 00018 00019 class TrajectoryFactoryBase 00020 { 00021 00022 public: 00023 00024 typedef ReferenceTrajectoryBase::ReferenceTrajectoryPtr ReferenceTrajectoryPtr; 00025 typedef ReferenceTrajectoryBase::MaterialEffects MaterialEffects; 00026 typedef AlignmentAlgorithmBase::ConstTrajTrackPair ConstTrajTrackPair; 00027 typedef AlignmentAlgorithmBase::ConstTrajTrackPairCollection ConstTrajTrackPairCollection; 00028 typedef std::vector< ReferenceTrajectoryPtr > ReferenceTrajectoryCollection; 00029 typedef std::pair< TrajectoryStateOnSurface, TransientTrackingRecHit::ConstRecHitContainer > TrajectoryInput; 00030 typedef std::vector< TrajectoryStateOnSurface > ExternalPredictionCollection; 00031 00032 TrajectoryFactoryBase( const edm::ParameterSet & config ); 00033 virtual ~TrajectoryFactoryBase( void ); 00034 00035 virtual const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup, 00036 const ConstTrajTrackPairCollection &tracks, 00037 const reco::BeamSpot &beamSpot) const = 0; 00038 00039 virtual const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup, 00040 const ConstTrajTrackPairCollection &tracks, 00041 const ExternalPredictionCollection &external, 00042 const reco::BeamSpot &beamSpot) const = 0; 00043 00044 virtual TrajectoryFactoryBase* clone( void ) const = 0; 00045 00046 inline MaterialEffects materialEffects( void ) const { return theMaterialEffects; } 00047 inline PropagationDirection propagationDirection( void ) const { return thePropDir; } 00048 inline const edm::ParameterSet &configuration() const { return theConfig; } 00049 00050 protected: 00051 00052 virtual const TrajectoryInput innermostStateAndRecHits( const ConstTrajTrackPair & track ) const; 00053 virtual const Trajectory::DataContainer orderedTrajectoryMeasurements( const Trajectory & trajectory ) const; 00054 bool sameSurface( const Surface& s1, const Surface& s2 ) const; 00055 bool useRecHit( const TransientTrackingRecHit::ConstRecHitPointer& hitPtr ) const; 00056 00057 private: 00058 00059 MaterialEffects materialEffects( const std::string & strME ) const; 00060 PropagationDirection propagationDirection( const std::string & strPD ) const; 00061 00062 MaterialEffects theMaterialEffects; 00063 PropagationDirection thePropDir; 00064 const edm::ParameterSet theConfig; // need to keep for possible re-use after constructor... :-( 00065 00066 bool theUseWithoutDet; 00067 bool theUseInvalidHits; 00068 bool theUseProjectedHits; 00069 00070 protected: 00071 00072 bool theUseBeamSpot; 00073 }; 00074 00075 00076 #endif