CMS 3D CMS Logo

KVFTrackUpdate.cc

Go to the documentation of this file.
00001 #include "RecoVertex/KalmanVertexFit/plugins/KVFTrackUpdate.h"
00002 
00003 #include "DataFormats/VertexReco/interface/Vertex.h"
00004 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00005 #include "DataFormats/TrackReco/interface/Track.h"
00006 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00007 #include "DataFormats/Common/interface/EDProduct.h"
00008 #include "DataFormats/Common/interface/Handle.h"
00009 #include "FWCore/Framework/interface/MakerMacros.h"
00010 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00011 #include "FWCore/Framework/interface/ESHandle.h"
00012 
00013 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
00014 #include "TrackingTools/Records/interface/TransientTrackRecord.h"
00015 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00016 #include "RecoVertex/VertexPrimitives/interface/TransientVertex.h"
00017 #include "RecoVertex/VertexPrimitives/interface/ConvertError.h"
00018 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexFitter.h"
00019 #include "SimTracker/Records/interface/TrackAssociatorRecord.h"
00020 #include "RecoVertex/KalmanVertexFit/interface/SingleTrackVertexConstraint.h"
00021 
00022 #include <iostream>
00023 
00024 using namespace reco;
00025 using namespace edm;
00026 using namespace std;
00027 
00028 KVFTrackUpdate::KVFTrackUpdate(const edm::ParameterSet& iConfig)
00029 {
00030   trackLabel_ = iConfig.getParameter<edm::InputTag>("TrackLabel");
00031   beamSpotLabel = iConfig.getParameter<edm::InputTag>("beamSpotLabel");
00032 }
00033 
00034 
00035 KVFTrackUpdate::~KVFTrackUpdate() {
00036 }
00037 
00038 void KVFTrackUpdate::beginJob(edm::EventSetup const& setup){
00039 }
00040 
00041 
00042 void KVFTrackUpdate::endJob() {
00043 }
00044 
00045 //
00046 // member functions
00047 //
00048 
00049 void
00050 KVFTrackUpdate::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00051 {
00052 
00053 
00054 
00055   try {
00056     edm::LogInfo("RecoVertex/KVFTrackUpdate") 
00057       << "Reconstructing event number: " << iEvent.id() << "\n";
00058     
00059     // get RECO tracks from the event
00060     // `tks` can be used as a ptr to a reco::TrackCollection
00061     edm::Handle<reco::TrackCollection> tks;
00062     iEvent.getByLabel(trackLabel_, tks);
00063 
00064     edm::LogInfo("RecoVertex/KVFTrackUpdate") 
00065       << "Found: " << (*tks).size() << " reconstructed tracks" << "\n";
00066     cout << "got " << (*tks).size() << " tracks " << endl;
00067 
00068     // Transform Track to TransientTrack
00069 
00070     //get the builder:
00071     edm::ESHandle<TransientTrackBuilder> theB;
00072     iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",theB);
00073     //do the conversion:
00074     vector<TransientTrack> t_tks = (*theB).build(tks);
00075 
00076     edm::LogInfo("RecoVertex/KVFTrackUpdate") 
00077       << "Found: " << t_tks.size() << " reconstructed tracks" << "\n";
00078     
00079     GlobalPoint glbPos(0.,0.,0.);
00080 
00081     AlgebraicSymMatrix mat(3,0);
00082     mat[0][0] = (20.e-04)*(20.e-04);
00083     mat[1][1] = (20.e-04)*(20.e-04);
00084     mat[2][2] = (5.3)*(5.3);
00085     GlobalError glbErrPos(mat);
00086 
00087     reco::BeamSpot vertexBeamSpot;
00088     edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
00089     iEvent.getByLabel(beamSpotLabel,recoBeamSpotHandle);
00090 
00091 
00092     SingleTrackVertexConstraint stvc;
00093     for (int i = 0; i<t_tks.size();i++) {
00094       SingleTrackVertexConstraint::TrackFloatPair a = 
00095         stvc.constrain(t_tks[i], glbPos, glbErrPos);
00096       std::cout << "Chi2: "<< a.second<<std::endl;
00097       if (recoBeamSpotHandle.isValid()){
00098         SingleTrackVertexConstraint::TrackFloatPair b =
00099           stvc.constrain(t_tks[i], *recoBeamSpotHandle);
00100         std::cout << "Chi2: "<< b.second<<std::endl;
00101       }
00102     }
00103   }
00104 
00105 
00106   catch (std::exception & err) {
00107     edm::LogInfo("RecoVertex/KVFTrackUpdate") 
00108       << "Exception during event number: " << iEvent.id() 
00109       << "\n" << err.what() << "\n";
00110   }
00111 
00112 }
00113 
00114 DEFINE_FWK_MODULE(KVFTrackUpdate);

Generated on Tue Jun 9 17:46:06 2009 for CMSSW by  doxygen 1.5.4