46 MsgStream log(
msgSvc(), name() );
47 log << MSG::DEBUG <<
"in execute()" << endmsg;
49 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(),
"/Event/EventHeader" );
52 log << MSG::FATAL <<
"Could not find Event Header" << endmsg;
53 return StatusCode::FAILURE;
56 int eventId = eventHeader->eventNumber();
57 int runId = eventHeader->runNumber();
58 log << MSG::INFO <<
"retrieved event: "
59 <<
"Event Number " << eventId <<
" run: " << runId << endmsg;
65 StatusCode sc = m_HltStoreSvc->get(
"EventType", efResult );
68 log << MSG::ERROR <<
"Could not find EFResult (EventType)" << endmsg;
75 log << MSG::DEBUG <<
"Unvalid EFResult(AnswerIndex=-1)" << endmsg;
80 log << MSG::INFO <<
"The answer is " << answer << endmsg;
83 if ( answer ==
"Junk" )
type = 1 << 0;
84 else if ( answer ==
"GJunk" )
type = ( 1 << 1 );
85 else if ( answer ==
"Beamgas" )
type = 1 << 2;
86 else if ( answer ==
"GBeamgas" )
type = ( 1 << 3 );
87 else if ( answer ==
"Cosmic" )
type = 1 << 4;
88 else if ( answer ==
"GCosmic" )
type = ( 1 << 5 );
89 else if ( answer ==
"EBhabha" )
type = 1 << 6;
90 else if ( answer ==
"GEBhabha" )
type = ( 1 << 7 );
91 else if ( answer ==
"BBhabha" )
type = 1 << 8;
92 else if ( answer ==
"GBBhabha" )
type = ( 1 << 9 );
93 else if ( answer ==
"Dimuon" )
type = 1 << 10;
94 else if ( answer ==
"GDimuon" )
type = ( 1 << 11 );
95 else if ( answer ==
"Diphoton" )
type = 1 << 12;
96 else if ( answer ==
"GDiphoton" )
type = ( 1 << 13 );
97 else if ( answer ==
"Hadron" )
type = 1 << 14;
98 else if ( answer ==
"GHadron" )
type = ( 1 << 15 );
99 else if ( answer ==
"Twophoton" )
type = 1 << 16;
100 else if ( answer ==
"GTwophoton" )
type = ( 1 << 17 );
101 else if ( answer ==
"RandomTrg" )
type = 1 << 31;
102 else if ( answer ==
"Error" )
type = 1 << 30;
103 else if ( answer ==
"Other" )
type = 1 << 29;
106 uint32_t
id = 0x50000000;
109 aEF->push_back( efType );
111 sc = m_HltStoreSvc->get(
"EFResult", efResult );
112 if ( sc.isFailure() )
114 log << MSG::FATAL <<
"Could not find EFResult (EFResult)" << endmsg;
115 return StatusCode::FAILURE;
119 uint32_t alg = efResult->
getEFVec( 0 );
122 uint32_t alg8 = alg & 0xFF;
124 aEF->push_back( efAlg );
126 uint32_t cri = alg >> 8;
129 aEF->push_back( efCri );
133 aEF->push_back( efVer );
138 aEF->push_back( efEtot );
141 int nmdc =
num & 0xFF;
142 int ntof = (
num >> 8 ) & 0xFF;
143 int nemc = (
num >> 16 ) & 0xFF;
144 int nmuc = (
num >> 24 ) & 0xFF;
147 uint32_t ndatap = nmdc + ntof + nemc + nmuc;
150 if ( ndec > 0 ) ndata += ( ndec + 1 );
152 log << MSG::DEBUG <<
"ndata=" << ndata <<
"; nmdc=" << nmdc <<
", ntof=" << ntof
153 <<
", nemc=" << nemc <<
", nmuc=" << nmuc <<
", ndec=" << ndec << endmsg;
155 if ( ( alg & 4 ) && ( !( alg & 2 ) ) )
156 log << MSG::WARNING <<
"sub-algorithms error!" << endmsg;
158 uint32_t* var =
new uint32_t[ndata];
159 if ( ndata == 1 ) { var[0] = 0; }
164 for (
int j = 5; j < 5 + nmdc; j++ )
169 for (
int j = 25; j < 25 + ntof; j++ )
174 for (
int j = 30; j < 30 + nemc; j++ )
179 for (
int j = 52; j < 52 + nmuc; j++ )
188 for (
int j = 54; j < 54 + ndec; ++j )
194 if ( i != ndata ) log << MSG::FATAL <<
"number of datat error!" << endmsg;
200 aEF->push_back( efTag );
202 for (
int i = 1; i < ndata; i++ )
208 aEF->push_back( efVar );
213 uint32_t atype = 0, alg = 0, cri = 0, ver = 0;
216 DataObject* aHltEvent;
217 eventSvc()->findObject(
"/Event/Hlt", aHltEvent );
218 if ( aHltEvent == NULL )
220 log << MSG::INFO <<
"HltEvent has not existed, so register it now!" << endmsg;
223 if ( sc != StatusCode::SUCCESS )
225 log << MSG::FATAL <<
"Could not register Hlt!!!" << endmsg;
226 return ( StatusCode::FAILURE );
229 else { log << MSG::WARNING <<
"HltEvent has existed!" << endmsg; }
231 DataObject* aHltRawEvent;
232 eventSvc()->findObject(
"/Event/Hlt/HltRawCol", aHltRawEvent );
233 if ( aHltRawEvent != NULL )
235 SmartDataPtr<HltRawCol> hltRawCol( eventSvc(),
"/Event/Hlt/HltRawCol" );
236 HltRawCol::iterator
iter = hltRawCol->begin();
237 for ( ;
iter != hltRawCol->end();
iter++ )
246 log << MSG::DEBUG <<
"old type=" << atype <<
", alg=" << alg <<
", criteria=" << cri
247 <<
", version=" << ver <<
", energy=" <<
etot << endmsg;
249 sc = eventSvc()->unregisterObject(
"/Event/Hlt/HltRawCol" );
251 log << MSG::INFO <<
"Old raw collection has been unregistered" << endmsg;
252 if ( sc != StatusCode::SUCCESS )
254 log << MSG::FATAL <<
"Could not unregister HLT raw collection" << endmsg;
255 return ( StatusCode::FAILURE );
261 if ( sc != StatusCode::SUCCESS )
263 log << MSG::FATAL <<
"Still could not register HltRawCol" << endmsg;
264 return StatusCode::FAILURE;
267 SmartDataPtr<HltRawCol> hltRawCol( eventSvc(),
"/Event/Hlt/HltRawCol" );
270 log << MSG::FATAL <<
"Could not find HltRawCol!" << endmsg;
271 return StatusCode::FAILURE;
274 HltRawCol::iterator
iter = hltRawCol->begin();
275 for ( ;
iter != hltRawCol->end();
iter++ )
284 log << MSG::DEBUG <<
" type=" << atype <<
", alg=" << alg <<
", criteria=" << cri
285 <<
", version=" << ver <<
", energy=" <<
etot << endmsg;
287 return StatusCode::SUCCESS;
static Identifier convert(const unsigned int id, const int nmdc=0, const int ntof=0, const int nemc=0, const int nmuc=0)
convert global id to sub-id(Identifier)