Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef RecoEGAMMA_ConversionSeed_InOutConversionSeedFinder_h
0002 #define RecoEGAMMA_ConversionSeed_InOutConversionSeedFinder_h
0003 
0004 /** \class InOutConversionSeedFinder
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/CaloClusterFwd.h"
0012 #include "DataFormats/Common/interface/View.h"
0013 
0014 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
0015 #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h"
0016 
0017 #include "RecoEgamma/EgammaPhotonAlgos/interface/ConversionSeedFinder.h"
0018 #include "TrackingTools/DetLayers/interface/DetLayer.h"
0019 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
0020 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
0021 #include "TrackingTools/DetLayers/interface/MeasurementEstimator.h"
0022 #include "TrackingTools/PatternTools/interface/Trajectory.h"
0023 #include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h"
0024 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h"
0025 #include "Geometry/CommonDetUnit/interface/TrackingGeometry.h"
0026 #include <string>
0027 #include <vector>
0028 
0029 class MagneticField;
0030 class FreeTrajectoryState;
0031 class TrajectoryStateOnSurface;
0032 class TrajectoryMeasurement;
0033 
0034 class InOutConversionSeedFinder : public ConversionSeedFinder {
0035 private:
0036   typedef FreeTrajectoryState FTS;
0037   typedef TrajectoryStateOnSurface TSOS;
0038 
0039 public:
0040   InOutConversionSeedFinder(const edm::ParameterSet& config, edm::ConsumesCollector&& iC);
0041 
0042   ~InOutConversionSeedFinder() override;
0043 
0044   void makeSeeds(const edm::Handle<edm::View<reco::CaloCluster> >& allBc) override;
0045 
0046   void setTracks(std::vector<Trajectory> const& in) { theOutInTracks_ = in; }
0047 
0048 private:
0049   edm::ParameterSet conf_;
0050   virtual void fillClusterSeeds();
0051   void startSeed(const FreeTrajectoryState* fts,
0052                  const TrajectoryStateOnSurface& stateAtPreviousLayer,
0053                  int charge,
0054                  int layer);
0055   virtual void findSeeds(const TrajectoryStateOnSurface& startingState, float signedpt, unsigned int startingLayer);
0056 
0057   std::vector<const reco::CaloCluster*> getSecondCaloClusters(const GlobalPoint& conversionPosition,
0058                                                               float charge) const;
0059   void completeSeed(const TrajectoryMeasurement& m1,
0060                     const FreeTrajectoryState& fts,
0061                     const Propagator* propagator,
0062                     int ilayer);
0063   void createSeed(const TrajectoryMeasurement& m1, const TrajectoryMeasurement& m2);
0064 
0065 private:
0066   float the2ndHitdphi_;
0067   float the2ndHitdzConst_;
0068   float the2ndHitdznSigma_;
0069   int track2Charge_;
0070   GlobalVector track2InitialMomentum_;
0071   int nSeedsPerInputTrack_;
0072   int maxNumberOfInOutSeedsPerInputTrack_;
0073 
0074   TrajectoryMeasurement* myPointer;
0075 
0076   std::vector<Trajectory> inputTracks_;
0077   std::vector<Trajectory> theOutInTracks_;
0078   std::vector<TrajectoryMeasurement> theFirstMeasurements_;
0079 
0080   reco::CaloCluster theSecondBC_;
0081   edm::Handle<edm::View<reco::CaloCluster> > bcCollection_;
0082 };
0083 
0084 #endif