22 bool operator () (
DetId fFirst,
DetId fSecond)
const {
25 if (
first.genericSubdet () !=
second.genericSubdet ())
return first.genericSubdet () <
second.genericSubdet ();
26 if (
first.isHcalDetId ()) {
29 return f1.zside () != s1.zside () ?
f1.zside () < s1.zside () :
30 f1.iphi () != s1.iphi () ?
f1.iphi () < s1.iphi () :
31 f1.ietaAbs () != s1.ietaAbs () ?
f1.ietaAbs () < s1.ietaAbs () :
32 f1.depth () < s1.depth ();
39 class HcalElectronicsIdLess {
54 std::vector <std::string>
splitString (
const std::string& fLine) {
55 std::vector <std::string>
result;
58 for (
unsigned i = 0;
i <= fLine.size ();
i++) {
59 if (fLine [
i] ==
' ' ||
i == fLine.size ()) {
61 std::string item (fLine, start,
i-start);
62 result.push_back (item);
68 if (empty) empty =
false;
75 std::vector <unsigned int>
result;
78 for (
unsigned i = 0;
i <= fLine.size ();
i++) {
79 if (fLine [
i] ==
',' ||
i == fLine.size ()) {
81 std::string itemString (fLine, start,
i-start);
82 result.push_back (atoi (itemString.c_str()) );
88 if (empty) empty =
false;
95 std::vector <float>
result;
98 for (
unsigned i = 0;
i <= fLine.size ();
i++) {
99 if (fLine [
i] ==
',' ||
i == fLine.size ()) {
101 std::string itemString (fLine, start,
i-start);
102 result.push_back (atof (itemString.c_str()) );
108 if (empty) empty =
false;
115 std::vector <double>
result;
118 for (
unsigned i = 0;
i <= fLine.size ();
i++) {
119 if (fLine [
i] ==
',' ||
i == fLine.size ()) {
121 std::string itemString (fLine, start,
i-start);
122 result.push_back (atof (itemString.c_str()) );
128 if (empty) empty =
false;
136 return converter.getId ();
142 sprintf (buffer,
" %15s %15s %15s %15s",
143 converter.getField1 ().c_str (), converter.getField2 ().c_str (), converter.getField3 ().c_str (),converter.getFlavor ().c_str ());
150 sprintf (buffer,
" %5s %4s %4s %10s",
151 converter.getField1 ().c_str (), converter.getField2 ().c_str (), converter.getField3 ().c_str (),converter.getFlavor ().c_str ());
160 std::istringstream iss(s);
161 return !(iss >>
f >>
t).
fail();
164 template <
class T,
class S>
166 if (!fObject) fObject =
new T;
168 while (fInput.getline(buffer, 1024)) {
169 if (buffer [0] ==
'#')
continue;
170 std::vector <std::string> items =
splitString (std::string (buffer));
171 if (items.size()==0)
continue;
172 if (items.size () < 8) {
173 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 8 items: eta, phi, depth, subdet, 4x values" << std::endl;
182 fCondObject =
new S(
id, atof (items [4].c_str()), atof (items [5].c_str()),
183 atof (items [6].c_str()), atof (items [7].c_str()));
184 fObject->addValues(*fCondObject);
195 sprintf (buffer,
"# %15s %15s %15s %15s %8s %8s %8s %8s %10s\n",
"eta",
"phi",
"dep",
"det",
"cap0",
"cap1",
"cap2",
"cap3",
"DetId");
197 std::vector<DetId> channels = fObject.getAllChannels ();
198 std::sort (channels.begin(), channels.end(), DetIdLess ());
199 for (std::vector<DetId>::iterator channel = channels.begin ();
200 channel != channels.end ();
202 const float*
values = fObject.getValues (*channel)->getValues ();
205 sprintf (buffer,
" %8.5f %8.5f %8.5f %8.5f %10X\n",
206 values[0], values[1], values[2], values[3], channel->rawId ());
213 template <
class T,
class S>
215 if (!fObject) fObject =
new T;
217 while (fInput.getline(buffer, 1024)) {
218 if (buffer [0] ==
'#')
continue;
219 std::vector <std::string> items =
splitString (std::string (buffer));
220 if (items.size()==0)
continue;
221 if (items.size () < 5) {
222 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 5 items: eta, phi, depth, subdet, value" << std::endl;
231 fCondObject =
new S(
id, atof (items [4].c_str()) );
232 fObject->addValues(*fCondObject);
242 sprintf (buffer,
"# %15s %15s %15s %15s %8s %10s\n",
"eta",
"phi",
"dep",
"det",
"value",
"DetId");
244 std::vector<DetId> channels = fObject.getAllChannels ();
245 std::sort (channels.begin(), channels.end(), DetIdLess ());
246 for (std::vector<DetId>::iterator channel = channels.begin ();
247 channel != channels.end ();
249 const float value = fObject.getValues (*channel)->getValue ();
251 sprintf (buffer,
" %8.5f %10X\n",
252 value, channel->rawId ());
258 template <
class T,
class S>
260 if (!fObject) fObject =
new T;
262 while (fInput.getline(buffer, 1024)) {
263 if (buffer [0] ==
'#')
continue;
264 std::vector <std::string> items =
splitString (std::string (buffer));
265 if (items.size()==0)
continue;
266 if (items.size () < 5) {
267 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 5 items: eta, phi, depth, subdet, value" << std::endl;
276 fCondObject =
new S(
id, atoi (items [4].c_str()) );
277 fObject->addValues(*fCondObject);
287 sprintf (buffer,
"# %15s %15s %15s %15s %8s %10s\n",
"eta",
"phi",
"dep",
"det",
"value",
"DetId");
289 std::vector<DetId> channels = fObject.getAllChannels ();
290 std::sort (channels.begin(), channels.end(), DetIdLess ());
291 for (std::vector<DetId>::iterator channel = channels.begin ();
292 channel != channels.end ();
294 const int value = fObject.getValues (*channel)->getValue ();
296 sprintf (buffer,
" %15d %10X\n",
297 value, channel->rawId ());
303 template <
class T,
class S>
305 if (!fObject) fObject =
new T;
307 while (fInput.getline(buffer, 1024)) {
308 if (buffer [0] ==
'#')
continue;
309 std::vector <std::string> items =
splitString (std::string (buffer));
310 if (items.size()==0)
continue;
312 fCondObject =
new S(firstid.
rawId());
313 for(
int j = 0;
j != 10;
j++) fCondObject->setValue(atoi(items[4].c_str()), 0,
j, atof(items[
j+5].c_str()));
314 for(
int i = 1;
i != 40;
i++){
315 fInput.getline(buffer, 1024);
318 if(
id.rawId() != firstid.
rawId())
break;
319 for(
int j = 0;
j != 10;
j++) fCondObject->setValue(atoi(items[4].c_str()),
i%10,
j, atof(items[
j+5].c_str()));
321 fObject->addValues(*fCondObject);
330 sprintf (buffer,
"# %5s %5s %5s %5s %5s %8s %8s %8s %8s %8s %8s %8s %8s %8s %8s %10s\n",
331 "eta",
"phi",
"dep",
"det",
"capid",
"c0",
"c1",
"c2",
"c3",
"c4",
"c5",
"c6",
"c7",
"c8",
"c9",
"DetId");
333 std::vector<DetId> channels = fObject.getAllChannels ();
334 std::sort (channels.begin(), channels.end(), DetIdLess ());
335 for (std::vector<DetId>::iterator channel = channels.begin ();
336 channel != channels.end ();
339 for(
int m = 0;
m != 4;
m++){
340 for(
int i = 0;
i != 10;
i++){
341 for(
int j = 0;
j != 10;
j++){
343 thisline[
j] = fObject.getValues(*channel)->getValue(
m,
i,
j);
347 sprintf(buffer,
" %5i %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %10X\n",
348 m, thisline[0], thisline[1], thisline[2], thisline[3], thisline[4], thisline[5], thisline[6], thisline[7],
349 thisline[8], thisline[9], channel->rawId());
393 while (fInput.getline(buffer, 1024)) {
394 if (buffer [0] ==
'#')
continue;
395 std::vector <std::string> items =
splitString (std::string (buffer));
396 if (items.size()==0)
continue;
397 if (items.size () < 6) {
398 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 6 items: eta, phi, depth, subdet, param1, param2" << std::endl;
403 int packingScheme =0;
404 if(items.size ()>22) {
405 packingScheme = atoi (items [22].c_str());
410 if(packingScheme==0) {
411 param1=atoi (items [4].c_str());
412 param2=atoi (items [5].c_str());
415 if(packingScheme==1) {
417 int aabits[6]= {1,1, 8, 4, 4, 9};
418 int aamax[ 6]= {1,1,255,15,15,511};
420 int bbbits[10]={1, 4,1, 4,1, 4, 4, 4, 4, 4};
421 int bbmax [10]={1,15,1,15,1,15,15,15,15,15};
427 for(
int i=0;
i<6;
i++) {
430 float phase=atof (items [j].c_str());
431 float xphase=(phase+32.0)*4.0;
434 aa=atoi (items [j].c_str());
436 if(aa>aamax[
i] || aa<0) {
437 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n value for a"<<
i<<
" should be less than"<<aamax[
i]<< std::endl;
439 param1=param1|aa<<aashift;
440 aashift=aashift+aabits[
i];
446 for(
int i=0;
i<10;
i++) {
448 bb=atoi (items [j].c_str());
450 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n value for b"<<i<<
" should be less than"<<bbmax[
i]<< std::endl;
452 param2=param2|bb<<bbshift;
453 bbshift=bbshift+bbbits[
i];
474 std::sort (channels.begin(), channels.end(), DetIdLess ());
476 for (std::vector<DetId>::iterator channel = channels.begin ();
477 channel != channels.end ();
486 if(packingScheme==0) {
489 sprintf (buffer,
"# %15s %15s %15s %15s %18s %15s %10s\n",
"eta",
"phi",
"dep",
"det",
"firstSample",
"samplesToAdd",
"DetId");
492 sprintf (buffer,
" %15d %15d %16X\n",
497 if(packingScheme==1) {
500 char lineT[100],lineA[200],lineB[200];
502 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
503 sprintf (lineA,
" %31s",
"a0: correctForPhaseContainment"); fOutput << lineA;
504 sprintf (lineB,
" %36s",
"b0: useLeakCorrection\n"); fOutput << lineB;
506 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
507 sprintf (lineA,
" %31s",
"a1: correctForLeadingEdge"); fOutput << lineA;
508 sprintf (lineB,
" %36s",
"b1: leakCorrectionID\n"); fOutput << lineB;
510 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
511 sprintf (lineA,
" %31s",
"a2: correctionPhaseNS"); fOutput << lineA;
512 sprintf (lineB,
" %36s",
"b2: correctForTimeslew\n"); fOutput << lineB;
514 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
515 sprintf (lineA,
" %31s",
"a3: firstSample"); fOutput << lineA;
516 sprintf (lineB,
" %36s",
"b3: timeslewCorrectionID\n"); fOutput << lineB;
518 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
519 sprintf (lineA,
" %31s",
"a4: samplesToAdd"); fOutput << lineA;
520 sprintf (lineB,
" %36s",
"b4: correctTiming\n"); fOutput << lineB;
522 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
523 sprintf (lineA,
" %31s",
"a5: pulseShapeID"); fOutput << lineA;
524 sprintf (lineB,
" %36s",
"b5: firstAuxTS\n"); fOutput << lineB;
526 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
527 sprintf (lineA,
" %31s",
" "); fOutput << lineA;
528 sprintf (lineB,
" %36s",
"b6: specialCaseID\n"); fOutput << lineB;
530 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
531 sprintf (lineA,
" %31s",
" "); fOutput << lineA;
532 sprintf (lineB,
" %36s",
"b7: noiseFlaggingID\n"); fOutput << lineB;
534 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
535 sprintf (lineA,
" %31s",
" "); fOutput << lineA;
536 sprintf (lineB,
" %36s",
"b8: pileupCleaningID\n"); fOutput << lineB;
538 sprintf (lineT,
"#%50s",
" "); fOutput << lineT;
539 sprintf (lineA,
" %31s",
" "); fOutput << lineA;
540 sprintf (lineB,
" %36s",
"b9: packingScheme\n"); fOutput << lineB;
543 sprintf (lineT,
"# %5s %4s %4s %10s %11s %10s %10s",
"eta",
"phi",
"dep",
"det",
"param1",
"param2",
"DetId");
546 sprintf (lineA,
" %6s %4s %6s %4s %4s %4s",
"a0",
"a1",
"a2",
"a3",
"a4",
"a5");
549 sprintf (lineB,
" %6s %3s %3s %3s %3s %3s %3s %3s %3s\n",
"b0",
"b1",
"b2",
"b3",
"b4",
"b5",
"b6",
"b7",
"b8");
554 sprintf (buffer,
" %11d %10d %10X", param1, param2, channel->rawId ());
563 sprintf (buffer,
" %6d %4d %6.1f %4d %4d %4d",aa0,aa1,aa2,aa3,aa4,aa5);
576 sprintf(buffer,
" %6d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n",bb0,bb1,bb2,bb3,bb4,bb5,bb6,bb7,bb8,bb9);
588 while (fInput.getline(buffer, 1024)) {
589 if (buffer [0] ==
'#')
continue;
590 std::vector <std::string> items =
splitString (std::string (buffer));
591 if (items.size()==0)
continue;
592 if (items.size() < 5) {
593 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 6 items: eta, phi, depth, subdet, signalTSs, noiseTSs" << std::endl;
596 if (items.size() > 7) {
597 edm::LogWarning(
"Format Problem ?") <<
"Check line: " << buffer <<
"\n line must contain 6 items: eta, phi, depth, subdet, signalTSs, noiseTSs. "
598 <<
"\n ! signalTS and noiseTS must be of format <ts1,ts2,ts3,...> withOUT spaces. Ignoring line for safety" << std::endl;
616 while (fInput.getline(buffer, 1024)) {
617 if (buffer [0] ==
'#')
continue;
618 std::vector <std::string> items =
splitString (std::string (buffer));
619 if (items.size()==0)
continue;
620 if (items.size () < 7) {
621 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 7 items: eta, phi, depth, subdet, nhit, phase, rms,detid" << std::endl;
643 sprintf (buffer,
"# %15s %15s %15s %15s %15s %15s %15s %15s\n",
"eta",
"phi",
"dep",
"det",
"nhit",
"mean",
"rms" ,
"DetId");
646 std::sort (channels.begin(), channels.end(), DetIdLess ());
647 for (std::vector<DetId>::iterator channel = channels.begin ();
648 channel != channels.end ();
651 sprintf (buffer,
" %15d %8.5f %8.5f %16X\n",
661 sprintf (buffer,
"# %15s %15s %15s %15s %10s %10s %10s\n",
"eta",
"phi",
"dep",
"det",
"signalTSs",
"noiseTSs",
"DetId");
664 std::sort (channels.begin(), channels.end(), DetIdLess ());
665 for (std::vector<DetId>::iterator channel = channels.begin ();
666 channel != channels.end ();
669 if (fId.isHcalZDCDetId())
672 std::vector<unsigned int> vNoiseTS = fObject.
getValues (*channel)->
noiseTS();
674 sprintf (buffer,
" ");
676 for (
unsigned int i=0;
i<vSignalTS.size();
i++)
678 if (
i>0) {sprintf (buffer,
","); fOutput << buffer;}
679 sprintf (buffer,
"%u", vSignalTS.at(
i));
682 sprintf (buffer,
" ");
684 for (
unsigned int i=0;
i<vNoiseTS.size();
i++)
686 if (
i>0) { sprintf (buffer,
","); fOutput << buffer;}
687 sprintf (buffer,
"%u", vNoiseTS.at(
i));
690 sprintf (buffer,
" %10X\n", channel->rawId ());
701 while (fInput.getline(buffer, 1024)) {
702 if (buffer [0] ==
'#')
continue;
703 std::vector <std::string> items =
splitString (std::string (buffer));
704 if (items.size()==0)
continue;
705 if (items.size () < 5) {
706 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 5 items: eta, phi, depth, subdet, signalShape" << std::endl;
712 if(items.size ()>11) {
713 packingScheme = atoi (items [11].c_str());
717 if(packingScheme==0) {
718 param1=atoi (items [4].c_str());
721 if(packingScheme==1) {
722 int aabits[6]={ 9,1, 4, 8,5, 4};
723 int aamax [6]={511,1,15,255,1,16};
727 for(
int i=0;
i<6;
i++) {
730 float phase=atof (items [j].c_str());
731 float xphase=(phase+32.0)*4.0;
734 aa=atoi (items [j].c_str());
736 if(aa>aamax[
i] || aa<0) {
737 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n value for a"<<
i<<
" should be less than"<<aamax[
i]<< std::endl;
740 param1=param1|aa<<aashift;
741 aashift=aashift+aabits[
i];
757 std::sort (channels.begin(), channels.end(), DetIdLess ());
759 for (std::vector<DetId>::iterator channel = channels.begin ();
760 channel != channels.end ();
764 if(packingScheme==0) {
766 sprintf (buffer,
"# %15s %15s %15s %15s %14s %10s\n",
"eta",
"phi",
"dep",
"det",
"signalShape",
"DetId");
771 sprintf (buffer,
" %10d %17X\n", value, channel->rawId ());
774 if(packingScheme==1) {
776 char lineT[100],lineA[200];
778 sprintf (lineT,
"#%40s",
" "); fOutput << lineT;
779 sprintf (lineA,
" %31s",
"a0: signalShape\n"); fOutput << lineA;
780 sprintf (lineT,
"#%40s",
" "); fOutput << lineT;
781 sprintf (lineA,
" %31s",
"a1: syncPhase\n"); fOutput << lineA;
782 sprintf (lineT,
"#%40s",
" "); fOutput << lineT;
783 sprintf (lineA,
" %31s",
"a2: binOfMaximum\n"); fOutput << lineA;
784 sprintf (lineT,
"#%40s",
" "); fOutput << lineT;
785 sprintf (lineA,
" %31s",
"a3: timePhase\n"); fOutput << lineA;
786 sprintf (lineT,
"#%40s",
" "); fOutput << lineT;
787 sprintf (lineA,
" %31s",
"a4: timeSmearing\n"); fOutput << lineA;
788 sprintf (lineT,
"#%40s",
" "); fOutput << lineT;
789 sprintf (lineA,
" %31s",
"a5: packingScheme\n"); fOutput << lineA;
790 sprintf (lineT,
"# %5s %4s %4s %10s %11s %10s",
"eta",
"phi",
"dep",
"det",
"param1",
"DetId");
792 sprintf (lineA,
" %6s %4s %4s %6s %4s %4s\n",
"a0",
"a1",
"a2",
"a3",
"a4",
"a5");
797 sprintf (buffer,
" %11d %10X", param1, channel->rawId ());
805 sprintf (buffer,
"%6d %4d %4d %6.1f %4d %4d\n",aa0,aa1,aa2,aa3,aa4,aa5);
816 while (fInput.getline(buffer, 1024)) {
817 std::vector <std::string> items =
splitString (std::string (buffer));
818 if (items.size()==0)
continue;
820 if (items[0] ==
"#U")
822 if (items[1] == (std::string)
"ADC") fObject->
setUnitADC(
true);
823 else if (items[1] == (std::string)
"fC") fObject->
setUnitADC(
false);
826 edm::LogWarning(
"Pedestal Unit Error") <<
"Unrecognized unit for pedestals. Assuming fC." << std::endl;
833 edm::LogWarning(
"Pedestal Unit Missing") <<
"The unit for the pedestals is missing in the txt file." << std::endl;
838 while (fInput.getline(buffer, 1024)) {
839 if (buffer [0] ==
'#')
continue;
840 std::vector <std::string> items =
splitString (std::string (buffer));
841 if (items.size()==0)
continue;
842 if (items.size () < 8) {
843 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 8 items: eta, phi, depth, subdet, 4x values"
844 <<
" or 12 items: eta, phi, depth, subdet, 4x values for mean, 4x values for width"
855 if (items.size() < 12)
858 atof (items [6].c_str()), atof (items [7].c_str()),
866 atof (items [6].c_str()), atof (items [7].c_str()),
867 atof (items [8].c_str()), atof (items [9].c_str()),
868 atof (items [10].c_str()), atof (items [11].c_str()) );
881 if (fObject.
isADC() ) sprintf (buffer,
"#U ADC << this is the unit \n");
882 else sprintf (buffer,
"#U fC << this is the unit \n");
885 sprintf (buffer,
"# %15s %15s %15s %15s %8s %8s %8s %8s %8s %8s %8s %8s %10s\n",
"eta",
"phi",
"dep",
"det",
"cap0",
"cap1",
"cap2",
"cap3",
"widthcap0",
"widthcap1",
"widthcap2",
"widthcap3",
"DetId");
889 std::sort (channels.begin(), channels.end(), DetIdLess ());
890 for (std::vector<DetId>::iterator channel = channels.begin ();
891 channel != channels.end ();
895 dumpId (fOutput, *channel);
896 sprintf (buffer,
" %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %10X\n",
897 values[0], values[1], values[2], values[3], values[4], values[5], values[6], values[7], channel->rawId ());
910 while (fInput.getline(buffer, 1024)) {
911 if (buffer [0] ==
'#')
continue;
912 std::vector <std::string> items =
splitString (std::string (buffer));
913 if (items.size()==0)
continue;
914 if (items.size () < 6) {
915 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 6 items: eta, phi, depth, subdet, base - either (hex) or (dec), value" << std::endl;
925 if (items[4] ==
"(hex)")
926 sscanf(items[5].c_str(),
"%X", &mystatus);
927 else if (items[4] ==
"(dec)")
928 sscanf(items[5].c_str(),
"%u", &mystatus);
931 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n value field must contain the base: one of (hex), (dec)" << std::endl;
946 sprintf (buffer,
"# %15s %15s %15s %15s %15s %10s\n",
"eta",
"phi",
"dep",
"det",
"(base) value",
"DetId");
949 std::sort (channels.begin(), channels.end(), DetIdLess ());
950 for (std::vector<DetId>::iterator channel = channels.begin ();
951 channel != channels.end ();
954 dumpId (fOutput, *channel);
955 sprintf (buffer,
"%6s %15X %10X\n",
"(hex)",
956 value, channel->rawId ());
969 while (fInput.getline(buffer, 1024)) {
970 if (buffer [0] ==
'#')
972 if (buffer [1] ==
'T')
974 std::vector <std::string> items =
splitString (std::string (buffer) );
978 if (buffer [1] ==
'A')
980 std::vector <std::string> items =
splitString (std::string (buffer) );
986 std::vector <std::string> items =
splitString (std::string (buffer));
987 if (items.size()==0)
continue;
988 if (items.size () < 7) {
989 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 7 items: eta, phi, depth, subdet, pedestal, resp.corr.gain, flag" << std::endl;
1006 sprintf (buffer,
"#T %s << this is the tag name \n", fObject.
getTagString().c_str() );
1008 sprintf (buffer,
"#A %s << this is the algorithm name \n", fObject.
getAlgoString().c_str() );
1012 sprintf (buffer,
"# %15s %15s %15s %15s %8s %13s %8s %10s\n",
1013 "eta",
"phi",
"dep",
"det",
"ped",
"respcorrgain",
"flag",
1018 for (std::vector<DetId>::iterator channel = channels.begin ();
1019 channel != channels.end ();
1023 dumpId (fOutput, *channel);
1024 sprintf (buffer,
" %10.7f %10.7f %12d %10X\n",
1038 int linecounter = 0;
1040 while (fInput.getline(buffer, 1024)) {
1042 std::vector <std::string> items =
splitString (std::string (buffer));
1043 if (items.size()==0)
continue;
1045 if (items[0] == (std::string)
"#U")
1047 if (items[1] == (std::string)
"ADC") fObject->
setUnitADC(
true);
1048 else if (items[1] == (std::string)
"fC") fObject->
setUnitADC(
false);
1051 edm::LogWarning(
"Pedestal Width Unit Error") <<
"Unrecognized unit for pedestal widths. Assuming fC." << std::endl;
1058 edm::LogWarning(
"Pedestal Width Unit Missing") <<
"The unit for the pedestal widths is missing in the txt file." << std::endl;
1064 while (fInput.getline(buffer, 1024)) {
1066 if (buffer [0] ==
'#')
continue;
1067 std::vector <std::string> items =
splitString (std::string (buffer));
1068 if (items.size()==0)
continue;
1069 if (items.size () < 14) {
1070 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line number: " << linecounter <<
"\n line must contain 14 items: eta, phi, depth, subdet, 10x correlations"
1071 <<
" or 20 items: eta, phi, depth, subdet, 16x correlations"
1082 if (items.size() < 20)
1085 values.setSigma (0, 0, atof (items [4].c_str()));
1086 values.setSigma (1, 0, atof (items [5].c_str()));
1087 values.setSigma (1, 1, atof (items [6].c_str()));
1088 values.setSigma (2, 0, atof (items [7].c_str()));
1089 values.setSigma (2, 1, atof (items [8].c_str()));
1090 values.setSigma (2, 2, atof (items [9].c_str()));
1091 values.setSigma (3, 0, atof (items [10].c_str()));
1092 values.setSigma (3, 1, atof (items [11].c_str()));
1093 values.setSigma (3, 2, atof (items [12].c_str()));
1094 values.setSigma (3, 3, atof (items [13].c_str()));
1095 values.setSigma (0, 1, 0.);
1096 values.setSigma (0, 2, 0.);
1097 values.setSigma (0, 3, 0.);
1098 values.setSigma (1, 2, 0.);
1099 values.setSigma (1, 3, 0.);
1100 values.setSigma (2, 3, 0.);
1106 values.setSigma (0, 0, atof (items [4].c_str()) );
1107 values.setSigma (0, 1, atof (items [5].c_str()) );
1108 values.setSigma (0, 2, atof (items [6].c_str()) );
1109 values.setSigma (0, 3, atof (items [7].c_str()) );
1110 values.setSigma (1, 0, atof (items [8].c_str()) );
1111 values.setSigma (1, 1, atof (items [9].c_str()) );
1112 values.setSigma (1, 2, atof (items [10].c_str()) );
1113 values.setSigma (1, 3, atof (items [11].c_str()) );
1114 values.setSigma (2, 0, atof (items [12].c_str()) );
1115 values.setSigma (2, 1, atof (items [13].c_str()) );
1116 values.setSigma (2, 2, atof (items [14].c_str()) );
1117 values.setSigma (2, 3, atof (items [15].c_str()) );
1118 values.setSigma (3, 0, atof (items [16].c_str()) );
1119 values.setSigma (3, 1, atof (items [17].c_str()) );
1120 values.setSigma (3, 2, atof (items [18].c_str()) );
1121 values.setSigma (3, 3, atof (items [19].c_str()) );
1132 if (fObject.
isADC() ) sprintf (buffer,
"#U ADC << this is the unit \n");
1133 else sprintf (buffer,
"#U fC << this is the unit \n");
1136 sprintf (buffer,
"# %15s %15s %15s %15s %8s %8s %8s %8s %8s %8s %8s %8s %8s %8s %8s %8s %8s %8s %8s %8s %10s\n",
1137 "eta",
"phi",
"dep",
"det",
1138 "cov_0_0",
"cov_0_1",
"cov_0_2",
"cov_0_3",
"cov_1_0",
"cov_1_1",
"cov_1_2",
"cov_1_3",
"cov_2_0",
"cov_2_1",
"cov_2_2",
"cov_2_3",
"cov_3_0",
"cov_3_1",
"cov_3_2",
"cov_3_3",
1142 std::sort (channels.begin(), channels.end(), DetIdLess ());
1143 for (std::vector<DetId>::iterator channel = channels.begin ();
1144 channel != channels.end ();
1148 dumpId (fOutput, *channel);
1149 sprintf (buffer,
" %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %10X\n",
1164 while (fInput.getline(buffer, 1024)) {
1165 if (buffer [0] ==
'#')
continue;
1166 std::vector <std::string> items =
splitString (std::string (buffer));
1167 if (items.size()<1)
continue;
1168 if (items [0] ==
"SHAPE") {
1169 if (items.size () < 33) {
1170 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 33 items: SHAPE 32 x low QIE edges for first 32 bins" << std::endl;
1182 if (items.size () < 36) {
1183 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 36 items: eta, phi, depth, subdet, 4 capId x 4 Ranges x offsets, 4 capId x 4 Ranges x slopes" << std::endl;
1195 for (
unsigned capid = 0; capid < 4; capid++) {
1196 for (
unsigned range = 0; range < 4; range++) {
1197 coder.setOffset (capid, range, atof (items [index++].c_str ()));
1200 for (
unsigned capid = 0; capid < 4; capid++) {
1201 for (
unsigned range = 0; range < 4; range++) {
1202 coder.setSlope (capid, range, atof (items [index++].c_str ()));
1215 fOutput <<
"# QIE basic shape: SHAPE 32 x low edge values for first 32 channels" << std::endl;
1216 sprintf (buffer,
"SHAPE ");
1218 for (
unsigned bin = 0;
bin < 32;
bin++) {
1222 fOutput << std::endl;
1224 fOutput <<
"# QIE data" << std::endl;
1225 sprintf (buffer,
"# %15s %15s %15s %15s %36s %36s %36s %36s %36s %36s %36s %36s\n",
1226 "eta",
"phi",
"dep",
"det",
1227 "4 x offsets cap0",
"4 x offsets cap1",
"4 x offsets cap2",
"4 x offsets cap3",
1228 "4 x slopes cap0",
"4 x slopes cap1",
"4 x slopes cap2",
"4 x slopes cap3");
1231 std::sort (channels.begin(), channels.end(), DetIdLess ());
1232 for (std::vector<DetId>::iterator channel = channels.begin ();
1233 channel != channels.end ();
1236 dumpId (fOutput, *channel);
1237 for (
unsigned capid = 0; capid < 4; capid++) {
1238 for (
unsigned range = 0; range < 4; range++) {
1239 sprintf (buffer,
" %8.5f", coder->
offset (capid, range));
1243 for (
unsigned capid = 0; capid < 4; capid++) {
1244 for (
unsigned range = 0; range < 4; range++) {
1245 sprintf (buffer,
" %8.5f", coder->
slope (capid, range));
1249 fOutput << std::endl;
1257 while (fInput.getline(buffer, 1024)) {
1258 if (buffer [0] ==
'#')
continue;
1259 std::vector <std::string> items =
splitString (std::string (buffer));
1260 if (items.size () < 36) {
1261 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 36 items: eta, phi, depth, subdet, 32 bin values" << std::endl;
1274 for (
unsigned bin = 0;
bin < 32;
bin++) {
1275 values[
bin] = atof (items [index++].c_str ());
1277 coder.setMinCharges (values);
1287 fOutput <<
"# QIE data in calibration mode" << std::endl;
1288 sprintf (buffer,
"# %15s %15s %15s %15s %288s\n",
1289 "eta",
"phi",
"dep",
"det",
"32 x charges");
1292 std::sort (channels.begin(), channels.end(), DetIdLess ());
1293 for (std::vector<DetId>::iterator channel = channels.begin ();
1294 channel != channels.end ();
1298 dumpId (fOutput, *channel);
1300 for (
unsigned bin = 0;
bin < 32;
bin++) {
1301 sprintf (buffer,
" %8.5f", lowEdge [
bin]);
1304 fOutput << std::endl;
1314 while (fInput.getline(buffer, 1024)) {
1315 if (buffer [0] ==
'#')
continue;
1316 std::vector <std::string> items =
splitString (std::string (buffer));
1317 if (items.size () < 12) {
1318 if (items.size()==0)
continue;
1319 if (items.size()<9) {
1320 edm::LogError(
"MapFormat") <<
"HcalElectronicsMap-> line too short: " << buffer;
1323 if (items[8]==
"NA" || items[8]==
"NT") {
1324 while (items.size()<12) items.push_back(
"");
1325 }
else if (items[8]==
"HT") {
1326 if (items.size()==11) items.push_back(
"");
1328 edm::LogError(
"MapFormat") <<
"HcalElectronicsMap-> Bad line: " << buffer
1329 <<
"\n HT line must contain at least 11 items: i cr sl tb dcc spigot fiber fiberchan subdet=HT ieta iphi";
1333 edm::LogError(
"MapFormat") <<
"HcalElectronicsMap-> Bad line: " << buffer
1334 <<
"\n line must contain 12 items: i cr sl tb dcc spigot fiber fiberchan subdet ieta iphi depth";
1339 int crate = atoi (items [1].c_str());
1340 int slot = atoi (items [2].c_str());
1342 if (items [3] ==
"b") top = 0;
1343 int dcc = atoi (items [4].c_str());
1344 int spigot = atoi (items [5].c_str());
1346 if (items[8] ==
"HT" || items[8] ==
"NT") {
1347 int slb = atoi (items [6].c_str());
1348 int slbCh = atoi (items [7].c_str());
1351 int fiber = atoi (items [6].c_str());
1352 int fiberCh = atoi (items [7].c_str());
1355 elId.
setHTR (crate, slot, top);
1359 if (items [8] ==
"NA") {
1361 }
else if (items [8] ==
"NT") {
1365 if (converter.isHcalDetId ()) {
1368 else if (converter.isHcalTrigTowerDetId ()) {
1369 fObject->
mapEId2tId (elId, converter.getId ());
1371 else if (converter.isHcalCalibDetId ()) {
1374 else if (converter.isHcalZDCDetId ()) {
1378 edm::LogWarning(
"Format Error") <<
"HcalElectronicsMap-> Unknown subdetector: "
1379 << items [8] <<
'/' << items [9] <<
'/' << items [10] <<
'/' << items [11] << std::endl;
1392 sprintf (buf,
"# %7s %3s %3s %3s %4s %7s %10s %14s %7s %5s %5s %6s",
1393 "i",
"cr",
"sl",
"tb",
"dcc",
"spigot",
"fiber/slb",
"fibcha/slbcha",
"subdet",
"ieta",
"iphi",
"depth");
1394 fOutput << buf << std::endl;
1396 for (
unsigned i = 0;
i < eids.size ();
i++) {
1400 if (trigger.
rawId ()) {
1404 sprintf (buf,
" %7X %3d %3d %3c %4d %7d %10d %14d %7s %5s %5s %6s",
1406 converter.getId().rawId(),
1410 converter.getFlavor ().c_str (), converter.getField1 ().c_str (), converter.getField2 ().c_str (), converter.getField3 ().c_str ()
1412 fOutput << buf << std::endl;
1416 if (channel.
rawId()) {
1420 sprintf (buf,
" %7X %3d %3d %3c %4d %7d %10d %14d %7s %5s %5s %6s",
1422 converter.getId().rawId(),
1424 converter.getFlavor ().c_str (), converter.getField1 ().c_str (), converter.getField2 ().c_str (), converter.getField3 ().c_str ()
1426 fOutput << buf << std::endl;
1437 while (fInput.getline(buffer, 1024)) {
1438 if (buffer [0] ==
'#')
continue;
1439 std::vector <std::string> items =
splitString (std::string (buffer));
1440 if (items.size()==0)
continue;
1442 if (items.size() > 1 &&
1443 items[0].find(
"RctLsb")!=std::string::npos){
1444 fObject->
setRctLsb( atof( items[1].c_str() ) );
1447 if (items.size() > 1 &&
1448 items[0].find(
"Gain")!=std::string::npos){
1453 if (items.size () < 7) {
1454 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 7 items: eta, phi, depth, subdet, Rcalib, LutGranularity, OutputLutThreshold" << std::endl;
1460 atof (items [4].c_str()),
1461 atoi (items [5].c_str()),
1462 atoi (items [6].c_str()));
1472 const float _rctLsb = fObject.
getRctLsb();
1474 sprintf (buffer,
"# %20s\n",
"Non-channel data");
1476 sprintf (buffer,
"%8s %8.5f\n",
"RctLsb", _rctLsb);
1478 sprintf (buffer,
"%8s %8.5f\n",
"Gain", _gain);
1480 sprintf (buffer,
"# %15s %15s %15s %15s %8s %15s %19s %10s\n",
"eta",
"phi",
"dep",
"det",
"Rcalib",
"LutGranularity",
"OutputLutThreshold",
"DetId");
1483 std::sort (channels.begin(), channels.end(), DetIdLess ());
1484 for (std::vector<DetId>::iterator channel = channels.begin ();
1485 channel != channels.end ();
1490 dumpId (fOutput, *channel);
1491 sprintf (buffer,
" %8.5f %15d %19d %10X\n",
1494 _outputLutThreshold,
1505 while (getline(fInput, buffer)) {
1506 if (buffer.at(0) ==
'#')
continue;
1507 std::vector <std::string> items =
splitString (buffer);
1508 if (items.size()==0)
continue;
1510 if (items.size() < 9) {
1511 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain 9 items: subDet, side_ring, slice, type, subChannel, LS, Value, UpperLimit, LowerLimit" << std::endl;
1517 unsigned int slice, subchan;
1518 switch (items[0].
at(1)) {
1535 from_string<int>(sidering, items[1], std::dec);
1536 from_string<unsigned int>(slice, items[2], std::dec);
1538 from_string<unsigned int>(subchan, items[4], std::dec);
1544 float val,
upper,lower;
1545 from_string<int>(LS, items[5], std::dec);
1546 from_string<float>(val, items[6], std::dec);
1547 from_string<float>(
upper, items[7], std::dec);
1548 from_string<float>(lower, items[8], std::dec);
1556 if (!(fObject->
addValue(newVal))) {
1558 <<
"\nwas not added to the HcalDcsValues object." << std::endl;
1568 fOutput <<
"# subDet side_ring slice type subChan LS Value UpperLimit LowerLimit DcsId\n";
1574 for (HcalDcsValues::DcsSet::const_iterator val = vals.begin();
1575 val != vals.end(); ++val) {
1578 switch (valId.subdet()) {
1592 fOutput << valId.subdet() <<
' ';
1596 fOutput << valId.ring() <<
' ';
1598 fOutput << valId.zside() <<
' ';
1600 fOutput << valId.slice() <<
' '
1601 << valId.typeString(valId.type()) <<
' '
1602 << valId.subchannel() <<
' ';
1603 fOutput << val->LS() <<
' '
1604 << val->getValue() <<
' '
1605 << val->getUpperLimit() <<
' '
1606 << val->getLowerLimit() <<
' ';
1607 fOutput << std::hex << val->DcsId() << std::dec <<
'\n';
1626 while (fInput.getline(buffer, 1024)) {
1627 if (buffer [0] ==
'#')
continue;
1628 std::vector <std::string> items =
splitString (std::string (buffer));
1629 if (items.size () < 8) {
1630 if (items.size()==0)
continue;
1632 edm::LogError(
"MapFormat") <<
"HcalDcsMap-> Bad line: " << buffer
1633 <<
"\n line must contain 8 items: line side_ring slice subchannel subdet ieta iphi depth";
1639 int ring = atoi(items[1].c_str());
1640 unsigned int slice = atoi (items [2].c_str());
1641 unsigned int subchannel = atoi (items [3].c_str());
1687 if (items[4].
find(
"CALIB")!=std::string::npos){
1690 else if (items[4].
find(
"HB")!=std::string::npos){
1693 else if (items[4].
find(
"HE")!=std::string::npos){
1696 else if (items[4].
find(
"HO")!=std::string::npos){
1699 else if (items[4].
find(
"HF")!=std::string::npos){
1703 edm::LogError(
"MapFormat") <<
"HcalDcsMap-> Unknown subdetector, line is not accepted: " << items[5];
1706 HcalDcsDetId dcsId(subdet, ring, slice, type, subchannel);
1709 if (converter.isHcalDetId()){
1710 id = converter.getId();
1713 edm::LogWarning(
"Invalid HCAL channel") <<
"HcalDcsMap-> invalid channel: "
1717 << items [7] << std::endl;
1731 sprintf (buf,
"# %7s %10s %6s %8s %7s %5s %5s %6s",
1732 "i",
"side_ring",
"slice",
"subchan",
"subdet",
"ieta",
"iphi",
"depth");
1733 fOutput << buf << std::endl;
1735 unsigned int line_counter = 0;
1742 sprintf (buf,
" %8X %10d %6d %8d %7s %5s %5s %6s",
1747 _converter.getFlavor().c_str(),
1748 _converter.getField1().c_str(),
1749 _converter.getField2().c_str(),
1750 _converter.getField3().c_str()
1752 fOutput << buf << std::endl;
1764 while (fInput.getline(buffer, 1024)) {
1765 if (buffer [0] ==
'#')
continue;
1766 std::vector <std::string> items =
splitString (std::string (buffer));
1767 if (items.size()==0)
continue;
1768 if (items.size () != 9) {
1769 edm::LogWarning(
"Format Error") <<
"Bad line: " << buffer <<
"\n line must contain at 9 least items: eta, phi, depth, subdet, firstSample, samplesToAdd, ExpectedPeak, MinEnergy, and a set of comma-separated coefficients" << std::endl;
1777 atoi (items [4].c_str()),
1778 atoi (items [5].c_str()),
1779 atoi (items [6].c_str()),
1780 atof (items [7].c_str()),
1792 sprintf (buffer,
"# %15s %15s %15s %15s %15s %15s %15s %15s %30s\n",
"eta",
"phi",
"dep",
"det",
"FirstSample",
"SamplesToAdd",
"ExpectedPeak",
"MinEnergy",
"Coefficients");
1795 std::sort (channels.begin(), channels.end(), DetIdLess ());
1796 for (std::vector<DetId>::iterator channel = channels.begin ();
1797 channel != channels.end ();
1802 sprintf (buffer,
" %15u %15u %15u %15f",
1817 if (
x<coef.size()-1)
1820 sprintf(buffer,
"\n");
void dumpIdShort(std::ostream &fOutput, DetId id)
float getPedestal() const
unsigned int firstSample() const
static const HcalDetId Undefined
void setAlgoString(std::string fAlgo)
bool addValues(const Item &myItem, bool h2mode_=false)
int fiberIndex() const
get the fiber index [1-8] (which of eight fibers carried by a spigot) (valid only for non-trigger-cha...
void setUnitADC(bool isADC)
float slope(unsigned fCapId, unsigned fRange) const
unsigned int param2() const
bool getHcalSingleIntObject(std::istream &fInput, T *fObject, S *fCondObject)
std::vector< unsigned int > signalTS() const
bool getHcalSingleFloatObject(std::istream &fInput, T *fObject, S *fCondObject)
unsigned int pileupCleaningID() const
const HcalQIECoder * getCoder(DetId fId) const
get QIE parameters
bool timeSmearing() const
unsigned int packingScheme() const
float getSigma(int fCapId1, int fCapId2) const
get correlation element for capId1/2 = 0..3
bool mapGeomId2DcsId(HcalDetId fId, HcalDcsDetId fDcsId)
uint32_t HFdigiflagSamplesToAdd() const
bool getHcalMatrixObject(std::istream &fInput, T *fObject, S *fCondObject)
std::vector< float > splitStringToFloatByComma(const std::string &fLine)
DcsSet const & getAllSubdetValues(DcsSubDet subd) const
bool correctForPhaseContainment() const
int htrSlot() const
get the htr slot
std::vector< unsigned int > splitStringToIntByComma(const std::string &fLine)
bool dumpHcalSingleFloatObject(std::ostream &fOutput, const T &fObject)
unsigned int noiseFlaggingID() const
bool mapEId2tId(HcalElectronicsId fElectronicsId, HcalTrigTowerDetId fTriggerId)
const HcalQIEShape & getShape() const
get basic shape
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
const HcalCalibrationQIECoder * getCoder(DetId fId) const
get QIE parameters
std::vector< std::string > splitString(const std::string &fLine)
unsigned int leakCorrectionID() const
float lowEdge(unsigned fAdc) const
int readoutVMECrateId() const
get the readout VME crate number
void dumpId(std::ostream &fOutput, DetId id)
unsigned int param1() const
unsigned int specialCaseID() const
uint32_t rawId() const
get the raw id
U second(std::pair< T, U > const &p)
const_iterator endById(void) const
bool addCoder(const HcalQIECoder &fCoder, bool h2mode_=false)
std::vector< HcalDcsValue > DcsSet
void setUnitADC(bool isADC)
float getRespGain() const
int htrTopBottom() const
get the htr top/bottom (1=top/0=bottom)
float offset(unsigned fCapId, unsigned fRange) const
const_iterator beginById(void) const
std::vector< DetId > getAllChannels() const
unsigned int param1() const
unsigned int nhits() const
HcalDetId getHcalDetId(void)
bool correctForTimeslew() const
bool correctTiming() const
int dccid() const
get the (Hcal local) DCC id
HcalDcsDetId getHcalDcsDetId(void)
bool dumpHcalMatrixObject(std::ostream &fOutput, const T &fObject)
uint32_t HFdigiflagExpectedPeak() const
int fiberChanId() const
get the fiber channel id (which of three channels on a readout fiber) (valid only for non-trigger-cha...
std::string getTagString() const
unsigned int samplesToAdd() const
bool mapEId2chId(HcalElectronicsId fElectronicsId, DetId fId)
float correctionPhaseNS() const
int spigot() const
get the spigot (input number on DCC)
unsigned int pulseShapeID() const
static DcsType DcsTypeFromString(const std::string &str)
int slbChannelIndex() const
get the SLB channel index (valid only for trigger-chain ids)
std::vector< double > HFdigiflagCoefficients() const
void setHTR(int crate, int slot, int tb)
std::string getAlgoString() const
std::vector< HcalElectronicsId > allElectronicsId() const
uint32_t HFdigiflagFirstSample() const
bool isTriggerChainId() const
unsigned int signalShape() const
static const HcalTrigTowerDetId Undefined
bool addValue(HcalDcsValue const &newVal)
bool getHcalObject(std::istream &fInput, T *fObject, S *fCondObject)
bool getObject(std::istream &fInput, HcalPedestals *fObject)
DetId getId(const std::vector< std::string > &items)
unsigned int binOfMaximum() const
bool dumpObject(std::ostream &fOutput, const HcalPedestals &fObject)
int slbSiteNumber() const
get the SLB site number (valid only for trigger-chain ids)
unsigned int packingScheme() const
const float * getValues() const
get value for all capId = 0..3
bool dumpHcalObject(std::ostream &fOutput, const T &fObject)
std::vector< unsigned int > noiseTS() const
const DetId lookupTrigger(HcalElectronicsId fId) const
brief lookup the trigger logical detid associated with the given electronics id
unsigned int firstAuxTS() const
const float * minCharges() const
void setTagString(std::string fTag)
uint32_t getValue() const
bool correctForLeadingEdge() const
bool addCoder(const HcalCalibrationQIECoder &fCoder)
const Item * getValues(DetId fId) const
Readout chain identification for Hcal [31:26] Unused (so far) [25] Trigger-chain id flag [24:20] Read...
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
bool dumpHcalSingleIntObject(std::ostream &fOutput, const T &fObject)
unsigned int timeslewCorrectionID() const
std::vector< double > splitStringToDoubleByComma(const std::string &fLine)
bool from_string(T &t, const std::string &s, std::ios_base &(*f)(std::ios_base &))
double HFdigiflagMinEThreshold() const
bool useLeakCorrection() const