Skip to content

Commit

Permalink
Merge pull request #23579 from vkhristenko/hcal_constexpr_calibcond
Browse files Browse the repository at this point in the history
constexpr for Hcal Calib and Cond
  • Loading branch information
cmsbuild committed Jun 21, 2018
2 parents dfaca38 + 9994068 commit b753792
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 54 deletions.
34 changes: 25 additions & 9 deletions CalibFormats/HcalObjects/interface/HcalCalibrations.h
Expand Up @@ -8,22 +8,38 @@
*/
class HcalCalibrations {
public:
HcalCalibrations () {};
HcalCalibrations (const float fGain [4], const float fPedestal [4], const float fEffectivePedestal[4], const float fRespCorr, const float fTimeCorr, const float fLUTCorr);
constexpr HcalCalibrations ()
: mRespCorrGain{0,0,0,0}, mPedestal{0,0,0,0}, mEffectivePedestal{0,0,0,0},
mRespCorr(0), mTimeCorr(0), mLUTCorr(0)
{}
constexpr HcalCalibrations (const float fGain [4], const float fPedestal [4],
const float fEffectivePedestal[4], const float fRespCorr,
const float fTimeCorr, const float fLUTCorr)
: mRespCorrGain{0,0,0,0}, mPedestal{0,0,0,0}, mEffectivePedestal{0,0,0,0},
mRespCorr(0), mTimeCorr(0), mLUTCorr(0) {
for (auto iCap = 0; iCap < 4; ++iCap) {
mRespCorrGain [iCap] = fGain [iCap] * fRespCorr;
mPedestal [iCap] = fPedestal [iCap];
mEffectivePedestal [iCap] = fEffectivePedestal [iCap];
}
mRespCorr = fRespCorr;
mTimeCorr = fTimeCorr;
mLUTCorr = fLUTCorr;
}
/// get LUT corrected and response corrected gain for capid=0..3
double LUTrespcorrgain (int fCapId) const {return (mLUTCorr * mRespCorrGain [fCapId]);}
constexpr double LUTrespcorrgain (int fCapId) const {return (mLUTCorr * mRespCorrGain [fCapId]);}
/// get response corrected gain for capid=0..3
double respcorrgain (int fCapId) const {return mRespCorrGain [fCapId];}
constexpr double respcorrgain (int fCapId) const {return mRespCorrGain [fCapId];}
/// get raw gain for capid=0..3
double rawgain (int fCapId) const {return mRespCorrGain [fCapId] / mRespCorr;}
constexpr double rawgain (int fCapId) const {return mRespCorrGain [fCapId] / mRespCorr;}
/// get pedestal for capid=0..3
double pedestal (int fCapId) const {return mPedestal [fCapId];}
constexpr double pedestal (int fCapId) const {return mPedestal [fCapId];}
/// get effective pedestal for capid=0..3
double effpedestal (int fCapId) const {return mEffectivePedestal [fCapId];}
constexpr double effpedestal (int fCapId) const {return mEffectivePedestal [fCapId];}
/// get response correction factor
double respcorr () const {return mRespCorr;}
constexpr double respcorr () const {return mRespCorr;}
/// get time correction factor
double timecorr () const {return mTimeCorr;}
constexpr double timecorr () const {return mTimeCorr;}
private:
double mRespCorrGain [4];
double mPedestal [4];
Expand Down
21 changes: 0 additions & 21 deletions CalibFormats/HcalObjects/src/HcalCalibrations.cc

This file was deleted.

48 changes: 24 additions & 24 deletions CondFormats/HcalObjects/interface/HcalRecoParam.h
Expand Up @@ -16,33 +16,33 @@ mParam1, mParam2 re-define to keep more parameters 28-Oct-2011 sk.

class HcalRecoParam {
public:
HcalRecoParam():mId(0), mParam1(0), mParam2(0) {}
constexpr HcalRecoParam():mId(0), mParam1(0), mParam2(0) {}

HcalRecoParam(unsigned long fId, unsigned int fParam1, unsigned int fParam2):
constexpr HcalRecoParam(unsigned long fId, unsigned int fParam1, unsigned int fParam2):
mId(fId), mParam1(fParam1), mParam2(fParam2) {}

uint32_t rawId () const {return mId;}

unsigned int param1() const {return mParam1;}
unsigned int param2() const {return mParam2;}

bool correctForPhaseContainment() const {return mParam1&0x1;}
bool correctForLeadingEdge() const {return (mParam1>>1)&0x1;}
float correctionPhaseNS() const {return ((mParam1>>2)&0xFF)/4.-32.;}
unsigned int firstSample() const {return (mParam1<10)?(mParam1):((mParam1>>10)&0xF);}
unsigned int samplesToAdd() const {return (mParam1<10)?(mParam2):((mParam1>>14)&0xF);}
unsigned int pulseShapeID() const {return (mParam1>>18)&0x1FF;}

bool useLeakCorrection () const {return mParam2&0x1;}
unsigned int leakCorrectionID () const {return (mParam2>>1)&0xF;}
bool correctForTimeslew () const {return (mParam2>>5)&0x1;}
unsigned int timeslewCorrectionID () const {return (mParam2>>6)&0xF;}
bool correctTiming () const {return (mParam2>>10)&0x1;}
unsigned int firstAuxTS () const { return (mParam2>>11)&0xF;}
unsigned int specialCaseID () const {return (mParam2>>15)&0xF;}
unsigned int noiseFlaggingID () const {return (mParam2>>19)&0xF;}
unsigned int pileupCleaningID () const {return (mParam2>>23)&0xF;}
unsigned int packingScheme () const {return (mParam2>>27)&0xF;}
constexpr uint32_t rawId () const {return mId;}

constexpr unsigned int param1() const {return mParam1;}
constexpr unsigned int param2() const {return mParam2;}

constexpr bool correctForPhaseContainment() const {return mParam1&0x1;}
constexpr bool correctForLeadingEdge() const {return (mParam1>>1)&0x1;}
constexpr float correctionPhaseNS() const {return ((mParam1>>2)&0xFF)/4.-32.;}
constexpr unsigned int firstSample() const {return (mParam1<10)?(mParam1):((mParam1>>10)&0xF);}
constexpr unsigned int samplesToAdd() const {return (mParam1<10)?(mParam2):((mParam1>>14)&0xF);}
constexpr unsigned int pulseShapeID() const {return (mParam1>>18)&0x1FF;}

constexpr bool useLeakCorrection () const {return mParam2&0x1;}
constexpr unsigned int leakCorrectionID () const {return (mParam2>>1)&0xF;}
constexpr bool correctForTimeslew () const {return (mParam2>>5)&0x1;}
constexpr unsigned int timeslewCorrectionID () const {return (mParam2>>6)&0xF;}
constexpr bool correctTiming () const {return (mParam2>>10)&0x1;}
constexpr unsigned int firstAuxTS () const { return (mParam2>>11)&0xF;}
constexpr unsigned int specialCaseID () const {return (mParam2>>15)&0xF;}
constexpr unsigned int noiseFlaggingID () const {return (mParam2>>19)&0xF;}
constexpr unsigned int pileupCleaningID () const {return (mParam2>>23)&0xF;}
constexpr unsigned int packingScheme () const {return (mParam2>>27)&0xF;}

private:
uint32_t mId;
Expand Down

0 comments on commit b753792

Please sign in to comment.