diff --git a/CondFormats/DataRecord/interface/EcalMultifitConditionsRcd.h b/CondFormats/DataRecord/interface/EcalMultifitConditionsRcd.h new file mode 100644 index 0000000000000..b40d5573c1880 --- /dev/null +++ b/CondFormats/DataRecord/interface/EcalMultifitConditionsRcd.h @@ -0,0 +1,27 @@ +#ifndef CondFormats_DataRecord_EcalMultifitConditionsRcd_h +#define CondFormats_DataRecord_EcalMultifitConditionsRcd_h + +#include "FWCore/Framework/interface/DependentRecordImplementation.h" + +#include "CondFormats/DataRecord/interface/EcalGainRatiosRcd.h" +#include "CondFormats/DataRecord/interface/EcalPedestalsRcd.h" +#include "CondFormats/DataRecord/interface/EcalPulseCovariancesRcd.h" +#include "CondFormats/DataRecord/interface/EcalPulseShapesRcd.h" +#include "CondFormats/DataRecord/interface/EcalSampleMaskRcd.h" +#include "CondFormats/DataRecord/interface/EcalSamplesCorrelationRcd.h" +#include "CondFormats/DataRecord/interface/EcalTimeBiasCorrectionsRcd.h" +#include "CondFormats/DataRecord/interface/EcalTimeCalibConstantsRcd.h" +#include "CondFormats/DataRecord/interface/EcalTimeOffsetConstantRcd.h" + +class EcalMultifitConditionsRcd + : public edm::eventsetup::DependentRecordImplementation> {}; +#endif diff --git a/CondFormats/DataRecord/interface/EcalMultifitParametersRcd.h b/CondFormats/DataRecord/interface/EcalMultifitParametersRcd.h new file mode 100644 index 0000000000000..9d1a843a5cfe9 --- /dev/null +++ b/CondFormats/DataRecord/interface/EcalMultifitParametersRcd.h @@ -0,0 +1,8 @@ +#ifndef CondFormats_DataRecord_EcalMultifitParametersRcd_h +#define CondFormats_DataRecord_EcalMultifitParametersRcd_h + +#include "FWCore/Framework/interface/EventSetupRecordImplementation.h" + +class EcalMultifitParametersRcd : public edm::eventsetup::EventSetupRecordImplementation {}; + +#endif diff --git a/CondFormats/DataRecord/src/EcalMultifitConditionsRcd.cc b/CondFormats/DataRecord/src/EcalMultifitConditionsRcd.cc new file mode 100644 index 0000000000000..540b6dd0143fb --- /dev/null +++ b/CondFormats/DataRecord/src/EcalMultifitConditionsRcd.cc @@ -0,0 +1,4 @@ +#include "CondFormats/DataRecord/interface/EcalMultifitConditionsRcd.h" +#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" + +EVENTSETUP_RECORD_REG(EcalMultifitConditionsRcd); diff --git a/CondFormats/DataRecord/src/EcalMultifitParametersRcd.cc b/CondFormats/DataRecord/src/EcalMultifitParametersRcd.cc new file mode 100644 index 0000000000000..2a3ceabc08734 --- /dev/null +++ b/CondFormats/DataRecord/src/EcalMultifitParametersRcd.cc @@ -0,0 +1,4 @@ +#include "CondFormats/DataRecord/interface/EcalMultifitParametersRcd.h" +#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" + +EVENTSETUP_RECORD_REG(EcalMultifitParametersRcd); diff --git a/CondFormats/EcalObjects/BuildFile.xml b/CondFormats/EcalObjects/BuildFile.xml index 11a0a25bec707..3403f3817697c 100644 --- a/CondFormats/EcalObjects/BuildFile.xml +++ b/CondFormats/EcalObjects/BuildFile.xml @@ -3,6 +3,8 @@ + + @@ -10,6 +12,8 @@ + + diff --git a/CondFormats/EcalObjects/interface/EcalElectronicsMappingHost.h b/CondFormats/EcalObjects/interface/EcalElectronicsMappingHost.h new file mode 100644 index 0000000000000..3ce3f34be9c2c --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalElectronicsMappingHost.h @@ -0,0 +1,11 @@ +#ifndef CondFormats_EcalObjects_interface_EcalElectronicsMappingHost_h +#define CondFormats_EcalObjects_interface_EcalElectronicsMappingHost_h + +#include "CondFormats/EcalObjects/interface/EcalElectronicsMappingSoA.h" +#include "DataFormats/Portable/interface/PortableHostCollection.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" + +using EcalElectronicsMappingHost = PortableHostCollection; + +#endif diff --git a/CondFormats/EcalObjects/interface/EcalElectronicsMappingSoA.h b/CondFormats/EcalObjects/interface/EcalElectronicsMappingSoA.h new file mode 100644 index 0000000000000..1101b777f1f4f --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalElectronicsMappingSoA.h @@ -0,0 +1,12 @@ +#ifndef CondFormats_EcalObjects_EcalElectronicsMappingSoA_h +#define CondFormats_EcalObjects_EcalElectronicsMappingSoA_h + +#include "DataFormats/SoATemplate/interface/SoACommon.h" +#include "DataFormats/SoATemplate/interface/SoALayout.h" +#include "DataFormats/SoATemplate/interface/SoAView.h" + +GENERATE_SOA_LAYOUT(EcalElectronicsMappingSoALayout, SOA_COLUMN(uint32_t, rawid)) + +using EcalElectronicsMappingSoA = EcalElectronicsMappingSoALayout<>; + +#endif diff --git a/CondFormats/EcalObjects/interface/EcalMultifitConditionsHost.h b/CondFormats/EcalObjects/interface/EcalMultifitConditionsHost.h new file mode 100644 index 0000000000000..4509f87725e1d --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalMultifitConditionsHost.h @@ -0,0 +1,11 @@ +#ifndef CondFormats_EcalObjects_interface_EcalMultifitConditionsHost_h +#define CondFormats_EcalObjects_interface_EcalMultifitConditionsHost_h + +#include "CondFormats/EcalObjects/interface/EcalMultifitConditionsSoA.h" +#include "DataFormats/Portable/interface/PortableHostCollection.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" + +using EcalMultifitConditionsHost = PortableHostCollection; + +#endif diff --git a/CondFormats/EcalObjects/interface/EcalMultifitConditionsSoA.h b/CondFormats/EcalObjects/interface/EcalMultifitConditionsSoA.h new file mode 100644 index 0000000000000..09a01ecab9924 --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalMultifitConditionsSoA.h @@ -0,0 +1,60 @@ +#ifndef CondFormats_EcalObjects_EcalMultifitConditionsSoA_h +#define CondFormats_EcalObjects_EcalMultifitConditionsSoA_h + +#include +#include +#include "DataFormats/SoATemplate/interface/SoACommon.h" +#include "DataFormats/SoATemplate/interface/SoALayout.h" +#include "DataFormats/SoATemplate/interface/SoAView.h" +#include "DataFormats/EcalDigi/interface/EcalConstants.h" +#include "CondFormats/EcalObjects/interface/EcalPulseShapes.h" + +using PulseShapeArray = std::array; +using SampleCorrelationArray = std::array; + +using CovarianceMatrix = Eigen::Matrix; + +constexpr size_t kMaxTimeBiasCorrectionBinsEB = 71; +constexpr size_t kMaxTimeBiasCorrectionBinsEE = 58; +using TimeBiasCorrArrayEB = std::array; +using TimeBiasCorrArrayEE = std::array; + +GENERATE_SOA_LAYOUT(EcalMultifitConditionsSoALayout, + SOA_COLUMN(uint32_t, rawid), + SOA_COLUMN(float, pedestals_mean_x12), + SOA_COLUMN(float, pedestals_mean_x6), + SOA_COLUMN(float, pedestals_mean_x1), + SOA_COLUMN(float, pedestals_rms_x12), + SOA_COLUMN(float, pedestals_rms_x6), + SOA_COLUMN(float, pedestals_rms_x1), + SOA_COLUMN(PulseShapeArray, pulseShapes), + // NxN N=templatesamples for each xtal + SOA_EIGEN_COLUMN(CovarianceMatrix, pulseCovariance), + SOA_COLUMN(float, gain12Over6), + SOA_COLUMN(float, gain6Over1), + SOA_COLUMN(float, timeCalibConstants), + // timeBiasCorrections (fixed since 2011) + SOA_SCALAR(TimeBiasCorrArrayEB, timeBiasCorrections_amplitude_EB), + SOA_SCALAR(TimeBiasCorrArrayEB, timeBiasCorrections_shift_EB), + SOA_SCALAR(TimeBiasCorrArrayEE, timeBiasCorrections_amplitude_EE), + SOA_SCALAR(TimeBiasCorrArrayEE, timeBiasCorrections_shift_EE), + SOA_SCALAR(size_t, timeBiasCorrectionSizeEB), + SOA_SCALAR(size_t, timeBiasCorrectionSizeEE), + // Sample correlation scalar: array of 10 values for each gain in EB and EE + SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EB_G12), + SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EB_G6), + SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EB_G1), + SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EE_G12), + SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EE_G6), + SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EE_G1), + // Samples Masks + SOA_SCALAR(unsigned int, sampleMask_EB), + SOA_SCALAR(unsigned int, sampleMask_EE), + SOA_SCALAR(float, timeOffset_EB), + SOA_SCALAR(float, timeOffset_EE), + // offset for hashed ID access to EE items of columns + SOA_SCALAR(uint32_t, offsetEE)) + +using EcalMultifitConditionsSoA = EcalMultifitConditionsSoALayout<>; + +#endif diff --git a/CondFormats/EcalObjects/interface/EcalMultifitParametersHost.h b/CondFormats/EcalObjects/interface/EcalMultifitParametersHost.h new file mode 100644 index 0000000000000..f2cddfc64dc17 --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalMultifitParametersHost.h @@ -0,0 +1,11 @@ +#ifndef CondFormats_EcalObjects_interface_EcalMultifitParametersHost_h +#define CondFormats_EcalObjects_interface_EcalMultifitParametersHost_h + +#include "CondFormats/EcalObjects/interface/EcalMultifitParametersSoA.h" +#include "DataFormats/Portable/interface/PortableHostCollection.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" + +using EcalMultifitParametersHost = PortableHostCollection; + +#endif diff --git a/CondFormats/EcalObjects/interface/EcalMultifitParametersSoA.h b/CondFormats/EcalObjects/interface/EcalMultifitParametersSoA.h new file mode 100644 index 0000000000000..04237db356209 --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalMultifitParametersSoA.h @@ -0,0 +1,22 @@ +#ifndef CondFormats_EcalObjects_EcalMultifitParametersSoA_h +#define CondFormats_EcalObjects_EcalMultifitParametersSoA_h + +#include +#include "DataFormats/SoATemplate/interface/SoACommon.h" +#include "DataFormats/SoATemplate/interface/SoALayout.h" +#include "DataFormats/SoATemplate/interface/SoAView.h" + +constexpr size_t kNTimeFitParams = 8; +constexpr size_t kNAmplitudeFitParams = 2; +using TimeFitParamsArray = std::array; +using AmplitudeFitParamsArray = std::array; + +GENERATE_SOA_LAYOUT(EcalMultifitParametersSoALayout, + SOA_SCALAR(TimeFitParamsArray, timeFitParamsEB), + SOA_SCALAR(TimeFitParamsArray, timeFitParamsEE), + SOA_SCALAR(AmplitudeFitParamsArray, amplitudeFitParamsEB), + SOA_SCALAR(AmplitudeFitParamsArray, amplitudeFitParamsEE)) + +using EcalMultifitParametersSoA = EcalMultifitParametersSoALayout<>; + +#endif diff --git a/CondFormats/EcalObjects/interface/alpaka/EcalElectronicsMappingDevice.h b/CondFormats/EcalObjects/interface/alpaka/EcalElectronicsMappingDevice.h new file mode 100644 index 0000000000000..7a1a36c33ec00 --- /dev/null +++ b/CondFormats/EcalObjects/interface/alpaka/EcalElectronicsMappingDevice.h @@ -0,0 +1,17 @@ +#ifndef CondFormats_EcalObjects_interface_alpaka_EcalElectronicsMappingDevice_h +#define CondFormats_EcalObjects_interface_alpaka_EcalElectronicsMappingDevice_h + +#include "CondFormats/EcalObjects/interface/EcalElectronicsMappingHost.h" +#include "CondFormats/EcalObjects/interface/EcalElectronicsMappingSoA.h" +#include "DataFormats/Portable/interface/alpaka/PortableCollection.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + using ::EcalElectronicsMappingHost; + using EcalElectronicsMappingDevice = PortableCollection; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#endif diff --git a/CondFormats/EcalObjects/interface/alpaka/EcalMultifitConditionsDevice.h b/CondFormats/EcalObjects/interface/alpaka/EcalMultifitConditionsDevice.h new file mode 100644 index 0000000000000..44edd6731cd32 --- /dev/null +++ b/CondFormats/EcalObjects/interface/alpaka/EcalMultifitConditionsDevice.h @@ -0,0 +1,17 @@ +#ifndef CondFormats_EcalObjects_interface_alpaka_EcalMultifitConditionsDevice_h +#define CondFormats_EcalObjects_interface_alpaka_EcalMultifitConditionsDevice_h + +#include "CondFormats/EcalObjects/interface/EcalMultifitConditionsHost.h" +#include "CondFormats/EcalObjects/interface/EcalMultifitConditionsSoA.h" +#include "DataFormats/Portable/interface/alpaka/PortableCollection.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + using ::EcalMultifitConditionsHost; + using EcalMultifitConditionsDevice = PortableCollection; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#endif diff --git a/CondFormats/EcalObjects/interface/alpaka/EcalMultifitParametersDevice.h b/CondFormats/EcalObjects/interface/alpaka/EcalMultifitParametersDevice.h new file mode 100644 index 0000000000000..491f33f068714 --- /dev/null +++ b/CondFormats/EcalObjects/interface/alpaka/EcalMultifitParametersDevice.h @@ -0,0 +1,17 @@ +#ifndef CondFormats_EcalObjects_interface_alpaka_EcalMultifitParametersDevice_h +#define CondFormats_EcalObjects_interface_alpaka_EcalMultifitParametersDevice_h + +#include "CondFormats/EcalObjects/interface/EcalMultifitParametersHost.h" +#include "CondFormats/EcalObjects/interface/EcalMultifitParametersSoA.h" +#include "DataFormats/Portable/interface/alpaka/PortableCollection.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" +#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + using ::EcalMultifitParametersHost; + using EcalMultifitParametersDevice = PortableCollection; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#endif diff --git a/CondFormats/EcalObjects/src/ES_EcalElectronicsMappingHost.cc b/CondFormats/EcalObjects/src/ES_EcalElectronicsMappingHost.cc new file mode 100644 index 0000000000000..a18dbc48050fd --- /dev/null +++ b/CondFormats/EcalObjects/src/ES_EcalElectronicsMappingHost.cc @@ -0,0 +1,4 @@ +#include "CondFormats/EcalObjects/interface/EcalElectronicsMappingHost.h" +#include "FWCore/Utilities/interface/typelookup.h" + +TYPELOOKUP_DATA_REG(EcalElectronicsMappingHost); diff --git a/CondFormats/EcalObjects/src/ES_EcalMultifitConditionsHost.cc b/CondFormats/EcalObjects/src/ES_EcalMultifitConditionsHost.cc new file mode 100644 index 0000000000000..b1fa8d8d546ba --- /dev/null +++ b/CondFormats/EcalObjects/src/ES_EcalMultifitConditionsHost.cc @@ -0,0 +1,4 @@ +#include "CondFormats/EcalObjects/interface/EcalMultifitConditionsHost.h" +#include "FWCore/Utilities/interface/typelookup.h" + +TYPELOOKUP_DATA_REG(EcalMultifitConditionsHost); diff --git a/CondFormats/EcalObjects/src/ES_EcalMultifitParametersHost.cc b/CondFormats/EcalObjects/src/ES_EcalMultifitParametersHost.cc new file mode 100644 index 0000000000000..313b26e2bb22a --- /dev/null +++ b/CondFormats/EcalObjects/src/ES_EcalMultifitParametersHost.cc @@ -0,0 +1,4 @@ +#include "CondFormats/EcalObjects/interface/EcalMultifitParametersHost.h" +#include "FWCore/Utilities/interface/typelookup.h" + +TYPELOOKUP_DATA_REG(EcalMultifitParametersHost); diff --git a/CondFormats/EcalObjects/src/alpaka/ES_EcalElectronicsMappingDevice.cc b/CondFormats/EcalObjects/src/alpaka/ES_EcalElectronicsMappingDevice.cc new file mode 100644 index 0000000000000..df98ef9209e92 --- /dev/null +++ b/CondFormats/EcalObjects/src/alpaka/ES_EcalElectronicsMappingDevice.cc @@ -0,0 +1,4 @@ +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/typelookup.h" + +#include "CondFormats/EcalObjects/interface/alpaka/EcalElectronicsMappingDevice.h" +TYPELOOKUP_ALPAKA_DATA_REG(EcalElectronicsMappingDevice); diff --git a/CondFormats/EcalObjects/src/alpaka/ES_EcalMultifitConditionsDevice.cc b/CondFormats/EcalObjects/src/alpaka/ES_EcalMultifitConditionsDevice.cc new file mode 100644 index 0000000000000..5eb5a2723cd20 --- /dev/null +++ b/CondFormats/EcalObjects/src/alpaka/ES_EcalMultifitConditionsDevice.cc @@ -0,0 +1,4 @@ +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/typelookup.h" + +#include "CondFormats/EcalObjects/interface/alpaka/EcalMultifitConditionsDevice.h" +TYPELOOKUP_ALPAKA_DATA_REG(EcalMultifitConditionsDevice); diff --git a/CondFormats/EcalObjects/src/alpaka/ES_EcalMultifitParametersDevice.cc b/CondFormats/EcalObjects/src/alpaka/ES_EcalMultifitParametersDevice.cc new file mode 100644 index 0000000000000..582b78c84df3f --- /dev/null +++ b/CondFormats/EcalObjects/src/alpaka/ES_EcalMultifitParametersDevice.cc @@ -0,0 +1,4 @@ +#include "HeterogeneousCore/AlpakaCore/interface/alpaka/typelookup.h" + +#include "CondFormats/EcalObjects/interface/alpaka/EcalMultifitParametersDevice.h" +TYPELOOKUP_ALPAKA_DATA_REG(EcalMultifitParametersDevice); diff --git a/DataFormats/EcalDigi/BuildFile.xml b/DataFormats/EcalDigi/BuildFile.xml index 7e3d70b84fbdd..adea712a1c155 100644 --- a/DataFormats/EcalDigi/BuildFile.xml +++ b/DataFormats/EcalDigi/BuildFile.xml @@ -1,8 +1,12 @@ - + + + + + diff --git a/DataFormats/EcalDigi/interface/EcalConstants.h b/DataFormats/EcalDigi/interface/EcalConstants.h index 3b500c1efb614..4fdad3b99a5f9 100644 --- a/DataFormats/EcalDigi/interface/EcalConstants.h +++ b/DataFormats/EcalDigi/interface/EcalConstants.h @@ -30,7 +30,7 @@ class ecalPh2 { public: static constexpr double Samp_Period = 6.25; // ADC sampling period in ns static constexpr unsigned int NGAINS = ecalph2::NGAINS; // Number of CATIA gains - static constexpr const float *gains = ecalph2::gains; // CATIA gain values + static constexpr const float* gains = ecalph2::gains; // CATIA gain values static constexpr unsigned int gainId1 = 1; // Position of gain 1 in gains array static constexpr unsigned int gainId10 = 0; // Position of gain 10 in gains array static constexpr unsigned int sampleSize = 16; // Number of samples per event @@ -49,7 +49,7 @@ class ecalPh1 { public: static constexpr double Samp_Period = 25.; // ADC sampling period in ns static constexpr unsigned int NGAINS = ecalph1::NGAINS; // Number of MGPA gains including a zero gain - static constexpr const float *gains = ecalph1::gains; // MGPA gain values including a zero gain + static constexpr const float* gains = ecalph1::gains; // MGPA gain values including a zero gain static constexpr unsigned int sampleSize = 10; // Number of samples per event static constexpr unsigned int NBITS = 12; // Number of available bits static constexpr unsigned int kNOffsets = 2000; // Number of time offsets generated for APD pulse shape diff --git a/DataFormats/EcalDigi/interface/EcalDigiHostCollection.h b/DataFormats/EcalDigi/interface/EcalDigiHostCollection.h new file mode 100644 index 0000000000000..0b2cbaf992f99 --- /dev/null +++ b/DataFormats/EcalDigi/interface/EcalDigiHostCollection.h @@ -0,0 +1,10 @@ +#ifndef DataFormats_EcalDigi_EcalDigiHostCollection_h +#define DataFormats_EcalDigi_EcalDigiHostCollection_h + +#include "DataFormats/Portable/interface/PortableHostCollection.h" +#include "DataFormats/EcalDigi/interface/EcalDigiSoA.h" + +// EcalDigiSoA in host memory +using EcalDigiHostCollection = PortableHostCollection; + +#endif diff --git a/DataFormats/EcalDigi/interface/EcalDigiPhase2HostCollection.h b/DataFormats/EcalDigi/interface/EcalDigiPhase2HostCollection.h new file mode 100644 index 0000000000000..f2b911c06c267 --- /dev/null +++ b/DataFormats/EcalDigi/interface/EcalDigiPhase2HostCollection.h @@ -0,0 +1,10 @@ +#ifndef DataFormats_EcalDigi_EcalDigiPhase2HostCollection_h +#define DataFormats_EcalDigi_EcalDigiPhase2HostCollection_h + +#include "DataFormats/Portable/interface/PortableHostCollection.h" +#include "DataFormats/EcalDigi/interface/EcalDigiPhase2SoA.h" + +// EcalDigiPhase2SoA in host memory +using EcalDigiPhase2HostCollection = PortableHostCollection; + +#endif diff --git a/DataFormats/EcalDigi/interface/EcalDigiPhase2SoA.h b/DataFormats/EcalDigi/interface/EcalDigiPhase2SoA.h new file mode 100644 index 0000000000000..571723def1cc4 --- /dev/null +++ b/DataFormats/EcalDigi/interface/EcalDigiPhase2SoA.h @@ -0,0 +1,19 @@ +#ifndef DataFormats_EcalDigi_EcalDigiPhase2SoA_h +#define DataFormats_EcalDigi_EcalDigiPhase2SoA_h + +#include "DataFormats/Common/interface/StdArray.h" +#include "DataFormats/EcalDigi/interface/EcalConstants.h" +#include "DataFormats/SoATemplate/interface/SoALayout.h" + +// due to a ROOT limitation the std::array needs to be wrapped +// https://github.com/root-project/root/issues/12007 +using EcalDataArrayPhase2 = edm::StdArray; + +GENERATE_SOA_LAYOUT(EcalDigiPhase2SoALayout, + SOA_COLUMN(uint32_t, id), + SOA_COLUMN(EcalDataArrayPhase2, data), + SOA_SCALAR(uint32_t, size)) + +using EcalDigiPhase2SoA = EcalDigiPhase2SoALayout<>; + +#endif diff --git a/DataFormats/EcalDigi/interface/EcalDigiSoA.h b/DataFormats/EcalDigi/interface/EcalDigiSoA.h new file mode 100644 index 0000000000000..4e9209f0421ce --- /dev/null +++ b/DataFormats/EcalDigi/interface/EcalDigiSoA.h @@ -0,0 +1,19 @@ +#ifndef DataFormats_EcalDigi_EcalDigiSoA_h +#define DataFormats_EcalDigi_EcalDigiSoA_h + +#include "DataFormats/Common/interface/StdArray.h" +#include "DataFormats/EcalDigi/interface/EcalConstants.h" +#include "DataFormats/SoATemplate/interface/SoALayout.h" + +// due to a ROOT limitation the std::array needs to be wrapped +// https://github.com/root-project/root/issues/12007 +using EcalDataArray = edm::StdArray; + +GENERATE_SOA_LAYOUT(EcalDigiSoALayout, + SOA_COLUMN(uint32_t, id), + SOA_COLUMN(EcalDataArray, data), + SOA_SCALAR(uint32_t, size)) + +using EcalDigiSoA = EcalDigiSoALayout<>; + +#endif diff --git a/DataFormats/EcalDigi/interface/alpaka/EcalDigiDeviceCollection.h b/DataFormats/EcalDigi/interface/alpaka/EcalDigiDeviceCollection.h new file mode 100644 index 0000000000000..bad555eb8e311 --- /dev/null +++ b/DataFormats/EcalDigi/interface/alpaka/EcalDigiDeviceCollection.h @@ -0,0 +1,15 @@ +#ifndef DataFormats_EcalDigi_interface_alpaka_EcalDigiDeviceCollection_h +#define DataFormats_EcalDigi_interface_alpaka_EcalDigiDeviceCollection_h + +#include "DataFormats/Portable/interface/alpaka/PortableCollection.h" +#include "DataFormats/EcalDigi/interface/EcalDigiSoA.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + // EcalDigiSoA in device global memory + using EcalDigiDeviceCollection = PortableCollection; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#endif diff --git a/DataFormats/EcalDigi/interface/alpaka/EcalDigiPhase2DeviceCollection.h b/DataFormats/EcalDigi/interface/alpaka/EcalDigiPhase2DeviceCollection.h new file mode 100644 index 0000000000000..556eff3c066ff --- /dev/null +++ b/DataFormats/EcalDigi/interface/alpaka/EcalDigiPhase2DeviceCollection.h @@ -0,0 +1,15 @@ +#ifndef DataFormats_EcalDigi_interface_alpaka_EcalDigiPhase2DeviceCollection_h +#define DataFormats_EcalDigi_interface_alpaka_EcalDigiPhase2DeviceCollection_h + +#include "DataFormats/Portable/interface/alpaka/PortableCollection.h" +#include "DataFormats/EcalDigi/interface/EcalDigiPhase2SoA.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + // EcalDigiPhase2SoA in device global memory + using EcalDigiPhase2DeviceCollection = PortableCollection; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#endif diff --git a/DataFormats/EcalDigi/src/alpaka/classes_cuda.h b/DataFormats/EcalDigi/src/alpaka/classes_cuda.h new file mode 100644 index 0000000000000..d79d00c4113d0 --- /dev/null +++ b/DataFormats/EcalDigi/src/alpaka/classes_cuda.h @@ -0,0 +1,6 @@ +#include "DataFormats/Common/interface/DeviceProduct.h" +#include "DataFormats/Common/interface/Wrapper.h" +#include "DataFormats/EcalDigi/interface/EcalDigiSoA.h" +#include "DataFormats/EcalDigi/interface/alpaka/EcalDigiDeviceCollection.h" +#include "DataFormats/EcalDigi/interface/EcalDigiPhase2SoA.h" +#include "DataFormats/EcalDigi/interface/alpaka/EcalDigiPhase2DeviceCollection.h" diff --git a/DataFormats/EcalDigi/src/alpaka/classes_cuda_def.xml b/DataFormats/EcalDigi/src/alpaka/classes_cuda_def.xml new file mode 100644 index 0000000000000..e2f12a052a23f --- /dev/null +++ b/DataFormats/EcalDigi/src/alpaka/classes_cuda_def.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/DataFormats/EcalDigi/src/alpaka/classes_rocm.h b/DataFormats/EcalDigi/src/alpaka/classes_rocm.h new file mode 100644 index 0000000000000..d79d00c4113d0 --- /dev/null +++ b/DataFormats/EcalDigi/src/alpaka/classes_rocm.h @@ -0,0 +1,6 @@ +#include "DataFormats/Common/interface/DeviceProduct.h" +#include "DataFormats/Common/interface/Wrapper.h" +#include "DataFormats/EcalDigi/interface/EcalDigiSoA.h" +#include "DataFormats/EcalDigi/interface/alpaka/EcalDigiDeviceCollection.h" +#include "DataFormats/EcalDigi/interface/EcalDigiPhase2SoA.h" +#include "DataFormats/EcalDigi/interface/alpaka/EcalDigiPhase2DeviceCollection.h" diff --git a/DataFormats/EcalDigi/src/alpaka/classes_rocm_def.xml b/DataFormats/EcalDigi/src/alpaka/classes_rocm_def.xml new file mode 100644 index 0000000000000..22160ad43258b --- /dev/null +++ b/DataFormats/EcalDigi/src/alpaka/classes_rocm_def.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/DataFormats/EcalDigi/src/classes.h b/DataFormats/EcalDigi/src/classes.h index 631c4d7be1395..51663d762f011 100644 --- a/DataFormats/EcalDigi/src/classes.h +++ b/DataFormats/EcalDigi/src/classes.h @@ -1,2 +1,6 @@ -#include "DataFormats/EcalDigi/interface/EcalDigiCollections.h" #include "DataFormats/Common/interface/Wrapper.h" +#include "DataFormats/EcalDigi/interface/EcalDigiCollections.h" +#include "DataFormats/EcalDigi/interface/EcalDigiHostCollection.h" +#include "DataFormats/EcalDigi/interface/EcalDigiSoA.h" +#include "DataFormats/EcalDigi/interface/EcalDigiPhase2HostCollection.h" +#include "DataFormats/EcalDigi/interface/EcalDigiPhase2SoA.h" diff --git a/DataFormats/EcalDigi/src/classes_def.xml b/DataFormats/EcalDigi/src/classes_def.xml index 7893cc71b2bf2..f3dd954167148 100644 --- a/DataFormats/EcalDigi/src/classes_def.xml +++ b/DataFormats/EcalDigi/src/classes_def.xml @@ -132,4 +132,40 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/DataFormats/EcalRecHit/BuildFile.xml b/DataFormats/EcalRecHit/BuildFile.xml index e38ee48a95bed..f7fee5fb84cf4 100644 --- a/DataFormats/EcalRecHit/BuildFile.xml +++ b/DataFormats/EcalRecHit/BuildFile.xml @@ -3,7 +3,11 @@ + + + + diff --git a/DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitHostCollection.h b/DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitHostCollection.h new file mode 100644 index 0000000000000..1209bcb9954e8 --- /dev/null +++ b/DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitHostCollection.h @@ -0,0 +1,10 @@ +#ifndef DataFormats_EcalRecHit_EcalUncalibratedRecHitHostCollection_h +#define DataFormats_EcalRecHit_EcalUncalibratedRecHitHostCollection_h + +#include "DataFormats/Portable/interface/PortableHostCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h" + +// EcalUncalibratedRecHitSoA in host memory +using EcalUncalibratedRecHitHostCollection = PortableHostCollection; + +#endif diff --git a/DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h b/DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h new file mode 100644 index 0000000000000..04a627e8625c2 --- /dev/null +++ b/DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h @@ -0,0 +1,29 @@ +#ifndef DataFormats_EcalRecHit_EcalUncalibratedRecHitSoA_h +#define DataFormats_EcalRecHit_EcalUncalibratedRecHitSoA_h + +#include "DataFormats/Common/interface/StdArray.h" +#include "DataFormats/EcalDigi/interface/EcalConstants.h" +#include "DataFormats/SoATemplate/interface/SoALayout.h" + +// due to a ROOT limitation the std::array needs to be wrapped +// https://github.com/root-project/root/issues/12007 +using EcalOotAmpArray = + edm::StdArray; //number of OOT amplitudes currently=number of samples, to be revised + +GENERATE_SOA_LAYOUT(EcalUncalibratedRecHitSoALayout, + SOA_COLUMN(uint32_t, id), + SOA_SCALAR(uint32_t, size), + SOA_COLUMN(float, amplitude), + SOA_COLUMN(float, amplitudeError), + SOA_COLUMN(float, pedestal), + SOA_COLUMN(float, jitter), + SOA_COLUMN(float, jitterError), + SOA_COLUMN(float, chi2), + SOA_COLUMN(float, OOTchi2), + SOA_COLUMN(uint32_t, flags), + SOA_COLUMN(uint32_t, aux), + SOA_COLUMN(EcalOotAmpArray, outOfTimeAmplitudes)) + +using EcalUncalibratedRecHitSoA = EcalUncalibratedRecHitSoALayout<>; + +#endif diff --git a/DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h b/DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h new file mode 100644 index 0000000000000..f6c6763e96b4f --- /dev/null +++ b/DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h @@ -0,0 +1,15 @@ +#ifndef DataFormats_EcalRecHit_alpaka_EcalUncalibratedRecHitDeviceCollection_h +#define DataFormats_EcalRecHit_alpaka_EcalUncalibratedRecHitDeviceCollection_h + +#include "DataFormats/Portable/interface/alpaka/PortableCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h" +#include "HeterogeneousCore/AlpakaInterface/interface/config.h" + +namespace ALPAKA_ACCELERATOR_NAMESPACE { + + // EcalUncalibratedRecHitSoA in device global memory + using EcalUncalibratedRecHitDeviceCollection = PortableCollection; + +} // namespace ALPAKA_ACCELERATOR_NAMESPACE + +#endif diff --git a/DataFormats/EcalRecHit/src/alpaka/classes_cuda.h b/DataFormats/EcalRecHit/src/alpaka/classes_cuda.h new file mode 100644 index 0000000000000..e8f1c8d74e657 --- /dev/null +++ b/DataFormats/EcalRecHit/src/alpaka/classes_cuda.h @@ -0,0 +1,4 @@ +#include "DataFormats/Common/interface/DeviceProduct.h" +#include "DataFormats/Common/interface/Wrapper.h" +#include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h" diff --git a/DataFormats/EcalRecHit/src/alpaka/classes_cuda_def.xml b/DataFormats/EcalRecHit/src/alpaka/classes_cuda_def.xml new file mode 100644 index 0000000000000..6bc692f6e1372 --- /dev/null +++ b/DataFormats/EcalRecHit/src/alpaka/classes_cuda_def.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/DataFormats/EcalRecHit/src/alpaka/classes_rocm.h b/DataFormats/EcalRecHit/src/alpaka/classes_rocm.h new file mode 100644 index 0000000000000..e8f1c8d74e657 --- /dev/null +++ b/DataFormats/EcalRecHit/src/alpaka/classes_rocm.h @@ -0,0 +1,4 @@ +#include "DataFormats/Common/interface/DeviceProduct.h" +#include "DataFormats/Common/interface/Wrapper.h" +#include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h" +#include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h" diff --git a/DataFormats/EcalRecHit/src/alpaka/classes_rocm_def.xml b/DataFormats/EcalRecHit/src/alpaka/classes_rocm_def.xml new file mode 100644 index 0000000000000..a9d31a4bb0de2 --- /dev/null +++ b/DataFormats/EcalRecHit/src/alpaka/classes_rocm_def.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/DataFormats/EcalRecHit/src/classes.h b/DataFormats/EcalRecHit/src/classes.h index 293af162722d3..98eaae1434ad5 100644 --- a/DataFormats/EcalRecHit/src/classes.h +++ b/DataFormats/EcalRecHit/src/classes.h @@ -13,3 +13,6 @@ #include "DataFormats/Common/interface/DetSet.h" #include "DataFormats/Common/interface/DetSetVector.h" #include "DataFormats/EcalRecHit/interface/EcalRecHitComparison.h" + +#include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitHostCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHitSoA.h" diff --git a/DataFormats/EcalRecHit/src/classes_def.xml b/DataFormats/EcalRecHit/src/classes_def.xml index dd5ae0eb94c6b..3f880bbcf1beb 100644 --- a/DataFormats/EcalRecHit/src/classes_def.xml +++ b/DataFormats/EcalRecHit/src/classes_def.xml @@ -39,4 +39,22 @@ + + + + + + + + + +