1 #ifndef Geometry_CommonTopologies_SimplePixelTopology_h 2 #define Geometry_CommonTopologies_SimplePixelTopology_h 14 template <
typename TrackerTraits>
17 float ladderZ[TrackerTraits::numberOfLaddersInBarrel];
18 float ladderX[TrackerTraits::numberOfLaddersInBarrel];
19 float ladderY[TrackerTraits::numberOfLaddersInBarrel];
20 float ladderR[TrackerTraits::numberOfLaddersInBarrel];
21 float ladderMinZ[TrackerTraits::numberOfLaddersInBarrel];
22 float ladderMaxZ[TrackerTraits::numberOfLaddersInBarrel];
35 -> std::array<std::invoke_result_t<Function, std::size_t>,
sizeof...(Indices)> {
39 template <
int N,
class Function>
44 template <
typename TrackerTraits>
62 template <
typename TrackerTraits>
65 template <
typename TrackerTraits>
66 constexpr uint8_t
findLayer(uint32_t detId, uint8_t sl = 0) {
73 template <
typename TrackerTraits>
75 detId *= maxModuleStride<TrackerTraits>;
82 template <
typename TrackerTraits>
85 template <
typename TrackerTraits>
89 constexpr std::array<uint8_t, layerIndexSize<TrackerTraits>>
90 layer = map_to_array<layerIndexSize<TrackerTraits>>(findLayerFromCompact<TrackerTraits>);
92 template <
typename TrackerTraits>
94 return layer<TrackerTraits>[detId / maxModuleStride<TrackerTraits>];
97 template <
typename TrackerTraits>
101 auto j =
i / maxModuleStride<TrackerTraits>;
104 res &= (i < TrackerTraits::layerStart[layer<TrackerTraits>[
j] + 1]);
109 template <
typename TrackerTraits>
113 constexpr
inline uint32_t
118 constexpr
inline uint16_t
divu52(uint16_t
n) {
120 uint16_t
q = (
n >> 1) + (
n >> 4);
121 q =
q + (
q >> 4) + (
q >> 5);
123 uint16_t r =
n -
q * 13;
124 return q + ((r + 3) >> 4);
155 2, 3, 2, 4, 2, 7, 5, 6, 8, 9,
181 -20., 0., -30., -22., 10., -30., -70., -70., -22., 15., -30, -70., -70., -20., -22., 0, -30., -70., -70.};
183 20., 30., 0., 22., 30., -10., 70., 70., 22., 30., -15., 70., 70., 20., 22., 30., 0., 70., 70.};
185 20., 9., 9., 20., 7., 7., 5., 5., 20., 6., 6., 5., 5., 20., 20., 9., 9., 9., 9.};
208 constexpr
int nPairs = 23 + 6 + 14 + 8 + 4;
217 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
218 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23,
220 0, 2, 0, 5, 0, 17, 0, 6, 0, 18,
221 1, 3, 1, 5, 1, 17, 1, 6, 1, 18,
223 11, 12, 12, 13, 13, 14, 14, 15,
224 23, 24, 24, 25, 25, 26, 26, 27,
226 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11, 10, 12,
227 16, 18, 17, 19, 18, 20, 19, 21, 20, 22, 21, 23, 22, 24,
260 phi0p05,
phi0p05,
phi0p05,
phi0p06,
phi0p07,
phi0p07,
phi0p06,
phi0p07,
phi0p07,
phi0p05,
phi0p05,
261 phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
262 phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
263 phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
264 phi0p07,
phi0p07,
phi0p07,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05};
267 -16.0, 4.0, -22.0, -17.0, 6.0, -22.0, -18.0, 11.0, -22.0, 23.0, 30.0, 39.0, 50.0, 65.0,
268 82.0, 109.0, -28.0, -35.0, -44.0, -55.0, -70.0, -87.0, -113.0, -16., 7.0, -22.0, 11.0, -22.0,
269 -17.0, 9.0, -22.0, 13.0, -22.0, 137.0, 173.0, 199.0, 229.0, -142.0, -177.0, -203.0, -233.0, 23.0,
270 30.0, 39.0, 50.0, 65.0, 82.0, 109.0, -28.0, -35.0, -44.0, -55.0, -70.0, -87.0, -113.0};
274 17.0, 22.0, -4.0, 17.0, 22.0, -6.0, 18.0, 22.0, -11.0, 28.0, 35.0, 44.0, 55.0, 70.0,
275 87.0, 113.0, -23.0, -30.0, -39.0, -50.0, -65.0, -82.0, -109.0, 17.0, 22.0, -7.0, 22.0, -10.0,
276 17.0, 22.0, -9.0, 22.0, -13.0, 142.0, 177.0, 203.0, 233.0, -137.0, -173.0, -199.0, -229.0, 28.0,
277 35.0, 44.0, 55.0, 70.0, 87.0, 113.0, -23.0, -30.0, -39.0, -50.0, -65.0, -82.0, -109.0};
279 HOST_DEVICE_CONSTANT float maxr[
nPairs] = {5.0, 5.0, 5.0, 7.0, 8.0, 8.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 5.0,
280 6.0, 5.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
281 5.0, 8.0, 8.0, 8.0, 8.0, 6.0, 5.0, 5.0, 5.0, 6.0, 5.0, 5.0, 5.0, 9.0,
282 9.0, 9.0, 8.0, 8.0, 8.0, 11.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 11.0};
334 static constexpr
float dzdrFact = 8 * 0.0285 / 0.015;
335 static constexpr
float z0Cut = 7.5f;
373 static constexpr
inline bool isBigPixX(uint16_t
px) {
return false; }
374 static constexpr
inline bool isBigPixY(uint16_t
py) {
return false; }
376 static constexpr
inline uint16_t
localX(uint16_t
px) {
return px; }
377 static constexpr
inline uint16_t
localY(uint16_t
py) {
return py; }
426 static constexpr
float dzdrFact = 8 * 0.0285 / 0.015;
427 static constexpr
float z0Cut = 12.f;
481 static constexpr
inline uint16_t
toRocY(uint16_t
py) {
483 return py - 52 *
roc;
486 static constexpr
inline bool isBigPixX(uint16_t
px) {
return (
px == 79) | (
px == 80); }
492 static constexpr
inline uint16_t
localX(uint16_t
px) {
501 static constexpr
inline uint16_t
localY(uint16_t
py) {
504 auto yInRoc =
py - 52 *
roc;
511 template <
typename T>
514 template <
typename T>
522 #endif // Geometry_CommonTopologies_SimplePixelTopology_h static constexpr float yerr_barrel_l1_def
static constexpr bool isEdgeY(uint16_t py)
static constexpr float const * minz
constexpr float radius_odd_ladder
static constexpr int minYsizeB1
static constexpr float bigPixYCorrection
static constexpr uint32_t maxNumberOfQuadruplets
float ladderY[TrackerTraits::numberOfLaddersInBarrel]
static constexpr uint32_t maxNumOfActiveDoublets
static constexpr uint32_t maxPixInModule
static constexpr float yerr_endcap_def
static constexpr uint32_t maxNumberOfTuples
static constexpr uint32_t maxHitsForContainers
static constexpr uint16_t firstEndcapPos
static constexpr uint32_t maxCellsPerHit
constexpr int16_t phi0p05
static constexpr uint16_t last_bpix1_detIndex
constexpr uint16_t findMaxModuleStride()
static constexpr bool isBigPixX(uint16_t px)
static constexpr float doubletHardPt
static constexpr float xerr_barrel_ln_def
static constexpr float xerr_barrel_l1_def
static constexpr uint16_t last_bpix2_detIndex
constexpr int16_t phi0p09
static constexpr uint16_t numberOfModulesInLadder
constexpr auto maxNumberOfLadders
static constexpr uint16_t clusterBits
constexpr int16_t phi0p06
constexpr float module_length_bpx0
static constexpr uint16_t numColsInModule
constexpr int16_t phicuts[nPairs]
static constexpr float yerr_barrel_l1_def
float ladderMinZ[TrackerTraits::numberOfLaddersInBarrel]
static constexpr float xerr_endcap_def
constexpr uint32_t numberOfLayers
static constexpr uint32_t maxSizeCluster
static constexpr uint32_t maxSizeCluster
constexpr uint32_t layerStart[numberOfLayers+1]
static constexpr float dzdrFact
constexpr uint32_t maxLayers
static constexpr float const * maxr
static constexpr uint32_t avgTracksPerHit
typename std::enable_if< std::is_base_of< Phase2, T >::value >::type isPhase2Topology
static constexpr uint32_t maxCellTracks
static constexpr bool isBigPixX(uint16_t px)
constexpr int16_t phi0p07
static constexpr uint16_t numRowsInModule
static constexpr uint32_t maxNumberOfTuples
static constexpr uint32_t maxCellNeighbors
constexpr uint16_t divu52(uint16_t n)
static constexpr float moduleLength
constexpr float module_length_bpx4
constexpr float minz[nPairs]
static constexpr uint32_t maxDepth
static constexpr uint16_t firstEndcapNeg
float ladderX[TrackerTraits::numberOfLaddersInBarrel]
static constexpr int16_t const * phicuts
static constexpr uint16_t last_bpix2_detIndex
static constexpr float xerr_barrel_l1_def
static constexpr uint16_t numRowsInRoc
static constexpr uint16_t numColsInRoc
static constexpr int nPairsForQuadruplets
static constexpr uint16_t numberOfModules
constexpr uint16_t numberOfModules
static constexpr float yerr_endcap_def
static constexpr uint16_t lastColInModule
static constexpr float doubletHardPt
static constexpr int16_t xOffset
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
static constexpr uint16_t localX(uint16_t px)
static constexpr uint16_t clusterBinning
static constexpr float xerr_barrel_ln_def
static constexpr uint16_t clusterBinning
constexpr uint32_t first_ladder_bpx4
static constexpr uint32_t const * layerStart
static constexpr float z0Cut
constexpr uint16_t last_barrel_layer
static constexpr bool isBigPixY(uint16_t py)
float ladderZ[TrackerTraits::numberOfLaddersInBarrel]
static constexpr int nPairs
constexpr uint8_t getLayer(uint32_t detId)
constexpr auto map_to_array(Function f) -> std::array< std::invoke_result_t< Function, std::size_t >, N >
constexpr float module_tolerance_bpx0
static constexpr uint16_t firstEndcapPos
static constexpr uint32_t maxNumOfActiveDoublets
float ladderMaxZ[TrackerTraits::numberOfLaddersInBarrel]
constexpr auto map_to_array_helper(Function f, std::index_sequence< Indices... >) -> std::array< std::invoke_result_t< Function, std::size_t >, sizeof...(Indices)>
float ladderR[TrackerTraits::numberOfLaddersInBarrel]
static constexpr int maxDYsize12
static constexpr int nPairsMinimal
static constexpr uint32_t maxHitsOnTrack
static constexpr uint32_t maxHitsOnTrack
constexpr uint32_t max_ladder_bpx4
static constexpr uint32_t maxNumberOfHits
constexpr float radius_even_ladder
static constexpr uint16_t toRocY(uint16_t py)
static constexpr uint16_t localX(uint16_t px)
static constexpr uint32_t maxNumberOfQuadruplets
typename std::enable_if< std::is_base_of< Phase1, T >::value >::type isPhase1Topology
static constexpr uint32_t maxHitsOnTrackForFullFit
static constexpr float const * minz
constexpr int16_t phicuts[nPairs]
static constexpr uint32_t avgHitsPerTrack
constexpr float maxz[nPairs]
constexpr bool validateLayerIndex()
static constexpr int16_t xOffset
static constexpr uint32_t maxNumberOfDoublets
static constexpr uint16_t lastRowInRoc
static constexpr bool isBigPixY(uint16_t py)
static constexpr uint32_t avgHitsPerTrack
static constexpr uint16_t firstEndcapNeg
static constexpr float endcapCorrection
constexpr uint32_t max_ladder_bpx0
static constexpr uint32_t maxCellNeighbors
static constexpr uint32_t maxHitsOnTrackForFullFit
static constexpr char const * nameModifier
static constexpr int16_t const * phicuts
static constexpr float dzdrFact
static constexpr int nPairsForTriplets
static constexpr uint16_t numberOfModulesInBarrel
static constexpr float yerr_barrel_ln_def
static constexpr float bigPixYCorrection
static constexpr uint32_t maxCellTracks
static constexpr float endcapCorrection
static constexpr int minYsizeB1
static constexpr uint32_t maxCellsPerHit
static constexpr char const * nameModifier
static constexpr uint32_t maxHitsForContainers
static constexpr int maxDYPred
static constexpr uint32_t const * layerStart
static constexpr uint16_t numberOfModulesInBarrel
constexpr float minz[nPairs]
constexpr uint8_t layerPairs[2 *nPairs]
constexpr uint8_t layerPairs[2 *nPairs]
static constexpr uint16_t clusterBits
static constexpr bool isEdgeX(uint16_t px)
static constexpr float moduleLength
constexpr uint8_t findLayerFromCompact(uint32_t detId)
static constexpr int nPairs
constexpr float maxr[nPairs]
static constexpr uint16_t last_barrel_detIndex
constexpr float barrel_z_length
static constexpr uint32_t numberOfLayers
constexpr uint32_t layerStart(uint32_t i)
static constexpr int minYsizeB2
static constexpr int maxDYPred
static constexpr uint16_t toRocX(uint16_t px)
static constexpr uint32_t maxNumberOfDoublets
static constexpr uint32_t maxPixInModule
static constexpr uint32_t layerStart[numberOfLayers+1]
static constexpr uint32_t numberOfLayers
static constexpr float bigPixXCorrection
static constexpr int maxDYsize12
static constexpr uint32_t getDoubletsFromHistoMaxBlockSize
static constexpr int minYsizeB2
constexpr uint16_t maxModuleStride
static unsigned int const shift
constexpr uint32_t numberOfLayers
static constexpr uint16_t numberOfLaddersInBarrel
static constexpr uint32_t getDoubletsFromHistoMaxBlockSize
static constexpr float const * maxz
constexpr uint16_t numberOfModules
static constexpr uint32_t maxNumberOfHits
static constexpr float xerr_endcap_def
static constexpr int maxDYsize
constexpr float module_tolerance_bpx4
constexpr uint32_t layerIndexSize
static constexpr uint16_t localY(uint16_t py)
static constexpr float yerr_barrel_ln_def
static constexpr float const * maxz
constexpr float maxz[nPairs]
static constexpr uint16_t last_barrel_detIndex
static constexpr int maxDYsize
constexpr uint8_t findLayer(uint32_t detId, uint8_t sl=0)
static constexpr uint16_t numberOfModulesInLadder
static constexpr uint32_t getDoubletsFromHistoMinBlocksPerMP
static constexpr int nPairsFarForwards
constexpr float forward_z_begin
static constexpr uint16_t numberOfLaddersInBarrel
constexpr uint32_t first_ladder_bpx0
static constexpr uint16_t lastColInRoc
static constexpr uint32_t getDoubletsFromHistoMinBlocksPerMP
static constexpr uint8_t const * layerPairs
static constexpr uint32_t maxDepth
static constexpr float const * maxr
static constexpr uint16_t lastRowInModule
#define HOST_DEVICE_CONSTANT
static constexpr float bigPixXCorrection
static constexpr uint16_t last_bpix1_detIndex
static constexpr uint8_t const * layerPairs
static constexpr uint16_t numberOfModules
constexpr float maxr[nPairs]
static constexpr uint16_t localY(uint16_t py)
static constexpr float z0Cut
static constexpr uint32_t avgTracksPerHit