00001 #ifndef CombinedHitQuadrupletGeneratorForPhotonConversion_H 00002 #define CombinedHitQuadrupletGeneratorForPhotonConversion_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 HitQuadrupletGeneratorFromLayerPairForPhotonConversion; 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 00020 #include "RecoTracker/ConversionSeedGenerators/interface/ConversionRegion.h" 00021 00026 class CombinedHitQuadrupletGeneratorForPhotonConversion : public HitPairGenerator { 00027 public: 00028 typedef LayerHitMapCache LayerCacheType; 00029 00030 public: 00031 CombinedHitQuadrupletGeneratorForPhotonConversion(const edm::ParameterSet & cfg); 00032 virtual ~CombinedHitQuadrupletGeneratorForPhotonConversion(); 00033 00034 void add(const ctfseeding::SeedingLayer & inner, 00035 const ctfseeding::SeedingLayer & outer); 00036 00038 virtual void hitPairs(const TrackingRegion&, OrderedHitPairs&, const edm::Event&, const edm::EventSetup&); 00039 00041 virtual CombinedHitQuadrupletGeneratorForPhotonConversion * clone() const 00042 { return new CombinedHitQuadrupletGeneratorForPhotonConversion(theConfig); } 00043 00044 const OrderedHitPairs & run(const TrackingRegion& region, const edm::Event & ev, const edm::EventSetup& es); 00045 00046 00047 void clearLayerCache(){theLayerCache.clear();} 00048 00049 /*------------------------*/ 00050 private: 00051 CombinedHitQuadrupletGeneratorForPhotonConversion(const CombinedHitQuadrupletGeneratorForPhotonConversion & cb); 00052 void init(const ctfseeding::SeedingLayerSets & layerSets); 00053 void init(const edm::ParameterSet & cfg, const edm::EventSetup& es); 00054 void cleanup(); 00055 00056 00057 mutable bool initialised; 00058 edm::ParameterSet theConfig; 00059 00060 LayerCacheType theLayerCache; 00061 00062 edm::ESWatcher<TrackerDigiGeometryRecord> theESWatcher; 00063 00064 typedef std::vector<HitQuadrupletGeneratorFromLayerPairForPhotonConversion *> Container; 00065 Container theGenerators; 00066 00067 OrderedHitPairs thePairs; 00068 00069 }; 00070 #endif