Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configurable hardcode conditions for HCAL #13861

Merged
merged 9 commits into from
Apr 13, 2016
74 changes: 57 additions & 17 deletions CalibCalorimetry/HcalAlgos/interface/HcalDbHardcode.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "CondFormats/HcalObjects/interface/HcalRecoParam.h"
#include "CondFormats/HcalObjects/interface/HcalTimingParam.h"
#include "CondFormats/HcalObjects/interface/HcalMCParam.h"
#include "CalibCalorimetry/HcalAlgos/interface/HcalHardcodeParameters.h"

/**

Expand All @@ -29,21 +30,60 @@
\author Fedor Ratnikov

*/
namespace HcalDbHardcode {
HcalPedestal makePedestal (HcalGenericDetId fId, bool fSmear = false);
HcalPedestal makePedestal (HcalGenericDetId fId, bool fSmear = false, double lumi = 0.0);
HcalPedestalWidth makePedestalWidth (HcalGenericDetId fId);
HcalPedestalWidth makePedestalWidth (HcalGenericDetId fId, double lumi);
HcalGain makeGain (HcalGenericDetId fId, bool fSmear = false);
HcalGainWidth makeGainWidth (HcalGenericDetId fId);
HcalQIECoder makeQIECoder (HcalGenericDetId fId);
HcalCalibrationQIECoder makeCalibrationQIECoder (HcalGenericDetId fId);
HcalQIEShape makeQIEShape ();
HcalQIEType makeQIEType (HcalGenericDetId fId, bool testHFQIE10);
HcalRecoParam makeRecoParam (HcalGenericDetId fId);
HcalMCParam makeMCParam (HcalGenericDetId fId);
HcalTimingParam makeTimingParam (HcalGenericDetId fId);
void makeHardcodeMap(HcalElectronicsMap& emap);
void makeHardcodeDcsMap(HcalDcsMap& dcs_map);
}
class HcalDbHardcode {
public:
//constructor
HcalDbHardcode();

//destructor
virtual ~HcalDbHardcode() {}

//setters
void setHB(HcalHardcodeParameters p) { theHBParameters_ = p; setHB_ = true; }
void setHE(HcalHardcodeParameters p) { theHEParameters_ = p; setHE_ = true; }
void setHF(HcalHardcodeParameters p) { theHFParameters_ = p; setHF_ = true; }
void setHO(HcalHardcodeParameters p) { theHOParameters_ = p; setHO_ = true; }
void setHBUpgrade(HcalHardcodeParameters p) { theHBUpgradeParameters_ = p; setHBUpgrade_ = true; }
void setHEUpgrade(HcalHardcodeParameters p) { theHEUpgradeParameters_ = p; setHEUpgrade_ = true; }
void setHFUpgrade(HcalHardcodeParameters p) { theHFUpgradeParameters_ = p; setHFUpgrade_ = true; }
void useHBUpgrade(bool b) { useHBUpgrade_ = b; }
void useHEUpgrade(bool b) { useHEUpgrade_ = b; }
void useHFUpgrade(bool b) { useHFUpgrade_ = b; }
void testHFQIE10(bool b) { testHFQIE10_ = b; }
void setLumi(double lumi) { lumi_ = lumi; }
void setLumiOffset(double offset) { lumiOffset_ = offset; }
void setHBSiPMLumiDep(double dep) { theHBSiPMLumiDep_ = dep; }
void setHESiPMLumiDep(double dep) { theHESiPMLumiDep_ = dep; }

//getters
const bool useHBUpgrade() const { return useHBUpgrade_; }
const bool useHEUpgrade() const { return useHEUpgrade_; }
const bool useHFUpgrade() const { return useHFUpgrade_; }
const HcalHardcodeParameters& getParameters(HcalGenericDetId fId);
const int getGainIndex(HcalGenericDetId fId);
HcalPedestal makePedestal (HcalGenericDetId fId, bool fSmear = false);
HcalPedestalWidth makePedestalWidth (HcalGenericDetId fId);
HcalPedestalWidth makePedestalWidth (HcalGenericDetId fId, double lumi);
HcalGain makeGain (HcalGenericDetId fId, bool fSmear = false);
HcalGainWidth makeGainWidth (HcalGenericDetId fId);
HcalQIECoder makeQIECoder (HcalGenericDetId fId);
HcalCalibrationQIECoder makeCalibrationQIECoder (HcalGenericDetId fId);
HcalQIEShape makeQIEShape ();
HcalQIEType makeQIEType (HcalGenericDetId fId);
HcalRecoParam makeRecoParam (HcalGenericDetId fId);
HcalMCParam makeMCParam (HcalGenericDetId fId);
HcalTimingParam makeTimingParam (HcalGenericDetId fId);
void makeHardcodeMap(HcalElectronicsMap& emap);
void makeHardcodeDcsMap(HcalDcsMap& dcs_map);

private:
//member variables
HcalHardcodeParameters theDefaultParameters_;
HcalHardcodeParameters theHBParameters_, theHEParameters_, theHFParameters_, theHOParameters_;
HcalHardcodeParameters theHBUpgradeParameters_, theHEUpgradeParameters_, theHFUpgradeParameters_;
bool setHB_, setHE_, setHF_, setHO_, setHBUpgrade_, setHEUpgrade_, setHFUpgrade_;
bool useHBUpgrade_, useHEUpgrade_, useHFUpgrade_, testHFQIE10_;
double lumi_, lumiOffset_, theHBSiPMLumiDep_, theHESiPMLumiDep_;
};

#endif
39 changes: 39 additions & 0 deletions CalibCalorimetry/HcalAlgos/interface/HcalHardcodeParameters.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#ifndef HcalAlgos_HcalHardcodeParameters_h
#define HcalAlgos_HcalHardcodeParameters_h

#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include <vector>

class HcalHardcodeParameters {
public:
//default constructor
HcalHardcodeParameters() {}
//construct from values
HcalHardcodeParameters(double pedestal, double pedestalWidth, std::vector<double> gain, std::vector<double> gainWidth,
int qieType, std::vector<double> qieOffset, std::vector<double> qieSlope);
//construct from pset
HcalHardcodeParameters(const edm::ParameterSet & p);

//destructor
virtual ~HcalHardcodeParameters() {}

//accessors
//note: all vector accessors use at() in order to throw exceptions for malformed conditions
const double pedestal() const { return pedestal_; }
const double pedestalWidth() const { return pedestalWidth_; }
const double gain(unsigned index) const { return gain_.at(index); }
const double gainWidth(unsigned index) const { return gainWidth_.at(index); }
const int qieType() const { return qieType_; }
const double qieOffset(unsigned range) const { return qieOffset_.at(range); }
const double qieSlope(unsigned range) const { return qieSlope_.at(range); }

private:
//member variables
double pedestal_, pedestalWidth_;
std::vector<double> gain_, gainWidth_;
int qieType_;
std::vector<double> qieOffset_, qieSlope_;
};

#endif