CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/RecoEgamma/EgammaPhotonAlgos/interface/ConversionTrackFinder.h

Go to the documentation of this file.
00001 #ifndef RecoEGAMMA_ConversionTrack_ConversionTrackFinder_h
00002 #define RecoEGAMMA_ConversionTrack_ConversionTrackFinder_h
00003 
00013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00014 #include "FWCore/Framework/interface/EventSetup.h"
00015 #include "FWCore/Framework/interface/Event.h"
00016 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h"
00017 #include "TrackingTools/PatternTools/interface/Trajectory.h"
00018 //
00019 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
00020 #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h"
00021 //
00022 #include "RecoEgamma/EgammaPhotonAlgos/interface/ConversionSeedFinder.h"
00023 
00024 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
00025 #include "TrackingTools/PatternTools/interface/TrajectoryBuilder.h"
00026 
00027 // C/C++ headers
00028 #include <string>
00029 #include <vector>
00030 
00031 class TransientInitialStateEstimator;
00032 class ConversionTrackFinder {
00033 
00034  public:
00035   
00036   ConversionTrackFinder( const edm::EventSetup& es,
00037                          const edm::ParameterSet& config );
00038                        
00039   
00040   virtual ~ConversionTrackFinder();
00041  
00042   
00043   virtual std::vector<Trajectory> tracks(const TrajectorySeedCollection seeds , TrackCandidateCollection &candidate) const =0;
00044 
00046   void setEventSetup( const edm::EventSetup& es ) ; 
00047   void setEvent(const  edm::Event& e ) ; 
00048 
00049 
00050  private:
00051 
00052    
00053 
00054 
00055 
00056  protected: 
00057   
00058   edm::ParameterSet conf_;
00059   const MagneticField* theMF_;
00060 
00061   std::string theMeasurementTrackerName_;
00062   const MeasurementTracker*     theMeasurementTracker_;
00063   const TrajectoryBuilder*  theCkfTrajectoryBuilder_;
00064 
00065   TransientInitialStateEstimator* theInitialState_;  
00066   const TrackerGeometry* theTrackerGeom_;
00067   KFUpdator*                          theUpdator_;
00068 
00069   edm::ESHandle<Propagator> thePropagator_;
00070 
00071   bool useSplitHits_;
00072 
00073 struct ExtractNumOfHits {
00074   typedef int result_type;
00075   result_type operator()(const Trajectory& t) const {return t.foundHits();}
00076   result_type operator()(const Trajectory* t) const {return t->foundHits();}
00077 };
00078 
00079 
00080 struct ExtractChi2 {
00081   typedef float result_type;
00082   result_type operator()(const Trajectory& t) const {return t.chiSquared();}
00083   result_type operator()(const Trajectory* t) const {return t->chiSquared();}
00084 };
00085 
00086 
00087  
00088 
00089 };
00090 
00091 #endif