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

Contents of /yoda/event/EventCounter.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5.0 - (show annotations) (download)
Mon Aug 29 09:45:48 2005 UTC (19 years, 3 months ago) by kusanagi
Branch: MAIN
CVS Tags: YODA5_0/00, YODA5_0/01, YODA5_0/02
Changes since 4.4: +1 -1 lines
Starting form this version:
1) includes are defined with relative (not absolute) path respect to the YODA aplication
2) RegistryEvent class is foreseen to contain post-unpack data.

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

  ViewVC Help
Powered by ViewVC 1.1.23