File indexing completed on 2024-09-15 23:07:00
0001 #ifndef MeasurementTrackerImpl_H
0002 #define MeasurementTrackerImpl_H
0003
0004 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
0005 #include "RecoTracker/MeasurementDet/interface/MeasurementTrackerEvent.h"
0006 #include "RecoTracker/MeasurementDet/src/TkMeasurementDetSet.h"
0007
0008 #include "DataFormats/DetId/interface/DetId.h"
0009 #include "RecoLocalTracker/ClusterParameterEstimator/interface/StripClusterParameterEstimator.h"
0010 #include "RecoLocalTracker/ClusterParameterEstimator/interface/PixelClusterParameterEstimator.h"
0011 #include "RecoLocalTracker/Phase2TrackerRecHits/interface/Phase2StripCPE.h"
0012 #include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h"
0013
0014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0015
0016 #include "CondFormats/SiStripObjects/interface/SiStripNoises.h"
0017 #include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h"
0018 #include "CalibFormats/SiStripObjects/interface/SiStripQuality.h"
0019
0020 #include "CondFormats/SiPixelObjects/interface/SiPixelQuality.h"
0021
0022 #include <map>
0023 #include <unordered_map>
0024 #include <vector>
0025
0026 class TkStripMeasurementDet;
0027 class TkPixelMeasurementDet;
0028 class TkPhase2OTMeasurementDet;
0029 class TkGluedMeasurementDet;
0030 class TkStackMeasurementDet;
0031 class GeometricSearchTracker;
0032 class SiStripRecHitMatcher;
0033 class GluedGeomDet;
0034 class StackGeomDet;
0035 class SiPixelFedCabling;
0036 class TrackerGeometry;
0037
0038 class dso_hidden MeasurementTrackerImpl final : public MeasurementTracker {
0039 public:
0040 enum QualityFlags {
0041 BadModules = 1,
0042 BadAPVFibers = 2,
0043 BadStrips = 4,
0044 MaskBad128StripBlocks = 8,
0045 BadROCs = 2
0046 };
0047
0048 struct BadStripCutsDet {
0049 StMeasurementConditionSet::BadStripCuts tib;
0050 StMeasurementConditionSet::BadStripCuts tob;
0051 StMeasurementConditionSet::BadStripCuts tid;
0052 StMeasurementConditionSet::BadStripCuts tec;
0053 };
0054
0055 MeasurementTrackerImpl(const BadStripCutsDet& badStripCuts,
0056 const PixelClusterParameterEstimator* pixelCPE,
0057 const StripClusterParameterEstimator* stripCPE,
0058 const SiStripRecHitMatcher* hitMatcher,
0059 const TrackerTopology* trackerTopology,
0060 const TrackerGeometry* trackerGeom,
0061 const GeometricSearchTracker* geometricSearchTracker,
0062 const SiStripQuality* stripQuality,
0063 int stripQualityFlags,
0064 int stripQualityDebugFlags,
0065 const SiPixelQuality* pixelQuality,
0066 const SiPixelFedCabling* pixelCabling,
0067 int pixelQualityFlags,
0068 int pixelQualityDebugFlags,
0069 const ClusterParameterEstimator<Phase2TrackerCluster1D>* phase2OTCPE = nullptr);
0070
0071 ~MeasurementTrackerImpl() override;
0072
0073 const TrackerGeometry* geomTracker() const { return theTrackerGeom; }
0074
0075 const GeometricSearchTracker* geometricSearchTracker() const { return theGeometricSearchTracker; }
0076
0077
0078 MeasurementDetWithData idToDet(const DetId& id, const MeasurementTrackerEvent& data) const override {
0079 return MeasurementDetWithData(*idToDetBare(id, data), data);
0080 }
0081
0082 const MeasurementDet* idToDetBare(const DetId& id, const MeasurementTrackerEvent& data) const { return findDet(id); }
0083
0084 const MeasurementDet* findDet(const DetId& id) const {
0085 auto it = theDetMap.find(id);
0086 if (it != theDetMap.end()) {
0087 return it->second;
0088 } else {
0089
0090 }
0091
0092 return nullptr;
0093 }
0094
0095 typedef std::unordered_map<unsigned int, MeasurementDet*> DetContainer;
0096
0097
0098 const DetContainer& allDets() const { return theDetMap; }
0099 const std::vector<TkStripMeasurementDet>& stripDets() const { return theStripDets; }
0100 const std::vector<TkPixelMeasurementDet>& pixelDets() const { return thePixelDets; }
0101 const std::vector<TkGluedMeasurementDet>& gluedDets() const { return theGluedDets; }
0102 const std::vector<TkStackMeasurementDet>& stackDets() const { return theStackDets; }
0103
0104 const StMeasurementConditionSet& stripDetConditions() const override { return theStDetConditions; }
0105 const PxMeasurementConditionSet& pixelDetConditions() const override { return thePxDetConditions; }
0106 const Phase2OTMeasurementConditionSet& phase2DetConditions() const override { return thePhase2DetConditions; }
0107
0108 protected:
0109 StMeasurementConditionSet theStDetConditions;
0110 PxMeasurementConditionSet thePxDetConditions;
0111 Phase2OTMeasurementConditionSet thePhase2DetConditions;
0112
0113 DetContainer theDetMap;
0114
0115 std::vector<TkPixelMeasurementDet> thePixelDets;
0116 std::vector<TkStripMeasurementDet> theStripDets;
0117 std::vector<TkPhase2OTMeasurementDet> thePhase2Dets;
0118 std::vector<TkGluedMeasurementDet> theGluedDets;
0119 std::vector<TkStackMeasurementDet> theStackDets;
0120
0121 const SiPixelFedCabling* thePixelCabling;
0122
0123 void initialize(const TrackerTopology* trackerTopology);
0124 void initStMeasurementConditionSet(std::vector<TkStripMeasurementDet>& stripDets);
0125 void initPxMeasurementConditionSet(std::vector<TkPixelMeasurementDet>& pixelDets);
0126 void initPhase2OTMeasurementConditionSet(std::vector<TkPhase2OTMeasurementDet>& phase2Dets);
0127
0128 void addStripDet(const GeomDet* gd);
0129 void addPixelDet(const GeomDet* gd);
0130 void addPhase2Det(const GeomDet* gd);
0131
0132 void addGluedDet(const GluedGeomDet* gd);
0133 void addStackDet(const StackGeomDet* gd);
0134
0135 void initGluedDet(TkGluedMeasurementDet& det, const TrackerTopology* trackerTopology);
0136 void initStackDet(TkStackMeasurementDet& det);
0137
0138 void addDets(const TrackingGeometry::DetContainer& dets, bool subIsPixel, bool subIsOT);
0139
0140 bool checkDets();
0141
0142 void initializeStripStatus(const BadStripCutsDet& badStripCuts,
0143 const SiStripQuality* stripQuality,
0144 int qualityFlags,
0145 int qualityDebugFlags);
0146
0147 void initializePixelStatus(const SiPixelQuality* stripQuality,
0148 const SiPixelFedCabling* pixelCabling,
0149 int qualityFlags,
0150 int qualityDebugFlags);
0151 };
0152
0153 #endif