ATLAS Offline Software
Loading...
Searching...
No Matches
TgcCoinDataCnv_p1.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3*/
4
5//-----------------------------------------------------------------------------
6//
7// file: TgcCoinDataCnv_p1.cxx
8//* Takashi Kubota - June 30, 2008 */
9//-----------------------------------------------------------------------------
10
13#include <algorithm>
16
18persToTrans( const Muon::TgcCoinData_p1 *persObj, Muon::TgcCoinData *transObj,MsgStream &log )
19{
21 switch(persObj->m_type){
24 case 2: type=Muon::TgcCoinData::TYPE_SL; break;
27 default: break;
28 }
29
30 auto posIn = std::unique_ptr<Amg::Vector2D>
31 (createTransFromPStore( &m_localPosCnv, persObj->m_posIn, log ));
32 auto posOut = std::unique_ptr<Amg::Vector2D>
33 (createTransFromPStore( &m_localPosCnv, persObj->m_posOut, log ));
34
35 Trk::ErrorMatrix dummy;
36 fillTransFromPStore( &m_errorMxCnv, persObj->m_errMat, &dummy, log );
37 auto tempMat = std::make_unique<Amg::MatrixX>();
38 EigenHelpers::vectorToEigenMatrix(dummy.values, *tempMat, "TgcCoinDataCnv_p1");
39
40 *transObj = Muon::TgcCoinData (Identifier(persObj->m_channelIdIn),
41 Identifier(persObj->m_channelIdOut),
42 persObj->m_collectionIdHash,
43 transObj->detectorElementIn(),
44 transObj->detectorElementOut(),
45 type,
46 persObj->m_isAside,
47 persObj->m_phi,
48 false, // isInner
49 persObj->m_isForward,
50 persObj->m_isStrip,
51 persObj->m_trackletId,
52 posIn.release(),
53 posOut.release(),
54 persObj->m_widthIn,
55 persObj->m_widthOut,
56 persObj->m_delta,
57 0, // sub
58 0, // tile
59 persObj->m_roi,
60 persObj->m_pt,
61 persObj->m_trackletIdStrip,
62 tempMat.release()
63 );
64
65 transObj->setHashAndIndex(persObj->m_indexAndHash);
66}
67
69transToPers( const Muon::TgcCoinData *transObj, Muon::TgcCoinData_p1 *persObj, MsgStream &log )
70{
71 //log << MSG::DEBUG << "TgcCoinDataCnv_p1::transToPers" << endmsg;
72
73 persObj->m_channelIdIn = transObj->channelIdIn().get_identifier32().get_compact();
74 persObj->m_channelIdOut = transObj->channelIdOut().get_identifier32().get_compact();
75 persObj->m_collectionIdHash = transObj->identifyHash();
76 persObj->m_indexAndHash=transObj->getHashAndIndex().hashAndIndex();
77 switch(transObj->type()){
78 case Muon::TgcCoinData::TYPE_TRACKLET: persObj->m_type=0; break;
79 case Muon::TgcCoinData::TYPE_HIPT: persObj->m_type=1; break;
80 case Muon::TgcCoinData::TYPE_SL: persObj->m_type=2; break;
81 case Muon::TgcCoinData::TYPE_UNKNOWN: persObj->m_type=3; break;
82 case Muon::TgcCoinData::TYPE_TRACKLET_EIFI: persObj->m_type=4; break;
83 default: break;
84 }
85 //persObj->m_type = transObj->m_type;
86 persObj->m_isAside = transObj->isAside();
87 persObj->m_phi = transObj->phi();
88 persObj->m_isForward = transObj->isForward();
89 persObj->m_isStrip = transObj->isStrip();
90 persObj->m_trackletId = transObj->trackletId();
91 persObj->m_trackletIdStrip = transObj->trackletIdStrip();
92 persObj->m_widthIn = transObj->widthIn();
93 persObj->m_widthOut = transObj->widthOut();
94 persObj->m_posIn = toPersistent( &m_localPosCnv, transObj->posInPtr(), log );
95 persObj->m_posOut = toPersistent( &m_localPosCnv, transObj->posOutPtr(), log );
96 // persObj->m_errMat = toPersistent( &m_errorMxCnv, transObj->m_errMat, log );
97 if (transObj->hasErrMat() )
98 {
100 EigenHelpers::eigenMatrixToVector(pMat.values, transObj->errMat(), "TgcCoinDataCnv_p1");
101 persObj->m_errMat = toPersistent( &m_errorMxCnv, &pMat, log );
102 }
103 persObj->m_delta = transObj->delta();
104 persObj->m_roi = transObj->roi();
105 persObj->m_pt = transObj->pt();
106}
107
108
CNV::Trans_t * createTransFromPStore(CNV **cnv, const TPObjRef &ref, MsgStream &log) const
void fillTransFromPStore(CNV **cnv, const TPObjRef &ref, TRANS_T *trans, MsgStream &log) const
TPObjRef toPersistent(CNV **cnv, const typename CNV::TransBase_t *transObj, MsgStream &log) const
unsigned int hashAndIndex() const
combined index
value_type get_compact() const
Get the compact id.
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
unsigned int m_indexAndHash
Identifier32::value_type m_channelIdIn
IdentifierHash m_collectionIdHash
Identifier32::value_type m_channelIdOut
int roi() const
return ROI number
double widthOut() const
return region width of hit on TGC2(TRACKLET) or TGC3(HIPT)
CoinDataType type() const
return the coincidence type (HIPT, LPT, SL)
int trackletId() const
return trackletId (Identifier for each track)
double widthIn() const
return region width of hit on TGC1
const IdentContIndex & getHashAndIndex() const
const MuonGM::TgcReadoutElement * detectorElementIn() const
return TgcReadoutElement of track on TGC1(HIPT) or TGC2(TRACKLET)
int trackletIdStrip() const
return trackletId for strip (Identifier for each track)
const Amg::MatrixX & errMat() const
return 2d width of ROI for SL: errMat[0][0]==(width for R), errMat[1][1]==(width for phi)
IdentifierHash identifyHash() const
return the identifierHash of Outer Hit
bool isAside() const
Aside or Cside.
const Amg::Vector2D * posInPtr() const
int phi() const
return phi number of trigger sector
bool isForward() const
Forward region or Endcap region.
void setHashAndIndex(unsigned short collHash, unsigned short objIndex)
bool hasErrMat() const
Test to see if the error matrix is present.
const MuonGM::TgcReadoutElement * detectorElementOut() const
return TgcReadoutElement of track on TGC3
int pt() const
return pt threshold value
Identifier channelIdIn() const
return offlineID on TGC1(HIPT) or TGC2(TRACKLET)
Identifier channelIdOut() const
return offlineID on track on TGC3
int delta() const
return the deviation from Pt=oo track
const Amg::Vector2D * posOutPtr() const
bool isStrip() const
Strip hit or Wire hit?
void transToPers(const Muon::TgcCoinData *transObj, Muon::TgcCoinData_p1 *persObj, MsgStream &log)
LocalPositionCnv_p1 * m_localPosCnv
ErrorMatrixCnv_p1 * m_errorMxCnv
void persToTrans(const Muon::TgcCoinData_p1 *persObj, Muon::TgcCoinData *transObj, MsgStream &log)
std::vector< float > values
static void eigenMatrixToVector(VECTOR &vec, COVARIANCE &cov, const char *)