CMS 3D CMS Logo

HcalTextCalibrations.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 // Original Author: Fedor Ratnikov
3 //
4 //
5 
6 #include <memory>
7 #include <iostream>
8 #include <fstream>
9 
12 
14 
16 
18 
19 #include "HcalTextCalibrations.h"
20 //
21 // class declaration
22 //
23 
24 using namespace cms;
25 
27 
28 {
29  //parsing parameters
30  std::vector<edm::ParameterSet> data = iConfig.getParameter<std::vector<edm::ParameterSet> >("input");
31  std::vector<edm::ParameterSet>::iterator request = data.begin();
32  for (; request != data.end(); ++request) {
33  std::string objectName = request->getParameter<std::string>("object");
34  edm::FileInPath fp = request->getParameter<edm::FileInPath>("file");
35  mInputs[objectName] = fp.fullPath();
36  // std::cout << objectName << " with file " << fp.fullPath() << std::endl;
37  if (objectName == "Pedestals") {
38  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::producePedestals).consumes();
39  findingRecord<HcalPedestalsRcd>();
40  } else if (objectName == "PedestalWidths") {
41  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::producePedestalWidths).consumes();
42  findingRecord<HcalPedestalWidthsRcd>();
43  } else if (objectName == "EffectivePedestals") {
44  mTokens[objectName] =
45  setWhatProduced(this, &HcalTextCalibrations::produceEffectivePedestals, edm::es::Label("effective"))
46  .consumes();
47  findingRecord<HcalPedestalsRcd>();
48  } else if (objectName == "EffectivePedestalWidths") {
49  mTokens[objectName] =
50  setWhatProduced(this, &HcalTextCalibrations::produceEffectivePedestalWidths, edm::es::Label("effective"))
51  .consumes();
52  findingRecord<HcalPedestalWidthsRcd>();
53  } else if (objectName == "Gains") {
54  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceGains).consumes();
55  findingRecord<HcalGainsRcd>();
56  } else if (objectName == "GainWidths") {
57  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceGainWidths).consumes();
58  findingRecord<HcalGainWidthsRcd>();
59  } else if (objectName == "PFCuts") {
60  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::producePFCuts).consumes();
61  findingRecord<HcalPFCutsRcd>();
62  } else if (objectName == "QIEData") {
63  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceQIEData).consumes();
64  findingRecord<HcalQIEDataRcd>();
65  } else if (objectName == "QIETypes") {
66  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceQIETypes).consumes();
67  findingRecord<HcalQIETypesRcd>();
68  } else if (objectName == "ChannelQuality") {
69  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceChannelQuality).consumes();
70  findingRecord<HcalChannelQualityRcd>();
71  } else if (objectName == "ZSThresholds") {
72  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceZSThresholds).consumes();
73  findingRecord<HcalZSThresholdsRcd>();
74  } else if (objectName == "RespCorrs") {
75  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceRespCorrs).consumes();
76  findingRecord<HcalRespCorrsRcd>();
77  } else if (objectName == "LUTCorrs") {
78  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceLUTCorrs).consumes();
79  findingRecord<HcalLUTCorrsRcd>();
80  } else if (objectName == "PFCorrs") {
81  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::producePFCorrs).consumes();
82  findingRecord<HcalPFCorrsRcd>();
83  } else if (objectName == "TimeCorrs") {
84  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceTimeCorrs).consumes();
85  findingRecord<HcalTimeCorrsRcd>();
86  } else if (objectName == "L1TriggerObjects") {
87  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceL1TriggerObjects).consumes();
88  findingRecord<HcalL1TriggerObjectsRcd>();
89  } else if (objectName == "ElectronicsMap") {
90  setWhatProduced(this, &HcalTextCalibrations::produceElectronicsMap);
91  findingRecord<HcalElectronicsMapRcd>();
92  } else if (objectName == "FrontEndMap") {
93  setWhatProduced(this, &HcalTextCalibrations::produceFrontEndMap);
94  findingRecord<HcalFrontEndMapRcd>();
95  } else if (objectName == "ValidationCorrs") {
96  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceValidationCorrs).consumes();
97  findingRecord<HcalValidationCorrsRcd>();
98  } else if (objectName == "LutMetadata") {
99  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceLutMetadata).consumes();
100  findingRecord<HcalLutMetadataRcd>();
101  } else if (objectName == "DcsValues") {
102  setWhatProduced(this, &HcalTextCalibrations::produceDcsValues);
103  findingRecord<HcalDcsRcd>();
104  } else if (objectName == "DcsMap") {
105  setWhatProduced(this, &HcalTextCalibrations::produceDcsMap);
106  findingRecord<HcalDcsMapRcd>();
107  } else if (objectName == "RecoParams") {
108  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceRecoParams).consumes();
109  findingRecord<HcalRecoParamsRcd>();
110  } else if (objectName == "TimingParams") {
111  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceTimingParams).consumes();
112  findingRecord<HcalTimingParamsRcd>();
113  } else if (objectName == "LongRecoParams") {
114  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceLongRecoParams).consumes();
115  findingRecord<HcalLongRecoParamsRcd>();
116  } else if (objectName == "ZDCLowGainFractions") {
117  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceZDCLowGainFractions).consumes();
118  findingRecord<HcalZDCLowGainFractionsRcd>();
119  } else if (objectName == "MCParams") {
120  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceMCParams).consumes();
121  findingRecord<HcalMCParamsRcd>();
122  } else if (objectName == "FlagHFDigiTimeParams") {
123  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceFlagHFDigiTimeParams).consumes();
124  findingRecord<HcalFlagHFDigiTimeParamsRcd>();
125  } else if (objectName == "SiPMParameters") {
126  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceSiPMParameters).consumes();
127  findingRecord<HcalSiPMParametersRcd>();
128  } else if (objectName == "SiPMCharacteristics") {
129  setWhatProduced(this, &HcalTextCalibrations::produceSiPMCharacteristics);
130  findingRecord<HcalSiPMCharacteristicsRcd>();
131  } else if (objectName == "TPChannelParameters") {
132  mTokens[objectName] = setWhatProduced(this, &HcalTextCalibrations::produceTPChannelParameters).consumes();
133  findingRecord<HcalTPChannelParametersRcd>();
134  } else if (objectName == "TPParameters") {
135  setWhatProduced(this, &HcalTextCalibrations::produceTPParameters);
136  findingRecord<HcalTPParametersRcd>();
137  } else {
138  std::cerr << "HcalTextCalibrations-> Unknown object name '" << objectName << "', known names are: "
139  << "Pedestals PedestalWidths Gains GainWidths PFCuts QIEData QIETypes ChannelQuality ElectronicsMap "
140  << "FrontEndMap ZSThresholds RespCorrs LUTCorrs PFCorrs TimeCorrs L1TriggerObjects "
141  << "ValidationCorrs LutMetadata DcsValues DcsMap "
142  << "RecoParams LongRecoParams ZDCLowGainFraction FlagHFDigiTimeParams MCParams "
143  << "SiPMParameters SiPMCharacteristics TPChannelParameters TPParameters" << std::endl;
144  }
145  }
146  // setWhatProduced(this);
147 }
148 
150 
151 //
152 // member functions
153 //
155  const edm::IOVSyncValue& iTime,
156  edm::ValidityInterval& oInterval) {
157  std::string record = iKey.name();
159 }
160 namespace {
161  template <class T, template <class> class F>
162  std::unique_ptr<T> produce_impl(const std::string& fFile, const HcalTopology* topo = nullptr) {
163  std::ifstream inStream(fFile.c_str());
164  if (!inStream.good()) {
165  std::cerr << "HcalTextCalibrations-> Unable to open file '" << fFile << "'" << std::endl;
166  throw cms::Exception("FileNotFound") << "Unable to open '" << fFile << "'" << std::endl;
167  }
168  auto result = F<T>(topo)(inStream);
169  if (!result) {
170  std::cerr << "HcalTextCalibrations-> Can not read object from file '" << fFile << "'" << std::endl;
171  throw cms::Exception("ReadError") << "Can not read object from file '" << fFile << "'" << std::endl;
172  }
173  return result;
174  }
175  template <class T>
176  std::unique_ptr<T> get_impl(const std::string& fFile) {
177  return produce_impl<T, HcalTextCalibrations::CheckGetObject>(fFile);
178  }
179  template <class T>
180  std::unique_ptr<T> get_impl_topo(const std::string& fFile, const HcalTopology* topo) {
181  return produce_impl<T, HcalTextCalibrations::CheckGetObjectTopo>(fFile, topo);
182  }
183  template <class T>
184  std::unique_ptr<T> create_impl(const std::string& fFile) {
185  return produce_impl<T, HcalTextCalibrations::CheckCreateObject>(fFile);
186  }
187 } // namespace
188 
189 std::unique_ptr<HcalPedestals> HcalTextCalibrations::producePedestals(const HcalPedestalsRcd& rcd) {
190  std::string const n = "Pedestals";
191  return get_impl_topo<HcalPedestals>(mInputs[n], &rcd.get(mTokens[n]));
192 }
193 
194 std::unique_ptr<HcalPedestalWidths> HcalTextCalibrations::producePedestalWidths(const HcalPedestalWidthsRcd& rcd) {
195  std::string const n = "PedestalWidths";
196  return get_impl_topo<HcalPedestalWidths>(mInputs[n], &rcd.get(mTokens[n]));
197 }
198 
199 std::unique_ptr<HcalPedestals> HcalTextCalibrations::produceEffectivePedestals(const HcalPedestalsRcd& rcd) {
200  std::string const n = "EffectivePedestals";
201  return get_impl_topo<HcalPedestals>(mInputs[n], &rcd.get(mTokens[n]));
202 }
203 
204 std::unique_ptr<HcalPedestalWidths> HcalTextCalibrations::produceEffectivePedestalWidths(
205  const HcalPedestalWidthsRcd& rcd) {
206  std::string const n = "EffectivePedestalWidths";
207  return get_impl_topo<HcalPedestalWidths>(mInputs[n], &rcd.get(mTokens[n]));
208 }
209 
210 std::unique_ptr<HcalGains> HcalTextCalibrations::produceGains(const HcalGainsRcd& rcd) {
211  std::string const n = "Gains";
212  return get_impl_topo<HcalGains>(mInputs[n], &rcd.get(mTokens[n]));
213 }
214 
215 std::unique_ptr<HcalGainWidths> HcalTextCalibrations::produceGainWidths(const HcalGainWidthsRcd& rcd) {
216  std::string const n = "GainWidths";
217  return get_impl_topo<HcalGainWidths>(mInputs[n], &rcd.get(mTokens[n]));
218 }
219 
220 std::unique_ptr<HcalPFCuts> HcalTextCalibrations::producePFCuts(const HcalPFCutsRcd& rcd) {
221  std::string const n = "PFCuts";
222  return get_impl_topo<HcalPFCuts>(mInputs[n], &rcd.get(mTokens[n]));
223 }
224 
225 std::unique_ptr<HcalQIEData> HcalTextCalibrations::produceQIEData(const HcalQIEDataRcd& rcd) {
226  std::string const n = "QIEData";
227  return get_impl_topo<HcalQIEData>(mInputs[n], &rcd.get(mTokens[n]));
228 }
229 
230 std::unique_ptr<HcalQIETypes> HcalTextCalibrations::produceQIETypes(const HcalQIETypesRcd& rcd) {
231  std::string const n = "QIETypes";
232  return get_impl_topo<HcalQIETypes>(mInputs[n], &rcd.get(mTokens[n]));
233 }
234 
235 std::unique_ptr<HcalChannelQuality> HcalTextCalibrations::produceChannelQuality(const HcalChannelQualityRcd& rcd) {
236  std::string const n = "ChannelQuality";
237  return get_impl_topo<HcalChannelQuality>(mInputs[n], &rcd.get(mTokens[n]));
238 }
239 
240 std::unique_ptr<HcalZSThresholds> HcalTextCalibrations::produceZSThresholds(const HcalZSThresholdsRcd& rcd) {
241  std::string const n = "ZSThresholds";
242  return get_impl_topo<HcalZSThresholds>(mInputs[n], &rcd.get(mTokens[n]));
243 }
244 
245 std::unique_ptr<HcalRespCorrs> HcalTextCalibrations::produceRespCorrs(const HcalRespCorrsRcd& rcd) {
246  std::string const n = "RespCorrs";
247  return get_impl_topo<HcalRespCorrs>(mInputs[n], &rcd.get(mTokens[n]));
248 }
249 
250 std::unique_ptr<HcalLUTCorrs> HcalTextCalibrations::produceLUTCorrs(const HcalLUTCorrsRcd& rcd) {
251  std::string const n = "LUTCorrs";
252  return get_impl_topo<HcalLUTCorrs>(mInputs[n], &rcd.get(mTokens[n]));
253 }
254 
255 std::unique_ptr<HcalPFCorrs> HcalTextCalibrations::producePFCorrs(const HcalPFCorrsRcd& rcd) {
256  std::string const n = "PFCorrs";
257  return get_impl_topo<HcalPFCorrs>(mInputs[n], &rcd.get(mTokens[n]));
258 }
259 
260 std::unique_ptr<HcalTimeCorrs> HcalTextCalibrations::produceTimeCorrs(const HcalTimeCorrsRcd& rcd) {
261  std::string const n = "TimeCorrs";
262  return get_impl_topo<HcalTimeCorrs>(mInputs[n], &rcd.get(mTokens[n]));
263 }
264 
265 std::unique_ptr<HcalL1TriggerObjects> HcalTextCalibrations::produceL1TriggerObjects(const HcalL1TriggerObjectsRcd& rcd) {
266  std::string const n = "L1TriggerObjects";
267  return get_impl_topo<HcalL1TriggerObjects>(mInputs[n], &rcd.get(mTokens[n]));
268 }
269 
270 std::unique_ptr<HcalElectronicsMap> HcalTextCalibrations::produceElectronicsMap(const HcalElectronicsMapRcd& rcd) {
271  return create_impl<HcalElectronicsMap>(mInputs["ElectronicsMap"]);
272 }
273 
274 std::unique_ptr<HcalFrontEndMap> HcalTextCalibrations::produceFrontEndMap(const HcalFrontEndMapRcd& rcd) {
275  return create_impl<HcalFrontEndMap>(mInputs["FrontEndMap"]);
276 }
277 
278 std::unique_ptr<HcalValidationCorrs> HcalTextCalibrations::produceValidationCorrs(const HcalValidationCorrsRcd& rcd) {
279  std::string const n = "ValidationCorrs";
280  return get_impl_topo<HcalValidationCorrs>(mInputs[n], &rcd.get(mTokens[n]));
281 }
282 
283 std::unique_ptr<HcalLutMetadata> HcalTextCalibrations::produceLutMetadata(const HcalLutMetadataRcd& rcd) {
284  std::string const n = "LutMetadata";
285  return get_impl_topo<HcalLutMetadata>(mInputs[n], &rcd.get(mTokens[n]));
286 }
287 
288 std::unique_ptr<HcalDcsValues> HcalTextCalibrations::produceDcsValues(HcalDcsRcd const& rcd) {
289  return get_impl<HcalDcsValues>(mInputs["DcsValues"]);
290 }
291 
292 std::unique_ptr<HcalDcsMap> HcalTextCalibrations::produceDcsMap(const HcalDcsMapRcd& rcd) {
293  return create_impl<HcalDcsMap>(mInputs["DcsMap"]);
294 }
295 
296 std::unique_ptr<HcalRecoParams> HcalTextCalibrations::produceRecoParams(const HcalRecoParamsRcd& rcd) {
297  std::string const n = "RecoParams";
298  return get_impl_topo<HcalRecoParams>(mInputs[n], &rcd.get(mTokens[n]));
299 }
300 
301 std::unique_ptr<HcalLongRecoParams> HcalTextCalibrations::produceLongRecoParams(const HcalLongRecoParamsRcd& rcd) {
302  std::string const n = "LongRecoParams";
303  return get_impl_topo<HcalLongRecoParams>(mInputs[n], &rcd.get(mTokens[n]));
304 }
305 
306 std::unique_ptr<HcalZDCLowGainFractions> HcalTextCalibrations::produceZDCLowGainFractions(
307  const HcalZDCLowGainFractionsRcd& rcd) {
308  std::string const n = "ZDCLowGainFractions";
309  return get_impl_topo<HcalZDCLowGainFractions>(mInputs[n], &rcd.get(mTokens[n]));
310 }
311 
312 std::unique_ptr<HcalTimingParams> HcalTextCalibrations::produceTimingParams(const HcalTimingParamsRcd& rcd) {
313  std::string const n = "TimingParams";
314  return get_impl_topo<HcalTimingParams>(mInputs[n], &rcd.get(mTokens[n]));
315 }
316 std::unique_ptr<HcalMCParams> HcalTextCalibrations::produceMCParams(const HcalMCParamsRcd& rcd) {
317  std::string const n = "MCParams";
318  return get_impl_topo<HcalMCParams>(mInputs[n], &rcd.get(mTokens[n]));
319 }
320 
321 std::unique_ptr<HcalFlagHFDigiTimeParams> HcalTextCalibrations::produceFlagHFDigiTimeParams(
322  const HcalFlagHFDigiTimeParamsRcd& rcd) {
323  std::string const n = "FlagHFDigiTimeParams";
324  return get_impl_topo<HcalFlagHFDigiTimeParams>(mInputs[n], &rcd.get(mTokens[n]));
325 }
326 
327 std::unique_ptr<HcalSiPMParameters> HcalTextCalibrations::produceSiPMParameters(const HcalSiPMParametersRcd& rcd) {
328  std::string const n = "SiPMParameters";
329  return get_impl_topo<HcalSiPMParameters>(mInputs[n], &rcd.get(mTokens[n]));
330 }
331 
332 std::unique_ptr<HcalSiPMCharacteristics> HcalTextCalibrations::produceSiPMCharacteristics(
333  const HcalSiPMCharacteristicsRcd& rcd) {
334  return create_impl<HcalSiPMCharacteristics>(mInputs["SiPMCharacteristics"]);
335 }
336 
337 std::unique_ptr<HcalTPChannelParameters> HcalTextCalibrations::produceTPChannelParameters(
338  const HcalTPChannelParametersRcd& rcd) {
339  std::string const n = "TPChannelParameters";
340  return get_impl_topo<HcalTPChannelParameters>(mInputs[n], &rcd.get(mTokens[n]));
341 }
342 
343 std::unique_ptr<HcalTPParameters> HcalTextCalibrations::produceTPParameters(const HcalTPParametersRcd& rcd) {
344  return get_impl<HcalTPParameters>(mInputs["TPParameters"]);
345 }
std::unique_ptr< HcalPedestals > producePedestals(const HcalPedestalsRcd &rcd)
std::unique_ptr< HcalGainWidths > produceGainWidths(const HcalGainWidthsRcd &rcd)
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::unique_ptr< HcalZDCLowGainFractions > produceZDCLowGainFractions(const HcalZDCLowGainFractionsRcd &rcd)
std::unique_ptr< HcalPedestals > produceEffectivePedestals(const HcalPedestalsRcd &rcd)
std::unique_ptr< HcalL1TriggerObjects > produceL1TriggerObjects(const HcalL1TriggerObjectsRcd &rcd)
std::unique_ptr< HcalPedestalWidths > producePedestalWidths(const HcalPedestalWidthsRcd &rcd)
std::unique_ptr< HcalLongRecoParams > produceLongRecoParams(const HcalLongRecoParamsRcd &rcd)
std::unique_ptr< HcalMCParams > produceMCParams(const HcalMCParamsRcd &rcd)
std::unique_ptr< HcalLUTCorrs > produceLUTCorrs(const HcalLUTCorrsRcd &rcd)
std::unique_ptr< HcalPFCorrs > producePFCorrs(const HcalPFCorrsRcd &rcd)
static const IOVSyncValue & endOfTime()
Definition: IOVSyncValue.cc:82
std::unique_ptr< HcalDcsValues > produceDcsValues(HcalDcsRcd const &rcd)
std::unique_ptr< HcalQIEData > produceQIEData(const HcalQIEDataRcd &rcd)
std::pair< Time_t, Time_t > ValidityInterval
Definition: Time.h:17
void setIntervalFor(const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &, edm::ValidityInterval &) override
std::unique_ptr< HcalSiPMCharacteristics > produceSiPMCharacteristics(const HcalSiPMCharacteristicsRcd &rcd)
std::unique_ptr< HcalPFCuts > producePFCuts(const HcalPFCutsRcd &rcd)
std::unique_ptr< T > produce_impl(const std::string &fFile)
std::unique_ptr< HcalZSThresholds > produceZSThresholds(const HcalZSThresholdsRcd &rcd)
std::unique_ptr< HcalSiPMParameters > produceSiPMParameters(const HcalSiPMParametersRcd &rcd)
std::unique_ptr< HcalDcsMap > produceDcsMap(const HcalDcsMapRcd &rcd)
static const IOVSyncValue & beginOfTime()
Definition: IOVSyncValue.cc:88
std::unique_ptr< HcalRecoParams > produceRecoParams(const HcalRecoParamsRcd &rcd)
std::unique_ptr< HcalChannelQuality > produceChannelQuality(const HcalChannelQualityRcd &rcd)
std::unique_ptr< HcalPedestalWidths > produceEffectivePedestalWidths(const HcalPedestalWidthsRcd &rcd)
HcalTextCalibrations(const edm::ParameterSet &)
std::unique_ptr< HcalTPChannelParameters > produceTPChannelParameters(const HcalTPChannelParametersRcd &rcd)
std::unique_ptr< HcalQIETypes > produceQIETypes(const HcalQIETypesRcd &rcd)
Namespace of DDCMS conversion namespace.
std::unique_ptr< HcalTimingParams > produceTimingParams(const HcalTimingParamsRcd &rcd)
std::unique_ptr< HcalTPParameters > produceTPParameters(const HcalTPParametersRcd &rcd)
std::unique_ptr< HcalElectronicsMap > produceElectronicsMap(const HcalElectronicsMapRcd &rcd)
std::unique_ptr< HcalGains > produceGains(const HcalGainsRcd &rcd)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:80
std::unique_ptr< HcalRespCorrs > produceRespCorrs(const HcalRespCorrsRcd &rcd)
std::unique_ptr< HcalFrontEndMap > produceFrontEndMap(const HcalFrontEndMapRcd &rcd)
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:163
std::unique_ptr< HcalLutMetadata > produceLutMetadata(const HcalLutMetadataRcd &rcd)
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
std::unique_ptr< HcalTimeCorrs > produceTimeCorrs(const HcalTimeCorrsRcd &rcd)
std::unique_ptr< HcalFlagHFDigiTimeParams > produceFlagHFDigiTimeParams(const HcalFlagHFDigiTimeParamsRcd &rcd)
std::unique_ptr< HcalValidationCorrs > produceValidationCorrs(const HcalValidationCorrsRcd &rcd)