Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

CalLog.h

Go to the documentation of this file.
00001 
00002 #ifndef CalLog_H
00003 #define CalLog_H
00004 
00005 #include "LogId.h"
00006 #include "TObject.h"
00007 
00023 class CalLog: public TObject {
00024 public:
00025     
00026     CalLog();
00027     CalLog(LogId &id);
00028     virtual ~CalLog();
00030     Int_t Compare(const TObject *obj) const;
00031     Bool_t IsSortable() const; 
00032     
00033     // Enumeration of ADC range values
00034     // (Should be identical to that found in CalorimeterRawStore.h)
00035     typedef enum {
00036         LowEnX4 = 0,
00037             LowEnX1,
00038             HiEnX8,
00039             HiEnX1
00040     } AdcRange;
00041     
00042     typedef enum {
00043         POS = 0,
00044             NEG
00045     } LogFace;
00046     
00047     typedef enum
00048     {
00049         BESTRANGE = 0,
00050             ALLRANGE = 2
00051     } CalTrigMode;
00052     
00053 private:
00070     enum {
00071         ADC_K_RS = 1,
00072             ADC_V_RS = 0,
00073             ADC_M_RS = ((1 << ADC_K_RS) - 1),
00074             
00075             ADC_K_PIN = 1,
00076             ADC_V_PIN = (ADC_K_RS + ADC_V_RS),
00077             ADC_M_PIN = ((1 << ADC_K_PIN) - 1),
00078             
00079             ADC_K_ID = 2,
00080             ADC_V_ID = (ADC_K_PIN + ADC_V_PIN),
00081             ADC_M_ID = ((1 << ADC_K_ID) - 1),
00082             
00083             ADC_K_VAL = 12,
00084             ADC_V_VAL = (ADC_K_ID + ADC_V_ID),
00085             ADC_M_VAL = ((1 << ADC_K_VAL) - 1),
00086     };
00087     
00088     
00089     
00090     LogId m_log;       // Log identity info class
00091     
00092     //    UShort_t m_AdcValues[2][4];
00093     UShort_t m_AdcValues[8];
00094     
00096     static CalTrigMode m_mode;
00097     
00098     
00099     inline static UShort_t getAdc(UShort_t adcWord) {
00100         return (adcWord >> ADC_V_VAL) & ADC_M_VAL;
00101     };
00102     inline static UShort_t getAdcId(UShort_t adcWord) { 
00103         return (adcWord >> ADC_V_ID) & ADC_M_ID;
00104     };
00105     inline static UShort_t getAdcPinId(UShort_t adcWord) {
00106         return (adcWord >> ADC_V_PIN) & ADC_M_PIN;
00107     };
00108     inline static UShort_t getAdcRangeScale(UShort_t adcWord) {
00109         return (adcWord >> ADC_V_RS) & ADC_M_RS;
00110     };
00111     
00112     inline static UShort_t getAdcRange(UShort_t adcWord) {
00113         UShort_t rangeScale = getAdcRangeScale(adcWord);
00114         UShort_t pinId = getAdcPinId(adcWord);
00115         return( (pinId << 1 | rangeScale) );
00116     }
00117     
00118     
00119 public:
00120     
00121     UShort_t getAdc(LogFace face, short index) const {
00122         return ( ((face*4+index) < 8) ? getAdc(m_AdcValues[face * 4 + index]) : 0);
00123     };
00125     UShort_t getAdcSelectedRange(LogFace face, AdcRange range = LowEnX4) const {
00126         return ( ((face*4 + range) < 8) ? getAdc(m_AdcValues[face * 4 + range]) : 0);
00127     };
00128     //   UShort_t getAdcId(LogFace face, AdcGain range = LowEnX4) const {
00129     //  return getAdcId(m_AdcValues[end * 4 + gain]);
00130     //    return getADCID(m_AdcValues[end][gain]);
00131     //  };
00132     //  UShort_t getADCPinId(LogEnd end, ADCGain gain = LowEnX4) const {
00133     //    return getADCPinId(ADCValues[end * 4 + gain]);
00134     //  return getADCPinID(m_AdcValues[end][gain]);
00135     //};
00136     UShort_t getRange(LogFace face, short index) const {
00137         return getAdcRange(m_AdcValues[face * 4 + index]);
00138     };
00139     
00141     inline const CalTrigMode getMode() const { return m_mode; };
00142     
00143     
00144     Bool_t setAdcValue(UShort_t newVal, LogFace face, AdcRange range = LowEnX4);
00145     Bool_t setAdcId(UShort_t newVal, LogFace face, AdcRange range = LowEnX4);
00146     Bool_t setAdcPinId(UShort_t newVal, LogFace face, AdcRange range = LowEnX4);
00147     Bool_t setAdcRangeScale(UShort_t newVal, LogFace face, AdcRange range = LowEnX4);
00148     inline void setAdcWord(UShort_t newVal, LogFace face, AdcRange range = LowEnX4) {
00149         m_AdcValues[face * 4 + range] = newVal;
00150     };
00151     inline void setTriggerMode(CalTrigMode val) { m_mode = val; };
00152     
00153     
00154     inline LogId* getLogId() { return &m_log; };
00155     
00156     
00157     ClassDef(CalLog,3)      // Digitization for a single Cal Log
00158 };
00159 
00160 #endif
00161 

Generated at Wed Nov 14 20:41:46 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000