00001 #ifndef RecoEGAMMA_ConversionSeed_OutInConversionSeedFinder_h 00002 #define RecoEGAMMA_ConversionSeed_OutInConversionSeedFinder_h 00003 00013 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00014 #include "DataFormats/CaloRecHit/interface/CaloCluster.h" 00015 #include "DataFormats/Common/interface/View.h" 00016 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" 00017 #include "RecoEgamma/EgammaPhotonAlgos/interface/ConversionSeedFinder.h" 00018 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h" 00019 00020 #include "TrackingTools/DetLayers/interface/MeasurementEstimator.h" 00021 00022 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h" 00023 00024 #include <string> 00025 #include <vector> 00026 00027 00028 00029 class MagneticField; 00030 class FreeTrajectoryState; 00031 class TrajectoryStateOnSurface; 00032 class LayerMeasurements; 00033 00034 class OutInConversionSeedFinder : public ConversionSeedFinder { 00035 00036 00037 private: 00038 00039 typedef FreeTrajectoryState FTS; 00040 typedef TrajectoryStateOnSurface TSOS; 00041 00042 00043 public : 00044 00045 00046 OutInConversionSeedFinder( const edm::ParameterSet& config ); 00047 00048 virtual ~OutInConversionSeedFinder(); 00049 00050 00051 00052 virtual void makeSeeds( const edm::Handle<edm::View<reco::CaloCluster> > & allBc) const ; 00053 virtual void makeSeeds( const reco::CaloClusterPtr& aBC ) const ; 00054 00055 private: 00056 00057 edm::ParameterSet conf_; 00058 std::pair<FreeTrajectoryState,bool> makeTrackState(int charge) const ; 00059 00060 void fillClusterSeeds(const reco::CaloClusterPtr& bc) const ; 00061 00062 void startSeed(const FreeTrajectoryState &) const; 00063 void completeSeed(const TrajectoryMeasurement & m1, 00064 FreeTrajectoryState & fts, 00065 const Propagator *, 00066 int layer) const ; 00067 void createSeed(const TrajectoryMeasurement & m1,const TrajectoryMeasurement & m2) const; 00068 FreeTrajectoryState createSeedFTS(const TrajectoryMeasurement & m1, const TrajectoryMeasurement & m2) const; 00069 GlobalPoint fixPointRadius(const TrajectoryMeasurement &) const; 00070 00071 00072 00073 00074 MeasurementEstimator * makeEstimator(const DetLayer *, float dphi) const ; 00075 00076 private : 00077 00078 float the2ndHitdphi_; 00079 float the2ndHitdzConst_; 00080 float the2ndHitdznSigma_; 00081 mutable std::vector<TrajectoryMeasurement> theFirstMeasurements_; 00082 mutable int nSeedsPerBC_; 00083 int maxNumberOfOutInSeedsPerBC_; 00084 00085 00086 }; 00087 00088 #endif