00001 #ifndef CombinedHitPairGenerator_H 00002 #define CombinedHitPairGenerator_H 00003 00004 #include <vector> 00005 #include "RecoTracker/TkHitPairs/interface/HitPairGenerator.h" 00006 #include "RecoTracker/TkHitPairs/interface/LayerHitMapCache.h" 00007 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00008 00009 00010 class TrackingRegion; 00011 class OrderedHitPairs; 00012 class HitPairGeneratorFromLayerPair; 00013 namespace ctfseeding { class SeedingLayer;} 00014 namespace edm { class Event; class EventSetup; } 00015 00016 #include "FWCore/Framework/interface/ESWatcher.h" 00017 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" 00018 #include "RecoTracker/TkSeedingLayers/interface/SeedingLayerSets.h" 00019 00024 class CombinedHitPairGenerator : public HitPairGenerator { 00025 public: 00026 typedef LayerHitMapCache LayerCacheType; 00027 00028 public: 00029 CombinedHitPairGenerator(const edm::ParameterSet & cfg); 00030 virtual ~CombinedHitPairGenerator(); 00031 00032 void add(const ctfseeding::SeedingLayer & inner, 00033 const ctfseeding::SeedingLayer & outer); 00034 00036 virtual void hitPairs( const TrackingRegion& reg, 00037 OrderedHitPairs & result, const edm::Event& ev, const edm::EventSetup& es); 00038 00040 virtual CombinedHitPairGenerator * clone() const 00041 { return new CombinedHitPairGenerator(theConfig); } 00042 00043 private: 00044 CombinedHitPairGenerator(const CombinedHitPairGenerator & cb); 00045 void init(const ctfseeding::SeedingLayerSets & layerSets); 00046 void init(const edm::ParameterSet & cfg, const edm::EventSetup& es); 00047 void cleanup(); 00048 00049 00050 mutable bool initialised; 00051 edm::ParameterSet theConfig; 00052 00053 LayerCacheType theLayerCache; 00054 00055 edm::ESWatcher<TrackerDigiGeometryRecord> theESWatcher; 00056 00057 typedef std::vector<HitPairGeneratorFromLayerPair *> Container; 00058 Container theGenerators; 00059 00060 }; 00061 #endif