13#include <Inventor/C/errors/debugerror.h>
14#include <Inventor/nodes/SoSeparator.h>
15#include <Inventor/nodes/SoTransform.h>
16#include <Inventor/nodes/SoTranslation.h>
36 const double mintuberadius = 0.1;
39 VP1Msg::message(
"Warning: TRT has additional elements in rdoList: NOT IMPLEMENTED");
66 std::vector<Amg::Vector3D > points;
110 const unsigned npoints = points.size();
111 if (npoints<1||npoints>2) {
112 collHandle()->
message(
"PRDHandle_TRT::buildShapes ERROR: Unexpected number of points in special endcap projections!!");
114 SoSeparator * sepsimple =
new SoSeparator;
118 sepsimple->addChild(transf1);
119 sepsimple->addChild(point);
120 SoTranslation * transf2(0);
122 transf2 =
new SoTranslation;
123 transf2->translation.setValue(points[1].
x()-points[0].
x(),points[1].
y()-points[0].
y(),points[1].
z()-points[0].
z());
124 sepsimple->addChild(transf2);
125 sepsimple->addChild(point);
127 shape_simple = sepsimple;
129 if (radius<mintuberadius) {
130 shape_detailed = shape_simple;
133 SoSeparator * sepdetailed =
new SoSeparator;
135 sepdetailed->addChild(transf1);
136 sepdetailed->addChild(disc);
138 sepdetailed->addChild(transf2);
139 sepdetailed->addChild(disc);
141 shape_detailed = sepdetailed;
144 inner =
false;outer =
false;
151 if (!inner&&!outer) {
152 collHandle()->
message(
"PRDHandle_TRT::buildShapes ERROR: Inconsistent projection settings! Won't project!");
156 if (radius<mintuberadius)
157 shape_detailed = shape_simple;
169 if (radius<mintuberadius)
170 shape_detailed = shape_simple;
196 for (i = 26; i >=0; i--)
198 if (i!=26&&(i+1)%9==0)
200 s += (
data & (0x1<<i) ?
"1" :
"0");
204 l <<
"Raw data bits: "+s;
207 std::ostringstream os;
208 os << std::hex<<
data;
209 l << QString(os.str().c_str());
char data[hepevt_bytes_allocation_ATLAS]
This is an Identifier helper class for the TRT subdetector.
SoNode * getShapeNode_Point()
SoNode * getShapeNode_DriftDisc(double radius)
SoNode * getShapeNode_ProjectedDriftTube(double halfLength, double radius, bool inner, bool outer)
SoNode * getShapeNode_DriftTube(double halfLength, double radius)
static void transformECPointToZPlane_specialZtoR(Amg::Vector3D &p, const double &planeZ, const double &planeRBegin, const double &endcapZBegin, const double &squeezeFactor)
static double trt_barrel_posneg_z()
static double trt_endcap_zasr_squeezefact()
static double surfacethickness()
static double trt_endcap_zasr_endcapz_begin()
static double trt_data_disttosurface_epsilon()
static double trt_endcap_zasr_innerradius()
InDetProjFlags::InDetProjPartsFlags appropriateProjections() const
Amg::Transform3D getTransform_CLHEP() const
virtual QStringList clicked() const
PRDHandleBase(PRDCollHandleBase *)
PRDSysCommonData * common() const
PRDCollHandleBase * collHandle() const
virtual Amg::Vector3D center() const
const InDet::TRT_DriftCircle * m_driftcircle
void buildShapes(SoNode *&shape_simple, SoNode *&shape_detailed)
virtual QStringList clicked() const
PRDHandle_TRT(PRDCollHandle_TRT *, const InDet::TRT_DriftCircle *)
HitsSoNodeManager * nodeManager() const
This is an Identifier helper class for the TRT subdetector.
int phi_module(const Identifier &id) const
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
int layer_or_wheel(const Identifier &id) const
Bounds for a cylindrical Surface.
double halflengthZ() const
This method returns the halflengthZ.
static const TRT_ID * trtIDHelper()
void message(const QString &) const
static SoTransform * toSoTransform(const HepGeom::Transform3D &, SoTransform *t=0)
static void message(const QString &, IVP1System *sys=0)
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Eigen::Translation< double, 3 > Translation3D