#include #include #include #include "TPCData.h" int TPCAltroChannel::GetMeanAndRMS(int n, unsigned short * data,float *mean, float *rms, int min, int max){ float sum=0, sum2=0; int ncount=0; for (int i=min;i> pos ) & 0x3ff; } int TPCAltroChannel::GetDecoded(unsigned short n,unsigned short *ch) { unsigned short fchanneltemp; char *ptr= fData; long long *Trailer = ((long long *) (ptr-4)); //int TrailerWordHWAddr = (*Trailer) &0xfff; int TrailerWordWCount = ((*Trailer)>>16)&0x3ff; ptr -= 8; // skip trailer (5) + 3 short wordShift = 6 - (TrailerWordWCount % 4)*2; int tdc=0,nn=-1,cc=0; int maxtdc=0; for(int i = 0 ; i < TrailerWordWCount; i++){ fchanneltemp = get10BitWord( (unsigned short *) ptr, wordShift ); wordShift-=2; ptr--; if( wordShift == -2) { wordShift = 6; ptr-- ; } if (cc==0) nn =fchanneltemp; if (cc==1) tdc=fchanneltemp; if ( i==1) maxtdc = tdc; if (cc>1 ) { if (tdc>0 && tdc>16)&0x3ff; ptr -= 8; // skip trailer (5) + 3 short wordShift = 6 - (TrailerWordWCount % 4)*2; if (TrailerWordWCount < n) return 0; for(int i = 0 ; i < TrailerWordWCount; i++){ ch[i] = get10BitWord( (unsigned short *) ptr, wordShift ); wordShift-=2; ptr--; if( wordShift == -2) { wordShift = 6; ptr-- ; } // fprintf(stdout,"%d ",fchanneltemp); } return TrailerWordWCount/4+2; } int TPCAltroChannel::Print(){ // fprintf(stdout,"ALTROch [%d] len= %d\n",hwaddr,length); fprintf(stdout,"[%d] %d\t",fRcuid, fHwid); // unsigned short dum; return 0; } int TPCAltroChannel::Set(int rcuid,int hwid, char *data){ fData =data; fRcuid =rcuid; fHwid =hwid; return 0; } //------------------------------------------------- int TPCRcu::Set(int hwid, char *data){ fHeader=data; fHwid=hwid; fNumberOfChannels=0; return 0; } int TPCRcu::SetChannel(unsigned int ch){ fend=ch; if (!fNumberOfChannels) fstart=ch-1; fNumberOfChannels++; return 0; } int TPCRcu::Print(){ fprintf(stdout,"RCU [%d] Number of Channels: %d first=%d last=%d \n",fHwid,GetNumberOfChannels(), fstart, fend); return 0; } TPCRcu::TPCRcu(){ } TPCRcu::~TPCRcu(){ } int TPCData::SetEvent(char* data){ fevent = (struct eventHeaderStruct *)(data); return 0; } //------------------------------------------------- int TPCData::Print(){ int feventno= EVENT_ID_GET_NB_IN_RUN(fevent->eventId); fprintf(stdout,"Run: %d Event: %d\t", fevent->eventRunNb, feventno); fprintf(stdout,"Number of channels: %d\t", fChannelList.size()); fprintf(stdout,"Number of RCU: %d\n",fRcuList.size()); for (unsigned int i=0;i