CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/RecoJets/JetAssociationProducers/interface/TrackExtrapolator.h

Go to the documentation of this file.
00001 #ifndef RecoJets_JetAssociationProducers_interface_TrackExtrapolator_h
00002 #define RecoJets_JetAssociationProducers_interface_TrackExtrapolator_h
00003 
00004 // -*- C++ -*-
00005 //
00006 // Package:    TrackExtrapolator
00007 // Class:      TrackExtrapolator
00008 // 
00018 //
00019 // Original Author:  Salvatore Rappoccio (salvatore.rappoccio@cern.ch)
00020 //         Created:  Mon Feb 22 11:54:41 CET 2010
00021 // $Id: TrackExtrapolator.h,v 1.2 2010/09/01 01:23:35 johnpaul Exp $
00022 //
00023 // Revision by: John Paul Chou (chou@hep.brown.edu)
00024 //              Modified algorithm to extrapolate correctly to the endcap front face.
00025 //
00026 //
00027 
00028 
00029 // system include files
00030 #include <memory>
00031 
00032 // user include files
00033 #include "FWCore/Framework/interface/Frameworkfwd.h"
00034 #include "FWCore/Framework/interface/EDProducer.h"
00035 
00036 #include "FWCore/Framework/interface/Event.h"
00037 #include "FWCore/Framework/interface/MakerMacros.h"
00038 #include "FWCore/Framework/interface/ESHandle.h"
00039 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00040 
00041 #include "DataFormats/JetReco/interface/TrackExtrapolation.h"
00042 #include "DataFormats/GeometrySurface/interface/Cylinder.h"
00043 #include "DataFormats/GeometrySurface/interface/Plane.h"
00044 #include "DataFormats/Math/interface/deltaR.h"
00045 #include "DataFormats/Math/interface/Vector3D.h"
00046 #include "MagneticField/Engine/interface/MagneticField.h"
00047 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00048 #include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h"
00049 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h"
00050 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00051 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
00052 #include "TrackingTools/Records/interface/TrackingComponentsRecord.h"
00053 #include "TrackingTools/TrackAssociator/interface/FiducialVolume.h"
00054 
00055 //
00056 // class declaration
00057 //
00058 
00059 class TrackExtrapolator : public edm::EDProducer {
00060    public:
00061       explicit TrackExtrapolator(const edm::ParameterSet&);
00062       ~TrackExtrapolator();
00063 
00064    private:
00065       virtual void beginJob() ;
00066       virtual void produce(edm::Event&, const edm::EventSetup&);
00067       virtual void endJob() ;
00068       
00069       // ----------member data ---------------------------
00070 
00071       edm::InputTag tracksSrc_;    
00072       reco::TrackBase::TrackQuality trackQuality_; 
00073 
00074 
00075       // ----------internal functions ---------------------------
00076 
00080       bool propagateTrackToVolume( const reco::Track& fTrack,
00081                                    const MagneticField& fField,
00082                                    const Propagator& fPropagator,
00083                                    const FiducialVolume& volume,
00084                                    reco::TrackBase::Point & resultPos,
00085                                    reco::TrackBase::Vector & resultMom,
00086                                    reco::TrackBase::Vector & resultDir
00087                                    );
00088 
00089       
00090 
00091 };
00092 
00093 
00094 #endif