00001 #ifndef TrackingRegion_H 00002 #define TrackingRegion_H 00003 00008 #include <vector> 00009 #include <string> 00010 00011 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00012 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00013 00014 #include "RecoTracker/TkMSParametrization/interface/PixelRecoRange.h" 00015 #include "TrackingTools/DetLayers/interface/DetLayer.h" 00016 #include "RecoTracker/TkTrackingRegions/interface/HitRZCompatibility.h" 00017 #include "FWCore/Framework/interface/EventSetup.h" 00018 #include "RecoTracker/TkSeedingLayers/interface/SeedingLayer.h" 00019 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h" 00020 #include <vector> 00021 00022 class DetLayer; 00023 class HitRZCompatibility; 00024 namespace edm { class Event; class EventSetup; } 00025 00026 class TrackingRegion{ 00027 public: 00028 00029 virtual ~TrackingRegion(){} 00030 typedef PixelRecoRange<float> Range; 00031 typedef TransientTrackingRecHit::ConstRecHitPointer Hit; 00032 typedef std::vector<Hit> Hits; 00033 00035 virtual GlobalVector direction() const = 0; 00036 00041 virtual GlobalPoint origin() const = 0; 00042 00044 virtual float originRBound() const = 0; 00045 00047 virtual float originZBound() const = 0; 00048 00050 virtual float ptMin() const = 0; 00051 00053 virtual Hits hits( 00054 const edm::Event& ev, 00055 const edm::EventSetup& es, 00056 const ctfseeding::SeedingLayer* layer) const = 0; 00057 00060 virtual HitRZCompatibility * checkRZ(const DetLayer* layer, 00061 const Hit & outerHit, 00062 const edm::EventSetup& iSetup) const = 0; 00063 00065 virtual TrackingRegion* restrictedRegion( const GlobalPoint & originPos, 00066 const float & originRBound, const float & originZBound) const = 0; 00067 00069 virtual TrackingRegion* clone() const = 0; 00070 00071 virtual std::string name() const { return "TrackingRegion"; } 00072 virtual std::string print() const = 0; 00073 }; 00074 00075 #endif