HcalDbService

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
#ifndef CalibFormats_HcalObjects_HcalDbService_h
#define CalibFormats_HcalObjects_HcalDbService_h

//
// F.Ratnikov (UMd), Aug. 9, 2005
//

#include <memory>
#include <map>
#include <atomic>

#include "DataFormats/HcalDetId/interface/HcalGenericDetId.h"
#include "CalibFormats/HcalObjects/interface/HcalCoder.h"
#include "CalibFormats/HcalObjects/interface/HcalCalibrationsSet.h"
#include "CalibFormats/HcalObjects/interface/HcalCalibrationWidthsSet.h"

#include "CondFormats/HcalObjects/interface/AllObjects.h"

class HcalCalibrations;
class HcalCalibrationWidths;
class HcalTopology;

class HcalDbService {
public:
  HcalDbService();
  ~HcalDbService();

  const HcalTopology* getTopologyUsed() const;

  const HcalCalibrations& getHcalCalibrations(const HcalGenericDetId& fId) const;
  const HcalCalibrationWidths& getHcalCalibrationWidths(const HcalGenericDetId& fId) const;
  const HcalCalibrationsSet* getHcalCalibrationsSet() const;
  const HcalCalibrationWidthsSet* getHcalCalibrationWidthsSet() const;

  const HcalPedestal* getPedestal(const HcalGenericDetId& fId) const;
  const HcalPedestalWidth* getPedestalWidth(const HcalGenericDetId& fId) const;
  const HcalPedestal* getEffectivePedestal(const HcalGenericDetId& fId) const;
  const HcalPedestalWidth* getEffectivePedestalWidth(const HcalGenericDetId& fId) const;
  const HcalGain* getGain(const HcalGenericDetId& fId) const;
  const HcalGainWidth* getGainWidth(const HcalGenericDetId& fId) const;
  const HcalQIECoder* getHcalCoder(const HcalGenericDetId& fId) const;
  const HcalQIEShape* getHcalShape(const HcalGenericDetId& fId) const;
  const HcalQIEShape* getHcalShape(const HcalQIECoder* coder) const;
  const HcalElectronicsMap* getHcalMapping() const;
  const HcalFrontEndMap* getHcalFrontEndMapping() const;
  const HcalRespCorr* getHcalRespCorr(const HcalGenericDetId& fId) const;
  const HcalTimeCorr* getHcalTimeCorr(const HcalGenericDetId& fId) const;
  const HcalL1TriggerObject* getHcalL1TriggerObject(const HcalGenericDetId& fId) const;
  const HcalChannelStatus* getHcalChannelStatus(const HcalGenericDetId& fId) const;
  const HcalZSThreshold* getHcalZSThreshold(const HcalGenericDetId& fId) const;
  const HcalLUTCorr* getHcalLUTCorr(const HcalGenericDetId& fId) const;
  const HcalPFCorr* getHcalPFCorr(const HcalGenericDetId& fId) const;
  const HcalLutMetadata* getHcalLutMetadata() const;
  const HcalQIEType* getHcalQIEType(const HcalGenericDetId& fId) const;
  const HcalSiPMParameter* getHcalSiPMParameter(const HcalGenericDetId& fId) const;
  const HcalSiPMCharacteristics* getHcalSiPMCharacteristics() const;
  const HcalTPChannelParameter* getHcalTPChannelParameter(const HcalGenericDetId& fId, bool throwOnFail = true) const;
  const HcalTPParameters* getHcalTPParameters() const;
  const HcalMCParam* getHcalMCParam(const HcalGenericDetId& fId) const;
  const HcalRecoParam* getHcalRecoParam(const HcalGenericDetId& fId) const;

  void setData(const HcalPedestals* fItem, bool eff = false) {
    if (eff)
      mEffectivePedestals = fItem;
    else
      mPedestals = fItem;
    mCalibSet = nullptr;
  }
  void setData(const HcalPedestalWidths* fItem, bool eff = false) {
    if (eff)
      mEffectivePedestalWidths = fItem;
    else
      mPedestalWidths = fItem;
    mCalibWidthSet = nullptr;
  }
  void setData(const HcalGains* fItem) {
    mGains = fItem;
    mCalibSet = nullptr;
  }
  void setData(const HcalGainWidths* fItem) {
    mGainWidths = fItem;
    mCalibWidthSet = nullptr;
  }
  void setData(const HcalQIEData* fItem) {
    mQIEData = fItem;
    mCalibSet = nullptr;
    mCalibWidthSet = nullptr;
  }
  void setData(const HcalQIETypes* fItem) {
    mQIETypes = fItem;
    mCalibSet = nullptr;
  }
  void setData(const HcalChannelQuality* fItem) { mChannelQuality = fItem; }
  void setData(const HcalElectronicsMap* fItem) { mElectronicsMap = fItem; }
  void setData(const HcalFrontEndMap* fItem) { mFrontEndMap = fItem; }
  void setData(const HcalRespCorrs* fItem) {
    mRespCorrs = fItem;
    mCalibSet = nullptr;
  }
  void setData(const HcalTimeCorrs* fItem) {
    mTimeCorrs = fItem;
    mCalibSet = nullptr;
  }
  void setData(const HcalZSThresholds* fItem) { mZSThresholds = fItem; }
  void setData(const HcalL1TriggerObjects* fItem) { mL1TriggerObjects = fItem; }
  void setData(const HcalLUTCorrs* fItem) {
    mLUTCorrs = fItem;
    mCalibSet = nullptr;
  }
  void setData(const HcalPFCorrs* fItem) { mPFCorrs = fItem; }
  void setData(const HcalLutMetadata* fItem) { mLutMetadata = fItem; }
  void setData(const HcalSiPMParameters* fItem) {
    mSiPMParameters = fItem;
    mCalibSet = nullptr;
  }
  void setData(const HcalSiPMCharacteristics* fItem) { mSiPMCharacteristics = fItem; }
  void setData(const HcalTPChannelParameters* fItem) {
    mTPChannelParameters = fItem;
    mCalibSet = nullptr;
  }
  void setData(const HcalTPParameters* fItem) { mTPParameters = fItem; }
  void setData(const HcalMCParams* fItem) { mMCParams = fItem; }
  void setData(const HcalRecoParams* fItem) { mRecoParams = fItem; }

private:
  bool makeHcalCalibration(const HcalGenericDetId& fId,
                           HcalCalibrations* fObject,
                           bool pedestalInADC,
                           bool effPedestalInADC) const;
  void buildCalibrations() const;
  bool makeHcalCalibrationWidth(const HcalGenericDetId& fId,
                                HcalCalibrationWidths* fObject,
                                bool pedestalInADC,
                                bool effPedestalInADC) const;
  void buildCalibWidths() const;
  bool convertPedestals(const HcalGenericDetId& fId, const HcalPedestal* pedestal, float* pedTrue, bool inADC) const;
  bool convertPedestalWidths(const HcalGenericDetId& fId,
                             const HcalPedestalWidth* pedestalwidth,
                             const HcalPedestal* pedestal,
                             float* pedTrueWidth,
                             bool inADC) const;
  const HcalPedestals* mPedestals;
  const HcalPedestalWidths* mPedestalWidths;
  const HcalPedestals* mEffectivePedestals;
  const HcalPedestalWidths* mEffectivePedestalWidths;
  const HcalGains* mGains;
  const HcalGainWidths* mGainWidths;
  const HcalQIEData* mQIEData;
  const HcalQIETypes* mQIETypes;
  const HcalChannelQuality* mChannelQuality;
  const HcalElectronicsMap* mElectronicsMap;
  const HcalFrontEndMap* mFrontEndMap;
  const HcalRespCorrs* mRespCorrs;
  const HcalZSThresholds* mZSThresholds;
  const HcalL1TriggerObjects* mL1TriggerObjects;
  const HcalTimeCorrs* mTimeCorrs;
  const HcalLUTCorrs* mLUTCorrs;
  const HcalPFCorrs* mPFCorrs;
  const HcalLutMetadata* mLutMetadata;
  const HcalSiPMParameters* mSiPMParameters;
  const HcalSiPMCharacteristics* mSiPMCharacteristics;
  const HcalTPChannelParameters* mTPChannelParameters;
  const HcalTPParameters* mTPParameters;
  const HcalMCParams* mMCParams;
  const HcalRecoParams* mRecoParams;
  //  bool mPedestalInADC;
  mutable std::atomic<HcalCalibrationsSet const*> mCalibSet;
  mutable std::atomic<HcalCalibrationWidthsSet const*> mCalibWidthSet;
};

#endif