56 template <
typename DataType>
61 typedef std::map<EcalLogicID, DataType> DataSet;
62 typedef double (*DataExtractor)(
DataType const &);
63 typedef std::map<std::string, DataExtractor> ExtractorList;
67 for (
typename ExtractorList::const_iterator eItr(_extractors.begin()); eItr != _extractors.end(); ++eItr)
68 if (_formula.find(eItr->first) != std::string::npos)
69 varMap[eItr->first] = eItr->second;
71 if (varMap.size() > 4)
72 throw cms::Exception(
"EcalDQM") << _formula <<
" has too many variables";
77 char varChars[4][2] = {
"x",
"y",
"z",
"t"};
78 for (
typename ExtractorList::iterator vItr(varMap.begin()); vItr != varMap.end(); ++vItr)
79 formula.ReplaceAll(vItr->first, varChars[iV++]);
81 TFormula tformula(
"formula",
formula);
82 if (tformula.Compile() != 0)
83 throw cms::Exception(
"EcalDQM") << _formula <<
" could not be compiled";
90 for (
typename DataSet::const_iterator dItr(
dataSet.begin()); dItr !=
dataSet.end(); ++dItr) {
93 for (
typename ExtractorList::iterator vItr(varMap.begin()); vItr != varMap.end(); ++vItr)
94 vars[iV++] = vItr->second(dItr->second);
107 return double(dat.getProblematicEvents());
111 return double(dat.getProblemsGainZero());
114 return double(dat.getProblemsGainSwitch());
123 extList[
"processed_events"] = [](
MonTTConsistencyDat const &dat) {
return double(dat.getProcessedEvents()); };
124 extList[
"problematic_events"] = [](
MonTTConsistencyDat const &dat) {
return double(dat.getProblematicEvents()); };
125 extList[
"problems_id"] = [](
MonTTConsistencyDat const &dat) {
return double(dat.getProblemsID()); };
126 extList[
"problems_size"] = [](
MonTTConsistencyDat const &dat) {
return double(dat.getProblemsSize()); };
127 extList[
"problems_LV1"] = [](
MonTTConsistencyDat const &dat) {
return double(dat.getProblemsLV1()); };
128 extList[
"problems_bunch_X"] = [](
MonTTConsistencyDat const &dat) {
return double(dat.getProblemsBunchX()); };
136 extList[
"processed_events"] = [](
MonMemChConsistencyDat const &dat) {
return double(dat.getProcessedEvents()); };
138 return double(dat.getProblematicEvents());
141 extList[
"problems_gain_zero"] = [](
MonMemChConsistencyDat const &dat) {
return double(dat.getProblemsGainZero()); };
143 return double(dat.getProblemsGainSwitch());
152 extList[
"processed_events"] = [](
MonMemTTConsistencyDat const &dat) {
return double(dat.getProcessedEvents()); };
154 return double(dat.getProblematicEvents());
157 extList[
"problems_size"] = [](
MonMemTTConsistencyDat const &dat) {
return double(dat.getProblemsSize()); };
159 extList[
"problems_bunch_X"] = [](
MonMemTTConsistencyDat const &dat) {
return double(dat.getProblemsBunchX()); };
167 extList[
"apd_mean"] = [](
MonLaserBlueDat const &dat) {
return double(dat.getAPDMean()); };
168 extList[
"apd_rms"] = [](
MonLaserBlueDat const &dat) {
return double(dat.getAPDRMS()); };
169 extList[
"apd_over_pn_mean"] = [](
MonLaserBlueDat const &dat) {
return double(dat.getAPDOverPNMean()); };
170 extList[
"apd_over_pn_rms"] = [](
MonLaserBlueDat const &dat) {
return double(dat.getAPDOverPNRMS()); };
182 extList[
"adc_mean_g1"] = [](
MonPNBlueDat const &dat) {
return double(dat.getADCMeanG1()); };
183 extList[
"adc_rms_g1"] = [](
MonPNBlueDat const &dat) {
return double(dat.getADCRMSG1()); };
184 extList[
"ped_mean_g1"] = [](
MonPNBlueDat const &dat) {
return double(dat.getPedMeanG1()); };
185 extList[
"ped_rms_g1"] = [](
MonPNBlueDat const &dat) {
return double(dat.getPedRMSG1()); };
186 extList[
"adc_mean_g16"] = [](
MonPNBlueDat const &dat) {
return double(dat.getADCMeanG16()); };
187 extList[
"adc_rms_g16"] = [](
MonPNBlueDat const &dat) {
return double(dat.getADCRMSG16()); };
188 extList[
"ped_mean_g16"] = [](
MonPNBlueDat const &dat) {
return double(dat.getPedMeanG16()); };
189 extList[
"ped_rms_g16"] = [](
MonPNBlueDat const &dat) {
return double(dat.getPedMeanG16()); };
197 extList[
"apd_mean"] = [](
MonLaserGreenDat const &dat) {
return double(dat.getAPDMean()); };
198 extList[
"apd_rms"] = [](
MonLaserGreenDat const &dat) {
return double(dat.getAPDRMS()); };
199 extList[
"apd_over_pn_mean"] = [](
MonLaserGreenDat const &dat) {
return double(dat.getAPDOverPNMean()); };
200 extList[
"apd_over_pn_rms"] = [](
MonLaserGreenDat const &dat) {
return double(dat.getAPDOverPNRMS()); };
212 extList[
"adc_mean_g1"] = [](
MonPNGreenDat const &dat) {
return double(dat.getADCMeanG1()); };
213 extList[
"adc_rms_g1"] = [](
MonPNGreenDat const &dat) {
return double(dat.getADCRMSG1()); };
214 extList[
"ped_mean_g1"] = [](
MonPNGreenDat const &dat) {
return double(dat.getPedMeanG1()); };
215 extList[
"ped_rms_g1"] = [](
MonPNGreenDat const &dat) {
return double(dat.getPedRMSG1()); };
216 extList[
"adc_mean_g16"] = [](
MonPNGreenDat const &dat) {
return double(dat.getADCMeanG16()); };
217 extList[
"adc_rms_g16"] = [](
MonPNGreenDat const &dat) {
return double(dat.getADCRMSG16()); };
218 extList[
"ped_mean_g16"] = [](
MonPNGreenDat const &dat) {
return double(dat.getPedMeanG16()); };
219 extList[
"ped_rms_g16"] = [](
MonPNGreenDat const &dat) {
return double(dat.getPedMeanG16()); };
227 extList[
"apd_mean"] = [](
MonLaserIRedDat const &dat) {
return double(dat.getAPDMean()); };
228 extList[
"apd_rms"] = [](
MonLaserIRedDat const &dat) {
return double(dat.getAPDRMS()); };
229 extList[
"apd_over_pn_mean"] = [](
MonLaserIRedDat const &dat) {
return double(dat.getAPDOverPNMean()); };
230 extList[
"apd_over_pn_rms"] = [](
MonLaserIRedDat const &dat) {
return double(dat.getAPDOverPNRMS()); };
242 extList[
"adc_mean_g1"] = [](
MonPNIRedDat const &dat) {
return double(dat.getADCMeanG1()); };
243 extList[
"adc_rms_g1"] = [](
MonPNIRedDat const &dat) {
return double(dat.getADCRMSG1()); };
244 extList[
"ped_mean_g1"] = [](
MonPNIRedDat const &dat) {
return double(dat.getPedMeanG1()); };
245 extList[
"ped_rms_g1"] = [](
MonPNIRedDat const &dat) {
return double(dat.getPedRMSG1()); };
246 extList[
"adc_mean_g16"] = [](
MonPNIRedDat const &dat) {
return double(dat.getADCMeanG16()); };
247 extList[
"adc_rms_g16"] = [](
MonPNIRedDat const &dat) {
return double(dat.getADCRMSG16()); };
248 extList[
"ped_mean_g16"] = [](
MonPNIRedDat const &dat) {
return double(dat.getPedMeanG16()); };
249 extList[
"ped_rms_g16"] = [](
MonPNIRedDat const &dat) {
return double(dat.getPedMeanG16()); };
257 extList[
"apd_mean"] = [](
MonLaserRedDat const &dat) {
return double(dat.getAPDMean()); };
258 extList[
"apd_rms"] = [](
MonLaserRedDat const &dat) {
return double(dat.getAPDRMS()); };
259 extList[
"apd_over_pn_mean"] = [](
MonLaserRedDat const &dat) {
return double(dat.getAPDOverPNMean()); };
260 extList[
"apd_over_pn_rms"] = [](
MonLaserRedDat const &dat) {
return double(dat.getAPDOverPNRMS()); };
272 extList[
"adc_mean_g1"] = [](
MonPNRedDat const &dat) {
return double(dat.getADCMeanG1()); };
273 extList[
"adc_rms_g1"] = [](
MonPNRedDat const &dat) {
return double(dat.getADCRMSG1()); };
274 extList[
"ped_mean_g1"] = [](
MonPNRedDat const &dat) {
return double(dat.getPedMeanG1()); };
275 extList[
"ped_rms_g1"] = [](
MonPNRedDat const &dat) {
return double(dat.getPedRMSG1()); };
276 extList[
"adc_mean_g16"] = [](
MonPNRedDat const &dat) {
return double(dat.getADCMeanG16()); };
277 extList[
"adc_rms_g16"] = [](
MonPNRedDat const &dat) {
return double(dat.getADCRMSG16()); };
278 extList[
"ped_mean_g16"] = [](
MonPNRedDat const &dat) {
return double(dat.getPedMeanG16()); };
279 extList[
"ped_rms_g16"] = [](
MonPNRedDat const &dat) {
return double(dat.getPedMeanG16()); };
287 extList[
"ped_mean_g1"] = [](
MonPedestalsDat const &dat) {
return double(dat.getPedMeanG1()); };
288 extList[
"ped_rms_g1"] = [](
MonPedestalsDat const &dat) {
return double(dat.getPedRMSG1()); };
289 extList[
"ped_mean_g6"] = [](
MonPedestalsDat const &dat) {
return double(dat.getPedMeanG6()); };
290 extList[
"ped_rms_g6"] = [](
MonPedestalsDat const &dat) {
return double(dat.getPedRMSG6()); };
291 extList[
"ped_mean_g12"] = [](
MonPedestalsDat const &dat) {
return double(dat.getPedMeanG12()); };
292 extList[
"ped_rms_g12"] = [](
MonPedestalsDat const &dat) {
return double(dat.getPedRMSG12()); };
300 extList[
"ped_mean_g1"] = [](
MonPNPedDat const &dat) {
return double(dat.getPedMeanG1()); };
301 extList[
"ped_rms_g1"] = [](
MonPNPedDat const &dat) {
return double(dat.getPedRMSG1()); };
302 extList[
"ped_mean_g16"] = [](
MonPNPedDat const &dat) {
return double(dat.getPedMeanG16()); };
303 extList[
"ped_rms_g16"] = [](
MonPNPedDat const &dat) {
return double(dat.getPedRMSG16()); };
311 extList[
"adc_mean_g12"] = [](
MonPedestalsOnlineDat const &dat) {
return double(dat.getADCMeanG12()); };
312 extList[
"adc_rms_g12"] = [](
MonPedestalsOnlineDat const &dat) {
return double(dat.getADCRMSG12()); };
320 extList[
"adc_mean_g1"] = [](
MonTestPulseDat const &dat) {
return double(dat.getADCMeanG1()); };
321 extList[
"adc_rms_g1"] = [](
MonTestPulseDat const &dat) {
return double(dat.getADCRMSG1()); };
322 extList[
"adc_mean_g6"] = [](
MonTestPulseDat const &dat) {
return double(dat.getADCMeanG6()); };
323 extList[
"adc_rms_g6"] = [](
MonTestPulseDat const &dat) {
return double(dat.getADCRMSG6()); };
324 extList[
"adc_mean_g12"] = [](
MonTestPulseDat const &dat) {
return double(dat.getADCMeanG12()); };
325 extList[
"adc_rms_g12"] = [](
MonTestPulseDat const &dat) {
return double(dat.getADCRMSG12()); };
333 extList[
"g1_avg_sample_01"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[0]); };
334 extList[
"g1_avg_sample_02"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[1]); };
335 extList[
"g1_avg_sample_03"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[2]); };
336 extList[
"g1_avg_sample_04"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[3]); };
337 extList[
"g1_avg_sample_05"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[4]); };
338 extList[
"g1_avg_sample_06"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[5]); };
339 extList[
"g1_avg_sample_07"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[6]); };
340 extList[
"g1_avg_sample_08"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[7]); };
341 extList[
"g1_avg_sample_09"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[8]); };
342 extList[
"g1_avg_sample_10"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(1)[9]); };
343 extList[
"g6_avg_sample_01"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[0]); };
344 extList[
"g6_avg_sample_02"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[1]); };
345 extList[
"g6_avg_sample_03"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[2]); };
346 extList[
"g6_avg_sample_04"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[3]); };
347 extList[
"g6_avg_sample_05"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[4]); };
348 extList[
"g6_avg_sample_06"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[5]); };
349 extList[
"g6_avg_sample_07"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[6]); };
350 extList[
"g6_avg_sample_08"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[7]); };
351 extList[
"g6_avg_sample_09"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[8]); };
352 extList[
"g6_avg_sample_10"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(6)[9]); };
353 extList[
"g12_avg_sample_01"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[0]); };
354 extList[
"g12_avg_sample_02"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[1]); };
355 extList[
"g12_avg_sample_03"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[2]); };
356 extList[
"g12_avg_sample_04"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[3]); };
357 extList[
"g12_avg_sample_05"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[4]); };
358 extList[
"g12_avg_sample_06"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[5]); };
359 extList[
"g12_avg_sample_07"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[6]); };
360 extList[
"g12_avg_sample_08"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[7]); };
361 extList[
"g12_avg_sample_09"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[8]); };
362 extList[
"g12_avg_sample_10"] = [](
MonPulseShapeDat const &dat) {
return double(dat.getSamples(12)[9]); };
370 extList[
"adc_mean_g1"] = [](
MonPNMGPADat const &dat) {
return double(dat.getADCMeanG1()); };
371 extList[
"adc_rms_g1"] = [](
MonPNMGPADat const &dat) {
return double(dat.getADCRMSG1()); };
372 extList[
"ped_mean_g1"] = [](
MonPNMGPADat const &dat) {
return double(dat.getPedMeanG1()); };
373 extList[
"ped_rms_g1"] = [](
MonPNMGPADat const &dat) {
return double(dat.getPedRMSG1()); };
374 extList[
"adc_mean_g16"] = [](
MonPNMGPADat const &dat) {
return double(dat.getADCMeanG16()); };
375 extList[
"adc_rms_g16"] = [](
MonPNMGPADat const &dat) {
return double(dat.getADCRMSG16()); };
376 extList[
"ped_mean_g16"] = [](
MonPNMGPADat const &dat) {
return double(dat.getPedMeanG16()); };
377 extList[
"ped_rms_g16"] = [](
MonPNMGPADat const &dat) {
return double(dat.getPedRMSG16()); };
387 extList[
"vpt_mean"] = [](
MonLed1Dat const &dat) {
return double(dat.getVPTMean()); };
388 extList[
"vpt_rms"] = [](
MonLed1Dat const &dat) {
return double(dat.getVPTRMS()); };
389 extList[
"vpt_over_pn_mean"] = [](
MonLed1Dat const &dat) {
return double(dat.getVPTOverPNMean()); };
390 extList[
"vpt_over_pn_rms"] = [](
MonLed1Dat const &dat) {
return double(dat.getVPTOverPNRMS()); };
402 extList[
"vpt_mean"] = [](
MonLed2Dat const &dat) {
return double(dat.getVPTMean()); };
403 extList[
"vpt_rms"] = [](
MonLed2Dat const &dat) {
return double(dat.getVPTRMS()); };
404 extList[
"vpt_over_pn_mean"] = [](
MonLed2Dat const &dat) {
return double(dat.getVPTOverPNMean()); };
405 extList[
"vpt_over_pn_rms"] = [](
MonLed2Dat const &dat) {
return double(dat.getVPTOverPNRMS()); };
417 extList[
"events_over_low_threshold"] = [](
MonOccupancyDat const &dat) {
418 return double(dat.getEventsOverLowThreshold());
420 extList[
"events_over_high_threshold"] = [](
MonOccupancyDat const &dat) {
421 return double(dat.getEventsOverHighThreshold());
423 extList[
"avg_energy"] = [](
MonOccupancyDat const &dat) {
return double(dat.getAvgEnergy()); };