Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:31

0001 #ifndef RecoTracker_PixelSeeding_HitTripletGeneratorFromPairAndLayers_h
0002 #define RecoTracker_PixelSeeding_HitTripletGeneratorFromPairAndLayers_h
0003 
0004 /** A HitTripletGenerator from HitPairGenerator and vector of
0005     Layers. The HitPairGenerator provides a set of hit pairs.
0006     For each pair the search for compatible hit(s) is done among
0007     provided Layers
0008  */
0009 
0010 #include "RecoTracker/PixelSeeding/interface/OrderedHitTriplets.h"
0011 #include <vector>
0012 #include "TrackingTools/TransientTrackingRecHit/interface/SeedingLayerSetsHits.h"
0013 #include "RecoTracker/TkHitPairs/interface/LayerHitMapCache.h"
0014 
0015 namespace edm {
0016   class ParameterSet;
0017   class Event;
0018   class EventSetup;
0019   class ConsumesCollector;
0020   class ParameterSetDescription;
0021 }  // namespace edm
0022 class TrackingRegion;
0023 class HitPairGeneratorFromLayerPair;
0024 
0025 class HitTripletGeneratorFromPairAndLayers {
0026 public:
0027   typedef LayerHitMapCache LayerCacheType;
0028 
0029   explicit HitTripletGeneratorFromPairAndLayers(unsigned int maxElement = 0);
0030   explicit HitTripletGeneratorFromPairAndLayers(const edm::ParameterSet& pset);
0031   virtual ~HitTripletGeneratorFromPairAndLayers();
0032 
0033   static void fillDescriptions(edm::ParameterSetDescription& desc);
0034 
0035   void init(std::unique_ptr<HitPairGeneratorFromLayerPair>&& pairs, LayerCacheType* layerCache);
0036 
0037   const HitPairGeneratorFromLayerPair& pairGenerator() const { return *thePairGenerator; }
0038 
0039   virtual void hitTriplets(const TrackingRegion& region,
0040                            OrderedHitTriplets& trs,
0041                            const edm::Event& ev,
0042                            const edm::EventSetup& es,
0043                            const SeedingLayerSetsHits::SeedingLayerSet& pairLayers,
0044                            const std::vector<SeedingLayerSetsHits::SeedingLayer>& thirdLayers) = 0;
0045 
0046   virtual void hitTriplets(const TrackingRegion& region,
0047                            OrderedHitTriplets& result,
0048                            const edm::EventSetup& es,
0049                            const HitDoublets& doublets,
0050                            const RecHitsSortedInPhi** thirdHitMap,
0051                            const std::vector<const DetLayer*>& thirdLayerDetLayer,
0052                            const int nThirdLayers) = 0;
0053 
0054 protected:
0055   std::unique_ptr<HitPairGeneratorFromLayerPair> thePairGenerator;
0056   LayerCacheType* theLayerCache;
0057   const unsigned int theMaxElement;
0058 };
0059 #endif