ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
HitToSoNode Class Reference

#include <HitToSoNode.h>

Inheritance diagram for HitToSoNode:
Collaboration diagram for HitToSoNode:

Classes

class  Imp
 

Public Member Functions

 HitToSoNode (IVP1System *sys=0)
 
 ~HitToSoNode ()
 
SoTransform * createTransform (const Trk::RIO_OnTrack &rio, bool useSurfacePositionOnly) const
 
SoTransform * createTGC_Transform (const Trk::RIO_OnTrack &rio, bool useSurfacePositionOnly) const
 TGCs are rotated. More...
 
void buildStripShapes (const Trk::RIO_OnTrack &rio, SoSeparator *&shape_simple, SoSeparator *&shape_detailed, bool blockGP)
 
void buildTubeShapes (const Trk::RIO_OnTrack &rio, SoSeparator *&shape_simple, SoSeparator *&shape_detailed, bool blockGP, double length, bool doProjection)
 
double getTGCAngle (Identifier id) const
 returns the phi angle of the passed phi strip identifier. More...
 
void setSystemBasePointer (IVP1System *sys)
 
void message (const QString &) const
 
void message (const QStringList &, const QString &addtoend="") const
 
void message (const QString &addtostart, const QStringList &, const QString &addtoend="") const
 
void messageDebug (const QString &) const
 
void messageDebug (const QStringList &, const QString &addtoend="") const
 
void messageDebug (const QString &addtostart, const QStringList &, const QString &addtoend="") const
 
void messageVerbose (const QString &) const
 
void messageVerbose (const QStringList &, const QString &addtoend="") const
 
void messageVerbose (const QString &addtostart, const QStringList &, const QString &addtoend="") const
 
IVP1SystemsystemBase () const
 
QString helperClassName () const
 

Static Public Member Functions

static bool verbose ()
 
static void warnUndeletedInstances ()
 
static QString str (const QString &s)
 
static QString str (const char *c)
 
static QString str (const bool b)
 
static QString str (const QColor &)
 
static QString str (const SbColor &)
 
static QString str (const VP1Interval &)
 
static QString str (const SbVec2d &)
 
static QString str (const SbVec2f &)
 
static QString str (const SbVec2s &)
 
static QString str (const SbVec3d &)
 
static QString str (const SbVec3f &)
 
static QString str (const SbVec3s &)
 
static QString str (const SbVec4d &)
 
static QString str (const SbVec4f &)
 
static QString str (short int n)
 
static QString str (unsigned short int n)
 
static QString str (long n)
 
static QString str (ulong n)
 
static QString str (int n)
 
static QString str (uint n)
 
static QString str (qlonglong n)
 
static QString str (qulonglong n)
 
static QString str (const double &d)
 
static QString str (const float &f)
 
static QString str (const void *)
 
template<class T >
static QString str (const T *t)
 
template<class T >
static QString str (const QFlags< T > &f)
 
template<class T >
static QString str (const HepGeom::BasicVector3D< T > &t)
 
static QString str (const Amg::Vector3D &t)
 
template<class T >
static QString str (const QList< T > &t)
 

Protected Member Functions

void setHelperClassName (const QString &n)
 

Private Member Functions

 HitToSoNode (const HitToSoNode &)
 
HitToSoNodeoperator= (const HitToSoNode &)
 
void fillValues (Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
 
void fillRPCValues (Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
 
void fillTGCValues (Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
 
void fillCSCValues (Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
 
void fillSTGCValues (Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
 
void fillMMValues (Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
 
void fillSiValues (Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
 

Private Attributes

Impm_d
 
QString m_helpername
 
IVP1Systemm_system
 

Static Private Attributes

static const bool s_vp1verbose = VP1QtUtils::environmentVariableIsOn("VP1_VERBOSE_OUTPUT")
 

Detailed Description

Definition at line 33 of file HitToSoNode.h.

Constructor & Destructor Documentation

◆ HitToSoNode() [1/2]

HitToSoNode::HitToSoNode ( IVP1System sys = 0)

Definition at line 49 of file HitToSodeNode.cxx.

50  : VP1HelperClassBase(sys,"HitToSoNode"), m_d(new Imp)
51 {
52  m_d->theclass = this;
53 }

◆ ~HitToSoNode()

HitToSoNode::~HitToSoNode ( )

Definition at line 56 of file HitToSodeNode.cxx.

57 {
58  messageVerbose("destructor begin");
59  delete m_d;
60  messageVerbose("destructor end");
61 }

◆ HitToSoNode() [2/2]

HitToSoNode::HitToSoNode ( const HitToSoNode )
private

Member Function Documentation

◆ buildStripShapes()

void HitToSoNode::buildStripShapes ( const Trk::RIO_OnTrack rio,
SoSeparator *&  shape_simple,
SoSeparator *&  shape_detailed,
bool  blockGP 
)

Definition at line 225 of file HitToSodeNode.cxx.

226 {
227  // assuming starting with position being that of centre of surface i.e. always working in local coord system
228 
229 
230  double stripLength =100.0, stripWidth = 10.0, stripThickness=1.0;
231  std::optional<Amg::Vector2D> localposROT=std::nullopt;
232  Amg::Vector2D* localposStrip=0;
233  Identifier id=rio.identify();
234  fillValues(id, rio.detectorElement(), stripLength, stripWidth, stripThickness, localposStrip);
235 
236  //std::cout<<"Got back: "<<stripLength<<","<<stripWidth<<","<<stripThickness<<std::endl;
237  //std::cout<<"LocalposStrip="<<*localposStrip<<std::endl;
238 
239  // if (static_cast<PRDCollHandle_TGC*>(collHandle())->project())
240  // striplength += 300.0;//Fixme: Rough extension for now
241  double tolerance = 3.;
242  localposROT = rio.detectorElement()->surface( rio.identify() ).globalToLocal(rio.globalPosition(), tolerance);
243 
244  if( !localposROT )
245  {
246  localposROT.emplace();
247  localposROT->setZero();
248  VP1Msg::message("Warning: Local hit position was NULL");
249  }
250 
251  if (!blockGP){
252  SoSeparator * gpSep = new SoSeparator;
253  SoTranslation * localtransGP = new SoTranslation;
254  localtransGP->translation.setValue(static_cast<float>( (*localposROT)[Trk::locX]),
255  static_cast<float>( (*localposROT)[Trk::locY]),
256  0.0f);
257 
258  gpSep->addChild(localtransGP);
259  gpSep->addChild(m_d->nodeManager.getShapeNode_Cross(10));
260  shape_detailed->addChild(gpSep);
261  }
262 
263 
264  SoTranslation * localtrans0 = new SoTranslation;
265  localtrans0->translation.setValue(static_cast<float>( (*localposStrip)[Trk::locX]),
266  static_cast<float>( (*localposStrip)[Trk::locY]),
267  0.0f);
268 
269 
270  shape_simple->addChild(localtrans0);
271  shape_simple->addChild( m_d->nodeManager.getShapeNode_Strip(stripLength));
272 
273  shape_detailed->addChild(localtrans0);
274  shape_detailed->addChild(m_d->nodeManager.getShapeNode_Strip(stripLength,stripWidth,stripThickness));
275  // Transform back to centre of Surface
276  SoTranslation * localtrans1 = new SoTranslation;
277  localtrans1->translation.setValue(static_cast<float>( -(*localposStrip)[Trk::locX]),
278  static_cast<float>( -(*localposStrip)[Trk::locY]),
279  0.0f);
280  shape_simple->addChild(localtrans1);
281  shape_detailed->addChild(localtrans1);
282 
283  delete localposStrip;
284 }

◆ buildTubeShapes()

void HitToSoNode::buildTubeShapes ( const Trk::RIO_OnTrack rio,
SoSeparator *&  shape_simple,
SoSeparator *&  shape_detailed,
bool  blockGP,
double  length,
bool  doProjection 
)
Parameters
blockGPblockGP

Definition at line 180 of file HitToSodeNode.cxx.

181 {
182  const Trk::CylinderBounds* ccbo = dynamic_cast<const Trk::CylinderBounds*>(&(rio.detectorElement()->surface(rio.identify()).bounds()));
183  assert(ccbo!=0);
184  if (!ccbo) {
185  VP1Msg::message("HitToSoNode::buildTubeShapes ERROR: Trk::CylinderBounds conversion failed");
186  return;
187  }
188 
189  double radius = std::abs(rio.localParameters().get(Trk::locR));
190  if (radius<0.15)
191  radius = 0.0;//radius is so small it is better to collapse to line
192 
193  double halflength(ccbo->halflengthZ());
194 
195  if (doProjection && dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>(&rio)){
196 
197  double strawLength=2.0*halflength;
198  if (strawLength<160.0)
199  strawLength = 2*349.3150-strawLength;//Yeah, we hardcode a lot here... but dimensions of TRT barrel straws are not likely to change.
200 
201  SoPointSet * scatPointSet = new SoPointSet;
202  SoVertexProperty * scatVtxProperty = new SoVertexProperty;
203  scatVtxProperty->vertex.set1Value(0,0.0f,0.0f,strawLength);
204  scatPointSet->numPoints=1;
205  scatPointSet->vertexProperty.setValue(scatVtxProperty);
206 
207  shape_detailed->addChild(scatPointSet);
208  shape_simple->addChild(scatPointSet);
209 
210  } else {
211  if (length!=0.0) {
212  halflength = length/2.0;
213  // FIXME! translate to z position here instead of in AscObj_TSOS, for symmetry with buildStripShapes
214  }
215  SoNode * simpleShape = m_d->nodeManager.getShapeNode_DriftTube( halflength, 0.0 );
216  shape_simple->addChild(simpleShape);
217  //Detailed shape uses tube (unless negligible radius):
218  if (radius==0.0)
219  shape_detailed->addChild(simpleShape);
220  else
221  shape_detailed->addChild(m_d->nodeManager.getShapeNode_DriftTube( halflength, radius ));
222  }
223 }

◆ createTGC_Transform()

SoTransform * HitToSoNode::createTGC_Transform ( const Trk::RIO_OnTrack rio,
bool  useSurfacePositionOnly 
) const

TGCs are rotated.

Definition at line 126 of file HitToSodeNode.cxx.

126  {
127  // std::cout<<"createTGC_Transform for:\n"<<rio<<std::endl;
128 
129  const TgcIdHelper * idhelper = VP1DetInfo::tgcIDHelper();
130  const MuonGM::TgcReadoutElement* detEl = dynamic_cast<const MuonGM::TgcReadoutElement*>(rio.detectorElement());
131 
132  if (!idhelper||!detEl) {
133  return new SoTransform;
134  }
135 
136  const Trk::Surface& theSurface = rio.detectorElement()->surface(rio.identify());
137  SoTransform * theHitTransform =0;
138  if (idhelper->isStrip( rio.identify() )){
139  // std::cout<<"Strip"<<std::endl;
140 
141  // for phi strips, use sinstereo to get correct orientation
142 
143  double angle = getTGCAngle(rio.identify());
144 
145  Amg::RotationMatrix3D localRot;
146  localRot.setIdentity();
147 
148  if (0 < detEl->getStationEta()) {
149 // localRot.setPhi (angle);
150  Amg::setPhi(localRot, angle);
151  } else {
152 // localRot.setPhi (-angle);
153  Amg::setPhi(localRot, -angle);
154  }
155  // std::cout<<"Local ROT = "<<localRot<<std::endl;
156 
157  Amg::toString(localRot);
158  localRot *= theSurface.transform().rotation();
159 
160  // std::cout<<"translation = "<<Amg::toString(theSurface.transform().translation())<<std::endl;
161 
162 // HepGeom::Transform3D trans (localRot, theSurface.transform().translation());
163  Amg::Transform3D trans = Amg::getTransformFromRotTransl(localRot, theSurface.transform().translation() );
164 
165  // std::cout<<"transform = "<<Amg::toString(trans)<<std::endl;
166 
167  theHitTransform = VP1LinAlgUtils::toSoTransform(trans);
168  } else {
169  // eta strips just use surface orientiation
170  theHitTransform = VP1LinAlgUtils::toSoTransform(theSurface.transform());
171  }
172 
173  if (!useSurfacePositionOnly){
174  const Amg::Vector3D& theHitGPos= rio.globalPosition();
175  theHitTransform->translation.setValue((theHitGPos)[0], (theHitGPos)[1], (theHitGPos)[2]);
176  }
177  return theHitTransform;
178 }

◆ createTransform()

SoTransform * HitToSoNode::createTransform ( const Trk::RIO_OnTrack rio,
bool  useSurfacePositionOnly 
) const

Definition at line 107 of file HitToSodeNode.cxx.

108 {
109  const Trk::Surface& theSurface = rio.detectorElement()->surface(rio.identify());
110  SoTransform * theHitTransform = VP1LinAlgUtils::toSoTransform(theSurface.transform());
111 
112  // const Amg::Vector3D* theHitGPos;
113  if ( useSurfacePositionOnly ) {
114  // if (verbose) VP1Msg::message("useSurfacePositionOnly");
115  theHitTransform->translation.setValue(theSurface.center()[0], theSurface.center()[1], theSurface.center()[2]);
116 
117  } else {
118 
119  // for strips, clusters or short tubes, use position of hit.
120  // FIXME - for DCs, shouldn't this be the d0=0 position, i.e. on the wire?
121  theHitTransform->translation.setValue(rio.globalPosition()[0], rio.globalPosition()[1], rio.globalPosition()[2]);
122  }
123  return theHitTransform;
124 }

◆ fillCSCValues()

void HitToSoNode::fillCSCValues ( Identifier id,
const Trk::TrkDetElementBase baseDetEl,
double &  striplength,
double &  stripWidth,
double &  stripThickness,
Amg::Vector2D *&  localposStrip 
)
private

Definition at line 390 of file HitToSodeNode.cxx.

390  {
391  const CscIdHelper * idhelper = VP1DetInfo::cscIDHelper();
392  const MuonGM::CscReadoutElement* detEl =
393  dynamic_cast<const MuonGM::CscReadoutElement*>(baseDetEl);
394  if (!idhelper || !detEl){
395  VP1Msg::message("Could not get either CSC IdHelper or det element");
396  localposStrip = new Amg::Vector2D;
397  return;
398  }
399 
400  int measPhi = idhelper->measuresPhi( id );
401  int chamberLayer = idhelper->chamberLayer( id );
402 
403  striplength = detEl->stripLength(id);
404  stripWidth = detEl->cathodeReadoutPitch(chamberLayer,measPhi);
405  stripThickness = (measPhi==1) ? 0.9: 0.8;//strip thickness - different from phi/eta to avoid hatching issues
406 
407  // Translation from objects local position to the strip position
408  Amg::Vector2D localPos_a;
409  Amg::Vector3D dummy; // this is not actually used
410  Amg::Vector3D globalPos_a = detEl->stripPos( id );
411  bool ok = detEl->surface( id ).globalToLocal(globalPos_a, dummy, localPos_a);
412  if (ok) {
413  localposStrip = new Amg::Vector2D(localPos_a);
414  }
415  else{
416  VP1Msg::message("fillCSCValues - Could not get localposStrip!!");
417  }
418 
419 
420 
421  if( !localposStrip )
422  {
423  localposStrip = new Amg::Vector2D;
424  VP1Msg::message("Warning: Local strip position is NULL");
425  }
426 }

◆ fillMMValues()

void HitToSoNode::fillMMValues ( Identifier id,
const Trk::TrkDetElementBase baseDetEl,
double &  striplength,
double &  stripWidth,
double &  stripThickness,
Amg::Vector2D *&  localposStrip 
)
private

Definition at line 455 of file HitToSodeNode.cxx.

455  {
456  const MmIdHelper * idhelper = VP1DetInfo::mmIDHelper();
457  const MuonGM::CscReadoutElement* detEl =
458  dynamic_cast<const MuonGM::CscReadoutElement*>(baseDetEl);
459  if (!idhelper || !detEl){
460  VP1Msg::message("Could not get either CSC IdHelper or det element");
461  localposStrip = new Amg::Vector2D;
462  return;
463  }
464  //
465 
466  // FIXME - get dimensions!
467 
468  striplength=100; //FIXME!
469  stripWidth=10;
470  stripThickness=1;
471  // int measPhi = idhelper->measuresPhi( id );
472  // int chamberLayer = idhelper->chamberLayer( id );
473  //
474  // striplength = detEl->stripLength(id);
475  // stripWidth = detEl->cathodeReadoutPitch(chamberLayer,measPhi);
476  // stripThickness = (measPhi==1) ? 0.9: 0.8;//strip thickness - different from phi/eta to avoid hatching issues
477  //
478  // // Translation from objects local position to the strip position
479  localposStrip = new Amg::Vector2D;
480 
481  if( !(detEl->stripPosition(id,*localposStrip)) )
482  {
483  VP1Msg::message("Warning: Local strip position is NULL");
484  }
485 }

◆ fillRPCValues()

void HitToSoNode::fillRPCValues ( Identifier id,
const Trk::TrkDetElementBase baseDetEl,
double &  striplength,
double &  stripWidth,
double &  stripThickness,
Amg::Vector2D *&  localposStrip 
)
private

Definition at line 354 of file HitToSodeNode.cxx.

354  {
355  const RpcIdHelper * idhelper = VP1DetInfo::rpcIDHelper();
356  const MuonGM::RpcReadoutElement* detEl =
357  dynamic_cast<const MuonGM::RpcReadoutElement*>(baseDetEl);
358  if (!idhelper || !detEl){
359  VP1Msg::message("Could not get either RPC IdHelper or det element");
360  localposStrip = new Amg::Vector2D;
361  return;
362  }
363 
364  int measPhi = idhelper->measuresPhi( id );
365  striplength = detEl->StripLength(measPhi);
366  stripWidth = detEl->StripWidth(measPhi),//strip width
367  stripThickness = (measPhi==1) ? 0.9: 0.8;//strip thickness - different from phi/eta to avoid hatching issues
368 
369  // Translation from objects local position to the strip position
370  Amg::Vector2D localPos_a;
371  Amg::Vector3D dummy; // this is not actually used
372  Amg::Vector3D globalPos_a = detEl->stripPos( id );
373  bool ok = detEl->surface( id ).globalToLocal(globalPos_a, dummy, localPos_a);
374  if (ok) {
375  localposStrip = new Amg::Vector2D(localPos_a);
376  }
377  else{
378  VP1Msg::message("fillRPCValues - Could not get localposStrip!!");
379  }
380 
381  //std::cout<<"HitToSoNode::fillRPCValues channelPos = "<<detEl->stripPos( id )<<std::endl;
382 
383  if( !localposStrip )
384  {
385  localposStrip = new Amg::Vector2D;
386  VP1Msg::message("Warning: Local strip position is NULL");
387  }
388 }

◆ fillSiValues()

void HitToSoNode::fillSiValues ( Identifier id,
const Trk::TrkDetElementBase baseDetEl,
double &  striplength,
double &  stripWidth,
double &  stripThickness,
Amg::Vector2D *&  localposStrip 
)
private

Definition at line 487 of file HitToSodeNode.cxx.

487  {
488  const InDetDD::SiDetectorElement* detEl =
489  dynamic_cast<const InDetDD::SiDetectorElement*>(baseDetEl);
490  if ( !detEl){
491  VP1Msg::message("Could not get Si det element");
492  localposStrip = new Amg::Vector2D;
493  return;
494  }
495 
496  localposStrip = new Amg::Vector2D(detEl->rawLocalPositionOfCell( id ));
497  // (*localPosStrip)[Trk::distPhi] += (idhelper->is_pixel(id) ? m_pixelLorentzAngleTool : m_sctLorentzAngleTool)->getLorentzShift(detEl->identifyHash());
498  // SiLorentzAngleTool cannot be used here because HitToSoNode is not a tool nor algorithm
499 
500  striplength = detEl->etaPitch() ;
501  stripWidth = detEl->phiPitch( *localposStrip );
502  stripThickness = detEl->thickness()/10.0;
503 
504 }

◆ fillSTGCValues()

void HitToSoNode::fillSTGCValues ( Identifier id,
const Trk::TrkDetElementBase baseDetEl,
double &  striplength,
double &  stripWidth,
double &  stripThickness,
Amg::Vector2D *&  localposStrip 
)
private

Definition at line 428 of file HitToSodeNode.cxx.

428  {
429  const sTgcIdHelper * idhelper = VP1DetInfo::stgcIDHelper();
431  const_cast<MuonGM::sTgcReadoutElement*>(dynamic_cast<const MuonGM::sTgcReadoutElement*>(baseDetEl));
432  if (!idhelper || !detEl){
433  VP1Msg::message("Could not get either STGC IdHelper or det element");
434  localposStrip = new Amg::Vector2D;
435  return;
436  }
437 
438  striplength=100; //FIXME!
439  stripWidth=2.7;
440  stripThickness=1;
441  // int measPhi = idhelper->measuresPhi( id );
442  // int chamberLayer = idhelper->chamberLayer( id );
443  //
444  // striplength = detEl->stripLength(id);
445  // stripWidth = detEl->cathodeReadoutPitch(chamberLayer,measPhi);
446  // stripThickness = (measPhi==1) ? 0.9: 0.8;//strip thickness - different from phi/eta to avoid hatching issues
447 
448  localposStrip = new Amg::Vector2D;
449  if( !(detEl->stripPosition(id,*localposStrip)) )
450  {
451  VP1Msg::message("Warning: Local strip position is NULL");
452  }
453 }

◆ fillTGCValues()

void HitToSoNode::fillTGCValues ( Identifier id,
const Trk::TrkDetElementBase baseDetEl,
double &  striplength,
double &  stripWidth,
double &  stripThickness,
Amg::Vector2D *&  localposStrip 
)
private

Definition at line 305 of file HitToSodeNode.cxx.

305  {
306  const TgcIdHelper * idhelper = VP1DetInfo::tgcIDHelper();
307  const MuonGM::TgcReadoutElement* detEl =
308  dynamic_cast<const MuonGM::TgcReadoutElement*>(baseDetEl);
309  if (!idhelper || !detEl){
310  VP1Msg::message("Could not get either TGC IdHelper or det element");
311  localposStrip = new Amg::Vector2D;
312  return;
313  }
314 
315  int plane = idhelper->gasGap( id );
316  int strip = idhelper->channel( id );
317  int isStrip = idhelper->isStrip( id );
318 
319  if (isStrip){
320  striplength = detEl->stripLength();
321  stripWidth = detEl->stripWidth(plane, strip);
322  stripThickness = 3*0.8+0.1;
323  } else {
324  striplength = detEl->gangShortWidth(plane, strip);
325  stripWidth = detEl->gangRadialLength(plane, strip);
326  stripThickness = 3*0.8;
327  }
328  stripWidth=std::max(10.0,stripWidth);
329  // Translation from objects local position to the strip position
330  // get local position on wire plane, here we have to use a tolarance as the wire plane is located 2.5 CLHEP::mm
331  // from the strip plane
332 
333  Amg::Vector2D localPos_a;
334  Amg::Vector3D dummy; // this is not actually used
335  Amg::Vector3D globalPos_a = detEl->channelPos( id );
336  bool ok = detEl->surface( id ).globalToLocal(globalPos_a, dummy, localPos_a);
337  if (ok) {
338  localposStrip = new Amg::Vector2D(localPos_a);
339  }
340  else{
341  VP1Msg::message("fillTGCValues - Could not get localposStrip!!");
342  }
343 
344 
345  // std::cout<<"HitToSoNode::fillTGCValues channelPos = "<<detEl->channelPos( id )<<std::endl;
346  if( !localposStrip )
347  {
348  localposStrip = new Amg::Vector2D;
349  VP1Msg::message("Warning: Local strip position was NULL");
350  }
351  return;
352 }

◆ fillValues()

void HitToSoNode::fillValues ( Identifier id,
const Trk::TrkDetElementBase baseDetEl,
double &  striplength,
double &  stripWidth,
double &  stripThickness,
Amg::Vector2D *&  localposStrip 
)
private

Definition at line 286 of file HitToSodeNode.cxx.

286  {
287 
288  const AtlasDetectorID * idhelper = VP1DetInfo::atlasIDHelper();
289  if (!idhelper) return;
290  if (idhelper->is_muon(id)){
291  if (idhelper->is_rpc(id)) { fillRPCValues(id, baseDetEl, striplength, stripWidth, stripThickness, localposStrip); return;}
292  if (idhelper->is_tgc(id)) { fillTGCValues(id, baseDetEl, striplength, stripWidth, stripThickness, localposStrip); return;}
293  if (idhelper->is_csc(id)) { fillCSCValues(id, baseDetEl, striplength, stripWidth, stripThickness, localposStrip); return;}
294  if (idhelper->is_stgc(id)) { fillSTGCValues(id, baseDetEl, striplength, stripWidth, stripThickness, localposStrip); return;}
295  if (idhelper->is_mm(id)) { fillMMValues(id, baseDetEl, striplength, stripWidth, stripThickness, localposStrip); return;}
296  } else {
297  if (idhelper->is_indet(id) && (idhelper->is_pixel(id)||idhelper->is_sct(id))) {
298  fillSiValues(id, baseDetEl, striplength, stripWidth, stripThickness, localposStrip); return;
299  }
300  }
301  VP1Msg::message("Warning: HitToSoNode::fillValues(...) unknown technology.");
302  return;
303 }

◆ getTGCAngle()

double HitToSoNode::getTGCAngle ( Identifier  id) const

returns the phi angle of the passed phi strip identifier.

calculate two points along the tgc phi strip in the local tgc reference frame

Definition at line 63 of file HitToSodeNode.cxx.

63  {
64  const TgcIdHelper * idhelper = VP1DetInfo::tgcIDHelper();
65  if (!idhelper) {
66  VP1Msg::message("HitToSoNode::getTGCAngle WARNING: could not get TGC idhelper!");
67  return 0.0;
68  }
69 
70  if ( !idhelper->isStrip(id)) return 0.0; // Not phi strip
72 
73  // int stationeta=idHelper->stationEta(id);
74  // int stripNo = idHelper->channel(id);
75  // int gasGap = idHelper->gasGap(id);
76  //
77  // const MuonGM::TgcReadoutElement *ele= VP1DetInfo::muonDetMgr ()->getTgcReadoutElement(id);
78  //
79  // double stripLength = ele->stripLength(gasGap,stripNo);
80  // double stripWidth=std::abs(ele->stripMaxX(gasGap, stripNo, (*lp)[Trk::locZ])-ele->stripMinX(gasGap, stripNo, (*lp)[Trk::locZ]));
81  //
82  // double localX1=ele->stripCtrX(gasGap, stripNo, stripLength/2.);
83  // double localX2=ele->stripCtrX(gasGap, stripNo, -stripLength/2.);
84  // if (stationeta>0) {
85  // localX1=-localX1;
86  // localX2=-localX2;
87  // }
88  //
89  // return atan2(localX2-localX1,stripLength);
90 
91  int stripNo = idhelper->channel(id);
92  int gasGap = idhelper->gasGap(id);
93 
94 
96 
97  Amg::Vector3D lposTGC = detEl->stripCenterLocX(gasGap, stripNo, 0.) * Amg::Vector3D::UnitX();
98  const double shift = detEl->getStationEta() > 0 ? 1.*Gaudi::Units::cm : - 1.*Gaudi::Units::cm;
99  Amg::Vector3D lposTgcShifted = detEl->stripCenterLocX(gasGap, stripNo, shift) * Amg::Vector3D::UnitX()
100  + shift * Amg::Vector3D::UnitY();
101 
102  return (lposTGC - lposTgcShifted).phi();
103 
104 }

◆ helperClassName()

QString VP1HelperClassBase::helperClassName ( ) const
inlineinherited

Definition at line 51 of file VP1HelperClassBase.h.

51 { return m_helpername; }

◆ message() [1/3]

void VP1HelperClassBase::message ( const QString &  str) const
inherited

Definition at line 49 of file VP1HelperClassBase.cxx.

50 {
51  if (m_helpername.isEmpty()) {
52  if (m_system)
54  else
55  std::cout<<VP1Msg::prefix_msg()<<" [nameless helper class]: "<<str.toStdString()<<std::endl;
56  } else {
57  if (m_system)
58  m_system->message("["+m_helpername+"] " + str);
59  else
60  std::cout<<VP1Msg::prefix_msg()<<" ["<<m_helpername.toStdString()<<"]: "<<str.toStdString()<<std::endl;
61  }
62 }

◆ message() [2/3]

void VP1HelperClassBase::message ( const QString &  addtostart,
const QStringList &  l,
const QString &  addtoend = "" 
) const
inherited

Definition at line 131 of file VP1HelperClassBase.cxx.

132 {
133  if (addtostart.isEmpty()) {
134  message(l,addtoend);
135  return;
136  }
137  if (addtoend.isEmpty()) {
138  for (QString s : l)
139  message(addtostart+s);
140  } else {
141  for (QString s : l)
142  message(addtostart+s+addtoend);
143  }
144 }

◆ message() [3/3]

void VP1HelperClassBase::message ( const QStringList &  l,
const QString &  addtoend = "" 
) const
inherited

Definition at line 91 of file VP1HelperClassBase.cxx.

92 {
93  if (addtoend.isEmpty()) {
94  for (QString s : l)
95  message(s);
96  } else {
97  for (QString s : l)
98  message(s+addtoend);
99  }
100 }

◆ messageDebug() [1/3]

void VP1HelperClassBase::messageDebug ( const QString &  str) const
inherited

Definition at line 65 of file VP1HelperClassBase.cxx.

66 {
67  if (!VP1Msg::debug())
68  return;
69  std::string sysstring(m_system ? " in "+m_system->name().toStdString() : std::string(""));
70  if (m_helpername.isEmpty()) {
71  std::cout<<VP1Msg::prefix_debug()<<" [helper"<<sysstring<<"]: "<<str.toStdString()<<std::endl;
72  } else {
73  std::cout<<VP1Msg::prefix_debug()<<" ["<<m_helpername.toStdString()<<sysstring<<"]: "<<str.toStdString()<<std::endl;
74  }
75 }

◆ messageDebug() [2/3]

void VP1HelperClassBase::messageDebug ( const QString &  addtostart,
const QStringList &  l,
const QString &  addtoend = "" 
) const
inherited

Definition at line 147 of file VP1HelperClassBase.cxx.

148 {
149  if (!VP1Msg::debug())
150  return;
151  if (addtostart.isEmpty()) {
152  messageDebug(l,addtoend);
153  return;
154  }
155  if (addtoend.isEmpty()) {
156  for (QString s : l)
157  messageDebug(addtostart+s);
158  } else {
159  for (QString s : l)
160  messageDebug(addtostart+s+addtoend);
161  }
162 }

◆ messageDebug() [3/3]

void VP1HelperClassBase::messageDebug ( const QStringList &  l,
const QString &  addtoend = "" 
) const
inherited

Definition at line 103 of file VP1HelperClassBase.cxx.

104 {
105  if (!VP1Msg::debug())
106  return;
107  if (addtoend.isEmpty()) {
108  for (QString s : l)
109  messageDebug(s);
110  } else {
111  for (QString s : l)
112  messageDebug(s+addtoend);
113  }
114 }

◆ messageVerbose() [1/3]

void VP1HelperClassBase::messageVerbose ( const QString &  str) const
inherited

Definition at line 78 of file VP1HelperClassBase.cxx.

79 {
80  if (!VP1Msg::verbose())
81  return;
82  std::string sysstring(m_system ? " in "+m_system->name().toStdString() : std::string(""));
83  if (m_helpername.isEmpty()) {
84  std::cout<<VP1Msg::prefix_verbose()<<" [helper"<<sysstring<<"]: "<<str.toStdString()<<std::endl;
85  } else {
86  std::cout<<VP1Msg::prefix_verbose()<<" ["<<m_helpername.toStdString()<<sysstring<<"]: "<<str.toStdString()<<std::endl;
87  }
88 }

◆ messageVerbose() [2/3]

void VP1HelperClassBase::messageVerbose ( const QString &  addtostart,
const QStringList &  l,
const QString &  addtoend = "" 
) const
inherited

Definition at line 165 of file VP1HelperClassBase.cxx.

166 {
167  if (!VP1Msg::verbose())
168  return;
169  if (addtostart.isEmpty()) {
170  messageVerbose(l,addtoend);
171  return;
172  }
173  if (addtoend.isEmpty()) {
174  for (QString s : l)
175  messageVerbose(addtostart+s);
176  } else {
177  for (QString s : l)
178  messageVerbose(addtostart+s+addtoend);
179  }
180 }

◆ messageVerbose() [3/3]

void VP1HelperClassBase::messageVerbose ( const QStringList &  l,
const QString &  addtoend = "" 
) const
inherited

Definition at line 117 of file VP1HelperClassBase.cxx.

118 {
119  if (!VP1Msg::verbose())
120  return;
121  if (addtoend.isEmpty()) {
122  for (QString s : l)
123  messageVerbose(s);
124  } else {
125  for (QString s : l)
126  messageVerbose(s+addtoend);
127  }
128 }

◆ operator=()

HitToSoNode& HitToSoNode::operator= ( const HitToSoNode )
private

◆ setHelperClassName()

void VP1HelperClassBase::setHelperClassName ( const QString &  n)
inlineprotectedinherited

Definition at line 59 of file VP1HelperClassBase.h.

59 { m_helpername = n; }

◆ setSystemBasePointer()

void VP1HelperClassBase::setSystemBasePointer ( IVP1System sys)
inherited

Definition at line 197 of file VP1HelperClassBase.cxx.

198 {
199  m_system = sys;
200  if (VP1Msg::verbose()){
201  vp1helperclassbase_instanceMap[this] = (m_system?m_system->name():QString(""));
202  }
203 }

◆ str() [1/30]

static QString VP1String::str ( const Amg::Vector3D t)
inlinestaticinherited

Definition at line 98 of file VP1String.h.

98 { return "("+str(t.x())+", "+str(t.y())+", "+str(t.z())+")"; }

◆ str() [2/30]

static QString VP1String::str ( const bool  b)
inlinestaticinherited

Definition at line 53 of file VP1String.h.

53 { return b?"True":"False"; }

◆ str() [3/30]

static QString VP1String::str ( const char *  c)
inlinestaticinherited

Definition at line 50 of file VP1String.h.

50 { return c; }

◆ str() [4/30]

static QString VP1String::str ( const double &  d)
inlinestaticinherited

Definition at line 81 of file VP1String.h.

81 { return QString::number(d); }

◆ str() [5/30]

static QString VP1String::str ( const float &  f)
inlinestaticinherited

Definition at line 82 of file VP1String.h.

82 { return QString::number(f); }

◆ str() [6/30]

template<class T >
static QString VP1String::str ( const HepGeom::BasicVector3D< T > &  t)
inlinestaticinherited

Definition at line 95 of file VP1String.h.

95 { return "("+str(t.x())+", "+str(t.y())+", "+str(t.z())+")"; }

◆ str() [7/30]

QString VP1String::str ( const QColor &  c)
staticinherited

Definition at line 30 of file VP1String.cxx.

31 {
32  return c.isValid() ? c.name() : "Invalid";
33 }

◆ str() [8/30]

template<class T >
static QString VP1String::str ( const QFlags< T > &  f)
inlinestaticinherited

Definition at line 91 of file VP1String.h.

91 { return "0x"+QString::number(f, 16).toUpper().rightJustified(8,'0'); }

◆ str() [9/30]

template<class T >
static QString VP1String::str ( const QList< T > &  t)
inlinestaticinherited

Definition at line 102 of file VP1String.h.

102 { return "QList of size"+QString::number(t.size()); }

◆ str() [10/30]

static QString VP1String::str ( const QString &  s)
inlinestaticinherited

Definition at line 49 of file VP1String.h.

49 { return s; }

◆ str() [11/30]

QString VP1String::str ( const SbColor &  c)
staticinherited

Definition at line 36 of file VP1String.cxx.

37 {
39 }

◆ str() [12/30]

QString VP1String::str ( const SbVec2d &  v)
staticinherited

Definition at line 61 of file VP1String.cxx.

61 { double x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }

◆ str() [13/30]

QString VP1String::str ( const SbVec2f &  v)
staticinherited

Definition at line 62 of file VP1String.cxx.

62 { float x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }

◆ str() [14/30]

QString VP1String::str ( const SbVec2s &  v)
staticinherited

Definition at line 63 of file VP1String.cxx.

63 { short x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }

◆ str() [15/30]

QString VP1String::str ( const SbVec3d &  v)
staticinherited

Definition at line 64 of file VP1String.cxx.

64 { double x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }

◆ str() [16/30]

QString VP1String::str ( const SbVec3f &  v)
staticinherited

Definition at line 65 of file VP1String.cxx.

65 { float x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }

◆ str() [17/30]

QString VP1String::str ( const SbVec3s &  v)
staticinherited

Definition at line 66 of file VP1String.cxx.

66 { short x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }

◆ str() [18/30]

QString VP1String::str ( const SbVec4d &  v)
staticinherited

Definition at line 67 of file VP1String.cxx.

67 { double x,y,z,t; v.getValue(x,y,z,t); return "("+str(x)+", "+str(y)+", "+str(z)+", "+str(t)+")"; }

◆ str() [19/30]

QString VP1String::str ( const SbVec4f &  v)
staticinherited

Definition at line 68 of file VP1String.cxx.

68 { float x,y,z,t; v.getValue(x,y,z,t); return "("+str(x)+", "+str(y)+", "+str(z)+", "+str(t)+")"; }

◆ str() [20/30]

template<class T >
static QString VP1String::str ( const T *  t)
inlinestaticinherited

Definition at line 87 of file VP1String.h.

87 { return str(static_cast<const void* >(t)); }

◆ str() [21/30]

QString VP1String::str ( const void *  p)
staticinherited

Definition at line 48 of file VP1String.cxx.

49 {
50  if (p) {
51  std::ostringstream s;
52  s << p;
53  // Explicitly naming QString here avoids a cppcheck warning.
54  return QString (s.str().c_str());
55  } else {
56  return "NULL";
57  }
58 }

◆ str() [22/30]

QString VP1String::str ( const VP1Interval i)
staticinherited

Definition at line 42 of file VP1String.cxx.

43 {
44  return i.toString();
45 }

◆ str() [23/30]

static QString VP1String::str ( int  n)
inlinestaticinherited

Definition at line 77 of file VP1String.h.

77 { return QString::number(n); }

◆ str() [24/30]

static QString VP1String::str ( long  n)
inlinestaticinherited

Definition at line 75 of file VP1String.h.

75 { return QString::number(n); }

◆ str() [25/30]

static QString VP1String::str ( qlonglong  n)
inlinestaticinherited

Definition at line 79 of file VP1String.h.

79 { return QString::number(n); }

◆ str() [26/30]

static QString VP1String::str ( qulonglong  n)
inlinestaticinherited

Definition at line 80 of file VP1String.h.

80 { return QString::number(n); }

◆ str() [27/30]

static QString VP1String::str ( short int  n)
inlinestaticinherited

Definition at line 73 of file VP1String.h.

73 { return QString::number(n); }

◆ str() [28/30]

static QString VP1String::str ( uint  n)
inlinestaticinherited

Definition at line 78 of file VP1String.h.

78 { return QString::number(n); }

◆ str() [29/30]

static QString VP1String::str ( ulong  n)
inlinestaticinherited

Definition at line 76 of file VP1String.h.

76 { return QString::number(n); }

◆ str() [30/30]

static QString VP1String::str ( unsigned short int  n)
inlinestaticinherited

Definition at line 74 of file VP1String.h.

74 { return QString::number(n); }

◆ systemBase()

IVP1System* VP1HelperClassBase::systemBase ( ) const
inlineinherited

Definition at line 50 of file VP1HelperClassBase.h.

50 { return m_system; }

◆ verbose()

static bool VP1HelperClassBase::verbose ( )
inlinestaticinherited

Definition at line 32 of file VP1HelperClassBase.h.

32 { return s_vp1verbose; } // Returns true if env var VP1_VERBOSE_OUTPUT=1

◆ warnUndeletedInstances()

void VP1HelperClassBase::warnUndeletedInstances ( )
staticinherited

Definition at line 183 of file VP1HelperClassBase.cxx.

184 {
185  if (vp1helperclassbase_instanceMap.empty())
186  return;
187  std::cout << "WARNING: Detected "<<vp1helperclassbase_instanceMap.size()<<" undeleted helper class instances:"<<std::endl;
188 
189  std::map<VP1HelperClassBase*,QString>::iterator it,itE(vp1helperclassbase_instanceMap.end());
190  for (it = vp1helperclassbase_instanceMap.begin();it!=itE;++it) {
191  std::cout << " ==> "<<it->first<<": "<<it->first->m_helpername.toStdString()
192  << (it->second.isEmpty()?QString(""):" (in system "+it->second+")").toStdString()<<std::endl;
193  }
194 }

Member Data Documentation

◆ m_d

Imp* HitToSoNode::m_d
private

Definition at line 68 of file HitToSoNode.h.

◆ m_helpername

QString VP1HelperClassBase::m_helpername
privateinherited

Definition at line 67 of file VP1HelperClassBase.h.

◆ m_system

IVP1System* VP1HelperClassBase::m_system
privateinherited

Definition at line 68 of file VP1HelperClassBase.h.

◆ s_vp1verbose

const bool VP1HelperClassBase::s_vp1verbose = VP1QtUtils::environmentVariableIsOn("VP1_VERBOSE_OUTPUT")
staticprivateinherited

Definition at line 69 of file VP1HelperClassBase.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
AtlasDetectorID::is_pixel
bool is_pixel(Identifier id) const
Definition: AtlasDetectorID.h:760
HitToSoNode::getTGCAngle
double getTGCAngle(Identifier id) const
returns the phi angle of the passed phi strip identifier.
Definition: HitToSodeNode.cxx:63
Trk::PlaneSurface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specified for PlaneSurface: GlobalToLocal method without dynamic memory allocation - boolean checks i...
Definition: PlaneSurface.cxx:213
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
AtlasDetectorID::is_rpc
bool is_rpc(Identifier id) const
Definition: AtlasDetectorID.h:875
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
VP1DetInfo::mmIDHelper
static const MmIdHelper * mmIDHelper()
Definition: VP1DetInfo.cxx:162
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
SiliconTech::strip
@ strip
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
MuonGM::RpcReadoutElement::StripLength
double StripLength(bool measphi) const
returns the strip length for the phi or eta plane
HitToSoNode::fillMMValues
void fillMMValues(Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
Definition: HitToSodeNode.cxx:455
Trk::locX
@ locX
Definition: ParamDefs.h:43
AtlasDetectorID::is_csc
bool is_csc(Identifier id) const
Definition: AtlasDetectorID.h:891
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:44
TgcIdHelper::gasGap
int gasGap(const Identifier &id) const override
get the hashes
Definition: TgcIdHelper.cxx:642
TgcIdHelper
Definition: TgcIdHelper.h:50
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:770
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
hist_file_dump.d
d
Definition: hist_file_dump.py:137
HitToSoNode::fillTGCValues
void fillTGCValues(Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
Definition: HitToSodeNode.cxx:305
VP1HelperClassBase::m_helpername
QString m_helpername
Definition: VP1HelperClassBase.h:67
VP1HelperClassBase::messageVerbose
void messageVerbose(const QString &) const
Definition: VP1HelperClassBase.cxx:78
Trk::RIO_OnTrack::globalPosition
virtual const Amg::Vector3D & globalPosition() const override=0
Interface method to get the global Position.
VP1HelperClassBase::s_vp1verbose
static const bool s_vp1verbose
Definition: VP1HelperClassBase.h:69
skel.it
it
Definition: skel.GENtoEVGEN.py:423
AtlasDetectorID::is_mm
bool is_mm(Identifier id) const
Definition: AtlasDetectorID.h:913
RpcIdHelper::measuresPhi
bool measuresPhi(const Identifier &id) const override
Definition: RpcIdHelper.cxx:1068
MuonGM::TgcReadoutElement::stripCenterLocX
double stripCenterLocX(int gasGap, int strip, double radialPos) const
Returns the local X of the strip center at a given local radial position.
Definition: MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx:123
VP1Msg::debug
static bool debug()
Definition: VP1Msg.h:32
MuonGM::TgcReadoutElement::stripLength
double stripLength() const
Returns the length of each strip which is equal to the height of the chamber.
MuonGM::RpcReadoutElement
An RpcReadoutElement corresponds to a single RPC module; therefore typicaly a barrel muon station con...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/RpcReadoutElement.h:54
HitToSoNode::m_d
Imp * m_d
Definition: HitToSoNode.h:67
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
VP1DetInfo::stgcIDHelper
static const sTgcIdHelper * stgcIDHelper()
Definition: VP1DetInfo.cxx:161
VP1DetInfo::atlasIDHelper
static const AtlasDetectorID * atlasIDHelper()
Definition: VP1DetInfo.cxx:157
Trk::locR
@ locR
Definition: ParamDefs.h:50
MuonGM::CscReadoutElement
Definition: CscReadoutElement.h:56
VP1HelperClassBase::m_system
IVP1System * m_system
Definition: VP1HelperClassBase.h:68
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
HitToSoNode::fillSTGCValues
void fillSTGCValues(Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
Definition: HitToSodeNode.cxx:428
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
InDet::TRT_DriftCircleOnTrack
Definition: TRT_DriftCircleOnTrack.h:53
x
#define x
VP1String::str
static QString str(const QString &s)
Definition: VP1String.h:49
InDetDD::SolidStateDetectorElementBase::etaPitch
double etaPitch() const
Pitch (inline methods)
VP1HelperClassBase::messageDebug
void messageDebug(const QString &) const
Definition: VP1HelperClassBase.cxx:65
MuonGM::MuonClusterReadoutElement::surface
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
Definition: MuonClusterReadoutElement.h:123
RpcIdHelper
Definition: RpcIdHelper.h:51
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
Amg::setPhi
Amg::RotationMatrix3D setPhi(Amg::RotationMatrix3D mat, double angle, int convention=0)
Definition: EulerAnglesHelpers.h:102
MuonGM::CscReadoutElement::stripLength
double stripLength(int chamberLayer, int measuresPhi, int stripNumber, double &epsilon) const
Definition: CscReadoutElement.cxx:292
HitToSoNode::Imp::theclass
HitToSoNode * theclass
Definition: HitToSodeNode.cxx:44
TruthTest.itE
itE
Definition: TruthTest.py:25
MuonGM::TgcReadoutElement::channelPos
Amg::Vector3D channelPos(const Identifier &id) const
Returns the position of the active channel (wireGang or strip)
MuonGM::sTgcReadoutElement::stripPosition
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...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:323
TgcIdHelper::channel
int channel(const Identifier &id) const override
Definition: TgcIdHelper.cxx:649
MuonGM::MuonDetectorManager::getTgcReadoutElement
const TgcReadoutElement * getTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:247
Amg::getTransformFromRotTransl
Amg::Transform3D getTransformFromRotTransl(Amg::RotationMatrix3D rot, Amg::Vector3D transl_vec)
Definition: GeoPrimitivesHelpers.h:172
Trk::LocalParameters::get
double get(ParamDefs par) const
Retrieve specified parameter (const version).
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
VP1DetInfo::tgcIDHelper
static const TgcIdHelper * tgcIDHelper()
Definition: VP1DetInfo.cxx:160
InDetDD::SiDetectorElement::phiPitch
double phiPitch() const
Pitch (inline methods)
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
MuonGM::TgcReadoutElement::stripWidth
double stripWidth(int gasGap, int strip) const
Returns the width of a given strip in the gasGap i.
Definition: MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx:146
VP1Msg::prefix_msg
static const char * prefix_msg()
Definition: VP1Msg.h:56
lumiFormat.i
int i
Definition: lumiFormat.py:92
InDetDD::SolidStateDetectorElementBase::thickness
double thickness() const
z
#define z
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
MuonGM::CscReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position If the strip number is outside the range of valid strips, the function will return fal...
Definition: CscReadoutElement.cxx:751
AtlasDetectorID::is_tgc
bool is_tgc(Identifier id) const
Definition: AtlasDetectorID.h:902
beamspotman.n
n
Definition: beamspotman.py:731
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition: TRTDetectorFactory_Full.cxx:73
MuonGM::TgcReadoutElement::gangShortWidth
double gangShortWidth(int gasGap, int gang) const
Returns the length of the most bottom wire in the gang.
Definition: MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx:79
Trk::CylinderBounds
Definition: CylinderBounds.h:46
MuonGM::sTgcReadoutElement
An sTgcReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station c...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:28
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGM::TgcReadoutElement
A TgcReadoutElement corresponds to a single TGC chamber; therefore typically a TGC station contains s...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/TgcReadoutElement.h:42
HitsSoNodeManager::getShapeNode_Strip
SoNode * getShapeNode_Strip(double length, double width=0, double depth=0)
Definition: HitsSoNodeManager.cxx:269
HitToSoNode::Imp::nodeManager
HitsSoNodeManager nodeManager
Definition: HitToSodeNode.cxx:46
IVP1System::name
const QString & name() const
Definition: IVP1System.cxx:50
Trk::TrkDetElementBase::surface
virtual const Surface & surface() const =0
Return surface associated with this detector element.
MuonGM::TgcReadoutElement::gangRadialLength
double gangRadialLength(int gasGap, int gang) const
Returns the length of the wire gang along the radial direction [pitch x N_{wire}^{gang}].
Definition: MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx:72
python.xAODType.dummy
dummy
Definition: xAODType.py:4
HitToSoNode::fillRPCValues
void fillRPCValues(Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
Definition: HitToSodeNode.cxx:354
VP1DetInfo::rpcIDHelper
static const RpcIdHelper * rpcIDHelper()
Definition: VP1DetInfo.cxx:159
TgcIdHelper::isStrip
int isStrip(const Identifier &id) const
isStrip corresponds to measuresPhi
Definition: TgcIdHelper.cxx:645
tolerance
Definition: suep_shower.h:17
VP1QtInventorUtils::sbcol2qcol
static QColor sbcol2qcol(const SbColor &)
Definition: VP1QtInventorUtils.cxx:1140
HitToSoNode::fillSiValues
void fillSiValues(Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
Definition: HitToSodeNode.cxx:487
dumpTgcDigiThreshold.isStrip
list isStrip
Definition: dumpTgcDigiThreshold.py:33
HitToSoNode::fillValues
void fillValues(Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
Definition: HitToSodeNode.cxx:286
python.selection.number
number
Definition: selection.py:20
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
MuonGM::RpcReadoutElement::stripPos
Amg::Vector3D stripPos(const Identifier &id) const
Definition: MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx:177
AtlasDetectorID::is_indet
bool is_indet(Identifier id) const
Definition: AtlasDetectorID.h:683
VP1Msg::prefix_debug
static const char * prefix_debug()
Definition: VP1Msg.h:57
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
sTgcIdHelper
Definition: sTgcIdHelper.h:55
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
Trk::MeasurementBase::localParameters
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Definition: MeasurementBase.h:132
python.PyAthena.v
v
Definition: PyAthena.py:157
MuonGM::RpcReadoutElement::StripWidth
double StripWidth(bool measphi) const
returns the strip width for the phi or eta plane
VP1Msg::prefix_verbose
static const char * prefix_verbose()
Definition: VP1Msg.h:59
InDetDD::SolidStateDetectorElementBase::rawLocalPositionOfCell
Amg::Vector2D rawLocalPositionOfCell(const SiCellId &cellId) const
Returns position (center) of cell.
Definition: SolidStateDetectorElementBase.cxx:230
VP1DetInfo::muonDetMgr
static const MuonGM::MuonDetectorManager * muonDetMgr()
Definition: VP1DetInfo.cxx:148
y
#define y
AtlasDetectorID::is_muon
bool is_muon(Identifier id) const
Definition: AtlasDetectorID.h:701
MmIdHelper
Definition: MmIdHelper.h:54
Trk::Surface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const =0
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean chec...
CscIdHelper
Definition: CscIdHelper.h:52
VP1Msg::message
static void message(const QString &, IVP1System *sys=0)
Definition: VP1Msg.cxx:30
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
Trk::RIO_OnTrack::identify
virtual Identifier identify() const final
return the identifier -extends MeasurementBase
Definition: RIO_OnTrack.h:155
HitsSoNodeManager::getShapeNode_Cross
SoNode * getShapeNode_Cross(double extent)
Definition: HitsSoNodeManager.cxx:427
VP1HelperClassBase::message
void message(const QString &) const
Definition: VP1HelperClassBase.cxx:49
AtlasDetectorID::is_stgc
bool is_stgc(Identifier id) const
Definition: AtlasDetectorID.h:924
str
Definition: BTagTrackIpAccessor.cxx:11
VP1Msg::verbose
static bool verbose()
Definition: VP1Msg.h:31
VP1DetInfo::cscIDHelper
static const CscIdHelper * cscIDHelper()
Definition: VP1DetInfo.cxx:158
MuonGM::CscReadoutElement::stripPos
Amg::Vector3D stripPos(const Identifier &id) const
takes into account internal alignment parameters, hence gives accurate answer
Definition: CscReadoutElement.cxx:227
CscIdHelper::measuresPhi
bool measuresPhi(const Identifier &id) const override
Definition: CscIdHelper.cxx:774
Trk::RIO_OnTrack::detectorElement
virtual const TrkDetElementBase * detectorElement() const =0
returns the detector element, assoicated with the PRD of this class
VP1HelperClassBase::VP1HelperClassBase
VP1HelperClassBase(IVP1System *sys=0, QString helpername="")
Definition: VP1HelperClassBase.cxx:28
HitsSoNodeManager::getShapeNode_DriftTube
SoNode * getShapeNode_DriftTube(double halfLength, double radius)
Definition: HitsSoNodeManager.cxx:138
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
python.compressB64.c
def c
Definition: compressB64.py:93
VP1LinAlgUtils::toSoTransform
static SoTransform * toSoTransform(const HepGeom::Transform3D &, SoTransform *t=0)
Definition: VP1LinAlgUtils.cxx:40
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
IVP1System::message
void message(const QString &) const
Definition: IVP1System.cxx:336
AtlasDetectorID
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Definition: AtlasDetectorID.h:57
CscIdHelper::chamberLayer
int chamberLayer(const Identifier &id) const
Definition: CscIdHelper.cxx:770
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
Trk::CylinderBounds::halflengthZ
double halflengthZ() const
This method returns the halflengthZ.
HitToSoNode::fillCSCValues
void fillCSCValues(Identifier &id, const Trk::TrkDetElementBase *baseDetEl, double &striplength, double &stripWidth, double &stripThickness, Amg::Vector2D *&localposStrip)
Definition: HitToSodeNode.cxx:390
MuonGM::CscReadoutElement::cathodeReadoutPitch
double cathodeReadoutPitch(int chLayer, int measuresPhi) const
Definition: CscReadoutElement.cxx:147