17 fRefPedestalWidths (0),
19 fRawPedestalWidths (0),
21 fValPedestalWidths (0)
28 for(
int k=0;
k<4;
k++)
state.push_back(
true);
49 if(m_pedValflag<0) m_pedValflag=0;
51 cout<<
"WARNING - incompatible cfg options: nevtsample = "<<
m_nevtsample<<
", pedValflag = "<<m_pedValflag<<endl;
52 cout<<
"Setting pedValflag = 0"<<endl;
55 if(m_pedValflag>1) m_pedValflag=1;
62 castorHists.ALLPEDS =
new TH1F(
"Castor All Pedestals",
"HF All Peds",10,0,9);
63 castorHists.PEDRMS=
new TH1F(
"Castor All Pedestal Widths",
"HF All Pedestal RMS",100,0,3);
64 castorHists.PEDMEAN=
new TH1F(
"Castor All Pedestal Means",
"HF All Pedestal Means",100,0,9);
65 castorHists.CHI2=
new TH1F(
"Castor Chi2/ndf for whole range Gauss fit",
"HF Chi2/ndf Gauss",200,0.,50.);
72 for(
int i=0;
i<16;
i++)
_meot->second[
i].first->Delete();
84 m_file=
new TFile(m_outputFileROOT.c_str(),
"RECREATE");
105 if(!castor.
size())
throw (
int)castor.
size();
136 static const int bins=10;
137 static const int bins2=100;
138 float lo=-0.5;
float hi=9.5;
139 map<int,PEDBUNCH> _mei;
140 static map<HcalDetId, map<int,float> > QieCalibMap;
141 string type =
"Castor";
156 _meot = toolT.find(detid);
159 if (
_meot==toolT.end()){
161 map<int,float> qiecalib;
163 for(
int i=0;
i<4;
i++){
169 sprintf(name,
"%s Pedestal, eta=%d phi=%d d=%d cap=%d",type.c_str(),detid.
ieta(),detid.
iphi(),detid.
depth(),
i);
170 insert[
i].first =
new TH1F(name,name,bins,lo,hi);
171 sprintf(name,
"%s Product, eta=%d phi=%d d=%d caps=%d*%d",type.c_str(),detid.
ieta(),detid.
iphi(),detid.
depth(),
i,(
i+1)%4);
172 insert[4+
i].first =
new TH1F(name,name,bins2,0.,100.);
173 sprintf(name,
"%s Product, eta=%d phi=%d d=%d caps=%d*%d",type.c_str(),detid.
ieta(),detid.
iphi(),detid.
depth(),
i,(
i+2)%4);
174 insert[8+
i].first =
new TH1F(name,name,bins2,0.,100.);
175 sprintf(name,
"%s Product, eta=%d phi=%d d=%d caps=%d*%d",type.c_str(),detid.
ieta(),detid.
iphi(),detid.
depth(),
i,(
i+3)%4);
176 insert[12+
i].first =
new TH1F(name,name,bins2,0.,100.);
178 sprintf(name,
"%s Signal in TS 4+5, eta=%d phi=%d d=%d",type.c_str(),detid.
ieta(),detid.
iphi(),detid.
depth());
179 insert[16].first =
new TH1F(name,name,21,-0.5,20.5);
180 sprintf(name,
"%s Signal in TS 4+5-2-3, eta=%d phi=%d d=%d",type.c_str(),detid.
ieta(),detid.
iphi(),detid.
depth());
181 insert[17].first =
new TH1F(name,name,21,-10.5,10.5);
182 sprintf(name,
"%s Signal in TS 4+5-(0+1+2+3)/2., eta=%d phi=%d d=%d",type.c_str(),detid.
ieta(),detid.
iphi(),detid.
depth());
183 insert[18].first =
new TH1F(name,name,21,-10.5,10.5);
185 _meot = toolT.find(detid);
187 QieCalibMap[
detid]=qiecalib;
190 _mei =
_meot->second;
202 _mei[qie1.
capid()].first->Reset();
203 _mei[qie1.
capid()+4].first->Reset();
204 _mei[qie1.
capid()+8].first->Reset();
205 _mei[qie1.
capid()+12].first->Reset();
208 if (qie1.
adc()<bins){
210 else _mei[qie1.
capid()].first->Fill(charge1);
212 else if(qie1.
adc()>=bins){
213 _mei[qie1.
capid()].first->AddBinContent(bins+1,1);
219 map<int,float> qiecalib = QieCalibMap[
detid];
222 if (charge1*charge2<bins2){
223 _mei[qie1.
capid()+4*
flag].first->Fill(charge1*charge2);
226 _mei[qie1.
capid()+4*
flag].first->Fill(bins2);
243 _meot = toolT.find(detid);
244 map<int,PEDBUNCH> _mei =
_meot->second;
245 _mei[16].first->Fill(qie4.
adc()+qie5.
adc()-1.);
246 _mei[17].first->Fill(qie4.
adc()+qie5.
adc()-qie2.
adc()-qie3.
adc());
247 _mei[18].first->Fill(qie4.
adc()+qie5.
adc()-(qie0.
adc()+qie1.
adc()+qie2.
adc()+qie3.
adc())/2.);
253 char PedSampleNum[20];
256 sprintf(PedSampleNum,
"Castor_Sample%d",
sample);
258 m_file->mkdir(PedSampleNum);
268 float cap[4];
float sig[4][4];
float dcap[4];
float dsig[4][4];
float chi2[4];
275 for (
int i=0;
i<4;
i++) {
276 TF1 *fit =
_meot->second[
i].first->GetFunction(
"gaus");
278 if(fit->GetNDF()!=0) chi2[
i]=fit->GetChisquare()/fit->GetNDF();
279 cap[
i]=fit->GetParameter(1);
280 sig[
i][
i]=fit->GetParameter(2);
281 dcap[
i]=fit->GetParError(1);
282 dsig[
i][
i]=fit->GetParError(2);
286 for (
int i=0;
i<4;
i++) {
287 cap[
i]=
_meot->second[
i].first->GetMean();
288 sig[
i][
i]=
_meot->second[
i].first->GetRMS();
301 for (
int i=0;
i<4;
i++) {
304 _meot->second[
i].first->GetXaxis()->SetTitle(
"ADC");
305 else _meot->second[
i].first->GetXaxis()->SetTitle(
"Charge, fC");
306 _meot->second[
i].first->GetYaxis()->SetTitle(
"CapID samplings");
307 _meot->second[
i].first->Write();
310 _meot->second[
i].second.first[0].push_back(cap[
i]);
311 _meot->second[
i].second.first[1].push_back(dcap[i]);
312 _meot->second[
i].second.first[2].push_back(sig[i][i]);
313 _meot->second[
i].second.first[3].push_back(dsig[i][i]);
314 _meot->second[
i].second.first[4].push_back(chi2[i]);
316 PedMeans->Fill(cap[
i]);
317 PedWidths->Fill(sig[i][i]);
322 for(
int i=16;
i<19;
i++){
324 _meot->second[
i].first->GetXaxis()->SetTitle(
"ADC");
325 else _meot->second[
i].first->GetXaxis()->SetTitle(
"Charge, fC");
326 _meot->second[
i].first->GetYaxis()->SetTitle(
"Events");
327 _meot->second[
i].first->Write();
332 sig[0][0]=sig[0][0]*sig[0][0];
333 sig[1][1]=sig[1][1]*sig[1][1];
334 sig[2][2]=sig[2][2]*sig[2][2];
335 sig[3][3]=sig[3][3]*sig[3][3];
339 sig[0][1]=
_meot->second[4].first->GetMean()-cap[0]*cap[1];
340 sig[0][2]=
_meot->second[8].first->GetMean()-cap[0]*cap[2];
341 sig[1][2]=
_meot->second[5].first->GetMean()-cap[1]*cap[2];
342 sig[1][3]=
_meot->second[9].first->GetMean()-cap[1]*cap[3];
343 sig[2][3]=
_meot->second[6].first->GetMean()-cap[2]*cap[3];
344 sig[0][3]=
_meot->second[12].first->GetMean()-cap[0]*cap[3];
345 sig[1][0]=
_meot->second[13].first->GetMean()-cap[1]*cap[0];
346 sig[2][0]=
_meot->second[10].first->GetMean()-cap[2]*cap[0];
347 sig[2][1]=
_meot->second[14].first->GetMean()-cap[2]*cap[1];
348 sig[3][1]=
_meot->second[11].first->GetMean()-cap[3]*cap[1];
349 sig[3][2]=
_meot->second[15].first->GetMean()-cap[3]*cap[2];
350 sig[3][0]=
_meot->second[7].first->GetMean()-cap[3]*cap[0];
353 for(
int i=0;
i<4;
i++){
355 _meot->second[
i].second.first[5].push_back(sig[
i][(
i+1)%4]);
356 _meot->second[
i].second.first[6].push_back(2*sig[
i][
i]*dsig[
i][
i]);
357 _meot->second[
i].second.first[7].push_back(sig[i][(i+2)%4]);
358 _meot->second[
i].second.first[8].push_back(2*sig[i][i]*dsig[i][i]);
359 _meot->second[
i].second.first[9].push_back(sig[i][(i+3)%4]);
360 _meot->second[
i].second.first[10].push_back(2*sig[i][i]*dsig[i][i]);
365 _meot->second[
i+4].first->GetXaxis()->SetTitle(
"ADC^2");
366 else _meot->second[
i+4].first->GetXaxis()->SetTitle(
"Charge^2, fC^2");
367 _meot->second[
i+4].first->GetYaxis()->SetTitle(
"2-CapID samplings");
368 _meot->second[
i+4].first->Write();
370 _meot->second[
i+8].first->GetXaxis()->SetTitle(
"ADC^2");
371 else _meot->second[
i+8].first->GetXaxis()->SetTitle(
"Charge^2, fC^2");
372 _meot->second[
i+8].first->GetYaxis()->SetTitle(
"2-CapID samplings");
373 _meot->second[
i+8].first->Write();
375 _meot->second[
i+12].first->GetXaxis()->SetTitle(
"ADC^2");
376 else _meot->second[
i+12].first->GetXaxis()->SetTitle(
"Charge^2, fC^2");
377 _meot->second[
i+12].first->GetYaxis()->SetTitle(
"2-CapID samplings");
378 _meot->second[
i+12].first->Write();
493 map<int, std::vector<double> > AverageValues;
496 for(
int i=0;
i<4;
i++){
499 sprintf(name,
"Pedestal trend, eta=%d phi=%d d=%d cap=%d",detid.
ieta(),detid.
iphi(),detid.
depth(),
i);
500 int bins =
_meot->second[
i].second.first[0].size();
502 float hi = (float)bins+0.5;
503 _meot->second[
i].second.second.push_back(
new TH1F(name,name,bins,lo,hi));
504 sprintf(name,
"Width trend, eta=%d phi=%d d=%d cap=%d",detid.
ieta(),detid.
iphi(),detid.
depth(),
i);
505 bins =
_meot->second[
i].second.first[2].size();
506 hi = (float)bins+0.5;
507 _meot->second[
i].second.second.push_back(
new TH1F(name,name,bins,lo,hi));
508 sprintf(name,
"Correlation trend, eta=%d phi=%d d=%d caps=%d*%d",detid.
ieta(),detid.
iphi(),detid.
depth(),
i,(
i+1)%4);
509 bins =
_meot->second[
i].second.first[5].size();
510 hi = (float)bins+0.5;
511 _meot->second[
i].second.second.push_back(
new TH1F(name,name,bins,lo,hi));
521 std::vector<double>::iterator sample_it;
524 for(sample_it=
_meot->second[
i].second.first[0].begin();
525 sample_it!=
_meot->second[
i].second.first[0].end();sample_it++){
526 _meot->second[
i].second.second[0]->SetBinContent(++j,*sample_it);
529 for(sample_it=
_meot->second[
i].second.first[1].begin();
530 sample_it!=
_meot->second[
i].second.first[1].end();sample_it++){
531 _meot->second[
i].second.second[0]->SetBinError(++j,*sample_it);
534 _meot->second[
i].second.second[0]->Fit(
"pol0",
"Q");
535 TF1 *fit =
_meot->second[
i].second.second[0]->GetFunction(
"pol0");
536 AverageValues[0].push_back(fit->GetParameter(0));
537 AverageValues[1].push_back(fit->GetParError(0));
539 AverageValues[2].push_back(fit->GetChisquare()/fit->GetNDF());
541 AverageValues[2].push_back(fit->GetChisquare());
543 _meot->second[
i].second.second[0]->GetXaxis()->SetTitle(name);
544 _meot->second[
i].second.second[0]->GetYaxis()->SetTitle(
"Pedestal value");
545 _meot->second[
i].second.second[0]->Write();
548 for(sample_it=
_meot->second[
i].second.first[2].begin();
549 sample_it!=
_meot->second[
i].second.first[2].end();sample_it++){
550 _meot->second[
i].second.second[1]->SetBinContent(++j,*sample_it);
553 for(sample_it=
_meot->second[
i].second.first[3].begin();
554 sample_it!=
_meot->second[
i].second.first[3].end();sample_it++){
555 _meot->second[
i].second.second[1]->SetBinError(++j,*sample_it);
557 _meot->second[
i].second.second[1]->GetXaxis()->SetTitle(name);
558 _meot->second[
i].second.second[1]->GetYaxis()->SetTitle(
"Pedestal width");
559 _meot->second[
i].second.second[1]->Write();
562 for(sample_it=
_meot->second[
i].second.first[5].begin();
563 sample_it!=
_meot->second[
i].second.first[5].end();sample_it++){
564 _meot->second[
i].second.second[2]->SetBinContent(++j,*sample_it);
567 for(sample_it=
_meot->second[
i].second.first[6].begin();
568 sample_it!=
_meot->second[
i].second.first[6].end();sample_it++){
569 _meot->second[
i].second.second[2]->SetBinError(++j,*sample_it);
571 _meot->second[
i].second.second[2]->GetXaxis()->SetTitle(name);
572 _meot->second[
i].second.second[2]->GetYaxis()->SetTitle(
"Close correlation");
573 _meot->second[
i].second.second[2]->Write();
602 for(sample_it=
_meot->second[
i].second.first[4].begin();
603 sample_it!=
_meot->second[
i].second.first[4].end();sample_it++){
604 Chi2->Fill(*sample_it);
608 CapidAverage=
new TH1F(
"Constant fit: Pedestal Values",
609 "Constant fit: Pedestal Values",
610 AverageValues[0].
size(),0.,AverageValues[0].
size());
611 std::vector<double>::iterator sample_it;
613 for(sample_it=AverageValues[0].
begin();
614 sample_it!=AverageValues[0].end();sample_it++){
615 CapidAverage->SetBinContent(++j,*sample_it);
618 for(sample_it=AverageValues[1].
begin();
619 sample_it!=AverageValues[1].end();sample_it++){
620 CapidAverage->SetBinError(++j,*sample_it);
622 CapidChi2=
new TH1F(
"Constant fit: Chi2/ndf",
623 "Constant fit: Chi2/ndf",
624 AverageValues[2].
size(),0.,AverageValues[2].
size());
626 for(sample_it=AverageValues[2].
begin();
627 sample_it!=AverageValues[2].end();sample_it++){
628 CapidChi2->SetBinContent(++j,*sample_it);
631 Chi2->GetXaxis()->SetTitle(
"Chi2/ndf");
632 Chi2->GetYaxis()->SetTitle(
"50 x [(16+2) x 4 x 4] `events`");
634 CapidAverage->GetYaxis()->SetTitle(
"Pedestal value");
635 CapidAverage->GetXaxis()->SetTitle(
"(16+2) x 4 x 4 `events`");
636 CapidAverage->Write();
637 CapidChi2->GetYaxis()->SetTitle(
"Chi2/ndf");
638 CapidChi2->GetXaxis()->SetTitle(
"(16+2) x 4 x 4 `events`");
655 float RefPedVals[4];
float RefPedSigs[4][4];
656 float RawPedVals[4];
float RawPedSigs[4][4];
657 map<HcalDetId,bool> isinRaw;
658 map<HcalDetId,bool> isinRef;
661 std::ofstream PedValLog;
662 PedValLog.open(
"CastorPedVal.log");
664 if(nstat[0]+nstat[1]+nstat[2]+nstat[3]<2500) PedValLog<<
"CastorPedVal: warning - low statistics"<<std::endl;
666 for (
int i=0;
i<(int)RawChanns.size();
i++){
669 for (
int i=0;
i<(int)RefChanns.size();
i++){
671 isinRaw[
detid]=
false;
674 for (
int i=0;
i<(int)RawChanns.size();
i++){
677 if (isinRef[detid]==
false) {
678 PedValLog<<
"CastorPedVal: channel "<<detid<<
" not found in reference set"<<std::endl;
679 std::cerr<<
"CastorPedVal: channel "<<detid<<
" not found in reference set"<<std::endl;
685 for (
int i=0;
i<(int)RefChanns.size();
i++){
687 for (
int icap=0; icap<4; icap++) {
689 for (
int icap2=icap; icap2<4; icap2++) {
690 RefPedSigs[icap][icap2]=fRefPedestalWidths->
getValues(detid)->
getSigma(icap,icap2);
691 if(icap2!=icap)RefPedSigs[icap2][icap]=RefPedSigs[icap][icap2];
697 for (
int icap=0; icap<4; icap++) {
699 for (
int icap2=icap; icap2<4; icap2++) {
700 RawPedSigs[icap][icap2]=fRawPedestalWidths->
getValues(detid)->
getSigma(icap,icap2);
701 if(icap2!=icap)RawPedSigs[icap2][icap]=RawPedSigs[icap][icap2];
706 for (
int icap=0; icap<4; icap++) {
707 if(RawPedVals[icap]<1. || RawPedSigs[icap][icap]<0.01) isinRaw[
detid]=
false;
708 for (
int icap2=icap; icap2<4; icap2++){
709 if(fabs(RawPedSigs[icap][icap2]/
sqrt(RawPedSigs[icap][icap]*RawPedSigs[icap2][icap2]))>1.) isinRaw[
detid]=
false;
716 for (
int icap=0; icap<4; icap++) {
717 int icap2=(icap+1)%4;
718 float width=
sqrt(RawPedSigs[icap][icap]);
719 float erof1=width/
sqrt((
float)nstat[icap]);
720 float erof2=
sqrt(erof1*erof1+RawPedSigs[icap][icap]/(
float)nstat[icap]);
721 float erofwidth=width/
sqrt(2.*nstat[icap]);
722 float diffof1=RawPedVals[icap]-RefPedVals[icap];
723 float diffof2=RawPedVals[icap]+RawPedVals[icap2]-RefPedVals[icap]-RefPedVals[icap2];
724 float diffofw=width-
sqrt(RefPedSigs[icap][icap]);
729 if(nTS==1 && fabs(diffof1)>0.5+erof1) {
731 PedValLog<<
"HcalPedVal: drift in channel "<<detid<<
" cap "<<icap<<
": "<<RawPedVals[icap]<<
" - "<<RefPedVals[icap]<<
" = "<<diffof1<<std::endl;
733 if(nTS==2 && fabs(diffof2)>0.5+erof2) {
735 PedValLog<<
"HcalPedVal: drift in channel "<<detid<<
" caps "<<icap<<
"+"<<icap2<<
": "<<RawPedVals[icap]<<
"+"<<RawPedVals[icap2]<<
" - "<<RefPedVals[icap]<<
"+"<<RefPedVals[icap2]<<
" = "<<diffof2<<std::endl;
737 if(fabs(diffofw)>0.15*width+erofwidth) {
739 PedValLog<<
"HcalPedVal: width changed in channel "<<detid<<
" cap "<<icap<<
": "<<width<<
" - "<<
sqrt(RefPedSigs[icap][icap])<<
" = "<<diffofw<<std::endl;
746 PedValLog<<
"HcalPedVal: no valid data from channel "<<detid<<std::endl;
748 CastorPedestal item(detid,RefPedVals[0],RefPedVals[1],RefPedVals[2],RefPedVals[3]);
751 for (
int icap=0; icap<4; icap++) {
752 for (
int icap2=icap; icap2<4; icap2++) widthsp.
setSigma(icap2,icap,RefPedSigs[icap2][icap]);
760 if(erflag==0) PedValLog<<
"HcalPedVal: all pedestals checked OK"<<std::endl;
764 if(erflag%100000 == 0) {
765 for (
int i=0;
i<(int)RefChanns.size();
i++){
767 if (isinRaw[detid]) {
769 for (
int icap=0; icap<4; icap++) {
771 for (
int icap2=icap; icap2<4; icap2++) {
772 RefPedSigs[icap][icap2]=fRefPedestalWidths->
getValues(detid)->
getSigma(icap,icap2);
773 if(icap2!=icap)RefPedSigs[icap2][icap]=RefPedSigs[icap][icap2];
774 widthsp.
setSigma(icap2,icap,RefPedSigs[icap2][icap]);
778 CastorPedestal item(detid,RefPedVals[0],RefPedVals[1],RefPedVals[2],RefPedVals[3]);
786 for (
int i=0;
i<(int)RawChanns.size();
i++){
788 if (isinRaw[detid]) {
790 for (
int icap=0; icap<4; icap++) {
792 for (
int icap2=icap; icap2<4; icap2++) {
793 RawPedSigs[icap][icap2]=fRawPedestalWidths->
getValues(detid)->
getSigma(icap,icap2);
794 if(icap2!=icap)RawPedSigs[icap2][icap]=RawPedSigs[icap][icap2];
795 widthsp.
setSigma(icap2,icap,RawPedSigs[icap2][icap]);
799 CastorPedestal item(detid,RawPedVals[0],RawPedVals[1],RawPedVals[2],RawPedVals[3]);
T getUntrackedParameter(std::string const &, T const &) const
float getValue(int fCapId) const
get value for capId = 0..3
struct CastorPedestalAnalysis::@35 castorHists
void setSigma(int fCapId1, int fCapId2, float fSigma)
CastorPedestalWidths * fRawPedestalWidths
std::map< HcalDetId, std::map< int, PEDBUNCH > >::iterator _meot
const CastorQIECoder * m_coder
int adc() const
get the ADC sample
const HcalQIESample & sample(int i) const
access a sample
std::vector< T >::const_iterator const_iterator
CastorPedestals * fRawPedestals
std::vector< DetId > getAllChannels() const
~CastorPedestalAnalysis()
Destructor.
static int CastorPedVal(int nstat[4], const CastorPedestals *fRefPedestals, const CastorPedestalWidths *fRefPedestalWidths, CastorPedestals *fRawPedestals, CastorPedestalWidths *fRawPedestalWidths, CastorPedestals *fValPedestals, CastorPedestalWidths *fValPedestalWidths)
void setup(const std::string &m_outputFileROOT)
void processEvent(const CastorDigiCollection &castor, const CastorDbService &cond)
std::vector< bool > state
int depth() const
get the tower depth
void Trendings(std::map< HcalDetId, std::map< int, PEDBUNCH > > &toolT, TH1F *Chi2, TH1F *CapidAverage, TH1F *CapidChi2)
CastorPedestalWidths * fValPedestalWidths
void AllChanHists(const HcalDetId detid, const HcalQIESample &qie0, const HcalQIESample &qie1, const HcalQIESample &qie2, const HcalQIESample &qie3, const HcalQIESample &qie4, const HcalQIESample &qie5, std::map< HcalDetId, std::map< int, PEDBUNCH > > &toolT)
float getSigma(int fCapId1, int fCapId2) const
get correlation element for capId1/2 = 0..3
const CastorQIEShape * getCastorShape() const
int ieta() const
get the cell ieta
float charge(const CastorQIEShape &fShape, unsigned fAdc, unsigned fCapId) const
ADC [0..127] + capid [0..3] -> fC conversion.
std::string m_outputFileMean
CastorPedestals * fValPedestals
const Item * getValues(DetId fId) const
const_iterator end() const
int iphi() const
get the cell iphi
std::string m_outputFileWidth
int capid() const
get the Capacitor id
const CastorQIEShape * m_shape
int done(const CastorPedestals *fInputPedestals, const CastorPedestalWidths *fInputWidths, CastorPedestals *fOutputPedestals, CastorPedestalWidths *fOutputWidths)
bool addValues(const Item &myItem)
const CastorPedestalWidths * fRefPedestalWidths
CastorPedestalAnalysis(const edm::ParameterSet &ps)
Constructor.
std::string m_outputFileROOT
void GetPedConst(std::map< HcalDetId, std::map< int, PEDBUNCH > > &toolT, TH1F *PedMeans, TH1F *PedWidths)
const HcalCastorDetId & id() const
int size() const
total number of samples in the digi
bool insert(Storage &, ItemType *, const IdTag &)
tuple size
Write out results.
void per2CapsHists(int flag, int id, const HcalDetId detid, const HcalQIESample &qie1, const HcalQIESample &qie2, std::map< HcalDetId, std::map< int, PEDBUNCH > > &toolT, const CastorDbService &cond)
const_iterator begin() const
const CastorQIECoder * getCastorCoder(const HcalGenericDetId &fId) const
const CastorPedestals * fRefPedestals