CREAM TEA -- ROOT MCP

TargetData.cxx

00001  #include "TargetData.h"
00002 ClassImp(TargetData)
00004 TargetData::TargetData(void)
00005 :RawTargetData()
00006 {}
00007 
00008 TargetData::TargetData(RawTargetData *rawPtr)
00009   :RawTargetData(*rawPtr)
00010 {
00011   unpackData();
00012 }
00014 TargetData::~TargetData(void)
00015 {}
00017 TargetData::TargetData(unsigned short rawData[])
00018   :RawTargetData(rawData)
00019 {
00020   unpackData();
00021 }
00022 
00024 void TargetData::unpackData()
00025 {  
00026   unsigned int raw_temp[NUM_TARGETS];
00027   unsigned int raw_rovdd[NUM_TARGETS];
00028   unsigned int raw_scaler[NUM_TARGETS][3];
00029   int count = 1;
00030   int chip,channel,samp;
00031   int j;
00032 
00033   for(chip=0; chip<NUM_TARGETS; chip++){
00034     memAddrSpace[chip] = raw[count];
00035     count++;    
00036     for(channel=0; channel<NUM_CHANNELS; channel++){
00037       for(samp=0; samp<SAMPLES_PER_COL; samp++){
00038         data[chip][channel][samp] = raw[count];
00039         count++;
00040       }
00041     }
00042     for(j=0; j<3; j++){   
00043       raw_scaler[chip][j] = raw[count];
00044           count++;
00045     }
00046     thresh[chip] = raw[count];
00047         count++;   
00048     raw_rovdd[chip] = raw[count];
00049         count++;   
00050     wbias[chip] = raw[count];
00051         count++;   
00052     feedback[chip] = raw[count];
00053         count++;   
00054     raw_temp[chip] = raw[count];
00055         count++;   
00056   }     
00057 
00058   for(chip=0; chip<NUM_TARGETS; chip++){
00059     temperature[chip] = (float)raw_temp[chip]*0.03125;//degree C
00060     rovdd[chip] = (float)raw_rovdd[chip]*2.5/4096;//volts
00061     for(j=0; j<3; j++){         
00062       scaler[chip][j] = (float)raw_scaler[chip][j]/60.0;//Hz    
00063     }
00064   }
00065   unpackMemAddrSpace();
00066   unpackFeedback();
00067 }
00069 void TargetData::unpackMemAddrSpace()
00070 {
00071     const unsigned int MASK_ROW = 0x00000E00;
00072     const unsigned int MASK_COL = 0x000001F0;
00073     const unsigned int MASK_HITBIT = 0x00008000;
00074     for(int chip=0;chip<NUM_TARGETS;chip++) {
00075       rowLoc[chip] = memAddrSpace[chip] & MASK_ROW;
00076       rowLoc[chip] = rowLoc[chip] >> 9;
00077     
00078       colLoc[chip] = memAddrSpace[chip] & MASK_COL;     
00079       pixLoc[chip] = colLoc[chip];
00080       colLoc[chip] = colLoc[chip] >> 4; 
00081 
00082       hitBit[chip] = memAddrSpace[chip] & MASK_HITBIT;
00083       hitBit[chip] = hitBit[chip] >> 15;        
00084     }
00085 }
00087 void TargetData::unpackFeedback()
00088 {
00089     const unsigned int MASK_SGN = 0x00001000;
00090     const unsigned int MASK_ROW = 0x00000E00;
00091     const unsigned int MASK_COL = 0x000001F0;
00092     const unsigned int MASK_TERM = 0x0000000E;  
00093     const unsigned int MASK_EN_PED = 0x00000001;
00094     for(int chip=0;chip<NUM_TARGETS;chip++) {
00095       sign[chip] = feedback[chip] & MASK_SGN;
00096       sign[chip] = sign[chip] >> 12;
00097     
00098       pedRowAddr[chip] = feedback[chip] & MASK_ROW;     
00099       pedRowAddr[chip] = pedRowAddr[chip] >> 9; 
00100       
00101       pedColAddr[chip] = feedback[chip] & MASK_COL;
00102       pedColAddr[chip] = pedColAddr[chip] >> 4;
00103       
00104       term[chip] = feedback[chip] & MASK_TERM;
00105       term[chip] = term[chip] >> 1;
00106       
00107       enPed[chip] = feedback[chip] & MASK_EN_PED;
00108     }
00109 }
00111 
00112 
00113 TGraph *TargetData::getChannel(int chip, int channel)
00114 {
00115   if(chip<0 || chip>=NUM_TARGETS) return NULL;
00116   if(channel<0 || channel>=NUM_CHANNELS) return NULL;
00117   
00118   Double_t timeVals[SAMPLES_PER_COL]={0};
00119   Double_t voltVals[SAMPLES_PER_COL]={0};
00120   for(int samp=0;samp<SAMPLES_PER_COL;samp++) {
00121      timeVals[samp]=Double_t(samp); //Should multiple by delta t here
00122      voltVals[samp]=fVoltBuffer[chip][channel][samp];
00123   }
00124   TGraph *gr = new TGraph(SAMPLES_PER_COL,timeVals,voltVals);
00125   return gr;
00126 }

Generated on Tue Nov 24 19:05:00 2009 for CREAM TEA -- MCP/TARGET Readout by doxygen 1.3.9.1