13#ifndef CALOLUMICONDITIONS_CALOBCIDCOEFFS_H
14#define CALOLUMICONDITIONS_CALOBCIDCOEFFS_H
109 void calc (
const float* lumi,
165 float&
coeff (
size_t icoeff,
size_t icell)
181 void fillCoeffs (
const std::vector<HWIdentifier>& hwids,
198 std::vector<float>& cell_coeffs)
const;
205#include "AthenaKernel/CondCont.h"
#define CONDCONT_DEF(...)
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
std::vector with extra alignment.
Luminosity-dependent pileup offset correction conditions object.
float & coeff(size_t icoeff, size_t icell)
Indexing into m_coeffs.
unsigned int m_nsamples
Number of samples per cell (length of OFC vector).
CxxUtils::vec_aligned_vector< float > m_coeffs
Storage for coeffients, m_ncoeff per cell, laid out in groups of CHUNKSIZE like this: icoeff0,...
size_t nsamples_coeff() const
Return the number of samples per cell used in the calculation (after padding).
unsigned int m_ncell
Number of cells.
size_t nshapes() const
Return the number of shape points per cell.
unsigned int m_npad
Number of padding cells we need to add to get a multiple of CHUNKSIZE.
CaloBCIDCoeffs(const std::vector< HWIdentifier > &hwids, const LArOnlineID_Base &online_id, const ILArOFC &ofcs, const ILArShape &shapes, const ILArMinBiasAverage &minbias)
Constructor.
void calc(const float *lumi, CxxUtils::vec_aligned_vector< float > &out) const
Perform the calculation for a given set of per-bunch luminosities.
static constexpr size_t CHUNKSIZE
Number of cells that we calculate at one time.
unsigned int m_nsamples_coeff
Number of samples per cell used in the calculation, after padding.
unsigned int m_nshapes
Number of shape points per cell.
unsigned int m_ncoeff
Number of coefficients per cell (length of dot product).
void fillCoeffs(const std::vector< HWIdentifier > &hwids, const LArOnlineID_Base &online_id, const ILArOFC &ofcs, const ILArShape &shapes, const ILArMinBiasAverage &minbias)
Initialize all coefficients.
void findCellCoeffs(const float *ofcs, const float *shapes, bool ishec, std::vector< float > &cell_coeffs) const
Find coefficients for one cell.
Helper for the Liquid Argon Calorimeter cell identifiers.
aligned_vector< T, 64 > vec_aligned_vector
A std::vector with alignment sufficient for any vector instructions on this platform.