ATLAS Offline Software
Loading...
Searching...
No Matches
TrigInDetTrackCnv_p4.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
9
10//-----------------------------------------------------------------------------
11// Persistent to transient
12//-----------------------------------------------------------------------------
13void TrigInDetTrackCnv_p4::persToTrans( const TrigInDetTrack_p4 *persObj, TrigInDetTrack *transObj, MsgStream &log )
14{
15
16 // log << MSG::DEBUG << "TrigInDetTrackCnv_p4::persToTrans called " << endmsg;
17
18 transObj->algorithmId ((TrigInDetTrack::AlgoId) persObj->m_allIntegers[0]);
19 transObj->StrawHits (persObj->m_allIntegers[1]);
20 transObj->Straw (persObj->m_allIntegers[2]);
21 transObj->StrawTime (persObj->m_allIntegers[3]);
22 transObj->TRHits (persObj->m_allIntegers[4]);
23 transObj->NPixelSpacePoints (persObj->m_allIntegers[5]);
24 transObj->NSCT_SpacePoints (persObj->m_allIntegers[6]);
25 transObj->HitPattern (persObj->m_allIntegers[7]);
26
27 transObj->chi2 (persObj->m_chi2) ;
28
29 transObj->param (createTransFromPStore( &m_fpCnv, persObj->m_param, log ));
30 transObj->endParam (createTransFromPStore( &m_fpCnv, persObj->m_endParam, log ));
31 //transObj->m_rdoList.resize( persObj->m_rdoList.size() );
32 //std::copy( persObj->m_rdoList.begin(), persObj->m_rdoList.end(), transObj->m_rdoList.begin() );
33
34 if(!m_isInitialized) {
35 if (this->initialize(log) != StatusCode::SUCCESS) {
36 log << MSG::FATAL << "Could not initialize TrigInDetTrackCnv_p4 " << endmsg;
37 }
38 }
39
40 std::vector<Identifier> rdoList;
41 rdoList.reserve( persObj->m_rdoList.size() );
42 for (unsigned int id : persObj->m_rdoList) {
43 if (m_pixId->is_shortened_pixel_id(id)) {
44 rdoList.emplace_back (m_pixId->pixel_id_from_shortened(id));
45 }
46 else {
47 rdoList.emplace_back (id);
48 }
49 }
50 transObj->rdoList (std::move(rdoList));
51
52}
53
54//-----------------------------------------------------------------------------
55// Transient to persistent
56//-----------------------------------------------------------------------------
57void TrigInDetTrackCnv_p4::transToPers( const TrigInDetTrack *transObj, TrigInDetTrack_p4 *persObj, MsgStream &log )
58{
59 // log << MSG::DEBUG << "TrigInDetTrackCnv_p4::transToPers called " << endmsg;
60 persObj->m_allIntegers[0]= transObj->algorithmId() ;
61 persObj->m_allIntegers[1]= transObj->NStrawHits() ;
62 persObj->m_allIntegers[2]= transObj->NStraw() ;
63 persObj->m_allIntegers[3]= transObj->NStrawTime() ;
64 persObj->m_allIntegers[4]= transObj->NTRHits() ;
65 persObj->m_allIntegers[5]= transObj->NPixelSpacePoints();
66 persObj->m_allIntegers[6]= transObj->NSCT_SpacePoints();
67 persObj->m_allIntegers[7]= transObj->HitPattern();
68
69 persObj->m_chi2 = transObj->chi2() ;
70
71 persObj->m_param = toPersistent( &m_fpCnv, transObj->param(), log );
72 persObj->m_endParam = toPersistent( &m_fpCnv, transObj->endParam(), log );
73
74 const std::vector<Identifier>& rdoList = transObj->rdoList();
75 persObj->m_rdoList.clear();
76 persObj->m_rdoList.reserve( rdoList.size() );
77 for (const Identifier& id : rdoList)
78 persObj->m_rdoList.push_back (id.get_identifier32().get_compact());
79}
80
81
82StatusCode TrigInDetTrackCnv_p4::initialize(MsgStream &log) {
83 // Do not initialize again:
84 m_isInitialized=true;
85
86 // get DetectorStore service
87 SmartIF<StoreGateSvc> detStore{Gaudi::svcLocator()->service("DetectorStore")};
88 if (!detStore) {
89 log << MSG::FATAL << "DetectorStore service not found !" << endmsg;
90 return StatusCode::FAILURE;
91 }
92
93 // Get the sct helper from the detector store
94 StatusCode sc = detStore->retrieve(m_pixId, "PixelID");
95 if (sc.isFailure()) {
96 log << MSG::FATAL << "Could not get PixelID helper !" << endmsg;
97 return StatusCode::FAILURE;
98 }
99
100 return StatusCode::SUCCESS;
101}
102
103
105{
106 m_pixId = pixId;
107 m_isInitialized = true;
108}
#define endmsg
static Double_t sc
CNV::Trans_t * createTransFromPStore(CNV **cnv, const TPObjRef &ref, MsgStream &log) const
TPObjRef toPersistent(CNV **cnv, const typename CNV::TransBase_t *transObj, MsgStream &log) const
This is an Identifier helper class for the Pixel subdetector.
Definition PixelID.h:67
StatusCode initialize(MsgStream &log)
virtual void transToPers(const TrigInDetTrack *, TrigInDetTrack_p4 *, MsgStream &)
virtual void persToTrans(const TrigInDetTrack_p4 *, TrigInDetTrack *, MsgStream &)
void setPixelID(const PixelID *pixId)
ITPConverterFor< TrigInDetTrackFitPar > * m_fpCnv
std::vector< unsigned int > m_rdoList
represents a LVL2 ID track
int NStrawTime() const
Number of TRT straws with valid drift time intersected by track.
void algorithmId(const AlgoId id)
void StrawTime(const int NSTime)
void TRHits(const int NTR)
void StrawHits(const int NSHits)
void HitPattern(const long hp)
Hit pattern setter method.
void NPixelSpacePoints(const int n)
int NTRHits() const
Number of high-threshold TRT hits associated with track.
void NSCT_SpacePoints(const int n)
void chi2(const double chi2)
int NStrawHits() const
Number of TRT hits associated with track.
void param(const TrigInDetTrackFitPar *param)
const std::vector< Identifier > & rdoList() const
RDOs associated with track.
int NStraw() const
Number of TRT straws intersected by track.
void Straw(const int NS)
void endParam(const TrigInDetTrackFitPar *param)
void initialize()