37 return std::make_unique<TPCPadGainCalib>();
42 return std::make_unique<TPCPadGainCalib>(in);
47 return std::make_unique<o2::tpc::CalibdEdxContainer>();
55 o2::gpu::GPUReconstructionConvert::RunZSEncoder(in, outBuffer, outSizes, raw,
ir,
param,
version, verify, threshold,
padding, digitsFilter);
62 o2::gpu::GPUReconstructionConvert::RunZSEncoder(in, outBuffer, outSizes, raw,
ir,
param,
version, verify, config.
configReconstruction.tpc.zsThreshold,
padding, digitsFilter);
73 if (mDecoders.size() < hdr->
version + 1) {
74 mDecoders.resize(hdr->
version + 1);
76 if (mDecoders[hdr->
version] ==
nullptr) {
79 mDecoders[hdr->
version](outputBuffer, page, tfFirstOrbit, triggerBC);
82std::unique_ptr<GPUParam>
GPUO2InterfaceUtils::getFullParam(
float solenoidBz, uint32_t nHbfPerTf, std::unique_ptr<GPUO2InterfaceConfiguration>* pConfiguration, std::unique_ptr<GPUSettingsO2>* pO2Settings,
bool* autoMaxTimeBin)
84 std::unique_ptr<GPUParam>
retVal = std::make_unique<GPUParam>();
85 std::unique_ptr<GPUO2InterfaceConfiguration> tmpConfig;
86 std::unique_ptr<GPUSettingsO2> tmpSettingsO2;
87 if (!pConfiguration) {
88 tmpConfig = std::make_unique<GPUO2InterfaceConfiguration>();
89 pConfiguration = &tmpConfig;
90 (*pConfiguration)->configGRP.grpContinuousMaxTimeBin = -1;
91 }
else if (!*pConfiguration) {
92 *pConfiguration = std::make_unique<GPUO2InterfaceConfiguration>();
93 (*pConfiguration)->configGRP.grpContinuousMaxTimeBin = -1;
95 (*pConfiguration)->configGRP.solenoidBzNominalGPU = solenoidBz;
96 if (pO2Settings && *pO2Settings) {
97 **pO2Settings = (*pConfiguration)->ReadConfigurableParam();
100 pO2Settings = &tmpSettingsO2;
102 *pO2Settings = std::make_unique<GPUSettingsO2>((*pConfiguration)->ReadConfigurableParam());
104 if (nHbfPerTf == 0) {
105 nHbfPerTf = (*pO2Settings)->overrideNHbfPerTF ? (*pO2Settings)->overrideNHbfPerTF : 256;
107 if (autoMaxTimeBin) {
108 *autoMaxTimeBin = (*pConfiguration)->configGRP.grpContinuousMaxTimeBin == -1;
110 if ((*pConfiguration)->configGRP.grpContinuousMaxTimeBin == -1) {
113 retVal->SetDefaults(&(*pConfiguration)->configGRP, &(*pConfiguration)->configReconstruction, &(*pConfiguration)->configProcessing,
nullptr);
117std::shared_ptr<GPUParam>
GPUO2InterfaceUtils::getFullParamShared(
float solenoidBz, uint32_t nHbfPerTf, std::unique_ptr<GPUO2InterfaceConfiguration>* pConfiguration, std::unique_ptr<GPUSettingsO2>* pO2Settings,
bool* autoMaxTimeBin)
119 return std::move(
getFullParam(solenoidBz, nHbfPerTf, pConfiguration, pO2Settings, autoMaxTimeBin));
125 if (occupancyMapSize != -1 && nHbfPerTf && (
size_t)occupancyMapSize != expectedOccMapSize) {
126 throw std::runtime_error(
"Received occupancy map of wrong size, most likely --configKeyValues or HBperTF of map creator and map consumer are different");
128 if (occupancymap && occupancyMapSize >
sizeof(*occupancymap) && occupancymap[1] != (
param->rec.tpc.occupancyMapTimeBins * 0x10000 +
param->rec.tpc.occupancyMapTimeBinsAverage)) {
129 throw std::runtime_error(
"Occupancy map has invalid paramters occupancyMapTimeBins and occupancyMapTimeBinsAverage");
132 param->occupancyTotal = *occupancymap;
133 if (
param->rec.tpc.occupancyMapTimeBins) {
134 param->occupancyMap = occupancymap + 2;
Definition of container class for dE/dx corrections.
Definitions of TPC Zero Suppression Data Headers.
static size_t fillOccupancyMapGetSize(uint32_t nHbfPerTf, const GPUParam *param=nullptr)
void DecodePage(std::vector< o2::tpc::Digit > &outputBuffer, const void *page, uint32_t tfFirstOrbit, const GPUParam *param, uint32_t triggerBC=0)
static std::unique_ptr< TPCPadGainCalib > getPadGainCalibDefault()
static void paramUseExternalOccupancyMap(GPUParam *param, uint32_t nHbfPerTf, const uint32_t *occupancymap, int32_t occupancyMapSize)
static std::unique_ptr< TPCPadGainCalib > getPadGainCalib(const o2::tpc::CalDet< float > &in)
static uint32_t getTpcMaxTimeBinFromNHbf(uint32_t nHbf)
static std::unique_ptr< GPUParam > getFullParam(float solenoidBz, uint32_t nHbfPerTf=0, std::unique_ptr< GPUO2InterfaceConfiguration > *pConfiguration=nullptr, std::unique_ptr< GPUSettingsO2 > *pO2Settings=nullptr, bool *autoMaxTimeBin=nullptr)
static std::unique_ptr< o2::tpc::CalibdEdxContainer > getCalibdEdxContainerDefault()
static std::shared_ptr< GPUParam > getFullParamShared(float solenoidBz, uint32_t nHbfPerTf=0, std::unique_ptr< GPUO2InterfaceConfiguration > *pConfiguration=nullptr, std::unique_ptr< GPUSettingsO2 > *pO2Settings=nullptr, bool *autoMaxTimeBin=nullptr)
static void RunZSEncoder(const S &in, std::unique_ptr< uint64_t[]> *outBuffer, uint32_t *outSizes, o2::raw::RawFileWriter *raw, const o2::InteractionRecord *ir, const GPUParam ¶m, int32_t version, bool verify, float threshold=0.f, bool padding=false, std::function< void(std::vector< o2::tpc::Digit > &)> digitsFilter=nullptr)
static std::function< void(std::vector< o2::tpc::Digit > &, const void *, uint32_t, uint32_t)> GetDecoder(int32_t version, const GPUParam *param)
static constexpr int MAXSECTOR
std::array< gsl::span< const o2::tpc::Digit >, Sector::MAXSECTOR > DigitArray
constexpr int LHCMaxBunches
constexpr int LHCBCPERTIMEBIN
GPUSettingsProcessing configProcessing
GPUSettingsRec configReconstruction
void SetDefaults(float solenoidBz)
o2::InteractionRecord ir(0, 0)