Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:01

0001 #ifndef RECOTRACKER_TRANSIENTRECHITBUILDER_H
0002 #define RECOTRACKER_TRANSIENTRECHITBUILDER_H
0003 
0004 #include "RecoLocalTracker/Phase2TrackerRecHits/interface/Phase2StripCPE.h"
0005 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h"
0006 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0007 
0008 #include "RecoTracker/TransientTrackingRecHit/interface/TkClonerImpl.h"
0009 
0010 class SiStripRecHitMatcher;
0011 class PixelClusterParameterEstimator;
0012 class StripClusterParameterEstimator;
0013 class Phase2StripCPE;
0014 
0015 class TkTransientTrackingRecHitBuilder final : public TransientTrackingRecHitBuilder {
0016 public:
0017   TkTransientTrackingRecHitBuilder(const TrackingGeometry* trackingGeometry,
0018                                    const PixelClusterParameterEstimator*,
0019                                    const StripClusterParameterEstimator*,
0020                                    const SiStripRecHitMatcher*,
0021                                    bool computeCoarseLocalPositionFromDisk);
0022   TkTransientTrackingRecHitBuilder(const TrackingGeometry* trackingGeometry,
0023                                    const PixelClusterParameterEstimator*,
0024                                    const ClusterParameterEstimator<Phase2TrackerCluster1D>*);
0025 
0026   TransientTrackingRecHit::RecHitPointer build(const TrackingRecHit* p) const override;
0027 
0028   const PixelClusterParameterEstimator* pixelClusterParameterEstimator() const { return pixelCPE; }
0029   const StripClusterParameterEstimator* stripClusterParameterEstimator() const { return stripCPE; }
0030   const ClusterParameterEstimator<Phase2TrackerCluster1D>* phase2TrackerClusterParameterEstimator() const {
0031     return phase2OTCPE;
0032   }
0033   const SiStripRecHitMatcher* siStripRecHitMatcher() const { return theMatcher; }
0034   const TrackingGeometry* geometry() const { return tGeometry_; }
0035 
0036   // for the time being here...
0037   TkClonerImpl cloner() const {
0038     if (phase2OTCPE == nullptr)
0039       return TkClonerImpl(pixelCPE, stripCPE, theMatcher);
0040     else
0041       return TkClonerImpl(pixelCPE, phase2OTCPE);
0042   }
0043 
0044 private:
0045 private:
0046   const TrackingGeometry* tGeometry_;
0047   const PixelClusterParameterEstimator* pixelCPE;
0048   const StripClusterParameterEstimator* stripCPE;
0049   const SiStripRecHitMatcher* theMatcher;
0050   bool theComputeCoarseLocalPosition;
0051   const ClusterParameterEstimator<Phase2TrackerCluster1D>* phase2OTCPE;
0052 };
0053 
0054 #endif