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

Annotation of /yoda/techmodel/CalibTrk1Reader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6.1 - (hide annotations) (download)
Tue May 30 19:10:02 2006 UTC (18 years, 6 months ago) by kusanagi
Branch: MAIN
Changes since 6.0: +2 -12 lines
Major update.
All the packet officially produced by PAMELA are implemented and unpacked.
The RegistryEvent Packet has been removed and put into another library.
New version, releasd by D.Campana, of tofunpack.

1 kusanagi 1.1 /** @file
2 kusanagi 1.2 * $Source: /home/cvsmanager/yoda/techmodel/CalibTrk1Reader.cpp,v $
3 kusanagi 6.1 * $Id: CalibTrk1Reader.cpp,v 6.0 2006/02/07 17:11:09 kusanagi Exp $
4 kusanagi 6.0 * $Author: kusanagi $
5 kusanagi 1.1 *
6     * Implementation of the LogReader class.
7     * ToBeDone:
8     * Control the CRC for the entire data Packet not just for single records
9     */
10    
11 kusanagi 5.1 #include "ReaderAlgorithms.h"
12    
13 kusanagi 1.1 extern "C" {
14 kusanagi 1.3 #include "CRC.h"
15 kusanagi 5.1 extern void trkcalibpkt_(int*, unsigned char[], long int*, int*); //(*)
16 kusanagi 1.1
17     //Struct per il passaggio di dati da e verso la chiamata fortran
18     extern struct {
19 kusanagi 5.1 int good0;
20     int DAQmode[6];
21     int DSPnumber[6];
22     int calibnumber[6];
23     int ncalib_event[6];
24     int ped_l1[6];
25     int ped_l2[6];
26     int ped_l3[6];
27     int sig_l1[6];
28     int sig_l2[6];
29     int sig_l3[6];
30     int nbad_l1[6];
31     int nbad_l2[6];
32     int nbad_l3[6];
33     int cal_flag[6];
34     float DSPped_par[3072][6];
35     float DSPsig_par[3072][6];
36     int DSPbad_par[3072][6];
37     int crc_cal[3][6];
38     int crc_hcal[6];
39 kusanagi 1.1 } trkcalib_;
40     #include <dirent.h>
41     }
42    
43     using namespace pamela::techmodel;
44    
45 kusanagi 1.6 static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.techmodel.CalibTrk1Reader"));
46 kusanagi 1.1
47     /**
48     * Constructor.
49     */
50 kusanagi 1.2 CalibTrk1Reader::CalibTrk1Reader(void):
51     TechmodelAlgorithm(PacketType::CalibTrk1, "TechmodelCalibTrk1Reader") {
52 kusanagi 1.6 logger->debug(_T("Constructor"));
53 kusanagi 1.2 calibTrk1 = new CalibTrk1Event();
54 kusanagi 1.1 }
55    
56     /**
57     * Get a string with the version info of the algorithm.
58     */
59 kusanagi 1.2 std::string CalibTrk1Reader::GetVersionInfo(void) const {
60 kusanagi 1.1 return
61 kusanagi 6.1 "$Header: /home/cvsmanager/yoda/techmodel/CalibTrk1Reader.cpp,v 6.0 2006/02/07 17:11:09 kusanagi Exp $\n";
62 kusanagi 1.1 }
63    
64     /**
65     * Initialize the algorithm with a special run. This will initialize the
66     * event reader routines for all packet types.
67     */
68 kusanagi 1.2 void CalibTrk1Reader::Init(PamelaRun *run) {
69 kusanagi 1.6 logger->debug(_T("Initialize"));
70 kusanagi 1.1 SetInputStream(run);
71 kusanagi 1.2 run->WriteSubPacket(this, &calibTrk1, calibTrk1->Class());
72 kusanagi 1.1 }
73    
74     /**
75     * Unpack the CalibTrk event from an input file.
76     */
77     //void CalibTrkReader::RunEvent(int EventNumber, long int length, char *subData) {
78 kusanagi 2.2 void CalibTrk1Reader::RunEvent(int EventNumber, long int dataLength) throw (Exception){
79 kusanagi 1.6 std::stringstream oss;
80 kusanagi 2.2 char subData[dataLength];
81     int ERROR;
82     InputFile->read(subData, sizeof(unsigned char)*dataLength);
83    
84 kusanagi 5.1 char *data = new char[dataLength];
85     memcpy(data, subData, dataLength);
86     int curpos=1;
87    
88 kusanagi 2.2 //Call to the FORTRAN routin that unpack tracker events
89 kusanagi 5.1 trkcalibpkt_( &ERROR,(unsigned char*)data, &dataLength, &curpos);
90 kusanagi 2.6
91     calibTrk1->unpackError = ERROR;
92 kusanagi 2.2 if (ERROR != 0) {
93     oss.str("");
94     oss << "Fortran77 function trkcalibpkt error code = " << ERROR;
95     logger->warn(oss.str().c_str());
96     }
97 kusanagi 1.1
98 kusanagi 2.2 //Store the unpacked data
99 kusanagi 5.1 calibTrk1->good0 = trkcalib_.good0;
100 kusanagi 2.2 memcpy(calibTrk1->DAQmode, trkcalib_.DAQmode, sizeof(calibTrk1->DAQmode));
101     memcpy(calibTrk1->DSPnumber, trkcalib_.DSPnumber, sizeof(calibTrk1->DSPnumber));
102     memcpy(calibTrk1->calibnumber, trkcalib_.calibnumber, sizeof(calibTrk1->calibnumber));
103 kusanagi 5.1 memcpy(calibTrk1->ncalib_event, trkcalib_.ncalib_event, sizeof(calibTrk1->ncalib_event));
104 kusanagi 2.2 memcpy(calibTrk1->ped_l1, trkcalib_.ped_l1, sizeof(calibTrk1->ped_l1));
105     memcpy(calibTrk1->ped_l2, trkcalib_.ped_l2, sizeof(calibTrk1->ped_l2));
106     memcpy(calibTrk1->ped_l3, trkcalib_.ped_l3, sizeof(calibTrk1->ped_l3));
107     memcpy(calibTrk1->sig_l1, trkcalib_.sig_l1, sizeof(calibTrk1->sig_l1));
108     memcpy(calibTrk1->sig_l2, trkcalib_.sig_l2, sizeof(calibTrk1->sig_l2));
109     memcpy(calibTrk1->sig_l3, trkcalib_.sig_l3, sizeof(calibTrk1->sig_l3));
110     memcpy(calibTrk1->nbad_l1, trkcalib_.nbad_l1, sizeof(calibTrk1->nbad_l1));
111     memcpy(calibTrk1->nbad_l2, trkcalib_.nbad_l2, sizeof(calibTrk1->nbad_l2));
112     memcpy(calibTrk1->nbad_l3, trkcalib_.nbad_l3, sizeof(calibTrk1->nbad_l3));
113     memcpy(calibTrk1->cal_flag, trkcalib_.cal_flag, sizeof(calibTrk1->cal_flag));
114 kusanagi 5.1
115 kusanagi 4.2 int tempBad_par[3072][6];
116     float tempPed_par[3072][6];
117     float tempSig_par[3072][6];
118 kusanagi 5.1 int tempCrc_cal[3][6];
119 kusanagi 4.3 memcpy(tempBad_par,trkcalib_.DSPbad_par, sizeof(tempBad_par));
120     memcpy(tempPed_par,trkcalib_.DSPped_par, sizeof(tempPed_par));
121     memcpy(tempSig_par,trkcalib_.DSPsig_par, sizeof(tempSig_par));
122 kusanagi 5.1 memcpy(tempCrc_cal,trkcalib_.crc_cal, sizeof(tempCrc_cal));
123 kusanagi 2.2
124     for (int i = 0; i < 6; i++){
125     for (int j = 0; j < 3072; j++){
126     calibTrk1->DSPbad_par[i][j] = tempBad_par[j][i];
127     calibTrk1->DSPped_par[i][j] = tempPed_par[j][i];
128     calibTrk1->DSPsig_par[i][j] = tempSig_par[j][i];
129 kusanagi 1.4 }
130 kusanagi 5.1 for (int k = 0; k < 3; k++){
131     calibTrk1->crc_cal[i][k] = tempCrc_cal[k][i];
132     }
133 kusanagi 2.2 }
134 kusanagi 1.4 //-----------------------------------------------------------------------------------------
135 kusanagi 4.3
136 kusanagi 1.1 }
137    
138 kusanagi 2.1

  ViewVC Help
Powered by ViewVC 1.1.23