File indexing completed on 2023-03-17 11:25:43
0001 #ifndef TrackAssociation_CosmicParametersDefinerForTP_h
0002 #define TrackAssociation_CosmicParametersDefinerForTP_h
0003
0004
0005
0006
0007
0008
0009
0010 #include "FWCore/Framework/interface/ConsumesCollector.h"
0011 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
0012 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
0013 #include "SimTracker/TrackAssociation/interface/ParametersDefinerForTP.h"
0014 #include <SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h>
0015
0016 #include <memory>
0017
0018 class CosmicParametersDefinerForTP : public ParametersDefinerForTP {
0019 public:
0020 CosmicParametersDefinerForTP(edm::ConsumesCollector iC);
0021 ~CosmicParametersDefinerForTP() override;
0022
0023 TrackingParticle::Vector momentum(const edm::Event &iEvent,
0024 const edm::EventSetup &iSetup,
0025 const TrackingParticleRef &tpr) const override;
0026 TrackingParticle::Point vertex(const edm::Event &iEvent,
0027 const edm::EventSetup &iSetup,
0028 const TrackingParticleRef &tpr) const override;
0029
0030 std::tuple<TrackingParticle::Vector, TrackingParticle::Point> momentumAndVertex(
0031 const edm::Event &iEvent, const edm::EventSetup &iSetup, const TrackingParticleRef &tpr) const override {
0032 return std::make_tuple(momentum(iEvent, iSetup, tpr), vertex(iEvent, iSetup, tpr));
0033 }
0034
0035 TrackingParticle::Vector momentum(const edm::Event &iEvent,
0036 const edm::EventSetup &iSetup,
0037 const Charge ch,
0038 const Point &vertex,
0039 const LorentzVector &lv) const override {
0040 return TrackingParticle::Vector();
0041 }
0042
0043 TrackingParticle::Point vertex(const edm::Event &iEvent,
0044 const edm::EventSetup &iSetup,
0045 const Charge ch,
0046 const Point &vertex,
0047 const LorentzVector &lv) const override {
0048 return TrackingParticle::Point();
0049 }
0050
0051 void initEvent(edm::Handle<SimHitTPAssociationProducer::SimHitTPAssociationList> simHitsTPAssocToSet) override {
0052 simHitsTPAssoc = simHitsTPAssocToSet;
0053 }
0054
0055 std::unique_ptr<ParametersDefinerForTP> clone() const override {
0056 return std::make_unique<CosmicParametersDefinerForTP>(*this);
0057 }
0058
0059 private:
0060 const edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> geometryToken_;
0061 edm::Handle<SimHitTPAssociationProducer::SimHitTPAssociationList> simHitsTPAssoc;
0062 };
0063
0064 #endif