00001 // Original Author: Ryan Kelley (UCSD) 00002 // Created: Mon Feb 25 19:25:11 PST 2008 00003 00004 // system include files 00005 #include <memory> 00006 00007 // user include files 00008 #include "FWCore/Framework/interface/Frameworkfwd.h" 00009 #include "FWCore/Framework/interface/EDProducer.h" 00010 #include "FWCore/Framework/interface/Event.h" 00011 #include "FWCore/Framework/interface/ESHandle.h" 00012 #include "FWCore/Framework/interface/MakerMacros.h" 00013 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00014 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00015 #include "FWCore/ParameterSet/interface/InputTag.h" 00016 00017 // Tracking Specific Includes 00018 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00019 #include "DataFormats/TrackReco/interface/Track.h" 00020 #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h" 00021 #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h" 00022 #include "DataFormats/VertexReco/interface/Vertex.h" 00023 #include "DataFormats/VertexReco/interface/VertexFwd.h" 00024 #include "SimDataFormats/TrackingAnalysis/interface/TrackingVertex.h" 00025 #include "SimDataFormats/TrackingAnalysis/interface/TrackingVertexContainer.h" 00026 #include "PhysicsTools/RecoAlgos/interface/RecoTrackSelector.h" 00027 #include "PhysicsTools/RecoAlgos/interface/TrackingParticleSelector.h" 00028 #include "DataFormats/BeamSpot/interface/BeamSpot.h" 00029 00030 // Track Association Methods 00031 #include "SimTracker/TrackAssociation/interface/TrackAssociatorByHits.h" 00032 #include "SimTracker/TrackAssociation/interface/TrackAssociatorByChi2.h" 00033 #include "SimTracker/Records/interface/TrackAssociatorRecord.h" 00034 #include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h" 00035 #include "MagneticField/Engine/interface/MagneticField.h" 00036 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" 00037 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" 00038 #include "TrackingTools/PatternTools/interface/TrajectoryStateClosestToBeamLineBuilder.h" 00039 00040 // physics tools 00041 #include "DataFormats/Math/interface/LorentzVector.h" 00042 00043 // Producer objects 00044 #include "AnalysisDataFormats/TrackInfo/interface/TPtoRecoTrack.h" 00045 #include "AnalysisDataFormats/TrackInfo/interface/TPtoRecoTrackCollection.h" 00046 #include "AnalysisDataFormats/TrackInfo/interface/RecoTracktoTP.h" 00047 #include "AnalysisDataFormats/TrackInfo/interface/RecoTracktoTPCollection.h" 00048 00049 #include <string> 00050 #include <vector> 00051 #include <TMath.h> 00052 00053 using namespace std; 00054 using namespace edm; 00055 00056 00057 class TrackAlgoCompareUtil : public edm::EDProducer 00058 { 00059 public: 00060 00061 explicit TrackAlgoCompareUtil(const edm::ParameterSet&); 00062 ~TrackAlgoCompareUtil(); 00063 00064 private: 00065 00066 virtual void beginJob(const edm::EventSetup&) ; 00067 virtual void produce(edm::Event&, const edm::EventSetup&); 00068 virtual void endJob() ; 00069 00070 void SetTrackingParticleD0Dz(TrackingParticleRef tp, const reco::BeamSpot &bs, const MagneticField *bf, TPtoRecoTrack& TPRT); 00071 void SetTrackingParticleD0Dz(TrackingParticleRef tp, const reco::BeamSpot &bs, const MagneticField *bf, RecoTracktoTP& RTTP); 00072 00073 // ----------member data --------------------------- 00074 edm::InputTag trackLabel_algoA; 00075 edm::InputTag trackLabel_algoB; 00076 edm::InputTag trackingParticleLabel_fakes; 00077 edm::InputTag trackingParticleLabel_effic; 00078 edm::InputTag vertexLabel_algoA; 00079 edm::InputTag vertexLabel_algoB; 00080 edm::InputTag trackingVertexLabel; 00081 edm::InputTag beamSpotLabel; 00082 edm::InputTag associatormap_algoA; 00083 edm::InputTag associatormap_algoB; 00084 bool UseAssociators; 00085 std::string assocLabel; 00086 00087 }; 00088 00089 00090 //define this as a plug-in 00091 DEFINE_FWK_MODULE(TrackAlgoCompareUtil);