| 58 | * Unpack the Anticounter data event from the physical packet. | * Unpack the Anticounter data event from the physical packet. | 
| 59 | */ | */ | 
| 60 | void AnticounterReader::RunEvent(int EventNumber, const char subData[], long int length) { | void AnticounterReader::RunEvent(int EventNumber, const char subData[], long int length) { | 
|  | std::stringstream oss; |  | 
| 61 | char *data = new char[length]; | char *data = new char[length]; | 
| 62 | memcpy(data, subData, length); | memcpy(data, subData, length); | 
| 63 |  | int        ERROR; | 
| 64 | struct physicsstruct output[2] = {0}; | struct physicsstruct output[2] = {0}; | 
| 65 |  |  | 
| 66 |  |  | 
| 69 | //anticounter->ERROR = ACphysics(length, (unsigned char*) data, &(*output)); | //anticounter->ERROR = ACphysics(length, (unsigned char*) data, &(*output)); | 
| 70 | anticounter->unpackError = ACphysics(length, (unsigned char*) data, output); | anticounter->unpackError = ACphysics(length, (unsigned char*) data, output); | 
| 71 |  |  | 
| 72 | char *errmsg; | //TO BE activated as soon i will know what codes means "error" | 
| 73 | switch (anticounter->unpackError){ | /*if (ERROR != 0) { | 
| 74 | case 0xFF: errmsg = "data (physics or calibration) from both cards found"; | char *errmsg; | 
| 75 | break; | switch (ERROR){ | 
| 76 | case 0xF0: errmsg = "only data from main card found"; | case 1: errmsg = "---------------------"; | 
| 77 | break; | } | 
| 78 | case 0x0F: errmsg = "only data from extra card found"; | } else {*/ | 
|  | break; |  | 
|  | case 0x00: errmsg = "no data found"; |  | 
|  | break; |  | 
|  | default: errmsg = "ANTICOUNTER ERRROR CODE UNIDENTIFIED"; |  | 
|  | } |  | 
|  | oss.str(""); |  | 
|  | oss << "Fortran77 function tofunpack: " <<  errmsg; |  | 
|  | logger->warn(oss.str().c_str()); |  | 
| 79 |  |  | 
| 80 | for(int i = 0; i<2; i++){ | for(int i = 0; i<2; i++){ | 
| 81 | memcpy(anticounter->header[i], output[i].header, sizeof(anticounter->header[i])); | memcpy(anticounter->header[i], output[i].header, sizeof(anticounter->header[i])); | 
| 92 | anticounter->CRC[i]         = output[i].CRC; | anticounter->CRC[i]         = output[i].CRC; | 
| 93 | anticounter->CRCcheck[i]    = output[i].CRCcheck; | anticounter->CRCcheck[i]    = output[i].CRCcheck; | 
| 94 | } | } | 
| 95 | delete [] data; |  | 
| 96 |  | //} | 
| 97 |  | //delete[] data; | 
| 98 | } | } |