94 {
95
96
97#ifndef OnlineMode
98
99 m_re->reset();
100
101 try
102 {
104 const uint32_t* ef = 0;
105 do {
106 f.assign( m_reader->nextEvent() );
108 {
109 std::cerr << "Found invalid event (traceback):" << std::endl;
110 std::exit( 1 );
111 }
112
113
114
115
116
117
118
119 f.event_filter_info( ef );
120 if ( !ef )
121 {
122
123 exit( 1 );
124 }
125 else
126 {
127
128
129 if ( !m_keepRdm && ( ( *ef ) >> 31 ) != 0 ) { continue; }
130 }
131 break;
132 } while ( true );
133
134 m_re->setRunNo(
f.run_no() );
135 m_re->setEventNo(
f.global_id() );
136 m_re->setTime(
f.time() );
137 m_re->addReHltRaw( (uint32_t*)ef, 4 );
138
139
140 uint32_t hv_status = 0;
141 int nrobs = 0;
143 for ( int sdi = 0; sdi < nsds; ++sdi )
144 {
145 eformat::SubDetectorFragment<const uint32_t*> sd( m_sds[sdi] );
146
147 if ( sd.nspecific() != 0 )
148 {
149 const uint32_t* specific_header;
150 sd.specific_header( specific_header );
151 uint32_t source_id_number = sd.source_id();
152 source_id_number <<= 8;
153 source_id_number >>= 24;
154 switch ( source_id_number )
155 {
156 case 161: hv_status |= ( ( 8 | ( ( *specific_header ) & 0x7 ) ) << 8 ); break;
157 case 162: hv_status |= ( ( 8 | ( ( *specific_header ) & 0x7 ) ) << 4 ); break;
158 case 164: hv_status |= ( 8 | ( ( *specific_header ) & 0x7 ) ); break;
159 default: break;
160 }
161 }
162
164 }
165
166 m_re->setFlag1( hv_status );
167
168
169 for ( int robi = 0; robi < nrobs; robi++ )
170 {
171 eformat::ROBFragment<uint32_t*> rob( (uint32_t*)m_robs[robi] );
172
173 uint32_t* dataptr = NULL;
174 rob.rod_data( dataptr );
175
176
177 uint32_t source_id_number = rob.rod_source_id();
178
179 source_id_number <<= 8;
180 source_id_number >>= 24;
181
182
183 if ( ( rob.rod_detev_type() & 0x2 ) != 0 )
184 {
185 if ( source_id_number == 165 )
186 {
187 m_re->addReEtsDigi( dataptr, rob.rod_ndata() );
188 }
189 continue;
190 }
191
192
193 switch ( source_id_number )
194 {
195 case 161: m_re->addReMdcDigi( dataptr, rob.rod_ndata() ); break;
196 case 163: m_re->addReEmcDigi( dataptr, rob.rod_ndata() ); break;
197 case 162: m_re->addReTofDigi( dataptr, rob.rod_ndata() ); break;
198 case 167:
199 m_re->addReEtfDigi( dataptr, rob.rod_ndata() );
200 break;
201 case 164: m_re->addReMucDigi( dataptr, rob.rod_ndata() ); break;
202 case 165:
203
204
205
206
207 m_re->addReTrigGTD( dataptr, rob.rod_ndata() );
208 break;
209 case 166: m_re->addReZddDigi( dataptr, rob.rod_ndata() ); break;
210 case 124:
211 m_re->addReHltRaw( dataptr, rob.rod_ndata() );
212 break;
213 case 241:
214 m_re->addMcParticle( dataptr, rob.rod_ndata() );
215 break;
216 default:
217
218 break;
219 }
220 }
221 } catch ( RawFileException& ex )
222 {
224 if ( m_reader->stat() & 4 )
225 {
226 std::cerr << std::endl << "reading ifstream error !!!" << std::endl;
227 exit( 1 );
228 }
229 delete m_re;
230 m_re = NULL;
231 } catch ( eformat::Issue& ex )
232 {
233 std::cerr << std::endl <<
"Uncaught eformat issue: " << ex.
what() << std::endl;
234 } catch ( ers::Issue& ex )
235 {
236 std::cerr << std::endl <<
"Uncaught ERS issue: " << ex.
what() << std::endl;
237 } catch ( std::exception& ex )
238 {
239 std::cerr << std::endl << "Uncaught std exception: " << ex.what() << std::endl;
240 } catch ( ... )
241 { std::cerr << std::endl << "Uncaught unknown exception" << std::endl; }
242#endif
243
244 return m_re;
245}
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
eformat::FullEventFragment< const uint32_t * > RawEvent
const char * what() const
Human description message.