Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-09-23 22:53:21

0001 #ifndef PixelTripletLargeTipGenerator_H
0002 #define PixelTripletLargeTipGenerator_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 "CombinedHitTripletGenerator.h"
0011 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0012 #include "FWCore/Framework/interface/FrameworkfwdMostUsed.h"
0013 #include "FWCore/Utilities/interface/ESGetToken.h"
0014 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0015 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0016 #include "RecoPixelVertexing/PixelTriplets/interface/HitTripletGeneratorFromPairAndLayers.h"
0017 #include "RecoTracker/Record/interface/TrackerMultipleScatteringRecord.h"
0018 #include "RecoTracker/TkMSParametrization/interface/MultipleScatteringParametrisationMaker.h"
0019 
0020 #include <utility>
0021 #include <vector>
0022 
0023 class PixelTripletLargeTipGenerator : public HitTripletGeneratorFromPairAndLayers {
0024   typedef CombinedHitTripletGenerator::LayerCacheType LayerCacheType;
0025 
0026 public:
0027   PixelTripletLargeTipGenerator(const edm::ParameterSet& cfg, edm::ConsumesCollector&& iC)
0028       : PixelTripletLargeTipGenerator(cfg, iC) {}
0029   PixelTripletLargeTipGenerator(const edm::ParameterSet& cfg, edm::ConsumesCollector& iC);
0030 
0031   ~PixelTripletLargeTipGenerator() override;
0032 
0033   static void fillDescriptions(edm::ParameterSetDescription& desc);
0034   static const char* fillDescriptionsLabel() { return "pixelTripletLargeTip"; }
0035 
0036   void hitTriplets(const TrackingRegion& region,
0037                    OrderedHitTriplets& trs,
0038                    const edm::Event& ev,
0039                    const edm::EventSetup& es,
0040                    const SeedingLayerSetsHits::SeedingLayerSet& pairLayers,
0041                    const std::vector<SeedingLayerSetsHits::SeedingLayer>& thirdLayers) override;
0042 
0043   void hitTriplets(const TrackingRegion& region,
0044                    OrderedHitTriplets& trs,
0045                    const edm::Event& ev,
0046                    const edm::EventSetup& es,
0047                    const HitDoublets& doublets,
0048                    const std::vector<SeedingLayerSetsHits::SeedingLayer>& thirdLayers,
0049                    std::vector<int>* tripletLastLayerIndex,
0050                    LayerCacheType& layerCache);
0051 
0052   void hitTriplets(const TrackingRegion& region,
0053                    OrderedHitTriplets& result,
0054                    const edm::EventSetup& es,
0055                    const HitDoublets& doublets,
0056                    const RecHitsSortedInPhi** thirdHitMap,
0057                    const std::vector<const DetLayer*>& thirdLayerDetLayer,
0058                    const int nThirdLayers) override;
0059 
0060   void hitTriplets(const TrackingRegion& region,
0061                    OrderedHitTriplets& result,
0062                    const edm::EventSetup& es,
0063                    const HitDoublets& doublets,
0064                    const RecHitsSortedInPhi** thirdHitMap,
0065                    const std::vector<const DetLayer*>& thirdLayerDetLayer,
0066                    const int nThirdLayers,
0067                    std::vector<int>* tripletLastLayerIndex);
0068 
0069 private:
0070   const bool useFixedPreFiltering;
0071   const float extraHitRZtolerance;
0072   const float extraHitRPhitolerance;
0073   const bool useMScat;
0074   const bool useBend;
0075   const float dphi;
0076 
0077   const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> trackerTopologyESToken_;
0078   const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> fieldESToken_;
0079   edm::ESGetToken<MultipleScatteringParametrisationMaker, TrackerMultipleScatteringRecord> msmakerESToken_;
0080 };
0081 #endif