ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
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). More...
 
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

constexpr static 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  {
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  }

◆ get_closest_cell()

constexpr 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  }

◆ get_neighbours()

constexpr 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()

constexpr 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()

constexpr 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  }

◆ is_HECIW_or_FCal()

constexpr 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()

constexpr 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 static bool CaloRecGPU::GeometryArr::is_tile ( const int  cell)
inlinestaticconstexpr

Definition at line 250 of file ConstantInfoDefinitions.h.

251  {
252  return cell >= TileCellStart && cell < TileCellAfterEnd;
253  }

◆ region()

constexpr 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()

constexpr 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()

constexpr 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:
RunTileCalibRec.cells
cells
Definition: RunTileCalibRec.py:281
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
CaloRecGPU::GeometryArr::phi
float phi[NCaloCells]
Definition: ConstantInfoDefinitions.h:227
CaloRecGPU::Helpers::int_ceil_div
constexpr auto int_ceil_div(const T1 num, const T2 denom)
Returns the ceiling of num/denom, with proper rounding.
Definition: Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h:215
CaloRecGPU::GeometryArr::etaPhiToCell
EtaPhiToCellMap etaPhiToCell
Definition: ConstantInfoDefinitions.h:246
columnar::operator=
AccessorTemplate & operator=(AccessorTemplate &&that)
Definition: VectorColumn.h:88
CaloRecGPU::GeometryArr::eta
float eta[NCaloCells]
Definition: ConstantInfoDefinitions.h:226
CaloRecGPU::NeighArr::get_neighbours
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...
Definition: NeighArr.h:202
CaloRecGPU::EtaPhiToCellMap::get_max_real_overlap
constexpr int get_max_real_overlap() const
Definition: EtaPhiMap.h:1556
CaloRecGPU::TileCellAfterEnd
constexpr int TileCellAfterEnd
Definition: BaseDefinitions.h:18
CUDA_HOS_DEV
#define CUDA_HOS_DEV
Definition: Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h:101
lumiFormat.i
int i
Definition: lumiFormat.py:85
python.DecayParser.buf
buf
print ("=> [%s]"cmd)
Definition: DecayParser.py:27
CaloRecGPU::GeometryArr::deta
float deta[NCaloCells]
Definition: ConstantInfoDefinitions.h:233
CaloRecGPU::GeometryArr::sampling
constexpr int sampling(const int cell) const
Definition: ConstantInfoDefinitions.h:267
CaloRecGPU::NCaloCells
constexpr int NCaloCells
Definition: BaseDefinitions.h:12
CaloRecGPU::EtaPhiToCellMap::finish_initializing
CUDA_HOS_DEV void finish_initializing(void *buffer)
!
Definition: EtaPhiMap.h:1513
CaloRecGPU::EtaPhiToCellMap::s_max_overlap_cells
static constexpr int s_max_overlap_cells
Definition: EtaPhiMap.h:1086
CaloRecGPU::EtaPhiToCellMap::finish_initializing_buffer_size
constexpr size_t finish_initializing_buffer_size() const
Definition: EtaPhiMap.h:1503
CaloRecGPU::GeometryArr::otherCellInfo
OtherCellInfo::carrier otherCellInfo[NCaloCells]
Definition: ConstantInfoDefinitions.h:248
CaloRecGPU::EtaPhiToCellMap::register_cell
constexpr void register_cell(const int cell, const int sampling, const float cell_eta, const float cell_phi, const float cell_deta, const float cell_dphi)
Definition: EtaPhiMap.h:1497
eFEXNTuple.delta_phi
def delta_phi(phi1, phi2)
Definition: eFEXNTuple.py:15
CaloRecGPU::GeometryArr::neighbours
NeighArr neighbours
Definition: ConstantInfoDefinitions.h:240
CaloRecGPU::NeighArr::get_number_of_neighbours
constexpr int get_number_of_neighbours(const unsigned int neigh_options, const int cell) const
Definition: NeighArr.h:226
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
CaloRecGPU::TileCellStart
constexpr int TileCellStart
Definition: BaseDefinitions.h:16
CaloRecGPU::EtaPhiToCellMap::get_possible_cells_from_coords
constexpr int get_possible_cells_from_coords(const int sampling, const float test_eta, const float test_phi, int *cell_arr) const
We assume cell_arr is large enough.
Definition: EtaPhiMap.h:1519
CaloRecGPU::GeometryArr::dphi
float dphi[NCaloCells]
Definition: ConstantInfoDefinitions.h:234