File indexing completed on 2023-03-17 11:17:44
0001 #ifndef RecoEGAMMA_ConversionSeed_InOutConversionSeedFinder_h
0002 #define RecoEGAMMA_ConversionSeed_InOutConversionSeedFinder_h
0003
0004
0005
0006
0007
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