ATLAS Offline Software
Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | List of all members
CaloRecGPU::CellNoiseArr Struct Reference

#include <ConstantInfoDefinitions.h>

Collaboration diagram for CaloRecGPU::CellNoiseArr:

Public Member Functions

constexpr float get_noise (const int cell, const int gain) const
 
CUDA_HOS_DEV float get_double_gaussian_noise (const int cell, const int gain, const float energy) const
 Calculates the double gaussian noise for a Tile cell. More...
 

Public Attributes

float noise [NCaloCells][NumGainStates]
 
float double_gaussian_constants [s_numDoubleGaussianConstants][NTileCells][NumGainStates]
 
CellNoiseProperties::carrier noise_properties
 
float luminosity
 

Static Public Attributes

static constexpr int s_numDoubleGaussianConstants = 4
 

Protected Member Functions

CUDA_HOS_DEV float get_double_gaussian_significance (const int cell, const int gain, const float energy) const
 

Detailed Description

Definition at line 461 of file ConstantInfoDefinitions.h.

Member Function Documentation

◆ get_double_gaussian_noise()

CUDA_HOS_DEV float CaloRecGPU::CellNoiseArr::get_double_gaussian_noise ( const int  cell,
const int  gain,
const float  energy 
) const
inline

Calculates the double gaussian noise for a Tile cell.

Does not check explicitly for a cell being from Tile.

Definition at line 541 of file ConstantInfoDefinitions.h.

542  {
543  using namespace std;
544 
545  CellNoiseProperties props(this->noise_properties);
546  if (!props.is_valid())
547  {
548  return get_noise(cell, gain);
549  }
550 
552 
553  const float first_factor = (sigma != 0.f ? fabsf(energy / sigma) : 0.f);
554 
555  if (props.is_electronic_noise())
556  {
557  return first_factor;
558  }
559  else
560  {
561  const float second_factor = this->double_gaussian_constants[3][cell - TileCellStart][gain];
562 
563  switch (props.version())
564  {
565  case 1:
566  return sqrtf(first_factor * first_factor + second_factor * second_factor * this->luminosity);
567  case 2:
568  return first_factor + second_factor * this->luminosity;
569  default:
570  return 0.f / 0.f;
571  }
572  }
573  }

◆ get_double_gaussian_significance()

CUDA_HOS_DEV float CaloRecGPU::CellNoiseArr::get_double_gaussian_significance ( const int  cell,
const int  gain,
const float  energy 
) const
inlineprotected

Definition at line 481 of file ConstantInfoDefinitions.h.

482  {
483 
484  using namespace std;
485 
486  const int delta_from_tile_start = cell - TileCellStart;
487 
488  const float sigma_1 = this->double_gaussian_constants[0][delta_from_tile_start][gain];
489  const float sigma_2 = this->double_gaussian_constants[1][delta_from_tile_start][gain];
490  const float ratio = this->double_gaussian_constants[2][delta_from_tile_start][gain];
491 
492  if ((sigma_1 == 0.f && sigma_2 == 0.f) || energy == 0.f)
493  {
494  return 0.f;
495  }
496  else if (sigma_1 == 0.f)
497  {
498  return energy / sigma_2;
499  }
500  else if (ratio == 0.f || sigma_2 == 0.f)
501  {
502  return energy / sigma_1;
503  }
504 
505  const float x_1 = energy / sigma_1;
506  const float x_2 = energy / sigma_2;
507  const float x_1_abs = fabsf(x_1);
508  const float x_2_abs = fabsf(x_2);
509 
510  const float min_abs = min(x_1_abs, x_2_abs);
511 
512  const float max_abs = max(x_1_abs, x_2_abs);
513 
514  if (min_abs > 7.4f)
515  {
516  return min_abs;
517  }
518  if (max_abs < 0.9f)
519  {
520  return max_abs;
521  }
522 
523  const float y_1 = erff(Helpers::Constants::inv_sqrt2<float> * x_1);
524  const float y_2 = erff(Helpers::Constants::inv_sqrt2<float> * x_2);
525 
526 
527  const float z = (y_1 * sigma_1 + ratio * y_2 * sigma_2) / (sigma_1 + ratio * sigma_2);
528 
529  const float ret = Helpers::Constants::sqrt2<float> * Helpers::erf_inv_wrapper(z);
530 
531  //printf("GPU %d %f %f %f %f %f %f\n", delta_from_tile_start, min_abs, max_abs, y_1, y_2, z, ret);
532 
533  return ret;
534 
535  }

◆ get_noise()

constexpr float CaloRecGPU::CellNoiseArr::get_noise ( const int  cell,
const int  gain 
) const
inlineconstexpr

Definition at line 474 of file ConstantInfoDefinitions.h.

475  {
476  return noise[cell][gain];
477  }

Member Data Documentation

◆ double_gaussian_constants

float CaloRecGPU::CellNoiseArr::double_gaussian_constants[s_numDoubleGaussianConstants][NTileCells][NumGainStates]

Definition at line 468 of file ConstantInfoDefinitions.h.

◆ luminosity

float CaloRecGPU::CellNoiseArr::luminosity

Definition at line 472 of file ConstantInfoDefinitions.h.

◆ noise

float CaloRecGPU::CellNoiseArr::noise[NCaloCells][NumGainStates]

Definition at line 465 of file ConstantInfoDefinitions.h.

◆ noise_properties

CellNoiseProperties::carrier CaloRecGPU::CellNoiseArr::noise_properties

Definition at line 470 of file ConstantInfoDefinitions.h.

◆ s_numDoubleGaussianConstants

constexpr int CaloRecGPU::CellNoiseArr::s_numDoubleGaussianConstants = 4
staticconstexpr

Definition at line 463 of file ConstantInfoDefinitions.h.


The documentation for this struct was generated from the following file:
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
CaloRecGPU::CellNoiseArr::noise_properties
CellNoiseProperties::carrier noise_properties
Definition: ConstantInfoDefinitions.h:470
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
z
#define z
hist_file_dump.f
f
Definition: hist_file_dump.py:140
CaloRecGPU::CellNoiseArr::noise
float noise[NCaloCells][NumGainStates]
Definition: ConstantInfoDefinitions.h:465
CaloRecGPU::CellNoiseArr::luminosity
float luminosity
Definition: ConstantInfoDefinitions.h:472
CaloRecGPU::CellNoiseArr::double_gaussian_constants
float double_gaussian_constants[s_numDoubleGaussianConstants][NTileCells][NumGainStates]
Definition: ConstantInfoDefinitions.h:468
python.compareTCTs.ratio
ratio
Definition: compareTCTs.py:294
CaloRecGPU::CellNoiseArr::get_noise
constexpr float get_noise(const int cell, const int gain) const
Definition: ConstantInfoDefinitions.h:474
CaloRecGPU::CellNoiseArr::get_double_gaussian_significance
CUDA_HOS_DEV float get_double_gaussian_significance(const int cell, const int gain, const float energy) const
Definition: ConstantInfoDefinitions.h:481
CaloRecGPU::TileCellStart
constexpr int TileCellStart
Definition: BaseDefinitions.h:16