00001 #ifndef CALIBFORMATS_CASTOROBJECTS_CASTORTPGCODER_H 00002 #define CALIBFORMATS_CASTOROBJECTS_CASTORTPGCODER_H 1 00003 00004 #include "CalibFormats/CaloObjects/interface/IntegerCaloSamples.h" 00005 #include "DataFormats/HcalDigi/interface/HBHEDataFrame.h" 00006 #include "DataFormats/HcalDigi/interface/HFDataFrame.h" 00007 #include "DataFormats/HcalDigi/interface/CastorDataFrame.h" 00008 #include "DataFormats/HcalDigi/interface/HcalTriggerPrimitiveDigi.h" 00009 00010 // forward declaration of EventSetup is all that is needed here 00011 namespace edm { 00012 class EventSetup; 00013 } 00014 00027 class CastorTPGCoder { 00028 public: 00029 00030 // virtual void adc2Linear(const CastorDataFrame& df, IntegerCaloSamples& ics) const = 0; 00031 00032 virtual unsigned short adc2Linear(HcalQIESample sample,HcalDetId id) const = 0; 00033 unsigned short adc2Linear(unsigned char adc, HcalDetId id) const { return adc2Linear(HcalQIESample(adc,0,0,0),id); } 00034 virtual void compress(const IntegerCaloSamples& ics, const std::vector<bool>& featureBits, HcalTriggerPrimitiveDigi& tp) const = 0; 00035 virtual float getLUTPedestal(HcalDetId id) const = 0; 00036 virtual float getLUTGain(HcalDetId id) const = 0; 00040 virtual std::vector<unsigned short> getLinearizationLUT(HcalDetId id) const; 00041 }; 00042 00043 #endif