CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/RecoEgamma/EgammaPhotonAlgos/interface/OutInConversionSeedFinder.h

Go to the documentation of this file.
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/PatternTools/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