/[PAMELA software]/yoda/techmodel/ArrDumpReader.cpp
ViewVC logotype

Diff of /yoda/techmodel/ArrDumpReader.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2.0 by kusanagi, Tue Sep 21 20:50:54 2004 UTC revision 2.1 by kusanagi, Fri Dec 3 22:08:00 2004 UTC
# Line 1  Line 1 
1  /** @file  /** @file
2   * $Source: /home/cvsmanager/yoda/techmodel/ArrDumpReader.cpp,v $   * $Source: /home/cvsmanager/yoda/techmodel/ArrDumpReader.cpp,v $
3   * $Id: ArrDumpReader.cpp,v 1.6 2004/09/21 20:24:33 kusanagi Exp $   * $Id: ArrDumpReader.cpp,v 2.0 2004/09/21 20:50:54 kusanagi Exp $
4   * $Author: kusanagi $   * $Author: kusanagi $
5   *   *
6   * Implementation of the ArrDumpReader class.   * Implementation of the ArrDumpReader class.
# Line 34  ArrDumpReader::ArrDumpReader(void): Line 34  ArrDumpReader::ArrDumpReader(void):
34   * Get a string with the version info of the algorithm.   * Get a string with the version info of the algorithm.
35   */   */
36  std::string ArrDumpReader::GetVersionInfo(void) const {  std::string ArrDumpReader::GetVersionInfo(void) const {
37    return "$Header: /home/cvsmanager/yoda/techmodel/ArrDumpReader.cpp,v 1.6 2004/09/21 20:24:33 kusanagi Exp $\n";    return "$Header: /home/cvsmanager/yoda/techmodel/ArrDumpReader.cpp,v 2.0 2004/09/21 20:50:54 kusanagi Exp $\n";
38  }  }
39    
40  /**  /**
# Line 50  void ArrDumpReader::Init(PamelaRun *run) Line 50  void ArrDumpReader::Init(PamelaRun *run)
50  /**  /**
51   * Unpack the ArrDump event from an input file.   * Unpack the ArrDump event from an input file.
52   */   */
53  void ArrDumpReader::RunEvent(int EventNumber, long int length) {  void ArrDumpReader::RunEvent(int EventNumber, long int length) throw (WrongCRCException){
54        
55    char     *subData;    char     *subData;
56    char      eventCRC[2];    char      eventCRC[2];
# Line 70  void ArrDumpReader::RunEvent(int EventNu Line 70  void ArrDumpReader::RunEvent(int EventNu
70      readCRC = (((UINT16)(eventCRC[0]<<8))&0xFF00) + (((UINT16)eventCRC[1])&0x00FF);      readCRC = (((UINT16)(eventCRC[0]<<8))&0xFF00) + (((UINT16)eventCRC[1])&0x00FF);
71            
72      //finally check if the RecordCRC is correct and finally update the partialCRC      //finally check if the RecordCRC is correct and finally update the partialCRC
73      if (subCRC == readCRC){      if (subCRC != readCRC) throw WrongCRCException(" Wrong CRC for ArrDump Packet ");
74          ArrDumpRecord* rec;  
75          long int offset = 0;      ArrDumpRecord* rec;
76          int i = 0;      long int offset = 0;
77          int size;      int i = 0;
78          ArrDump->Records->Clear();      int size;
79          TClonesArray &recs = *(ArrDump->Records);      ArrDump->Records->Clear();
80          while (offset < dataLength){      TClonesArray &recs = *(ArrDump->Records);
81              rec = new(recs[i++]) ArrDumpRecord(); //add a new TmtcRecord      while (offset < dataLength){
82              rec->Arr_ID  = ((UINT8)subData[offset])&0xFF;          rec = new(recs[i++]) ArrDumpRecord(); //add a new TmtcRecord
83              rec->Arr_len = (((UINT16)subData[offset+1]<<8)&0xFF00) + ((UINT16)subData[offset+2])&0x00FF;          rec->Arr_ID  = ((UINT8)subData[offset])&0xFF;
84              //rec->Data = new UINT32[rec->Arr_len];          rec->Arr_len = (((UINT16)subData[offset+1]<<8)&0xFF00) + ((UINT16)subData[offset+2])&0x00FF;
85              size = sizeof(UINT32)*(rec->Arr_len);          //rec->Data = new UINT32[rec->Arr_len];
86              rec->Data  = new TArrayI((int)rec->Arr_len, (int*)(subData+offset+3));          size = sizeof(UINT32)*(rec->Arr_len);
87              //memcpy(rec->Data, (UINT32*)(subData+offset+3), size);          rec->Data  = new TArrayI((int)rec->Arr_len, (int*)(subData+offset+3));
88              offset = offset + size + 3;          //memcpy(rec->Data, (UINT32*)(subData+offset+3), size);
89          }          offset = offset + size + 3;
     } else {  
         logger->warn(_T("Wrong CRC on Subpacket in ArrDump Packet "));  
90      }      }
91      delete [] subData;      delete [] subData;
92    }    }

Legend:
Removed from v.2.0  
changed lines
  Added in v.2.1

  ViewVC Help
Powered by ViewVC 1.1.23