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

Annotation of /yoda/event/EventCounter.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (hide annotations) (download)
Tue Sep 21 20:23:37 2004 UTC (20 years, 2 months ago) by kusanagi
Branch: MAIN
Changes since 1.6: +34 -18 lines
Commit toward log4cxx plus new packets types

1 kusanagi 1.1 /** @file
2 kusanagi 1.2 * $Source: /home/cvsmanager/yoda/event/EventCounter.cpp,v $
3 kusanagi 1.7 * $Id: EventCounter.cpp,v 1.6 2004/08/19 15:24:10 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 1.5 CalibTrkBoth(0),
31 kusanagi 1.4 Calib_Trk1(0),
32     Calib_Trk2(0),
33     Calib_Trd(0),
34     Calib_Tof(0),
35     Calib_S4(0),
36 kusanagi 1.5 Calib_CalPed(0),
37     Calib_Ac(0),
38 kusanagi 1.4 Run_Header(0),
39     Run_Trailer(0),
40 kusanagi 1.5 CalibHeader(0),
41     CalibTrailer(0),
42     InitHeader(0),
43     InitTrailer(0),
44     EventTrk(0),
45     TestTrk(0),
46 kusanagi 1.7 TestTof(0),
47 kusanagi 1.4 Log(0),
48     VarDump(0),
49     ArrDump(0),
50     TabDump(0),
51     Tmtc(0),
52     Mcmd(0),
53 kusanagi 1.5 ForcedFECmd(0),
54     AcInit(0),
55     CalInit(0),
56     TrkInit(0),
57     TofInit(0),
58     TrgInit(0),
59 kusanagi 1.7 CalAlarm(0),
60     AcAlarm(0),
61     TrkAlarm(0),
62     TrgAlarm(0),
63     TofAlarm(0),
64 kusanagi 1.1 RunNumber(run) {
65 kusanagi 1.5 CMap.insert(CounterMap::value_type(PacketType::Pscu, &Pscu));
66     CMap.insert(CounterMap::value_type(PacketType::PhysEndRun, &PhysEndRun));
67     CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse2, &CalibCalPulse1));
68     CMap.insert(CounterMap::value_type(PacketType::CalibCalPulse2, &CalibCalPulse2));
69     CMap.insert(CounterMap::value_type(PacketType::Physics, &Physics));
70     CMap.insert(CounterMap::value_type(PacketType::CalibTrkBoth, &CalibTrkBoth));
71     CMap.insert(CounterMap::value_type(PacketType::CalibTrk1, &Calib_Trk1));
72     CMap.insert(CounterMap::value_type(PacketType::CalibTrk2, &Calib_Trk2));
73     CMap.insert(CounterMap::value_type(PacketType::CalibTrd, &Calib_Trd));
74     CMap.insert(CounterMap::value_type(PacketType::CalibTof, &Calib_Tof));
75     CMap.insert(CounterMap::value_type(PacketType::CalibS4, &Calib_S4));
76     CMap.insert(CounterMap::value_type(PacketType::CalibCalPed, &Calib_CalPed));
77     CMap.insert(CounterMap::value_type(PacketType::CalibAc, &Calib_Ac));
78     CMap.insert(CounterMap::value_type(PacketType::RunHeader, &Run_Header));
79     CMap.insert(CounterMap::value_type(PacketType::RunTrailer, &Run_Trailer));
80     CMap.insert(CounterMap::value_type(PacketType::CalibHeader, &CalibHeader));
81     CMap.insert(CounterMap::value_type(PacketType::CalibTrailer, &CalibTrailer));
82     CMap.insert(CounterMap::value_type(PacketType::InitHeader, &InitHeader));
83     CMap.insert(CounterMap::value_type(PacketType::InitTrailer, &InitTrailer));
84     CMap.insert(CounterMap::value_type(PacketType::EventTrk, &EventTrk));
85     CMap.insert(CounterMap::value_type(PacketType::TestTrk, &TestTrk));
86 kusanagi 1.7 CMap.insert(CounterMap::value_type(PacketType::TestTof, &TestTof));
87 kusanagi 1.5 CMap.insert(CounterMap::value_type(PacketType::Log, &Log));
88     CMap.insert(CounterMap::value_type(PacketType::VarDump, &VarDump));
89     CMap.insert(CounterMap::value_type(PacketType::ArrDump, &ArrDump));
90     CMap.insert(CounterMap::value_type(PacketType::TabDump, &TabDump));
91     CMap.insert(CounterMap::value_type(PacketType::Tmtc, &Tmtc));
92     CMap.insert(CounterMap::value_type(PacketType::Mcmd, &Mcmd));
93     CMap.insert(CounterMap::value_type(PacketType::ForcedFECmd, &ForcedFECmd));
94     CMap.insert(CounterMap::value_type(PacketType::AcInit, &AcInit));
95     CMap.insert(CounterMap::value_type(PacketType::CalInit, &CalInit));
96     CMap.insert(CounterMap::value_type(PacketType::TrkInit, &TrkInit));
97     CMap.insert(CounterMap::value_type(PacketType::TofInit, &TofInit));
98     CMap.insert(CounterMap::value_type(PacketType::TrgInit, &TrgInit));
99 kusanagi 1.7 CMap.insert(CounterMap::value_type(PacketType::CalAlarm, &CalAlarm));
100     CMap.insert(CounterMap::value_type(PacketType::AcAlarm, &AcAlarm));
101     CMap.insert(CounterMap::value_type(PacketType::TrkAlarm, &TrkAlarm));
102     CMap.insert(CounterMap::value_type(PacketType::TrgAlarm, &TrgAlarm));
103     CMap.insert(CounterMap::value_type(PacketType::TofAlarm, &TofAlarm));
104 kusanagi 1.1 }
105    
106     /**
107     * Increment the event counter for a certain packet.
108     * @param type Event type to be incremented.
109     */
110     void EventCounter::Increment(PacketType const * type) {
111     CounterMap::iterator p = CMap.find(type);
112     if (p != CMap.end()) {
113     int *counter = p->second;
114     (*counter)++;
115 kusanagi 1.7 oss.flush();
116     oss << " Counter." << type->GetName() << " = " << (*counter);
117     logger->debug(oss.str().c_str());
118 kusanagi 1.1 } else {
119 kusanagi 1.7 oss.flush();
120     oss << " No counter for packet type " << type->GetName();
121     logger->warn(oss.str().c_str());
122 kusanagi 1.1 }
123     }
124    
125     /**
126     * Get the counter corresponding to a certain packet type.
127     * @param type Event type to be incremented.
128     * @return The counter of that packet type. For the current event type,
129     * this is the actual event number. For all other types, this is the event
130     * number of the last read event of that type.
131     * @retval -1 if there was no event of this type.
132     */
133     int EventCounter::Get(PacketType const * type) const {
134     const CounterMap::const_iterator p = CMap.find(type);
135     if (p != CMap.end()) {
136     const int *counter = p->second;
137     return *counter;
138     } else {
139 kusanagi 1.7 oss.flush();
140     oss << " No counter for packet type " << type->GetName();
141     logger->warn(oss.str().c_str());
142 kusanagi 1.1 return -1;
143     }
144     }
145    
146     /**
147     * Get the counter of the next event corresponding to a certain packet type.
148     * @param type Event type to be incremented.
149     * @return The next counter of that packet type.
150     * @retval -1 if there was no event of this type.
151     */
152     int EventCounter::Next(PacketType const * type) const {
153     const CounterMap::const_iterator p = CMap.find(type);
154     if (p != CMap.end()) {
155     const int *counter = p->second;
156     return *counter + 1;
157     } else {
158 kusanagi 1.7 oss.flush();
159     oss << " No counter for packet type " << type->GetName();
160     logger->warn(oss.str().c_str());
161 kusanagi 1.1 return -1;
162     }
163     }
164    
165     /**
166     * Get the all the counters
167 kusanagi 1.7 * @retval 0 if there was no event of this type.
168 kusanagi 1.1 */
169     void EventCounter::PrintCounters() const {
170     for(CounterMap::const_iterator p = CMap.begin(); p != CMap.end(); p++) {
171 kusanagi 1.7 oss.flush();
172     oss << " Counter." << (p->first)->GetName() << " = " << (*p->second);
173     logger->warn(oss.str().c_str());
174     std::cout << " Counter." << (p->first)->GetName() << "\t = \t" << (*p->second) << "\n";
175 kusanagi 1.1 }
176     }

  ViewVC Help
Powered by ViewVC 1.1.23