4 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
7 #include "eformat/SourceID.h"
8 #include "TrigSteeringEvent/HLTResult.h"
9 #include "GaudiKernel/MsgStream.h"
12 StatusCode HLT::HLTResultByteStreamTool::convert(const ROBF* rob, HLTResult*& result, MsgStream* log){
14 typedef typename ROBF::lower_type RODF;
15 typedef std::vector<RODF*, DF_ALLOCATOR<RODF*> > VRODFragment;
16 //typedef std::vector<RODF*> VRODFragment;
17 const VRODFragment * vROD = & (rob->compounds());
18 EventFormat::Version formatVersion = rob->header().version();
20 typename VRODFragment::const_iterator rod_it = vROD->begin();
21 typename VRODFragment::const_iterator rod_it_end = vROD->end();
22 typedef typename RODF::iterator ROD_iterator;
24 StoreGateSvc* p_StoreGate;
25 StatusCode sc = service("StoreGateSvc", p_StoreGate);
29 << "Unable to get pointer to StoreGate Service!" << endmsg;
31 const DataHandle<EventInfo> thisEvent;
32 sc = p_StoreGate->retrieve(thisEvent);
34 std::vector<unsigned int> l2ResultContent;
35 l2ResultContent.clear();
36 for(; rod_it!=rod_it_end;++rod_it){
37 const RODF* rod = (*rod_it);
40 uint32_t rodId = rod->header().source_id();
42 // Check the versioning.
43 if (formatVersion != EventFormat::DEFAULT_VERSION){
44 (*log) << MSG::ERROR << " Wrong format version in BS : "
45 << formatVersion.full() << endmsg;
48 EventFormat::SourceID helpHLTResultID(EventFormat::TDAQ_LVL2, EventFormat::ROD_TYPE,0);
51 if( rodId == helpHLTResultID.source_id() ){
52 ROD_iterator it = rod->begin() ;
53 ROD_iterator it_end = rod->end() ;
54 for(; it!=it_end;++it)
56 l2ResultContent.push_back(*it);
61 if((rob->header().status()).size()==1 && (rob->header().status())[0]==0){
62 result->setBeenCreated(false);
63 result->deserialize(l2ResultContent);
64 uint32_t l1id = rob->header().specific_part().lvl1_id();
65 result->setl1id(l1id);
66 (*log) << MSG::DEBUG << " ---> Pesa Level 2 result found " << endmsg;
68 result->setBeenCreated(true);
69 uint32_t l1id = rob->header().specific_part().lvl1_id();
70 result->setl1id(l1id);
71 (*log) << MSG::DEBUG << " ---> Dummy Level 2 result found " << endmsg;
74 return StatusCode::SUCCESS;