00001 #include "CalibFormats/HcalObjects/interface/HcalNominalCoder.h" 00002 00003 void HcalNominalCoder::adc2fC(const HBHEDataFrame& df, CaloSamples& lf) const { 00004 lf=CaloSamples(df.id(),df.size()); 00005 for (int i=0; i<df.size(); i++) lf[i]=df[i].nominal_fC(); 00006 lf.setPresamples(df.presamples()); 00007 } 00008 void HcalNominalCoder::adc2fC(const HODataFrame& df, CaloSamples& lf) const { 00009 lf=CaloSamples(df.id(),df.size()); 00010 for (int i=0; i<df.size(); i++) lf[i]=df[i].nominal_fC(); 00011 lf.setPresamples(df.presamples()); 00012 } 00013 void HcalNominalCoder::adc2fC(const HFDataFrame& df, CaloSamples& lf) const { 00014 lf=CaloSamples(df.id(),df.size()); 00015 for (int i=0; i<df.size(); i++) lf[i]=df[i].nominal_fC(); 00016 lf.setPresamples(df.presamples()); 00017 } 00018 void HcalNominalCoder::adc2fC(const ZDCDataFrame& df, CaloSamples& lf) const { 00019 lf=CaloSamples(df.id(),df.size()); 00020 for (int i=0; i<df.size(); i++) lf[i]=df[i].nominal_fC(); 00021 lf.setPresamples(df.presamples()); 00022 } 00023 void HcalNominalCoder::adc2fC(const HcalCalibDataFrame& df, CaloSamples& lf) const { 00024 lf=CaloSamples(df.id(),df.size()); 00025 for (int i=0; i<df.size(); i++) lf[i]=df[i].nominal_fC(); 00026 lf.setPresamples(df.presamples()); 00027 } 00028 00029 namespace HcalNominalCoderTemplate { 00030 template <class Digi> 00031 void process(const CaloSamples& clf, Digi& df, int fCapIdOffset) { 00032 df=Digi(clf.id()); 00033 df.setSize(clf.size()); 00034 df.setPresamples(clf.presamples()); 00035 for (int i=0; i<clf.size(); i++) { 00036 int capId = (fCapIdOffset + i) % 4; 00037 for (int q=1; q<128; q++) { 00038 df.setSample(i,HcalQIESample(q,capId,0,0)); 00039 if (df[i].nominal_fC()>clf[i]) { 00040 df.setSample(i,HcalQIESample(q-1,capId,0,0)); 00041 break; 00042 } 00043 } 00044 } 00045 } 00046 } 00047 00048 void HcalNominalCoder::fC2adc(const CaloSamples& clf, HBHEDataFrame& df, int fCapIdOffset) const { 00049 HcalNominalCoderTemplate::process(clf,df, fCapIdOffset); 00050 } 00051 void HcalNominalCoder::fC2adc(const CaloSamples& clf, HFDataFrame& df, int fCapIdOffset) const { 00052 HcalNominalCoderTemplate::process(clf,df, fCapIdOffset); 00053 } 00054 void HcalNominalCoder::fC2adc(const CaloSamples& clf, HODataFrame& df, int fCapIdOffset) const { 00055 HcalNominalCoderTemplate::process(clf,df, fCapIdOffset); 00056 } 00057 void HcalNominalCoder::fC2adc(const CaloSamples& clf, ZDCDataFrame& df, int fCapIdOffset) const { 00058 HcalNominalCoderTemplate::process(clf,df, fCapIdOffset); 00059 } 00060 void HcalNominalCoder::fC2adc(const CaloSamples& clf, HcalCalibDataFrame& df, int fCapIdOffset) const { 00061 HcalNominalCoderTemplate::process(clf,df, fCapIdOffset); 00062 }