ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
graphics
VP1
VP1Systems
VP1RawDataSystems
src
VP1RawDataHandle_MDT_RDO.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// //
7
// Implementation of class VP1RawDataHandle_MDT_RDO //
8
// //
9
// Author: Riccardo Maria BIANCHI <riccardo.maria.bianchi@cern.ch>
10
// Initial version: January 2024
11
// //
13
14
#include "
VP1RawDataSystems/VP1RawDataHandle_MDT_RDO.h
"
15
#include "
VP1RawDataSystems/VP1RawDataColl_MDT_RDO.h
"
16
17
#include "
VP1RawDataSystems/VP1RawDataCommonData.h
"
18
#include "
VP1RawDataSystems/VP1RawDataSysController.h
"
19
20
#include "
VP1Utils/HitsSoNodeManager.h
"
21
#include "
VP1Utils/VP1DetInfo.h
"
22
#include "
VP1Utils/VP1LinAlgUtils.h
"
23
24
#include "
MuonReadoutGeometry/MuonDetectorManager.h
"
25
26
#include <Inventor/nodes/SoTransform.h>
27
#include <Inventor/nodes/SoGroup.h>
28
#include <Inventor/nodes/SoMaterial.h>
29
30
#include "GaudiKernel/SystemOfUnits.h"
31
32
//____________________________________________________________________
33
VP1RawDataHandle_MDT_RDO::VP1RawDataHandle_MDT_RDO
(
VP1RawDataCollBase
*
coll
,
const
MdtDigit
*data)
34
:
VP1RawDataHandleBase
(
coll
),
m_data
(data)
35
{
36
}
37
38
//____________________________________________________________________
39
VP1RawDataHandle_MDT_RDO::~VP1RawDataHandle_MDT_RDO
()
40
{
41
}
42
43
//____________________________________________________________________
44
QStringList
VP1RawDataHandle_MDT_RDO::clicked
(
bool
verbose
)
const
45
{
46
const
Identifier
id
=
m_data
->identify();
47
QStringList ll;
48
ll <<
" ===> MDT Digit data"
;
49
ll <<
" Identifier: "
+ QString::fromStdString(
id
.getString());
50
ll <<
" adc: "
+ QString::number(
m_data
->adc());
51
ll <<
" tdc: "
+ QString::number(
m_data
->tdc());
52
ll <<
" isMasked: "
+ QString(
isMasked
() ?
"true"
:
"false"
);
53
if
(
verbose
) {
54
const
MdtIdHelper
* idhelper =
VP1DetInfo::mdtIDHelper
();
55
const
bool
valid = idhelper && idhelper->
valid
(
id
);
56
if
(valid) {
57
ll <<
" Station name: "
+ QString::fromStdString(idhelper->
stationNameString
(
id
));
58
ll <<
" Station eta index: "
+ QString::number(idhelper->
stationEta
(
id
));
59
ll <<
" Station phi index: "
+ QString::number(idhelper->
stationPhi
(
id
));
60
ll <<
" Multilayer: "
+ QString::number(idhelper->
multilayer
(
id
));
61
ll <<
" Tube layer: "
+ QString::number(idhelper->
tubeLayer
(
id
));
62
ll <<
" Tube: "
+ QString::number(idhelper->
tube
(
id
));
63
}
else
{
64
ll <<
" Decoded identifier unavailable"
;
65
}
66
const
MuonGM::MdtReadoutElement
* elem = valid ?
element
() :
nullptr
;
67
if
(elem) {
68
ll <<
" Is Barrel: "
+ QString::number(elem->barrel());
69
ll <<
" Is Endcap: "
+ QString::number(elem->endcap());
70
const
Amg::Vector3D
position = elem->tubePos(
id
);
71
ll << QString(
" Global position [mm] (x, y, z): (%1, %2, %3)"
)
72
.arg(position.x() / Gaudi::Units::mm, 0,
'g'
, 10)
73
.arg(position.y() / Gaudi::Units::mm, 0,
'g'
, 10)
74
.arg(position.z() / Gaudi::Units::mm, 0,
'g'
, 10);
75
}
else
{
76
ll <<
" Global position unavailable"
;
77
}
78
}
79
return
ll;
80
}
81
82
//____________________________________________________________________
83
SoNode *
VP1RawDataHandle_MDT_RDO::buildShape
()
84
{
85
const
MuonGM::MdtReadoutElement
* elem =
element
();
86
Identifier
id(
m_data
->identify());
87
double
tubeLength
= elem->tubeLength(
id
);
88
// double strawlength = elem ? elem->strawLength() : 200.0;
89
90
SoNode *
node
=
common
()->
nodeManager
()->
getShapeNode_DriftTube
(
tubeLength
/2, elem->innerTubeRadius());
91
return
node
;
92
}
93
94
//____________________________________________________________________
95
SoTransform *
VP1RawDataHandle_MDT_RDO::buildTransform
()
96
{
97
const
MuonGM::MdtReadoutElement
* elem =
element
();
98
if
(!elem)
99
return
new
SoTransform;
//fixme
100
Identifier
id(
m_data
->identify());
101
return
VP1LinAlgUtils::toSoTransform
(elem->localToGlobalTransf(
id
));
102
}
103
104
//____________________________________________________________________
105
const
MuonGM::MdtReadoutElement
*
VP1RawDataHandle_MDT_RDO::element
()
const
106
{
107
108
const
MuonGM::MuonDetectorManager
* detmgr =
VP1DetInfo::muonDetMgr
();
109
110
if
(!detmgr)
111
return
0;
112
return
detmgr->
getMdtReadoutElement
(
m_data
->identify());
113
}
114
115
double
VP1RawDataHandle_MDT_RDO::amplitude
()
const
116
{
117
return
m_data
->adc();
118
}
119
120
double
VP1RawDataHandle_MDT_RDO::time
()
const
121
{
122
return
m_data
->tdc();
123
}
124
125
bool
VP1RawDataHandle_MDT_RDO::isMasked
()
const
126
{
127
return
m_data
->isMasked();
128
}
HitsSoNodeManager.h
tubeLength
double tubeLength
Definition
MDT_ResponseTest.cxx:32
MuonDetectorManager.h
VP1DetInfo.h
VP1LinAlgUtils.h
VP1RawDataColl_MDT_RDO.h
VP1RawDataCommonData.h
VP1RawDataHandle_MDT_RDO.h
VP1RawDataSysController.h
HitsSoNodeManager::getShapeNode_DriftTube
SoNode * getShapeNode_DriftTube(double halfLength, double radius)
Definition
HitsSoNodeManager.cxx:138
MdtDigit
Definition
MdtDigit.h:19
MdtIdHelper
Definition
MdtIdHelper.h:61
MdtIdHelper::multilayer
int multilayer(const Identifier &id) const
Access to components of the ID.
Definition
MdtIdHelper.cxx:726
MdtIdHelper::valid
bool valid(const Identifier &id) const
Public validation of levels.
Definition
MdtIdHelper.cxx:535
MdtIdHelper::tube
int tube(const Identifier &id) const
Definition
MdtIdHelper.cxx:730
MdtIdHelper::tubeLayer
int tubeLayer(const Identifier &id) const
Definition
MdtIdHelper.cxx:728
MuonGM::MdtReadoutElement
Definition
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h:51
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:51
MuonGM::MuonDetectorManager::getMdtReadoutElement
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition
MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:217
MuonIdHelper::stationEta
int stationEta(const Identifier &id) const
Definition
MuonIdHelper.cxx:790
MuonIdHelper::stationNameString
const std::string & stationNameString(const Identifier &id) const
Definition
MuonIdHelper.cxx:839
MuonIdHelper::stationPhi
int stationPhi(const Identifier &id) const
Definition
MuonIdHelper.cxx:795
VP1DetInfo::mdtIDHelper
static const MdtIdHelper * mdtIDHelper()
Definition
VP1DetInfo.cxx:163
VP1DetInfo::muonDetMgr
static const MuonGM::MuonDetectorManager * muonDetMgr()
Definition
VP1DetInfo.cxx:148
VP1LinAlgUtils::toSoTransform
static SoTransform * toSoTransform(const HepGeom::Transform3D &, SoTransform *t=0)
Definition
VP1LinAlgUtils.cxx:40
VP1RawDataCollBase
Definition
VP1RawDataCollBase.h:29
VP1RawDataCommonData::nodeManager
HitsSoNodeManager * nodeManager() const
Definition
VP1RawDataCommonData.h:42
VP1RawDataHandleBase::common
VP1RawDataCommonData * common() const
Definition
VP1RawDataHandleBase.h:41
VP1RawDataHandleBase::VP1RawDataHandleBase
VP1RawDataHandleBase(VP1RawDataCollBase *)
Definition
VP1RawDataHandleBase.cxx:50
VP1RawDataHandleBase::coll
VP1RawDataCollBase * coll() const
Definition
VP1RawDataHandleBase.h:40
VP1RawDataHandle_MDT_RDO::amplitude
double amplitude() const
Definition
VP1RawDataHandle_MDT_RDO.cxx:115
VP1RawDataHandle_MDT_RDO::isMasked
bool isMasked() const
Definition
VP1RawDataHandle_MDT_RDO.cxx:125
VP1RawDataHandle_MDT_RDO::m_data
const MdtDigit * m_data
Definition
VP1RawDataHandle_MDT_RDO.h:43
VP1RawDataHandle_MDT_RDO::VP1RawDataHandle_MDT_RDO
VP1RawDataHandle_MDT_RDO(VP1RawDataCollBase *, const MdtDigit *)
Definition
VP1RawDataHandle_MDT_RDO.cxx:33
VP1RawDataHandle_MDT_RDO::clicked
QStringList clicked(bool verbose) const
Definition
VP1RawDataHandle_MDT_RDO.cxx:44
VP1RawDataHandle_MDT_RDO::buildShape
SoNode * buildShape()
Definition
VP1RawDataHandle_MDT_RDO.cxx:83
VP1RawDataHandle_MDT_RDO::element
const MuonGM::MdtReadoutElement * element() const
Definition
VP1RawDataHandle_MDT_RDO.cxx:105
VP1RawDataHandle_MDT_RDO::time
double time() const
Definition
VP1RawDataHandle_MDT_RDO.cxx:120
VP1RawDataHandle_MDT_RDO::~VP1RawDataHandle_MDT_RDO
virtual ~VP1RawDataHandle_MDT_RDO()
Definition
VP1RawDataHandle_MDT_RDO.cxx:39
VP1RawDataHandle_MDT_RDO::buildTransform
SoTransform * buildTransform()
Definition
VP1RawDataHandle_MDT_RDO.cxx:95
node
Definition
node.h:24
verbose
bool verbose
Definition
hcg.cxx:75
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:48
Identifier
Definition
IdentifierFieldParser.cxx:14
Generated on
for ATLAS Offline Software by
1.17.0