CMS 3D CMS Logo

HcaluLUTTPGCoder.h

Go to the documentation of this file.
00001 #ifndef CALIBCALORIMETRY_HCALTPGALGOS_HCALNOMINALTPGCODER_H
00002 #define CALIBCALORIMETRY_HCALTPGALGOS_HCALNOMINALTPGCODER_H 1
00003 
00004 #include "CalibFormats/HcalObjects/interface/HcalTPGCoder.h"
00005 #include "CalibFormats/HcalObjects/interface/HcalNominalCoder.h"
00006 #include "Geometry/CaloTopology/interface/HcalTopology.h"
00007 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
00008 #include <vector>
00009 
00010 class HcalDbService;
00011 
00031 class HcaluLUTTPGCoder : public HcalTPGCoder {
00032 public:
00033  
00034   HcaluLUTTPGCoder(const char* ifilename, bool read_Ascii_LUTs);
00035   virtual ~HcaluLUTTPGCoder();
00036   virtual void adc2Linear(const HBHEDataFrame& df, IntegerCaloSamples& ics) const;
00037   virtual void adc2Linear(const HFDataFrame& df, IntegerCaloSamples& ics) const;
00038   virtual void compress(const IntegerCaloSamples& ics, const std::vector<bool>& featureBits, HcalTriggerPrimitiveDigi& tp) const;
00039   virtual unsigned short adc2Linear(HcalQIESample sample,HcalDetId id) const;
00040   virtual float getLUTPedestal(HcalDetId id) const;               // returns the PED for channel id
00041   virtual float getLUTGain(HcalDetId id) const;              // returns the gain for channel id
00042 
00043   void update(const HcalDbService& conditions);
00044   void update(const char* filename);
00045   void PrintTPGMap();
00046 private:
00047   void loadILUTs(const char* filename);
00048   typedef std::vector<int> LUTType;
00049   std::vector<LUTType> inputluts_;
00050   static const int nluts = 46007, INPUT_LUT_SIZE = 128;
00051   int GetLUTID(HcalSubdetector id, int ieta, int iphi, int depth) const;
00052   void AllocateLUTs();
00053   void getRecHitCalib(const char* filename);
00054   float Rcalib[87];
00055   typedef short unsigned int LUT;
00056   LUT *inputLUT[nluts];
00057   float *_gain;
00058   float *_ped;
00059   static const float nominal_gain;              // Nominal HB/HE gain in GeV/fC
00060 };
00061 
00062 #endif

Generated on Tue Jun 9 17:25:21 2009 for CMSSW by  doxygen 1.5.4