Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:00

0001 #ifndef TrackAssociation_CosmicParametersDefinerForTP_h
0002 #define TrackAssociation_CosmicParametersDefinerForTP_h
0003 
0004 /**
0005  *
0006  *
0007  * \author Boris Mangano (UCSD)  5/7/2009
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