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

#include <VP1RawDataHandle_TGC_Digit.h>

Inheritance diagram for VP1RawDataHandle_TGC_Digit:
Collaboration diagram for VP1RawDataHandle_TGC_Digit:

Public Member Functions

 VP1RawDataHandle_TGC_Digit (VP1RawDataCollBase *, const TgcDigit *)
bool isStrip () const
unsigned bcTag () 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::TgcReadoutElement * element () const

Private Attributes

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

Detailed Description

Definition at line 13 of file VP1RawDataHandle_TGC_Digit.h.

Constructor & Destructor Documentation

◆ VP1RawDataHandle_TGC_Digit()

VP1RawDataHandle_TGC_Digit::VP1RawDataHandle_TGC_Digit ( VP1RawDataCollBase * collection,
const TgcDigit * data )

Definition at line 15 of file VP1RawDataHandle_TGC_Digit.cxx.

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

Member Function Documentation

◆ bcTag()

unsigned VP1RawDataHandle_TGC_Digit::bcTag ( ) const

Definition at line 113 of file VP1RawDataHandle_TGC_Digit.cxx.

114{
115 return m_data->bcTag();
116}

◆ buildShape()

SoNode * VP1RawDataHandle_TGC_Digit::buildShape ( )
overrideprotectedvirtual

Implements VP1RawDataHandleBase.

Definition at line 71 of file VP1RawDataHandle_TGC_Digit.cxx.

72{
73 const auto* elem = element();
74 if (!elem)
76 const auto* helper = VP1DetInfo::tgcIDHelper();
77 const Identifier id = m_data->identify();
78 const int gap = helper->gasGap(id);
79 const int channel = helper->channel(id);
80 const bool strip = helper->isStrip(id);
81 const double length = strip ? elem->stripLength() : elem->gangCentralWidth(gap, channel);
82 const double width = strip ? elem->stripWidth(gap, channel) : elem->gangRadialLength(gap, channel);
83 // The box represents the channel footprint; depth is a display thickness in mm.
85}
double length(const pvec &v)
const double width
SoNode * getShapeNode_Strip(double length, double width=0, double depth=0)
static const TgcIdHelper * tgcIDHelper()
HitsSoNodeManager * nodeManager() const
VP1RawDataCommonData * common() const
const MuonGM::TgcReadoutElement * element() const
gap(flags, cells_name, *args, **kw)

◆ buildTransform()

SoTransform * VP1RawDataHandle_TGC_Digit::buildTransform ( )
overrideprotectedvirtual

Implements VP1RawDataHandleBase.

Definition at line 87 of file VP1RawDataHandle_TGC_Digit.cxx.

88{
89 const auto* elem = element();
90 if (!elem)
91 return new SoTransform;
92 const Identifier id = m_data->identify();
93 Amg::Transform3D transform = elem->localToGlobalTransf(id);
94 // VP1 strip shapes follow local Y. Use the actual strip direction, including
95 // its stereo angle; wire gangs follow the wire-plane X axis.
96 const bool strip = VP1DetInfo::tgcIDHelper()->isStrip(id);
97 const Amg::Vector3D along = strip ? elem->stripDir(id).normalized()
98 : Amg::Vector3D(transform.linear().col(0));
99 const Amg::Vector3D normal = transform.linear().col(2);
100 transform.linear().col(0) = along.cross(normal).normalized();
101 transform.linear().col(1) = along;
102 transform.linear().col(2) = normal;
103 transform.translation() = elem->channelPos(id);
104 return VP1LinAlgUtils::toSoTransform(transform);
105}
int isStrip(const Identifier &id) const
isStrip corresponds to measuresPhi
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_TGC_Digit::clicked ( bool verbose) const
overridevirtual

Implements VP1RawDataHandleBase.

Definition at line 28 of file VP1RawDataHandle_TGC_Digit.cxx.

29{
30 const Identifier id = m_data->identify();
31 const auto* helper = VP1DetInfo::tgcIDHelper();
32 const bool valid = helper && helper->valid(id);
33 QStringList lines;
34 lines << " ===> TGC Digit data";
35 lines << " Identifier: " + QString::fromStdString(id.getString());
36 lines << " Channel type: " + (valid ? QString(helper->isStrip(id) ? "Strip" : "Wire gang")
37 : QString("unavailable"));
38 QString bc;
39 switch (m_data->bcTag()) {
40 case TgcDigit::BC_UNDEFINED: bc = "undefined"; break;
41 case TgcDigit::BC_PREVIOUS: bc = "previous"; break;
42 case TgcDigit::BC_CURRENT: bc = "current"; break;
43 case TgcDigit::BC_NEXT: bc = "next"; break;
44 case TgcDigit::BC_NEXTNEXT: bc = "next-next"; break;
45 default: bc = "unknown"; break;
46 }
47 lines << QString(" BC tag: %1 (%2)").arg(m_data->bcTag()).arg(bc);
48 if (verbose) {
49 if (valid) {
50 lines << " Station name: " + QString::fromStdString(helper->stationNameString(id));
51 lines << " Station eta index: " + QString::number(helper->stationEta(id));
52 lines << " Station phi index: " + QString::number(helper->stationPhi(id));
53 lines << " Gas gap: " + QString::number(helper->gasGap(id));
54 lines << " Channel: " + QString::number(helper->channel(id));
55 } else {
56 lines << " Decoded identifier unavailable";
57 }
58 const auto* elem = element();
59 if (elem) {
60 const Amg::Vector3D position = elem->channelPos(id);
61 lines << QString(" Global position [mm] (x, y, z): (%1, %2, %3)")
62 .arg(position.x(), 0, 'g', 10).arg(position.y(), 0, 'g', 10)
63 .arg(position.z(), 0, 'g', 10);
64 } else {
65 lines << " Global position unavailable";
66 }
67 }
68 return lines;
69}
if(pathvar)
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::TgcReadoutElement * VP1RawDataHandle_TGC_Digit::element ( ) const
private

Definition at line 20 of file VP1RawDataHandle_TGC_Digit.cxx.

21{
22 const auto* helper = VP1DetInfo::tgcIDHelper();
23 const auto* manager = VP1DetInfo::muonDetMgr();
24 return manager && helper && helper->valid(m_data->identify())
25 ? manager->getTgcReadoutElement(m_data->identify()) : nullptr;
26}
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

◆ isStrip()

bool VP1RawDataHandle_TGC_Digit::isStrip ( ) const

Definition at line 107 of file VP1RawDataHandle_TGC_Digit.cxx.

108{
109 const auto* helper = VP1DetInfo::tgcIDHelper();
110 return helper && helper->valid(m_data->identify()) && helper->isStrip(m_data->identify());
111}

◆ 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}

◆ 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 TgcDigit* VP1RawDataHandle_TGC_Digit::m_data
private

Definition at line 24 of file VP1RawDataHandle_TGC_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: