/[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.7 by kusanagi, Tue Sep 21 20:23:37 2004 UTC revision 2.7 by kusanagi, Wed Feb 9 22:24:33 2005 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.6 2004/08/19 15:24:10 kusanagi Exp $   * $Id: EventCounter.cpp,v 2.6 2005/01/29 00:26:41 kusanagi Exp $
4   * $Author: kusanagi $   * $Author: kusanagi $
5   *   *
6   * Implementation of the EventCounter class.   * Implementation of the EventCounter class.
# Line 28  EventCounter::EventCounter(int run): Line 28  EventCounter::EventCounter(int run):
28    CalibCalPulse2(0),    CalibCalPulse2(0),
29    Physics(0),    Physics(0),
30    CalibTrkBoth(0),    CalibTrkBoth(0),
31    Calib_Trk1(0),    CalibTrk1(0),
32    Calib_Trk2(0),    CalibTrk2(0),
33    Calib_Trd(0),    CalibTrd(0),
34    Calib_Tof(0),    CalibTof(0),
35    Calib_S4(0),    CalibS4(0),
36    Calib_CalPed(0),    CalibCalPed(0),
37    Calib_Ac(0),    Calib1_Ac1(0),
38    Run_Header(0),    Calib1_Ac2(0),
39    Run_Trailer(0),    Calib2_Ac1(0),
40      Calib2_Ac2(0),
41      RunHeader(0),
42      RunTrailer(0),
43    CalibHeader(0),    CalibHeader(0),
44    CalibTrailer(0),    CalibTrailer(0),
45    InitHeader(0),    InitHeader(0),
# Line 51  EventCounter::EventCounter(int run): Line 54  EventCounter::EventCounter(int run):
54    Tmtc(0),    Tmtc(0),
55    Mcmd(0),    Mcmd(0),
56    ForcedFECmd(0),    ForcedFECmd(0),
57    AcInit(0),    Ac1Init(0),
58    CalInit(0),    CalInit(0),
59    TrkInit(0),    TrkInit(0),
60    TofInit(0),    TofInit(0),
61    TrgInit(0),    TrgInit(0),
62      NdInit(0),
63      S4Init(0),
64      Ac2Init(0),
65    CalAlarm(0),    CalAlarm(0),
66    AcAlarm(0),    AcAlarm(0),
67    TrkAlarm(0),    TrkAlarm(0),
68    TrgAlarm(0),    TrgAlarm(0),
69    TofAlarm(0),    TofAlarm(0),
70      S4Alarm(0),
71    RunNumber(run) {    RunNumber(run) {
72      CMap.insert(CounterMap::value_type(PacketType::Pscu,            &Pscu));      CMap.insert(CounterMap::value_type(PacketType::Pscu,            &Pscu));
73      CMap.insert(CounterMap::value_type(PacketType::PhysEndRun,      &PhysEndRun));      CMap.insert(CounterMap::value_type(PacketType::PhysEndRun,      &PhysEndRun));
74      CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse2,  &CalibCalPulse1));      CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse1,  &CalibCalPulse1));
75      CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse2,  &CalibCalPulse2));      CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse2,  &CalibCalPulse2));
76      CMap.insert(CounterMap::value_type(PacketType::Physics,         &Physics));      CMap.insert(CounterMap::value_type(PacketType::Physics,         &Physics));
77      CMap.insert(CounterMap::value_type(PacketType::CalibTrkBoth,    &CalibTrkBoth));      CMap.insert(CounterMap::value_type(PacketType::CalibTrkBoth,    &CalibTrkBoth));
78      CMap.insert(CounterMap::value_type(PacketType::CalibTrk1,       &Calib_Trk1));      CMap.insert(CounterMap::value_type(PacketType::CalibTrk1,       &CalibTrk1));
79      CMap.insert(CounterMap::value_type(PacketType::CalibTrk2,       &Calib_Trk2));      CMap.insert(CounterMap::value_type(PacketType::CalibTrk2,       &CalibTrk2));
80      CMap.insert(CounterMap::value_type(PacketType::CalibTrd,        &Calib_Trd));      CMap.insert(CounterMap::value_type(PacketType::CalibTrd,        &CalibTrd));
81      CMap.insert(CounterMap::value_type(PacketType::CalibTof,        &Calib_Tof));      CMap.insert(CounterMap::value_type(PacketType::CalibTof,        &CalibTof));
82      CMap.insert(CounterMap::value_type(PacketType::CalibS4,         &Calib_S4));      CMap.insert(CounterMap::value_type(PacketType::CalibS4,         &CalibS4));
83      CMap.insert(CounterMap::value_type(PacketType::CalibCalPed,     &Calib_CalPed));      CMap.insert(CounterMap::value_type(PacketType::CalibCalPed,     &CalibCalPed));
84      CMap.insert(CounterMap::value_type(PacketType::CalibAc,         &Calib_Ac));      CMap.insert(CounterMap::value_type(PacketType::Calib1_Ac1,      &Calib1_Ac1));
85      CMap.insert(CounterMap::value_type(PacketType::RunHeader,       &Run_Header));      CMap.insert(CounterMap::value_type(PacketType::Calib1_Ac2,      &Calib1_Ac2));
86      CMap.insert(CounterMap::value_type(PacketType::RunTrailer,      &Run_Trailer));      CMap.insert(CounterMap::value_type(PacketType::Calib2_Ac1,      &Calib2_Ac1));
87        CMap.insert(CounterMap::value_type(PacketType::Calib2_Ac2,      &Calib2_Ac2));
88        CMap.insert(CounterMap::value_type(PacketType::RunHeader,       &RunHeader));
89        CMap.insert(CounterMap::value_type(PacketType::RunTrailer,      &RunTrailer));
90      CMap.insert(CounterMap::value_type(PacketType::CalibHeader,     &CalibHeader));      CMap.insert(CounterMap::value_type(PacketType::CalibHeader,     &CalibHeader));
91      CMap.insert(CounterMap::value_type(PacketType::CalibTrailer,    &CalibTrailer));        CMap.insert(CounterMap::value_type(PacketType::CalibTrailer,    &CalibTrailer));  
92      CMap.insert(CounterMap::value_type(PacketType::InitHeader,      &InitHeader));      CMap.insert(CounterMap::value_type(PacketType::InitHeader,      &InitHeader));
# Line 91  EventCounter::EventCounter(int run): Line 101  EventCounter::EventCounter(int run):
101      CMap.insert(CounterMap::value_type(PacketType::Tmtc,            &Tmtc));      CMap.insert(CounterMap::value_type(PacketType::Tmtc,            &Tmtc));
102      CMap.insert(CounterMap::value_type(PacketType::Mcmd,            &Mcmd));      CMap.insert(CounterMap::value_type(PacketType::Mcmd,            &Mcmd));
103      CMap.insert(CounterMap::value_type(PacketType::ForcedFECmd,     &ForcedFECmd));      CMap.insert(CounterMap::value_type(PacketType::ForcedFECmd,     &ForcedFECmd));
104      CMap.insert(CounterMap::value_type(PacketType::AcInit,          &AcInit));      CMap.insert(CounterMap::value_type(PacketType::Ac1Init,         &Ac1Init));
105      CMap.insert(CounterMap::value_type(PacketType::CalInit,         &CalInit));      CMap.insert(CounterMap::value_type(PacketType::CalInit,         &CalInit));
106      CMap.insert(CounterMap::value_type(PacketType::TrkInit,         &TrkInit));      CMap.insert(CounterMap::value_type(PacketType::TrkInit,         &TrkInit));
107      CMap.insert(CounterMap::value_type(PacketType::TofInit,         &TofInit));      CMap.insert(CounterMap::value_type(PacketType::TofInit,         &TofInit));
108      CMap.insert(CounterMap::value_type(PacketType::TrgInit,         &TrgInit));      CMap.insert(CounterMap::value_type(PacketType::NdInit,          &NdInit));
109        CMap.insert(CounterMap::value_type(PacketType::S4Init,          &S4Init));
110        CMap.insert(CounterMap::value_type(PacketType::Ac2Init,         &Ac2Init));
111      CMap.insert(CounterMap::value_type(PacketType::CalAlarm,        &CalAlarm));      CMap.insert(CounterMap::value_type(PacketType::CalAlarm,        &CalAlarm));
112      CMap.insert(CounterMap::value_type(PacketType::AcAlarm,         &AcAlarm));      CMap.insert(CounterMap::value_type(PacketType::AcAlarm,         &AcAlarm));
113      CMap.insert(CounterMap::value_type(PacketType::TrkAlarm,        &TrkAlarm));      CMap.insert(CounterMap::value_type(PacketType::TrkAlarm,        &TrkAlarm));
114      CMap.insert(CounterMap::value_type(PacketType::TrgAlarm,        &TrgAlarm));      CMap.insert(CounterMap::value_type(PacketType::TrgAlarm,        &TrgAlarm));
115      CMap.insert(CounterMap::value_type(PacketType::TofAlarm,        &TofAlarm));      CMap.insert(CounterMap::value_type(PacketType::TofAlarm,        &TofAlarm));
116        CMap.insert(CounterMap::value_type(PacketType::S4Alarm,         &S4Alarm));
117  }  }
118    
119  /**  /**
120   * Increment the event counter for a certain packet.   * Increment the event counter for a certain packet.
121   * @param type Event type to be incremented.   * @param type Event type to be incremented.
122   */   */
123  void EventCounter::Increment(PacketType const * type) {  void EventCounter::Increment(PacketType const * type) throw (NotExistingCounterException){
124    CounterMap::iterator p = CMap.find(type);    CounterMap::iterator p = CMap.find(type);
125    if (p != CMap.end()) {    if (p != CMap.end()) {
126      int *counter = p->second;      int *counter = p->second;
127      (*counter)++;      (*counter)++;
128      oss.flush();      oss.str("");
129      oss << " Counter." <<  type->GetName() << " = " <<  (*counter);      oss << " Counter." <<  type->GetName() << " = " <<  (*counter);
130      logger->debug(oss.str().c_str());      logger->info(oss.str().c_str());
131    } else {    } else {
132      oss.flush();      oss.str("");
133      oss <<  " No counter for packet type " <<  type->GetName();      oss << "\n No counter of type  " << type->GetName().c_str();
134      logger->warn(oss.str().c_str());      throw NotExistingCounterException(oss.str().c_str());
135    }    }
136  }  }
137    
# Line 130  void EventCounter::Increment(PacketType Line 143  void EventCounter::Increment(PacketType
143   * number of the last read event of that type.   * number of the last read event of that type.
144   * @retval -1 if there was no event of this type.   * @retval -1 if there was no event of this type.
145   */   */
146  int EventCounter::Get(PacketType const * type) const {  int EventCounter::Get(PacketType const * type) const throw (NotExistingCounterException){
147    const CounterMap::const_iterator p = CMap.find(type);    const CounterMap::const_iterator p = CMap.find(type);
148    if (p != CMap.end()) {    if (p != CMap.end()) {
149      const int *counter = p->second;      const int *counter = p->second;
150      return *counter;      return *counter;
151    } else {    } else {
152      oss.flush();      throw NotExistingCounterException(type->GetName().c_str());
     oss <<  " No counter for packet type " <<  type->GetName();  
     logger->warn(oss.str().c_str());  
153      return -1;      return -1;
154    }    }
155  }  }
# Line 149  int EventCounter::Get(PacketType const * Line 160  int EventCounter::Get(PacketType const *
160   * @return The next counter of that packet type.   * @return The next counter of that packet type.
161   * @retval -1 if there was no event of this type.   * @retval -1 if there was no event of this type.
162   */   */
163  int EventCounter::Next(PacketType const * type) const {  int EventCounter::Next(PacketType const * type) const throw (NotExistingCounterException){
164    const CounterMap::const_iterator p = CMap.find(type);    const CounterMap::const_iterator p = CMap.find(type);
165    if (p != CMap.end()) {    if (p != CMap.end()) {
166      const int *counter = p->second;      const int *counter = p->second;
167      return *counter + 1;      return *counter + 1;
168    } else {    } else {
169      oss.flush();      throw NotExistingCounterException(type->GetName().c_str());
     oss <<  " No counter for packet type " <<  type->GetName();  
     logger->warn(oss.str().c_str());  
170      return -1;      return -1;
171    }    }
172  }  }
# Line 168  int EventCounter::Next(PacketType const Line 177  int EventCounter::Next(PacketType const
177   */   */
178  void EventCounter::PrintCounters() const {  void EventCounter::PrintCounters() const {
179    for(CounterMap::const_iterator p = CMap.begin(); p != CMap.end(); p++) {    for(CounterMap::const_iterator p = CMap.begin(); p != CMap.end(); p++) {
180    oss.flush();    oss.str("");
181    oss <<  " Counter." <<  (p->first)->GetName()  <<   " = " <<  (*p->second);    oss <<  " Counter." <<  (p->first)->GetName()  <<   " \t \t " <<  (*p->second);
182    logger->warn(oss.str().c_str());    logger->info(oss.str().c_str());
   std::cout <<  " Counter." <<  (p->first)->GetName()  <<   "\t = \t" <<  (*p->second) << "\n";  
183    }    }
184  }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.2.7

  ViewVC Help
Powered by ViewVC 1.1.23