Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:24:57

0001 #ifndef RecoEGAMMA_ConversionSeed_OutInConversionSeedFinder_h
0002 #define RecoEGAMMA_ConversionSeed_OutInConversionSeedFinder_h
0003 
0004 /** \class OutInConversionSeedFinder
0005  **  
0006  **
0007  **  \author Nancy Marinelli, U. of Notre Dame, US
0008  **
0009  ***/
0010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0011 #include "DataFormats/CaloRecHit/interface/CaloCluster.h"
0012 #include "DataFormats/Common/interface/View.h"
0013 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
0014 #include "RecoEgamma/EgammaPhotonAlgos/interface/ConversionSeedFinder.h"
0015 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
0016 
0017 #include "TrackingTools/DetLayers/interface/MeasurementEstimator.h"
0018 
0019 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
0020 
0021 #include <string>
0022 #include <vector>
0023 
0024 class MagneticField;
0025 class FreeTrajectoryState;
0026 class TrajectoryStateOnSurface;
0027 class LayerMeasurements;
0028 
0029 class OutInConversionSeedFinder : public ConversionSeedFinder {
0030 private:
0031   typedef FreeTrajectoryState FTS;
0032   typedef TrajectoryStateOnSurface TSOS;
0033 
0034 public:
0035   OutInConversionSeedFinder(const edm::ParameterSet &config, edm::ConsumesCollector &&iC);
0036 
0037   ~OutInConversionSeedFinder() override;
0038 
0039   void makeSeeds(const edm::Handle<edm::View<reco::CaloCluster> > &allBc) override;
0040   virtual void makeSeeds(const reco::CaloClusterPtr &aBC);
0041 
0042 private:
0043   edm::ParameterSet conf_;
0044   std::pair<FreeTrajectoryState, bool> makeTrackState(int charge) const;
0045 
0046   void fillClusterSeeds(const reco::CaloClusterPtr &bc);
0047 
0048   void startSeed(const FreeTrajectoryState &);
0049   void completeSeed(const TrajectoryMeasurement &m1, const FreeTrajectoryState &fts, const Propagator *, int layer);
0050   void createSeed(const TrajectoryMeasurement &m1, const TrajectoryMeasurement &m2);
0051   FreeTrajectoryState createSeedFTS(const TrajectoryMeasurement &m1, const TrajectoryMeasurement &m2) const;
0052   GlobalPoint fixPointRadius(const TrajectoryMeasurement &) const;
0053 
0054   MeasurementEstimator *makeEstimator(const DetLayer *, float dphi) const;
0055 
0056 private:
0057   float the2ndHitdphi_;
0058   float the2ndHitdzConst_;
0059   float the2ndHitdznSigma_;
0060   std::vector<TrajectoryMeasurement> theFirstMeasurements_;
0061   int nSeedsPerBC_;
0062   int maxNumberOfOutInSeedsPerBC_;
0063   float bcEtcut_;
0064   float bcEcut_;
0065   bool useEtCut_;
0066 };
0067 
0068 #endif