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

Diff of /yoda/techmodel/PhysicsReader.cpp

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

revision 1.2 by kusanagi, Tue Jul 6 13:31:18 2004 UTC revision 1.8 by kusanagi, Wed Aug 25 10:14:26 2004 UTC
# Line 1  Line 1 
1  /** @file  /** @file
2   * $Source: /home/cvsmanager/yoda/techmodel/PhysicsReader.cpp,v $   * $Source: /home/cvsmanager/yoda/techmodel/PhysicsReader.cpp,v $
3   * $Id: PhysicsReader.cpp,v 1.1.1.1 2004/07/06 12:20:23 kusanagi Exp $   * $Id: PhysicsReader.cpp,v 1.7 2004/08/24 08:01:44 kusanagi Exp $
4   * $Author: kusanagi $   * $Author: kusanagi $
5   *   *
6   * Implementation of the LogReader class.   * Implementation of the LogReader class.
# Line 25  extern "C" { Line 25  extern "C" {
25  using namespace pamela;  using namespace pamela;
26  using namespace pamela::techmodel;  using namespace pamela::techmodel;
27  using namespace pamela::tracker;  using namespace pamela::tracker;
28    using namespace pamela::anticounter;
29    using namespace pamela::calorimeter;
30    using namespace pamela::neutron;
31    
32  static log4cpp::Category& cat = log4cpp::Category::getInstance("pamela.techmodel.PhysicsReader");    static log4cpp::Category& cat = log4cpp::Category::getInstance("pamela.techmodel.PhysicsReader");  
33    
# Line 32  static log4cpp::Category& cat = log4cpp: Line 35  static log4cpp::Category& cat = log4cpp:
35   * Constructor.   * Constructor.
36   */   */
37  PhysicsReader::PhysicsReader(void):  PhysicsReader::PhysicsReader(void):
38    TechmodelAlgorithm(PacketType::Log, "TechmodelPhysicsReader") {    TechmodelAlgorithm(PacketType::Physics, "TechmodelPhysicsReader") {
39    cat <<  log4cpp::Priority::DEBUG    cat <<  log4cpp::Priority::DEBUG
40        <<  "Constructor "        <<  "Constructor "
41        <<  "\n " << log4cpp::CategoryStream::ENDLINE;        <<  "\n " << log4cpp::CategoryStream::ENDLINE;
42    trackerReader = new TrackerReader();    trackerReader     = new TrackerReader();
43      anticounterReader = new AnticounterReader();
44      calorimeterReader = new CalorimeterReader();
45      neutronReader     = new NeutronDetectorReader();
46  }  }
47    
48  /**  /**
# Line 44  PhysicsReader::PhysicsReader(void): Line 50  PhysicsReader::PhysicsReader(void):
50   */   */
51  std::string PhysicsReader::GetVersionInfo(void) const {  std::string PhysicsReader::GetVersionInfo(void) const {
52    return    return
53      "$Header: /home/cvsmanager/yoda/techmodel/PhysicsReader.cpp,v 1.1.1.1 2004/07/06 12:20:23 kusanagi Exp $\n";      "$Header: /home/cvsmanager/yoda/techmodel/PhysicsReader.cpp,v 1.7 2004/08/24 08:01:44 kusanagi Exp $\n";
54  }  }
55    
56  /**  /**
# Line 54  std::string PhysicsReader::GetVersionInf Line 60  std::string PhysicsReader::GetVersionInf
60  void PhysicsReader::Init(PamelaRun *run) {  void PhysicsReader::Init(PamelaRun *run) {
61    SetInputStream(run);    SetInputStream(run);
62    trackerReader->Init(run);    trackerReader->Init(run);
63      anticounterReader->Init(run);
64      calorimeterReader->Init(run);
65      neutronReader->Init(run);
66    //run->WriteSubPacket(this, &physicsEvent, physicsEvent->Class());    //run->WriteSubPacket(this, &physicsEvent, physicsEvent->Class());
67  }  }
68    
69  /**  /**
70   * Unpack the Physics event from an input file.   * Unpack the Physics event from an input file.
71   */   */
72  void PhysicsReader::RunEvent(int EventNumber, long int length) {  void PhysicsReader::RunEvent(int EventNumber, long int dataLenght) {
73        char *subData = new char[dataLenght];
74        InputFile->read(subData, sizeof(unsigned char)*dataLenght);
75    
76      /*UINT16      CRCread;     //CRC read from the end of the subpacket          /*-----------------*/
     UINT16      CRCsum;      //CRC of the data  
     char        packetData[length-2];  
     char        CRCevent[2];  
     long int    dataLength;  
   
     InputFile->read(packetData, sizeof(packetData));  
     InputFile->read(CRCevent, sizeof(CRCevent));  
   
     CRCsum = CM_Compute_CRC16(0, (BYTE*)packetData, length -(long int)2 );  
     CRCread = ((UINT16)(CRCevent[0]<<8)) + ((UINT16)CRCevent[1]);  
     InputFile->seekg(-(length), std::ios::cur);  
   
     if (CRCread == CRCsum){  
           
77          //passo packetData a tutti i reader dei vari rivelatori          //passo packetData a tutti i reader dei vari rivelatori
78      } else {          trackerReader->RunEvent(EventNumber, subData, dataLenght);
79          cat <<  log4cpp::Priority::ERROR          anticounterReader->RunEvent(EventNumber, subData, dataLenght);
80              <<  "The test of calculated CRC with one wrote on file FAILED!!"          calorimeterReader->RunEvent(EventNumber, subData, dataLenght);
81              <<  "\n " << log4cpp::CategoryStream::ENDLINE;          neutronReader->RunEvent(EventNumber, subData, dataLenght);
82      }*/          /*-----------------*/
   
     char        packetData[length-2];  
     int         ERROR;  
   
     InputFile->read(packetData, sizeof(packetData));  
     //Skip the last two crc bytes already checked in UnpackPscu  
     //This part have to be refactored!!!! too bad......  
     //InputFile->seekg((long int)2, std::ios::cur);  
       
     /*-----------------*/  
     //passo packetData a tutti i reader dei vari rivelatori  
     //trackerReader->RunEvent(EventNumber, packetData, length-2);  
     /*-----------------*/  
     //free(packetData);      
       
83  }  }
84    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.23