ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
BasicConstantGPUDataExporter Class Reference

Standard tool to export calorimeter geometry and cell noise to GPU. More...

#include <BasicConstantGPUDataExporter.h>

Inheritance diagram for BasicConstantGPUDataExporter:
Collaboration diagram for BasicConstantGPUDataExporter:

Public Member Functions

 BasicConstantGPUDataExporter (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual StatusCode initialize () override
 
virtual StatusCode convert (CaloRecGPU::ConstantDataHolder &constant_data, const bool override_keep_CPU_info) const override
 Fill the @ConstantDataHolder with the relevant information. More...
 
virtual StatusCode convert (const EventContext &ctx, CaloRecGPU::ConstantDataHolder &constant_data, const bool override_keep_CPU_info) const override
 Fill the @CaloRecGPU::ConstantDataHolder with the relevant information at the first event. More...
 
virtual StatusCode finalize () override
 
virtual ~BasicConstantGPUDataExporter ()=default
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 
 DeclareInterfaceID (ICaloClusterGPUConstantTransformer, 1, 0)
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 
void record_times (const size_t event_num, const std::vector< size_t > &times) const
 
template<class ... Args>
void record_times (const size_t event_num, const size_t &value) const
 
template<class ... Args>
void record_times (const size_t event_num, const size_t &value, Args &&... args) const
 
void print_times (const std::string &header, const size_t time_size) const
 

Protected Attributes

std::mutex m_timeMutex
 Mutex that is locked when recording times. More...
 
std::vector< size_t > m_times ATLAS_THREAD_SAFE
 Vector to hold execution times to be recorded if necessary. More...
 
std::vector< size_t > m_eventNumbers ATLAS_THREAD_SAFE
 Vector to hold the event numbers to be recorded if necessary. More...
 
Gaudi::Property< bool > m_measureTimes
 If true, times are recorded to the file given by m_timeFileName. More...
 
Gaudi::Property< std::string > m_timeFileName
 File to which times should be saved. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 
void record_times_helper (size_t) const
 
void record_times_helper (size_t index, size_t t) const
 
template<class ... Args>
void record_times_helper (size_t index, size_t t, Args &&... args) const
 

Private Attributes

Gaudi::Property< bool > m_keepCPUData {this, "KeepCPUData", true, "Keep CPU version of GPU data format"}
 If true, do not delete the CPU version of the GPU-friendly data representation. More...
 
SG::ReadCondHandleKey< CaloNoisem_noiseCDOKey {this, "CaloNoiseKey", "totalNoise", "SG Key of CaloNoise data object"}
 Key of the CaloNoise Conditions data object. More...
 
SG::ReadCondHandleKey< CaloDetDescrManagerm_caloMgrKey
 Key for the CaloDetDescrManager in the Condition Store. More...
 
bool m_hasBeenInitialized
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Standard tool to export calorimeter geometry and cell noise to GPU.

Author
Nuno Fernandes nuno..nosp@m.dos..nosp@m.santo.nosp@m.s.fe.nosp@m.rnand.nosp@m.es@c.nosp@m.ern.c.nosp@m.h
Date
29 May 2022 For the time being, this must be run on first event, so that the noise tool exists and so on. Hopefully we can find a way around this in the future.

Definition at line 28 of file BasicConstantGPUDataExporter.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ BasicConstantGPUDataExporter()

BasicConstantGPUDataExporter::BasicConstantGPUDataExporter ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 25 of file BasicConstantGPUDataExporter.cxx.

25  :
27  CaloGPUTimed(this),
29 {
30  declareInterface<ICaloClusterGPUConstantTransformer> (this);
31 }

◆ ~BasicConstantGPUDataExporter()

virtual BasicConstantGPUDataExporter::~BasicConstantGPUDataExporter ( )
virtualdefault

Member Function Documentation

◆ convert() [1/2]

StatusCode BasicConstantGPUDataExporter::convert ( CaloRecGPU::ConstantDataHolder constant_data,
const bool  override_keep_CPU_info 
) const
overridevirtual

Fill the @ConstantDataHolder with the relevant information.

Parameters
constant_dataData held in GPU memory that is common to all events (cell noise and geometry).
override_keep_CPU_infoIf true, keep CPU info regardless of the default behaviour of the tool.

Implements ICaloClusterGPUConstantTransformer.

Definition at line 50 of file BasicConstantGPUDataExporter.cxx.

51 {
52  ATH_MSG_ERROR("BasicConstantGPUDataExporter (" << this->name() << ") must be used with the "
53  "GPU data preparation happening on the first event.");
54 
55  return StatusCode::FAILURE;
56 }

◆ convert() [2/2]

StatusCode BasicConstantGPUDataExporter::convert ( const EventContext &  ,
CaloRecGPU::ConstantDataHolder constant_data,
const bool  override_keep_CPU_info 
) const
overridevirtual

Fill the @CaloRecGPU::ConstantDataHolder with the relevant information at the first event.

Parameters
ctxThe event context.
constant_dataData held in GPU memory that is common to all events (cell noise and geometry).
override_keep_CPU_infoIf true, keep CPU info regardless of the default behaviour of the tool.

Unless otherwise specified by the tool, this does exactly the same as convert(constant_data)

Reimplemented from ICaloClusterGPUConstantTransformer.

Definition at line 58 of file BasicConstantGPUDataExporter.cxx.

59 {
60  using clock_type = boost::chrono::thread_clock;
61  auto time_cast = [](const auto & before, const auto & after)
62  {
63  return boost::chrono::duration_cast<boost::chrono::microseconds>(after - before).count();
64  };
65 
66  auto start = clock_type::now();
67 
69  const CaloDetDescrManager * calo_dd_man = *caloMgrHandle;
70 
71  cd.m_geometry.allocate();
72 
73  const CaloCell_ID * calo_id = calo_dd_man->getCaloCell_ID();
74 
75  float min_eta_pos[NumSamplings], max_eta_pos[NumSamplings],
76  min_eta_neg[NumSamplings], max_eta_neg[NumSamplings],
77  min_phi_pos[NumSamplings], max_phi_pos[NumSamplings],
78  min_phi_neg[NumSamplings], max_phi_neg[NumSamplings],
79  min_deta [NumSamplings], min_dphi [NumSamplings];
80 
81  for (int i = 0; i < NumSamplings; ++i)
82  {
83  min_eta_pos[i] = std::numeric_limits<float>::max();
84  max_eta_pos[i] = std::numeric_limits<float>::lowest();
85  min_eta_neg[i] = std::numeric_limits<float>::max();
86  max_eta_neg[i] = std::numeric_limits<float>::lowest();
87  min_phi_pos[i] = std::numeric_limits<float>::max();
88  max_phi_pos[i] = std::numeric_limits<float>::lowest();
89  min_phi_neg[i] = std::numeric_limits<float>::max();
90  max_phi_neg[i] = std::numeric_limits<float>::lowest();
91  min_deta [i] = std::numeric_limits<float>::max();
92  min_dphi [i] = std::numeric_limits<float>::max();
93  }
94 
95  for (int cell = 0; cell < NCaloCells; ++cell)
96  {
97  const CaloDetDescrElement * caloElement = calo_dd_man->get_element((IdentifierHash) cell);
98 
99  const Identifier cell_identifier = calo_id->cell_id((IdentifierHash) cell);
100 
101  const int sampling = calo_id->calo_sample(cell_identifier);
102  const int intra_calo_sampling = calo_id->sampling(cell_identifier);
103  const int subcalo = caloElement->getSubCalo();
104  const int region = calo_id->region(cell_identifier);
105 
106  const bool is_PS = (subcalo == CaloCell_ID::LAREM && intra_calo_sampling == 0);
107 
108  const bool is_HECIW_or_FCAL = ( (subcalo == CaloCell_ID::LARHEC && region == 1 ) ||
109  (subcalo == CaloCell_ID::LARFCAL && intra_calo_sampling > 1 ) );
110 
111  cd.m_geometry->otherCellInfo[cell] = OtherCellInfo(sampling,
112  ConstantEnumConversion::from_intra_calorimeter_sampling_enum(intra_calo_sampling),
113  ConstantEnumConversion::from_subcalo_enum(subcalo),
114  ConstantEnumConversion::from_region_enum(region),
115  is_PS,
116  is_HECIW_or_FCAL);
117  cd.m_geometry->x[cell] = caloElement->x();
118  cd.m_geometry->y[cell] = caloElement->y();
119  cd.m_geometry->z[cell] = caloElement->z();
120  cd.m_geometry->r[cell] = caloElement->r();
121  cd.m_geometry->eta[cell] = caloElement->eta();
122  cd.m_geometry->phi[cell] = caloElement->phi();
123 
124  cd.m_geometry->dx[cell] = caloElement->dx();
125  cd.m_geometry->dy[cell] = caloElement->dy();
126  cd.m_geometry->dz[cell] = caloElement->dz();
127  cd.m_geometry->dr[cell] = caloElement->dr();
128  cd.m_geometry->deta[cell] = caloElement->deta();
129  cd.m_geometry->dphi[cell] = caloElement->dphi();
130 
131  cd.m_geometry->volume[cell] = caloElement->volume();
132  cd.m_geometry->neighbours.offsets[cell] = 0;
133 
134  if (caloElement->eta() >= 0)
135  {
136  min_eta_pos[sampling] = std::min(min_eta_pos[sampling], caloElement->eta() - caloElement->deta() / 2);
137  min_phi_pos[sampling] = std::min(min_phi_pos[sampling], caloElement->phi() - caloElement->dphi() / 2);
138  max_eta_pos[sampling] = std::max(max_eta_pos[sampling], caloElement->eta() + caloElement->deta() / 2);
139  max_phi_pos[sampling] = std::max(max_phi_pos[sampling], caloElement->phi() + caloElement->dphi() / 2);
140  }
141  else
142  {
143  min_eta_neg[sampling] = std::min(min_eta_neg[sampling], caloElement->eta() - caloElement->deta() / 2);
144  min_phi_neg[sampling] = std::min(min_phi_neg[sampling], caloElement->phi() - caloElement->dphi() / 2);
145  max_eta_neg[sampling] = std::max(max_eta_neg[sampling], caloElement->eta() + caloElement->deta() / 2);
146  max_phi_neg[sampling] = std::max(max_phi_neg[sampling], caloElement->phi() + caloElement->dphi() / 2);
147  }
148  min_deta[sampling] = std::min(min_deta[sampling], caloElement->deta());
149  min_dphi[sampling] = std::min(min_dphi[sampling], caloElement->dphi());
150 
151  }
152 
153  for (int i = 0; i < NumSamplings; ++i)
154  {
155  constexpr float corrective_factor = 0.99f;
156  cd.m_geometry->etaPhiToCell.initialize(i, min_eta_neg[i], min_phi_neg[i], max_eta_neg[i], max_phi_neg[i],
157  min_eta_pos[i], min_phi_pos[i], max_eta_pos[i], max_phi_pos[i],
158  min_deta[i]*corrective_factor, min_dphi[i]*corrective_factor);
159  }
160 
161  cd.m_geometry->fill_eta_phi_map();
162 
163  std::vector<IdentifierHash> neighbour_vector, full_neighs, prev_neighs;
164 
165  for (int cell = 0; cell < NCaloCells; ++cell)
166  {
167  for (int neigh_bit_set = 0; neigh_bit_set < NumNeighOptions; ++neigh_bit_set)
168  {
169  const unsigned int curr_neigh_opt = (1U << neigh_bit_set);
170 
171  if (curr_neigh_opt == LArNeighbours::corners2D || curr_neigh_opt == LArNeighbours::corners3D)
172  //Scanning the ATLAS codebase, neighbour handling has special cases
173  //for all2D (LarFCAL_Base_ID.cxx, LArMiniFCAL_ID.cxx, Tile_Base_ID.cxx)
174  //and all3DwithCorners (Tile_Base_ID.cxx), which include
175  //neighbours not returned when just the constituent bits are set separately.
176  //As an imperfect workaround, we stuff them in the immediately previous option
177  //(corners, for both 2D and 3D).
178  {
179  if (curr_neigh_opt == LArNeighbours::corners2D)
180  {
181  calo_id->get_neighbours((IdentifierHash) cell,
183  full_neighs);
184  }
185  else /*if (curr_neigh_opt == LArNeighbours::corners3D)*/
186  {
187  calo_id->get_neighbours((IdentifierHash) cell,
189  prev_neighs);
190  calo_id->get_neighbours((IdentifierHash) cell,
192  neighbour_vector);
193  //We will exclude the cells that could come from later options
194  //(it seems, from Tile_Base_ID.cxx, all3DwithCorners will give more than super3D),
195  //which... might make some sense, but seems unexpected.
196 
197 
198  std::sort(neighbour_vector.begin(), neighbour_vector.end());
199  std::sort(prev_neighs.begin(), prev_neighs.end());
200 
201  full_neighs.clear();
202 
203  std::set_difference( prev_neighs.begin(), prev_neighs.end(),
204  neighbour_vector.begin(), neighbour_vector.end(),
205  std::back_inserter(full_neighs) );
206 
207  }
208 
209  prev_neighs.resize(cd.m_geometry->neighbours.get_total_number_of_neighbours(cell));
210  //We want to add just the neighbours that are not part of this.
211 
212  for (size_t neigh = 0; neigh < prev_neighs.size(); ++neigh)
213  {
214  prev_neighs[neigh] = cd.m_geometry->neighbours.get_neighbour(cell, neigh);
215  }
216 
217  std::sort(full_neighs.begin(), full_neighs.end());
218  std::sort(prev_neighs.begin(), prev_neighs.end());
219 
220  neighbour_vector.clear();
221 
222  std::set_difference( full_neighs.begin(), full_neighs.end(),
223  prev_neighs.begin(), prev_neighs.end(),
224  std::back_inserter(neighbour_vector) );
225  }
226  else
227  {
228  calo_id->get_neighbours((IdentifierHash) cell, (LArNeighbours::neighbourOption) curr_neigh_opt, neighbour_vector);
229  }
230 
231  std::sort(neighbour_vector.begin(), neighbour_vector.end());
232 
233  const int neighs_start = cd.m_geometry->neighbours.get_total_number_of_neighbours(cell);
234 
235  for (size_t neigh_num = 0; neigh_num < neighbour_vector.size(); ++neigh_num)
236  {
237  cd.m_geometry->neighbours.set_neighbour(cell, neighs_start + neigh_num, neighbour_vector[neigh_num]);
238  }
239 
240  cd.m_geometry->neighbours.offsets[cell] += NeighOffset::offset_delta(neigh_bit_set) * neighbour_vector.size();
241 
242  }
243  }
244 
245 #if CALORECGPU_ADD_FULL_PAIRS_LIST_TO_CONSTANT_INFORMATION
246 
247 //Note: the commented out code is used to output the hard-coded numbers
248 //in NeighPairsArr. For the time being, it should remain here until
249 //a more definitive solution for the geometry is found.
250 
251  {
252  int num_pairs = 0;
253 
254  auto add_neighbours = [&](const int cell, const unsigned int curr_neigh_opt)
255  {
256  int neighbours[NMaxNeighbours];
257 
258  const int num_neighs = cd.m_geometry->neighbours.get_neighbours(curr_neigh_opt, cell, neighbours);
259 
260  for (int neigh = 0; neigh < num_neighs; ++neigh)
261  {
262  cd.m_geometry->neighPairs.cell_A[num_pairs] = cell;
263  cd.m_geometry->neighPairs.cell_B[num_pairs] = neighbours[neigh];
264  ++num_pairs;
265  }
266  };
267 
268  for (int neigh_bit_set = 0; neigh_bit_set < NumNeighOptions; ++neigh_bit_set)
269  {
270  const unsigned int curr_neigh_opt = (1U << neigh_bit_set);
271 
272  for (int cell = 0; cell < NCaloCells; ++cell)
273  {
274  if (cd.m_geometry->is_PS(cell) || cd.m_geometry->is_HECIW_or_FCal(cell))
275  {
276  continue;
277  }
278 
279  add_neighbours(cell, curr_neigh_opt);
280  }
281 
282  //const int PS_start = num_pairs;
283 
284  for (int cell = 0; cell < NCaloCells; ++cell)
285  {
286  if (!cd.m_geometry->is_PS(cell))
287  {
288  continue;
289  }
290 
291  add_neighbours(cell, curr_neigh_opt);
292  }
293 
294  //const int HECIW_FCal_start = num_pairs;
295 
296  for (int cell = 0; cell < NCaloCells; ++cell)
297  {
298  if (!cd.m_geometry->is_HECIW_or_FCal(cell))
299  {
300  continue;
301  }
302 
303  add_neighbours(cell, curr_neigh_opt);
304  }
305 
306  //std::cout << neigh_bit_set << " " << num_pairs << " " << PS_start << " " << HECIW_FCal_start << std::endl;
307  }
308  }
309 #endif
310 
311  auto after_geo = clock_type::now();
312 
313  /*
314  //Useful output for debugging and studying regularities in calorimeter geometry...
315 
316  std::cout << "ID\tCaloSample\tSampling\tRegion\tSubCalo";
317  for (int j = 0; j < NumNeighOptions; ++j)
318  {
319  std::cout << "\tn_" << j;
320  }
321  std::cout << "\tn_total\tOffset" << std::endl;
322 
323  for (int cell = 0; cell < NCaloCells; ++cell)
324  {
325 
326  const CaloDetDescrElement * caloElement = calo_dd_man->get_element((IdentifierHash) cell);
327  std::cout << cell << "\t"
328  << (int) calo_id->calo_sample(calo_id->cell_id((IdentifierHash) cell)) << "\t"
329  << (int) calo_id->sampling(calo_id->cell_id((IdentifierHash) cell)) << "\t"
330  << (int) calo_id->region(calo_id->cell_id((IdentifierHash) cell)) << "\t"
331  << (int) caloElement->getSubCalo();
332 
333  const NeighOffset n_off = cd.m_geometry->neighbours.offsets[cell];
334 
335  for (int j = 0; j < NumNeighOptions; ++j)
336  {
337  std::cout << "\t" << n_off.get_num_cells(j);
338  }
339 
340  std::cout << "\t" << n_off.get_total_number() << "\t" << n_off << std::endl;
341  }
342  // */
343 
344  SG::ReadCondHandle<CaloNoise> noise_handle(m_noiseCDOKey, ctx);
345  const CaloNoise * noise_tool = *noise_handle;
346 
347  IdentifierHash t_start, t_end;
348  calo_id->calo_cell_hash_range(CaloCell_ID::TILE, t_start, t_end);
349 
350  if (t_start != TileCellStart)
351  {
352  ATH_MSG_WARNING("Tile start (" << t_start << ") differs from assumed constant value (" << TileCellStart << ")!");
353  }
354  if (t_end != TileCellAfterEnd)
355  {
356  ATH_MSG_WARNING("Tile end (" << t_end << ") differs from assumed constant value (" << TileCellAfterEnd << ")!");
357  }
358 
359  const CaloCondBlobFlt * blob = noise_tool->getTileBlob();
360 
361  cd.m_cell_noise.allocate();
362 
363  if (!blob)
364  {
365  cd.m_cell_noise->noise_properties = CellNoiseProperties::invalid_value();
366  }
367  else
368  {
369  cd.m_cell_noise->noise_properties = CellNoiseProperties(blob->getObjVersion(), noise_tool->getNoiseType());
370  }
371 
372  cd.m_cell_noise->luminosity = noise_tool->getLumi();
373 
374  for (int cell = 0; cell < int(t_start); ++cell)
375  {
376  for (int gain_state = 0; gain_state < CaloRecGPU::NumGainStates; ++gain_state)
377  {
378  cd.m_cell_noise->noise[cell][gain_state] = noise_tool->larStorage()[(gain_state > 2 ? 0 : gain_state)][cell];
379  }
380  }
381  for (int cell = t_start; cell < int(t_end); ++cell)
382  {
383  for (int gain_state = 0; gain_state < CaloRecGPU::NumGainStates; ++gain_state)
384  {
385  cd.m_cell_noise->noise[cell][gain_state] = noise_tool->tileStorage()[gain_state][cell - t_start];
386  cd.m_cell_noise->double_gaussian_constants[0][cell - t_start][gain_state] = blob->getData(cell - t_start, gain_state, 2);
387  cd.m_cell_noise->double_gaussian_constants[1][cell - t_start][gain_state] = blob->getData(cell - t_start, gain_state, 3);
388  cd.m_cell_noise->double_gaussian_constants[2][cell - t_start][gain_state] = blob->getData(cell - t_start, gain_state, 4);
389  cd.m_cell_noise->double_gaussian_constants[3][cell - t_start][gain_state] = blob->getData(cell - t_start, gain_state, 1);
390  }
391  }
392  for (int cell = t_end; cell < NCaloCells; ++cell)
393  {
394  for (int gain_state = 0; gain_state < CaloRecGPU::NumGainStates; ++gain_state)
395  {
396  cd.m_cell_noise->noise[cell][gain_state] = 0;
397  }
398  }
399 
400  auto after_noise = clock_type::now();
401 
402  cd.sendToGPU(!(m_keepCPUData || keep_CPU_info));
403 
404 
405  auto after_send = clock_type::now();
406 
407  if (m_measureTimes)
408  {
409  record_times(ctx.evt(), time_cast(start, after_geo),
410  time_cast(after_geo, after_noise),
411  time_cast(after_noise, after_send)
412  );
413  }
414 
415  return StatusCode::SUCCESS;
416 
417 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ DeclareInterfaceID()

ICaloClusterGPUConstantTransformer::DeclareInterfaceID ( ICaloClusterGPUConstantTransformer  ,
,
 
)
inherited

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ finalize()

StatusCode BasicConstantGPUDataExporter::finalize ( )
overridevirtual

Definition at line 419 of file BasicConstantGPUDataExporter.cxx.

420 {
421 
422  if (m_measureTimes)
423  {
424  print_times("Geometry Geometry_Correction Noise Transfer_to_GPU", 3 /*4*/);
425  }
426  return StatusCode::SUCCESS;
427 }

◆ initialize()

StatusCode BasicConstantGPUDataExporter::initialize ( )
overridevirtual

Definition at line 33 of file BasicConstantGPUDataExporter.cxx.

34 {
36  {
37  ATH_MSG_INFO("Initializing data tool again...");
38  return StatusCode::SUCCESS;
39  }
40 
42 
44 
45  m_hasBeenInitialized = true;
46 
47  return StatusCode::SUCCESS;
48 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print_times()

void CaloGPUTimed::print_times ( const std::string &  header,
const size_t  time_size 
) const
inlineprotectedinherited

Definition at line 138 of file CaloGPUTimed.h.

139  {
140  if (m_timeFileName.size() == 0)
141  {
142  return;
143  }
144 
145  std::vector<size_t> indices(m_eventNumbers.size());
146  std::iota(indices.begin(), indices.end(), 0);
147  std::sort(indices.begin(), indices.end(), [&](size_t a, size_t b)
148  {
149  return m_eventNumbers[a] < m_eventNumbers[b];
150  }
151  );
152  std::ofstream out(m_timeFileName);
153 
154  out << "Event_Number Total " << header << "\n";
155 
156  for (const size_t idx : indices)
157  {
158  out << m_eventNumbers[idx] << " ";
159 
160  size_t total = 0;
161 
162  for (size_t i = 0; i < time_size; ++i)
163  {
164  total += m_times[idx * time_size + i];
165  }
166 
167  out << total << " ";
168 
169  for (size_t i = 0; i < time_size; ++i)
170  {
171  out << m_times[idx * time_size + i] << " ";
172  }
173  out << "\n";
174  }
175 
176  out << std::endl;
177 
178  out.close();
179  }

◆ record_times() [1/3]

template<class ... Args>
void CaloGPUTimed::record_times ( const size_t  event_num,
const size_t &  value 
) const
inlineprotectedinherited

Definition at line 102 of file CaloGPUTimed.h.

103  {
104  const size_t time_size = 1;
105 
106  size_t old_size;
107 
108  //Scope just for the lock_guard.
109  {
110  std::lock_guard<std::mutex> lock_guard(m_timeMutex);
111  old_size = m_times.size();
112  m_times.resize(old_size + time_size);
113  m_eventNumbers.push_back(event_num);
114  }
115 
116  record_times_helper(old_size, value);
117  }

◆ record_times() [2/3]

template<class ... Args>
void CaloGPUTimed::record_times ( const size_t  event_num,
const size_t &  value,
Args &&...  args 
) const
inlineprotectedinherited

Definition at line 120 of file CaloGPUTimed.h.

121  {
122  const size_t time_size = sizeof...(args) + 1;
123 
124  size_t old_size;
125 
126  //Scope just for the lock_guard.
127  {
128  std::lock_guard<std::mutex> lock_guard(m_timeMutex);
129  old_size = m_times.size();
130  m_times.resize(old_size + time_size);
131  m_eventNumbers.push_back(event_num);
132  }
133 
134  record_times_helper(old_size, value, std::forward<Args>(args)...);
135 
136  }

◆ record_times() [3/3]

void CaloGPUTimed::record_times ( const size_t  event_num,
const std::vector< size_t > &  times 
) const
inlineprotectedinherited

Definition at line 84 of file CaloGPUTimed.h.

85  {
86  size_t old_size;
87  //Scope just for the lock_guard.
88  {
89  std::lock_guard<std::mutex> lock_guard(m_timeMutex);
90  old_size = m_times.size();
91  m_times.resize(old_size + times.size());
92  m_eventNumbers.push_back(event_num);
93  }
94 
95  for (size_t i = 0; i < times.size(); ++i)
96  {
97  m_times[old_size + i] = times[i];
98  }
99  }

◆ record_times_helper() [1/3]

void CaloGPUTimed::record_times_helper ( size_t  index,
size_t  t 
) const
inlineprivateinherited

Definition at line 70 of file CaloGPUTimed.h.

71  {
72  m_times[index] = t;
73  }

◆ record_times_helper() [2/3]

template<class ... Args>
void CaloGPUTimed::record_times_helper ( size_t  index,
size_t  t,
Args &&...  args 
) const
inlineprivateinherited

Definition at line 76 of file CaloGPUTimed.h.

77  {
79  record_times_helper(index + 1, std::forward<Args>(args)...);
80  }

◆ record_times_helper() [3/3]

void CaloGPUTimed::record_times_helper ( size_t  ) const
inlineprivateinherited

Definition at line 64 of file CaloGPUTimed.h.

65  {
66  //Do nothing
67  }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/2]

std::vector<size_t> m_times CaloGPUTimed::ATLAS_THREAD_SAFE
mutableprotectedinherited

Vector to hold execution times to be recorded if necessary.

Definition at line 35 of file CaloGPUTimed.h.

◆ ATLAS_THREAD_SAFE [2/2]

std::vector<size_t> m_eventNumbers CaloGPUTimed::ATLAS_THREAD_SAFE
mutableprotectedinherited

Vector to hold the event numbers to be recorded if necessary.

Definition at line 40 of file CaloGPUTimed.h.

◆ m_caloMgrKey

SG::ReadCondHandleKey<CaloDetDescrManager> BasicConstantGPUDataExporter::m_caloMgrKey
private
Initial value:
{this, "CaloDetDescrManager", "CaloDetDescrManager",
"SG Key for CaloDetDescrManager in the Condition Store"}

Key for the CaloDetDescrManager in the Condition Store.

Definition at line 62 of file BasicConstantGPUDataExporter.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_hasBeenInitialized

bool BasicConstantGPUDataExporter::m_hasBeenInitialized
private

Definition at line 66 of file BasicConstantGPUDataExporter.h.

◆ m_keepCPUData

Gaudi::Property<bool> BasicConstantGPUDataExporter::m_keepCPUData {this, "KeepCPUData", true, "Keep CPU version of GPU data format"}
private

If true, do not delete the CPU version of the GPU-friendly data representation.

Defaults to false.

Definition at line 52 of file BasicConstantGPUDataExporter.h.

◆ m_measureTimes

Gaudi::Property<bool> CaloGPUTimed::m_measureTimes
protectedinherited

If true, times are recorded to the file given by m_timeFileName.

Defaults to false.

Definition at line 46 of file CaloGPUTimed.h.

◆ m_noiseCDOKey

SG::ReadCondHandleKey<CaloNoise> BasicConstantGPUDataExporter::m_noiseCDOKey {this, "CaloNoiseKey", "totalNoise", "SG Key of CaloNoise data object"}
private

Key of the CaloNoise Conditions data object.

Typical values are '"electronicNoise', 'pileupNoise', or '"totalNoise' (default)

Definition at line 57 of file BasicConstantGPUDataExporter.h.

◆ m_timeFileName

Gaudi::Property<std::string> CaloGPUTimed::m_timeFileName
protectedinherited

File to which times should be saved.

Definition at line 50 of file CaloGPUTimed.h.

◆ m_timeMutex

std::mutex CaloGPUTimed::m_timeMutex
mutableprotectedinherited

Mutex that is locked when recording times.

Definition at line 32 of file CaloGPUTimed.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
CaloDetDescrElement::deta
float deta() const
cell deta
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:356
LArNeighbours::neighbourOption
neighbourOption
Definition: LArNeighbours.h:12
CaloCell_Base_ID::LARFCAL
@ LARFCAL
Definition: CaloCell_Base_ID.h:46
LArNeighbours::corners3D
@ corners3D
Definition: LArNeighbours.h:25
header
Definition: hcg.cxx:526
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CaloDetDescrElement::y
float y() const
cell y
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:365
CaloCondBlobFlt
Class for storing a number of floats (Flt) and functions on those.
Definition: CaloCondBlobFlt.h:29
BasicConstantGPUDataExporter::m_noiseCDOKey
SG::ReadCondHandleKey< CaloNoise > m_noiseCDOKey
Key of the CaloNoise Conditions data object.
Definition: BasicConstantGPUDataExporter.h:57
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
LArNeighbours::corners2D
@ corners2D
Definition: LArNeighbours.h:17
index
Definition: index.py:1
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::indices
std::pair< long int, long int > indices
Definition: AlSymMatBase.h:24
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
CaloDetDescrManager_Base::get_element
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
Definition: CaloDetDescrManager.cxx:159
CaloDetDescrElement::dr
float dr() const
cell dr
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:360
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
CaloNoise::getNoiseType
NOISETYPE getNoiseType() const
Definition: CaloNoise.h:87
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
CaloGPUTimed::m_timeFileName
Gaudi::Property< std::string > m_timeFileName
File to which times should be saved.
Definition: CaloGPUTimed.h:50
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
athena.value
value
Definition: athena.py:122
CaloCell_Base_ID::LARHEC
@ LARHEC
Definition: CaloCell_Base_ID.h:46
CaloGPUTimed::record_times_helper
void record_times_helper(size_t) const
Definition: CaloGPUTimed.h:64
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
CaloRecGPU::NumSamplings
constexpr int NumSamplings
Definition: BaseDefinitions.h:44
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
CaloDetDescrElement::getSubCalo
CaloCell_ID::SUBCALO getSubCalo() const
cell subcalo
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:433
CaloDetDescrElement::dz
float dz() const
cell dz
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:379
BasicConstantGPUDataExporter::m_hasBeenInitialized
bool m_hasBeenInitialized
Definition: BasicConstantGPUDataExporter.h:66
CaloRecGPU::TileCellAfterEnd
constexpr int TileCellAfterEnd
Definition: BaseDefinitions.h:19
python.handimod.now
now
Definition: handimod.py:675
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArNeighbours::all3DwithCorners
@ all3DwithCorners
Definition: LArNeighbours.h:26
CaloGPUTimed::print_times
void print_times(const std::string &header, const size_t time_size) const
Definition: CaloGPUTimed.h:138
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloCell_Base_ID::TILE
@ TILE
Definition: CaloCell_Base_ID.h:46
CaloRecGPU::NCaloCells
constexpr int NCaloCells
Definition: BaseDefinitions.h:13
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
BasicConstantGPUDataExporter::m_keepCPUData
Gaudi::Property< bool > m_keepCPUData
If true, do not delete the CPU version of the GPU-friendly data representation.
Definition: BasicConstantGPUDataExporter.h:52
CaloRecGPU::NMaxNeighbours
constexpr int NMaxNeighbours
Definition: BaseDefinitions.h:12
BasicConstantGPUDataExporter::m_caloMgrKey
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
Key for the CaloDetDescrManager in the Condition Store.
Definition: BasicConstantGPUDataExporter.h:62
LArNeighbours::super3D
@ super3D
Definition: LArNeighbours.h:29
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
min
#define min(a, b)
Definition: cfImp.cxx:40
CaloRecGPU::OtherCellInfo
Definition: ConstantInfoDefinitions.h:125
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
CaloNoise
Definition: CaloNoise.h:16
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
CaloDetDescrElement::volume
float volume() const
cell volume
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:381
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
CaloGPUTimed::m_timeMutex
std::mutex m_timeMutex
Mutex that is locked when recording times.
Definition: CaloGPUTimed.h:32
CaloGPUTimed::CaloGPUTimed
CaloGPUTimed(T *ptr)
Definition: CaloGPUTimed.h:55
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
CaloRecGPU::NumGainStates
constexpr int NumGainStates
Definition: BaseDefinitions.h:40
CaloDetDescrElement::x
float x() const
cell x
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:363
CaloNoise::tileStorage
boost::multi_array< float, 2 > & tileStorage()
Definition: CaloNoise.h:72
CaloRecGPU::NumNeighOptions
constexpr int NumNeighOptions
Definition: BaseDefinitions.h:47
CaloDetDescrElement::dphi
float dphi() const
cell dphi
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:358
CaloRecGPU::CellNoiseProperties
Definition: ConstantInfoDefinitions.h:376
DeMoScan.index
string index
Definition: DeMoScan.py:362
a
TList * a
Definition: liststreamerinfos.cxx:10
h
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:473
CaloDetDescrElement::dx
float dx() const
cell dx
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:375
CaloGPUTimed::record_times
void record_times(const size_t event_num, const std::vector< size_t > &times) const
Definition: CaloGPUTimed.h:84
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CaloNoise::larStorage
boost::multi_array< float, 2 > & larStorage()
Non-const accessor to underlying storage for filling:
Definition: CaloNoise.h:71
CaloGPUTimed::m_measureTimes
Gaudi::Property< bool > m_measureTimes
If true, times are recorded to the file given by m_timeFileName.
Definition: CaloGPUTimed.h:46
CaloDetDescrElement::z
float z() const
cell z
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:367
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CaloNoise::getTileBlob
const CaloCondBlobFlt * getTileBlob() const
Definition: CaloNoise.h:83
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
CaloDetDescrManager::getCaloCell_ID
const CaloCell_ID * getCaloCell_ID() const
get calo cell ID helper
Definition: CaloDetDescrManager.cxx:1590
calibdata.cd
cd
Definition: calibdata.py:51
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
CaloDetDescrElement::eta
float eta() const
cell eta
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:344
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
CaloDetDescrElement::phi
float phi() const
cell phi
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:346
CaloDetDescrElement::r
float r() const
cell r
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:348
CaloCell_Base_ID::LAREM
@ LAREM
Definition: CaloCell_Base_ID.h:46
CaloDetDescrElement::dy
float dy() const
cell dy
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:377
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
CaloRecGPU::TileCellStart
constexpr int TileCellStart
Definition: BaseDefinitions.h:17
LArNeighbours::all2D
@ all2D
Definition: LArNeighbours.h:18
python.CaloScaleNoiseConfig.args
args
Definition: CaloScaleNoiseConfig.py:80
plot_times.times
def times(fn)
Definition: plot_times.py:11
CaloCondBlobAlgs_fillNoiseFromASCII.blob
blob
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:96
fitman.k
k
Definition: fitman.py:528
CaloNoise::getLumi
float getLumi() const
Definition: CaloNoise.h:85