ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
TrackHandleBase::Imp Class Reference
Collaboration diagram for TrackHandleBase::Imp:

Public Member Functions

 Imp (TrackHandleBase *tc)
 
 ~Imp ()
 
void ensureInitPointsRaw ()
 
void ensureInitPointsPropagated ()
 
void ensureInitPointsProjections_InDet (bool raw)
 
void ensureInitPointsProjections_Muon (bool raw)
 
void materialChanged ()
 
void rebuild3DObjects ()
 
void attach3DObjects ()
 
void detach3DObjects ()
 
void addPathToSoLineSetAndSoVertexProperty (const std::vector< Amg::Vector3D > &points, int &iver, int &numlines, SoLineSet *, SoVertexProperty *) const
 
void addPathsToSoLineSetAndSoVertexProperty (const Amg::SetVectorVector3D *paths, int &iver, int &numlines, SoLineSet *, SoVertexProperty *) const
 
SoMaterial * determineMaterial ()
 
void ensureLoadPathInfo ()
 
AscObj_TSOSaddTSOS (const Trk::TrackStateOnSurface *tsos, unsigned index) const
 

Static Public Member Functions

static void convertLineSetToCylinders (SoLineSet *line, SoSeparator *sep, const double &cylradius)
 
static double dist (const SbVec3f &p1, const SbVec3f &p2)
 
static bool isSane (const Amg::Vector3D &p)
 

Public Attributes

TrackHandleBasetheclass
 
bool chargeinit
 
double charge
 
bool massinit
 
double mass
 
SoLineSet * line
 
SoSeparator * extraRepresentation
 
SoSeparator * extrapSurfaces_sep
 for debugging. More...
 
bool extraRepAttached
 
std::vector< Amg::Vector3D > * points_raw
 
std::vector< Amg::Vector3D > * points_propagated
 
Amg::SetVectorVector3Dpoints_raw_id_projections
 
Amg::SetVectorVector3Dpoints_raw_muon_projections
 
Amg::SetVectorVector3Dpoints_propagated_id_projections
 
Amg::SetVectorVector3Dpoints_propagated_muon_projections
 
std::set< GeoPVConstLink > touchedmuonchambers
 
bool inittouchedchambers
 
SoMaterial * randommaterial
 
QList< AssociatedObjectHandleBase * > associatedObjects
 
std::map< std::pair< int, double >, AssocObjAttachmentHandle * > attachmentHandles
 
bool pathInfoLoaded
 
const Trk::TrackpathInfo_TrkTrack
 Used in the case of a Trk::Track. More...
 
const std::vector< Amg::Vector3D > * pathInfo_Points
 Used in all other cases. More...
 
SoSeparator * label_sep
 
TrackCommonFlags::TSOSPartsFlags shownTSOSParts
 
TrackCommonFlags::TSOSPartsFlags customColouredTSOSParts
 
std::vector< AssociatedObjectHandleBase * > * tsos_ascobjs
 
QTreeWidgetItem * m_objBrowseTree
 
float tempMaxPropRadius
 

Static Public Attributes

static int ntrackhandles = 0
 

Detailed Description

Definition at line 76 of file TrackHandleBase.cxx.

Constructor & Destructor Documentation

◆ Imp()

TrackHandleBase::Imp::Imp ( TrackHandleBase tc)
inline

Definition at line 83 of file TrackHandleBase.cxx.

83  : theclass(tc),
84  chargeinit(false),
86  massinit(false),
88  line(nullptr),
89  extraRepresentation(nullptr),
90  extrapSurfaces_sep(nullptr),
91  extraRepAttached(false),
92  points_raw(nullptr), points_propagated(nullptr),
97  inittouchedchambers(false),
98  randommaterial(nullptr),
99  pathInfoLoaded(false),
100  pathInfo_TrkTrack(nullptr),
101  pathInfo_Points(nullptr),
102  label_sep(nullptr),
105  tsos_ascobjs(nullptr),
106  m_objBrowseTree(nullptr),
107  tempMaxPropRadius(0.0){}

◆ ~Imp()

TrackHandleBase::Imp::~Imp ( )
inline

Definition at line 108 of file TrackHandleBase.cxx.

108 { delete tsos_ascobjs; }

Member Function Documentation

◆ addPathsToSoLineSetAndSoVertexProperty()

void TrackHandleBase::Imp::addPathsToSoLineSetAndSoVertexProperty ( const Amg::SetVectorVector3D paths,
int &  iver,
int &  numlines,
SoLineSet *  line,
SoVertexProperty *  vertices 
) const

Definition at line 620 of file TrackHandleBase.cxx.

623 {
624  if ( !paths || ( paths->size()==1 && paths->begin()->empty()) )
625  return;
626  if (!line) {
627  theclass->collHandle()->systemBase()->message("TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty (2) ERROR: Unexpected null SoLineSet pointer!");
628  return;
629  }
630  if (!vertices) {
631  theclass->collHandle()->systemBase()->message("TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty (2) ERROR: Unexpected null SoVertexPropery pointer!");
632  return;
633  }
634  Amg::SetVectorVector3D::const_iterator itProjPart, itProjPartEnd(paths->end());
635  for (itProjPart = paths->begin();itProjPart!=itProjPartEnd;++itProjPart)
636  addPathToSoLineSetAndSoVertexProperty(*itProjPart,iver,numlines,line,vertices);
637 }

◆ addPathToSoLineSetAndSoVertexProperty()

void TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty ( const std::vector< Amg::Vector3D > &  points,
int &  iver,
int &  numlines,
SoLineSet *  line,
SoVertexProperty *  vertices 
) const

Definition at line 556 of file TrackHandleBase.cxx.

559 {
560  if (points.size()<2)
561  return;
562  if (!line) {
563  theclass->collHandle()->systemBase()->message("TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty (1) ERROR: Unexpected null SoLineSet pointer!");
564  return;
565  }
566  if (!vertices) {
567  theclass->collHandle()->systemBase()->message("TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty (1) ERROR: Unexpected null SoVertexPropery pointer!");
568  return;
569  }
570  std::vector<Amg::Vector3D >::const_iterator pointsIt, pointsItEnd(points.end());
571  unsigned npointsused(0);
572 
573 
575  if (tempMaxPropRadius>0.0){
577  theclass->collHandle()->systemBase()->messageVerbose("maxR2 is set to "+VP1Msg::str(maxR2));
578  }
579  float vertexPlanePhi = (theclass->common()->controller()->vertexProjectionAngle())*M_PI/180;// angle of plane to use for vertex projection
580  vertexPlanePhi-=M_PI; // ATLAS range is -PI to PI
581 
582  // debug msgs:
583  // theclass->collHandle()->systemBase()->messageVerbose("TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty - adding "
584  // +VP1Msg::str(points.size())+" points up to R2 of "+VP1Msg::str(maxR2));
585  theclass->collHandle()->systemBase()->messageVerbose("Vertex projection is set to "+VP1Msg::str(vertexPlanePhi));
586 
587  // unsigned int count=0; // for the debug msgs below
588 
589  //For vertex projection
590  Amg::Vector3D tempPoint;
591 
592  double trkPhi = theclass->momentum().phi(); // some tracks curve between sections otherwise.
593  double newPhi= vertexPlanePhi+M_PI;
594  if (cos(vertexPlanePhi-trkPhi)>0) newPhi=vertexPlanePhi;
595  // theclass->collHandle()->systemBase()->messageVerbose("Vertex projection is set to "+VP1Msg::str(vertexPlanePhi)+" trkPhi= "+VP1Msg::str(trkPhi)+" newPhi="+VP1Msg::str(newPhi)); // debug msg
596 
597  for (pointsIt = points.begin();pointsIt!=pointsItEnd && pointsIt->mag2()<maxR2; ++pointsIt) {
598  // theclass->collHandle()->systemBase()->messageVerbose(VP1Msg::str(count++)+": point has perp2="+VP1Msg::str(pointsIt->perp2())); // debug msg
599  if (!isSane(*pointsIt)) {
600  theclass->collHandle()->systemBase()->message("WARNING: Ignoring point on track:"+VP1Msg::str( *pointsIt ) );
601  continue;
602  }
603 
605  tempPoint = *pointsIt;
606  Amg::setPhi(tempPoint, newPhi);
607 
608  // std::cout<<trkPhi<<"\t"<<phi<<"\t"<<r0<<"\t"<<r1<<"\t"<<r2<<"\t"<<r3<<"\t"<<rotatePhi<<"\t"<<tempPoint.getPhi()<<std::endl; // debug msg
609 
610  vertices->vertex.set1Value(iver++,tempPoint.x(),tempPoint.y(),tempPoint.z());
611  } else {
612  vertices->vertex.set1Value(iver++,pointsIt->x(),pointsIt->y(),pointsIt->z());
613  }
614  ++npointsused;
615  }
616  line->numVertices.set1Value(numlines++,npointsused);
617 }

◆ addTSOS()

AscObj_TSOS * TrackHandleBase::Imp::addTSOS ( const Trk::TrackStateOnSurface tsos,
unsigned  index 
) const

Definition at line 423 of file TrackHandleBase.cxx.

424 {
425  AscObj_TSOS* ao = new AscObj_TSOS(theclass,tsos,index);
427  tsos_ascobjs->push_back(ao);
428  if (ao->parts()&shownTSOSParts)
429  ao->setVisible(true);
430  return ao;
431 }

◆ attach3DObjects()

void TrackHandleBase::Imp::attach3DObjects ( )

Definition at line 900 of file TrackHandleBase.cxx.

901 {
902  VP1Msg::messageDebug("TrackHandleBase::Imp::attach3DObjects() - 1");
903 
904  if (!theclass->m_currentmaterial) {
906  theclass->m_currentmaterial->ref();
907  materialChanged();
908  }
909  if (line && theclass->m_collhandle->sephelper()) {
910  VP1Msg::messageDebug("TrackHandleBase::Imp::attach3DObjects() - 2");
912  double tube_r(theclass->m_collhandle->trackTubeRadius());
913  if (tube_r) {
914  if (extraRepresentation) {
915  extraRepresentation->removeAllChildren();
916  } else {
917  extraRepresentation = new SoSeparator;
918  extraRepresentation->ref();
920  }
922  if (!extraRepAttached) {
924  extraRepAttached=true;
925  }
926  }
927  }
929  theclass->common()->textSep()->addChild(label_sep);
930 
932 }

◆ convertLineSetToCylinders()

void TrackHandleBase::Imp::convertLineSetToCylinders ( SoLineSet *  line,
SoSeparator *  sep,
const double &  cylradius 
)
static

Definition at line 851 of file TrackHandleBase.cxx.

852 {
853  //TODO: belongs in VP1Utils
854  SoVertexProperty *vertices = static_cast<SoVertexProperty *>(line->vertexProperty.getValue());
855  if (!vertices)
856  return;
857  int ivert(0);
858  SbMatrix lastTransf;
859  lastTransf.makeIdentity();
860 
861  for (int iline=0;iline<line->numVertices.getNum();++iline) {
862  int nvert=line->numVertices[iline];
863  if (nvert<2) {
864  ivert += nvert;
865  continue;
866  }
867  for (int jvert= ivert; jvert<ivert+nvert-1;++jvert) {
868  SbVec3f p1 = vertices->vertex[jvert].getValue();
869  SbVec3f p2 = vertices->vertex[jvert+1].getValue();
870  SoCylinder * cyl = new SoCylinder;
871  cyl->radius = cylradius;
872  const double l(dist(p1,p2));
873  cyl->height = l;
874  //First translate (0,l/2,0), then rotate (0,1,0) into (p2-p1), then translate p1.:
875  SbMatrix m;
876  m.setTranslate(SbVec3f(0,0.5*l,0));
877  SbVec3f v(p2); v -= p1;
878  SbRotation rot(SbVec3f(0,1,0),v);
879  SbMatrix m2; m2.setRotate(rot);
880  m.multRight(m2);
881  SbMatrix m3;
882  m3.setTranslate(p1);
883  m.multRight(m3);
884  //m is the transform we need in front of our cylinder.
885  //However, we need to first add the inverse of all previous transforms.
886  SbMatrix mat;
887  mat = m;
888  mat.multRight(lastTransf.inverse());
889  SoMatrixTransform * mt = new SoMatrixTransform;
890  mt->matrix.setValue(mat);
891  sep->addChild(mt);
892  sep->addChild(cyl);
893  lastTransf = m;
894  }
895  ivert += nvert;
896  }
897 }

◆ detach3DObjects()

void TrackHandleBase::Imp::detach3DObjects ( )

◆ determineMaterial()

SoMaterial * TrackHandleBase::Imp::determineMaterial ( )

Definition at line 1286 of file TrackHandleBase.cxx.

1287 {
1288  // debug msg:
1289  // theclass->collHandle()->systemBase()->message("determineMaterial with material = "+QString::number(static_cast<unsigned int>(theclass->collHandle()->colourBy()))); //too verbose. EJWM.
1290 
1291  int pdgcode(0);
1292  switch(theclass->collHandle()->colourBy()) {
1293 
1295  pdgcode = theclass->pdgCode();
1296  return theclass->common()->controller()->getMaterialForPDGCode(pdgcode == SimBarCode::unknownPDG ? 0 : pdgcode);
1297 
1299  if (!randommaterial) {
1300  randommaterial = new SoMaterial;
1301  randommaterial->ref();
1303  }
1304  return randommaterial;
1305 
1310 
1312  {
1313  // debug code:
1314  // AscObjSelectionManager* selManager= theclass->common()->ascObjSelectionManager();
1315  // TrackHandleBase* handle = 0;
1316  // if ( selManager ) {
1317  // QList<AssociatedObjectHandleBase*> selection = selManager->currentSelection();
1318  // if (!selection.empty()) handle = selection[0]->trackHandle(); // Take first at the moment, but should loop and colour by all. FIXME!
1319  // else theclass->collHandle()->systemBase()->message("Empty selection!");
1320  // } else {
1321  // theclass->collHandle()->systemBase()->message("No AscObjSelectionManager");
1322  // }
1323 
1325  if (handle==nullptr) {
1326  //theclass->collHandle()->systemBase()->message("No previously selected track.");
1327  return theclass->collHandle()->material(); // use collection colouring
1328  }
1329 
1330  Amg::Vector3D selectedTrackMom = handle->momentum();
1331  Amg::Vector3D thisTrackMom = theclass->momentum();
1332 
1333  float phiDistance = sqrt ( pow( selectedTrackMom.phi() - thisTrackMom.phi(),2) );
1334  float etaDistance = sqrt ( pow( selectedTrackMom.eta() - thisTrackMom.eta(),2) );
1335 
1336  //theclass->collHandle()->systemBase()->message("Distance "+QString::number(distance)); // debug msg
1337  float colScale=std::max(0.0, std::min(1.0,phiDistance/(M_PI))); // means that min scale is reached 0.5 of total possible distance away.
1338  float brightness= std::max(0.2, 1.0-(etaDistance/5.0) );
1339  //theclass->collHandle()->systemBase()->message("Distance "+QString::number(distance)+"\t brightness "+QString::number(brightness)); // debug msg
1340 
1341  SoMaterial* mat = new SoMaterial;
1342  mat->ref();
1343 
1344  // get colour of collection.
1345  const SbColor& col=theclass->collHandle()->material()->diffuseColor[0];
1346  float r,g,b;
1347  col.getValue(r,g,b);
1348 
1349  double r3,g3,b3;
1350  if (colScale>0.01) {
1351 
1352  //Use QColor to get HSL
1353  QColor tempCol = QColor::fromRgbF( r,g,b );
1354  double h,s,v;
1355  tempCol.getHsvF(&h,&s,&v);
1356 
1357  //get opposite hue for farthest away points.
1358  h+=0.5;
1359  if (h>1.0) h-=1.0;
1360  tempCol.setHsvF(h,s,v);
1361  double r2,g2,b2;
1362  tempCol.getRgbF(&r2,&g2,&b2);
1363 
1364  // closest will have collection colour - far away will have opposite colour
1365  r3 = r+(r2-r)*colScale;
1366  b3 = b+(b2-b)*colScale;
1367  g3 = g+(g2-g)*colScale;
1368 
1369  } else {
1370  // too close - take default values
1371  r3=r;b3=b;g3=g;
1372  }
1373 
1374  VP1MaterialButton::setMaterialParameters(mat,r3*brightness,g3*brightness,b3*brightness,
1377 
1378  return mat;
1379  }
1381  {
1382  SoMaterial* mat = theclass->common()->system()->materialFromVertex(theclass);
1383  if (mat)
1384  return mat;
1385  else
1386  return theclass->collHandle()->material();
1387  }
1389  default:
1390  return theclass->collHandle()->material();
1391  }
1392 }

◆ dist()

double TrackHandleBase::Imp::dist ( const SbVec3f &  p1,
const SbVec3f &  p2 
)
static

Definition at line 842 of file TrackHandleBase.cxx.

843 {
844  float x1,x2,y1,y2,z1,z2;
845  p1.getValue(x1,y1,z1);
846  p2.getValue(x2,y2,z2);
847  return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
848 }

◆ ensureInitPointsProjections_InDet()

void TrackHandleBase::Imp::ensureInitPointsProjections_InDet ( bool  raw)

Definition at line 1094 of file TrackHandleBase.cxx.

1095 {
1097  return;
1098 
1100 
1101  //First check if we use same points for raw/propagated modes:
1103  if (raw) {
1106  return;
1107  }
1108  } else {
1111  return;
1112  }
1113  }
1114  }
1115 
1116  //Time for the hard work:
1117  std::vector<Amg::Vector3D > * points=nullptr;
1118  Amg::SetVectorVector3D* projections=nullptr;
1119  if (raw) {
1121  points = points_raw;
1122  projections = points_raw_id_projections;
1123  } else {
1126  projections = points_propagated_id_projections;
1127  }
1128 
1129  if ( !points || points->empty() || points->size()<2 ) {
1130  projections->clear();
1131  projections->insert(std::vector<Amg::Vector3D >());//error signature
1132  return;
1133  }
1134 
1135  bool oneok(false);
1137  theclass->common()->indetProjHelper_Pixel()->projectPath(*points,*projections);
1138  oneok = true;
1139  }
1140  if (theclass->common()->indetProjHelper_SCT()) {
1141  theclass->common()->indetProjHelper_SCT()->projectPath(*points,*projections);
1142  oneok = true;
1143  }
1144  if (theclass->common()->indetProjHelper_TRT()) {
1145  theclass->common()->indetProjHelper_TRT()->projectPath(*points,*projections);
1146  oneok = true;
1147  }
1148 
1149  if (!oneok) {
1150  projections->clear();
1151  projections->insert(std::vector<Amg::Vector3D >());//error signature
1152  }
1153 }

◆ ensureInitPointsProjections_Muon()

void TrackHandleBase::Imp::ensureInitPointsProjections_Muon ( bool  raw)

Definition at line 1156 of file TrackHandleBase.cxx.

1157 {
1159  return;
1160 
1162 
1163  //First check if we use same points for raw/propagated modes:
1165  if (raw) {
1168  return;
1169  }
1170  } else {
1173  return;
1174  }
1175  }
1176  }
1177 
1178  //Time for the hard work:
1179  std::vector<Amg::Vector3D > * points;
1180  Amg::SetVectorVector3D * projections;
1181  if (raw) {
1183  points = points_raw;
1184  projections = points_raw_muon_projections;
1185  } else {
1188  projections = points_propagated_muon_projections;
1189  }
1190 
1192  if ( !VP1JobConfigInfo::hasMuonGeometry() || !projhelper || !points || points->empty() ) {
1193  projections->insert(std::vector<Amg::Vector3D >());//error signature
1194  return;
1195  }
1196 
1197  //Temporary variables:
1198  Amg::Vector3D firstEndWall_pointA, firstEndWall_pointB;
1199  Amg::Vector3D secondEndWall_pointA, secondEndWall_pointB;
1200  bool outsidechamber;
1201  std::vector<Amg::Vector3D > proj1, proj2;
1202 
1203  //For each (MDT) chamber we try to project all line segments on "points" to the ends of that chamber.
1205 
1206  //For now, only project to end of MDT chambers:
1207  if (!projhelper->isKnownMDTChamber(*it))
1208  continue;
1209 
1210  proj1.clear();
1211  proj2.clear();
1212 
1213  // now loop over the stored points
1214  std::vector<Amg::Vector3D >::const_iterator pointsIt=points->begin(), pointsItEnd=points->end()-1;
1215  for (;pointsIt!=pointsItEnd; ++pointsIt) {
1216 
1217  // Do projections
1218  bool ok = projhelper->projectAndConstrainLineSegmentToMDTChamberEndWalls( *it, *pointsIt, *(pointsIt+1),
1219  firstEndWall_pointA, firstEndWall_pointB,
1220  secondEndWall_pointA, secondEndWall_pointB,
1221  outsidechamber );
1222 
1223  if (!ok) {
1224  theclass->collHandle()->systemBase()->message("TrackHandleBase Error: "
1225  "Problems with projectAndConstrainLineSegmentToMDTChamberEndWalls(..)");
1226  // projections->clear();
1227  // projections->push_back(std::vector<Amg::Vector3D >);//error signature
1228  continue;
1229  }
1230 
1231  if (!outsidechamber){
1232  if ( proj1.empty() ) {
1233  proj1.push_back(firstEndWall_pointA); proj1.push_back(firstEndWall_pointB);
1234  } else {
1235  if ( proj1[proj1.size()-1] == firstEndWall_pointA ) {
1236  proj1.push_back(firstEndWall_pointB);//Keep adding to line part
1237  } else {
1238  //Start new line.
1239  projections->insert(proj1); proj1.clear();
1240  proj1.push_back(firstEndWall_pointA); proj1.push_back(firstEndWall_pointB);
1241  }
1242  }
1243  if ( proj2.empty() ) {
1244  proj2.push_back(secondEndWall_pointA); proj2.push_back(secondEndWall_pointB);
1245  } else {
1246  // unsure about this change...coverity 16206, sroe
1247  // if ( proj2[proj2.size()-1] == firstEndWall_pointA ) {
1248  if ( proj2[proj2.size()-1] == secondEndWall_pointA ) {
1249  proj2.push_back(secondEndWall_pointB);//Keep adding to line part
1250  } else {
1251  //Start new line.
1252  projections->insert(proj2); proj2.clear();
1253  proj2.push_back(secondEndWall_pointA); proj2.push_back(secondEndWall_pointB);
1254  }
1255  }
1256  }
1257  //proj2 fixme
1258  }
1259  if ( !proj1.empty() ) {
1260  projections->insert(proj1);
1261  }
1262  if ( !proj2.empty() ) {
1263  projections->insert(proj2);
1264  }
1265  }
1266 }

◆ ensureInitPointsPropagated()

void TrackHandleBase::Imp::ensureInitPointsPropagated ( )

Definition at line 1062 of file TrackHandleBase.cxx.

1063 {
1064  if (points_propagated)
1065  return;
1066 
1068 
1069  if (pathInfo_TrkTrack) {
1070  points_propagated = new std::vector<Amg::Vector3D >();
1071  bool ok (false);
1072  if (theclass->hasCharge()&&theclass->charge()!=0.0)
1078  else
1080 
1081  if (!ok) {
1082  delete points_propagated;
1085  }
1086  } else {
1087  //We just use the raw points:
1090  }
1091 }

◆ ensureInitPointsRaw()

void TrackHandleBase::Imp::ensureInitPointsRaw ( )

Definition at line 984 of file TrackHandleBase.cxx.

985 {
986  // debug msg:
987  // theclass->collHandle()->systemBase()->message("ensureInitPointsRaw start" );
988 
989  if (points_raw)
990  return;
991  points_raw = new std::vector<Amg::Vector3D >;
992 
994  // Get information about this path //
996 
998 
999  if (pathInfo_TrkTrack) {
1000  Amg::Vector3D * firstmomentum(nullptr);
1002  points_raw->reserve(pathInfo_TrkTrack->trackParameters()->size());
1003  bool unsafeparts(false);
1006  const Trk::TrackParameters* trackParam;
1007  for (; tsos_iter != tsos_end; ++tsos_iter) {
1008  if (!VP1TrackSanity::isSafe(*tsos_iter)) {
1009  unsafeparts = true;
1010  continue;
1011  }
1012  if (theclass->collHandle()->ignoreMEOTinProp() && (*tsos_iter)->materialEffectsOnTrack())
1013  continue;
1014  trackParam = (*tsos_iter)->trackParameters();
1015  if (trackParam) {
1016  if (!VP1TrackSanity::isSafe(trackParam)) {
1017  unsafeparts = true;
1018  continue;
1019  }
1020  trackParam->position();//test
1021  points_raw->push_back( trackParam->position() );
1022  if (!firstmomentum) {
1023  firstmomentum = new Amg::Vector3D(trackParam->momentum());
1024  }
1025  }
1026  }
1027  if (unsafeparts)
1028  theclass->collHandle()->systemBase()->message("WARNING: Ignored unsafe parts of track!");
1029  if (points_raw->size()==1) {
1030  if (!firstmomentum) {
1031  theclass->collHandle()->systemBase()->message(" TrackHandleBase ERROR: Unexpected null firstmomentum!");
1032  firstmomentum = new Amg::Vector3D(0,0,0);
1033  }
1034  if (firstmomentum->mag()==0.0) {
1035  theclass->collHandle()->systemBase()->message("TrackHandleBase ERROR: Only point on track had zero momentum. Can't add second point.");
1036  points_raw->clear();
1037  } else {
1038  VP1Msg::messageVerbose("TrackHandleBase: Adding second point in direction of initial momentum.");
1039  points_raw->push_back(points_raw->front()+(*firstmomentum)*(100.0/firstmomentum->mag()));
1040  }
1041  } else if (points_raw->empty()) {
1042  theclass->collHandle()->systemBase()->message("TrackHandleBase ERROR: No points on track.");
1043  }
1044 
1045  delete firstmomentum;
1046  firstmomentum = nullptr;
1047  return;
1048  }
1049  if (pathInfo_Points)
1050  std::copy(pathInfo_Points->begin(), pathInfo_Points->end(), std::back_inserter(*points_raw));
1051  if (points_raw->size()<2) {
1052  theclass->collHandle()->systemBase()->message("TrackHandleBase ERROR: Less than two points on track provided.");
1053  points_raw->clear();
1054  } else {
1055  VP1Msg::messageVerbose( "TrackHandleBase: Created raw data "
1056  + QString::number(points_raw->size())
1057  + " points for track.");
1058  }
1059 }

◆ ensureLoadPathInfo()

void TrackHandleBase::Imp::ensureLoadPathInfo ( )

Definition at line 189 of file TrackHandleBase.cxx.

190 {
191  if (pathInfoLoaded)
192  return;
193  pathInfoLoaded = true;
195  if (pathInfo_TrkTrack)
196  return;
198  if (!pathInfo_Points) {
199  theclass->collHandle()->systemBase()->message("ERROR: No path information for track in collection "+theclass->collHandle()->name());
200  }
201 }

◆ isSane()

static bool TrackHandleBase::Imp::isSane ( const Amg::Vector3D p)
inlinestatic

Definition at line 164 of file TrackHandleBase.cxx.

165  {
166  if (p.x()!=p.x()||fabs(p.x())>1.0*CLHEP::km)
167  return false;
168  if (p.y()!=p.y()||fabs(p.y())>1.0*CLHEP::km)
169  return false;
170  if (p.z()!=p.z()||fabs(p.z())>1.0*CLHEP::km)
171  return false;
172  return true;
173  }

◆ materialChanged()

void TrackHandleBase::Imp::materialChanged ( )

Definition at line 833 of file TrackHandleBase.cxx.

834 {
836  std::map<std::pair<int,double>,AssocObjAttachmentHandle *>::iterator it,itE(attachmentHandles.end());
837  for (it = attachmentHandles.begin();it!=itE;++it)
838  it->second->trackMaterialChanged();
839 }

◆ rebuild3DObjects()

void TrackHandleBase::Imp::rebuild3DObjects ( )

Definition at line 658 of file TrackHandleBase.cxx.

659 {
660  //Ensure we are always detached while updating.
661  if (theclass->m_visible)
662  detach3DObjects();
663 
664  // Make sure we're not going to redraw old surfaces, for this debug mode.
667 
668  Trk::IExtrapolator * propagator = theclass->collHandle()->propagator();
669 
670  if (propagator)
672  else
674 
676  if (id_proj)
678 
680  if (muon_proj)
682 
683  std::vector<Amg::Vector3D > * points;
684  Amg::SetVectorVector3D *proj_id, *proj_muon;
685  if (propagator) {
689  } else {
690  points = points_raw;
691  proj_id = points_raw_id_projections;
692  proj_muon = points_raw_muon_projections;
693  }
694 
695  //Put points into an appropriate vertex property.
696  theclass->clearLine(); //FIXME: Since we are just changing shape - no need to delete line and take it
697  //out of the tree first. Just edit lineset properties instead.
698  line = new SoLineSet();
699  line->ref();
701 
702  SoVertexProperty * vertices = new SoVertexProperty();
703 
704  int iver(0), numlines(0);
705 
706  //Add various parts to these vertices as appropriate:
708  addPathToSoLineSetAndSoVertexProperty(*points,iver,numlines,line,vertices);
709  if (id_proj)
710  addPathsToSoLineSetAndSoVertexProperty( proj_id, iver, numlines, line, vertices );
711  if (muon_proj)
712  addPathsToSoLineSetAndSoVertexProperty( proj_muon, iver, numlines, line, vertices );
713 
714  line->vertexProperty = vertices;
715 
717 
718 
719 // Add debugging surfaces.
721  std::vector<Trk::PlaneSurface>& surfaces = theclass->common()->trackPropagationHelper()->getExtrapolationSurfaces();
722  std::vector<Trk::PlaneSurface>::const_iterator surfIt=surfaces.begin(), surfEnd=surfaces.end();
723  SurfaceToSoNode surfCnv;//fixme: check if need in common()
724  extrapSurfaces_sep=new SoSeparator;
725  for (;surfIt!=surfEnd;++surfIt){
726  SoNode* theSurfSep = surfCnv.translateSurface(*surfIt);
727  if (theSurfSep) {
728  SoNode * nodeToAdd = theSurfSep;
729  extrapSurfaces_sep->addChild(nodeToAdd);
730  }
731  }
732  }
733 
734 // Add labels
735  if (!points->empty() && theclass->common()->controller()->doTrackLabels() ){
736 
737  // should detach first? This is all fairly suboptimal I'm sure... EJWM.
738  if (!label_sep){
739  label_sep = new SoSeparator;
740  label_sep->ref();
741  }
742  label_sep->removeAllChildren ();
743 
744  SoText2 *labelText = new SoText2;
745  labelText->ref();
746  QStringList text;
747  TrackSystemController::TrackLabelModes labels=theclass->common()->controller()->trackLabels();
749  text << "P="+VP1Msg::str(theclass->momentum().mag())+" MeV";
750  }
751 
753  text << "|Pt|="+VP1Msg::str(theclass->momentum().perp())+" MeV";
754  }
755 
757  int pdg = theclass->pdgCode();
758  if (pdg) {
759  bool ok;
760  QString name = VP1ParticleData::particleName(pdg,ok);
761  if (ok)
762  text << "pdg: "+QString::number(pdg)+" ["+name+"]";
763  else
764  text << "pdg: "+QString::number(pdg);
765  }
766  }
767 
770  }
771 
775  }
776 
779  mom /= CLHEP::GeV;
780  if (mom.mag2()==0.0) {
781  text << "Momentum : 0 (undefined)";
782  } else {
783  // current SoCoin classes don't support Unincode here, apparently.
784  // text << VP1Msg::str("(")+QChar(0x03B7)+","+QChar(0x03D5)+VP1Msg::str(")=(")
785  // +VP1Msg::str(mom.pseudoRapidity())+VP1Msg::str(VP1LinAlgUtils::phiFromXY(mom.x(), mom.y() ))+VP1Msg::str(")");
786  double pseudoRapidity = mom.eta();
787  text << VP1Msg::str("(eta,phi)=(")
788  +VP1Msg::str(pseudoRapidity)+VP1Msg::str(",")+VP1Msg::str(VP1LinAlgUtils::phiFromXY(mom.x(), mom.y() ))+VP1Msg::str(")");
789  }
790  }
791 
792  unsigned int row=0;
793  for(QString str : text){
794  QByteArray array = str.toLatin1();
795  labelText->string.set1Value(row++,array.data());
796  }
797 
798  //Position
799  float labelTrackOffset = theclass->common()->controller()->trackLabelTrkOffset();
800  unsigned int point=(points->size()-1)*labelTrackOffset;
801  Amg::Vector3D labelPos = (*points)[point] ;
802 
803 // NOTE: those options can be used if we want different label positions:
804 // if (labels&TrackSystemController::PosEndOfTrack)
805 // labelPos= points->back();
806 // else if (labels&TrackSystemController::PosBeginOfTrack)
807 // labelPos= points->front ();
808 // else if (labels&TrackSystemController::PosMidOfTrack)
809 // labelPos= (*points)[points->size()/2];
810 
811  SoTranslation *labelTranslate = new SoTranslation;
812  float offScale=10.0;
813  int xOffset = theclass->common()->controller()->labelXOffset() ;
814  int yOffset = theclass->common()->controller()->labelYOffset() ;
815  int zOffset = theclass->common()->controller()->labelZOffset() ;
816  labelTranslate->translation.setValue(labelPos.x()+(xOffset*offScale),labelPos.y()+(yOffset*offScale),labelPos.z()+(zOffset*offScale));
817 
818  SoMaterial *sMat = new SoMaterial();
819  SoMFColor sColor;
820  sColor.setValue(SbColor(0, 0, 1));
821  sMat->diffuseColor = sColor;
822 
823  label_sep->addChild(labelTranslate);
824  label_sep->addChild(labelText);
825  }
826 
827  //Attach if visible:
828  if (theclass->m_visible)
829  attach3DObjects();
830 }

Member Data Documentation

◆ associatedObjects

QList<AssociatedObjectHandleBase*> TrackHandleBase::Imp::associatedObjects

Definition at line 154 of file TrackHandleBase.cxx.

◆ attachmentHandles

std::map<std::pair<int,double>,AssocObjAttachmentHandle *> TrackHandleBase::Imp::attachmentHandles

Definition at line 155 of file TrackHandleBase.cxx.

◆ charge

double TrackHandleBase::Imp::charge

Definition at line 112 of file TrackHandleBase.cxx.

◆ chargeinit

bool TrackHandleBase::Imp::chargeinit

Definition at line 111 of file TrackHandleBase.cxx.

◆ customColouredTSOSParts

TrackCommonFlags::TSOSPartsFlags TrackHandleBase::Imp::customColouredTSOSParts

Definition at line 177 of file TrackHandleBase.cxx.

◆ extrapSurfaces_sep

SoSeparator* TrackHandleBase::Imp::extrapSurfaces_sep

for debugging.

FIXME!

Definition at line 118 of file TrackHandleBase.cxx.

◆ extraRepAttached

bool TrackHandleBase::Imp::extraRepAttached

Definition at line 119 of file TrackHandleBase.cxx.

◆ extraRepresentation

SoSeparator* TrackHandleBase::Imp::extraRepresentation

Definition at line 117 of file TrackHandleBase.cxx.

◆ inittouchedchambers

bool TrackHandleBase::Imp::inittouchedchambers
mutable

Definition at line 144 of file TrackHandleBase.cxx.

◆ label_sep

SoSeparator* TrackHandleBase::Imp::label_sep

Definition at line 161 of file TrackHandleBase.cxx.

◆ line

SoLineSet* TrackHandleBase::Imp::line

Definition at line 116 of file TrackHandleBase.cxx.

◆ m_objBrowseTree

QTreeWidgetItem* TrackHandleBase::Imp::m_objBrowseTree

Definition at line 181 of file TrackHandleBase.cxx.

◆ mass

double TrackHandleBase::Imp::mass

Definition at line 114 of file TrackHandleBase.cxx.

◆ massinit

bool TrackHandleBase::Imp::massinit

Definition at line 113 of file TrackHandleBase.cxx.

◆ ntrackhandles

int TrackHandleBase::Imp::ntrackhandles = 0
static

Definition at line 81 of file TrackHandleBase.cxx.

◆ pathInfo_Points

const std::vector< Amg::Vector3D >* TrackHandleBase::Imp::pathInfo_Points

Used in all other cases.

Definition at line 160 of file TrackHandleBase.cxx.

◆ pathInfo_TrkTrack

const Trk::Track* TrackHandleBase::Imp::pathInfo_TrkTrack

Used in the case of a Trk::Track.

Definition at line 159 of file TrackHandleBase.cxx.

◆ pathInfoLoaded

bool TrackHandleBase::Imp::pathInfoLoaded

Definition at line 158 of file TrackHandleBase.cxx.

◆ points_propagated

std::vector<Amg::Vector3D >* TrackHandleBase::Imp::points_propagated

Definition at line 125 of file TrackHandleBase.cxx.

◆ points_propagated_id_projections

Amg::SetVectorVector3D* TrackHandleBase::Imp::points_propagated_id_projections

Definition at line 129 of file TrackHandleBase.cxx.

◆ points_propagated_muon_projections

Amg::SetVectorVector3D* TrackHandleBase::Imp::points_propagated_muon_projections

Definition at line 130 of file TrackHandleBase.cxx.

◆ points_raw

std::vector< Amg::Vector3D >* TrackHandleBase::Imp::points_raw

Definition at line 124 of file TrackHandleBase.cxx.

◆ points_raw_id_projections

Amg::SetVectorVector3D* TrackHandleBase::Imp::points_raw_id_projections

Definition at line 127 of file TrackHandleBase.cxx.

◆ points_raw_muon_projections

Amg::SetVectorVector3D* TrackHandleBase::Imp::points_raw_muon_projections

Definition at line 128 of file TrackHandleBase.cxx.

◆ randommaterial

SoMaterial* TrackHandleBase::Imp::randommaterial

Definition at line 152 of file TrackHandleBase.cxx.

◆ shownTSOSParts

TrackCommonFlags::TSOSPartsFlags TrackHandleBase::Imp::shownTSOSParts

Definition at line 176 of file TrackHandleBase.cxx.

◆ tempMaxPropRadius

float TrackHandleBase::Imp::tempMaxPropRadius

Definition at line 182 of file TrackHandleBase.cxx.

◆ theclass

TrackHandleBase* TrackHandleBase::Imp::theclass

Definition at line 109 of file TrackHandleBase.cxx.

◆ touchedmuonchambers

std::set<GeoPVConstLink> TrackHandleBase::Imp::touchedmuonchambers
mutable

Definition at line 143 of file TrackHandleBase.cxx.

◆ tsos_ascobjs

std::vector<AssociatedObjectHandleBase*>* TrackHandleBase::Imp::tsos_ascobjs

Definition at line 178 of file TrackHandleBase.cxx.


The documentation for this class was generated from the following file:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
TrackSystemController::getMaterialForCharge
SoMaterial * getMaterialForCharge(const double &charge) const
Definition: TrackSystemController.cxx:1333
TrackHandleBase::Imp::dist
static double dist(const SbVec3f &p1, const SbVec3f &p2)
Definition: TrackHandleBase.cxx:842
query_example.row
row
Definition: query_example.py:24
TrackCommonFlags::InDetProjections
@ InDetProjections
Definition: TrackCommonFlags.h:27
beamspotman.r
def r
Definition: beamspotman.py:676
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
TrackSysCommonData::muonChamberProjectionHelper
MuonChamberProjectionHelper * muonChamberProjectionHelper() const
Definition: TrackSysCommonData.h:125
TrackSysCommonData::trackPropagationHelper
TrackPropagationHelper * trackPropagationHelper() const
Definition: TrackSysCommonData.h:130
TrackHandleBase::touchedMuonChambers
const std::set< GeoPVConstLink > & touchedMuonChambers() const
Definition: TrackHandleBase.cxx:1275
TrackSystemController::labelZOffset
int labelZOffset()
Absolute z offset.
Definition: TrackSystemController.cxx:2210
TrackHandleBase::Imp::theclass
TrackHandleBase * theclass
Definition: TrackHandleBase.cxx:109
VP1StdCollection::collMaterialTransparency
double collMaterialTransparency() const
Definition: VP1StdCollection.cxx:336
TrackSystemController::doTrackLabels
bool doTrackLabels()
Definition: TrackSystemController.cxx:2181
MuonChamberProjectionHelper
Definition: MuonChamberProjectionHelper.h:32
TrackCollHandleBase::extendTracks
bool extendTracks() const
Definition: TrackCollHandleBase.h:135
TrackSystemController::labelXOffset
int labelXOffset()
Absolute x offset.
Definition: TrackSystemController.cxx:2200
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
TrackSysCommonData::controller
TrackSystemController * controller() const
Definition: TrackSysCommonData.h:124
python.SystemOfUnits.m2
int m2
Definition: SystemOfUnits.py:92
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
TrackHandleBase::Imp::attachmentHandles
std::map< std::pair< int, double >, AssocObjAttachmentHandle * > attachmentHandles
Definition: TrackHandleBase.cxx:155
max
#define max(a, b)
Definition: cfImp.cxx:41
TrackHandleBase::clearLine
void clearLine()
Definition: TrackHandleBase.cxx:640
VP1StdCollection::material
SoMaterial * material() const
Definition: VP1StdCollection.cxx:220
TrackHandleBase::currentMaterialChanged
virtual void currentMaterialChanged()
Definition: TrackHandleBase.h:160
TrackHandleBase::charge
double charge() const
Definition: TrackHandleBase.cxx:1508
TrackCollHandleBase::parts
TrackCommonFlags::TrackPartsFlags parts() const
Definition: TrackCollHandleBase.h:136
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
TrackSystemController::trackLabelTrkOffset
float trackLabelTrkOffset()
Percentage of postion along track.
Definition: TrackSystemController.cxx:2186
index
Definition: index.py:1
Trk::Track::trackStateOnSurfaces
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
TrackHandleBase::m_currentmaterial
SoMaterial * m_currentmaterial
Definition: TrackHandleBase.h:179
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:55
TrackHandleBase::Imp::detach3DObjects
void detach3DObjects()
Definition: TrackHandleBase.cxx:935
VP1TrackSanity::isSafe
static bool isSafe(const Trk::TrackStateOnSurface *)
Definition: VP1TrackSanity.cxx:46
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
SurfaceToSoNode
Definition: SurfaceToSoNode.h:30
VP1ExtraSepLayerHelper::addNodeUnderMaterial
void addNodeUnderMaterial(SoNode *, SoMaterial *)
Definition: VP1ExtraSepLayerHelper.cxx:190
TrackCollHandleBase::COLOUR_MOMENTUM
@ COLOUR_MOMENTUM
Definition: TrackCollHandleBase.h:138
TrackHandleBase::Imp::convertLineSetToCylinders
static void convertLineSetToCylinders(SoLineSet *line, SoSeparator *sep, const double &cylradius)
Definition: TrackHandleBase.cxx:851
TrackHandleBase::getNTGCHits
virtual unsigned getNTGCHits() const
Definition: TrackHandleBase.h:114
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
TrackHandleBase::collHandle
TrackCollHandleBase * collHandle() const
Definition: TrackHandleBase.h:68
TrackHandleBase::Imp::ensureInitPointsProjections_InDet
void ensureInitPointsProjections_InDet(bool raw)
Definition: TrackHandleBase.cxx:1094
skel.it
it
Definition: skel.GENtoEVGEN.py:396
TrackCommonFlags::MuonProjections
@ MuonProjections
Definition: TrackCommonFlags.h:28
TrackHandleBase::Imp::massinit
bool massinit
Definition: TrackHandleBase.cxx:113
M_PI
#define M_PI
Definition: ActiveFraction.h:11
TrackSysCommonData::system
VP1TrackSystem * system() const
Definition: TrackSysCommonData.h:122
TrackHandleBase::Imp::isSane
static bool isSane(const Amg::Vector3D &p)
Definition: TrackHandleBase.cxx:164
VP1ExtraSepLayerHelper::removeNodeUnderMaterial
void removeNodeUnderMaterial(SoNode *, SoMaterial *)
Definition: VP1ExtraSepLayerHelper.cxx:216
TrackSystemController::FitQuality
@ FitQuality
Definition: TrackSystemController.h:168
TrackSystemController::vertexProjectionAngle
int vertexProjectionAngle() const
Definition: TrackSystemController.cxx:1490
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
TrackSysCommonData::registerTrack
void registerTrack(SoNode *, TrackHandleBase *)
Definition: TrackSysCommonData.cxx:132
TrackHandleBase::Imp::extraRepresentation
SoSeparator * extraRepresentation
Definition: TrackHandleBase.cxx:117
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
TrackHandleBase::getNSCTHits
virtual unsigned getNSCTHits() const
Definition: TrackHandleBase.h:108
VP1TrackSystem::materialFromVertex
SoMaterial * materialFromVertex(const TrackHandleBase *trk) const
Returns the material for the vertex which knows this trackhandle (if known)
Definition: VP1TrackSystem.cxx:997
MCP::ScaleSmearParam::r2
@ r2
TrackHandleBase::provide_pathInfoPoints
virtual const std::vector< Amg::Vector3D > * provide_pathInfoPoints()
Definition: TrackHandleBase.h:151
Amg::SetVectorVector3D
std::set< std::vector< Amg::Vector3D >, VectorVector3DComparer > SetVectorVector3D
Definition: GeoPrimitivesHelpers.h:36
VP1String::str
static QString str(const QString &s)
Definition: VP1String.h:49
TrackPropagationHelper::getExtrapolationSurfaces
std::vector< Trk::PlaneSurface > & getExtrapolationSurfaces() const
Definition: TrackPropagationHelper.cxx:96
TrackCollHandleBase::ignoreMEOTinProp
bool ignoreMEOTinProp() const
Definition: TrackCollHandleBase.h:134
TrackHandleBase::Imp::points_propagated_muon_projections
Amg::SetVectorVector3D * points_propagated_muon_projections
Definition: TrackHandleBase.cxx:130
Amg::setPhi
Amg::RotationMatrix3D setPhi(Amg::RotationMatrix3D mat, double angle, int convention=0)
Definition: EulerAnglesHelpers.h:102
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
TrackSysCommonData::textSep
SoSeparator * textSep()
Definition: TrackSysCommonData.h:138
TruthTest.itE
itE
Definition: TruthTest.py:25
VP1LinAlgUtils::phiFromXY
static double phiFromXY(const double &x, const double &y)
Definition: VP1LinAlgUtils.cxx:374
TrackHandleBase::getNsTGCHits
virtual unsigned getNsTGCHits() const
Definition: TrackHandleBase.h:117
TrackHandleBase::Imp::determineMaterial
SoMaterial * determineMaterial()
Definition: TrackHandleBase.cxx:1286
TrackSystemController::labelYOffset
int labelYOffset()
Absolute y offset.
Definition: TrackSystemController.cxx:2205
TrackHandleBase::registerAssocObject
void registerAssocObject(AssociatedObjectHandleBase *)
Trackhandle assumes ownership.
Definition: TrackHandleBase.cxx:1449
TrackCollHandleBase::COLOUR_PERCOLLECTION
@ COLOUR_PERCOLLECTION
Definition: TrackCollHandleBase.h:138
TrackHandleBase::getNTRTHits
virtual unsigned getNTRTHits() const
Definition: TrackHandleBase.h:109
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
TrackSystemController::Direction
@ Direction
Definition: TrackSystemController.h:168
TrackHandleBase::getFitQuality
virtual const Trk::FitQuality * getFitQuality() const
Definition: TrackHandleBase.h:119
beamspotnt.labels
list labels
Definition: bin/beamspotnt.py:1447
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
TrackHandleBase::Imp::points_propagated_id_projections
Amg::SetVectorVector3D * points_propagated_id_projections
Definition: TrackHandleBase.cxx:129
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
AscObj_TSOS::parts
virtual TrackCommonFlags::TSOSPartsFlags parts() const
Definition: AscObj_TSOS.h:59
TrackHandleBase::Imp::m_objBrowseTree
QTreeWidgetItem * m_objBrowseTree
Definition: TrackHandleBase.cxx:181
TrackHandleBase::Imp::randommaterial
SoMaterial * randommaterial
Definition: TrackHandleBase.cxx:152
InDetProjHelper::projectPath
void projectPath(const std::vector< Amg::Vector3D > &path, Amg::SetVectorVector3D &resulting_projections) const
Definition: InDetProjHelper.cxx:819
TrackHandleBase::Imp::pathInfo_TrkTrack
const Trk::Track * pathInfo_TrkTrack
Used in the case of a Trk::Track.
Definition: TrackHandleBase.cxx:159
TrackHandleBase::momentum
virtual Amg::Vector3D momentum() const
Definition: TrackHandleBase.h:83
VP1MaterialButton::setMaterialParameters
static void setMaterialParameters(SoMaterial *m, const QColor &, const double &brightness=0.0, const double &transp=0.0)
Definition: VP1MaterialButton.cxx:802
SimBarCode::unknownPDG
static const int unknownPDG
Definition: SimBarCode.h:25
TrackHandleBase::Imp::materialChanged
void materialChanged()
Definition: TrackHandleBase.cxx:833
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
TrackHandleBase::getNRPCHits
virtual unsigned getNRPCHits() const
Definition: TrackHandleBase.h:113
extractSporadic.h
list h
Definition: extractSporadic.py:97
TrackCollHandleBase::colourBy
COLOURBY colourBy() const
Definition: TrackCollHandleBase.h:141
TrackCommonFlags::VertexProjections
@ VertexProjections
Definition: TrackCommonFlags.h:29
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
TrackHandleBase::rerandomiseRandomMaterial
void rerandomiseRandomMaterial()
Definition: TrackHandleBase.cxx:1395
TrackCommonFlags::ActualPath
@ ActualPath
Definition: TrackCommonFlags.h:26
AssocObjAttachmentHandle
Definition: TrackHandleBase.h:202
TrackCollHandleBase::name
QString name() const
Definition: TrackCollHandleBase.cxx:310
TrackSystemController::trackLabels
TrackLabelModes trackLabels()
Definition: TrackSystemController.cxx:2215
SurfaceToSoNode::translateSurface
SoNode * translateSurface(const Trk::Surface &sf, const bool &simple=false) const
Definition: SurfaceToSoNode.cxx:57
TrackHandleBase::Imp::extraRepAttached
bool extraRepAttached
Definition: TrackHandleBase.cxx:119
TrackSysCommonData::indetProjHelper_SCT
InDetProjHelper * indetProjHelper_SCT() const
Definition: TrackSysCommonData.h:127
TrackHandleBase::Imp::chargeinit
bool chargeinit
Definition: TrackHandleBase.cxx:111
TrackHandleBase::Imp::ensureInitPointsPropagated
void ensureInitPointsPropagated()
Definition: TrackHandleBase.cxx:1062
TrackSystemController::P
@ P
Definition: TrackSystemController.h:167
TrackCollHandleBase::COLOUR_VERTEX
@ COLOUR_VERTEX
Definition: TrackCollHandleBase.h:138
MuonChamberProjectionHelper::projectAndConstrainLineSegmentToMDTChamberEndWalls
bool projectAndConstrainLineSegmentToMDTChamberEndWalls(const GeoPVConstLink &mdtChamber, const Amg::Vector3D &pointA, const Amg::Vector3D &pointB, Amg::Vector3D &firstEndWall_pointA, Amg::Vector3D &firstEndWall_pointB, Amg::Vector3D &secondEndWall_pointA, Amg::Vector3D &secondEndWall_pointB, bool &outsidechamber)
Definition: MuonChamberProjectionHelper.cxx:373
TrackPropagationHelper::showExtrapolationSurfaces
bool showExtrapolationSurfaces() const
Definition: TrackPropagationHelper.cxx:378
Trk::ParametersBase
Definition: ParametersBase.h:55
VP1StdCollection::collMaterialBrightness
double collMaterialBrightness() const
Definition: VP1StdCollection.cxx:342
TrackCollHandleBase::propagator
Trk::IExtrapolator * propagator() const
Definition: TrackCollHandleBase.h:131
TrackHandleBase::pdgCode
virtual int pdgCode() const
0 means unknown
Definition: TrackHandleBase.h:86
TrackHandleBase::getNMDTHits
virtual unsigned getNMDTHits() const
Definition: TrackHandleBase.h:112
TrackHandleBase::registerTrack
void registerTrack()
Definition: TrackHandleBase.cxx:650
TrackSystemController::Hits
@ Hits
Definition: TrackSystemController.h:167
TrackSystemController::Pid
@ Pid
Definition: TrackSystemController.h:167
TrackCollHandleBase::trackTubeRadius
double trackTubeRadius() const
Definition: TrackCollHandleBase.h:85
TrackHandleBase::Imp::pathInfoLoaded
bool pathInfoLoaded
Definition: TrackHandleBase.cxx:158
min
#define min(a, b)
Definition: cfImp.cxx:40
lumiFormat.array
array
Definition: lumiFormat.py:91
TrackHandleBase::getNMMHits
virtual unsigned getNMMHits() const
Definition: TrackHandleBase.h:116
TrackHandleBase::m_collhandle
TrackCollHandleBase * m_collhandle
Definition: TrackHandleBase.h:178
TrackHandleBase::common
TrackSysCommonData * common() const
Definition: TrackHandleBase.cxx:255
TrackHandleBase::extrapolationParticleHypothesis
virtual Trk::ParticleHypothesis extrapolationParticleHypothesis() const
Default implementation of this next method bases hypothesis on pdgCode() and charge():
Definition: TrackHandleBase.cxx:1534
Trk::Track::trackParameters
const DataVector< const TrackParameters > * trackParameters() const
Return a pointer to a vector of TrackParameters.
Definition: Tracking/TrkEvent/TrkTrack/src/Track.cxx:97
TrackHandleBase::getNPixelHits
virtual unsigned getNPixelHits() const
Definition: TrackHandleBase.h:107
grepfile.sep
sep
Definition: grepfile.py:38
TrackSystemController::getMaterialForPDGCode
SoMaterial * getMaterialForPDGCode(const int &pdgcode) const
Definition: TrackSystemController.cxx:1289
TrackHandleBase::Imp::addPathsToSoLineSetAndSoVertexProperty
void addPathsToSoLineSetAndSoVertexProperty(const Amg::SetVectorVector3D *paths, int &iver, int &numlines, SoLineSet *, SoVertexProperty *) const
Definition: TrackHandleBase.cxx:620
TrackCollHandleBase::COLOUR_DISTANCE
@ COLOUR_DISTANCE
Definition: TrackCollHandleBase.h:138
fitman.g2
g2
Definition: fitman.py:624
TrackHandleBase::Imp::attach3DObjects
void attach3DObjects()
Definition: TrackHandleBase.cxx:900
VP1HelperClassBase::systemBase
IVP1System * systemBase() const
Definition: VP1HelperClassBase.h:50
python.selection.number
number
Definition: selection.py:20
TrackHandleBase::Imp::shownTSOSParts
TrackCommonFlags::TSOSPartsFlags shownTSOSParts
Definition: TrackHandleBase.cxx:176
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
TrackSystemController::Pt
@ Pt
Definition: TrackSystemController.h:167
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
TrackHandleBase::Imp::extrapSurfaces_sep
SoSeparator * extrapSurfaces_sep
for debugging.
Definition: TrackHandleBase.cxx:118
TrackSysCommonData::lastSelectedTrackHandle
TrackHandleBase * lastSelectedTrackHandle()
pointer to base of last selected track (zero if nothing selected)
Definition: TrackSysCommonData.h:137
VP1Msg::messageVerbose
static void messageVerbose(const QString &)
Definition: VP1Msg.cxx:84
TrackHandleBase::Imp::pathInfo_Points
const std::vector< Amg::Vector3D > * pathInfo_Points
Used in all other cases.
Definition: TrackHandleBase.cxx:160
TrackCollHandleBase::COLOUR_BYPID
@ COLOUR_BYPID
Definition: TrackCollHandleBase.h:138
TrackHandleBase::Imp::charge
double charge
Definition: TrackHandleBase.cxx:112
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::IExtrapolator
Definition: IExtrapolator.h:62
query_example.col
col
Definition: query_example.py:7
TrkObjToString::shortInfo
static QString shortInfo(const Trk::MeasurementBase &mb)
Definition: TrkObjToString.cxx:208
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
MuonChamberProjectionHelper::isKnownMDTChamber
bool isKnownMDTChamber(const GeoPVConstLink &mdtChamber)
Definition: MuonChamberProjectionHelper.cxx:268
python.PyAthena.v
v
Definition: PyAthena.py:154
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
TrackHandleBase::getNCSCHits
virtual unsigned getNCSCHits() const
Definition: TrackHandleBase.h:115
TrackHandleBase::Imp::ensureInitPointsProjections_Muon
void ensureInitPointsProjections_Muon(bool raw)
Definition: TrackHandleBase.cxx:1156
VP1Msg::messageDebug
static void messageDebug(const QString &)
Definition: VP1Msg.cxx:39
h
TrackPropagationHelper::makePointsCharged
bool makePointsCharged(std::vector< Amg::Vector3D > &points, const Trk::Track *, Trk::IExtrapolator *extrapolator, Trk::ParticleHypothesis hypo=Trk::nonInteracting, bool useMEOT=false, const Trk::Volume *volume=0)
Definition: TrackPropagationHelper.cxx:239
TrackHandleBase::Imp::ensureLoadPathInfo
void ensureLoadPathInfo()
Definition: TrackHandleBase.cxx:189
TrackHandleBase::provide_pathInfoTrkTrack
virtual const Trk::Track * provide_pathInfoTrkTrack() const
Definition: TrackHandleBase.h:149
TrackSysCommonData::indetProjHelper_TRT
InDetProjHelper * indetProjHelper_TRT() const
Definition: TrackSysCommonData.h:128
TrackSysCommonData::indetProjHelper_Pixel
InDetProjHelper * indetProjHelper_Pixel() const
Definition: TrackSysCommonData.h:126
TrackHandleBase::Imp::points_raw_muon_projections
Amg::SetVectorVector3D * points_raw_muon_projections
Definition: TrackHandleBase.cxx:128
TrackSystemController::propMaxRadius
float propMaxRadius() const
Definition: TrackSystemController.cxx:1653
TrackCollHandleBase::COLOUR_RANDOM
@ COLOUR_RANDOM
Definition: TrackCollHandleBase.h:138
TrackCommonFlags::TSOS_NoObjects
@ TSOS_NoObjects
Definition: TrackCommonFlags.h:43
TrackHandleBase::Imp::points_raw_id_projections
Amg::SetVectorVector3D * points_raw_id_projections
Definition: TrackHandleBase.cxx:127
TrackHandleBase::Imp::ensureInitPointsRaw
void ensureInitPointsRaw()
Definition: TrackHandleBase.cxx:984
TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty
void addPathToSoLineSetAndSoVertexProperty(const std::vector< Amg::Vector3D > &points, int &iver, int &numlines, SoLineSet *, SoVertexProperty *) const
Definition: TrackHandleBase.cxx:556
TrackHandleBase::Imp::tempMaxPropRadius
float tempMaxPropRadius
Definition: TrackHandleBase.cxx:182
makeTransCanvas.text
text
Definition: makeTransCanvas.py:11
TrackHandleBase::Imp::customColouredTSOSParts
TrackCommonFlags::TSOSPartsFlags customColouredTSOSParts
Definition: TrackHandleBase.cxx:177
AscObj_TSOS::setVisible
virtual void setVisible(bool)
Definition: AscObj_TSOS.cxx:1167
TrackHandleBase::Imp::points_propagated
std::vector< Amg::Vector3D > * points_propagated
Definition: TrackHandleBase.cxx:125
TrackHandleBase::Imp::line
SoLineSet * line
Definition: TrackHandleBase.cxx:116
TrackHandleBase::hasCharge
bool hasCharge() const
Definition: TrackHandleBase.h:99
str
Definition: BTagTrackIpAccessor.cxx:11
calibdata.copy
bool copy
Definition: calibdata.py:27
TrackSystemController::getMaterialForMomentum
SoMaterial * getMaterialForMomentum(const double &absmom) const
Definition: TrackSystemController.cxx:1343
TrackHandleBase::m_visible
bool m_visible
Definition: TrackHandleBase.h:177
TrackHandleBase::Imp::label_sep
SoSeparator * label_sep
Definition: TrackHandleBase.cxx:161
TrackHandleBase
Definition: TrackHandleBase.h:56
VP1JobConfigInfo::hasMuonGeometry
static bool hasMuonGeometry()
Definition: VP1JobConfigInfo.cxx:134
TrackHandleBase::Imp::inittouchedchambers
bool inittouchedchambers
Definition: TrackHandleBase.cxx:144
TrackHandleBase::unknown
static double unknown()
Definition: TrackHandleBase.h:102
TrackCollHandleBase::sephelper
VP1ExtraSepLayerHelper * sephelper() const
Definition: TrackCollHandleBase.h:81
python.SystemOfUnits.km
int km
Definition: SystemOfUnits.py:95
TrackHandleBase::Imp::tsos_ascobjs
std::vector< AssociatedObjectHandleBase * > * tsos_ascobjs
Definition: TrackHandleBase.cxx:178
AscObj_TSOS
Definition: AscObj_TSOS.h:45
IVP1System::message
void message(const QString &) const
Definition: IVP1System.cxx:336
jobOptions.points
points
Definition: jobOptions.GenevaPy8_Zmumu.py:97
python.SystemOfUnits.m3
int m3
Definition: SystemOfUnits.py:93
TrackHandleBase::Imp::mass
double mass
Definition: TrackHandleBase.cxx:114
IVP1System::messageVerbose
void messageVerbose(const QString &) const
Definition: IVP1System.cxx:354
TrackCollHandleBase::COLOUR_CHARGE
@ COLOUR_CHARGE
Definition: TrackCollHandleBase.h:138
VP1ParticleData::particleName
static QString particleName(const int &pdgcode, bool &ok)
Definition: VP1ParticleData.cxx:127
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
TrackSystemController::extrapolateToThisVolume
const Trk::Volume * extrapolateToThisVolume() const
Returns the volume to which we extrapolate ID tracks, or zero if no VolumesSvc found.
Definition: TrackSystemController.cxx:1691
TrackHandleBase::Imp::points_raw
std::vector< Amg::Vector3D > * points_raw
Definition: TrackHandleBase.cxx:124
test_athena_ntuple_dumper.paths
paths
Definition: test_athena_ntuple_dumper.py:7
TrackPropagationHelper::makePointsNeutral
bool makePointsNeutral(std::vector< Amg::Vector3D > &points, const Trk::Track *)
Definition: TrackPropagationHelper.cxx:151