Go to the documentation of this file.00001 #ifndef RecoEGAMMA_ConversionSeed_InOutConversionSeedFinder_h
00002 #define RecoEGAMMA_ConversionSeed_InOutConversionSeedFinder_h
00003
00013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00014 #include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h"
00015 #include "DataFormats/Common/interface/View.h"
00016
00017 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
00018 #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h"
00019
00020 #include "RecoEgamma/EgammaPhotonAlgos/interface/ConversionSeedFinder.h"
00021 #include "TrackingTools/DetLayers/interface/DetLayer.h"
00022 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
00023 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
00024 #include "TrackingTools/PatternTools/interface/MeasurementEstimator.h"
00025 #include "TrackingTools/PatternTools/interface/Trajectory.h"
00026 #include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h"
00027 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h"
00028 #include "Geometry/CommonDetUnit/interface/TrackingGeometry.h"
00029 #include <string>
00030 #include <vector>
00031
00032
00033
00034 class MagneticField;
00035 class FreeTrajectoryState;
00036 class TrajectoryStateOnSurface;
00037 class TrajectoryMeasurement;
00038
00039 class InOutConversionSeedFinder : public ConversionSeedFinder {
00040
00041
00042 private:
00043
00044 typedef FreeTrajectoryState FTS;
00045 typedef TrajectoryStateOnSurface TSOS;
00046
00047
00048 public :
00049
00050
00051
00052 InOutConversionSeedFinder( const edm::ParameterSet& config );
00053
00054
00055
00056 virtual ~InOutConversionSeedFinder();
00057
00058
00059 virtual void makeSeeds( const edm::Handle<edm::View<reco::CaloCluster> > & allBc) const;
00060
00061
00062
00063 void setTracks(std::vector<Trajectory> const & in) { theOutInTracks_ = in;}
00064
00065
00066 private :
00067
00068 edm::ParameterSet conf_;
00069 virtual void fillClusterSeeds( ) const ;
00070 void startSeed(FreeTrajectoryState * fts, const TrajectoryStateOnSurface & stateAtPreviousLayer, int charge, int layer) const ;
00071 virtual void findSeeds(const TrajectoryStateOnSurface & startingState,
00072 float signedpt, unsigned int startingLayer) const ;
00073
00074 std::vector<const reco::CaloCluster*> getSecondCaloClusters(const GlobalPoint & conversionPosition, float charge) const;
00075 void completeSeed(const TrajectoryMeasurement & m1,FreeTrajectoryState & fts, const Propagator* propagator, int ilayer) const;
00076 void createSeed(const TrajectoryMeasurement & m1, const TrajectoryMeasurement & m2) const ;
00077
00078
00079 private:
00080 float the2ndHitdphi_;
00081 float the2ndHitdzConst_;
00082 float the2ndHitdznSigma_;
00083 mutable int track2Charge_;
00084 mutable GlobalVector track2InitialMomentum_;
00085 mutable int nSeedsPerInputTrack_;
00086 int maxNumberOfInOutSeedsPerInputTrack_;
00087
00088
00089 mutable TrajectoryMeasurement* myPointer;
00090
00091 mutable std::vector<Trajectory> inputTracks_;
00092 mutable std::vector<Trajectory> theOutInTracks_;
00093 mutable std::vector<TrajectoryMeasurement> theFirstMeasurements_;
00094
00095 mutable reco::CaloCluster theSecondBC_;
00096 mutable edm::Handle<edm::View<reco::CaloCluster> > bcCollection_;
00097
00098
00099 };
00100
00101 #endif