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

Annotation of /yoda/techmodel/TrkAlarmReader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6.3 - (hide annotations) (download)
Fri Sep 29 10:19:29 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: +1 -0 lines
Last event bug fixed, compilation warnings/errors fixed

1 kusanagi 1.1
2     // Implementation of the TrkAlarmReader class.
3    
4     #include "ReaderAlgorithms.h"
5     using namespace pamela::techmodel;
6    
7     static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.techmodel.TrkAlarmReader"));
8    
9     /**
10     * Constructor.
11     */
12     TrkAlarmReader::TrkAlarmReader(void):
13     TechmodelAlgorithm(PacketType::TrkAlarm, "TechmodelTrkAlarmReader") {
14     logger->debug(_T("Constructor"));
15     trkAlarm = new TrkAlarmEvent();
16     }
17    
18     /**
19     * Get a string with the version info of the algorithm.
20     */
21     std::string TrkAlarmReader::GetVersionInfo(void) const {
22     return
23 kusanagi 5.3 "$Trailer: /home/cvsmanager/yoda/techmodel/TrkAlarmReader.cpp,v 1.1.1.1 2004/07/06 12:20:23 Maurizio Nagni Exp $\n";
24 kusanagi 1.1 }
25    
26     /**
27     * Initialize the algorithm with a special run. This will initialize the
28     * event reader routines for all packet types.
29     */
30     void TrkAlarmReader::Init(PamelaRun *run) {
31     SetInputStream(run);
32     run->WriteSubPacket(this, &trkAlarm, trkAlarm->Class());
33     logger->debug(_T("Initialize"));
34     }
35    
36     /**
37     * Unpack the TrkAlarm event from an input file.
38     */
39 kusanagi 2.1 void TrkAlarmReader::RunEvent(int EventNumber, long int length) throw (WrongCRCException){
40 kusanagi 1.1
41 kusanagi 4.5 char subData[length];
42 mocchiut 6.3 memset(subData, 0, length*sizeof(char));
43 kusanagi 4.5 InputFile->read(subData, sizeof(subData));
44    
45     trkAlarm->TrigMask = (subData[0]&0xc0) >> 6;
46     trkAlarm->DSPMask = (subData[0]&0x3f);
47    
48    
49     trkAlarm->FlashShutdown = (subData[1]&0x80) >> 7;
50     trkAlarm->FlashOn = (subData[1]&0x40) >> 6;
51     trkAlarm->DSPBusy = (subData[1]&0x3f);
52    
53     trkAlarm->FlashUpset = (subData[2]&0x80) >> 7;
54     trkAlarm->FlashData = (subData[2]&0x40) >> 6;
55     trkAlarm->DSPSoft = (subData[2]&0x3f);
56    
57     trkAlarm->InterCheck = (subData[3]&0x80) >> 7;
58     trkAlarm->FinalCheck = (subData[3]&0x40) >> 6;
59     trkAlarm->CmdIDMA = (subData[3]&0x3f);
60    
61     trkAlarm->UnknownCmd = (subData[4]&0x80) >> 7;
62     trkAlarm->CmdDuringTrig = (subData[4]&0x40) >> 6;
63     trkAlarm->TrigIDMA = (subData[4]&0x3f);
64    
65     trkAlarm->PNum = (subData[5]&0xf0) >> 4;
66     trkAlarm->CmdNum = (subData[5]&0x0f);
67    
68     for(int i=0 ; i<4 ; i++){
69     trkAlarm->BID[i] = (subData[6]&(0x03<<i*2)) >> i*2;
70     };
71    
72     for(int i=1 ; i<4 ; i++){
73     trkAlarm->BID[3+i] = (subData[7]&(0x03<<i*2)) >> i*2;
74     };
75    
76     trkAlarm->ALARM[0] = (subData[7]&0x02) >> 1;
77     trkAlarm->ALARM[1] = (subData[7]&0x01);
78 kusanagi 1.1
79 kusanagi 4.5 trkAlarm->Aswr = (subData[8]&0xff) << 8;
80     trkAlarm->Aswr = trkAlarm->Aswr | (subData[9]&0xff);
81 kusanagi 1.1 }
82    

  ViewVC Help
Powered by ViewVC 1.1.23