ARA ROOT v3.4 Software

AraEvent/RawAtriStationEvent.cxx

00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 #include "RawAtriStationEvent.h"
00011 #include <iostream>
00012 #include <fstream>
00013 #include <cstring>
00014 ClassImp(RawAtriStationEvent);
00015 
00016 RawAtriStationEvent::RawAtriStationEvent()   
00017 {  
00018   //Default Constructor
00019 }
00020 
00021 RawAtriStationEvent::~RawAtriStationEvent() {
00022    //Default Destructor
00023 }
00024 
00025 
00026 RawAtriStationEvent::RawAtriStationEvent(AraStationEventHeader_t *hdPtr, char *dataBuffer) // Assignment constructor
00027   :RawAraStationEvent(&(hdPtr->gHdr))
00028 {
00029   
00030    unixTime=hdPtr->unixTime;
00031    unixTimeUs=hdPtr->unixTimeUs;
00032    eventNumber=hdPtr->eventNumber;
00033    ppsNumber=hdPtr->ppsNumber;
00034    numStationBytes=hdPtr->numBytes;
00035    //   std::cerr << eventNumber << "\t" << ppsNumber << "\t" << numStationBytes;
00036    timeStamp=hdPtr->timeStamp;
00037    eventId=hdPtr->eventId;
00038    numReadoutBlocks=hdPtr->numReadoutBlocks; 
00039    
00040    for(int trig=0;trig<MAX_TRIG_BLOCKS;trig++) {
00041      triggerPattern[trig]=hdPtr->triggerPattern[trig];
00042      triggerInfo[trig]=hdPtr->triggerInfo[trig];
00043      triggerBlock[trig]=hdPtr->triggerBlock[trig];
00044    }
00045 
00046    int uptoByte=0;
00047    //   std::cerr << "numReadoutBlocks " << numReadoutBlocks << "\n";
00048    for(int block=0;block<numReadoutBlocks;block++) {
00049      AraStationEventBlockHeader_t *blkPtr = (AraStationEventBlockHeader_t*)&dataBuffer[uptoByte];     
00050      uptoByte+=sizeof(AraStationEventBlockHeader_t);
00051      AraStationEventBlockChannel_t *chanPtr = (AraStationEventBlockChannel_t*)&dataBuffer[uptoByte];
00052      RawAtriStationBlock blocky(blkPtr,chanPtr);
00053      blockVec.push_back(blocky);
00054      int numChan=blocky.getNumChannels();
00055 
00056      // std::cout << "block " << block << " numChan " << numChan 
00057      //                <<  " irsBlockNumber " << (blkPtr->irsBlockNumber&0x1ff)
00058      //                << " channelMask " << blkPtr->channelMask << "\t"
00059      //                << " uptoByte " << uptoByte << "\n";
00060      // numChan=8; //HArd wire for testing
00061      uptoByte+=sizeof(AraStationEventBlockChannel_t)*numChan;
00062    }
00063    //   std::cerr << sizeof(AraStationEventHeader_t) << "\n";
00064    if(uptoByte!=int(numStationBytes))    
00065      std::cerr << "Error assigned " << uptoByte <<  " bytes out of " << numStationBytes << "\n";
00066 }
00067 
00068 RawAtriStationEvent::RawAtriStationEvent(AraStationEventHeader_t *hdPtr, char *dataBuffer, AraStationId_t forcedStationId) // Assignment constructor
00069   :RawAraStationEvent(&(hdPtr->gHdr))
00070 {
00071   //JPD The same as above but forcing the stationId value
00072   stationId = forcedStationId;
00073 
00074   
00075   unixTime=hdPtr->unixTime;
00076   unixTimeUs=hdPtr->unixTimeUs;
00077   eventNumber=hdPtr->eventNumber;
00078   ppsNumber=hdPtr->ppsNumber;
00079   numStationBytes=hdPtr->numBytes;
00080   //   std::cerr << eventNumber << "\t" << ppsNumber << "\t" << numStationBytes;
00081    timeStamp=hdPtr->timeStamp;
00082    eventId=hdPtr->eventId;
00083    numReadoutBlocks=hdPtr->numReadoutBlocks; 
00084    
00085    for(int trig=0;trig<MAX_TRIG_BLOCKS;trig++) {
00086      triggerPattern[trig]=hdPtr->triggerPattern[trig];
00087      triggerInfo[trig]=hdPtr->triggerInfo[trig];
00088      triggerBlock[trig]=hdPtr->triggerBlock[trig];
00089    }
00090 
00091    int uptoByte=0;
00092    //   std::cerr << "numReadoutBlocks " << numReadoutBlocks << "\n";
00093    for(int block=0;block<numReadoutBlocks;block++) {
00094      AraStationEventBlockHeader_t *blkPtr = (AraStationEventBlockHeader_t*)&dataBuffer[uptoByte];     
00095      uptoByte+=sizeof(AraStationEventBlockHeader_t);
00096      AraStationEventBlockChannel_t *chanPtr = (AraStationEventBlockChannel_t*)&dataBuffer[uptoByte];
00097      RawAtriStationBlock blocky(blkPtr,chanPtr);
00098      blockVec.push_back(blocky);
00099      int numChan=blocky.getNumChannels();
00100 
00101      // std::cout << "block " << block << " numChan " << numChan 
00102      //                <<  " irsBlockNumber " << (blkPtr->irsBlockNumber&0x1ff)
00103      //                << " channelMask " << blkPtr->channelMask << "\t"
00104      //                << " uptoByte " << uptoByte << "\n";
00105      // numChan=8; //HArd wire for testing
00106      uptoByte+=sizeof(AraStationEventBlockChannel_t)*numChan;
00107    }
00108    //   std::cerr << sizeof(AraStationEventHeader_t) << "\n";
00109    if(uptoByte!=int(numStationBytes))    
00110      std::cerr << "Error assigned " << uptoByte <<  " bytes out of " << numStationBytes << "\n";
00111 }
00112 
00113 Int_t RawAtriStationEvent::getFirstCapArray(Int_t dda)
00114 {
00115 
00116   for(int i=0;i<DDA_PER_ATRI;i++){
00117     int this_dda = this->blockVec.at(i).getDda();
00118     if(this_dda==dda) return this->blockVec.at(i).getCapArray();
00119   }  
00120   return -1;
00121   
00122 
00123 }

Generated on Mon Mar 18 16:00:44 2013 for ARA ROOT v3.4 Software by doxygen 1.4.7