Go to the documentation of this file.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 }