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:
00072     enum {
00073         ADC_K_RS = 1,
00074             ADC_V_RS = 0,
00075             ADC_M_RS = ((1 << ADC_K_RS) - 1),
00076             
00077             ADC_K_PIN = 1,
00078             ADC_V_PIN = (ADC_K_RS + ADC_V_RS),
00079             ADC_M_PIN = ((1 << ADC_K_PIN) - 1),
00080             
00081             ADC_K_ID = 2,
00082             ADC_V_ID = (ADC_K_PIN + ADC_V_PIN),
00083             ADC_M_ID = ((1 << ADC_K_ID) - 1),
00084             
00085             ADC_K_VAL = 12,
00086             ADC_V_VAL = (ADC_K_ID + ADC_V_ID),
00087             ADC_M_VAL = ((1 << ADC_K_VAL) - 1),
00088     };
00089     
00090     
00091     
00092     LogId m_log;       // Log identity info class
00093     
00094     //    UShort_t m_AdcValues[2][4];
00095     UShort_t m_AdcValues[8];
00096     
00098     static CalTrigMode m_mode;
00099     
00100     
00101     inline static UShort_t getAdc(UShort_t adcWord) {
00102         return (adcWord >> ADC_V_VAL) & ADC_M_VAL;
00103     };
00104     inline static UShort_t getAdcId(UShort_t adcWord) { 
00105         return (adcWord >> ADC_V_ID) & ADC_M_ID;
00106     };
00107     inline static UShort_t getAdcPinId(UShort_t adcWord) {
00108         return (adcWord >> ADC_V_PIN) & ADC_M_PIN;
00109     };
00110     inline static UShort_t getAdcRangeScale(UShort_t adcWord) {
00111         return (adcWord >> ADC_V_RS) & ADC_M_RS;
00112     };
00113     
00114     inline static UShort_t getAdcRange(UShort_t adcWord) {
00115         UShort_t rangeScale = getAdcRangeScale(adcWord);
00116         UShort_t pinId = getAdcPinId(adcWord);
00117         return( (pinId << 1 | rangeScale) );
00118     }
00119     
00120     
00121 public:
00122     
00123     UShort_t getAdc(LogFace face, short index) const {
00124         return ( ((face*4+index) < 8) ? getAdc(m_AdcValues[face * 4 + index]) : 0);
00125     };
00127     UShort_t getAdcSelectedRange(LogFace face, AdcRange range = LowEnX4) const {
00128         return ( ((face*4 + range) < 8) ? getAdc(m_AdcValues[face * 4 + range]) : 0);
00129     };
00130     //   UShort_t getAdcId(LogFace face, AdcGain range = LowEnX4) const {
00131     //  return getAdcId(m_AdcValues[end * 4 + gain]);
00132     //    return getADCID(m_AdcValues[end][gain]);
00133     //  };
00134     //  UShort_t getADCPinId(LogEnd end, ADCGain gain = LowEnX4) const {
00135     //    return getADCPinId(ADCValues[end * 4 + gain]);
00136     //  return getADCPinID(m_AdcValues[end][gain]);
00137     //};
00138     UShort_t getRange(LogFace face, short index) const {
00139         return getAdcRange(m_AdcValues[face * 4 + index]);
00140     };
00141     
00143     inline const CalTrigMode getMode() const { return m_mode; };
00144     
00145     
00146     Bool_t setAdcValue(UShort_t newVal, LogFace face, AdcRange range = LowEnX4);
00147     Bool_t setAdcId(UShort_t newVal, LogFace face, AdcRange range = LowEnX4);
00148     Bool_t setAdcPinId(UShort_t newVal, LogFace face, AdcRange range = LowEnX4);
00149     Bool_t setAdcRangeScale(UShort_t newVal, LogFace face, AdcRange range = LowEnX4);
00150     inline void setAdcWord(UShort_t newVal, LogFace face, AdcRange range = LowEnX4) {
00151         m_AdcValues[face * 4 + range] = newVal;
00152     };
00153     inline void setTriggerMode(CalTrigMode val) { m_mode = val; };
00154     
00155     
00156     inline LogId* getLogId() { return &m_log; };
00157     
00158     
00159     ClassDef(CalLog,3)      // Digitization for a single Cal Log
00160 };
00161 
00162 #endif
00163 

Generated at Wed Nov 21 12:22:44 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000