24{
25
26 int sourceId =
rod->rod_source_id() & 0xffffff;
28 int bcNumber =
rod->rod_bc_id();
30 int detEventType =
rod->rod_detev_type();
32
33
34 L1CaloRdoRodInfo rdo( sourceId>>16, sourceId&0xffff, runNumber, bcNumber, triggerType, detEventType, version );
35
36
37 rdo.setLvl1Id(
rod->rod_lvl1_id() );
38 rdo.setSize(
rod->rod_ndata() );
39
40
42 rod->rod_status(status);
44 rdo.setStatus1( stat );
46 rdo.setStatus2( stat );
47
48
49 bool hasModuleStatus = true;
50 if ( (sourceId>>16) > 0x74 )
51 hasModuleStatus = false;
52 if ( (sourceId>>16) == 0x73 )
53 hasModuleStatus = false;
54
55 if ( hasModuleStatus )
56 {
58 rod->rod_data( it_data );
60 ++it_data;
61 for ( uint32_t i = 1;
i < ndata; ++
i, ++it_data ) {
62 if ( ((*it_data)>>28) == 0xd )
63 {
64 int idat = (*it_data)&0xfff;
66 int modStat = rdo.getModuleStatus( module );
67 rdo.setModuleStatus( module, modStat | (idat&0xff) );
68 }
69 if ( ((*it_data)>>28) == 0xf )
70 {
71 int idat = (*it_data)&0x1ff;
73 int modStat = rdo.getModuleStatus( module );
74 rdo.setModuleStatus( module, modStat | (idat&0xff) );
75 }
76 }
77 }
78
79 dat.push_back( std::move(rdo) );
80}