/[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.5 by kusanagi, Thu Dec 9 13:17:26 2004 UTC revision 6.1 by mocchiut, Tue Sep 12 08:56:30 2006 UTC
# Line 1  Line 1 
1  /** @file  /** @file
2   * $Source: /home/cvsmanager/yoda/techmodel/physics/CalorimeterReader.cpp,v $   * $Source: /afs/ba.infn.it/user/pamela/src/CVS/yoda/techmodel/physics/CalorimeterReader.cpp,v $
3   * $Id: CalorimeterReader.cpp,v 2.4 2004/12/03 22:08:12 kusanagi Exp $   * $Id: CalorimeterReader.cpp,v 6.0 2006/02/07 17:11:11 kusanagi Exp $
4   * $Author: kusanagi $   * $Author: kusanagi $
5   *   *
6   * Implementation of the CalorimeterReader class.   * Implementation of the CalorimeterReader class.
# Line 16  extern "C" { Line 16  extern "C" {
16        
17    
18   extern struct {   extern struct {
19          int     IEV;          int     iev;
20          int     stwerr[4];          int     stwerr[4];
21          float   perror[4];          float   perror[4];
22          float   dexy[2][22][96];          float   dexy[2][22][96];
# Line 30  extern "C" { Line 30  extern "C" {
30      } evento_;      } evento_;
31    
32      void calunpack_(unsigned char[], long int*, int*);      void calunpack_(unsigned char[], long int*, int*);
     //void calunpack_(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 53  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 2.4 2004/12/03 22:08:12 kusanagi Exp $";      "$Header: /afs/ba.infn.it/user/pamela/src/CVS/yoda/techmodel/physics/CalorimeterReader.cpp,v 6.0 2006/02/07 17:11:11 kusanagi Exp $";
56  }  }
57    
58  /**  /**
# Line 89  void CalorimeterReader::RunEvent(int Eve Line 88  void CalorimeterReader::RunEvent(int Eve
88            
89      //Call to the routine that unpack calorimeter events      //Call to the routine that unpack calorimeter events
90      calunpack_((unsigned char*)data, &length, &ERROR);      calunpack_((unsigned char*)data, &length, &ERROR);
     //calunpack_((char*)data, &length, &ERROR);  
91    
92      if (ERROR != 0) {      if (ERROR != 0) {
93          char *errmsg;          char *errmsg;
94          switch (ERROR){          switch (ERROR){
95              case 1: errmsg = "CALORIMETER NOT FOUND";              case 1: errmsg = "CALORIMETER NOT FOUND";
96                break;
97                default: errmsg = "CALORIMETER ERRROR CODE UNIDENTIFIED";
98          }          }
99          oss.str("");          oss.str("");
100          oss << "Fortran77 function calunpack: " <<  errmsg;          oss << "Fortran77 function calunpack: " <<  errmsg;
101          logger->warn(oss.str().c_str());          logger->warn(oss.str().c_str());
102      }      }
103        //
104        ERROR = 0;
105        Int_t cmask = 119;
106        for (int i=0; i<4 ; i++){
107          if ( evento_.perror[i] ){
108            ERROR = 1;
109            break;
110          };
111          if ( evento_.stwerr[i] & cmask ){
112            ERROR = 1;
113            break;
114          };
115        };
116        //
117        calorimeter->unpackError = ERROR;
118      //  In case of "ERROR != 0" the calunpack will take care to set all      //  In case of "ERROR != 0" the calunpack will take care to set all
119      //  parameters to zero      //  parameters to zero
120      //} else {      //} else {
121          calorimeter->IEV   = evento_.IEV;          calorimeter->iev   = evento_.iev;
122          memcpy(calorimeter->stwerr, evento_.stwerr, sizeof(calorimeter->stwerr));          memcpy(calorimeter->stwerr, evento_.stwerr, sizeof(calorimeter->stwerr));
123          memcpy(calorimeter->perror, evento_.perror, sizeof(calorimeter->perror));          memcpy(calorimeter->perror, evento_.perror, sizeof(calorimeter->perror));
124      //--------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
# Line 139  void CalorimeterReader::RunEvent(int Eve Line 154  void CalorimeterReader::RunEvent(int Eve
154          memcpy(calorimeter->calDSPtaberr,   evento_.calDSPtaberr,   sizeof(calorimeter->calDSPtaberr));          memcpy(calorimeter->calDSPtaberr,   evento_.calDSPtaberr,   sizeof(calorimeter->calDSPtaberr));
155          memcpy(calorimeter->calevnum,       evento_.calevnum,       sizeof(calorimeter->calevnum));          memcpy(calorimeter->calevnum,       evento_.calevnum,       sizeof(calorimeter->calevnum));
156      //}      //}
157      delete[] data;      delete [] data;
158  }  }

Legend:
Removed from v.2.5  
changed lines
  Added in v.6.1

  ViewVC Help
Powered by ViewVC 1.1.23