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

Annotation of /yoda/event/EventCounter.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4.1 - (hide annotations) (download)
Sat May 28 08:30:01 2005 UTC (19 years, 6 months ago) by kusanagi
Branch: MAIN
Changes since 4.0: +1 -5 lines
Update - The PAMELA Packets, CalibTrkBoth, CalibTrd, has been declared unusefull
and for this reason all refereces to that classes has been removed.

1 kusanagi 1.1 /** @file
2 kusanagi 1.2 * $Source: /home/cvsmanager/yoda/event/EventCounter.cpp,v $
3 kusanagi 4.1 * $Id: EventCounter.cpp,v 4.0 2005/03/06 04:33:01 kusanagi Exp $
4 kusanagi 1.2 * $Author: kusanagi $
5 kusanagi 1.1 *
6     * Implementation of the EventCounter class.
7     */
8 kusanagi 1.7 #include <log4cxx/logger.h>
9     #include <sstream>
10 kusanagi 1.1
11     #include "EventCounter.h"
12     #include "PscuHeader.h"
13    
14    
15 kusanagi 1.7 static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.techmodel.EventCounter"));
16     static std::stringstream oss;
17 kusanagi 1.1 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 kusanagi 1.4 Pscu(0),
26 kusanagi 1.5 PhysEndRun(0),
27     CalibCalPulse1(0),
28     CalibCalPulse2(0),
29 kusanagi 1.4 Physics(0),
30 kusanagi 2.6 CalibTrk1(0),
31     CalibTrk2(0),
32     CalibTof(0),
33     CalibS4(0),
34     CalibCalPed(0),
35 kusanagi 2.4 Calib1_Ac1(0),
36     Calib1_Ac2(0),
37     Calib2_Ac1(0),
38     Calib2_Ac2(0),
39 kusanagi 2.6 RunHeader(0),
40     RunTrailer(0),
41 kusanagi 1.5 CalibHeader(0),
42     CalibTrailer(0),
43     InitHeader(0),
44     InitTrailer(0),
45     EventTrk(0),
46     TestTrk(0),
47 kusanagi 1.7 TestTof(0),
48 kusanagi 1.4 Log(0),
49     VarDump(0),
50     ArrDump(0),
51     TabDump(0),
52     Tmtc(0),
53     Mcmd(0),
54 kusanagi 1.5 ForcedFECmd(0),
55 kusanagi 2.4 Ac1Init(0),
56 kusanagi 1.5 CalInit(0),
57     TrkInit(0),
58     TofInit(0),
59     TrgInit(0),
60 kusanagi 2.1 NdInit(0),
61 kusanagi 2.3 S4Init(0),
62 kusanagi 2.4 Ac2Init(0),
63 kusanagi 1.7 CalAlarm(0),
64     AcAlarm(0),
65     TrkAlarm(0),
66     TrgAlarm(0),
67     TofAlarm(0),
68 kusanagi 2.3 S4Alarm(0),
69 kusanagi 2.8 TsbT(0),
70     TsbB(0),
71 kusanagi 1.1 RunNumber(run) {
72 kusanagi 1.5 CMap.insert(CounterMap::value_type(PacketType::Pscu, &Pscu));
73     CMap.insert(CounterMap::value_type(PacketType::PhysEndRun, &PhysEndRun));
74 kusanagi 2.2 CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse1, &CalibCalPulse1));
75 kusanagi 1.5 CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse2, &CalibCalPulse2));
76     CMap.insert(CounterMap::value_type(PacketType::Physics, &Physics));
77 kusanagi 2.6 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 kusanagi 2.4 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 kusanagi 2.6 CMap.insert(CounterMap::value_type(PacketType::RunHeader, &RunHeader));
87     CMap.insert(CounterMap::value_type(PacketType::RunTrailer, &RunTrailer));
88 kusanagi 1.5 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 kusanagi 1.7 CMap.insert(CounterMap::value_type(PacketType::TestTof, &TestTof));
95 kusanagi 1.5 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 kusanagi 2.4 CMap.insert(CounterMap::value_type(PacketType::Ac1Init, &Ac1Init));
103 kusanagi 1.5 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 kusanagi 2.3 CMap.insert(CounterMap::value_type(PacketType::NdInit, &NdInit));
107     CMap.insert(CounterMap::value_type(PacketType::S4Init, &S4Init));
108 kusanagi 2.4 CMap.insert(CounterMap::value_type(PacketType::Ac2Init, &Ac2Init));
109 kusanagi 1.7 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 kusanagi 2.3 CMap.insert(CounterMap::value_type(PacketType::S4Alarm, &S4Alarm));
115 kusanagi 2.8 CMap.insert(CounterMap::value_type(PacketType::TsbT, &TsbT));
116     CMap.insert(CounterMap::value_type(PacketType::TsbB, &TsbB));
117 kusanagi 1.1 }
118    
119     /**
120     * Increment the event counter for a certain packet.
121     * @param type Event type to be incremented.
122     */
123 kusanagi 2.2 void EventCounter::Increment(PacketType const * type) throw (NotExistingCounterException){
124 kusanagi 1.1 CounterMap::iterator p = CMap.find(type);
125     if (p != CMap.end()) {
126     int *counter = p->second;
127     (*counter)++;
128 kusanagi 2.2 oss.str("");
129 kusanagi 1.7 oss << " Counter." << type->GetName() << " = " << (*counter);
130 kusanagi 2.7 logger->info(oss.str().c_str());
131 kusanagi 1.1 } else {
132 kusanagi 2.5 oss.str("");
133     oss << "\n No counter of type " << type->GetName().c_str();
134     throw NotExistingCounterException(oss.str().c_str());
135 kusanagi 1.1 }
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 kusanagi 2.2 int EventCounter::Get(PacketType const * type) const throw (NotExistingCounterException){
147 kusanagi 1.1 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 kusanagi 2.2 throw NotExistingCounterException(type->GetName().c_str());
153 kusanagi 1.1 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 kusanagi 2.2 int EventCounter::Next(PacketType const * type) const throw (NotExistingCounterException){
164 kusanagi 1.1 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 kusanagi 2.2 throw NotExistingCounterException(type->GetName().c_str());
170 kusanagi 1.1 return -1;
171     }
172     }
173    
174     /**
175     * Get the all the counters
176 kusanagi 1.7 * @retval 0 if there was no event of this type.
177 kusanagi 1.1 */
178     void EventCounter::PrintCounters() const {
179     for(CounterMap::const_iterator p = CMap.begin(); p != CMap.end(); p++) {
180 kusanagi 2.2 oss.str("");
181     oss << " Counter." << (p->first)->GetName() << " \t \t " << (*p->second);
182 kusanagi 2.7 logger->info(oss.str().c_str());
183 kusanagi 1.1 }
184     }

  ViewVC Help
Powered by ViewVC 1.1.23