ATLAS Offline Software
TrigInDetTrackCnv_p4.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
9 //-----------------------------------------------------------------------------
10 // Persistent to transient
11 //-----------------------------------------------------------------------------
12 void TrigInDetTrackCnv_p4::persToTrans( const TrigInDetTrack_p4 *persObj, TrigInDetTrack *transObj, MsgStream &log )
13 {
14 
15  // log << MSG::DEBUG << "TrigInDetTrackCnv_p4::persToTrans called " << endmsg;
16 
17  transObj->algorithmId ((TrigInDetTrack::AlgoId) persObj->m_allIntegers[0]);
18  transObj->StrawHits (persObj->m_allIntegers[1]);
19  transObj->Straw (persObj->m_allIntegers[2]);
20  transObj->StrawTime (persObj->m_allIntegers[3]);
21  transObj->TRHits (persObj->m_allIntegers[4]);
22  transObj->NPixelSpacePoints (persObj->m_allIntegers[5]);
23  transObj->NSCT_SpacePoints (persObj->m_allIntegers[6]);
24  transObj->HitPattern (persObj->m_allIntegers[7]);
25 
26  transObj->chi2 (persObj->m_chi2) ;
27 
28  transObj->param (createTransFromPStore( &m_fpCnv, persObj->m_param, log ));
29  transObj->endParam (createTransFromPStore( &m_fpCnv, persObj->m_endParam, log ));
30  //transObj->m_rdoList.resize( persObj->m_rdoList.size() );
31  //std::copy( persObj->m_rdoList.begin(), persObj->m_rdoList.end(), transObj->m_rdoList.begin() );
32 
33  if(!m_isInitialized) {
34  if (this->initialize(log) != StatusCode::SUCCESS) {
35  log << MSG::FATAL << "Could not initialize TrigInDetTrackCnv_p4 " << endmsg;
36  }
37  }
38 
39  std::vector<Identifier> rdoList;
40  rdoList.reserve( persObj->m_rdoList.size() );
41  for (unsigned int id : persObj->m_rdoList) {
42  if (m_pixId->is_shortened_pixel_id(id)) {
43  rdoList.emplace_back (m_pixId->pixel_id_from_shortened(id));
44  }
45  else {
46  rdoList.emplace_back (id);
47  }
48  }
49  transObj->rdoList (std::move(rdoList));
50 
51 }
52 
53 //-----------------------------------------------------------------------------
54 // Transient to persistent
55 //-----------------------------------------------------------------------------
56 void TrigInDetTrackCnv_p4::transToPers( const TrigInDetTrack *transObj, TrigInDetTrack_p4 *persObj, MsgStream &log )
57 {
58  // log << MSG::DEBUG << "TrigInDetTrackCnv_p4::transToPers called " << endmsg;
59  persObj->m_allIntegers[0]= transObj->algorithmId() ;
60  persObj->m_allIntegers[1]= transObj->NStrawHits() ;
61  persObj->m_allIntegers[2]= transObj->NStraw() ;
62  persObj->m_allIntegers[3]= transObj->NStrawTime() ;
63  persObj->m_allIntegers[4]= transObj->NTRHits() ;
64  persObj->m_allIntegers[5]= transObj->NPixelSpacePoints();
65  persObj->m_allIntegers[6]= transObj->NSCT_SpacePoints();
66  persObj->m_allIntegers[7]= transObj->HitPattern();
67 
68  persObj->m_chi2 = transObj->chi2() ;
69 
70  persObj->m_param = toPersistent( &m_fpCnv, transObj->param(), log );
71  persObj->m_endParam = toPersistent( &m_fpCnv, transObj->endParam(), log );
72 
73  const std::vector<Identifier>& rdoList = transObj->rdoList();
74  persObj->m_rdoList.clear();
75  persObj->m_rdoList.reserve( rdoList.size() );
76  for (const Identifier& id : rdoList)
77  persObj->m_rdoList.push_back (id.get_identifier32().get_compact());
78 }
79 
80 
82  // Do not initialize again:
83  m_isInitialized=true;
84 
85  // Get Storegate, ID helpers, and so on
86  ISvcLocator* svcLocator = Gaudi::svcLocator();
87  // get StoreGate service
88  StatusCode sc = svcLocator->service("StoreGateSvc", m_storeGate);
89  if (sc.isFailure()) {
90  log << MSG::FATAL << "StoreGate service not found !" << endmsg;
91  return StatusCode::FAILURE;
92  }
93 
94  // get DetectorStore service
95  StoreGateSvc *detStore{nullptr};
96  sc = svcLocator->service("DetectorStore", detStore);
97  if (sc.isFailure()) {
98  log << MSG::FATAL << "DetectorStore service not found !" << endmsg;
99  return StatusCode::FAILURE;
100  }
101  // else {
102  // if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Found DetectorStore." << endmsg;
103  // }
104 
105  // Get the sct helper from the detector store
106  sc = detStore->retrieve(m_pixId, "PixelID");
107  if (sc.isFailure()) {
108  log << MSG::FATAL << "Could not get PixelID helper !" << endmsg;
109  return StatusCode::FAILURE;
110  }
111 
112 
113  // if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Converter initialized." << endmsg;
114  return StatusCode::SUCCESS;
115 }
116 
117 
119 {
120  m_pixId = pixId;
121  m_isInitialized = true;
122 }
TrigInDetTrack_p4::m_chi2
double m_chi2
Definition: TrigInDetTrack_p4.h:49
TrigInDetTrack::StrawTime
void StrawTime(const int NSTime)
Definition: TrigInDetTrack.h:131
TrigInDetTrack::param
void param(const TrigInDetTrackFitPar *param)
Definition: TrigInDetTrack.h:126
TrigInDetTrack::NStrawTime
int NStrawTime() const
Number of TRT straws with valid drift time intersected by track.
Definition: TrigInDetTrack.h:173
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
TrigInDetTrackCnv_p4::initialize
StatusCode initialize(MsgStream &log)
Definition: TrigInDetTrackCnv_p4.cxx:81
TrigInDetTrack_p4::m_param
TPObjRef m_param
Definition: TrigInDetTrack_p4.h:47
TrigInDetTrack_p4::m_allIntegers
int m_allIntegers[8]
Definition: TrigInDetTrack_p4.h:59
TrigInDetTrack::chi2
void chi2(const double chi2)
Definition: TrigInDetTrack.h:128
TrigInDetTrack::TRHits
void TRHits(const int NTR)
Definition: TrigInDetTrack.h:132
TrigInDetTrack_p4.h
TrigInDetTrack::AlgoId
AlgoId
Definition: TrigInDetTrack.h:37
TrigInDetTrack::NStraw
int NStraw() const
Number of TRT straws intersected by track.
Definition: TrigInDetTrack.h:171
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
TrigInDetTrack
Definition: TrigInDetTrack.h:34
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
TrigInDetTrack.h
TrigInDetTrack_p4::m_endParam
TPObjRef m_endParam
Definition: TrigInDetTrack_p4.h:48
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
TrigInDetTrackCnv_p4::m_pixId
const PixelID * m_pixId
Definition: TrigInDetTrackCnv_p4.h:52
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
TrigInDetTrackCnv_p4::m_fpCnv
ITPConverterFor< TrigInDetTrackFitPar > * m_fpCnv
Definition: TrigInDetTrackCnv_p4.h:50
TrigInDetTrack::NPixelSpacePoints
void NPixelSpacePoints(const int n)
Definition: TrigInDetTrack.h:133
TrigInDetTrack::NSCT_SpacePoints
void NSCT_SpacePoints(const int n)
Definition: TrigInDetTrack.h:134
TrigInDetTrack::Straw
void Straw(const int NS)
Definition: TrigInDetTrack.h:130
TrigInDetTrack::NStrawHits
int NStrawHits() const
Number of TRT hits associated with track.
Definition: TrigInDetTrack.h:169
ITPConverterFor::toPersistent
TPObjRef toPersistent(CNV **cnv, const typename CNV::TransBase_t *transObj, MsgStream &log) const
Persistify an object and store the persistent represenation in the storage vector of the top-level pe...
Definition: TPConverter.h:119
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
TrigInDetTrack::StrawHits
void StrawHits(const int NSHits)
Definition: TrigInDetTrack.h:129
TrigInDetTrack::NTRHits
int NTRHits() const
Number of high-threshold TRT hits associated with track.
Definition: TrigInDetTrack.h:175
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
TrigInDetTrack::endParam
void endParam(const TrigInDetTrackFitPar *param)
Definition: TrigInDetTrack.h:127
TrigInDetTrackCnv_p4::setPixelID
void setPixelID(const PixelID *pixId)
Definition: TrigInDetTrackCnv_p4.cxx:118
TrigInDetTrack_p4
Definition: TrigInDetTrack_p4.h:26
TrigInDetTrack::algorithmId
void algorithmId(const AlgoId id)
Definition: TrigInDetTrack.h:125
PixelID
Definition: PixelID.h:67
TrigInDetTrack::rdoList
const std::vector< Identifier > & rdoList() const
RDOs associated with track.
Definition: TrigInDetTrack.h:184
TrigInDetTrack_p4::m_rdoList
std::vector< unsigned int > m_rdoList
Definition: TrigInDetTrack_p4.h:60
TrigInDetTrack::HitPattern
void HitPattern(const long hp)
Hit pattern setter method.
Definition: TrigInDetTrack.h:144
TrigInDetTrackCnv_p4::persToTrans
virtual void persToTrans(const TrigInDetTrack_p4 *, TrigInDetTrack *, MsgStream &)
Definition: TrigInDetTrackCnv_p4.cxx:12
TrigInDetTrackCnv_p4::transToPers
virtual void transToPers(const TrigInDetTrack *, TrigInDetTrack_p4 *, MsgStream &)
Definition: TrigInDetTrackCnv_p4.cxx:56
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
TrigInDetTrackCnv_p4.h
TrigInDetTrackCnv_p4::m_isInitialized
bool m_isInitialized
Definition: TrigInDetTrackCnv_p4.h:54
ITPConverterFor::createTransFromPStore
CNV::Trans_t * createTransFromPStore(CNV **cnv, const TPObjRef &ref, MsgStream &log) const
Create transient representation of a persistent object, stored in the the top-level persistent object...
Definition: TPConverter.h:172
TrigInDetTrackCnv_p4::m_storeGate
StoreGateSvc * m_storeGate
Definition: TrigInDetTrackCnv_p4.h:53