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

Diff of /yoda/techmodel/physics/CalorimeterReader.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2.0 by kusanagi, Tue Sep 21 20:51:22 2004 UTC revision 2.1 by kusanagi, Sun Oct 17 12:28:46 2004 UTC
# Line 1  Line 1 
1  /** @file  /** @file
2   * $Source: /home/cvsmanager/yoda/techmodel/physics/CalorimeterReader.cpp,v $   * $Source: /home/cvsmanager/yoda/techmodel/physics/CalorimeterReader.cpp,v $
3   * $Id: CalorimeterReader.cpp,v 1.5 2004/09/21 20:24:53 kusanagi Exp $   * $Id: CalorimeterReader.cpp,v 2.0 2004/09/21 20:51:22 kusanagi Exp $
4   * $Author: kusanagi $   * $Author: kusanagi $
5   *   *
6   * Implementation of the CalorimeterReader class.   * Implementation of the CalorimeterReader class.
# Line 14  Line 14 
14    
15  extern "C" {  extern "C" {
16        
17    
18   extern struct {   extern struct {
19          int IEV2;          int     IEV;
20          int stwerr;          int     stwerr[4];
21          int perror;          float   perror[4];
22          int dexy[2][22][96];          float   dexy[2][22][96];
23          int dexyc[2][22][96];          float   dexyc[2][22][96];
24          int base[2][22][96];          float   base[2][22][6];
25          int calselftrig[4][7];          float   calselftrig[4][7];
26          int calIItrig[4];          float   calIItrig[4];
27          int calstripshift[4];          float   calstripshit[4];
28          int calDSPtaberr[4];          float   calDSPtaberr[4];
29          int calevnum[4];          float   calevnum[4];
30      } evento_;      } evento_;
31    
32      void calunpack_(short[], long int*, int*);      void calunpack_(unsigned char[], long int*, int*);
33      //Struct per il passaggio di dati da e verso la chiamata fortran      //Struct per il passaggio di dati da e verso la chiamata fortran
34  }  }
35    
# Line 51  CalorimeterReader::CalorimeterReader(voi Line 52  CalorimeterReader::CalorimeterReader(voi
52   */   */
53  std::string CalorimeterReader::GetVersionInfo(void) const {  std::string CalorimeterReader::GetVersionInfo(void) const {
54    return    return
55      "$Header: /home/cvsmanager/yoda/techmodel/physics/CalorimeterReader.cpp,v 1.5 2004/09/21 20:24:53 kusanagi Exp $";      "$Header: /home/cvsmanager/yoda/techmodel/physics/CalorimeterReader.cpp,v 2.0 2004/09/21 20:51:22 kusanagi Exp $";
56  }  }
57    
58  /**  /**
# Line 80  void CalorimeterReader::RunEvent(int Eve Line 81  void CalorimeterReader::RunEvent(int Eve
81      memcpy(data, subData, length);      memcpy(data, subData, length);
82      int  ERROR = 0;      int  ERROR = 0;
83            
84      unsigned short convdata[length];      /*unsigned short convdata[length];
85      for (int i = 0; i<length; i++){      for (int i = 0; i<length; i++){
86          convdata[i] = (unsigned short)((unsigned char)subData[i]&0xFF);          convdata[i] = (unsigned short)((unsigned char)subData[i]&0xFF);
87      }      }*/
88                    
89      //Call to the routine that unpack calorimeter events      //Call to the routine that unpack calorimeter events
90      calunpack_((short*)convdata, &length, &ERROR);      calunpack_((unsigned char*)data, &length, &ERROR);
91    
92      if (ERROR != 0) {      if (ERROR != 0) {
93          char *errmsg;          char *errmsg;
# Line 97  void CalorimeterReader::RunEvent(int Eve Line 98  void CalorimeterReader::RunEvent(int Eve
98          oss << "Fortran77 function calunpack: " <<  errmsg;          oss << "Fortran77 function calunpack: " <<  errmsg;
99          logger->warn(oss.str().c_str());          logger->warn(oss.str().c_str());
100      } else {      } else {
101          calorimeter->IEV2   = evento_.IEV2;          calorimeter->IEV   = evento_.IEV;
102          calorimeter->stwerr = evento_.stwerr;          memcpy(calorimeter->stwerr, evento_.stwerr, sizeof(calorimeter->stwerr));
103          calorimeter->perror = evento_.perror;          memcpy(calorimeter->perror, evento_.perror, sizeof(calorimeter->perror));
   
104      //--------have to invert array because of FORTRAN <-> C different management of the indexes      //--------have to invert array because of FORTRAN <-> C different management of the indexes
105          int tempDexy[96][22][2];          float tempDexy[96][22][2];
106          int tempDexyc[96][22][2];          float tempDexyc[96][22][2];
107          int tempBase[96][22][2];          float tempBase[6][22][2];
108          int tempCalselftrig[7][4];          float tempCalselftrig[7][4];
109          memcpy(tempDexy,           evento_.dexy,           sizeof(tempDexy));          memcpy(tempDexy,           evento_.dexy,           sizeof(tempDexy));
110          memcpy(tempDexyc,          evento_.dexyc,          sizeof(tempDexyc));          memcpy(tempDexyc,          evento_.dexyc,          sizeof(tempDexyc));
111          memcpy(tempBase,           evento_.base,           sizeof(tempBase));          memcpy(tempBase,           evento_.base,           sizeof(tempBase));
# Line 122  void CalorimeterReader::RunEvent(int Eve Line 122  void CalorimeterReader::RunEvent(int Eve
122                  for (int z = 0; z < 96; z++){                  for (int z = 0; z < 96; z++){
123                      calorimeter->dexy[i][j][z] = tempDexy[z][j][i];                      calorimeter->dexy[i][j][z] = tempDexy[z][j][i];
124                      calorimeter->dexyc[i][j][z] = tempDexyc[z][j][i];                      calorimeter->dexyc[i][j][z] = tempDexyc[z][j][i];
125                    }
126                    for (int z = 0; z < 6; z++){
127                      calorimeter->base[i][j][z] = tempBase[z][j][i];                      calorimeter->base[i][j][z] = tempBase[z][j][i];
128                  }                  }
129              }              }
130          }          }
131      //-----------------------------------------------------------------------------------------      //-----------------------------------------------------------------------------------------
   
132          memcpy(calorimeter->calIItrig,      evento_.calIItrig,      sizeof(calorimeter->calIItrig));          memcpy(calorimeter->calIItrig,      evento_.calIItrig,      sizeof(calorimeter->calIItrig));
133          memcpy(calorimeter->calstripshift,  evento_.calstripshift,  sizeof(calorimeter->calstripshift));          memcpy(calorimeter->calstripshit,   evento_.calstripshit,   sizeof(calorimeter->calstripshit));
134          memcpy(calorimeter->calDSPtaberr,   evento_.calDSPtaberr,   sizeof(calorimeter->calDSPtaberr));          memcpy(calorimeter->calDSPtaberr,   evento_.calDSPtaberr,   sizeof(calorimeter->calDSPtaberr));
135          memcpy(calorimeter->calevnum,       evento_.calevnum,       sizeof(calorimeter->calevnum));          memcpy(calorimeter->calevnum,       evento_.calevnum,       sizeof(calorimeter->calevnum));
136      }      }

Legend:
Removed from v.2.0  
changed lines
  Added in v.2.1

  ViewVC Help
Powered by ViewVC 1.1.23