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

Annotation of /yoda/techmodel/CalibCalPedReader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6.3 - (hide annotations) (download)
Fri Sep 29 10:19:18 2006 UTC (18 years, 2 months ago) by mocchiut
Branch: MAIN
CVS Tags: YODA6_3/19, YODA6_3/18, YODA6_3/13, YODA6_3/12, YODA6_3/11, YODA6_3/17, YODA6_3/16, YODA6_3/15, YODA6_3/14, YODA6_3/20, HEAD
Changes since 6.2: +2 -1 lines
Last event bug fixed, compilation warnings/errors fixed

1 kusanagi 2.4
2 kusanagi 1.2 extern "C" {
3 kusanagi 2.4
4 kusanagi 1.2 //Struct per il passaggio di dati da e verso la chiamata fortran
5     extern struct {
6 kusanagi 2.2 int iev;
7     int cstwerr[4];
8     float cperror[4];
9     float calped[4][11][96];
10     float calgood[4][11][96];
11     float calthr[4][11][6];
12     float calrms[4][11][96];
13     float calbase[4][11][6];
14     float calvar[4][11][6];
15 kusanagi 4.1 //float calpuls[4][11][96];
16 kusanagi 1.2 } calib_;
17 kusanagi 1.1 //external declaration of the Fortran function
18 kusanagi 2.2 void calpedestal_(char*, long int*, int*);
19 kusanagi 1.2 }
20 kusanagi 1.1
21     #include "ReaderAlgorithms.h"
22     using namespace pamela::techmodel;
23    
24 kusanagi 1.7 static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.techmodel.CalibCalPedReader"));
25 kusanagi 1.1
26     /**
27     * Constructor.
28     */
29     CalibCalPedReader::CalibCalPedReader(void):
30     TechmodelAlgorithm(PacketType::Log, "TechmodelCalibCalPedReader") {
31 kusanagi 1.7 logger->debug(_T("Constructor"));
32 kusanagi 1.3 calibCalPed = new CalibCalPedEvent();
33 kusanagi 1.1 }
34    
35     /**
36     * Get a string with the version info of the algorithm.
37     */
38     std::string CalibCalPedReader::GetVersionInfo(void) const {
39     return
40 mocchiut 6.3 "$Header: /afs/ba.infn.it/user/pamela/src/CVS/yoda/techmodel/CalibCalPedReader.cpp,v 6.2 2006/05/30 19:10:03 kusanagi Exp $\n";
41 kusanagi 1.1 }
42    
43     /**
44     * Initialize the algorithm with a special run. This will initialize the
45     * event reader routines for all packet types.
46     */
47     void CalibCalPedReader::Init(PamelaRun *run) {
48 kusanagi 1.7 logger->debug(_T("Initialize"));
49 kusanagi 1.1 SetInputStream(run);
50 kusanagi 1.3 run->WriteSubPacket(this, &calibCalPed, calibCalPed->Class());
51 kusanagi 1.1 }
52    
53     /**
54     * Unpack the CalibCalPed event from an input file.
55     */
56 kusanagi 2.2 void CalibCalPedReader::RunEvent(int EventNumber, long int dataLength) throw (Exception){
57 kusanagi 1.7 stringstream oss;
58 kusanagi 1.3 int ERROR;
59 kusanagi 2.2 char packetData[dataLength];
60 mocchiut 6.3 memset(packetData, 0, dataLength*sizeof(char));
61 kusanagi 1.3 InputFile->read(packetData, sizeof(packetData));
62    
63 kusanagi 2.3 calpedestal_((char*)packetData, &dataLength, &ERROR);
64 kusanagi 2.4
65     calibCalPed->unpackError = ERROR;
66 kusanagi 2.2 if (ERROR != 0) {
67     char *errmsg;
68     switch (ERROR){
69     case 1: errmsg = "CALORIMETER NOT FOUND";
70     }
71     oss.str("");
72     oss << "Fortran77 function calpedestal error code = " << ERROR
73 kusanagi 2.5 << " " << errmsg;
74 kusanagi 2.2 logger->warn(oss.str().c_str());
75 kusanagi 5.2 } //else {
76 kusanagi 2.2 //Store the unpacked data
77     calibCalPed->iev = calib_.iev;
78     memcpy(calibCalPed->cstwerr, calib_.cstwerr, sizeof(calibCalPed->cstwerr));
79     memcpy(calibCalPed->cperror, calib_.cperror, sizeof(calibCalPed->cperror));
80     //--------have to invert array because of FORTRAN <-> C different management of the indexes
81     float tempCalped[96][11][4];
82     float tempCalgood[96][11][4];
83     float tempCalthr[6][11][4];
84     float tempCalrms[96][11][4];
85     float tempCalbase[6][11][4];
86     float tempCalvar[6][11][4];
87 kusanagi 4.1 //float tempCalpuls[96][11][4];
88 kusanagi 2.2
89     memcpy(tempCalped, calib_.calped, sizeof(tempCalped));
90     memcpy(tempCalgood, calib_.calgood, sizeof(tempCalgood));
91     memcpy(tempCalthr, calib_.calthr, sizeof(tempCalthr));
92     memcpy(tempCalrms, calib_.calrms, sizeof(tempCalrms));
93     memcpy(tempCalbase, calib_.calbase, sizeof(tempCalbase));
94     memcpy(tempCalvar, calib_.calvar, sizeof(tempCalvar));
95 kusanagi 4.1 //memcpy(tempCalpuls, calib_.calpuls, sizeof(tempCalpuls));
96 kusanagi 2.2
97     for (int i = 0; i < 4; i++){
98     for (int j = 0; j <11; j++){
99     for (int z = 0; z < 96; z++){
100     calibCalPed->calped[i][j][z] = tempCalped[z][j][i];
101     calibCalPed->calgood[i][j][z] = tempCalgood[z][j][i];
102     calibCalPed->calrms[i][j][z] = tempCalrms[z][j][i];
103 kusanagi 4.1 //calibCalPed->calpuls[i][j][z] = tempCalpuls[z][j][i];
104 kusanagi 1.5 }
105 kusanagi 1.4 }
106 kusanagi 2.2 }
107 kusanagi 1.4
108 kusanagi 2.2 for (int i = 0; i < 4; i++){
109     for (int j = 0; j <11; j++){
110     for (int z = 0; z < 6; z++){
111     calibCalPed->calthr[i][j][z] = tempCalthr[z][j][i];
112     calibCalPed->calbase[i][j][z] = tempCalbase[z][j][i];
113     calibCalPed->calvar[i][j][z] = tempCalvar[z][j][i];
114 kusanagi 1.5 }
115 kusanagi 1.4 }
116     }
117 kusanagi 2.2 //-----------------------------------------------------------------------------------------
118 kusanagi 5.2 //}
119 kusanagi 1.3 }
120 kusanagi 1.1
121    

  ViewVC Help
Powered by ViewVC 1.1.23