46 #include <Inventor/C/errors/debugerror.h>
47 #include <Inventor/nodes/SoLineSet.h>
48 #include <Inventor/nodes/SoVertexProperty.h>
49 #include <Inventor/nodes/SoSeparator.h>
50 #include <Inventor/nodes/SoMaterial.h>
51 #include <Inventor/nodes/SoPickStyle.h>
52 #include <Inventor/nodes/SoCylinder.h>
53 #include <Inventor/nodes/SoMatrixTransform.h>
54 #include <Inventor/SbRotation.h>
55 #include <Inventor/SbMatrix.h>
56 #include <Inventor/nodes/SoTranslation.h>
57 #include <Inventor/nodes/SoText2.h>
78 static double dist(
const SbVec3f& p1,
const SbVec3f& p2);
146 int & iver,
int& numlines, SoLineSet *, SoVertexProperty * )
const;
148 int & iver,
int& numlines,SoLineSet *, SoVertexProperty * )
const;
269 if ((*it)->hasMeasurement())
270 (*it)->update3DObjects();
282 if ((*it)->hasError())
283 (*it)->update3DObjects();
295 if ((*it)->hasMaterialEffect())
296 (*it)->update3DObjects();
329 if (!((*it)->parts()&change))
332 if (vis==(*it)->visible()) {
334 (*it)->update3DObjects();
340 (*it)->update3DObjects();
341 (*it)->setVisible(vis);
344 (*it)->setVisible(vis);
345 (*it)->update3DObjects();
362 TrackCommonFlags::TSOSPartsFlags changedShownParts(change &
m_d->
shownTSOSParts);
364 if (!changedShownParts)
370 if ((*it)->parts()&changedShownParts)
371 (*it)->update3DObjects();
387 unsigned parindex(0);
393 for (; tsos_iter != tsos_end; ++tsos_iter) {
394 trackParam = (*tsos_iter)->trackParameters();
404 if (ascObjNeedDistToNext&&trackParam) {
406 ascObjNeedDistToNext =
nullptr;
409 ascObjNeedDistToNext =
addTSOS(*tsos_iter,parindex++);
418 theclass->registerAssocObject(ao);
419 tsos_ascobjs->push_back(ao);
428 QString
tmp = (vis)?
"True":
"False";
454 bool initTSOS(
false);
467 (*it)->toggleVisible();
471 if ((*it)->visible())
472 (*it)->setVisible(
false);
481 it->second->trackVisibilityChanged();
494 if ( invalidatePropagatedPoints) {
540 int & iver,
int& numlines,
541 SoLineSet *
line, SoVertexProperty * vertices )
const
546 theclass->collHandle()->systemBase()->message(
"TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty (1) ERROR: Unexpected null SoLineSet pointer!");
550 theclass->collHandle()->systemBase()->message(
"TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty (1) ERROR: Unexpected null SoVertexPropery pointer!");
553 std::vector<Amg::Vector3D >::const_iterator pointsIt, pointsItEnd(points.end());
554 unsigned npointsused(0);
558 if (tempMaxPropRadius>0.0){
559 maxR2 = tempMaxPropRadius * tempMaxPropRadius;
560 theclass->collHandle()->systemBase()->messageVerbose(
"maxR2 is set to "+
VP1Msg::str(maxR2));
562 float vertexPlanePhi = (theclass->common()->controller()->vertexProjectionAngle())*
M_PI/180;
563 vertexPlanePhi-=
M_PI;
568 theclass->collHandle()->systemBase()->messageVerbose(
"Vertex projection is set to "+
VP1Msg::str(vertexPlanePhi));
575 double trkPhi = theclass->momentum().phi();
576 double newPhi= vertexPlanePhi+
M_PI;
577 if (
cos(vertexPlanePhi-trkPhi)>0) newPhi=vertexPlanePhi;
580 for (pointsIt = points.begin();pointsIt!=pointsItEnd && pointsIt->mag2()<maxR2; ++pointsIt) {
582 if (!isSane(*pointsIt)) {
583 theclass->collHandle()->systemBase()->message(
"WARNING: Ignoring point on track:"+
VP1Msg::str( *pointsIt ) );
588 tempPoint = *pointsIt;
593 vertices->vertex.set1Value(iver++,tempPoint.x(),tempPoint.y(),tempPoint.z());
595 vertices->vertex.set1Value(iver++,pointsIt->x(),pointsIt->y(),pointsIt->z());
599 line->numVertices.set1Value(numlines++,npointsused);
604 int & iver,
int& numlines,
605 SoLineSet *
line, SoVertexProperty * vertices )
const
610 theclass->collHandle()->systemBase()->message(
"TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty (2) ERROR: Unexpected null SoLineSet pointer!");
614 theclass->collHandle()->systemBase()->message(
"TrackHandleBase::Imp::addPathToSoLineSetAndSoVertexProperty (2) ERROR: Unexpected null SoVertexPropery pointer!");
617 Amg::SetVectorVector3D::const_iterator itProjPart, itProjPartEnd(
paths->end());
618 for (itProjPart =
paths->begin();itProjPart!=itProjPartEnd;++itProjPart)
619 addPathToSoLineSetAndSoVertexProperty(*itProjPart,iver,numlines,
line,vertices);
644 if (theclass->m_visible)
648 if (theclass->common()->trackPropagationHelper()->showExtrapolationSurfaces())
649 theclass->common()->trackPropagationHelper()->getExtrapolationSurfaces().clear();
654 ensureInitPointsPropagated();
656 ensureInitPointsRaw();
660 ensureInitPointsProjections_InDet(!propagator);
664 ensureInitPointsProjections_Muon(!propagator);
666 std::vector<Amg::Vector3D > * points;
669 points = points_propagated;
670 proj_id = points_propagated_id_projections;
671 proj_muon = points_propagated_muon_projections;
674 proj_id = points_raw_id_projections;
675 proj_muon = points_raw_muon_projections;
679 theclass->clearLine();
681 line =
new SoLineSet();
683 theclass->registerTrack();
685 SoVertexProperty * vertices =
new SoVertexProperty();
687 int iver(0), numlines(0);
691 addPathToSoLineSetAndSoVertexProperty(*points,iver,numlines,
line,vertices);
693 addPathsToSoLineSetAndSoVertexProperty( proj_id, iver, numlines,
line, vertices );
695 addPathsToSoLineSetAndSoVertexProperty( proj_muon, iver, numlines,
line, vertices );
697 line->vertexProperty = vertices;
703 if (theclass->common()->trackPropagationHelper()->showExtrapolationSurfaces()){
704 std::vector<Trk::PlaneSurface>& surfaces = theclass->common()->trackPropagationHelper()->getExtrapolationSurfaces();
705 std::vector<Trk::PlaneSurface>::const_iterator surfIt=surfaces.begin(), surfEnd=surfaces.end();
707 extrapSurfaces_sep=
new SoSeparator;
708 for (;surfIt!=surfEnd;++surfIt){
711 SoNode * nodeToAdd = theSurfSep;
712 extrapSurfaces_sep->addChild(nodeToAdd);
718 if (!points->empty() && theclass->common()->controller()->doTrackLabels() ){
722 label_sep =
new SoSeparator;
725 label_sep->removeAllChildren ();
727 SoText2 *labelText =
new SoText2;
730 TrackSystemController::TrackLabelModes
labels=theclass->common()->controller()->trackLabels();
740 int pdg = theclass->pdgCode();
763 if (
mom.mag2()==0.0) {
764 text <<
"Momentum : 0 (undefined)";
769 double pseudoRapidity =
mom.eta();
778 labelText->string.set1Value(
row++,
array.data());
782 float labelTrackOffset = theclass->common()->controller()->trackLabelTrkOffset();
783 unsigned int point=(points->size()-1)*labelTrackOffset;
794 SoTranslation *labelTranslate =
new SoTranslation;
796 int xOffset = theclass->common()->controller()->labelXOffset() ;
797 int yOffset = theclass->common()->controller()->labelYOffset() ;
798 int zOffset = theclass->common()->controller()->labelZOffset() ;
799 labelTranslate->translation.setValue(labelPos.x()+(xOffset*offScale),labelPos.y()+(yOffset*offScale),labelPos.z()+(zOffset*offScale));
801 SoMaterial *sMat =
new SoMaterial();
803 sColor.setValue(SbColor(0, 0, 1));
804 sMat->diffuseColor = sColor;
806 label_sep->addChild(labelTranslate);
807 label_sep->addChild(labelText);
811 if (theclass->m_visible)
818 theclass->currentMaterialChanged();
820 for (
it = attachmentHandles.begin();
it!=
itE;++
it)
821 it->second->trackMaterialChanged();
828 p1.getValue(
x1,
y1,z1);
829 p2.getValue(
x2,
y2,z2);
837 SoVertexProperty *vertices =
static_cast<SoVertexProperty *
>(
line->vertexProperty.getValue());
842 lastTransf.makeIdentity();
844 for (
int iline=0;iline<
line->numVertices.getNum();++iline) {
845 int nvert=
line->numVertices[iline];
850 for (
int jvert= ivert; jvert<ivert+nvert-1;++jvert) {
851 SbVec3f p1 = vertices->vertex[jvert].getValue();
852 SbVec3f p2 = vertices->vertex[jvert+1].getValue();
853 SoCylinder * cyl =
new SoCylinder;
854 cyl->radius = cylradius;
855 const double l(dist(p1,p2));
859 m.setTranslate(SbVec3f(0,0.5*
l,0));
860 SbVec3f
v(p2);
v -= p1;
861 SbRotation rot(SbVec3f(0,1,0),
v);
862 SbMatrix
m2;
m2.setRotate(rot);
871 mat.multRight(lastTransf.inverse());
872 SoMatrixTransform * mt =
new SoMatrixTransform;
873 mt->matrix.setValue(
mat);
887 if (!theclass->m_currentmaterial) {
888 theclass->m_currentmaterial = determineMaterial();
889 theclass->m_currentmaterial->ref();
892 if (
line && theclass->m_collhandle->sephelper()) {
894 theclass->m_collhandle->sephelper()->addNodeUnderMaterial(
line,theclass->m_currentmaterial);
895 double tube_r(theclass->m_collhandle->trackTubeRadius());
897 if (extraRepresentation) {
898 extraRepresentation->removeAllChildren();
900 extraRepresentation =
new SoSeparator;
901 extraRepresentation->ref();
902 theclass->common()->registerTrack(extraRepresentation,theclass);
904 convertLineSetToCylinders(
line,extraRepresentation,tube_r);
905 if (!extraRepAttached) {
906 theclass->m_collhandle->sephelper()->addNodeUnderMaterial(extraRepresentation,theclass->m_currentmaterial);
907 extraRepAttached=
true;
911 if (label_sep && theclass->common()->textSep() && theclass->common()->controller()->doTrackLabels())
912 theclass->common()->textSep()->addChild(label_sep);
914 if (extrapSurfaces_sep) theclass->m_collhandle->sephelper()->addNodeUnderMaterial(extrapSurfaces_sep,theclass->m_currentmaterial);
920 if (!theclass->m_currentmaterial)
922 if (
line && theclass->m_collhandle->sephelper()) {
923 theclass->m_collhandle->sephelper()->removeNodeUnderMaterial(
line,theclass->m_currentmaterial);
924 if (extraRepresentation&&extraRepAttached) {
925 theclass->m_collhandle->sephelper()->removeNodeUnderMaterial(extraRepresentation,theclass->m_currentmaterial);
926 extraRepAttached=
false;
929 if (label_sep && theclass->common()->textSep())
930 theclass->common()->textSep()->removeChild(label_sep);
932 if (extrapSurfaces_sep)
933 theclass->m_collhandle->sephelper()->removeNodeUnderMaterial(extrapSurfaces_sep,theclass->m_currentmaterial);
974 points_raw =
new std::vector<Amg::Vector3D >;
980 ensureLoadPathInfo();
982 if (pathInfo_TrkTrack) {
984 if (pathInfo_TrkTrack->trackParameters())
985 points_raw->reserve(pathInfo_TrkTrack->trackParameters()->size());
986 bool unsafeparts(
false);
990 for (; tsos_iter != tsos_end; ++tsos_iter) {
995 if (theclass->collHandle()->ignoreMEOTinProp() && (*tsos_iter)->materialEffectsOnTrack())
997 trackParam = (*tsos_iter)->trackParameters();
1004 points_raw->push_back( trackParam->
position() );
1005 if (!firstmomentum) {
1011 theclass->collHandle()->systemBase()->message(
"WARNING: Ignored unsafe parts of track!");
1012 if (points_raw->size()==1) {
1013 if (!firstmomentum) {
1014 theclass->collHandle()->systemBase()->message(
" TrackHandleBase ERROR: Unexpected null firstmomentum!");
1017 if (firstmomentum->mag()==0.0) {
1018 theclass->collHandle()->systemBase()->message(
"TrackHandleBase ERROR: Only point on track had zero momentum. Can't add second point.");
1019 points_raw->clear();
1022 points_raw->push_back(points_raw->front()+(*firstmomentum)*(100.0/firstmomentum->mag()));
1024 }
else if (points_raw->empty()) {
1025 theclass->collHandle()->systemBase()->message(
"TrackHandleBase ERROR: No points on track.");
1028 delete firstmomentum;
1029 firstmomentum =
nullptr;
1032 if (pathInfo_Points)
1033 std::copy(pathInfo_Points->begin(), pathInfo_Points->end(), std::back_inserter(*points_raw));
1034 if (points_raw->size()<2) {
1035 theclass->collHandle()->systemBase()->message(
"TrackHandleBase ERROR: Less than two points on track provided.");
1036 points_raw->clear();
1040 +
" points for track.");
1047 if (points_propagated)
1050 ensureLoadPathInfo();
1052 if (pathInfo_TrkTrack) {
1053 points_propagated =
new std::vector<Amg::Vector3D >();
1055 if (theclass->hasCharge()&&theclass->charge()!=0.0)
1056 ok = theclass->common()->trackPropagationHelper()->makePointsCharged(*points_propagated,pathInfo_TrkTrack,
1057 theclass->collHandle()->propagator(),
1058 theclass->extrapolationParticleHypothesis(),
1059 !theclass->collHandle()->ignoreMEOTinProp(),
1060 theclass->collHandle()->extendTracks() ? theclass->common()->controller()->extrapolateToThisVolume() :
nullptr );
1062 ok = theclass->common()->trackPropagationHelper()->makePointsNeutral(*points_propagated,pathInfo_TrkTrack);
1065 delete points_propagated;
1066 ensureInitPointsRaw();
1067 points_propagated = points_raw;
1071 ensureInitPointsRaw();
1072 points_propagated = points_raw;
1079 if (raw?points_raw_id_projections:points_propagated_id_projections)
1082 raw ? ensureInitPointsRaw() : ensureInitPointsPropagated();
1085 if (points_propagated==points_raw) {
1087 if (points_propagated_id_projections) {
1088 points_raw_id_projections = points_propagated_id_projections;
1092 if (points_raw_id_projections) {
1093 points_propagated_id_projections = points_raw_id_projections;
1100 std::vector<Amg::Vector3D > * points=
nullptr;
1104 points = points_raw;
1105 projections = points_raw_id_projections;
1108 points = points_propagated;
1109 projections = points_propagated_id_projections;
1112 if ( !points || points->empty() || points->size()<2 ) {
1113 projections->clear();
1114 projections->insert(std::vector<Amg::Vector3D >());
1119 if (theclass->common()->indetProjHelper_Pixel()) {
1120 theclass->common()->indetProjHelper_Pixel()->projectPath(*points,*projections);
1123 if (theclass->common()->indetProjHelper_SCT()) {
1124 theclass->common()->indetProjHelper_SCT()->projectPath(*points,*projections);
1127 if (theclass->common()->indetProjHelper_TRT()) {
1128 theclass->common()->indetProjHelper_TRT()->projectPath(*points,*projections);
1133 projections->clear();
1134 projections->insert(std::vector<Amg::Vector3D >());
1141 if (raw?points_raw_muon_projections:points_propagated_muon_projections)
1144 raw ? ensureInitPointsRaw() : ensureInitPointsPropagated() ;
1147 if (points_propagated==points_raw) {
1149 if (points_propagated_muon_projections) {
1150 points_raw_muon_projections = points_propagated_muon_projections;
1154 if (points_raw_muon_projections) {
1155 points_propagated_muon_projections = points_raw_muon_projections;
1162 std::vector<Amg::Vector3D > * points;
1166 points = points_raw;
1167 projections = points_raw_muon_projections;
1170 points = points_propagated;
1171 projections = points_propagated_muon_projections;
1176 projections->insert(std::vector<Amg::Vector3D >());
1183 bool outsidechamber;
1184 std::vector<Amg::Vector3D > proj1, proj2;
1197 std::vector<Amg::Vector3D >::const_iterator pointsIt=points->begin(), pointsItEnd=points->end()-1;
1198 for (;pointsIt!=pointsItEnd; ++pointsIt) {
1202 firstEndWall_pointA, firstEndWall_pointB,
1203 secondEndWall_pointA, secondEndWall_pointB,
1207 theclass->collHandle()->systemBase()->message(
"TrackHandleBase Error: "
1208 "Problems with projectAndConstrainLineSegmentToMDTChamberEndWalls(..)");
1214 if (!outsidechamber){
1215 if ( proj1.empty() ) {
1216 proj1.push_back(firstEndWall_pointA); proj1.push_back(firstEndWall_pointB);
1218 if ( proj1[proj1.size()-1] == firstEndWall_pointA ) {
1219 proj1.push_back(firstEndWall_pointB);
1222 projections->insert(proj1); proj1.clear();
1223 proj1.push_back(firstEndWall_pointA); proj1.push_back(firstEndWall_pointB);
1226 if ( proj2.empty() ) {
1227 proj2.push_back(secondEndWall_pointA); proj2.push_back(secondEndWall_pointB);
1231 if ( proj2[proj2.size()-1] == secondEndWall_pointA ) {
1232 proj2.push_back(secondEndWall_pointB);
1235 projections->insert(proj2); proj2.clear();
1236 proj2.push_back(secondEndWall_pointA); proj2.push_back(secondEndWall_pointB);
1242 if ( !proj1.empty() ) {
1243 projections->insert(proj1);
1245 if ( !proj2.empty() ) {
1246 projections->insert(proj2);
1275 switch(theclass->collHandle()->colourBy()) {
1278 pdgcode = theclass->pdgCode();
1279 return theclass->common()->controller()->getMaterialForPDGCode(pdgcode ==
SimBarCode::unknownPDG ? 0 : pdgcode);
1282 if (!randommaterial) {
1283 randommaterial =
new SoMaterial;
1284 randommaterial->ref();
1285 theclass->rerandomiseRandomMaterial();
1287 return randommaterial;
1290 return theclass->common()->controller()->getMaterialForCharge(theclass->hasCharge()?theclass->charge():0.0);
1292 return theclass->common()->controller()->getMaterialForMomentum(theclass->momentum().mag());
1308 if (handle==
nullptr) {
1316 float phiDistance = sqrt (
pow( selectedTrackMom.phi() - thisTrackMom.phi(),2) );
1317 float etaDistance = sqrt (
pow( selectedTrackMom.eta() - thisTrackMom.eta(),2) );
1321 float brightness=
std::max(0.2, 1.0-(etaDistance/5.0) );
1324 SoMaterial*
mat =
new SoMaterial;
1328 const SbColor&
col=theclass->collHandle()->material()->diffuseColor[0];
1333 if (colScale>0.01) {
1336 QColor tempCol = QColor::fromRgbF(
r,
g,
b );
1338 tempCol.getHsvF(&
h,&
s,&
v);
1343 tempCol.setHsvF(
h,
s,
v);
1345 tempCol.getRgbF(&r2,&
g2,&b2);
1348 r3 =
r+(r2-
r)*colScale;
1349 b3 =
b+(b2-
b)*colScale;
1350 g3 =
g+(
g2-
g)*colScale;
1358 theclass->collHandle()->collMaterialBrightness(),
1359 theclass->collHandle()->collMaterialTransparency());
1365 SoMaterial*
mat = theclass->common()->system()->materialFromVertex(theclass);
1369 return theclass->collHandle()->material();
1373 return theclass->collHandle()->material();
1383 double r2 = 0.3*0.3;
1388 r = (
rand() /
static_cast<double>(RAND_MAX));
1389 g = (
rand() /
static_cast<double>(RAND_MAX));
1390 b = (
rand() /
static_cast<double>(RAND_MAX));
1394 if ( (
r-1.0)*(
r-1.0)+
g*
g+
b*
b < r2*0.5 )
1396 else if (
r*
r/(
r*
r+
g*
g+
b*
b) > 0.8 )
1398 else if (
r*
r+
g*
g+
b*
b < r2*2.0 )
1408 " not be selected such as to satisfy all separation criterias");
1460 return attachHandle;
1539 if (
mom.mag2()==0.0) {
1540 l <<
"Momentum : 0 (undefined)";
1576 for (; tsos_iter != tsos_end; ++tsos_iter) {
1577 if (
common()->trackSanityHelper()->isSafe(*tsos_iter)) {
1579 if (
common()->trackSanityHelper()->isSafe(trackParam))
1596 for (; tsos_iter != tsos_end; ++tsos_iter) {
1597 if (
common()->trackSanityHelper()->isSafe(*tsos_iter)) {
1599 if (
common()->trackSanityHelper()->isSafe(trackParam))
1612 if (!
start)
return false;
1613 return start->perp()<1100 &&fabs(
start->z())<3500;
1635 septrack_simple(nullptr),
1636 septrack_detailed(nullptr),
1637 pickStyleChildIdx(-1),
1653 if (!septrack_detailed)
1655 lodHandle->
addNodes(septrack_simple,septrack_detailed);
1662 if (!septrack_detailed)
1664 lodHandle->
removeNodes(septrack_simple,septrack_detailed);
1674 bool b =
m_d->trackhandle->visible();
1675 if (
b&&!
m_d->trackhandle->currentMaterial())
1676 VP1Msg::message(
"ERROR: track is visible but has not current material!!");
1678 m_d->ensureAttached();
1680 m_d->ensureDetached();
1688 VP1Msg::message(
"AssocObjAttachmentHandle ERROR: constructed with null LOD handle!");
1701 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::setPickableStateOfNodes detected wrong pickStyleChildIdx");
1731 VP1Msg::message(
"ERROR: track is visible but has no current material!!");
1757 pickStyle->style=SoPickStyle::UNPICKABLE;
1786 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::attachNodes detected wrong pickStyleChildIdx");
1790 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::attachNodes Already attached!");
1824 +QString(unpickable?
"true":
"false"));
1825 if (!simple||!detailed) {
1826 VP1Msg::messageVerbose(
"AssocObjAttachmentHandle::setPickableStateOfNodes ERROR: Called with null pointers!");
1834 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::setPickableStateOfNodes septrack_simple->getNumChildren()"
1835 "!=m_d->septrack_detailed->getNumChildren().");
1839 if (idetailed!=isimple) {
1840 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::setPickableStateOfNodes"
1841 " called with simple and detailed nodes that are not at same child idx!");
1846 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::setPickableStateOfNodes detected wrong pickStyleChildIdx");
1852 " called with nodes that are not currently children. Calling attachNodes(..)." );
1858 " already in correct state.");
1878 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::setPickableStateOfNodes Inconsistent logic");
1909 if (!simple||!detailed) {
1914 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::detachNodes septrack_simple->getNumChildren()"
1915 "!=m_d->septrack_detailed->getNumChildren().");
1920 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::detachNodes detected wrong pickStyleChildIdx");
1924 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::detachNodes Not previously attached!");
1928 VP1Msg::message(
"ERROR: AssocObjAttachmentHandle::setPickableStateOfNodes"
1929 " called with simple and detailed nodes that are not at same child idx!");
1971 VP1Msg::message(
"TrackHandleBase::getReadoutElement:: Unable to find matching readoutElement");
1981 QList<AssociatedObjectHandleBase*>
l;
1982 if (!
m_d->tsos_ascobjs)
return l;
1984 it(
m_d->tsos_ascobjs->begin()),
1985 itE(
m_d->tsos_ascobjs->end());
1987 if ((*it)->hasMeasurement()&&(*it)->visible())
1995 assert(
m_d->m_objBrowseTree==0);
1996 m_d->m_objBrowseTree =
new QTreeWidgetItem();
1999 QString
l = direction + shortInfo();
2001 m_d->m_objBrowseTree->setText(1,
l );
2004 m_d->m_objBrowseTree->setFlags(Qt::ItemFlags());
2006 listOfItems << browserTreeItem();
2014 if ( !browserTreeItem()) {
2020 browserTreeItem()->setFlags(Qt::ItemFlags());
2022 browserTreeItem()->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
2024 QFont itemFont = browserTreeItem()->font(0);
2025 itemFont.setStrikeOut(!visible());
2026 browserTreeItem()->setFont(0, itemFont);
2027 browserTreeItem()->setFont(1, itemFont);