DiracChip Class Reference

#include <DiracChip.hh>

Inheritance diagram for DiracChip:

Inheritance graph
[legend]
Collaboration diagram for DiracChip:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 DiracChip (const Board &aBoard, const i32 aCol, const i32 aRow, const ui32 nbColumns, const ui32 nbRows, const i32 aId, const ui32 aSerialNumber)
virtual ~DiracChip ()
bool read (unsigned char *buf)
const ui32 getXGap () const
const ui32 getYGap () const
DiracChipoperator= (const DiracChip &x)
ui32 getBLoThreshold () const
ui32 getBMidThreshold () const
ui32 getBHiThreshold () const
ui32 getALoThreshold () const
ui32 getAMidThreshold () const
ui32 getAHiThreshold () const
bool getAnalogData () const
void setBLoThreshold (ui32 value)
void setBMidThreshold (ui32 value)
void setBHiThreshold (ui32 value)
void setALoThreshold (ui32 value)
void setAMidThreshold (ui32 value)
void setAHiThreshold (ui32 value)
void setAnalogData (bool value)

Private Member Functions

int HRmap (int channel)
void init ()

Private Attributes

ui32 bLoThreshold
ui32 bMidThreshold
ui32 bHiThreshold
ui32 aLoThreshold
ui32 aMidThreshold
ui32 aHiThreshold
bool analogData

Detailed Description

Definition at line 20 of file DiracChip.hh.


Constructor & Destructor Documentation

DiracChip::DiracChip ( const Board aBoard,
const i32  aCol,
const i32  aRow,
const ui32  nbColumns,
const ui32  nbRows,
const i32  aId,
const ui32  aSerialNumber 
)

Definition at line 15 of file DiracChip.cpp.

00016   :Chip(aBoard, aCol, aRow, nbColumns, nbRows, aId, aSerialNumber)
00017 {
00018 //  FILE_LOG(logDEBUG) << "---DiracChip constructor id " << id << endl;
00019   init();
00020   bLoThreshold = 0;
00021   bMidThreshold = 0;
00022   bHiThreshold = 0;
00023   aLoThreshold = 0;
00024   aMidThreshold = 0;
00025   aHiThreshold = 0;
00026 }; // DiracChip

virtual DiracChip::~DiracChip (  )  [inline, virtual]

Definition at line 23 of file DiracChip.hh.

00023 { };


Member Function Documentation

bool DiracChip::read ( unsigned char *  buf  ) 

Definition at line 90 of file DiracChip.cpp.

00090                                        {
00091   // get 23 bytes which are shifted by 4 bits...
00092   char dataBuf[256];
00093   char *dataStr = dataBuf;
00094   // split the string into correct data
00095   for (int dataNum = 0; dataNum < 23; dataNum++) {
00096     unsigned int data = *buf++;
00097     dataStr += sprintf(dataStr, "%02X", data);
00098   }
00099   *dataStr = 0;
00100   dataStr = dataBuf;
00101   unsigned int data;
00102 
00103   // 4-bit data
00104   sscanf(dataStr, "%1x", &data); dataStr++;
00105   gain = data & 0x03;
00106   analogData = (data & 0x08) != 0;
00107 
00108   // 3 thresholds for channels 32-63 (B-data), 8 bits each
00109   sscanf(dataStr, "%2x", &data); dataStr+=2;
00110   bHiThreshold = data;
00111   sscanf(dataStr, "%2x", &data); dataStr+=2;
00112   bMidThreshold = data;
00113   sscanf(dataStr, "%2x", &data); dataStr+=2;
00114   bLoThreshold = data;
00115   // configuration bits for 32 channels
00116   for (int bChNum = 63; bChNum >= 32; bChNum -= 4) {
00117     // 2 bits for each channel
00118     sscanf(dataStr, "%2x", &data); dataStr+=2;
00119     unsigned char mask = 0x80;
00120     for (int chNum = 0; chNum <= 3; chNum++) {
00121       //chConfig[bChNum - chNum].setStimulate((data & mask) != 0);
00122       this->getChannelById(bChNum - chNum).setStimulate((data & mask) != 0);
00123       mask >>= 1;
00124       //chConfig[bChNum - chNum].setEnable((data & mask) != 0);
00125       this->getChannelById(bChNum - chNum).setEnable((data & mask) != 0);
00126 
00127       mask >>= 1;
00128     }
00129   }
00130   // 3 thresholds for channels 31-0 (A-data), 8 bits each
00131   sscanf(dataStr, "%2x", &data); dataStr+=2;
00132   aHiThreshold = data;
00133   sscanf(dataStr, "%2x", &data); dataStr+=2;
00134   aMidThreshold = data;
00135   sscanf(dataStr, "%2x", &data); dataStr+=2;
00136   aLoThreshold = data;
00137   // configuration bits for 32 channels
00138   for (int aChNum = 31; aChNum >= 0; aChNum -= 4) {
00139     // 2 bits for each channel
00140     sscanf(dataStr, "%2x", &data); dataStr+=2;
00141     unsigned char mask = 0x80;
00142     for (int chNum = 0; chNum <= 3; chNum++) {
00143       //chConfig[aChNum - chNum].setStimulate((data & mask) != 0);
00144       this->getChannelById(aChNum - chNum).setStimulate((data & mask) != 0);
00145       mask >>= 1;
00146       //chConfig[aChNum - chNum].setEnable ((data & mask) != 0);
00147       this->getChannelById(aChNum - chNum).setEnable ((data & mask) != 0);
00148       mask >>= 1;
00149     }
00150   }
00151 
00152   FILE_LOG(logDEBUG1) << "  DiracChipConfig read" << endl;
00153   return(true);
00154 }; // DiracChip.read

const ui32 DiracChip::getXGap (  )  const [inline, virtual]

Implements Chip.

Definition at line 29 of file DiracChip.hh.

00029 { return(0); }; // in centimeters 10um

const ui32 DiracChip::getYGap (  )  const [inline, virtual]

Implements Chip.

Definition at line 30 of file DiracChip.hh.

00030 { return(0); };

DiracChip & DiracChip::operator= ( const DiracChip x  ) 

Definition at line 75 of file DiracChip.cpp.

00075                                                     {
00076 
00077   FILE_LOG(logINFO) << "DiracChip& DiracChip::operator = (const DiracChip& x) " << endl;
00078   bLoThreshold  = x.bLoThreshold;
00079   bMidThreshold = x.bMidThreshold;
00080   bHiThreshold  = x.bHiThreshold;
00081   aLoThreshold  = x.aLoThreshold;
00082   aMidThreshold = x.aMidThreshold;
00083   aHiThreshold  = x.aHiThreshold;
00084 }

ui32 DiracChip::getBLoThreshold (  )  const [inline]

Definition at line 33 of file DiracChip.hh.

Referenced by MTDiracChip::operator=().

00033 { return  bLoThreshold;};

ui32 DiracChip::getBMidThreshold (  )  const [inline]

Definition at line 34 of file DiracChip.hh.

Referenced by MTDiracChip::operator=().

00034 { return bMidThreshold;};

ui32 DiracChip::getBHiThreshold (  )  const [inline]

Definition at line 35 of file DiracChip.hh.

Referenced by MTDiracChip::operator=().

00035 { return  bHiThreshold;};

ui32 DiracChip::getALoThreshold (  )  const [inline]

Definition at line 37 of file DiracChip.hh.

Referenced by MTDiracChip::operator=().

00037 { return  aLoThreshold;};

ui32 DiracChip::getAMidThreshold (  )  const [inline]

Definition at line 38 of file DiracChip.hh.

Referenced by MTDiracChip::operator=().

00038 { return aMidThreshold;};

ui32 DiracChip::getAHiThreshold (  )  const [inline]

Definition at line 39 of file DiracChip.hh.

Referenced by MTDiracChip::operator=().

00039 { return  aHiThreshold;};

bool DiracChip::getAnalogData (  )  const [inline]

Definition at line 41 of file DiracChip.hh.

00041 { return analogData;};

void DiracChip::setBLoThreshold ( ui32  value  )  [inline]

Definition at line 43 of file DiracChip.hh.

Referenced by DiracLabview::getNextEvent().

00043 { bLoThreshold = value;};

void DiracChip::setBMidThreshold ( ui32  value  )  [inline]

Definition at line 44 of file DiracChip.hh.

Referenced by DiracLabview::getNextEvent().

00044 { bMidThreshold = value;};

void DiracChip::setBHiThreshold ( ui32  value  )  [inline]

Definition at line 45 of file DiracChip.hh.

Referenced by DiracLabview::getNextEvent().

00045 { bHiThreshold = value;};

void DiracChip::setALoThreshold ( ui32  value  )  [inline]

Definition at line 47 of file DiracChip.hh.

Referenced by DiracLabview::getNextEvent().

00047 { aLoThreshold = value;};

void DiracChip::setAMidThreshold ( ui32  value  )  [inline]

Definition at line 48 of file DiracChip.hh.

Referenced by DiracLabview::getNextEvent().

00048 { aMidThreshold = value;};

void DiracChip::setAHiThreshold ( ui32  value  )  [inline]

Definition at line 49 of file DiracChip.hh.

Referenced by DiracLabview::getNextEvent().

00049 { aHiThreshold = value;};

void DiracChip::setAnalogData ( bool  value  )  [inline]

Definition at line 51 of file DiracChip.hh.

00051 { analogData = value; };

int DiracChip::HRmap ( int  channel  )  [private]

Definition at line 49 of file DiracChip.cpp.

Referenced by init().

00050 {
00051 
00052 
00053   if(channel<0||channel>63)
00054    {
00055      FILE_LOG(logERROR)<<"map error  channel="<<channel<<endl;return-1;
00056   }
00057 
00058   const int map[64]=
00059   {7, 6, 5, 4, 15,14,13,12,
00060    23,22,21,20,31,30,29,28,
00061    39,38,37,36,47,46,45,44,
00062    55,54,53,52,63,62,61,60,
00063    3 ,2 ,1 ,0, 11,10,9 ,8,
00064    19,18,17,16,27,26,25,24,
00065    35,34,33,32,43,42,41,40,
00066    51,50,49,48,59,58,57,56};
00067 
00068   return map[channel];
00069 
00070   return -1;
00071 }

void DiracChip::init (  )  [private]

Definition at line 29 of file DiracChip.cpp.

Referenced by DiracChip().

00030 {
00031    for (int channelId = 0; channelId <= 63 ; channelId++) {
00032       int map = HRmap(channelId);
00033       DiracChannel *channel = new DiracChannel(*this, map%8, map/8, channelId);
00034       channels.insert(make_pair(channelId,channel));
00035     }
00036     bLoThreshold  = 0;
00037     bMidThreshold = 0;
00038     bHiThreshold  = 0;
00039     aLoThreshold  = 0;
00040     aMidThreshold = 0;
00041     aHiThreshold  = 0;
00042 }


Member Data Documentation

ui32 DiracChip::bLoThreshold [private]

Definition at line 51 of file DiracChip.hh.

Referenced by DiracChip(), getBLoThreshold(), init(), operator=(), read(), and setBLoThreshold().

ui32 DiracChip::bMidThreshold [private]

Definition at line 58 of file DiracChip.hh.

Referenced by DiracChip(), getBMidThreshold(), init(), operator=(), read(), and setBMidThreshold().

ui32 DiracChip::bHiThreshold [private]

Definition at line 59 of file DiracChip.hh.

Referenced by DiracChip(), getBHiThreshold(), init(), operator=(), read(), and setBHiThreshold().

ui32 DiracChip::aLoThreshold [private]

Definition at line 60 of file DiracChip.hh.

Referenced by DiracChip(), getALoThreshold(), init(), operator=(), read(), and setALoThreshold().

ui32 DiracChip::aMidThreshold [private]

Definition at line 61 of file DiracChip.hh.

Referenced by DiracChip(), getAMidThreshold(), init(), operator=(), read(), and setAMidThreshold().

ui32 DiracChip::aHiThreshold [private]

Definition at line 62 of file DiracChip.hh.

Referenced by DiracChip(), getAHiThreshold(), init(), operator=(), read(), and setAHiThreshold().

bool DiracChip::analogData [private]

Definition at line 63 of file DiracChip.hh.

Referenced by getAnalogData(), read(), and setAnalogData().


The documentation for this class was generated from the following files:
Generated on Mon Jan 7 13:18:14 2013 for MicromegasFramework by  doxygen 1.4.7