17 : mPedestals(nullptr),
18 mPedestalWidths(nullptr),
19 mEffectivePedestals(nullptr),
20 mEffectivePedestalWidths(nullptr),
25 mElectronicsMap(nullptr),
26 mFrontEndMap(nullptr),
28 mL1TriggerObjects(nullptr),
32 mLutMetadata(nullptr),
33 mSiPMParameters(nullptr),
34 mSiPMCharacteristics(nullptr),
35 mTPChannelParameters(nullptr),
36 mTPParameters(nullptr),
40 mCalibWidthSet(nullptr) {}
67 return (*
mCalibSet.load(std::memory_order_acquire)).getCalibrations(fId);
72 return (*
mCalibWidthSet.load(std::memory_order_acquire)).getCalibrationWidths(fId);
77 return mCalibSet.load(std::memory_order_acquire);
91 if (!
mCalibSet.load(std::memory_order_acquire)) {
101 for (std::vector<DetId>::const_iterator
id = ids.begin();
id != ids.end(); ++
id) {
106 ptr->setCalibrations(*
id, tool);
111 bool exchanged =
mCalibSet.compare_exchange_strong(expect, cptr, std::memory_order_acq_rel);
133 for (std::vector<DetId>::const_iterator
id = ids.begin();
id != ids.end(); ++
id) {
138 ptr->setCalibrationWidths(*
id, tool);
143 bool exchanged =
mCalibWidthSet.compare_exchange_strong(expect, cptr, std::memory_order_acq_rel);
161 if (!coder || !shape)
164 for (
int i = 0;
i < 4;
i++) {
170 int x1 = (
int)std::floor(
x);
171 int x2 = (
int)std::floor(
x + 1);
182 bool effPedestalInADC)
const {
195 bool effconverted =
convertPedestals(fId, effpedestal, effPedTrue, effPedestalInADC);
197 if (
pedestal && effpedestal &&
converted && effconverted &&
gain && respcorr && timecorr && lutcorr) {
218 if (!coder || !shape)
221 for (
int i = 0;
i < 4;
i++) {
228 unsigned x1 =
static_cast<unsigned>(std::floor(
y));
229 unsigned x2 =
static_cast<unsigned>(std::floor(
y + 1.));
230 unsigned iun =
static_cast<unsigned>(
i);
233 pedTrueWidth[
i] = (
y2 -
y1) *
x;
241 bool effPedestalInADC)
const {
250 float pedTrueWidth[4];
253 float effPedTrueWidth[4];
254 bool effconverted =
convertPedestalWidths(fId, effpedestalwidth, effpedestal, effPedTrueWidth, effPedestalInADC);
255 if (pedestalwidth && effpedestalwidth && gainwidth &&
converted && effconverted) {
392 bool throwOnFail)
const {
const HcalLUTCorrs * mLUTCorrs
const HcalQIETypes * mQIETypes
const HcalPedestalWidths * mEffectivePedestalWidths
const float * getValues() const
get value for all capId = 0..3
const HcalGainWidth * getGainWidth(const HcalGenericDetId &fId) const
const HcalSiPMParameters * mSiPMParameters
const HcalZSThreshold * getHcalZSThreshold(const HcalGenericDetId &fId) const
const HcalPedestal * getPedestal(const HcalGenericDetId &fId) const
const HcalMCParams * mMCParams
const HcalTPParameters * mTPParameters
const HcalPedestals * mEffectivePedestals
bool convertPedestalWidths(const HcalGenericDetId &fId, const HcalPedestalWidth *pedestalwidth, const HcalPedestal *pedestal, float *pedTrueWidth, bool inADC) const
bool convertPedestals(const HcalGenericDetId &fId, const HcalPedestal *pedestal, float *pedTrue, bool inADC) const
const HcalL1TriggerObjects * mL1TriggerObjects
const HcalCalibrationWidthsSet * getHcalCalibrationWidthsSet() const
const HcalPFCorrs * mPFCorrs
const HcalElectronicsMap * getHcalMapping() const
const HcalChannelQuality * mChannelQuality
const HcalPedestalWidth * getPedestalWidth(const HcalGenericDetId &fId) const
const HcalLutMetadata * mLutMetadata
const HcalTPChannelParameters * mTPChannelParameters
const Item * getValues(DetId fId, bool throwOnFail=true) const
const HcalSiPMCharacteristics * getHcalSiPMCharacteristics() const
const HcalCalibrationWidths & getHcalCalibrationWidths(const HcalGenericDetId &fId) const
std::atomic< HcalCalibrationsSet const * > mCalibSet
const HcalQIECoder * getCoder(DetId fId) const
get QIE parameters
const HcalMCParam * getHcalMCParam(const HcalGenericDetId &fId) const
const HcalCalibrationsSet * getHcalCalibrationsSet() const
const HcalTopology * topo() const
const HcalQIEShape & getShape(int qieType) const
get basic shape
void buildCalibrations() const
const HcalCalibrations & getHcalCalibrations(const HcalGenericDetId &fId) const
const HcalRespCorr * getHcalRespCorr(const HcalGenericDetId &fId) const
const HcalLutMetadata * getHcalLutMetadata() const
bool makeHcalCalibrationWidth(const HcalGenericDetId &fId, HcalCalibrationWidths *fObject, bool pedestalInADC, bool effPedestalInADC) const
const HcalTopology * getTopologyUsed() const
const HcalL1TriggerObject * getHcalL1TriggerObject(const HcalGenericDetId &fId) const
std::vector< DetId > getAllChannels() const
const HcalLUTCorr * getHcalLUTCorr(const HcalGenericDetId &fId) const
const HcalTPChannelParameter * getHcalTPChannelParameter(const HcalGenericDetId &fId, bool throwOnFail=true) const
const HcalPedestalWidths * mPedestalWidths
const HcalPFCorr * getHcalPFCorr(const HcalGenericDetId &fId) const
const HcalRespCorrs * mRespCorrs
void buildCalibWidths() const
const HcalTPParameters * getHcalTPParameters() const
const HcalElectronicsMap * mElectronicsMap
const HcalGainWidths * mGainWidths
const HcalTimeCorrs * mTimeCorrs
const HcalRecoParam * getHcalRecoParam(const HcalGenericDetId &fId) const
const HcalPedestal * getEffectivePedestal(const HcalGenericDetId &fId) const
const HcalPedestalWidth * getEffectivePedestalWidth(const HcalGenericDetId &fId) const
const HcalZSThresholds * mZSThresholds
bool makeHcalCalibration(const HcalGenericDetId &fId, HcalCalibrations *fObject, bool pedestalInADC, bool effPedestalInADC) const
const HcalQIEData * mQIEData
const HcalGain * getGain(const HcalGenericDetId &fId) const
const HcalQIEShape * getHcalShape(const HcalGenericDetId &fId) const
#define TYPELOOKUP_DATA_REG(_dataclass_)
const HcalQIECoder * getHcalCoder(const HcalGenericDetId &fId) const
const HcalFrontEndMap * mFrontEndMap
const HcalPedestals * mPedestals
const HcalSiPMParameter * getHcalSiPMParameter(const HcalGenericDetId &fId) const
const HcalRecoParams * mRecoParams
const HcalFrontEndMap * getHcalFrontEndMapping() const
const HcalTimeCorr * getHcalTimeCorr(const HcalGenericDetId &fId) const
const HcalSiPMCharacteristics * mSiPMCharacteristics
std::atomic< HcalCalibrationWidthsSet const * > mCalibWidthSet
const HcalQIEType * getHcalQIEType(const HcalGenericDetId &fId) const
float charge(const HcalQIEShape &fShape, unsigned fAdc, unsigned fCapId) const
ADC [0..127] + capid [0..3] -> fC conversion.
float getWidth(int fCapId) const
get width (sqrt(sigma_i_i)) for capId = 0..3
const HcalChannelStatus * getHcalChannelStatus(const HcalGenericDetId &fId) const