CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/CalibFormats/HcalObjects/src/HcalNominalCoder.cc

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 }