File indexing completed on 2024-04-06 12:31:39
0001
0002
0003
0004
0005
0006
0007
0008 #include "DataFormats/Common/interface/Handle.h"
0009 #include "DataFormats/DetId/interface/DetId.h"
0010 #include "DataFormats/TrackReco/interface/Track.h"
0011 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0012 #include "FWCore/Framework/interface/ESHandle.h"
0013 #include "FWCore/Framework/interface/Event.h"
0014 #include "FWCore/Framework/interface/EventSetup.h"
0015 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0016 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0018 #include "FWCore/Utilities/interface/InputTag.h"
0019 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
0020 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
0021 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
0022 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0023 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
0024 #include "TrackingTools/PatternTools/interface/Trajectory.h"
0025 #include "TrackingTools/Records/interface/TransientRecHitRecord.h"
0026 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0027 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
0028 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
0029 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h"
0030
0031 #include "TFile.h"
0032 #include "TH1F.h"
0033
0034 #include <vector>
0035
0036 class TrackReader : public edm::one::EDAnalyzer<> {
0037 public:
0038 typedef std::vector<Trajectory> Trajectories;
0039
0040 public:
0041
0042 TrackReader(const edm::ParameterSet& pset);
0043
0044
0045 virtual ~TrackReader();
0046
0047 void analyze(const edm::Event& event, const edm::EventSetup& eventSetup);
0048
0049 protected:
0050
0051
0052 private:
0053 const edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> trackerBuilderToken_;
0054 const edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> muonBuilderToken_;
0055 edm::InputTag theInputLabel;
0056 };
0057
0058
0059 TrackReader::TrackReader(const edm::ParameterSet& parameterSet)
0060 : trackerBuilderToken_(
0061 esConsumes(edm::ESInputTag("", parameterSet.getParameter<std::string>("TrackerRecHitBuilder")))),
0062 muonBuilderToken_(esConsumes(edm::ESInputTag("", parameterSet.getParameter<std::string>("MuonRecHitBuilder")))) {
0063 theInputLabel = parameterSet.getParameter<edm::InputTag>("InputLabel");
0064 }
0065
0066
0067 TrackReader::~TrackReader() = default;
0068
0069 void TrackReader::analyze(const edm::Event& event, const edm::EventSetup& setup) {
0070 const TransientTrackingRecHitBuilder* theTrackerRecHitBuilder = &setup.getData(trackerBuilderToken_);
0071 const TransientTrackingRecHitBuilder* theMuonRecHitBuilder = &setup.getData(muonBuilderToken_);
0072
0073 const std::string metname = "Reco|TrackingTools|TrackReader";
0074
0075
0076 edm::Handle<reco::TrackCollection> tracks;
0077 event.getByLabel(theInputLabel, tracks);
0078
0079 for (reco::TrackCollection::const_iterator track = tracks->begin(); track != tracks->end(); ++track) {
0080 for (trackingRecHit_iterator hit = track->recHitsBegin(); hit != track->recHitsEnd(); ++hit) {
0081 if ((*hit)->isValid()) {
0082 if ((*hit)->geographicalId().det() == DetId::Tracker) {
0083 LogDebug("TrackReader") << "Tracker hit";
0084 TransientTrackingRecHit::RecHitPointer tthit = theTrackerRecHitBuilder->build(&**hit);
0085
0086 LogTrace("TrackReader") << "Position: " << tthit->globalPosition();
0087 } else if ((*hit)->geographicalId().det() == DetId::Muon) {
0088 LogDebug("TrackReader") << "Muon hit";
0089 TransientTrackingRecHit::RecHitPointer tthit = theMuonRecHitBuilder->build(&**hit);
0090 LogTrace("TrackReader") << "Position: " << tthit->globalPosition();
0091 }
0092 }
0093 }
0094 }
0095 }
0096
0097 #include "FWCore/PluginManager/interface/ModuleDef.h"
0098 #include "FWCore/Framework/interface/MakerMacros.h"
0099
0100 DEFINE_FWK_MODULE(TrackReader);