11 float const x = width;
12 unsigned const x1 =
static_cast<unsigned>(std::floor(y));
13 unsigned const x2 =
static_cast<unsigned>(std::floor(y + 1.));
14 unsigned iun =
static_cast<unsigned>(
i);
15 float const y1 = coder.
charge(shape, x1, iun);
16 float const y2 = coder.
charge(shape, x2, iun);
27 values_(totalChannels_ * 4) {
28 #ifdef HCAL_MAHI_CPUDEBUG
29 std::cout <<
"hello from converted pedestal widths" << std::endl;
30 std::cout <<
"pedestals HB values = " << pedestals.getAllContainers()[0].second.size()
31 <<
" HE values = " << pedestals.getAllContainers()[1].second.size() << std::endl;
32 std::cout <<
"qiedata HB values = " << qieData.getAllContainers()[0].second.size()
33 <<
" HE values = " << qieData.getAllContainers()[1].second.size() << std::endl;
37 auto const pedestalsAll = pedestals.getAllContainers();
38 auto const pedestalWidthsAll = pedestalWidths.getAllContainers();
39 auto const qieDataAll = qieData.getAllContainers();
40 auto const qieTypesAll = qieTypes.getAllContainers();
43 auto const unitIsADC = pedestals.isADC();
46 auto const& pedestalBarrelValues = pedestalsAll[0].second;
47 auto const& pedestalWidthBarrelValues = pedestalWidthsAll[0].second;
48 auto const& qieDataBarrelValues = qieDataAll[0].second;
49 auto const& qieTypesBarrelValues = qieTypesAll[0].second;
51 #ifdef HCAL_MAHI_CPUDEBUG
52 assert(pedestalWidthBarrelValues.size() == pedestalBarrelValues.size());
53 assert(pedestalBarrelValues.size() == qieDataBarrelValues.size());
54 assert(pedestalBarrelValues.size() == qieTypesBarrelValues.size());
57 for (
uint64_t i = 0; i < pedestalBarrelValues.size(); ++
i) {
58 auto const& qieCoder = qieDataBarrelValues[
i];
59 auto const qieType = qieTypesBarrelValues[
i].getValue() > 1 ? 1 : 0;
60 auto const& qieShape = qieData.getShape(qieType);
65 pedestalBarrelValues[i].
getValue(0), pedestalWidthBarrelValues[i].getWidth(0), 0, qieCoder, qieShape)
66 : pedestalWidthBarrelValues[i].getWidth(0);
70 pedestalBarrelValues[i].
getValue(1), pedestalWidthBarrelValues[i].getWidth(1), 1, qieCoder, qieShape)
71 : pedestalWidthBarrelValues[i].getWidth(1);
75 pedestalBarrelValues[i].
getValue(2), pedestalWidthBarrelValues[i].getWidth(2), 2, qieCoder, qieShape)
76 : pedestalWidthBarrelValues[i].getWidth(2);
80 pedestalBarrelValues[i].
getValue(3), pedestalWidthBarrelValues[i].getWidth(3), 3, qieCoder, qieShape)
81 : pedestalWidthBarrelValues[i].getWidth(3);
85 auto const& pedestalEndcapValues = pedestalsAll[1].second;
86 auto const& pedestalWidthEndcapValues = pedestalWidthsAll[1].second;
87 auto const& qieDataEndcapValues = qieDataAll[1].second;
88 auto const& qieTypesEndcapValues = qieTypesAll[1].second;
90 #ifdef HCAL_MAHI_CPUDEBUG
91 assert(pedestalWidthEndcapValues.size() == pedestalEndcapValues.size());
92 assert(pedestalEndcapValues.size() == qieDataEndcapValues.size());
93 assert(pedestalEndcapValues.size() == qieTypesEndcapValues.size());
96 auto const offset = pedestalWidthBarrelValues.size();
97 for (
uint64_t i = 0; i < pedestalEndcapValues.size(); ++
i) {
98 auto const& qieCoder = qieDataEndcapValues[
i];
99 auto const qieType = qieTypesEndcapValues[
i].getValue() > 1 ? 1 : 0;
100 auto const& qieShape = qieData.getShape(qieType);
101 auto const off = offset +
i;
106 pedestalEndcapValues[i].
getValue(0), pedestalWidthEndcapValues[i].getWidth(0), 0, qieCoder, qieShape)
107 : pedestalWidthEndcapValues[i].getWidth(0);
108 values_[off * 4 + 1] =
111 pedestalEndcapValues[i].
getValue(1), pedestalWidthEndcapValues[i].getWidth(1), 1, qieCoder, qieShape)
112 : pedestalWidthEndcapValues[i].getWidth(1);
113 values_[off * 4 + 2] =
116 pedestalEndcapValues[i].
getValue(2), pedestalWidthEndcapValues[i].getWidth(2), 2, qieCoder, qieShape)
117 : pedestalWidthEndcapValues[i].getWidth(2);
118 values_[off * 4 + 3] =
121 pedestalEndcapValues[i].
getValue(3), pedestalWidthEndcapValues[i].getWidth(3), 3, qieCoder, qieShape)
122 : pedestalWidthEndcapValues[i].getWidth(3);
124 #ifdef HCAL_MAHI_CPUDEBUG
125 if (pedestalEndcapValues[i].rawId() == DETID_TO_DEBUG) {
126 for (
int i = 0; i < 4; i++)
127 printf(
"pedestalWidth(%d) = %f original pedestalWidth(%d) = %f\n",
129 values_[off * 4 + i],
131 pedestalWidthEndcapValues[i].getWidth(3));
138 auto const& product =
product_.dataForCurrentDeviceAsync(
std::vector< float, cms::cuda::HostAllocator< float > > values_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Product const & getProduct(cudaStream_t) const
cms::cuda::ESProduct< Product > product_
HcalConvertedPedestalWidthsGPU(HcalPedestals const &, HcalPedestalWidths const &, HcalQIEData const &, HcalQIETypes const &)
const tAllContWithNames getAllContainers() const
printf("params %d %f %f %f\n", minT, eps, errmax, chi2max)
uint16_t const *__restrict__ x
void copyAsync(device::unique_ptr< T > &dst, const host::unique_ptr< T > &src, cudaStream_t stream)
#define TYPELOOKUP_DATA_REG(_dataclass_)
unsigned long long uint64_t
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > values
const JetExtendedData & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
float charge(const HcalQIEShape &fShape, unsigned fAdc, unsigned fCapId) const
ADC [0..127] + capid [0..3] -> fC conversion.