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>
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);
157 2, 3, 2, 4, 2, 7, 5, 6, 8, 9,
183 -20., 0., -30., -22., 10., -30., -70., -70., -22., 15., -30, -70., -70., -20., -22., 0, -30., -70., -70.};
185 20., 30., 0., 22., 30., -10., 70., 70., 22., 30., -15., 70., 70., 20., 22., 30., 0., 70., 70.};
187 20., 9., 9., 20., 7., 7., 5., 5., 20., 6., 6., 5., 5., 20., 20., 9., 9., 9., 9.};
210 constexpr
int nPairs = 23 + 6 + 14 + 8 + 4;
221 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
222 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23,
224 0, 2, 0, 5, 0, 17, 0, 6, 0, 18,
225 1, 3, 1, 5, 1, 17, 1, 6, 1, 18,
227 11, 12, 12, 13, 13, 14, 14, 15,
228 23, 24, 24, 25, 25, 26, 26, 27,
230 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11, 10, 12,
231 16, 18, 17, 19, 18, 20, 19, 21, 20, 22, 21, 23, 22, 24,
264 phi0p05,
phi0p05,
phi0p05,
phi0p06,
phi0p07,
phi0p07,
phi0p06,
phi0p07,
phi0p07,
phi0p05,
phi0p05,
265 phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
266 phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
267 phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
phi0p07,
268 phi0p07,
phi0p07,
phi0p07,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05,
phi0p05};
271 -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,
272 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,
273 -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,
274 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};
278 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,
279 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,
280 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,
281 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};
283 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,
284 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,
285 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,
286 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};
369 static constexpr
float dzdrFact = 8 * 0.0285 / 0.015;
406 static constexpr
inline bool isBigPixX(uint16_t
px) {
return false; }
407 static constexpr
inline bool isBigPixY(uint16_t
py) {
return false; }
409 static constexpr
inline uint16_t
localX(uint16_t
px) {
return px; }
410 static constexpr
inline uint16_t
localY(uint16_t
py) {
return py; }
461 static constexpr
float dzdrFact = 8 * 0.0285 / 0.015;
514 static constexpr
inline uint16_t
toRocY(uint16_t
py) {
516 return py - 52 *
roc;
519 static constexpr
inline bool isBigPixX(uint16_t
px) {
return (
px == 79) | (
px == 80); }
525 static constexpr
inline uint16_t
localX(uint16_t
px) {
534 static constexpr
inline uint16_t
localY(uint16_t
py) {
537 auto yInRoc =
py - 52 *
roc;
569 template <
typename T>
572 template <
typename T>
577 #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 maxNumClustersPerModules
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 int16_t phicuts[phase1PixelTopology::nPairs]
static constexpr uint32_t maxHitsInModule
constexpr uint16_t findMaxModuleStride()
static constexpr bool isBigPixX(uint16_t px)
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 maxNumberOfQuadruplets
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]
constexpr uint32_t maxNumClustersPerModules
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 uint32_t maxNumOfActiveDoublets
static constexpr int nPairsForQuadruplets
static constexpr uint16_t numberOfModules
constexpr uint16_t numberOfModules
static constexpr float yerr_endcap_def
static constexpr uint16_t lastColInModule
constexpr uint32_t maxNumClustersPerModules
static constexpr int16_t xOffset
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
static constexpr uint32_t maxPixInModule
static constexpr uint16_t localX(uint16_t px)
static constexpr uint16_t clusterBinning
constexpr uint32_t maxNumClustersPerModules
static constexpr float xerr_barrel_ln_def
static constexpr uint16_t clusterBinning
static constexpr uint32_t maxHitsInModule
constexpr uint32_t first_ladder_bpx4
static constexpr uint32_t const * layerStart
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)>
static constexpr uint32_t maxNumClustersPerModules
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 maxCellsPerHit
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 maxCellNeighbors
static constexpr uint32_t maxHitsOnTrackForFullFit
static constexpr float const * minz
constexpr int16_t phicuts[nPairs]
static constexpr uint32_t maxHitsForContainers
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]
static constexpr char const * nameModifier
constexpr uint8_t layerPairs[2 *nPairs]
static constexpr uint16_t clusterBits
static constexpr uint32_t maxCellTracks
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 maxNumberOfDoublets
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 uint32_t maxNumberOfTuples
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 uint32_t maxNumClustersPerModules
static constexpr uint8_t const * layerPairs
static constexpr uint32_t maxDepth
static constexpr float const * maxr
static constexpr uint32_t maxHitsInModule
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 uint32_t avgTracksPerHit