| 1 | kusanagi | 2.1 | /** @file | 
| 2 |  |  | * $Source: /home/cvsmanager/yoda/techmodel/Calib2_Ac2Reader.cpp,v $ | 
| 3 | kusanagi | 2.6 | * $Id: Calib2_Ac2Reader.cpp,v 2.5 2005/01/29 00:26:55 kusanagi Exp $ | 
| 4 | kusanagi | 2.1 | * $Author: kusanagi $ | 
| 5 |  |  | * | 
| 6 |  |  | * Implementation of the Calib2_Ac2Reader class. | 
| 7 |  |  | */ | 
| 8 |  |  |  | 
| 9 |  |  | #include <string> | 
| 10 |  |  | #include <log4cxx/logger.h> | 
| 11 |  |  | #include <fstream> | 
| 12 |  |  | #include "stdio.h" | 
| 13 |  |  | extern "C" { | 
| 14 |  |  | #include "CRC.h" | 
| 15 |  |  | #include "forroutines/anticounter/AC.h" | 
| 16 |  |  | extern int ACcalib(int length, unsigned char* calibpointer, struct calibstruct* calibpointer); | 
| 17 |  |  | } | 
| 18 |  |  |  | 
| 19 |  |  | #include "ReaderAlgorithms.h" | 
| 20 |  |  |  | 
| 21 |  |  | using namespace pamela; | 
| 22 |  |  | using namespace pamela::techmodel; | 
| 23 |  |  |  | 
| 24 |  |  | static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.techmodel.Calib2_Ac2Reader")); | 
| 25 |  |  |  | 
| 26 |  |  | /** | 
| 27 |  |  | * Constructor. | 
| 28 |  |  | */ | 
| 29 |  |  | Calib2_Ac2Reader::Calib2_Ac2Reader(void): | 
| 30 |  |  | TechmodelAlgorithm(PacketType::Calib2_Ac2, "Calib2_Ac2") { | 
| 31 |  |  | logger->debug(_T("Constructor")); | 
| 32 |  |  | calib2_Ac2 = new Calib2_Ac2Event(); | 
| 33 |  |  | } | 
| 34 |  |  |  | 
| 35 |  |  | /** | 
| 36 |  |  | * Get a string with the version info of the algorithm. | 
| 37 |  |  | */ | 
| 38 |  |  | std::string Calib2_Ac2Reader::GetVersionInfo(void) const { | 
| 39 | kusanagi | 2.6 | return "$Header: /home/cvsmanager/yoda/techmodel/Calib2_Ac2Reader.cpp,v 2.5 2005/01/29 00:26:55 kusanagi Exp $\n"; | 
| 40 | kusanagi | 2.1 | } | 
| 41 |  |  |  | 
| 42 |  |  | /** | 
| 43 |  |  | * Initialize the algorithm with a special run. This will initialize the | 
| 44 |  |  | * event reader routines for all packet types. | 
| 45 |  |  | */ | 
| 46 |  |  | void Calib2_Ac2Reader::Init(PamelaRun *run) { | 
| 47 |  |  | logger->debug(_T("Initialize")); | 
| 48 |  |  | SetInputStream(run); | 
| 49 |  |  | run->WriteSubPacket(this, &calib2_Ac2, calib2_Ac2->Class()); | 
| 50 |  |  | } | 
| 51 |  |  |  | 
| 52 |  |  | /** | 
| 53 |  |  | * Unpack the CalibAc event from an input file. | 
| 54 |  |  | */ | 
| 55 |  |  | void Calib2_Ac2Reader::RunEvent(int EventNumber, long int dataLength) throw (Exception){ | 
| 56 | kusanagi | 2.6 |  | 
| 57 |  |  | char   *subData = new char[dataLength]; | 
| 58 |  |  | struct calibstruct *output = {0}; | 
| 59 |  |  |  | 
| 60 | kusanagi | 2.1 | InputFile->read(subData, sizeof(unsigned char)*dataLength); | 
| 61 | kusanagi | 2.6 |  | 
| 62 |  |  | for (int i = 0; i < dataLength; i++){ | 
| 63 |  |  | printf("input2 %i   %x \n", i, subData[i]); | 
| 64 |  |  | } | 
| 65 |  |  |  | 
| 66 |  |  | calib2_Ac2->ERROR = ACcalib(dataLength, (unsigned char*)subData, output); | 
| 67 |  |  | memcpy(calib2_Ac2->header,     output->header,     sizeof(output->header)); | 
| 68 |  |  | memcpy(calib2_Ac2->status,     output->status,     sizeof(output->status)); | 
| 69 |  |  | memcpy(calib2_Ac2->temp,       output->temp,       sizeof(output->temp)); | 
| 70 |  |  | memcpy(calib2_Ac2->DAC1,       output->DAC1,       sizeof(output->DAC1)); | 
| 71 |  |  | memcpy(calib2_Ac2->DAC2,       output->DAC2,       sizeof(output->DAC2)); | 
| 72 |  |  | memcpy(calib2_Ac2->regist,     output->regist,     sizeof(output->regist)); | 
| 73 |  |  | memcpy(calib2_Ac2->time,       output->time,       sizeof(output->time)); | 
| 74 |  |  | calib2_Ac2->n_tr = output->n_tr; | 
| 75 |  |  | memcpy(calib2_Ac2->hitmap_tr,  output->hitmap_tr,  sizeof(output->hitmap_tr)); | 
| 76 |  |  | memcpy(calib2_Ac2->curve1,     output->curve1,     sizeof(output->curve1)); | 
| 77 |  |  | memcpy(calib2_Ac2->curve2,     output->curve2,     sizeof(output->curve2)); | 
| 78 |  |  | calib2_Ac2->iCRC        = output->iCRC; | 
| 79 |  |  | calib2_Ac2->tail        = output->tail; | 
| 80 |  |  | calib2_Ac2->CRC         = output->CRC; | 
| 81 |  |  | calib2_Ac2->CRCcheck    = output->CRCcheck; | 
| 82 | kusanagi | 2.5 |  | 
| 83 |  |  |  | 
| 84 | kusanagi | 2.1 | //delete [] subData; | 
| 85 |  |  | } |