ATLAS Offline Software
Loading...
Searching...
No Matches
CaloRecGPU::GeometryArr Struct Reference

#include <ConstantInfoDefinitions.h>

Collaboration diagram for CaloRecGPU::GeometryArr:

Public Member Functions

constexpr bool is_HECIW_or_FCal (const int cell) const
constexpr bool is_PS (const int cell) const
constexpr int sampling (const int cell) const
constexpr int intra_calorimeter_sampling (const int cell) const
constexpr int subcalo (const int cell) const
constexpr int region (const int cell) const
constexpr int get_neighbours (const unsigned int neigh_options, const int cell, int *neigh_arr) const
 Places the neighbours according to the option(s) in neigh_options in the array and returns the number of such neighbours (not the total number of neighbours of the cell).
constexpr int get_number_of_neighbours (const unsigned int neigh_options, const int cell) const
CUDA_HOS_DEV void fill_eta_phi_map ()
constexpr int get_closest_cell (const int sampling, const float test_eta, const float test_phi) const

Static Public Member Functions

static constexpr bool is_tile (const int cell)

Public Attributes

float x [NCaloCells]
float y [NCaloCells]
float z [NCaloCells]
float r [NCaloCells]
float eta [NCaloCells]
float phi [NCaloCells]
float dx [NCaloCells]
float dy [NCaloCells]
float dz [NCaloCells]
float dr [NCaloCells]
float deta [NCaloCells]
float dphi [NCaloCells]
float volume [NCaloCells]
int nCellsPerSampling [NumSamplings]
NeighArr neighbours
EtaPhiToCellMap etaPhiToCell
OtherCellInfo::carrier otherCellInfo [NCaloCells]

Detailed Description

Definition at line 220 of file ConstantInfoDefinitions.h.

Member Function Documentation

◆ fill_eta_phi_map()

CUDA_HOS_DEV void CaloRecGPU::GeometryArr::fill_eta_phi_map ( )
inline

Definition at line 306 of file ConstantInfoDefinitions.h.

307 {
308 for (int i = 0; i < NCaloCells; ++i)
309 {
310 etaPhiToCell.register_cell(i, sampling(i), eta[i], phi[i], deta[i], dphi[i]);
311 }
312
313 struct DeAllocWrapper
314 {
315 int * buf;
316 CUDA_HOS_DEV DeAllocWrapper(const size_t new_size)
317 {
318 buf = new int[Helpers::int_ceil_div(new_size, sizeof(int))];
319 }
320 CUDA_HOS_DEV ~DeAllocWrapper()
321 {
322 delete[] buf;
323 }
324 CUDA_HOS_DEV DeAllocWrapper (const DeAllocWrapper &) = delete;
325 CUDA_HOS_DEV DeAllocWrapper (DeAllocWrapper &&) = delete;
326 CUDA_HOS_DEV DeAllocWrapper & operator=(const DeAllocWrapper &) = delete;
327 CUDA_HOS_DEV DeAllocWrapper & operator=(DeAllocWrapper &&) = delete;
328 };
329 //Simple allocation/de-allocation
330 //to still be GPU-compatible if needed
331 //(new and delete valid on GPU code...),
332 //while still preventing leaks,
333 //all without pulling in unique_ptr.
334
335 DeAllocWrapper wrapper(etaPhiToCell.finish_initializing_buffer_size());
336
337#if CALORECGPU_ETA_PHI_MAP_DEBUG
338 printf("CALORECGPU ETA PHI MAP DEBUG OUTPUT: Max occupied cells is %d\n", etaPhiToCell.get_max_real_overlap());
339#endif
340 etaPhiToCell.finish_initializing(wrapper.buf);
341
342 }
constexpr int NCaloCells
constexpr int sampling(const int cell) const

◆ get_closest_cell()

int CaloRecGPU::GeometryArr::get_closest_cell ( const int sampling,
const float test_eta,
const float test_phi ) const
inlineconstexpr

Definition at line 344 of file ConstantInfoDefinitions.h.

345 {
347
348 const int n_cells = etaPhiToCell.get_possible_cells_from_coords(sampling, test_eta, test_phi, cells);
349
350 if (n_cells < 1)
351 {
352 return -1;
353 }
354 else if (n_cells == 1)
355 {
356 return cells[0];
357 }
358 else
359 {
360 float distance = 1e38f;
361 int ret = -1;
362
363 for (int i = 0; i < n_cells; ++i)
364 {
365 const int this_cell = cells[i];
366
367 const float delta_eta = eta[this_cell] - test_eta;
368 const float delta_phi = Helpers::angular_difference(phi[this_cell], test_phi);
369
370 using namespace std;
371
372 const float this_dist = fabsf(delta_eta) + fabsf(delta_phi);
373 if (this_dist < distance || (this_dist == distance && this_cell > ret))
374 {
375 distance = this_dist;
376 ret = this_cell;
377 }
378 }
379 return ret;
380 }
381 }
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
static CUDA_HOS_DEV T angular_difference(const T x, const T y)
delta_phi(phi1, phi2)
Definition eFEXNTuple.py:14
static constexpr int s_max_overlap_cells
Definition EtaPhiMap.h:1086

◆ get_neighbours()

int CaloRecGPU::GeometryArr::get_neighbours ( const unsigned int neigh_options,
const int cell,
int * neigh_arr ) const
inlineconstexpr

Places the neighbours according to the option(s) in neigh_options in the array and returns the number of such neighbours (not the total number of neighbours of the cell).

We're using C arrays for more immediate CUDA compatibility.

Definition at line 296 of file ConstantInfoDefinitions.h.

297 {
298 return neighbours.get_neighbours(neigh_options, cell, neigh_arr);
299 }

◆ get_number_of_neighbours()

int CaloRecGPU::GeometryArr::get_number_of_neighbours ( const unsigned int neigh_options,
const int cell ) const
inlineconstexpr

Definition at line 301 of file ConstantInfoDefinitions.h.

302 {
303 return neighbours.get_number_of_neighbours(neigh_options, cell);
304 }

◆ intra_calorimeter_sampling()

int CaloRecGPU::GeometryArr::intra_calorimeter_sampling ( const int cell) const
inlineconstexpr

Definition at line 273 of file ConstantInfoDefinitions.h.

274 {
275 const OtherCellInfo cell_info = otherCellInfo[cell];
276 return cell_info.intra_calorimeter_sampling();
277 }
OtherCellInfo::carrier otherCellInfo[NCaloCells]

◆ is_HECIW_or_FCal()

bool CaloRecGPU::GeometryArr::is_HECIW_or_FCal ( const int cell) const
inlineconstexpr

Definition at line 255 of file ConstantInfoDefinitions.h.

256 {
257 const OtherCellInfo cell_info = otherCellInfo[cell];
258 return cell_info.is_HECIW_or_FCal();
259 }

◆ is_PS()

bool CaloRecGPU::GeometryArr::is_PS ( const int cell) const
inlineconstexpr

Definition at line 261 of file ConstantInfoDefinitions.h.

262 {
263 const OtherCellInfo cell_info = otherCellInfo[cell];
264 return cell_info.is_PS();
265 }

◆ is_tile()

constexpr bool CaloRecGPU::GeometryArr::is_tile ( const int cell)
inlinestaticconstexpr

Definition at line 250 of file ConstantInfoDefinitions.h.

251 {
253 }
constexpr int TileCellAfterEnd
constexpr int TileCellStart

◆ region()

int CaloRecGPU::GeometryArr::region ( const int cell) const
inlineconstexpr

Definition at line 285 of file ConstantInfoDefinitions.h.

286 {
287 const OtherCellInfo cell_info = otherCellInfo[cell];
288 return cell_info.region();
289 }

◆ sampling()

int CaloRecGPU::GeometryArr::sampling ( const int cell) const
inlineconstexpr

Definition at line 267 of file ConstantInfoDefinitions.h.

268 {
269 const OtherCellInfo cell_info = otherCellInfo[cell];
270 return cell_info.sampling();
271 }

◆ subcalo()

int CaloRecGPU::GeometryArr::subcalo ( const int cell) const
inlineconstexpr

Definition at line 279 of file ConstantInfoDefinitions.h.

280 {
281 const OtherCellInfo cell_info = otherCellInfo[cell];
282 return cell_info.subcalo();
283 }

Member Data Documentation

◆ deta

float CaloRecGPU::GeometryArr::deta[NCaloCells]

Definition at line 233 of file ConstantInfoDefinitions.h.

◆ dphi

float CaloRecGPU::GeometryArr::dphi[NCaloCells]

Definition at line 234 of file ConstantInfoDefinitions.h.

◆ dr

float CaloRecGPU::GeometryArr::dr[NCaloCells]

Definition at line 232 of file ConstantInfoDefinitions.h.

◆ dx

float CaloRecGPU::GeometryArr::dx[NCaloCells]

Definition at line 229 of file ConstantInfoDefinitions.h.

◆ dy

float CaloRecGPU::GeometryArr::dy[NCaloCells]

Definition at line 230 of file ConstantInfoDefinitions.h.

◆ dz

float CaloRecGPU::GeometryArr::dz[NCaloCells]

Definition at line 231 of file ConstantInfoDefinitions.h.

◆ eta

float CaloRecGPU::GeometryArr::eta[NCaloCells]

Definition at line 226 of file ConstantInfoDefinitions.h.

◆ etaPhiToCell

EtaPhiToCellMap CaloRecGPU::GeometryArr::etaPhiToCell

Definition at line 246 of file ConstantInfoDefinitions.h.

◆ nCellsPerSampling

int CaloRecGPU::GeometryArr::nCellsPerSampling[NumSamplings]

Definition at line 238 of file ConstantInfoDefinitions.h.

◆ neighbours

NeighArr CaloRecGPU::GeometryArr::neighbours

Definition at line 240 of file ConstantInfoDefinitions.h.

◆ otherCellInfo

OtherCellInfo::carrier CaloRecGPU::GeometryArr::otherCellInfo[NCaloCells]

Definition at line 248 of file ConstantInfoDefinitions.h.

◆ phi

float CaloRecGPU::GeometryArr::phi[NCaloCells]

Definition at line 227 of file ConstantInfoDefinitions.h.

◆ r

float CaloRecGPU::GeometryArr::r[NCaloCells]

Definition at line 225 of file ConstantInfoDefinitions.h.

◆ volume

float CaloRecGPU::GeometryArr::volume[NCaloCells]

Definition at line 236 of file ConstantInfoDefinitions.h.

◆ x

float CaloRecGPU::GeometryArr::x[NCaloCells]

Definition at line 222 of file ConstantInfoDefinitions.h.

◆ y

float CaloRecGPU::GeometryArr::y[NCaloCells]

Definition at line 223 of file ConstantInfoDefinitions.h.

◆ z

float CaloRecGPU::GeometryArr::z[NCaloCells]

Definition at line 224 of file ConstantInfoDefinitions.h.


The documentation for this struct was generated from the following file: