00001 #ifndef PixelTripletHLTGenerator_H 00002 #define PixelTripletHLTGenerator_H 00003 00010 #include "RecoTracker/TkHitPairs/interface/HitPairGenerator.h" 00011 #include "RecoPixelVertexing/PixelTriplets/interface/HitTripletGenerator.h" 00012 #include "RecoPixelVertexing/PixelTriplets/interface/CombinedHitTripletGenerator.h" 00013 #include "RecoTracker/TkSeedingLayers/interface/SeedingLayer.h" 00014 #include "FWCore/Framework/interface/EventSetup.h" 00015 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00016 #include "RecoPixelVertexing/PixelTriplets/interface/HitTripletGeneratorFromPairAndLayers.h" 00017 00018 #include <utility> 00019 #include <vector> 00020 00021 00022 class PixelTripletHLTGenerator : public HitTripletGeneratorFromPairAndLayers { 00023 00024 typedef CombinedHitTripletGenerator::LayerCacheType LayerCacheType; 00025 00026 public: 00027 PixelTripletHLTGenerator( const edm::ParameterSet& cfg) 00028 : theConfig(cfg), thePairGenerator(0), theLayerCache(0) { } 00029 00030 virtual ~PixelTripletHLTGenerator() { delete thePairGenerator; } 00031 00032 virtual void init( const HitPairGenerator & pairs, 00033 const std::vector<ctfseeding::SeedingLayer> & layers, LayerCacheType* layerCache); 00034 00035 virtual void hitTriplets( const TrackingRegion& region, OrderedHitTriplets & trs, 00036 const edm::Event & ev, const edm::EventSetup& es); 00037 00038 const HitPairGenerator & pairGenerator() const { return *thePairGenerator; } 00039 const std::vector<ctfseeding::SeedingLayer> & thirdLayers() const { return theLayers; } 00040 00041 private: 00042 bool checkPhiInRange(float phi, float phi1, float phi2) const; 00043 std::pair<float,float> mergePhiRanges( 00044 const std::pair<float,float> &r1, const std::pair<float,float> &r2) const; 00045 00046 edm::ParameterSet theConfig; 00047 HitPairGenerator * thePairGenerator; 00048 std::vector<ctfseeding::SeedingLayer> theLayers; 00049 LayerCacheType * theLayerCache; 00050 }; 00051 #endif 00052 00053