ATLAS Offline Software
HepMcParticleLinkCnv_p3.cxx
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // Framework includes
8 #include "GaudiKernel/MsgStream.h"
9 #include "GaudiKernel/ThreadLocalContext.h"
11 
13 
14 
16  HepMcParticleLink* transObj,
17  MsgStream &/*msg*/ ) const
18 {
20 
21  if (persObj->m_mcEvtIndex == 0) {
23  }
24 
25  transObj->setExtendedBarCode
27  persObj->m_mcEvtIndex,
28  flag) );
29 
31 }
32 
34  HepMcParticleLink_p3* persObj,
35  MsgStream &msg ) const
36 {
37  // In the case that the standard production workflow is being used
38  // then the first event in the McEventCollection is the only one
39  // where the eventIndex could exceed the maximum value of unsigned
40  // short. In this case we can work around the issue by using an
41  // m_mcEvtIndex of zero as a special case, in which m_mcEvtIndex
42  // should be interpreted as the position in the McEventCollection
43  // rather than the value of GenEvent::event_number().
44  const EventContext& ctx = Gaudi::Hive::currentContext();
45  const IProxyDict* proxy = Atlas::getExtendedEventContext(ctx).proxy();
46  unsigned short index{0};
47  const HepMcParticleLink::index_type position =
49  proxy).at(0);
50  if (position!=0) {
51  index = transObj->eventIndex();
52  if(transObj->eventIndex()!=static_cast<HepMcParticleLink::index_type>(index)) {
53  msg << MSG::WARNING << "Attempting to persistify an eventIndex larger than max unsigned short!" << endmsg;
54  }
55  }
56  persObj->m_mcEvtIndex = index;
57  persObj->m_id = transObj->id();
58  persObj->m_truthSupp = transObj->getTruthSuppressionTypeAsChar();
59 }
60 
HepMcParticleLinkCnv_p3.h
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
HepMcParticleLinkCnv_p3::persToTrans
virtual void persToTrans(const HepMcParticleLink_p3 *persObj, HepMcParticleLink *transObj, MsgStream &msg) const override
Method creating the transient representation of HepMcParticleLink from its persistent representation ...
Definition: HepMcParticleLinkCnv_p3.cxx:15
index
Definition: index.py:1
ExtendedEventContext.h
IProxyDict
A proxy dictionary.
Definition: AthenaKernel/AthenaKernel/IProxyDict.h:47
Atlas::getExtendedEventContext
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
Definition: ExtendedEventContext.cxx:32
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
master.flag
bool flag
Definition: master.py:29
HepMcParticleLinkCnv_p3::transToPers
virtual void transToPers(const HepMcParticleLink *transObj, HepMcParticleLink_p3 *persObj, MsgStream &msg) const override
Method creating the persistent representation HepMcParticleLink_p3 from its transient representation ...
Definition: HepMcParticleLinkCnv_p3.cxx:33
DeMoScan.index
string index
Definition: DeMoScan.py:364
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7