23 #include "eformat/FullEventFragment.h"
38 #include "boost/io/ios_state.hpp"
58 if (
Value <= 0.0)
return;
76 boost::io::ios_base_all_saver coutsave(std::cout);
77 std::cout <<
s <<
" " << std::fixed;
80 std::cout <<
" " << std::setw(4) << std::setprecision(1) <<
Min
81 <<
" - " << std::setw(4) << std::setprecision(1) <<
Max;
83 std::cout <<
" ---- - ----";
86 std::cout <<
" " << std::setw(4) << std::setprecision(1) <<
Min
87 <<
" - " << std::setw(4) << std::setprecision(1) <<
Max
88 <<
" mean= " << std::setw(6) << std::setprecision(3) <<
getMean()
89 <<
" rms= " << std::setw(5) << std::setprecision(3) <<
getChi2();
91 std::cout <<
" ---- - ---- mean= ------ rms= -----";
93 std::cout << std::endl;
104 std::cout <<
s <<
" ";
105 std::map<int, int>::const_iterator
min =
checkOut.begin();
106 std::map<int, int>::const_iterator
max =
checkOut.end();
112 std::cout <<
" " <<
min->first;
115 std::cout <<
" " <<
min->first <<
" - " <<
max->first;
118 std::cout <<
" " <<
min->first <<
"(" <<
min->second <<
")";
122 std::cout << std::endl;
192 return StatusCode::SUCCESS;
197 const EventContext& ctx = Gaudi::Hive::currentContext();
200 static std::atomic<bool>
first=
true;
201 static std::atomic<bool> firstORsecond=
true;
203 if ( firstORsecond ) {
204 const eformat::FullEventFragment<const uint32_t*> *
event =
m_robSvc->getEvent();
211 uint32_t L1type =
event->lvl1_trigger_type();
213 for (
size_t irob=0; irob<nrob; ++irob) {
215 event->child(fprob, irob);
220 ROBfrag.
ROBid = robf.source_id();
221 ROBfrag.
RODid = robf.rod_source_id();
224 unsigned int source_id = robf.rod_source_id();
225 eformat::helper::SourceIdentifier
id = eformat::helper::SourceIdentifier(source_id);
226 unsigned int subdet_id =
id.subdetector_id();
229 unsigned int max_allowed_size = robf.rod_fragment_size_word();
230 unsigned int delta = robf.rod_header_size_word() + robf.rod_trailer_size_word();
231 if (max_allowed_size > delta) {
232 max_allowed_size -= delta;
234 max_allowed_size = 0;
237 unsigned int size = robf.rod_ndata();
238 if (
size > max_allowed_size) {
240 if (
size - robf.rod_trailer_size_word() < max_allowed_size) {
241 ATH_MSG_ERROR(
"Problem with data size - assuming that trailer size is " << robf.rod_trailer_size_word()-(
size-max_allowed_size)
242 <<
" words instead of " << robf.rod_trailer_size_word() <<
" and data size is " <<
size <<
" words " );
243 max_allowed_size =
size;
244 }
else if (
size - robf.rod_trailer_size_word() == max_allowed_size) {
245 ATH_MSG_ERROR(
"Problem with data size - assuming that trailer is absent "
246 <<
" ROD size " << robf.rod_fragment_size_word()
247 <<
" header size " << robf.rod_header_size_word()
248 <<
" data size " <<
size );
249 max_allowed_size =
size;
251 max_allowed_size += robf.rod_trailer_size_word();
252 size = max_allowed_size;
253 ATH_MSG_ERROR(
"Problem with data size - assuming " <<
size <<
" words and no trailer at all" );
262 switch ( subdet_id ) {
277 if ((ROBfrag.
RODid & 0xFF0000) == 0x500000) {
289 std::cout <<
"Fragments found in event " <<
event->global_id();
290 else if (firstORsecond)
291 std::cout <<
"Fragments found in first event";
293 std::cout <<
"Fragments found in second event";
294 std::cout <<
" L1 trigger type " << L1type <<
" (0x"<< std::hex << L1type << std::dec <<
")"
295 <<
" calib mode=" << dqStatus->
calibMode() << std::endl
296 <<
" ROB ID ROD ID Frag IDs" << std::endl;
297 for (
unsigned int i = 0;
i < nrob; ++
i) {
299 for (
unsigned int j = 0; j <
m_fragMap[
i].fragID.size(); ++j)
301 std::cout << std::dec << std::endl;
310 unsigned int testsum=0;
312 if ( testsum == 0 &&
m_cisPar[3] == 8 ) {
327 const eformat::FullEventFragment<const uint32_t*> *
event =
m_robSvc->getEvent();
339 m_evTime =
event->bc_time_seconds();
348 if (m_trigType < 1 || m_trigType > 0x80 ) {
362 std::vector<uint32_t> robid;
365 std::vector<const ROBDataProviderSvc::ROBF*> robf;
369 m_runNo = robFrag->rod_run_no();
384 bool first_header=
true;
385 for (
size_t irob=0; irob<
event->nchildren(); ++irob) {
387 event->child(fprob, irob);
391 ROBfrag.
L1type =
event->lvl1_trigger_type();
392 ROBfrag.
ROBid = robf.source_id();
393 ROBfrag.
RODid = robf.rod_source_id();
395 if ((ROBfrag.
RODid & 0xFF0000) == 0x500000) {
401 unsigned int size = robf.rod_ndata();
409 std::cout <<
"Beam Fragments found in event " <<
m_evtNo <<
" ( " <<
m_evtNr <<
" ) L1 trigger type "
410 << ROBfrag.
L1type <<
" (0x"<< std::hex << ROBfrag.
L1type << std::dec <<
")" << std::endl
411 <<
" ROB ID ROD ID Frag IDs" << std::endl;
413 std::cout << std::hex <<
" 0x" << ROBfrag.
ROBid <<
" 0x" << ROBfrag.
RODid;
414 for (
unsigned int j = 0; j < ROBfrag.
fragID.size(); ++j)
415 std::cout << std::hex <<
" 0x" << ROBfrag.
fragID[j];
416 std::cout << std::dec << std::endl;
427 <<
" event header time " <<
event->bc_time_seconds()
449 case 1:
ind = 0;
break;
450 case 2:
ind = 1;
break;
451 case 4:
ind = 2;
break;
452 case 8:
ind = 3;
break;
453 case 16:
ind = 3;
break;
454 default:
ind = 4;
break;
458 unsigned int lvl1_trigger_type =
event->lvl1_trigger_type();
474 ATH_MSG_ERROR(
"There is a problem opening the LASER object" );
495 return StatusCode::SUCCESS;
502 std::cout << std::endl <<
"Run number " <<
m_runNo << std::endl;
503 std::cout <<
"Min event number " <<
m_evtMin << std::endl;
504 std::cout <<
"Max event number " <<
m_evtMax << std::endl;
505 std::cout <<
"First event " <<
m_evtBegin << std::endl;
506 std::cout <<
"Last event " <<
m_evtNo << std::endl;
514 char format[30] =
"%a, %d %b %Y %H:%M:%S %Z (%z)";
518 ATH_MSG_WARNING(
"no event header available, taking time from cispar" );
526 std::cout <<
"-3600=" << tim;
527 strftime(ctim, 50,
format, localtime_r(&tim, &buf) );
528 std::cout <<
" " << ctim;
529 strftime(ctim, 50,
format, gmtime_r(&tim, &buf) );
530 std::cout <<
" " << ctim;
531 std::cout << std::endl;
533 std::cout <<
"End time " <<
m_evTime;
535 std::cout <<
"-3600=" << tim;
536 strftime(ctim, 50,
format, localtime_r(&tim, &buf) );
537 std::cout <<
" " << ctim;
538 strftime(ctim, 50,
format, gmtime_r(&tim, &buf) );
539 std::cout <<
" " << ctim;
540 std::cout << std::endl;
546 strftime(ctim, 50,
format, localtime_r(&tim, &buf) );
547 std::cout <<
" " << ctim;
548 strftime(ctim, 50,
format, gmtime_r(&tim, &buf) );
549 std::cout <<
" " << ctim;
550 std::cout << std::endl;
553 strftime(ctim, 50,
format, localtime_r(&tim, &buf) );
554 std::cout <<
" " << ctim;
555 strftime(ctim, 50,
format, gmtime_r(&tim, &buf) );
556 std::cout <<
" " << ctim;
557 std::cout << std::endl;
560 std::cout << std::endl <<
"Ngains " << ( (
m_calibMode == 1) ? 2 : 1 ) << std::endl;
562 bool cisdiff =
false;
563 for (
int i = 0;
i < 16; ++
i) {
569 std::cout <<
"CISpar first ";
570 for (
int i = 0;
i < 16; ++
i)
572 std::cout << std::endl <<
"CISpar last ";
573 for (
int i = 0;
i < 16; ++
i)
575 std::cout << std::endl;
577 std::cout <<
"CISpar begin ";
578 for (
int i = 0;
i < 16; ++
i)
583 std::cout << std::endl <<
"CISpar end ";
584 for (
int i = 0;
i < 16; ++
i)
589 std::cout << std::endl << std::endl;
596 for (
int i = 0;
i < 128; ++
i) {
599 for (
int i = 128;
i < 256; ++
i) {
602 nbad -= nlas+nped+ncis;
606 std::cout <<
"Spills " <<
m_nSpill << std::endl;
607 std::cout <<
"Events " <<
m_evtNr << std::endl;
608 std::cout <<
"Phy " << nphy << std::endl;
609 std::cout <<
"Las " << nlas << std::endl;
610 std::cout <<
"Ped " << nped << std::endl;
611 std::cout <<
"CIS " << ncis << std::endl;
612 std::cout <<
"Bad " << nbad << std::endl;
613 std::cout << std::endl << std::endl;
615 std::cout <<
"Spills " <<
m_nSpill << std::endl;
616 std::cout <<
"Events " <<
m_evtNr << std::endl;
617 std::cout <<
"Phy " <<
m_nEvt[0] << std::endl;
618 std::cout <<
"Las " <<
m_nEvt[1] << std::endl;
619 std::cout <<
"Ped " <<
m_nEvt[2] << std::endl;
620 std::cout <<
"CIS " <<
m_nEvt[3] << std::endl;
621 std::cout <<
"Bad " <<
m_nEvt[4] << std::endl;
622 std::cout << std::endl << std::endl;
625 std::cout <<
"Number of events per trigger:" << std::endl;
626 for (
int i = 0;
i < 256; ++
i) {
628 std::cout <<
" Level1 trigger type: " <<
i <<
" (0x"<< std::hex <<
i << std::dec <<
") => " <<
m_nEventsPerTrigger[
i] << std::endl;
633 std::cout <<
" Level1 trigger type: > 255(0xFF) => " <<
m_nEventsPerTrigger[256] << std::endl;
636 std::cout << std::endl << std::endl;
638 std::cout <<
"LasFrag begin" << std::endl;
652 std::cout <<
"GlobalStatus ";
653 for (
int i = 0;
i < 9;
i++) {
654 if (
m_check0 & bit) std::cout <<
" 0";
655 else if (
m_check1 & bit) std::cout <<
" 1";
656 else std::cout <<
" 2";
667 std::cout << std::endl <<
"LasError " <<
m_Error;
672 std::cout << std::endl <<
"LasAlarm " <<
m_Alarm;
677 std::cout << std::endl <<
"LasShOpen " <<
m_ShOpen;
682 std::cout << std::endl <<
"LasShClosed " <<
m_ShClose;
683 std::cout << std::endl <<
"LasFrag end" << std::endl << std::endl;
685 std::cout <<
"CISparFrag begin" << std::endl;
695 std::cout <<
"CISparFrag end" << std::endl << std::endl;
699 return StatusCode::SUCCESS;
704 unsigned int offset = 0, sizeOverhead = 2;
705 bool v3Format = ( *(
data) == 0xff1234ff );
706 v3Format |= ( *(
data) == 0x00123400 );
714 if ( frag->
size < sizeOverhead ) {
718 int n = frag->
size - sizeOverhead - 1;
719 for (;
n > -1; --
n) {
720 if ( fdata[
n]!=0 && fdata[
n]!=0xffffffff)
break;
723 ROBfrag.
fragID.push_back(frag->
id + 0xff000000);