/[PAMELA software]/yoda/event/EventCounter.cpp
ViewVC logotype

Diff of /yoda/event/EventCounter.cpp

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

revision 1.6 by kusanagi, Thu Aug 19 15:24:10 2004 UTC revision 6.0 by kusanagi, Tue Feb 7 17:11:07 2006 UTC
# Line 1  Line 1 
1  /** @file  /** @file
2   * $Source: /home/cvsmanager/yoda/event/EventCounter.cpp,v $   * $Source: /home/cvsmanager/yoda/event/EventCounter.cpp,v $
3   * $Id: EventCounter.cpp,v 1.5 2004/07/29 16:18:53 kusanagi Exp $   * $Id: EventCounter.cpp,v 5.1 2006/02/04 12:37:43 kusanagi Exp $
4   * $Author: kusanagi $   * $Author: kusanagi $
5   *   *
6   * Implementation of the EventCounter class.   * Implementation of the EventCounter class.
7   */   */
8  #include <log4cpp/Category.hh>  #include <log4cxx/logger.h>
9    #include <sstream>
10    
11  #include "EventCounter.h"  #include "EventCounter.h"
12  #include "PscuHeader.h"  #include "PscuHeader.h"
13    
 static log4cpp::Category& cat = log4cpp::Category::getInstance("pamela.techmodel.EventCounter");    
14    
15    static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.techmodel.EventCounter"));
16    static std::stringstream oss;
17  using namespace pamela;  using namespace pamela;
18    
19  /**  /**
# Line 25  EventCounter::EventCounter(int run): Line 27  EventCounter::EventCounter(int run):
27    CalibCalPulse1(0),    CalibCalPulse1(0),
28    CalibCalPulse2(0),    CalibCalPulse2(0),
29    Physics(0),    Physics(0),
30    CalibTrkBoth(0),    CalibTrk1(0),
31    Calib_Trk1(0),    CalibTrk2(0),
32    Calib_Trk2(0),    CalibTof(0),
33    Calib_Trd(0),    CalibS4(0),
34    Calib_Tof(0),    CalibCalPed(0),
35    Calib_S4(0),    Calib1_Ac1(0),
36    Calib_CalPed(0),    Calib1_Ac2(0),
37    Calib_Ac(0),    Calib2_Ac1(0),
38    Run_Header(0),    Calib2_Ac2(0),
39    Run_Trailer(0),    RunHeader(0),
40      RunTrailer(0),
41    CalibHeader(0),    CalibHeader(0),
42    CalibTrailer(0),    CalibTrailer(0),
43    InitHeader(0),    InitHeader(0),
44    InitTrailer(0),    InitTrailer(0),
   EventTrk(0),  
   TestTrk(0),  
45    Log(0),    Log(0),
46    VarDump(0),    VarDump(0),
47    ArrDump(0),    ArrDump(0),
# Line 48  EventCounter::EventCounter(int run): Line 49  EventCounter::EventCounter(int run):
49    Tmtc(0),    Tmtc(0),
50    Mcmd(0),    Mcmd(0),
51    ForcedFECmd(0),    ForcedFECmd(0),
52    AcInit(0),    Ac1Init(0),
53    CalInit(0),    CalInit(0),
54    TrkInit(0),    TrkInit(0),
55    TofInit(0),    TofInit(0),
56    TrgInit(0),    TrgInit(0),
57      NdInit(0),
58      S4Init(0),
59      Ac2Init(0),
60      CalAlarm(0),
61      AcAlarm(0),
62      TrkAlarm(0),
63      TrgAlarm(0),
64      TofAlarm(0),
65      S4Alarm(0),
66      TsbT(0),
67      TsbB(0),
68    RunNumber(run) {    RunNumber(run) {
69      CMap.insert(CounterMap::value_type(PacketType::Pscu,            &Pscu));      CMap.insert(CounterMap::value_type(PacketType::Pscu,            &Pscu));
70      CMap.insert(CounterMap::value_type(PacketType::PhysEndRun,      &PhysEndRun));      CMap.insert(CounterMap::value_type(PacketType::PhysEndRun,      &PhysEndRun));
71      CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse2,  &CalibCalPulse1));      CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse1,  &CalibCalPulse1));
72      CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse2,  &CalibCalPulse2));      CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse2,  &CalibCalPulse2));
73      CMap.insert(CounterMap::value_type(PacketType::Physics,         &Physics));      CMap.insert(CounterMap::value_type(PacketType::Physics,         &Physics));
74      CMap.insert(CounterMap::value_type(PacketType::CalibTrkBoth,    &CalibTrkBoth));      CMap.insert(CounterMap::value_type(PacketType::CalibTrk1,       &CalibTrk1));
75      CMap.insert(CounterMap::value_type(PacketType::CalibTrk1,       &Calib_Trk1));      CMap.insert(CounterMap::value_type(PacketType::CalibTrk2,       &CalibTrk2));
76      CMap.insert(CounterMap::value_type(PacketType::CalibTrk2,       &Calib_Trk2));      CMap.insert(CounterMap::value_type(PacketType::CalibTof,        &CalibTof));
77      CMap.insert(CounterMap::value_type(PacketType::CalibTrd,        &Calib_Trd));      CMap.insert(CounterMap::value_type(PacketType::CalibS4,         &CalibS4));
78      CMap.insert(CounterMap::value_type(PacketType::CalibTof,        &Calib_Tof));      CMap.insert(CounterMap::value_type(PacketType::CalibCalPed,     &CalibCalPed));
79      CMap.insert(CounterMap::value_type(PacketType::CalibS4,         &Calib_S4));      CMap.insert(CounterMap::value_type(PacketType::Calib1_Ac1,      &Calib1_Ac1));
80      CMap.insert(CounterMap::value_type(PacketType::CalibCalPed,     &Calib_CalPed));      CMap.insert(CounterMap::value_type(PacketType::Calib1_Ac2,      &Calib1_Ac2));
81      CMap.insert(CounterMap::value_type(PacketType::CalibAc,         &Calib_Ac));      CMap.insert(CounterMap::value_type(PacketType::Calib2_Ac1,      &Calib2_Ac1));
82      CMap.insert(CounterMap::value_type(PacketType::RunHeader,       &Run_Header));      CMap.insert(CounterMap::value_type(PacketType::Calib2_Ac2,      &Calib2_Ac2));
83      CMap.insert(CounterMap::value_type(PacketType::RunTrailer,      &Run_Trailer));      CMap.insert(CounterMap::value_type(PacketType::RunHeader,       &RunHeader));
84        CMap.insert(CounterMap::value_type(PacketType::RunTrailer,      &RunTrailer));
85      CMap.insert(CounterMap::value_type(PacketType::CalibHeader,     &CalibHeader));      CMap.insert(CounterMap::value_type(PacketType::CalibHeader,     &CalibHeader));
86      CMap.insert(CounterMap::value_type(PacketType::CalibTrailer,    &CalibTrailer));        CMap.insert(CounterMap::value_type(PacketType::CalibTrailer,    &CalibTrailer));  
87      CMap.insert(CounterMap::value_type(PacketType::InitHeader,      &InitHeader));      CMap.insert(CounterMap::value_type(PacketType::InitHeader,      &InitHeader));
88      CMap.insert(CounterMap::value_type(PacketType::InitTrailer,     &InitTrailer));        CMap.insert(CounterMap::value_type(PacketType::InitTrailer,     &InitTrailer));  
     CMap.insert(CounterMap::value_type(PacketType::EventTrk,        &EventTrk));    
     CMap.insert(CounterMap::value_type(PacketType::TestTrk,         &TestTrk));    
89      CMap.insert(CounterMap::value_type(PacketType::Log,             &Log));      CMap.insert(CounterMap::value_type(PacketType::Log,             &Log));
90      CMap.insert(CounterMap::value_type(PacketType::VarDump,         &VarDump));      CMap.insert(CounterMap::value_type(PacketType::VarDump,         &VarDump));
91      CMap.insert(CounterMap::value_type(PacketType::ArrDump,         &ArrDump));      CMap.insert(CounterMap::value_type(PacketType::ArrDump,         &ArrDump));
# Line 82  EventCounter::EventCounter(int run): Line 93  EventCounter::EventCounter(int run):
93      CMap.insert(CounterMap::value_type(PacketType::Tmtc,            &Tmtc));      CMap.insert(CounterMap::value_type(PacketType::Tmtc,            &Tmtc));
94      CMap.insert(CounterMap::value_type(PacketType::Mcmd,            &Mcmd));      CMap.insert(CounterMap::value_type(PacketType::Mcmd,            &Mcmd));
95      CMap.insert(CounterMap::value_type(PacketType::ForcedFECmd,     &ForcedFECmd));      CMap.insert(CounterMap::value_type(PacketType::ForcedFECmd,     &ForcedFECmd));
96      CMap.insert(CounterMap::value_type(PacketType::AcInit,          &AcInit));      CMap.insert(CounterMap::value_type(PacketType::Ac1Init,         &Ac1Init));
97      CMap.insert(CounterMap::value_type(PacketType::CalInit,         &CalInit));      CMap.insert(CounterMap::value_type(PacketType::CalInit,         &CalInit));
98      CMap.insert(CounterMap::value_type(PacketType::TrkInit,         &TrkInit));      CMap.insert(CounterMap::value_type(PacketType::TrkInit,         &TrkInit));
99      CMap.insert(CounterMap::value_type(PacketType::TofInit,         &TofInit));      CMap.insert(CounterMap::value_type(PacketType::TofInit,         &TofInit));
100      CMap.insert(CounterMap::value_type(PacketType::TrgInit,         &TrgInit));      CMap.insert(CounterMap::value_type(PacketType::NdInit,          &NdInit));
101        CMap.insert(CounterMap::value_type(PacketType::S4Init,          &S4Init));
102        CMap.insert(CounterMap::value_type(PacketType::Ac2Init,         &Ac2Init));
103        CMap.insert(CounterMap::value_type(PacketType::CalAlarm,        &CalAlarm));
104        CMap.insert(CounterMap::value_type(PacketType::AcAlarm,         &AcAlarm));
105        CMap.insert(CounterMap::value_type(PacketType::TrkAlarm,        &TrkAlarm));
106        CMap.insert(CounterMap::value_type(PacketType::TrgAlarm,        &TrgAlarm));
107        CMap.insert(CounterMap::value_type(PacketType::TofAlarm,        &TofAlarm));
108        CMap.insert(CounterMap::value_type(PacketType::S4Alarm,         &S4Alarm));
109        CMap.insert(CounterMap::value_type(PacketType::TsbT,            &TsbT));
110        CMap.insert(CounterMap::value_type(PacketType::TsbB,            &TsbB));
111  }  }
112    
113  /**  /**
114   * Increment the event counter for a certain packet.   * Increment the event counter for a certain packet.
115   * @param type Event type to be incremented.   * @param type Event type to be incremented.
116   */   */
117  void EventCounter::Increment(PacketType const * type) {  void EventCounter::Increment(PacketType const * type) throw (NotExistingCounterException){
118    CounterMap::iterator p = CMap.find(type);    CounterMap::iterator p = CMap.find(type);
119    if (p != CMap.end()) {    if (p != CMap.end()) {
120      int *counter = p->second;      int *counter = p->second;
121      (*counter)++;      (*counter)++;
122      cat <<  log4cpp::Priority::DEBUG      oss.str("");
123          <<  " Counter." <<  type->GetName() << " = " <<  (*counter)      oss << " Counter." <<  type->GetName() << " = " <<  (*counter);
124          <<  "\n " << log4cpp::CategoryStream::ENDLINE;      logger->info(oss.str().c_str());
125    } else {    } else {
126      cat <<  log4cpp::Priority::WARN      oss.str("");
127          <<  " No counter for packet type " <<  type->GetName()      oss << "\n No counter of type  " << type->GetName().c_str();
128          <<  "\n " << log4cpp::CategoryStream::ENDLINE;      throw NotExistingCounterException(oss.str().c_str());
129    }    }
130  }  }
131    
# Line 116  void EventCounter::Increment(PacketType Line 137  void EventCounter::Increment(PacketType
137   * number of the last read event of that type.   * number of the last read event of that type.
138   * @retval -1 if there was no event of this type.   * @retval -1 if there was no event of this type.
139   */   */
140  int EventCounter::Get(PacketType const * type) const {  int EventCounter::Get(PacketType const * type) const throw (NotExistingCounterException){
141    const CounterMap::const_iterator p = CMap.find(type);    const CounterMap::const_iterator p = CMap.find(type);
142    if (p != CMap.end()) {    if (p != CMap.end()) {
143      const int *counter = p->second;      const int *counter = p->second;
144      return *counter;      return *counter;
145    } else {    } else {
146          cat <<  log4cpp::Priority::WARN      throw NotExistingCounterException(type->GetName().c_str());
         <<  " No counter for packet type " <<  type->GetName()  
         <<  "\n " << log4cpp::CategoryStream::ENDLINE;  
147      return -1;      return -1;
148    }    }
149  }  }
# Line 135  int EventCounter::Get(PacketType const * Line 154  int EventCounter::Get(PacketType const *
154   * @return The next counter of that packet type.   * @return The next counter of that packet type.
155   * @retval -1 if there was no event of this type.   * @retval -1 if there was no event of this type.
156   */   */
157  int EventCounter::Next(PacketType const * type) const {  int EventCounter::Next(PacketType const * type) const throw (NotExistingCounterException){
158    const CounterMap::const_iterator p = CMap.find(type);    const CounterMap::const_iterator p = CMap.find(type);
159    if (p != CMap.end()) {    if (p != CMap.end()) {
160      const int *counter = p->second;      const int *counter = p->second;
161      return *counter + 1;      return *counter + 1;
162    } else {    } else {
163          cat <<  log4cpp::Priority::WARN      throw NotExistingCounterException(type->GetName().c_str());
         <<  " No counter for packet type " <<  type->GetName()  
         <<  "\n " << log4cpp::CategoryStream::ENDLINE;  
164      return -1;      return -1;
165    }    }
166  }  }
167    
168  /**  /**
169   * Get the all the counters   * Get the all the counters
170    * @retval -1 if there was no event of this type.    * @retval 0 if there was no event of this type.
171   */   */
172  void EventCounter::PrintCounters() const {  void EventCounter::PrintCounters() const {
173    for(CounterMap::const_iterator p = CMap.begin(); p != CMap.end(); p++) {    for(CounterMap::const_iterator p = CMap.begin(); p != CMap.end(); p++) {
174    cat <<  log4cpp::Priority::INFO <<  " Counter." <<  (p->first)->GetName()  <<   " = " <<  (*p->second)    oss.str("");
175        <<  "\n " << log4cpp::CategoryStream::ENDLINE;    oss <<  " Counter." <<  (p->first)->GetName()  <<   " \t \t " <<  (*p->second);
176      logger->info(oss.str().c_str());
177    }    }
178  }  }
179            

Legend:
Removed from v.1.6  
changed lines
  Added in v.6.0

  ViewVC Help
Powered by ViewVC 1.1.23