Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef _PixelTripletLowPtGenerator_h_
0002 #define _PixelTripletLowPtGenerator_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 "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0011 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0012 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0013 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0014 
0015 #include "FWCore/Framework/interface/EventSetup.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "FWCore/Utilities/interface/EDGetToken.h"
0018 #include "RecoPixelVertexing/PixelTriplets/interface/HitTripletGeneratorFromPairAndLayers.h"
0019 
0020 #include "RecoPixelVertexing/PixelLowPtUtilities/interface/TripletFilter.h"
0021 
0022 class IdealMagneticFieldRecord;
0023 class MultipleScatteringParametrisationMaker;
0024 class TrackerMultipleScatteringRecord;
0025 class SiPixelClusterShapeCache;
0026 class TrackerGeometry;
0027 class TransientTrackingRecHitBuilder;
0028 class TransientRecHitRecord;
0029 class TripletFilter;
0030 
0031 #include <vector>
0032 
0033 class PixelTripletLowPtGenerator : public HitTripletGeneratorFromPairAndLayers {
0034 public:
0035   PixelTripletLowPtGenerator(const edm::ParameterSet& cfg, edm::ConsumesCollector& iC);
0036 
0037   ~PixelTripletLowPtGenerator() override;
0038 
0039   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) override;
0045   void hitTriplets(const TrackingRegion& region,
0046                    OrderedHitTriplets& result,
0047                    const edm::EventSetup& es,
0048                    const HitDoublets& doublets,
0049                    const RecHitsSortedInPhi** thirdHitMap,
0050                    const std::vector<const DetLayer*>& thirdLayerDetLayer,
0051                    const int nThirdLayers) override;
0052 
0053 private:
0054   edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> m_geomToken;
0055   edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> m_topoToken;
0056   edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> m_magfieldToken;
0057   edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> m_ttrhBuilderToken;
0058   edm::ESGetToken<MultipleScatteringParametrisationMaker, TrackerMultipleScatteringRecord> m_msmakerToken;
0059 
0060   void getTracker(const edm::EventSetup& es);
0061   GlobalPoint getGlobalPosition(const TrackingRecHit* recHit);
0062 
0063   const TrackerGeometry* theTracker;
0064   std::unique_ptr<TripletFilter> theFilter;
0065 
0066   edm::EDGetTokenT<SiPixelClusterShapeCache> theClusterShapeCacheToken;
0067   double nSigMultipleScattering;
0068   double rzTolerance;
0069   double maxAngleRatio;
0070 
0071   bool checkMultipleScattering;
0072   bool checkClusterShape;
0073 };
0074 
0075 #endif