/[PAMELA software]/yoda/techmodel/physics/AnticounterReader.cpp
ViewVC logotype

Annotation of /yoda/techmodel/physics/AnticounterReader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3.0 - (hide annotations) (download)
Fri Mar 4 15:54:11 2005 UTC (19 years, 9 months ago) by kusanagi
Branch: MAIN
Changes since 2.7: +2 -2 lines
Error proof version.
Implemented all detectors packets plus all the main telemetries packets.
Missing all the Init and Alarm packets.
Disabled CRC control on VarDump, ArrDump, TabDump for CPU debugging needs
(the data formats seems correct even if CRC get wrong)

1 kusanagi 1.1 /** @file
2     * $Source: /home/cvsmanager/yoda/techmodel/physics/AnticounterReader.cpp,v $
3 kusanagi 3.0 * $Id: AnticounterReader.cpp,v 2.7 2005/02/08 08:25:23 kusanagi Exp $
4 kusanagi 1.1 * $Author: kusanagi $
5     *
6     * Implementation of the AnticounterReader class.
7     */
8    
9     #include <string>
10 kusanagi 1.3 #include <log4cxx/logger.h>
11 kusanagi 1.1 #include "AnticounterReader.h"
12    
13     extern "C" {
14 kusanagi 2.1 #include "../forroutines/anticounter/AC.h"
15 kusanagi 2.5 extern int ACphysics(int, unsigned char[] , struct physicsstruct*);
16 kusanagi 1.1 }
17    
18     using namespace pamela;
19     using namespace pamela::anticounter;
20    
21 kusanagi 1.3 static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.techmodel.anticounter.AnticounterReader"));
22 kusanagi 1.1
23     /**
24     * Constructor.
25     */
26     AnticounterReader::AnticounterReader(void):
27     TechmodelAlgorithm(PacketType::Physics, "TechmodelAnticounterReader") {
28 kusanagi 1.3 logger->debug(_T("Constructor"));
29 kusanagi 1.1 anticounter = new AnticounterEvent();
30     }
31    
32     /**
33     * Get a string with the version info of the algorithm.
34     */
35     std::string AnticounterReader::GetVersionInfo(void) const {
36     return
37 kusanagi 3.0 "$Header: /home/cvsmanager/yoda/techmodel/physics/AnticounterReader.cpp,v 2.7 2005/02/08 08:25:23 kusanagi Exp $";
38 kusanagi 1.1 }
39    
40     /**
41     * Initialize the algorithm with a special run. This will initialize the
42     * event reader routines for all packet types.
43     */
44     void AnticounterReader::Init(PamelaRun *run) {
45 kusanagi 1.3 logger->debug(_T("Initialize"));
46 kusanagi 1.1 SetInputStream(run);
47     run->WriteSubPacket(this, &anticounter, anticounter->Class());
48     }
49    
50     /**
51     * Unpack the anticounter event from an input file.
52     */
53     void AnticounterReader::RunEvent(int EventNumber) {
54    
55     }
56    
57     /**
58     * Unpack the Anticounter data event from the physical packet.
59     */
60     void AnticounterReader::RunEvent(int EventNumber, const char subData[], long int length) {
61 kusanagi 1.3 char *data = new char[length];
62 kusanagi 1.1 memcpy(data, subData, length);
63     int ERROR;
64 kusanagi 2.5 struct physicsstruct output[2] = {0};
65    
66    
67 kusanagi 1.1
68     //Call to the routine that unpack anitocounter events
69 kusanagi 2.5 //anticounter->ERROR = ACphysics(length, (unsigned char*) data, &(*output));
70 kusanagi 2.6 anticounter->unpackError = ACphysics(length, (unsigned char*) data, output);
71 kusanagi 2.2
72 kusanagi 1.2 //TO BE activated as soon i will know what codes means "error"
73     /*if (ERROR != 0) {
74     char *errmsg;
75     switch (ERROR){
76     case 1: errmsg = "---------------------";
77     }
78     } else {*/
79 kusanagi 2.2
80 kusanagi 2.4 for(int i = 0; i<2; i++){
81     memcpy(anticounter->header[i], output[i].header, sizeof(anticounter->header[i]));
82     anticounter->status[i] = output[i].status;
83     anticounter->hitmap[i] = output[i].hitmap;
84     memcpy(anticounter->regist[i], output[i].regist, sizeof(output[i].regist));
85     memcpy(anticounter->shift[i], output[i].shift, sizeof(output[i].shift));
86     memcpy(anticounter->counters[i], output[i].counters, sizeof(output[i].counters));
87     memcpy(anticounter->coinc[i], output[i].coinc, sizeof(output[i].coinc));
88     anticounter->trigg[i] = output[i].trigg;
89     memcpy(anticounter->clock[i], output[i].clock, sizeof(output[i].clock));
90     memcpy(anticounter->temp[i], output[i].temp, sizeof(output[i].temp));
91     memcpy(anticounter->DAC[i], output[i].DAC, sizeof(output[i].DAC));
92 kusanagi 2.7 anticounter->CRC[i] = output[i].CRC;
93     anticounter->CRCcheck[i] = output[i].CRCcheck;
94 kusanagi 2.4 }
95    
96 kusanagi 1.2 //}
97 kusanagi 2.3 //delete[] data;
98 kusanagi 1.1 }

  ViewVC Help
Powered by ViewVC 1.1.23