11 #include <unordered_map> 31 trackerGeometry_(&trackerGeometry),
32 trackerTopology_(&trackerTopology),
33 cablingMap_(&cablingMap),
34 stubAlgorithm_(&stubAlgorithm),
35 pSetSA_(&pSetStubAlgorithm),
36 pSetGC_(&pSetGeometryConfiguration),
37 pSetIdTTStubAlgorithm_(pSetIdTTStubAlgorithm),
38 pSetIdGeometryConfiguration_(pSetIdGeometryConfiguration),
40 fromDD4hep_(iConfig.getParameter<
bool>(
"fromDD4hep")),
42 pSetSG_(iConfig.getParameter<
ParameterSet>(
"UnSupportedGeometry")),
43 sgXMLLabel_(pSetSG_.getParameter<
string>(
"XMLLabel")),
44 sgXMLPath_(pSetSG_.getParameter<
string>(
"XMLPath")),
45 sgXMLFile_(pSetSG_.getParameter<
string>(
"XMLFile")),
46 sgXMLVersions_(pSetSG_.getParameter<
vector<
string>>(
"XMLVersions")),
48 pSetPH_(iConfig.getParameter<
ParameterSet>(
"ProcessHistory")),
49 phGeometryConfiguration_(pSetPH_.getParameter<
string>(
"GeometryConfiguration")),
50 phTTStubAlgorithm_(pSetPH_.getParameter<
string>(
"TTStubAlgorithm")),
52 pSetTF_(iConfig.getParameter<
ParameterSet>(
"TrackFinding")),
53 beamWindowZ_(pSetTF_.getParameter<double>(
"BeamWindowZ")),
54 matchedLayers_(pSetTF_.getParameter<
int>(
"MatchedLayers")),
55 matchedLayersPS_(pSetTF_.getParameter<
int>(
"MatchedLayersPS")),
56 unMatchedStubs_(pSetTF_.getParameter<
int>(
"UnMatchedStubs")),
57 unMatchedStubsPS_(pSetTF_.getParameter<
int>(
"UnMatchedStubsPS")),
58 scattering_(pSetTF_.getParameter<double>(
"Scattering")),
61 minPt_(pSetTMTT_.getParameter<double>(
"MinPt")),
62 maxEta_(pSetTMTT_.getParameter<double>(
"MaxEta")),
63 chosenRofPhi_(pSetTMTT_.getParameter<double>(
"ChosenRofPhi")),
64 numLayers_(pSetTMTT_.getParameter<
int>(
"NumLayers")),
65 tmttWidthR_(pSetTMTT_.getParameter<
int>(
"WidthR")),
66 tmttWidthPhi_(pSetTMTT_.getParameter<
int>(
"WidthPhi")),
67 tmttWidthZ_(pSetTMTT_.getParameter<
int>(
"WidthZ")),
69 pSetHybrid_(iConfig.getParameter<
ParameterSet>(
"Hybrid")),
70 hybridMinPtStub_(pSetHybrid_.getParameter<double>(
"MinPtStub")),
71 hybridMinPtCand_(pSetHybrid_.getParameter<double>(
"MinPtCand")),
72 hybridMaxEta_(pSetHybrid_.getParameter<double>(
"MaxEta")),
73 hybridChosenRofPhi_(pSetHybrid_.getParameter<double>(
"ChosenRofPhi")),
74 hybridNumLayers_(pSetHybrid_.getParameter<
int>(
"NumLayers")),
75 hybridNumRingsPS_(pSetHybrid_.getParameter<
vector<
int>>(
"NumRingsPS")),
76 hybridWidthsR_(pSetHybrid_.getParameter<
vector<
int>>(
"WidthsR")),
77 hybridWidthsZ_(pSetHybrid_.getParameter<
vector<
int>>(
"WidthsZ")),
78 hybridWidthsPhi_(pSetHybrid_.getParameter<
vector<
int>>(
"WidthsPhi")),
79 hybridWidthsAlpha_(pSetHybrid_.getParameter<
vector<
int>>(
"WidthsAlpha")),
80 hybridWidthsBend_(pSetHybrid_.getParameter<
vector<
int>>(
"WidthsBend")),
81 hybridRangesR_(pSetHybrid_.getParameter<
vector<double>>(
"RangesR")),
82 hybridRangesZ_(pSetHybrid_.getParameter<
vector<double>>(
"RangesZ")),
83 hybridRangesAlpha_(pSetHybrid_.getParameter<
vector<double>>(
"RangesAlpha")),
84 hybridLayerRs_(pSetHybrid_.getParameter<
vector<double>>(
"LayerRs")),
85 hybridDiskZs_(pSetHybrid_.getParameter<
vector<double>>(
"DiskZs")),
87 tbInnerRadius_(pSetHybrid_.getParameter<double>(
"InnerRadius")),
88 tbWidthsR_(pSetHybrid_.getParameter<
vector<
int>>(
"WidthsRTB")),
90 pSetTP_(iConfig.getParameter<
ParameterSet>(
"TrackingParticle")),
91 tpMinPt_(pSetTP_.getParameter<double>(
"MinPt")),
92 tpMaxEta_(pSetTP_.getParameter<double>(
"MaxEta")),
93 tpMaxVertR_(pSetTP_.getParameter<double>(
"MaxVertR")),
94 tpMaxVertZ_(pSetTP_.getParameter<double>(
"MaxVertZ")),
95 tpMaxD0_(pSetTP_.getParameter<double>(
"MaxD0")),
96 tpMinLayers_(pSetTP_.getParameter<
int>(
"MinLayers")),
97 tpMinLayersPS_(pSetTP_.getParameter<
int>(
"MinLayersPS")),
98 tpMaxBadStubs2S_(pSetTP_.getParameter<
int>(
"MaxBadStubs2S")),
99 tpMaxBadStubsPS_(pSetTP_.getParameter<
int>(
"MaxBadStubsPS")),
101 pSetFW_(iConfig.getParameter<
ParameterSet>(
"Firmware")),
102 widthDSPa_(pSetFW_.getParameter<
int>(
"WidthDSPa")),
103 widthDSPb_(pSetFW_.getParameter<
int>(
"WidthDSPb")),
104 widthDSPc_(pSetFW_.getParameter<
int>(
"WidthDSPc")),
105 widthAddrBRAM36_(pSetFW_.getParameter<
int>(
"WidthAddrBRAM36")),
106 widthAddrBRAM18_(pSetFW_.getParameter<
int>(
"WidthAddrBRAM18")),
107 numFramesInfra_(pSetFW_.getParameter<
int>(
"NumFramesInfra")),
108 freqLHC_(pSetFW_.getParameter<double>(
"FreqLHC")),
109 freqBE_(pSetFW_.getParameter<double>(
"FreqBE")),
110 tmpFE_(pSetFW_.getParameter<
int>(
"TMP_FE")),
111 tmpTFP_(pSetFW_.getParameter<
int>(
"TMP_TFP")),
112 speedOfLight_(pSetFW_.getParameter<double>(
"SpeedOfLight")),
113 bField_(pSetFW_.getParameter<double>(
"BField")),
114 bFieldError_(pSetFW_.getParameter<double>(
"BFieldError")),
115 outerRadius_(pSetFW_.getParameter<double>(
"OuterRadius")),
116 innerRadius_(pSetFW_.getParameter<double>(
"InnerRadius")),
117 halfLength_(pSetFW_.getParameter<double>(
"HalfLength")),
118 tiltApproxSlope_(pSetFW_.getParameter<double>(
"TiltApproxSlope")),
119 tiltApproxIntercept_(pSetFW_.getParameter<double>(
"TiltApproxIntercept")),
120 tiltUncertaintyR_(pSetFW_.getParameter<double>(
"TiltUncertaintyR")),
121 mindPhi_(pSetFW_.getParameter<double>(
"MindPhi")),
122 maxdPhi_(pSetFW_.getParameter<double>(
"MaxdPhi")),
123 mindZ_(pSetFW_.getParameter<double>(
"MindZ")),
124 maxdZ_(pSetFW_.getParameter<double>(
"MaxdZ")),
125 pitch2S_(pSetFW_.getParameter<double>(
"Pitch2S")),
126 pitchPS_(pSetFW_.getParameter<double>(
"PitchPS")),
127 length2S_(pSetFW_.getParameter<double>(
"Length2S")),
128 lengthPS_(pSetFW_.getParameter<double>(
"LengthPS")),
129 tiltedLayerLimitsZ_(pSetFW_.getParameter<
vector<double>>(
"TiltedLayerLimitsZ")),
130 psDiskLimitsR_(pSetFW_.getParameter<
vector<double>>(
"PSDiskLimitsR")),
132 pSetFE_(iConfig.getParameter<
ParameterSet>(
"FrontEnd")),
133 widthBend_(pSetFE_.getParameter<
int>(
"WidthBend")),
134 widthCol_(pSetFE_.getParameter<
int>(
"WidthCol")),
135 widthRow_(pSetFE_.getParameter<
int>(
"WidthRow")),
136 baseBend_(pSetFE_.getParameter<double>(
"BaseBend")),
137 baseCol_(pSetFE_.getParameter<double>(
"BaseCol")),
138 baseRow_(pSetFE_.getParameter<double>(
"BaseRow")),
139 baseWindowSize_(pSetFE_.getParameter<double>(
"BaseWindowSize")),
140 bendCut_(pSetFE_.getParameter<double>(
"BendCut")),
143 numRegions_(pSetDTC_.getParameter<
int>(
"NumRegions")),
144 numOverlappingRegions_(pSetDTC_.getParameter<
int>(
"NumOverlappingRegions")),
145 numATCASlots_(pSetDTC_.getParameter<
int>(
"NumATCASlots")),
146 numDTCsPerRegion_(pSetDTC_.getParameter<
int>(
"NumDTCsPerRegion")),
147 numModulesPerDTC_(pSetDTC_.getParameter<
int>(
"NumModulesPerDTC")),
148 dtcNumRoutingBlocks_(pSetDTC_.getParameter<
int>(
"NumRoutingBlocks")),
149 dtcDepthMemory_(pSetDTC_.getParameter<
int>(
"DepthMemory")),
150 dtcWidthRowLUT_(pSetDTC_.getParameter<
int>(
"WidthRowLUT")),
151 dtcWidthInv2R_(pSetDTC_.getParameter<
int>(
"WidthInv2R")),
152 offsetDetIdDSV_(pSetDTC_.getParameter<
int>(
"OffsetDetIdDSV")),
153 offsetDetIdTP_(pSetDTC_.getParameter<
int>(
"OffsetDetIdTP")),
154 offsetLayerDisks_(pSetDTC_.getParameter<
int>(
"OffsetLayerDisks")),
155 offsetLayerId_(pSetDTC_.getParameter<
int>(
"OffsetLayerId")),
156 numBarrelLayer_(pSetDTC_.getParameter<
int>(
"NumBarrelLayer")),
157 slotLimitPS_(pSetDTC_.getParameter<
int>(
"SlotLimitPS")),
158 slotLimit10gbps_(pSetDTC_.getParameter<
int>(
"SlotLimit10gbps")),
161 tfpWidthPhi0_(pSetTFP_.getParameter<
int>(
"WidthPhi0")),
162 tfpWidthInv2R_(pSetTFP_.getParameter<
int>(
"WidthInv2R")),
163 tfpWidthCot_(pSetTFP_.getParameter<
int>(
"WidthCot")),
164 tfpWidthZ0_(pSetTFP_.getParameter<
int>(
"WidthZ0")),
165 tfpNumChannel_(pSetTFP_.getParameter<
int>(
"NumChannel")),
167 pSetGP_(iConfig.getParameter<
ParameterSet>(
"GeometricProcessor")),
168 numSectorsPhi_(pSetGP_.getParameter<
int>(
"NumSectorsPhi")),
169 chosenRofZ_(pSetGP_.getParameter<double>(
"ChosenRofZ")),
170 neededRangeChiZ_(pSetGP_.getParameter<double>(
"RangeChiZ")),
171 gpDepthMemory_(pSetGP_.getParameter<
int>(
"DepthMemory")),
172 boundariesEta_(pSetGP_.getParameter<
vector<double>>(
"BoundariesEta")),
174 pSetHT_(iConfig.getParameter<
ParameterSet>(
"HoughTransform")),
175 htNumBinsInv2R_(pSetHT_.getParameter<
int>(
"NumBinsInv2R")),
176 htNumBinsPhiT_(pSetHT_.getParameter<
int>(
"NumBinsPhiT")),
177 htMinLayers_(pSetHT_.getParameter<
int>(
"MinLayers")),
178 htDepthMemory_(pSetHT_.getParameter<
int>(
"DepthMemory")),
180 pSetMHT_(iConfig.getParameter<
ParameterSet>(
"MiniHoughTransform")),
181 mhtNumBinsInv2R_(pSetMHT_.getParameter<
int>(
"NumBinsInv2R")),
182 mhtNumBinsPhiT_(pSetMHT_.getParameter<
int>(
"NumBinsPhiT")),
183 mhtNumDLBs_(pSetMHT_.getParameter<
int>(
"NumDLBs")),
184 mhtNumDLBNodes_(pSetMHT_.getParameter<
int>(
"NumDLBNodes")),
185 mhtNumDLBChannel_(pSetMHT_.getParameter<
int>(
"NumDLBChannel")),
186 mhtMinLayers_(pSetMHT_.getParameter<
int>(
"MinLayers")),
188 pSetZHT_(iConfig.getParameter<
ParameterSet>(
"ZHoughTransform")),
189 zhtNumBinsZT_(pSetZHT_.getParameter<
int>(
"NumBinsZT")),
190 zhtNumBinsCot_(pSetZHT_.getParameter<
int>(
"NumBinsCot")),
191 zhtNumStages_(pSetZHT_.getParameter<
int>(
"NumStages")),
192 zhtMinLayers_(pSetZHT_.getParameter<
int>(
"MinLayers")),
193 zhtMaxTracks_(pSetZHT_.getParameter<
int>(
"MaxTracks")),
194 zhtMaxStubsPerLayer_(pSetZHT_.getParameter<
int>(
"MaxStubsPerLayer")),
196 pSetKFin_(iConfig.getParameter<
ParameterSet>(
"KalmanFilterIn")),
197 kfinShiftRangePhi_(pSetKFin_.getParameter<
int>(
"ShiftRangePhi")),
198 kfinShiftRangeZ_(pSetKFin_.getParameter<
int>(
"ShiftRangeZ")),
200 pSetKF_(iConfig.getParameter<
ParameterSet>(
"KalmanFilter")),
201 kfNumWorker_(pSetKF_.getParameter<
int>(
"NumWorker")),
202 kfMinLayers_(pSetKF_.getParameter<
int>(
"MinLayers")),
203 kfMaxLayers_(pSetKF_.getParameter<
int>(
"MaxLayers")),
204 kfRangeFactor_(pSetKF_.getParameter<double>(
"RangeFactor")),
205 kfShiftInitialC00_(pSetKF_.getParameter<
int>(
"ShiftInitialC00")),
206 kfShiftInitialC11_(pSetKF_.getParameter<
int>(
"ShiftInitialC11")),
207 kfShiftInitialC22_(pSetKF_.getParameter<
int>(
"ShiftInitialC22")),
208 kfShiftInitialC33_(pSetKF_.getParameter<
int>(
"ShiftInitialC33")),
210 pSetKFOut_(iConfig.getParameter<
ParameterSet>(
"KalmanFilterOut")),
211 kfoutchi2rphiConv_(pSetKFOut_.getParameter<
int>(
"Chi2rphiConv")),
212 kfoutchi2rzConv_(pSetKFOut_.getParameter<
int>(
"Chi2rzConv")),
213 weightBinFraction_(pSetKFOut_.getParameter<
int>(
"WeightBinFraction")),
214 dzTruncation_(pSetKFOut_.getParameter<
int>(
"DzTruncation")),
215 dphiTruncation_(pSetKFOut_.getParameter<
int>(
"DphiTruncation")),
217 pSetDR_(iConfig.getParameter<
ParameterSet>(
"DuplicateRemoval")),
218 drDepthMemory_(pSetDR_.getParameter<
int>(
"DepthMemory")) {
255 vector<pair<string, ParameterSet>> pSets;
256 pSets.reserve(
ph.size());
265 exception.addContext(
"tt::Setup::checkHistory");
268 auto consistent = [&pSetId](
const pair<string, ParameterSet>&
p) {
return p.second.id() == pSetId; };
269 if (!all_of(pSets.begin(), pSets.end(), consistent)) {
272 exception.addContext(
"tt::Setup::checkHistory");
274 exception <<
"Current Configuration:" << endl << pSetProcess.
dump() << endl;
275 for (
const pair<string, ParameterSet>&
p : pSets)
277 exception <<
"Process " <<
p.first <<
" Configuration:" << endl <<
dumpDiff(
p.second, pSetProcess) << endl;
284 stringstream ssHistory, ssProcess,
ss;
285 ssHistory << pSetHistory.
dump();
286 ssProcess << pSetProcess.
dump();
287 string lineHistory, lineProcess;
288 for (; getline(ssHistory, lineHistory) && getline(ssProcess, lineProcess);)
289 ss << (lineHistory != lineProcess ?
"\033[1;31m" :
"") << lineHistory <<
"\033[0m" << endl;
317 const int dtcRegion = tfpRegion - dtcChannel >= 0 ? tfpRegion - dtcChannel : tfpRegion - dtcChannel +
numRegions_;
370 exception.addContext(
"tt::Setup::sensorModule");
379 return encodingsBend.at(windowSize);
388 <<
"Magnetic Field from EventSetup (" << bFieldES <<
") differs more then " <<
bFieldError_ 389 <<
" from supported value (" <<
bField_ <<
"). ";
401 const auto end = geomXMLFile.find(
sgXMLFile_);
402 if (begin != string::npos && end != string::npos)
403 version = geomXMLFile.substr(begin, end - begin - 1);
408 exception.addContext(
"tt::Setup::checkGeometry");
423 const auto& pSetsTiltedLayer =
pSetSA_->
getParameter<vector<ParameterSet>>(
"TiltedBarrelCutSet");
426 for (
const auto& pSet : pSetsTiltedLayer)
429 for (
const auto& pSet : pSetsEncapDisks)
433 for (
const auto& windows : windowss)
434 for (
const auto&
window : windows)
441 set<double> encoding;
442 for (
int bend = 0; bend <
window + 1; bend++)
444 encodings.emplace_back(encoding.begin(), encoding.end());
454 enum SubDetId { pixelBarrel = 1, pixelDisks = 2 };
458 if (
detId.subdetId() == pixelBarrel ||
detId.subdetId() == pixelDisks)
485 exception.addContext(
"tt::Setup::Setup");
505 ptMin,
ptMax, -
etaMax,
etaMax,
tip,
lip,
minHit,
signalOnly,
intimeOnly,
chargedOnly,
stableOnly);
507 TrackingParticleSelector(
ptMin,
ptMax, -
etaMax,
etaMax,
tip,
lip,
minHit,
false,
false,
false,
stableOnly);
542 for (
int layer =
numLayers_ - 1; layer >= 0; layer--) {
543 const int i =
ints[layer];
552 for (
int layer =
numLayers_ - 1; layer >= 0; layer--) {
553 const int i =
ints[layer];
563 for (
int layer = 0; layer <
numLayers_; layer++) {
565 ints[layer] =
i + (hitPattern[layer] ? 1 : 0);
574 for (
int layer = 0; layer <
numLayers_; layer++)
584 const double sigma =
sm->pitchRow() / r;
586 const double extra =
sm->barrel() ? 0. :
sm->pitchCol() *
abs(inv2R);
588 const double dPhi = sigma + scat + extra + digi;
603 const double sigma =
sm->pitchCol() *
sm->tiltCorrection(cot);
605 const double dZ = sigma + digi;
610 <<
"is out of range " <<
mindZ_ <<
" to " <<
maxdZ_ <<
".";
621 const double sigma =
pow(
sm->pitchRow() / r, 2) / 12.;
623 const double extra =
sm->barrel() ? 0. :
pow(
sm->pitchCol() * inv2R, 2);
625 return sigma + scat + extra + digi;
632 const double sigma =
pow(
sm->pitchCol() *
sm->tiltCorrection(cot), 2) / 12.;
640 for (
const TTStubRef& ttStubRef : ttStubRefs)
641 hitPattern.insert(
layerId(ttStubRef));
648 const double cot = sinh(
tp.eta());
649 const double s =
sin(
tp.phi());
650 const double c =
cos(
tp.phi());
652 const double z0 =
v.z() - (
v.x() *
c +
v.y() *
s) * cot;
653 const double d0 =
v.x() *
s -
v.y() *
c;
697 const double rangePhi =
baseRegion_ + rangeInv2R * rangeR / 2.;
739 const double maxRangeInv2R =
max(rangeInv2R, hybridRangeInv2R);
774 if (
frame.first.isNull())
781 const bool side = gp.z() > 0.;
795 double z = bv.
val(baseZ, widthZ, 0,
true);
797 double r = bv.
val(baseR, widthR, 0,
barrel);
830 const MeasurementPoint& mp = ttStubRef->clusterRef(0)->findAverageLocalCoordinatesCentered();
838 exception.addContext(
"tt::Setup::checkDTCId");
849 exception.addContext(
"tt::Setup::checkTKLayoutId");
858 const bool oorRegion = tfpRegion >=
numRegions_ || tfpRegion < 0;
859 const bool oorChannel = tfpChannel >=
numDTCsPerTFP_ || tfpChannel < 0;
860 if (oorRegion || oorChannel) {
862 exception.addContext(
"tt::Setup::checkTFPIdentifier");
864 exception <<
"Requested Processing Region " 865 <<
"(" << tfpRegion <<
") " 866 <<
"is out of range 0 to " <<
numRegions_ - 1 <<
".";
869 <<
"(" << tfpChannel <<
") " Class for "official" algorithm to be used in TTStubBuilder.
const std::vector< SensorModule * > & dtcModules(int dtcId) const
constexpr int32_t ceil(float num)
void checkTKLayoutId(int tkLayoutId) const
double extract(double base, int size, bool twos=false)
std::string phTTStubAlgorithm_
T getParameter(std::string const &) const
double dZ(const TTStubRef &ttStubRef, double cot) const
edm::ParameterSetID pSetIdGeometryConfiguration_
void calculateConstants()
TrackingParticleSelector tpSelector_
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
Bit vector used by Track Trigger emulators. Mainly used to convert integers into arbitrary (within ma...
std::pair< TTStubRef, Frame > FrameStub
std::vector< double > boundariesEta_
static PFTauRenderPlugin instance
std::string phGeometryConfiguration_
const DetIdContainer & detIds() const override
Returm a vector of all GeomDet DetIds (including those of GeomDetUnits)
std::vector< double > hybridBasesZ_
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
double v1(const TTStubRef &ttStubRef, double cot) const
unsigned int tidWheel(const DetId &id) const
Sin< T >::type sin(const T &t)
bool exists(std::string const ¶meterName) const
checks if a parameter exists
ParameterSet const & getParameterSet(std::string const &) const
Global3DPoint GlobalPoint
const TrackerDetToDTCELinkCablingMap * cablingMap_
void checkDTCId(int dtcId) const
std::vector< double > hybridBasesAlpha_
std::vector< double > hybridRangesAlpha_
int tkLayoutId(int dtcId) const
TrackingParticleSelector tpSelectorLoose_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
SensorModule::Type type(const TTStubRef &ttStubRef) const
bool useForAlgEff(const TrackingParticle &tp) const
edm::ParameterSetID pSetIdTTStubAlgorithm_
std::vector< int > hybridWidthsR_
void produceSensorModules()
unsigned int layer(const DetId &id) const
const std::vector< double > & encodingBend(int windowSize, bool psModule) const
double dPhi(const TTStubRef &ttStubRef, double inv2R) const
double hybridChosenRofPhi_
std::vector< double > hybridRangesR_
std::string dumpDiff(const edm::ParameterSet &pSetHistory, const edm::ParameterSet &pSetProcess) const
std::vector< double > hybridDiskZs_
math::XYZPointD Point
point in the space
std::unordered_map< DetId, SensorModule * > detIdToSensorModule_
double v0(const TTStubRef &ttStubRef, double inv2R) const
std::vector< double > hybridLayerRs_
const TrackerGeometry * trackerGeometry_
std::vector< double > hybridBasesPhi_
std::vector< std::vector< double > > encodingsBendPS_
std::vector< double > numTiltedLayerRings_
GlobalPoint stubPos(const TTStubRef &ttStubRef) const
int slot(int dtcId) const
std::vector< std::vector< double > > windowSizeTiltedLayerRings_
std::vector< double > hybridRangesZ_
ModuleType getDetectorType(DetId) const
std::vector< std::string > sgXMLVersions_
void encodeBend(std::vector< std::vector< double >> &, bool) const
Cos< T >::type cos(const T &t)
std::vector< double > hybridBasesR_
int layerId(const TTStubRef &ttStubRef) const
std::vector< int > hybridNumsUnusedBits_
Abs< T >::type abs(const T &t)
bool reconstructable(const std::vector< TTStubRef > &ttStubRefs) const
double stubR(const TTBV &hw, const TTStubRef &ttStubRef) const
float degradeBend(bool psModule, int window, int bend) const
std::vector< std::vector< double > > encodingsBend2S_
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
std::vector< SensorModule > sensorModules_
static constexpr auto TOB
double hybridRangeR() const
std::vector< double > sectorCots_
bool gbps10(int dtcId) const
void checkTFPIdentifier(int tfpRegion, int tfpChannel) const
const edm::ParameterSet * pSetGC_
void consumeStubAlgorithm()
int numOverlappingRegions_
std::vector< std::vector< double > > windowSizeEndcapDisksRings_
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
std::vector< int > hybridWidthsAlpha_
void checkHistory(const edm::ProcessHistory &processHistory) const
static constexpr float d0
bool isLower(const DetId &id) const
bool psModule(int dtcId) const
std::vector< edm::ParameterSet > hybridDisk2SRsSet_
std::vector< int > hybridWidthsZ_
std::vector< double > windowSizeBarrelLayers_
int dtcNumModulesPerRoutingBlock_
void checkMagneticField()
ParameterSet const & getParameterSet(ParameterSetID const &id)
TTBV layerMap(const std::vector< int > &ints) const
int trackletLayerId(const TTStubRef &ttStubRef) const
ALPAKA_FN_ACC int sm(int ieta, int iphi)
const StubAlgorithmOfficial * stubAlgorithm_
std::string dump(unsigned int indent=0) const
std::pair< std::unordered_multimap< uint32_t, DTCELinkId >::const_iterator, std::unordered_multimap< uint32_t, DTCELinkId >::const_iterator > detIdToDTCELinkId(uint32_t const) const
Resolves one or more DTCELinkId of eLinks which are connected to the detector identified by the given...
bool side(int dtcId) const
double deltaPhi(double lhs, double rhs=0.)
Monte Carlo truth information used for tracking validation.
std::vector< std::vector< SensorModule * > > dtcModules_
int indexLayerId(const TTStubRef &ttStubRef) const
Log< level::Warning, false > LogWarning
int dtcId(int tklId) const
const MagneticField * magneticField_
SensorModule * sensorModule(const DetId &detId) const
SingleObjectSelector< TrackingParticleCollection, ::TrackingParticleSelector > TrackingParticleSelector
std::vector< int > hybridWidthsPhi_
const edm::ParameterSet * pSetSA_
bool barrel(const TTStubRef &ttStubRef) const
void configureTPSelector()
Power< A, B >::type pow(const A &a, const B &b)
ROOT::VecOps::RVec< int > ints
const TrackerTopology * trackerTopology_
bool configurationSupported_
std::vector< int > hybridWidthsBend_
std::vector< std::vector< double > > disk2SRs_