ATLAS Offline Software
Loading...
Searching...
No Matches
VP1RawDataHandle_RPC_Digit Class Reference

#include <VP1RawDataHandle_RPC_Digit.h>

Inheritance diagram for VP1RawDataHandle_RPC_Digit:
Collaboration diagram for VP1RawDataHandle_RPC_Digit:

Public Member Functions

 VP1RawDataHandle_RPC_Digit (VP1RawDataCollBase *, const RpcDigit *)
bool measuresPhi () const
bool oppositeSide () const
double time () const
double timeOverThreshold () const
QStringList clicked (bool verbose) const override
VP1RawDataCollBase * coll () const
VP1RawDataCommonData * common () const
void setVisible (bool)
bool visible () const
void update3DObjects ()
virtual Amg::Vector3D center ()
virtual VP1RawDataFlags::InDetPartsFlags inInDetParts () const
void updateShownOutlines ()

Static Public Member Functions

static QString unsignedToHex (unsigned)

Protected Member Functions

SoNode * buildShape () override
SoTransform * buildTransform () override

Private Member Functions

const MuonGM::RpcReadoutElement * element () const

Private Attributes

const RpcDigit * m_data
Imp * m_d
VP1RawDataCollBase * m_coll
bool m_visible

Detailed Description

Definition at line 12 of file VP1RawDataHandle_RPC_Digit.h.

Constructor & Destructor Documentation

◆ VP1RawDataHandle_RPC_Digit()

VP1RawDataHandle_RPC_Digit::VP1RawDataHandle_RPC_Digit ( VP1RawDataCollBase * collection,
const RpcDigit * data )

Definition at line 16 of file VP1RawDataHandle_RPC_Digit.cxx.

18 : VP1RawDataHandleBase(collection), m_data(data)
19{}
VP1RawDataHandleBase(VP1RawDataCollBase *)

Member Function Documentation

◆ buildShape()

SoNode * VP1RawDataHandle_RPC_Digit::buildShape ( )
overrideprotectedvirtual

Implements VP1RawDataHandleBase.

Definition at line 73 of file VP1RawDataHandle_RPC_Digit.cxx.

74{
75 const auto* elem = element();
76 if (!elem)
78 const bool phi = VP1DetInfo::rpcIDHelper()->measuresPhi(m_data->identify());
79 // Strip footprint from geometry; depth is a display thickness in mm.
81 elem->StripLength(phi), elem->StripWidth(phi), 0.1 * Gaudi::Units::mm);
82}
Scalar phi() const
phi method
SoNode * getShapeNode_Strip(double length, double width=0, double depth=0)
bool measuresPhi(const Identifier &id) const override
static const RpcIdHelper * rpcIDHelper()
HitsSoNodeManager * nodeManager() const
VP1RawDataCommonData * common() const
const MuonGM::RpcReadoutElement * element() const

◆ buildTransform()

SoTransform * VP1RawDataHandle_RPC_Digit::buildTransform ( )
overrideprotectedvirtual

Implements VP1RawDataHandleBase.

Definition at line 84 of file VP1RawDataHandle_RPC_Digit.cxx.

85{
86 const auto* elem = element();
87 if (!elem)
88 return new SoTransform;
89 const Identifier id = m_data->identify();
90 // The tracking frame has X across the strip and Y along it, matching VP1.
91 // Do not use localToGlobalTransf(), which follows AMDB conventions instead.
92 Amg::Transform3D transform = elem->transform(id);
93 transform.translation() = elem->stripPos(id);
94 return VP1LinAlgUtils::toSoTransform(transform);
95}
static SoTransform * toSoTransform(const HepGeom::Transform3D &, SoTransform *t=0)
Eigen::Affine3d Transform3D

◆ center()

Amg::Vector3D VP1RawDataHandleBase::center ( )
virtualinherited

Definition at line 166 of file VP1RawDataHandleBase.cxx.

167{
168 m_d->ensureInitSepAndTransform(this);
169 assert(m_d->sep
170 && m_d->sep->getNumChildren()>0
171 && m_d->sep->getChild(0)->getTypeId().isDerivedFrom(SoTransform::getClassTypeId()));
172
173 float x,y,z;
174 static_cast<SoTransform*>(m_d->sep->getChild(0))->translation.getValue().getValue(x,y,z);
175 //NB: We assume that the center part of the transform is zero
176 return Amg::Vector3D(x,y,z);
177}
#define y
#define x
#define z
Eigen::Matrix< double, 3, 1 > Vector3D

◆ clicked()

QStringList VP1RawDataHandle_RPC_Digit::clicked ( bool verbose) const
overridevirtual

Implements VP1RawDataHandleBase.

Definition at line 29 of file VP1RawDataHandle_RPC_Digit.cxx.

30{
31 const Identifier id = m_data->identify();
32 const auto* helper = VP1DetInfo::rpcIDHelper();
33 const bool valid = helper && helper->valid(id);
34 QStringList lines;
35 lines << " ===> RPC Digit data";
36 lines << " Identifier: " + QString::fromStdString(id.getString());
37 lines << " Strip view: " + (valid ? QString(helper->measuresPhi(id) ? "Phi" : "Eta")
38 : QString("unavailable"));
39 lines << " Time [ns]: " + QString::number(m_data->time() / Gaudi::Units::ns);
40 lines << " Time over threshold [ns]: " + QString::number(m_data->ToT() / Gaudi::Units::ns)
41 + (m_data->ToT() < 0 ? " (not available)" : "");
42 lines << " stripSide: " + QString(m_data->stripSide() ? "true" : "false");
43 if (verbose) {
44 if (valid) {
45 lines << " Station name: " + QString::fromStdString(helper->stationNameString(id));
46 lines << " Station eta index: " + QString::number(helper->stationEta(id));
47 lines << " Station phi index: " + QString::number(helper->stationPhi(id));
48 lines << " Doublet R: " + QString::number(helper->doubletR(id));
49 lines << " Doublet Z: " + QString::number(helper->doubletZ(id));
50 lines << " Doublet phi: " + QString::number(helper->doubletPhi(id));
51 lines << " Gas gap: " + QString::number(helper->gasGap(id));
52 lines << " Strip: " + QString::number(helper->strip(id));
53 } else {
54 lines << " Decoded identifier unavailable";
55 }
56 const auto* elem = element();
57 if (elem) {
58 const Amg::Vector3D position = elem->stripPos(id);
59 lines << QString(" Global position [mm] (x, y, z): (%1, %2, %3)")
60 .arg(position.x() / Gaudi::Units::mm, 0, 'g', 10)
61 .arg(position.y() / Gaudi::Units::mm, 0, 'g', 10)
62 .arg(position.z() / Gaudi::Units::mm, 0, 'g', 10);
63 const bool phi = helper->measuresPhi(id);
64 lines << " Strip length [mm]: " + QString::number(elem->StripLength(phi) / Gaudi::Units::mm);
65 lines << " Strip width [mm]: " + QString::number(elem->StripWidth(phi) / Gaudi::Units::mm);
66 } else {
67 lines << " Global position unavailable";
68 }
69 }
70 return lines;
71}
bool verbose
Definition hcg.cxx:75
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
list valid
Definition calibdata.py:44

◆ coll()

VP1RawDataCollBase * VP1RawDataHandleBase::coll ( ) const
inlineinherited

Definition at line 40 of file VP1RawDataHandleBase.h.

40{ return m_coll; }
VP1RawDataCollBase * m_coll

◆ common()

VP1RawDataCommonData * VP1RawDataHandleBase::common ( ) const
inlineinherited

Definition at line 41 of file VP1RawDataHandleBase.h.

41{ return m_coll->common(); }

◆ element()

const MuonGM::RpcReadoutElement * VP1RawDataHandle_RPC_Digit::element ( ) const
private

Definition at line 21 of file VP1RawDataHandle_RPC_Digit.cxx.

22{
23 const auto* helper = VP1DetInfo::rpcIDHelper();
24 const auto* manager = VP1DetInfo::muonDetMgr();
25 return manager && helper && helper->valid(m_data->identify())
26 ? manager->getRpcReadoutElement(m_data->identify()) : nullptr;
27}
static const MuonGM::MuonDetectorManager * muonDetMgr()

◆ inInDetParts()

virtual VP1RawDataFlags::InDetPartsFlags VP1RawDataHandleBase::inInDetParts ( ) const
inlinevirtualinherited

Reimplemented in VP1RawDataHandle_PixelRDO, VP1RawDataHandle_SCT_RDO, and VP1RawDataHandle_TRT_RDO.

Definition at line 51 of file VP1RawDataHandleBase.h.

51{ return VP1RawDataFlags::None; }//Override if InDet

◆ measuresPhi()

bool VP1RawDataHandle_RPC_Digit::measuresPhi ( ) const

Definition at line 97 of file VP1RawDataHandle_RPC_Digit.cxx.

98{
99 const auto* helper = VP1DetInfo::rpcIDHelper();
100 return helper && helper->valid(m_data->identify()) && helper->measuresPhi(m_data->identify());
101}

◆ oppositeSide()

bool VP1RawDataHandle_RPC_Digit::oppositeSide ( ) const

Definition at line 103 of file VP1RawDataHandle_RPC_Digit.cxx.

103{ return m_data->stripSide(); }

◆ setVisible()

void VP1RawDataHandleBase::setVisible ( bool vis)
inherited

Definition at line 68 of file VP1RawDataHandleBase.cxx.

69{
70 if (vis==m_visible)
71 return;
72 m_visible=vis;
73 if (vis) {
74 if (!m_d->hasShape())
75 m_d->rebuild3DObjects(this);
76 m_d->ensureAttach3DObjects(this);
77 } else {
78 m_d->ensureDetach3DObjects(this);
79 }
80}

◆ time()

double VP1RawDataHandle_RPC_Digit::time ( ) const

Definition at line 104 of file VP1RawDataHandle_RPC_Digit.cxx.

104{ return m_data->time() / Gaudi::Units::ns; }

◆ timeOverThreshold()

double VP1RawDataHandle_RPC_Digit::timeOverThreshold ( ) const

Definition at line 105 of file VP1RawDataHandle_RPC_Digit.cxx.

105{ return m_data->ToT() / Gaudi::Units::ns; }

◆ unsignedToHex()

QString VP1RawDataHandleBase::unsignedToHex ( unsigned i)
staticinherited

Definition at line 158 of file VP1RawDataHandleBase.cxx.

159{
160 std::ostringstream s;
161 s << "0x" << std::hex << i;
162 return QString(s.str().c_str()).toUpper();
163}

◆ update3DObjects()

void VP1RawDataHandleBase::update3DObjects ( )
inherited

Definition at line 83 of file VP1RawDataHandleBase.cxx.

84{
85 if (m_visible) {
86 m_d->rebuild3DObjects(this);
87 } else {
88 //Simply clear the present 3D objects. They will only be recreated if/when the handle becomes visible again.
89 m_d->clearShape();
90 }
91}

◆ updateShownOutlines()

void VP1RawDataHandleBase::updateShownOutlines ( )
inherited

Definition at line 180 of file VP1RawDataHandleBase.cxx.

181{
182 if (!m_d->sep)
183 return;
185}
void updateVolumeOutlines(SoGroup *)

◆ visible()

bool VP1RawDataHandleBase::visible ( ) const
inlineinherited

Definition at line 44 of file VP1RawDataHandleBase.h.

44{ return m_visible; }

Member Data Documentation

◆ m_coll

VP1RawDataCollBase* VP1RawDataHandleBase::m_coll
privateinherited

Definition at line 70 of file VP1RawDataHandleBase.h.

◆ m_d

Imp* VP1RawDataHandleBase::m_d
privateinherited

Definition at line 68 of file VP1RawDataHandleBase.h.

◆ m_data

const RpcDigit* VP1RawDataHandle_RPC_Digit::m_data
private

Definition at line 25 of file VP1RawDataHandle_RPC_Digit.h.

◆ m_visible

bool VP1RawDataHandleBase::m_visible
privateinherited

Definition at line 71 of file VP1RawDataHandleBase.h.


The documentation for this class was generated from the following files: