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

#include <PRDHandle_Pixel.h>

Inheritance diagram for PRDHandle_Pixel:
Collaboration diagram for PRDHandle_Pixel:

Public Member Functions

 PRDHandle_Pixel (PRDCollHandle_Pixel *, const InDet::PixelCluster *)
virtual ~PRDHandle_Pixel ()
void buildShapes (SoNode *&shape_simple, SoNode *&shape_detailed)
int regionIndex ()
const InDet::PixelClustercluster () const
const Trk::PrepRawDatagetPRD () const
bool isBarrel () const
bool isPositiveZ () const
bool isSane () const
 returns false if anything seems weird about the Pixelcluster
void setVisible (bool)
bool visible () const
virtual bool highLight () const
virtual bool transformUsesSurfacePositionOnly () const
SoSeparator * sepSimple () const
SoSeparator * sepDetailed () const
PRDSysCommonDatacommon () const
virtual Amg::Vector3D center () const
Amg::Vector3D positionPRD () const
Amg::Vector3D positionSecondPRD () const
Amg::Transform3D getTransform_CLHEP () const
virtual SoTransform * createTransform () const
void update3DObjects ()
void updateMaterial ()
virtual QStringList clicked () const
virtual bool inMuonChamber () const
virtual GeoPVConstLink parentMuonChamberPV () const
PRDCollHandleBasecollHandle () const
virtual const Trk::PrepRawDatagetSecondPRD () const

Private Member Functions

SoGroup * createErrorAtPixelCluster (const double &sigmaScale, const int &numPoints) const

Private Attributes

const InDet::PixelClusterm_cluster
Impm_d
PRDSysCommonDatam_common
bool m_visible

Detailed Description

Definition at line 14 of file PRDHandle_Pixel.h.

Constructor & Destructor Documentation

◆ PRDHandle_Pixel()

PRDHandle_Pixel::PRDHandle_Pixel ( PRDCollHandle_Pixel * collhandle,
const InDet::PixelCluster * clus )

Definition at line 23 of file PRDHandle_Pixel.cxx.

24 : PRDHandleBase(static_cast<PRDCollHandleBase*>(collhandle)), m_cluster(clus)
25{
27}
PRDHandleBase(PRDCollHandleBase *)
const InDet::PixelCluster * m_cluster
static void initClass()

◆ ~PRDHandle_Pixel()

virtual PRDHandle_Pixel::~PRDHandle_Pixel ( )
inlinevirtual

Definition at line 18 of file PRDHandle_Pixel.h.

18{};

Member Function Documentation

◆ buildShapes()

void PRDHandle_Pixel::buildShapes ( SoNode *& shape_simple,
SoNode *& shape_detailed )
virtual

Implements PRDHandleBase.

Definition at line 30 of file PRDHandle_Pixel.cxx.

31{
32 SoSeparator * errSimple = new SoSeparator;
33 SoSeparator * errDetailed = new SoSeparator;
34
35 if (!isSane()) {
36 std::cerr<<"isSane check failed for PRD: "<<*m_cluster<<std::endl;
37 return;
38 }
39 errSimple->addChild(common()->nodeManager()->getShapeNode_Point());
40
41 Amg::Vector2D localpos = m_cluster->localPosition();
42 Amg::Vector2D localposHIT = m_cluster->detectorElement()->rawLocalPositionOfCell( m_cluster->identify() ); // Lorentz shift is not corrected because this class cannot use SiLorentzAngleTool
43 SoTranslation * localtrans0 = new SoTranslation;
44
45 double xdiff = localposHIT[Trk::locX]-localpos[Trk::locX];
46 double ydiff = localposHIT[Trk::locY]-localpos[Trk::locY];
47
48 if (xdiff!=xdiff || ydiff!=ydiff) {
49 std::cerr<<"NaN is in local pos calc"<<std::endl;
50 if (xdiff!=xdiff) std::cerr<<"X diff"<<std::endl;
51 if (ydiff!=ydiff) std::cerr<<"Y diff"<<std::endl;
52 std::cerr<<"localposHIT:"<<localposHIT<<std::endl;
53 std::cerr<<"localpos:"<<localpos<<std::endl;
54 std::cerr<<"localposHIT[Trk::locX]-localpos[Trk::locX]:"<<xdiff<<std::endl;
55 std::cerr<<"localposHIT[Trk::locY]-localpos[Trk::locY]:"<<ydiff<<std::endl;
56 localtrans0->unref();
57 return;
58 } else {
59 localtrans0->translation.setValue(localposHIT[Trk::locX]-localpos[Trk::locX],localposHIT[Trk::locY]-localpos[Trk::locY],0);
60 }
61
62 const std::vector<Identifier> rdolist = m_cluster->rdoList();
63 if (rdolist.size() == 1 || !collHandle()->drawRDOs())
64 {
65 errDetailed->addChild(localtrans0);
66 //FIXME: dont hardcode thickness
67 errDetailed->addChild(common()->nodeManager()->getShapeNode_Strip(m_cluster->detectorElement()->etaPitch(),m_cluster->detectorElement()->etaPitch(),m_cluster->detectorElement()->thickness()/10.0));
68
69 //Translate back so errDetailed is left sane (eg. when drawing errors later)
70 SoTranslation * localtransBack = new SoTranslation;
71 localtransBack->translation.setValue(-(localtrans0->translation.getValue()));
72 errDetailed->addChild(localtransBack);
73 } else {
74 SoSeparator * rdos = new SoSeparator;
75 rdos->addChild(localtrans0);
76
77 rdos->addChild(common()->nodeManager()->getShapeNode_Strip(m_cluster->detectorElement()->etaPitch(),m_cluster->detectorElement()->phiPitch( m_cluster->localPosition() ),m_cluster->detectorElement()->thickness()/10.0));
78
79 SoTransparency * transparent = new SoTransparency;
80 transparent->transparency.setValue(0.5);
81 rdos->addChild( transparent );
82 Amg::Vector2D localposOLD = localposHIT;
83 for (const Identifier& rdo_id : rdolist)
84 {
85 if (rdo_id == m_cluster->identify() )
86 continue;
87
88 const Amg::Vector2D localposRDO = m_cluster->detectorElement()->rawLocalPositionOfCell(rdo_id); // Lorentz shift is not corrected because this class cannot use SiLorentzAngleTool
89
90 SoTranslation * localtrans = new SoTranslation;
91 localtrans->translation.setValue(localposRDO[Trk::locX]-localposOLD[Trk::locX],
92 localposRDO[Trk::locY]-localposOLD[Trk::locY],
93 0);
94 rdos->addChild(localtrans);
95
96 //FIXME: dont hardcode thickness
97 rdos->addChild(common()->nodeManager()->getShapeNode_Strip(m_cluster->detectorElement()->etaPitch(),
98 m_cluster->detectorElement()->phiPitch( m_cluster->localPosition() ),
99 m_cluster->detectorElement()->thickness()/10.0));
100
101 localposOLD = localposRDO;
102 }
103 errDetailed->addChild(rdos);
104 }
105
106 const double settingsSIGMASCALE=3.0;
107 if (collHandle()->drawErrors())
108 {
109 SoGroup * gr = createErrorAtPixelCluster( settingsSIGMASCALE, 36);
110 if (gr->getNumChildren()==0) {
111 gr->unref();
112 std::cerr<<"Something seems to have gone wrong: no error added. Dumping PRD: "<<*m_cluster<<std::endl;
113 } else {
114 errSimple->addChild( gr );
115 errDetailed->addChild( gr );
116 }
117 }
118
119 //FIXME: hardcoded colour
120 SoMaterial * mat = new SoMaterial;
121 mat->diffuseColor.setValue(1.0,0,0);
122 errDetailed->addChild(mat);
123 errDetailed->addChild(common()->nodeManager()->getShapeNode_Cross(0.1));
124
125 shape_simple = errSimple;
126 shape_detailed = errDetailed;
127}
#define gr
PRDSysCommonData * common() const
PRDCollHandleBase * collHandle() const
SoGroup * createErrorAtPixelCluster(const double &sigmaScale, const int &numPoints) const
bool isSane() const
returns false if anything seems weird about the Pixelcluster
SoSFFloat transparency
Eigen::Matrix< double, 2, 1 > Vector2D
@ locY
local cartesian
Definition ParamDefs.h:38
@ locX
Definition ParamDefs.h:37

◆ center()

Amg::Vector3D PRDHandleBase::center ( ) const
virtualinherited

Reimplemented in PRDHandle_SpacePoint.

Definition at line 316 of file PRDHandleBase.cxx.

317{
318 return positionPRD();
319}
Amg::Vector3D positionPRD() const

◆ clicked()

QStringList PRDHandleBase::clicked ( ) const
virtualinherited

Reimplemented in PRDHandle_CSC, PRDHandle_CSC_Strip, PRDHandle_MDT, PRDHandle_MM, PRDHandle_RPC, and PRDHandle_TRT.

Definition at line 276 of file PRDHandleBase.cxx.

277{
278 const Trk::PrepRawData * prd = getPRD();
279 if (!prd)
280 return QStringList("Null PRD");
281 std::ostringstream os;
282 os << *(prd);
283 return QString(os.str().c_str()).split("\n");
284}
virtual const Trk::PrepRawData * getPRD() const =0

◆ cluster()

const InDet::PixelCluster * PRDHandle_Pixel::cluster ( ) const
inline

Definition at line 23 of file PRDHandle_Pixel.h.

23{ return m_cluster; }

◆ collHandle()

PRDCollHandleBase * PRDHandleBase::collHandle ( ) const
inherited

Definition at line 228 of file PRDHandleBase.cxx.

229{
230 return m_d->colhandle;
231}

◆ common()

PRDSysCommonData * PRDHandleBase::common ( ) const
inlineinherited

Definition at line 53 of file PRDHandleBase.h.

53{ return m_common; }
PRDSysCommonData * m_common

◆ createErrorAtPixelCluster()

SoGroup * PRDHandle_Pixel::createErrorAtPixelCluster ( const double & sigmaScale,
const int & numPoints ) const
private

Definition at line 140 of file PRDHandle_Pixel.cxx.

142{
143 SoGroup * ellipseGrp = new SoSeparator;
144
145 //FIXME: Try to automatically use the pixel height as in PRDHandle_Pixel.cxx (this is just copy paste)
146 // change the last true to false above to get rid of one of the error ellipses
147// VP1ErrorUtils::addRotatedErrorEllipse(ellipseGrp, m_cluster->localErrorMatrix().covariance(), sigmaScale, numPoints,m_cluster->detectorElement()->thickness()/20.0 + 0.001, true);
148 VP1ErrorUtils::addRotatedErrorEllipse(ellipseGrp, m_cluster->localCovariance(), sigmaScale, numPoints,m_cluster->detectorElement()->thickness()/20.0 + 0.001, true);
149
150 return ellipseGrp;
151}
static void addRotatedErrorEllipse(SoGroup *gr, const AmgSymMatrix(5)&covmat, const double &sigmaScale, int numNodes=12, const double &translate=0.0, const bool &symmetric=false)

◆ createTransform()

SoTransform * PRDHandleBase::createTransform ( ) const
virtualinherited

Reimplemented in PRDHandle_sTGC, and PRDHandle_TGC.

Definition at line 371 of file PRDHandleBase.cxx.

372{
373 //NB: Some code duplicated here and in the getTransform_CLHEP() method.
374 const Trk::PrepRawData * prd = getPRD();
375 if (!prd) {
376 std::cerr<<"PRDHandleBase::createTransform() No prd!"<<std::endl;
377 return new SoTransform;
378 }
379 const Trk::Surface& theSurface = prd->detectorElement()->surface(prd->identify());
380 SoTransform * theHitTransform = VP1LinAlgUtils::toSoTransform(theSurface.transform());
381
382 Amg::Vector3D theHitGPos;
384 // for tubes, should use position of center of tube (if drawing full tube)
385 theHitGPos= Amg::Vector3D (theSurface.center());
386 } else {
387 // for strips, clusters or short tubes, use position of hit.
388 theHitGPos = theSurface.localToGlobal(prd->localPosition());
389 }
390 if ((theHitGPos)[0]!=(theHitGPos)[0] || (theHitGPos)[1]!=(theHitGPos)[1] || (theHitGPos)[2]!=(theHitGPos)[2]){
391 std::cerr<<"PRDHandleBase::createTransform() NaN in globalposition"<<std::endl;
392 }
393 theHitTransform->translation.setValue((theHitGPos)[0], (theHitGPos)[1], (theHitGPos)[2]);
394 return theHitTransform;
395}
virtual bool transformUsesSurfacePositionOnly() const
virtual const TrkDetElementBase * detectorElement() const =0
return the detector element corresponding to this PRD The pointer will be zero if the det el is not d...
const Amg::Vector2D & localPosition() const
return the local position reference
Identifier identify() const
return the identifier
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
const Amg::Vector3D & center() const
Returns the center position of the Surface.
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const =0
Specified by each surface type: LocalToGlobal method without dynamic memory allocation.
virtual const Surface & surface() const =0
Return surface associated with this detector element.
static SoTransform * toSoTransform(const HepGeom::Transform3D &, SoTransform *t=0)
Eigen::Matrix< double, 3, 1 > Vector3D

◆ getPRD()

const Trk::PrepRawData * PRDHandle_Pixel::getPRD ( ) const
inlinevirtual

Implements PRDHandleBase.

Definition at line 24 of file PRDHandle_Pixel.h.

24{ return m_cluster; }

◆ getSecondPRD()

virtual const Trk::PrepRawData * PRDHandleBase::getSecondPRD ( ) const
inlinevirtualinherited

Reimplemented in PRDHandle_SpacePoint.

Definition at line 73 of file PRDHandleBase.h.

73{ return 0; }//For SCT spacepoints

◆ getTransform_CLHEP()

Amg::Transform3D PRDHandleBase::getTransform_CLHEP ( ) const
inherited

Definition at line 322 of file PRDHandleBase.cxx.

323{
324 if (m_d->sepDetailed&&m_d->sepDetailed->getNumChildren()>0) {
325 //For efficiency/consistency we simply copy the transform from the
326 //inventor transformation (only loose slight precision in the
327 //double->float->double conversions):
328 SoTransform * transform = static_cast<SoTransform*>(m_d->sepDetailed->getChild(0));
329 float tx, ty, tz;
330 transform->translation.getValue().getValue(tx,ty,tz);
331 SbVec3f so_rotaxis;
332 float so_rotangle;
333 transform->rotation.getValue().getValue(so_rotaxis, so_rotangle);
334 float rx, ry, rz;
335 so_rotaxis.getValue(rx,ry,rz);
336 Amg::Vector3D axis(rx,ry,rz);
337// Amg::AngleAxis3D angleAxis = Amg::getRotation3DfromAngleAxis( so_rotangle, axis );
338// Amg::Rotation3D rot;
339// rot = angleAxis;
340 Amg::Rotation3D rot = Amg::getRotation3DfromAngleAxis( so_rotangle, axis );
341 return Amg::Translation3D(tx,ty,tz) * rot;
342 }
343 std::cout<<"VP1 PRDHandleBase Warning: getTransform_CLHEP called at inopportune moment!!"<<std::endl;
344
345 //NB: Some code duplicated here and in the createTransform() method.
346
347 const Trk::PrepRawData * prd = getPRD();
348 if (!prd) {
349 return Amg::Transform3D::Identity();
350 }
351 const Trk::Surface& theSurface = prd->detectorElement()->surface(prd->identify());
352 Amg::Vector3D theHitGPos;
354 // for tubes, should use position of center of tube (if drawing full tube)
355 theHitGPos= Amg::Vector3D(theSurface.center());
356 } else {
357 // for clusters or short tubes, use position of hit.
358 theHitGPos = theSurface.localToGlobal(prd->localPosition()); //theSurface 'new s' a Vector3D and returns pointer
359 }
360
361// CLHEP::Hep3Vector t(theSurface.transform().getTranslation());
362// return HepGeom::Transform3D( HepGeom::Translate3D(theHitGPos->x()-t.x(),theHitGPos->y()-t.y(),theHitGPos->z()-t.z()) * (theSurface.transform()) );
365 Amg::Translation3D transl = Amg::Translation3D(theHitGPos.x()-t.x(), theHitGPos.y()-t.y(), theHitGPos.z()-t.z());
366 Amg::Transform3D transf = transl * (theSurface.transform());
367 return transf;
368}
static Double_t rz
Amg::Vector3D getTranslationVectorFromTransform(const Amg::Transform3D &tr)
Get the Translation vector out of a Transformation.
Eigen::Quaternion< double > Rotation3D
Eigen::Affine3d Transform3D
Amg::Rotation3D getRotation3DfromAngleAxis(double angle, Amg::Vector3D &axis)
get a AngleAxis from an angle and an axis.
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Eigen::Translation< double, 3 > Translation3D

◆ highLight()

virtual bool PRDHandleBase::highLight ( ) const
inlinevirtualinherited

Reimplemented in PRDHandle_MDT, and PRDHandle_TRT.

Definition at line 45 of file PRDHandleBase.h.

45{ return false; }//Return true to get hit highlighted (for e.g. a TRT hits with HT).

◆ inMuonChamber()

virtual bool PRDHandleBase::inMuonChamber ( ) const
inlinevirtualinherited

Reimplemented in PRDHandle_CSC, PRDHandle_CSC_Strip, PRDHandle_MDT, PRDHandle_MM, PRDHandle_RPC, PRDHandle_sTGC, and PRDHandle_TGC.

Definition at line 67 of file PRDHandleBase.h.

67{ return false; }

◆ isBarrel()

bool PRDHandle_Pixel::isBarrel ( ) const
inline

Definition at line 25 of file PRDHandle_Pixel.h.

25{ return m_cluster->detectorElement()->isBarrel(); }

◆ isPositiveZ()

bool PRDHandle_Pixel::isPositiveZ ( ) const
inline

Definition at line 26 of file PRDHandle_Pixel.h.

26{ return m_cluster->detectorElement()->center().z() > 0.0; }

◆ isSane()

bool PRDHandle_Pixel::isSane ( ) const
virtual

returns false if anything seems weird about the Pixelcluster

Reimplemented from PRDHandleBase.

Definition at line 153 of file PRDHandle_Pixel.cxx.

153 {
154 // check for NaNs
155 bool isSane=true;
156 const InDet::PixelCluster * prd =cluster();
157 if (!prd) return false;
158 if (prd->localPosition()[0]!=prd->localPosition()[0] || prd->localPosition()[1]!=prd->localPosition()[1]){
159 isSane=false;
160 std::cerr<<"For pixel cluster with Id="<<prd->identify()<<", localposition is not sane:"<<(prd->localPosition())<<std::endl;
161 }
162 bool etaNan = std::isnan(m_cluster->detectorElement()->etaPitch());
163 bool phiNan = std::isnan(m_cluster->detectorElement()->phiPitch( m_cluster->localPosition()));
164 bool thickNan = std::isnan(m_cluster->detectorElement()->thickness());
165
166 if ( etaNan || phiNan || thickNan){
167 std::cerr<<"For pixel cluster with Id="<<prd->identify()<<", NaN is in detectorElement pitches "<<std::endl;
168 if (etaNan) std::cerr<<" - eta (which is returning "<<m_cluster->detectorElement()->etaPitch()<<")"<<std::endl;
169 if (phiNan) std::cerr<<" - phi (which is returning "<<m_cluster->detectorElement()->phiPitch(m_cluster->localPosition())<<")"<<std::endl;
170 if (thickNan) std::cerr<<" - thickness (which is returning "<<m_cluster->detectorElement()->thickness()<<")"<<std::endl;
171 }
172
173 return isSane;
174}
const InDet::PixelCluster * cluster() const

◆ parentMuonChamberPV()

virtual GeoPVConstLink PRDHandleBase::parentMuonChamberPV ( ) const
inlinevirtualinherited

Reimplemented in PRDHandle_CSC, PRDHandle_CSC_Strip, PRDHandle_MDT, PRDHandle_MM, PRDHandle_RPC, PRDHandle_sTGC, and PRDHandle_TGC.

Definition at line 68 of file PRDHandleBase.h.

68{ return GeoPVConstLink(); }

◆ positionPRD()

Amg::Vector3D PRDHandleBase::positionPRD ( ) const
inherited

Definition at line 303 of file PRDHandleBase.cxx.

304{
305 return Imp::positionPRD(getPRD());
306}
static Amg::Vector3D positionPRD(const Trk::PrepRawData *prd)

◆ positionSecondPRD()

Amg::Vector3D PRDHandleBase::positionSecondPRD ( ) const
inherited

Definition at line 309 of file PRDHandleBase.cxx.

310{
312}
virtual const Trk::PrepRawData * getSecondPRD() const

◆ regionIndex()

int PRDHandle_Pixel::regionIndex ( )
virtual

Reimplemented from PRDHandleBase.

Definition at line 130 of file PRDHandle_Pixel.cxx.

130 { //instead of identifier juggling, we simply discretize by center coordinate.
131 static const double l=200.0;//CLHEP::mm
132 return static_cast<int>(m_cluster->detectorElement()->center().z()/l)
133 +1000*static_cast<int>(m_cluster->detectorElement()->center().y()/l)
134 +1000000*static_cast<int>(m_cluster->detectorElement()->center().x()/l);
135 //Fixme: Use identifiers instead for more intuitive regions.
136}
#define y
#define x
#define z
virtual Amg::Vector3D center() const
l
Printing final latex table to .tex output file.

◆ sepDetailed()

SoSeparator * PRDHandleBase::sepDetailed ( ) const
inherited

Definition at line 60 of file PRDHandleBase.cxx.

61{
62 return m_d->sepDetailed;
63}

◆ sepSimple()

SoSeparator * PRDHandleBase::sepSimple ( ) const
inherited

Definition at line 54 of file PRDHandleBase.cxx.

55{
56 return m_d->sepSimple;
57}

◆ setVisible()

void PRDHandleBase::setVisible ( bool vis)
inherited

Definition at line 234 of file PRDHandleBase.cxx.

235{
236 if (vis==m_visible)
237 return;
238 //std::cout<<"Changing visible status from "<<m_visible<<" to "<<vis<<" for: "<<*getPRD()<<std::endl;
239 m_visible=vis;
240 if (vis) {
241 m_d->colhandle->incrementNShownHandles();
242 if (inMuonChamber())
244 if (!m_d->sepSimple||!m_d->sepDetailed)
245 m_d->rebuild3DObjects(this);//The call to rebuild also fixes attached state.
246 else
247 m_d->attach3DObjects(this);
248 } else {
249 m_d->colhandle->decrementNShownHandles();
250 if (inMuonChamber())
252 m_d->detach3DObjects();
253 }
254}
virtual bool inMuonChamber() const
virtual GeoPVConstLink parentMuonChamberPV() const
TouchedMuonChamberHelper * touchedMuonChamberHelper() const
void decrementNumberOfObjectsForPV(const GeoPVConstLink &chamberPV)
void incrementNumberOfObjectsForPV(const GeoPVConstLink &chamberPV)

◆ transformUsesSurfacePositionOnly()

virtual bool PRDHandleBase::transformUsesSurfacePositionOnly ( ) const
inlinevirtualinherited

Reimplemented in PRDHandle_MDT, and PRDHandle_TRT.

Definition at line 47 of file PRDHandleBase.h.

47{ return false; }//Override and return true if should use just the surface position.

◆ update3DObjects()

void PRDHandleBase::update3DObjects ( )
inherited

Definition at line 257 of file PRDHandleBase.cxx.

257 {
258 //Fixme: If selected we really need to redo selection updates!!!
259 if (m_visible) {
260 m_d->rebuild3DObjects(this);
261 } else {
262 //Simply clear the present 3D objects. They will only be recreated if/when the prd becomes visible again.
263 if (m_d->sepDetailed) {
264 m_d->sepDetailed->unref();
265 m_d->sepDetailed = 0;
266 }
267 if (m_d->sepSimple) {
268 m_d->sepSimple->unref();
269 m_d->sepSimple = 0;
270 }
271 }
272
273}

◆ updateMaterial()

void PRDHandleBase::updateMaterial ( )
inherited

Definition at line 160 of file PRDHandleBase.cxx.

161{
162 //We need to change the current material. This means we need to
163 //clear the cache. Only if we are visible do we need to do a
164 //detach->clear material->attach cycle to trigger attachment under new material.
165
166 if (!m_d->currentmaterial)
167 return;//We have no material cached and is thus not attached either.
168 if (m_visible) {
169 //See if the material changed. If it did, detach, update the material, attach again.
170 SoMaterial * newmat = m_d->determineMaterial(this);
171 newmat->ref();
172 if (newmat!=m_d->currentmaterial) {
173 m_d->detach3DObjects();
174 m_d->currentmaterial->unref();
175 m_d->currentmaterial = newmat;
176 m_d->attach3DObjects(this);
177 } else {
178 newmat->unref();
179 }
180 } else {
181 //Just clear material.
182 m_d->currentmaterial->unref();
183 m_d->currentmaterial = 0;
184 }
185}

◆ visible()

bool PRDHandleBase::visible ( ) const
inlineinherited

Definition at line 42 of file PRDHandleBase.h.

42{ return m_visible; }

Member Data Documentation

◆ m_cluster

const InDet::PixelCluster* PRDHandle_Pixel::m_cluster
private

Definition at line 30 of file PRDHandle_Pixel.h.

◆ m_common

PRDSysCommonData* PRDHandleBase::m_common
privateinherited

Definition at line 84 of file PRDHandleBase.h.

◆ m_d

Imp* PRDHandleBase::m_d
privateinherited

Definition at line 83 of file PRDHandleBase.h.

◆ m_visible

bool PRDHandleBase::m_visible
privateinherited

Definition at line 86 of file PRDHandleBase.h.


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