File indexing completed on 2024-04-06 12:24:57
0001 #ifndef RecoEGAMMA_ConversionSeed_OutInConversionSeedFinder_h
0002 #define RecoEGAMMA_ConversionSeed_OutInConversionSeedFinder_h
0003
0004
0005
0006
0007
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