61{
62
64
66
67 if (!idhelper) {
69 return;
70 }
71 const Muon::sTgcPrepData * prd =
stgc();
72
73 if (!prd) {
75 return;
76 }
77
79
81
84 const MuonGM::MuonPadDesign* pad_design = detEl->
getPadDesign(
id );
85
86
87
88
89
90 if (!pad_design) return;
91
94 CornerArray padEdges{};
96 double etaWidth = padEdges[padCorners::topRight].x() - padEdges[padCorners::botRight].x();
97 double phiMinWidth = padEdges[padCorners::botLeft].y();
98 double phiMaxWidth = padEdges[padCorners::topLeft].y();
99
101
102
103 SoSeparator * errDetailed = new SoSeparator;
104 errDetailed->addChild(
common()->nodeManager()->getShapeNode_Pad(etaWidth,phiMinWidth,phiMaxWidth,0.01));
105
106 shape_detailed = errDetailed;
107
108 return;
111 const MuonGM::MuonChannelDesign* design = detEl->
getDesign(
id );
112
113
114
115
116
119 if (!design) return;
120
124
125
127
128
129 SoSeparator * errDetailed = new SoSeparator;
130 errDetailed->addChild(
common()->nodeManager()->getShapeNode_Wire(etaWidth,phiMinWidth,phiMaxWidth,0.01));
131
132 shape_detailed = errDetailed;
133
134 return;
137 const MuonGM::MuonChannelDesign* design = detEl->
getDesign(
id );
138
139
140
141
142
145 if (!design) return;
146
149
151
152
153 SoSeparator * errDetailed = new SoSeparator;
154 errDetailed->addChild(
common()->nodeManager()->getShapeNode_Strip(striplength,std::min(10.0,stripWidth),0.01));
155
156 shape_detailed = errDetailed;
157
158 return;
159 }
160
161 return;
162
163 }
SoNode * getShapeNode_Wire(double length, double minWidth=0, double maxWidth=0, double depth=0)
SoNode * getShapeNode_Strip(double length, double width=0, double depth=0)
SoNode * getShapeNode_Pad(double length, double minWidth=0, double maxWidth=0, double depth=0)
const MuonPadDesign * getPadDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position - should be renamed to channel position If the strip number is outside the range of va...
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
virtual const MuonGM::sTgcReadoutElement * detectorElement() const override final
Returns the detector element corresponding to this PRD.
PRDSysCommonData * common() const
HitsSoNodeManager * nodeManager() const
Identifier identify() const
return the identifier
static const sTgcIdHelper * stgcIDHelper()
static void messageDebug(const QString &)
int channelType(const Identifier &id) const
int channel(const Identifier &id) const override
Eigen::Matrix< double, 2, 1 > Vector2D
double channelLength(int channel) const
STRIPS ONLY: calculate channel length for a given strip number.
bool channelCorners(const std::pair< int, int > &pad, CornerArray &corners) const
std::array< Amg::Vector2D, 4 > CornerArray
calculate local channel corners for a given channel number