00001 #ifndef Alignment_ReferenceTrajectories_TwoParticleEventTrajectoryFactory_h 00002 #define Alignment_ReferenceTrajectories_TwoParticleEventTrajectoryFactory_h 00003 00004 #include "Alignment/ReferenceTrajectories/interface/TrajectoryFactoryBase.h" 00005 #include "Alignment/ReferenceTrajectories/interface/TwoBodyDecayTrajectory.h" 00006 00007 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecayFitter.h" 00008 00009 00010 class TwoBodyDecayTrajectoryFactory : public TrajectoryFactoryBase 00011 { 00012 00013 public: 00014 00015 typedef TwoBodyDecayVirtualMeasurement VirtualMeasurement; 00016 typedef TwoBodyDecayTrajectoryState::TsosContainer TsosContainer; 00017 typedef TwoBodyDecayTrajectory::ConstRecHitCollection ConstRecHitCollection; 00018 00019 TwoBodyDecayTrajectoryFactory( const edm::ParameterSet & config ); 00020 ~TwoBodyDecayTrajectoryFactory( void ) {} 00021 00023 virtual const ReferenceTrajectoryCollection trajectories( const edm::EventSetup & setup, 00024 const ConstTrajTrackPairCollection & tracks ) const; 00025 00026 virtual const ReferenceTrajectoryCollection trajectories( const edm::EventSetup& setup, 00027 const ConstTrajTrackPairCollection& tracks, 00028 const ExternalPredictionCollection& external ) const; 00029 00030 virtual TwoBodyDecayTrajectoryFactory* clone( void ) const { return new TwoBodyDecayTrajectoryFactory( *this ); } 00031 00032 protected: 00033 00034 const ReferenceTrajectoryCollection constructTrajectories( const ConstTrajTrackPairCollection& tracks, 00035 const TwoBodyDecay& tbd, 00036 const MagneticField* magField, 00037 bool setParameterErrors ) const; 00038 00039 bool match( const TrajectoryStateOnSurface& state, 00040 const TransientTrackingRecHit::ConstRecHitPointer& recHit ) const; 00041 00042 void produceVirtualMeasurement( const edm::ParameterSet & config ); 00043 00044 VirtualMeasurement theVM; 00045 GlobalPoint theBeamSpot; 00046 GlobalError theBeamSpotError; 00047 00048 TwoBodyDecayFitter* theFitter; 00049 00050 double theNSigmaCutValue; 00051 bool theUseRefittedStateFlag; 00052 bool theConstructTsosWithErrorsFlag; 00053 00054 }; 00055 00056 00057 #endif