ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetEventCnv
InDetEventTPCnv
src
InDetRIO_OnTrack
SCT_ClusterOnTrackCnv_p2.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
InDetEventTPCnv/InDetRIO_OnTrack/SCT_ClusterOnTrackCnv_p2.h
"
6
7
#include "AthLinks/ElementLink.h"
8
#include "Identifier/Identifier.h"
9
#include "
InDetPrepRawData/SCT_ClusterContainer.h
"
10
#include "
InDetRIO_OnTrack/SCT_ClusterOnTrack.h
"
11
#include "
TrkEventTPCnv/helpers/EigenHelpers.h
"
12
13
void
SCT_ClusterOnTrackCnv_p2::persToTrans
(
const
InDet::SCT_ClusterOnTrack_p2
*persObj,
InDet::SCT_ClusterOnTrack
*transObj, MsgStream &log ) {
14
15
ElementLinkToIDCSCT_ClusterContainer
rio;
16
m_elCnv
.persToTrans(&persObj->
m_prdLink
,&rio,log);
17
18
Trk::LocalParameters
localParams;
19
fillTransFromPStore
( &
m_localParCnv
, persObj->
m_localParams
, &localParams, log );
20
21
Trk::ErrorMatrix
dummy;
22
Amg::MatrixX
localCovariance;
23
fillTransFromPStore
( &
m_errorMxCnv
, persObj->
m_localErrMat
, &dummy, log );
24
EigenHelpers::vectorToEigenMatrix(dummy.values, localCovariance,
"SCT_ClusterOnTrackCnv_p2"
);
25
26
// When reading in 32-bit id, must cast to unsigned int
27
const
Identifier::value_type
upper
= 0XFFFFFFFF00000000LL;
28
const
Identifier::value_type lower = 0X00000000FFFFFFFFLL;
29
const
Identifier::value_type testUpper = persObj->
m_id
&
upper
;
30
const
Identifier::value_type testLower = persObj->
m_id
& lower;
31
Identifier
id;
32
if
( testUpper == 0 && testLower > 0) {
33
Identifier32::value_type
id1 = persObj->
m_id
;
34
id
= id1;
35
}
else
{
36
id
= persObj->
m_id
;
37
}
38
39
*transObj =
InDet::SCT_ClusterOnTrack
(rio,
40
localParams,
41
localCovariance,
42
persObj->
m_idDE
,
43
id
,
44
persObj->
m_isbroad
,
45
persObj->
m_positionAlongStrip
);
46
47
// Attempt to call supertool to fill in detElements
48
m_eventCnvTool
->recreateRIO_OnTrack(transObj);
49
if
(transObj->
detectorElement
()==
nullptr
) {
50
log << MSG::WARNING<<
"Unable to reset DetEl for this RIO_OnTrack, "
51
<<
"probably because of a problem with the Identifier/IdentifierHash : ("
52
<< transObj->
identify
()<<
"/"
<<transObj->
idDE
()<<
endmsg
;
53
}
54
}
55
56
void
SCT_ClusterOnTrackCnv_p2::transToPers
(
const
InDet::SCT_ClusterOnTrack
* transObj,
InDet::SCT_ClusterOnTrack_p2
* persObj, MsgStream& log) {
57
if
(transObj==
nullptr
or persObj==
nullptr
)
return
;
58
59
persObj->
m_id
= transObj->
identify
().
get_compact
();
60
persObj->
m_localParams
=
toPersistent
( &
m_localParCnv
, &transObj->
localParameters
(), log );
61
Trk::ErrorMatrix
pMat;
62
EigenHelpers::eigenMatrixToVector
(pMat.
values
, transObj->
localCovariance
(),
"SCT_ClusterOnTrackCnv_p2"
);
63
persObj->
m_localErrMat
=
toPersistent
( &
m_errorMxCnv
, &pMat, log );
64
persObj->
m_idDE
= transObj->
idDE
();
65
persObj->
m_isbroad
= transObj->
isBroadCluster
();
66
persObj->
m_positionAlongStrip
=
static_cast<
float
>
(transObj->
positionAlongStrip
());
67
68
using
SCTContainer = InDet::SCT_ClusterContainer;
69
70
static
const
SG::InitializedReadHandleKey<SCTContainer>
sctClusters{
71
"SCT_Clusters"
};
72
static
const
SG::InitializedReadHandleKey<SCTContainer>
bkgSctClusters{
73
"Bkg_SCT_Clusters"
};
74
static
const
SG::InitializedReadHandleKey<SCTContainer>
itkStripClusters{
75
"ITkStripClusters"
};
76
static
const
SG::InitializedReadHandleKey<SCTContainer>
bkgItkStripClusters{
77
"Bkg_ITkStripClusters"
};
78
79
struct
ContainerCandidate {
80
const
SG::ReadHandleKey<SCTContainer>
& key;
81
const
char
* overlayOutputName;
82
};
83
static
const
ContainerCandidate candidates[] = {
84
{sctClusters,
"Bkg_SCT_Clusters"
},
85
{itkStripClusters,
"Bkg_ITkStripClusters"
},
86
{bkgSctClusters,
"Bkg_SCT_Clusters"
},
87
{bkgItkStripClusters,
"Bkg_ITkStripClusters"
},
88
};
89
90
ElementLink<SCTContainer>::index_type
hashAndIndex{0};
91
92
persObj->
m_prdLink
.
m_contName
.clear();
93
94
const
bool
doOverlay =
m_eventCnvTool
->doTrackOverlay();
95
96
for
(
const
ContainerCandidate& candidate : candidates) {
97
const
bool
found =
98
m_eventCnvTool
99
->getHashAndIndex<SCTContainer,
InDet::SCT_ClusterOnTrack
>(
100
transObj, candidate.key, hashAndIndex);
101
102
if
(!found)
continue
;
103
104
persObj->
m_prdLink
.
m_contName
=
105
doOverlay ? candidate.overlayOutputName : candidate.key.key();
106
107
break
;
108
}
109
110
persObj->
m_prdLink
.
m_elementIndex
= hashAndIndex;
111
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
EigenHelpers.h
upper
int upper(int c)
Definition
LArBadChannelParser.cxx:49
SCT_ClusterContainer.h
SCT_ClusterOnTrackCnv_p2.h
SCT_ClusterOnTrack.h
ElementLinkToIDCSCT_ClusterContainer
ElementLink< InDet::SCT_ClusterContainer > ElementLinkToIDCSCT_ClusterContainer
Definition
SCT_ClusterOnTrack.h:33
ElementLink_p1::m_contName
std::string m_contName
Definition
ElementLink_p1.h:28
ElementLink_p1::m_elementIndex
INDEXTYPE m_elementIndex
Definition
ElementLink_p1.h:29
ElementLink::index_type
size_t index_type
Type of the index used on the container.
Definition
A/AthLinks/ElementLink.h:57
ITPConverterFor< TRANS_BASE >::fillTransFromPStore
void fillTransFromPStore(CNV **cnv, const TPObjRef &ref, TRANS_T *trans, MsgStream &log) const
Definition
TPConverter.h:145
ITPConverterFor< TRANS_BASE >::toPersistent
TPObjRef toPersistent(CNV **cnv, const typename CNV::TransBase_t *transObj, MsgStream &log) const
Definition
TPConverter.h:119
Identifier32::value_type
unsigned int value_type
Definition
Identifier32.h:31
Identifier::get_compact
value_type get_compact() const
Get the compact id.
InDet::SCT_ClusterOnTrack_p2
Definition
SCT_ClusterOnTrack_p2.h:15
InDet::SCT_ClusterOnTrack_p2::m_prdLink
ElementLinkInt_p1 m_prdLink
Definition
SCT_ClusterOnTrack_p2.h:27
InDet::SCT_ClusterOnTrack_p2::m_id
unsigned long long m_id
Definition
SCT_ClusterOnTrack_p2.h:20
InDet::SCT_ClusterOnTrack_p2::m_localErrMat
TPObjRef m_localErrMat
Definition
SCT_ClusterOnTrack_p2.h:22
InDet::SCT_ClusterOnTrack_p2::m_isbroad
bool m_isbroad
Definition
SCT_ClusterOnTrack_p2.h:25
InDet::SCT_ClusterOnTrack_p2::m_idDE
IdentifierHash::value_type m_idDE
Definition
SCT_ClusterOnTrack_p2.h:24
InDet::SCT_ClusterOnTrack_p2::m_localParams
TPObjRef m_localParams
Definition
SCT_ClusterOnTrack_p2.h:21
InDet::SCT_ClusterOnTrack_p2::m_positionAlongStrip
float m_positionAlongStrip
Definition
SCT_ClusterOnTrack_p2.h:30
InDet::SCT_ClusterOnTrack
Specific class to represent the SCT measurements.
Definition
SCT_ClusterOnTrack.h:44
InDet::SCT_ClusterOnTrack::positionAlongStrip
double positionAlongStrip() const
Definition
SCT_ClusterOnTrack.h:163
InDet::SCT_ClusterOnTrack::detectorElement
virtual const InDetDD::SiDetectorElement * detectorElement() const override final
returns the detector element, assoicated with the PRD of this class
Definition
SCT_ClusterOnTrack.h:158
InDet::SiClusterOnTrack::idDE
virtual IdentifierHash idDE() const override
returns the DE hashID*
Definition
SiClusterOnTrack.h:119
InDet::SiClusterOnTrack::isBroadCluster
bool isBroadCluster() const
Definition
SiClusterOnTrack.h:124
SCT_ClusterOnTrackCnv_p2::persToTrans
void persToTrans(const InDet::SCT_ClusterOnTrack_p2 *persObj, InDet::SCT_ClusterOnTrack *transObj, MsgStream &log)
Definition
SCT_ClusterOnTrackCnv_p2.cxx:13
SCT_ClusterOnTrackCnv_p2::m_errorMxCnv
ErrorMatrixCnv_p1 * m_errorMxCnv
Definition
SCT_ClusterOnTrackCnv_p2.h:35
SCT_ClusterOnTrackCnv_p2::m_eventCnvTool
ToolHandle< Trk::IEventCnvSuperTool > m_eventCnvTool
Definition
SCT_ClusterOnTrackCnv_p2.h:32
SCT_ClusterOnTrackCnv_p2::m_elCnv
ElementLinkCnv_p1< ElementLinkToIDCSCT_ClusterContainer > m_elCnv
Definition
SCT_ClusterOnTrackCnv_p2.h:33
SCT_ClusterOnTrackCnv_p2::transToPers
void transToPers(const InDet::SCT_ClusterOnTrack *transObj, InDet::SCT_ClusterOnTrack_p2 *persObj, MsgStream &log)
Definition
SCT_ClusterOnTrackCnv_p2.cxx:56
SCT_ClusterOnTrackCnv_p2::m_localParCnv
LocalParametersCnv_p1 * m_localParCnv
Definition
SCT_ClusterOnTrackCnv_p2.h:34
SG::InitializedReadHandleKey
ReadHandleKey that initializes during construction.
Definition
StoreGate/StoreGate/ReadHandleKey.h:133
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition
StoreGate/StoreGate/ReadHandleKey.h:40
Trk::ErrorMatrix
Definition
ErrorMatrixCnv_p1.h:25
Trk::ErrorMatrix::values
std::vector< float > values
Definition
ErrorMatrixCnv_p1.h:27
Trk::LocalParameters
Definition
LocalParameters.h:100
Trk::MeasurementBase::localParameters
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Definition
MeasurementBase.h:132
Trk::MeasurementBase::localCovariance
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
Definition
MeasurementBase.h:138
Trk::RIO_OnTrack::identify
Identifier identify() const
return the identifier -extends MeasurementBase
Definition
RIO_OnTrack.h:152
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition
EventPrimitives.h:27
EigenHelpers::eigenMatrixToVector
static void eigenMatrixToVector(VECTOR &vec, COVARIANCE &cov, const char *)
Definition
EFTrackingSmearingAlg.cxx:87
Identifier
Definition
IdentifierFieldParser.cxx:14
Generated on
for ATLAS Offline Software by
1.17.0