BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
HltInf.cxx
Go to the documentation of this file.
1#include "HltEvent/HltInf.h"
2#include "Identifier/HltID.h"
3#include <iostream>
4
5HltInf::HltInf( const unsigned int type, const unsigned int alg, const unsigned int cri,
6 const unsigned int ver, const float etot )
7 : DstHltInf( type, alg, cri, ver, etot )
8 , m_mdcData( 0 )
9 , m_tofData( 0 )
10 , m_emcData( 0 )
11 , m_mucData( 0 )
12 , m_conData( 0 ) {}
13
15 : DstHltInf()
16 , m_mdcData( 0 )
17 , m_tofData( 0 )
18 , m_emcData( 0 )
19 , m_mucData( 0 )
20 , m_conData( 0 ) {}
21
23
25 : DstHltInf( aHlt )
26 , m_mdcData( 0 )
27 , m_tofData( 0 )
28 , m_emcData( 0 )
29 , m_mucData( 0 )
30 , m_conData( 0 ) {}
31
34 return *this;
35}
36
37bool HltInf::setData( const Identifier& id, uint32_t data ) {
38
39 vector<uint32_t>::iterator iter;
40 uint32_t size = 0;
41
42 if ( HltID::is_mdc_inf( id ) )
43 {
44 iter = m_mdcData.begin();
45 size = m_mdcData.size();
46 }
47 else if ( HltID::is_tof_inf( id ) )
48 {
49 iter = m_tofData.begin();
50 size = m_tofData.size();
51 }
52 else if ( HltID::is_emc_inf( id ) )
53 {
54 iter = m_emcData.begin();
55 size = m_emcData.size();
56 }
57 else if ( HltID::is_muc_inf( id ) )
58 {
59 iter = m_mucData.begin();
60 size = m_mucData.size();
61 }
62 else if ( HltID::is_con_inf( id ) )
63 {
64 iter = m_conData.begin();
65 size = m_conData.size();
66 }
67 else return false;
68
69 uint32_t sub = HltID::id_sub( id );
70
71 if ( sub < size )
72 {
73 ( *( iter + sub ) ) = data;
74 return true;
75 }
76 else { return false; }
77}
78
79vector<uint32_t>& HltInf::getDataVec( const Identifier& id ) {
80 if ( HltID::is_mdc_inf( id ) ) return m_mdcData;
81 else if ( HltID::is_tof_inf( id ) ) return m_tofData;
82 else if ( HltID::is_emc_inf( id ) ) return m_emcData;
83 else if ( HltID::is_muc_inf( id ) ) return m_mucData;
84 else if ( HltID::is_con_inf( id ) ) return m_conData;
85 else return m_conData; // default: return condition number
86}
87
88vector<uint32_t>& HltInf::getDataVec( const uint32_t part ) {
89 return getDataVec( HltID::data_type_id( part ) );
90}
91
92bool HltInf::getData( const Identifier& id, uint32_t* address ) {
93
94 vector<uint32_t>::iterator iter;
95 uint32_t size = 0;
96
97 if ( HltID::is_mdc_inf( id ) )
98 {
99 iter = m_mdcData.begin();
100 size = m_mdcData.size();
101 }
102 else if ( HltID::is_tof_inf( id ) )
103 {
104 iter = m_tofData.begin();
105 size = m_tofData.size();
106 }
107 else if ( HltID::is_emc_inf( id ) )
108 {
109 iter = m_emcData.begin();
110 size = m_emcData.size();
111 }
112 else if ( HltID::is_muc_inf( id ) )
113 {
114 iter = m_mucData.begin();
115 size = m_mucData.size();
116 }
117 else if ( HltID::is_con_inf( id ) )
118 {
119 iter = m_conData.begin();
120 size = m_conData.size();
121 }
122 else return false;
123
124 uint32_t sub = HltID::id_sub( id );
125
126 if ( sub < size )
127 {
128 *address = *( iter + sub );
129 return true;
130 }
131 else { return false; }
132}
133
134void HltInf::print() const {
135 std::cout << *this;
136 std::cout << "MDC data:" << dec << m_mdcData.size() << std::endl;
137 for ( uint32_t i = 0; i < m_mdcData.size(); i++ )
138 {
139 std::cout << " #" << i << "# ";
140 std::cout << *( (int*)&m_mdcData[i] ) << "(" << *( (float*)&m_mdcData[i] ) << ")";
141 if ( i == m_mdcData.size() - 1 ) std::cout << std::endl;
142 }
143 std::cout << "TOF data:" << m_tofData.size() << std::endl;
144 for ( uint32_t i = 0; i < m_tofData.size(); i++ )
145 {
146 std::cout << " #" << i << "# ";
147 std::cout << *( (int*)&m_tofData[i] ) << "(" << *( (float*)&m_tofData[i] ) << ")";
148 if ( i == m_tofData.size() - 1 ) std::cout << std::endl;
149 }
150 std::cout << "EMC data:" << m_emcData.size() << std::endl;
151 for ( uint32_t i = 0; i < m_emcData.size(); i++ )
152 {
153 std::cout << " #" << i << "# ";
154 std::cout << *( (int*)&m_emcData[i] ) << "(" << *( (float*)&m_emcData[i] ) << ")";
155 if ( i == m_emcData.size() - 1 ) std::cout << std::endl;
156 }
157 std::cout << "MUC data:" << m_mucData.size() << std::endl;
158 for ( uint32_t i = 0; i < m_mucData.size(); i++ )
159 {
160 std::cout << " #" << i << "# ";
161 std::cout << *( (int*)&m_mucData[i] ) << "(" << *( (float*)&m_mucData[i] ) << ")";
162 if ( i == m_mucData.size() - 1 ) std::cout << std::endl;
163 }
164 std::cout << "CON data:" << m_conData.size() << std::endl;
165 for ( uint32_t i = 0; i < m_conData.size(); i++ )
166 {
167 std::cout << " #" << i << "# ";
168 std::cout << *( (int*)&m_conData[i] );
169 if ( i == m_conData.size() - 1 ) std::cout << std::endl;
170 }
171 return;
172}
173
174ostream& operator<<( ostream& os, const HltInf& aHlt ) {
175 os << "-----HltInf-----:" << endl;
176 os << "EventType: " << hex << aHlt.getEventType() << endl
177 << "AlgProcess: " << aHlt.getAlgProcess() << endl
178 << "CriteriaTab:" << aHlt.getCriteriaTable() << endl
179 << "EFVersion: " << aHlt.getVersion() << endl
180 << "TotalEnergy:" << aHlt.getTotalEnergy() << std::dec << endl;
181 return os;
182}
TTree * data
Double_t etot
EvtStreamInputIterator< typename Generator::result_type > iter(Generator gen, int N=0)
ostream & operator<<(ostream &os, const HltInf &aHlt)
Definition HltInf.cxx:174
DstHltInf(const unsigned int type, const unsigned int alg, const unsigned int cri, const unsigned int ver, const float etot)
Definition DstHltInf.cxx:11
DstHltInf & operator=(const DstHltInf &)
Definition DstHltInf.cxx:45
static bool is_tof_inf(const Identifier &id)
Definition HltID.cxx:114
static bool is_con_inf(const Identifier &id)
Definition HltID.cxx:129
static Identifier data_type_id(const unsigned int detector, const unsigned int id_in_sub=0)
For a single data.
Definition HltID.cxx:155
static bool is_muc_inf(const Identifier &id)
Definition HltID.cxx:124
static bool is_emc_inf(const Identifier &id)
Definition HltID.cxx:119
static bool is_mdc_inf(const Identifier &id)
Definition HltID.cxx:109
static unsigned int id_sub(const Identifier &id)
Definition HltID.cxx:140
virtual bool setData(const Identifier &id, float data)
virtual void print() const
Definition HltInf.cxx:134
~HltInf()
Definition HltInf.cxx:22
HltInf(const unsigned int type, const unsigned int alg, const unsigned int cri, const unsigned int ver, const float etot)
Definition HltInf.cxx:5
virtual bool getData(const Identifier &, uint32_t *)
Definition HltInf.cxx:92
HltInf & operator=(const DstHltInf &aHlt)
Definition HltInf.cxx:32
std::vector< uint32_t > & getDataVec(const Identifier &)
Definition HltInf.cxx:79
HltInf()
Definition HltInf.cxx:14