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

#include <VP1RawDataHandle_MM_RDO.h>

Inheritance diagram for VP1RawDataHandle_MM_RDO:
Collaboration diagram for VP1RawDataHandle_MM_RDO:

Public Member Functions

 VP1RawDataHandle_MM_RDO (VP1RawDataCollBase *, const MmDigit *)
virtual ~VP1RawDataHandle_MM_RDO ()
QStringList clicked (bool verbose) const
double amplitude () const
double time () const
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 ()
SoTransform * buildTransform ()
const MuonGM::MMReadoutElement * element () const

Protected Attributes

const MmDigit * m_data

Private Attributes

Imp * m_d
VP1RawDataCollBase * m_coll
bool m_visible

Detailed Description

Definition at line 26 of file VP1RawDataHandle_MM_RDO.h.

Constructor & Destructor Documentation

◆ VP1RawDataHandle_MM_RDO()

VP1RawDataHandle_MM_RDO::VP1RawDataHandle_MM_RDO ( VP1RawDataCollBase * coll,
const MmDigit * data )

Definition at line 35 of file VP1RawDataHandle_MM_RDO.cxx.

37{
38}
VP1RawDataHandleBase(VP1RawDataCollBase *)
VP1RawDataCollBase * coll() const

◆ ~VP1RawDataHandle_MM_RDO()

VP1RawDataHandle_MM_RDO::~VP1RawDataHandle_MM_RDO ( )
virtual

Definition at line 41 of file VP1RawDataHandle_MM_RDO.cxx.

42{
43}

Member Function Documentation

◆ amplitude()

double VP1RawDataHandle_MM_RDO::amplitude ( ) const

Definition at line 148 of file VP1RawDataHandle_MM_RDO.cxx.

149{
150 return m_data->stripResponseCharge();
151}

◆ buildShape()

SoNode * VP1RawDataHandle_MM_RDO::buildShape ( )
protectedvirtual

Implements VP1RawDataHandleBase.

Definition at line 91 of file VP1RawDataHandle_MM_RDO.cxx.

92{
93 const MuonGM::MMReadoutElement* elem = element();
94 Identifier id(m_data->identify());
95
96 static const MmIdHelper* idhelper = VP1DetInfo::mmIDHelper();
97 if (!idhelper) {
99 "MM idhelper is null. Returning without building the shape for MM "
100 "digits...");
101 SoNode* node = common()->nodeManager()->getShapeNode_Point();
102 return node;
103 }
104
105 VP1Msg::messageDebug("Building MM digit strip...");
106 const MuonGM::MuonChannelDesign* design = elem->getDesign(id);
107
108 double striplength{0.}, stripWidth{0.};
109 int channel = idhelper->channel(id);
110
111 Amg::Vector2D locPos;
112 elem->stripPosition(id, locPos);
113
114 striplength = design->channelLength(channel);
115 stripWidth = design->inputWidth;
116
117 SoNode* node = common()->nodeManager()->getShapeNode_Strip(
118 striplength, std::min(10.0, stripWidth), 0.01);
119
120 return node;
121}
SoNode * getShapeNode_Strip(double length, double width=0, double depth=0)
int channel(const Identifier &id) const override
static const MmIdHelper * mmIDHelper()
static void messageDebug(const QString &)
Definition VP1Msg.cxx:39
HitsSoNodeManager * nodeManager() const
VP1RawDataCommonData * common() const
const MuonGM::MMReadoutElement * element() const
Eigen::Matrix< double, 2, 1 > Vector2D
double channelLength(int channel) const
STRIPS ONLY: calculate channel length for a given strip number.

◆ buildTransform()

SoTransform * VP1RawDataHandle_MM_RDO::buildTransform ( )
protectedvirtual

Implements VP1RawDataHandleBase.

Definition at line 124 of file VP1RawDataHandle_MM_RDO.cxx.

125{
126 const MuonGM::MMReadoutElement * elem = element();
127 if (!elem)
128 return new SoTransform;//fixme
129 Identifier id(m_data->identify());
130
131 Amg::Vector3D globalPos;
132 elem->stripGlobalPosition(id, globalPos);
133
135}
static SoTransform * toSoTransform(const HepGeom::Transform3D &, SoTransform *t=0)
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D

◆ 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

◆ clicked()

QStringList VP1RawDataHandle_MM_RDO::clicked ( bool verbose) const
virtual

Implements VP1RawDataHandleBase.

Definition at line 46 of file VP1RawDataHandle_MM_RDO.cxx.

47{
48 const Identifier id = m_data->identify();
49 QStringList ll;
50 ll << " ===> MM Digit data";
51 ll << " Identifier: " + QString::fromStdString(id.getString());
52 ll << " stripResponseTime: " + QString::number(m_data->stripResponseTime());
53 ll << " stripResponseCharge: " + QString::number(m_data->stripResponseCharge());
54 if (verbose) {
55 const MmIdHelper* idhelper = VP1DetInfo::mmIDHelper();
56 const bool valid = idhelper && idhelper->valid(id);
57 if (valid) {
58 ll << " Station name: " + QString::fromStdString(idhelper->stationNameString(id));
59 ll << " Station eta index: " + QString::number(idhelper->stationEta(id));
60 ll << " Station phi index: " + QString::number(idhelper->stationPhi(id));
61 ll << " Multilayer: " + QString::number(idhelper->multilayer(id));
62 ll << " Gas gap: " + QString::number(idhelper->gasGap(id));
63 ll << " Channel: " + QString::number(idhelper->channel(id));
64 } else {
65 ll << " Decoded identifier unavailable";
66 }
67 const MuonGM::MMReadoutElement* elem = valid ? element() : nullptr;
68 const MuonGM::MuonChannelDesign* design = elem ? elem->getDesign(id) : nullptr;
69 if (design) {
70 const double length = design->channelLength(idhelper->channel(id));
71 const double angle = design->stereoAngle();
72 ll << " Strip length [mm]: " + QString::number(length / Gaudi::Units::mm);
73 ll << " Stereo angle [deg]: " + QString::number(angle / Gaudi::Units::degree);
74 } else {
75 ll << " Strip geometry unavailable";
76 }
77 Amg::Vector3D position = Amg::Vector3D::Zero();
78 if (elem && elem->stripGlobalPosition(id, position)) {
79 ll << QString(" Global position [mm] (x, y, z): (%1, %2, %3)")
80 .arg(position.x() / Gaudi::Units::mm, 0, 'g', 10)
81 .arg(position.y() / Gaudi::Units::mm, 0, 'g', 10)
82 .arg(position.z() / Gaudi::Units::mm, 0, 'g', 10);
83 } else {
84 ll << " Global position unavailable";
85 }
86 }
87 return ll;
88}
double length(const pvec &v)
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
bool valid(const Identifier &id) const
int gasGap(const Identifier &id) const override
get the hashes
int multilayer(const Identifier &id) const
int stationEta(const Identifier &id) const
const std::string & stationNameString(const Identifier &id) const
int stationPhi(const Identifier &id) const
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
long long ll
double stereoAngle() const
returns the stereo angle

◆ 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::MMReadoutElement * VP1RawDataHandle_MM_RDO::element ( ) const
protected

Definition at line 138 of file VP1RawDataHandle_MM_RDO.cxx.

139{
140
141 const MuonGM::MuonDetectorManager * detmgr = VP1DetInfo::muonDetMgr();
142
143 if (!detmgr)
144 return 0;
145 return detmgr->getMMReadoutElement(m_data->identify());
146}
const MMReadoutElement * getMMReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
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

◆ 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_MM_RDO::time ( ) const

Definition at line 153 of file VP1RawDataHandle_MM_RDO.cxx.

154{
155 return m_data->stripResponseTime();
156}

◆ 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 MmDigit* VP1RawDataHandle_MM_RDO::m_data
protected

Definition at line 40 of file VP1RawDataHandle_MM_RDO.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: