ATLAS Offline Software
InDetSimDataCollectionCnv_p1.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 #include "InDetSimDataCnv_p1.h"
10 #include "Identifier/Identifier.h"
11 #include "MsgUtil.h"
12 #include "StoreGate/StoreGateSvc.h"
13 
15 {
16  InDetSimDataCnv_p1 simDataCnv;
17  persCont->m_simdata.resize(transCont->size());
18  MSG_DEBUG(log," Preparing " << persCont->m_simdata.size() << "Collections");
19  unsigned int collIndex(0);
20  for (const auto& transSimDataPair : *transCont) {
21  // Add in new collection
22  (persCont->m_simdata[collIndex]).first = transSimDataPair.first.get_identifier32().get_compact();
23  const InDetSimData& simData = transSimDataPair.second;
24  InDetSimData_p1& psimData = persCont->m_simdata[collIndex].second;
25  simDataCnv.transToPers(&simData,&psimData,log);
26  ++collIndex;
27  }
28  MSG_DEBUG(log," *** Writing InDetSimdataCollection");
29 }
30 
32 {
33  InDetSimDataCnv_p1 simDataCnv;
34  if(!m_isInitialized) {
35  if (this->initialize(log) != StatusCode::SUCCESS) {
36  log << MSG::FATAL << "Could not initialize InDetSimDataCollectionCnv_p1 " << endmsg;
37  }
38  }
39  MSG_DEBUG(log," Preparing " << persCont->m_simdata.size() << "Collections");
41  for (const auto& persSimDataPair : persCont->m_simdata) {
42  // Add in new collection
43  const InDetSimData_p1& psimData = persSimDataPair.second;
45  simDataCnv.persToTrans(&psimData,&simData,log);
46  // For 64-bit ids, when reading in the old 32-bit ids, we must
47  // treat pixel channel ids specially before creating a new
48  // 64-bit id
49  Identifier id;
50  if (m_pixId->is_shortened_pixel_id(persSimDataPair.first)) {
51  id = m_pixId->pixel_id_from_shortened(persSimDataPair.first); }
52  else { id = persSimDataPair.first; }
53  transCont->insert( transCont->end(), std :: make_pair( id, simData ) );
54  transCont->insert( transCont->end(), std :: make_pair( Identifier( persSimDataPair.first ), simData ) );
55  }
56  MSG_DEBUG(log," *** Reading InDetSimdataCollection");
57 }
58 
59 
61  // Do not initialize again:
62  m_isInitialized=true;
63 
64  // Get Storegate, ID helpers, and so on
65  ISvcLocator* svcLocator = Gaudi::svcLocator();
66 
67  // get DetectorStore service
69  if (svcLocator->service("DetectorStore", detStore).isFailure()) {
70  log << MSG::FATAL << "DetectorStore service not found !" << endmsg;
71  return StatusCode::FAILURE;
72  }
73 
74  // Get the sct helper from the detector store
75  if (detStore->retrieve(m_pixId, "PixelID").isFailure()) {
76  log << MSG::FATAL << "Could not get PixelID helper !" << endmsg;
77  return StatusCode::FAILURE;
78  }
79 
80  return StatusCode::SUCCESS;
81 }
InDetSimDataCollectionCnv_p1.h
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
InDetSimDataCollection_p1::m_simdata
std::vector< std::pair< Identifier32::value_type, InDetSimData_p1 > > m_simdata
Definition: InDetSimDataCollection_p1.h:26
InDetSimData_p1
Definition: InDetSimData_p1.h:11
SG::CurrentEventStore::store
static IProxyDict * store()
Fetch the current store.
InDetSimDataCollection
Definition: InDetSimDataCollection.h:25
InDetSimDataCollectionCnv_p1::initialize
StatusCode initialize(MsgStream &log)
Definition: InDetSimDataCollectionCnv_p1.cxx:60
PixelID::is_shortened_pixel_id
bool is_shortened_pixel_id(Identifier32::value_type val) const
Test if this is a valid shortened pixel channel id.
Definition: PixelID.h:516
InDetSimDataCollectionCnv_p1::transToPers
virtual void transToPers(const InDetSimDataCollection *transCont, InDetSimDataCollection_p1 *persCont, MsgStream &log)
Definition: InDetSimDataCollectionCnv_p1.cxx:14
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
InDetSimDataCollectionCnv_p1::m_pixId
const PixelID * m_pixId
Definition: InDetSimDataCollectionCnv_p1.h:29
InDetSimDataCnv_p1::persToTrans
virtual void persToTrans(const InDetSimData_p1 *persObj, InDetSimData *transObj, MsgStream &log)
Definition: InDetSimDataCnv_p1.cxx:23
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
InDetSimDataCnv_p1::setCurrentStore
void setCurrentStore(IProxyDict *store)
Definition: InDetSimDataCnv_p1.cxx:56
InDetSimDataCnv_p1.h
InDetSimData
Definition: InDetSimData.h:42
InDetSimData.h
InDetSimDataCnv_p1
Definition: InDetSimDataCnv_p1.h:23
InDetSimDataCollectionCnv_p1::persToTrans
virtual void persToTrans(const InDetSimDataCollection_p1 *persCont, InDetSimDataCollection *transCont, MsgStream &log)
Definition: InDetSimDataCollectionCnv_p1.cxx:31
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
InDetSimDataCnv_p1::transToPers
virtual void transToPers(const InDetSimData *transObj, InDetSimData_p1 *persObj, MsgStream &log)
Definition: InDetSimDataCnv_p1.cxx:41
InDetSimDataCollectionCnv_p1::m_isInitialized
bool m_isInitialized
Definition: InDetSimDataCollectionCnv_p1.h:30
InDetSimDataCollection_p1
Definition: InDetSimDataCollection_p1.h:14
InDetSimDataCollection.h
DeMoScan.first
bool first
Definition: DeMoScan.py:534
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
MSG_DEBUG
#define MSG_DEBUG(log, x)
Definition: MsgUtil.h:15
InDetSimDataCollection_p1.h
simData
constexpr bool simData
Definition: constants.h:36
StoreGateSvc.h
PixelID::pixel_id_from_shortened
Identifier pixel_id_from_shortened(Identifier32::value_type val) const
Create a compact pixel id from a (fixed format) legacy pixel channel id.
Definition: PixelID.h:546
MsgUtil.h