CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Private Member Functions | Friends
FWGeoTopNode Class Reference

#include <Fireworks/Core/interface/FWGeoTopNode.h>

Inheritance diagram for FWGeoTopNode:
FWEveDetectorGeo FWEveOverlap

Public Types

enum  MenuOptions {
  kSetTopNode, kSetTopNodeCam, kVisSelfOff, kVisChldOn,
  kVisChldOff, kApplyChldCol, kApplyChldColRec, kCamera,
  kPrintMaterial, kPrintPath, kPrintShape, kPrintOverlap,
  kOverlapVisibilityMotherOn, kOverlapVisibilityMotherOff
}
 

Public Member Functions

virtual FWGeometryTableViewBasebrowser ()
 
void clearSelection ()
 
 FWGeoTopNode (const char *n="FWGeoTopNode", const char *t="FWGeoTopNode")
 
int getFirstSelectedTableIndex ()
 
void Paint (Option_t *option="") override
 
virtual void popupMenu (int x, int y, TGLViewer *)
 
void printSelected ()
 
bool selectPhysicalFromTable (int)
 
virtual
FWGeometryTableManagerBase
tableManager ()
 
void UnHighlighted () override
 
void UnSelected () override
 
 ~FWGeoTopNode () override
 

Public Attributes

std::set< TGLPhysicalShape * > fHted
 
std::set< TGLPhysicalShape * > fSted
 
FWGeoTopNodeGLScenem_scene
 

Static Public Attributes

static TGLVector3 s_pickedCamera3DCenter
 
static TGLViewer * s_pickedViewer = nullptr
 

Protected Member Functions

void ClearSet (std::set< TGLPhysicalShape * > &sset)
 
void ComputeBBox () override
 
void EraseFromSet (std::set< TGLPhysicalShape * > &sset, TGLPhysicalShape *id)
 
void paintShape (Int_t idx, const TGeoHMatrix &nm, bool volumeColor, bool parentNode)
 
void ProcessSelection (TGLSelectRecord &rec, std::set< TGLPhysicalShape * > &sset, TGLPhysicalShape *id)
 
FWPopupMenusetPopupMenu (int iX, int iY, TGLViewer *v, bool)
 
void SetStateOf (TGLPhysicalShape *id)
 
void setupBuffMtx (TBuffer3D &buff, const TGeoHMatrix &mat)
 

Static Protected Member Functions

static UInt_t phyID (int tableIdx)
 
static int tableIdx (TGLPhysicalShape *ps)
 

Private Member Functions

 ClassDefOverride (FWGeoTopNode, 0)
 
 FWGeoTopNode (const FWGeoTopNode &)
 
const FWGeoTopNodeoperator= (const FWGeoTopNode &)
 
UChar_t wrapTransparency (FWGeometryTableManagerBase::NodeInfo &data, bool leafNode)
 

Friends

class FWGeoTopNodeGL
 

Detailed Description

Description: [one line class summary]

Usage: <usage>

Definition at line 41 of file FWGeoTopNode.h.

Member Enumeration Documentation

Enumerator
kSetTopNode 
kSetTopNodeCam 
kVisSelfOff 
kVisChldOn 
kVisChldOff 
kApplyChldCol 
kApplyChldColRec 
kCamera 
kPrintMaterial 
kPrintPath 
kPrintShape 
kPrintOverlap 
kOverlapVisibilityMotherOn 
kOverlapVisibilityMotherOff 

Definition at line 45 of file FWGeoTopNode.h.

Constructor & Destructor Documentation

FWGeoTopNode::FWGeoTopNode ( const char *  n = "FWGeoTopNode",
const char *  t = "FWGeoTopNode" 
)
inline

Definition at line 62 of file FWGeoTopNode.h.

62 {}
FWGeoTopNode::~FWGeoTopNode ( )
inlineoverride

Definition at line 63 of file FWGeoTopNode.h.

63 {}
FWGeoTopNode::FWGeoTopNode ( const FWGeoTopNode )
private

Member Function Documentation

virtual FWGeometryTableViewBase* FWGeoTopNode::browser ( )
inlinevirtual

Reimplemented in FWEveDetectorGeo, and FWEveOverlap.

Definition at line 69 of file FWGeoTopNode.h.

Referenced by wrapTransparency().

69 { return nullptr; }
FWGeoTopNode::ClassDefOverride ( FWGeoTopNode  ,
 
)
private
void FWGeoTopNode::clearSelection ( )
inline

Definition at line 76 of file FWGeoTopNode.h.

References fHted, and fSted.

Referenced by FWGeometryTableView::setPath(), and FWGeometryTableViewBase::setPath().

76  {
77  fHted.clear();
78  fSted.clear();
79  }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:72
std::set< TGLPhysicalShape * > fHted
Definition: FWGeoTopNode.h:71
void FWGeoTopNode::ClearSet ( std::set< TGLPhysicalShape * > &  sset)
protected

Definition at line 63 of file FWGeoTopNode.cc.

References SetStateOf().

Referenced by ProcessSelection(), UnHighlighted(), and UnSelected().

63  {
64  while (!sset.empty()) {
65  TGLPhysicalShape* id = *sset.begin();
66  sset.erase(id);
67  SetStateOf(id);
68  }
69 }
void SetStateOf(TGLPhysicalShape *id)
Definition: FWGeoTopNode.cc:71
void FWGeoTopNode::ComputeBBox ( )
overrideprotected

Definition at line 180 of file FWGeoTopNode.cc.

References validate-o2o-wbm::f.

180  {
181  // Fill bounding-box information. Virtual from TAttBBox.
182 
183  BBoxZero(1.0f);
184 }
void FWGeoTopNode::EraseFromSet ( std::set< TGLPhysicalShape * > &  sset,
TGLPhysicalShape *  id 
)
protected

Definition at line 57 of file FWGeoTopNode.cc.

References SetStateOf().

Referenced by ProcessSelection().

57  {
58  sset.erase(id);
59  SetStateOf(id);
60 }
void SetStateOf(TGLPhysicalShape *id)
Definition: FWGeoTopNode.cc:71
int FWGeoTopNode::getFirstSelectedTableIndex ( )

Definition at line 164 of file FWGeoTopNode.cc.

References fSted, mps_fire::i, FWGeometryTableManagerBase::kSelected, FWGeometryTableManagerBase::refEntries(), and tableManager().

Referenced by FWOverlapTableView::chosenItem(), FWGeometryTableViewBase::chosenItem(), and setPopupMenu().

164  {
165  // Note: if object would be rendered, this would return fSted.begin().
166 
167  if (fSted.size() <= 1) {
168  int cnt = 0;
170  i != tableManager()->refEntries().end();
171  ++i, ++cnt) {
173  return cnt;
174  }
175  }
176  return -1;
177 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:72
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:68
const FWGeoTopNode& FWGeoTopNode::operator= ( const FWGeoTopNode )
private
void FWGeoTopNode::Paint ( Option_t *  option = "")
override

Definition at line 294 of file FWGeoTopNode.cc.

References WDecay::kNone.

Referenced by FWEveDetectorGeo::Paint(), and FWEveOverlap::Paint().

294  {
295  static const TEveException eh("FWGeoTopNode::Paint ");
296 
297  TBuffer3D buff(TBuffer3DTypes::kGeneric);
298 
299  // Section kCore
300  buff.fID = this;
301  buff.fColor = GetMainColor();
302  buff.fTransparency = GetMainTransparency();
303  if (HasMainTrans())
304  RefMainTrans().SetBuffer3D(buff);
305 
306  buff.SetSectionsValid(TBuffer3D::kCore);
307 
308  Int_t reqSections = gPad->GetViewer3D()->AddObject(1, buff);
309  if (reqSections != TBuffer3D::kNone) {
310  Warning(eh,
311  "IsA='%s'. Viewer3D requires more sections (%d). Only direct-rendering supported.",
312  ClassName(),
313  reqSections);
314  }
315 }
void FWGeoTopNode::paintShape ( Int_t  idx,
const TGeoHMatrix &  nm,
bool  volumeColor,
bool  parentNode 
)
protected

Definition at line 213 of file FWGeoTopNode.cc.

References data, GetTransform(), WDecay::kNone, FWGeometryTableManagerBase::NodeInfo::m_color, FWGeometryTableManagerBase::NodeInfo::m_node, m_scene, FWGeoTopNodeGLScene::OpenCompositeWithPhyID(), phyID(), FWGeometryTableManagerBase::refEntries(), setupBuffMtx(), tableManager(), and wrapTransparency().

Referenced by FWEveDetectorGeo::Paint(), FWEveOverlap::Paint(), FWEveOverlap::paintChildNodesRecurse(), and FWEveDetectorGeo::paintChildNodesRecurse().

213  {
214  static const TEveException eh("FWGeoTopNode::paintShape ");
215 
216  // printf("paint sahpe id %d\n", tableIndex );
217 
219  UChar_t transparency = wrapTransparency(data, isParentNode);
220  // printf("trans %d \n", transparency );
221  if (transparency >= 100)
222  return;
223 
224  if (data.m_node->GetVolume()->IsAssembly())
225  return;
226  TGeoShape* shape = data.m_node->GetVolume()->GetShape();
227 
228  TGeoCompositeShape* compositeShape = dynamic_cast<TGeoCompositeShape*>(shape);
229  if (compositeShape) {
230  // m_scene->fNextCompositeID = phyID(tableIndex);
231 
232  Double_t halfLengths[3] = {compositeShape->GetDX(), compositeShape->GetDY(), compositeShape->GetDZ()};
233 
234  TBuffer3D buff(TBuffer3DTypes::kComposite);
235  buff.fID = data.m_node->GetVolume();
236  buff.fColor = volumeColor ? data.m_node->GetVolume()->GetLineColor() : data.m_color;
237  buff.fTransparency = transparency; // data.m_node->GetVolume()->GetTransparency();
238 
239  nm.GetHomogenousMatrix(buff.fLocalMaster);
240  buff.fLocalFrame = kTRUE; // Always enforce local frame (no geo manager).
241  buff.SetAABoundingBox(compositeShape->GetOrigin(), halfLengths);
242  buff.SetSectionsValid(TBuffer3D::kCore | TBuffer3D::kBoundingBox);
243 
244  Bool_t paintComponents = kTRUE;
245  // Start a composite shape, identified by this buffer
246  if (TBuffer3D::GetCSLevel() == 0) {
247  paintComponents = m_scene->OpenCompositeWithPhyID(phyID(tableIndex), buff);
248  }
249 
250  TBuffer3D::IncCSLevel();
251 
252  // Paint the boolean node - will add more buffers to viewer
253  TGeoHMatrix xxx;
254  TGeoMatrix* gst = TGeoShape::GetTransform();
255  TGeoShape::SetTransform(&xxx);
256 
257  if (paintComponents)
258  compositeShape->GetBoolNode()->Paint("");
259  TGeoShape::SetTransform(gst);
260  // Close the composite shape
261  if (TBuffer3D::DecCSLevel() == 0)
262  gPad->GetViewer3D()->CloseComposite();
263 
264  // m_scene->fNextCompositeID = 0;
265  } else {
266  TBuffer3D& buff = (TBuffer3D&)shape->GetBuffer3D(TBuffer3D::kCore, kFALSE);
267  setupBuffMtx(buff, nm);
268  buff.fID = data.m_node->GetVolume();
269  buff.fColor = volumeColor ? data.m_node->GetVolume()->GetLineColor() : data.m_color;
270  buff.fTransparency = transparency; // data.m_node->GetVolume()->GetTransparency();
271 
272  nm.GetHomogenousMatrix(buff.fLocalMaster);
273  buff.fLocalFrame = kTRUE; // Always enforce local frame (no geo manager).
274 
275  Int_t sections = TBuffer3D::kBoundingBox | TBuffer3D::kShapeSpecific;
276  shape->GetBuffer3D(sections, kTRUE);
277 
278  Int_t reqSec = gPad->GetViewer3D()->AddObject(phyID(tableIndex), buff);
279 
280  if (reqSec != TBuffer3D::kNone) {
281  // This shouldn't happen, but I suspect it does sometimes.
282  if (reqSec & TBuffer3D::kCore)
283  Warning(eh, "Core section required again for shape='%s'. This shouldn't happen.", GetName());
284  shape->GetBuffer3D(reqSec, kTRUE);
285  reqSec = gPad->GetViewer3D()->AddObject(phyID(tableIndex), buff);
286  }
287 
288  if (reqSec != TBuffer3D::kNone)
289  Warning(eh, "Extra section required: reqSec=%d, shape=%s.", reqSec, GetName());
290  }
291 }
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:68
bool OpenCompositeWithPhyID(UInt_t phyID, const TBuffer3D &buffer)
static const G4AffineTransform & GetTransform(const G4TouchableHistory *touchable, int depth)
FWGeoTopNodeGLScene * m_scene
Definition: FWGeoTopNode.h:66
UChar_t wrapTransparency(FWGeometryTableManagerBase::NodeInfo &data, bool leafNode)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
void setupBuffMtx(TBuffer3D &buff, const TGeoHMatrix &mat)
static UInt_t phyID(int tableIdx)
Definition: FWGeoTopNode.cc:53
UInt_t FWGeoTopNode::phyID ( int  tableIdx)
staticprotected

Definition at line 53 of file FWGeoTopNode.cc.

Referenced by paintShape(), and selectPhysicalFromTable().

53 { return UInt_t(tableIdx + 2); }
static int tableIdx(TGLPhysicalShape *ps)
Definition: FWGeoTopNode.cc:55
virtual void FWGeoTopNode::popupMenu ( int  x,
int  y,
TGLViewer *   
)
inlinevirtual

Reimplemented in FWEveDetectorGeo, and FWEveOverlap.

Definition at line 82 of file FWGeoTopNode.h.

Referenced by FWGeometryTableViewBase::cellClicked(), and FWGeoTopNodeGLScene::GeoPopupMenu().

82 {}
void FWGeoTopNode::printSelected ( )

Definition at line 156 of file FWGeoTopNode.cc.

References fSted, mergeVDriftHistosByStation::name, gpuVertexFinder::printf(), tableIdx(), and tableManager().

156  {
157  for (std::set<TGLPhysicalShape*>::iterator it = fSted.begin(); it != fSted.end(); ++it) {
158  printf("FWGeoTopNode::printSelected %s \n", tableManager()->refEntries().at(tableIdx(*it)).name());
159  }
160 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:72
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:68
printf("params %d %f %f %f\n", minT, eps, errmax, chi2max)
static int tableIdx(TGLPhysicalShape *ps)
Definition: FWGeoTopNode.cc:55
void FWGeoTopNode::ProcessSelection ( TGLSelectRecord &  rec,
std::set< TGLPhysicalShape * > &  sset,
TGLPhysicalShape *  id 
)
protected

Definition at line 88 of file FWGeoTopNode.cc.

References ClearSet(), FWTableManagerBase::dataChanged(), EraseFromSet(), WDecay::kNone, m_scene, SetStateOf(), and tableManager().

Referenced by FWGeoTopNodeGL::ProcessSelection().

88  {
89  // printf("FWGeoTopNode::ProcessSelection ===============================\n");
90 
91  m_scene->BeginUpdate();
92 
93  if (sset.empty()) {
94  if (id) {
95  sset.insert(id);
96  rec.SetSecSelResult(TGLSelectRecord::kEnteringSelection);
97  }
98  } else {
99  if (id) {
100  if (rec.GetMultiple()) {
101  if (sset.find(id) == sset.end()) {
102  sset.insert(id);
103  rec.SetSecSelResult(TGLSelectRecord::kModifyingInternalSelection);
104  } else {
105  EraseFromSet(sset, id);
106  if (sset.empty())
107  rec.SetSecSelResult(TGLSelectRecord::kLeavingSelection);
108  else
109  rec.SetSecSelResult(TGLSelectRecord::kModifyingInternalSelection);
110  }
111  } else {
112  if (sset.size() != 1 || sset.find(id) == sset.end()) {
113  ClearSet(sset);
114  sset.insert(id);
115  rec.SetSecSelResult(TGLSelectRecord::kModifyingInternalSelection);
116  }
117  }
118  } else {
119  if (!rec.GetMultiple()) {
120  ClearSet(sset);
121  rec.SetSecSelResult(TGLSelectRecord::kLeavingSelection);
122  }
123  }
124  }
125 
126  if (id) {
127  SetStateOf(id);
128  }
129 
130  if (rec.GetSecSelResult() != TGLSelectRecord::kNone) {
131  m_scene->EndUpdate(kTRUE, kFALSE, kTRUE);
132  gEve->Redraw3D();
133 
135  } else {
136  m_scene->EndUpdate(kFALSE, kFALSE, kFALSE);
137  }
138 }
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:68
void ClearSet(std::set< TGLPhysicalShape * > &sset)
Definition: FWGeoTopNode.cc:63
void dataChanged()
Classes which inherit from FWTableManagerBase must call this when their underlying data changes...
FWGeoTopNodeGLScene * m_scene
Definition: FWGeoTopNode.h:66
void EraseFromSet(std::set< TGLPhysicalShape * > &sset, TGLPhysicalShape *id)
Definition: FWGeoTopNode.cc:57
void SetStateOf(TGLPhysicalShape *id)
Definition: FWGeoTopNode.cc:71
bool FWGeoTopNode::selectPhysicalFromTable ( int  tableIndex)

Definition at line 141 of file FWGeoTopNode.cc.

References fSted, fwLog, fwlog::kInfo, FWGeometryTableManagerBase::kVisNodeSelf, m_scene, phyID(), and tableManager().

Referenced by FWGeometryTableViewBase::setColumnSelected().

141  {
142  // printf("FWGeoTopNode::selectPhysicalFromTable
143 
144  TGLPhysicalShape* ps = m_scene->FindPhysical(phyID(tableIndex));
145  if (ps) {
146  fSted.insert(ps);
147  ps->Select(1);
148  // printf("selectPhysicalFromTable found physical \n");
149  return true;
150  } else if (tableManager()->refEntries().at(tableIndex).testBit(FWGeometryTableManagerBase::kVisNodeSelf))
151  fwLog(fwlog::kInfo) << "Selected entry not drawn in GL viewer. \n";
152  return false;
153 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:72
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:68
FWGeoTopNodeGLScene * m_scene
Definition: FWGeoTopNode.h:66
#define fwLog(_level_)
Definition: fwLog.h:45
static UInt_t phyID(int tableIdx)
Definition: FWGeoTopNode.cc:53
FWPopupMenu * FWGeoTopNode::setPopupMenu ( int  iX,
int  iY,
TGLViewer *  v,
bool  overlap 
)
protected

Definition at line 336 of file FWGeoTopNode.cc.

References fSted, fwLog, getFirstSelectedTableIndex(), kApplyChldCol, kApplyChldColRec, kCamera, fwlog::kInfo, kPrintMaterial, kPrintOverlap, kPrintPath, kPrintShape, kSetTopNode, kSetTopNodeCam, kVisChldOff, kVisChldOn, kVisSelfOff, s_pickedCamera3DCenter, s_pickedViewer, findQualityFiles::v, x, and y.

Referenced by FWEveOverlap::popupMenu(), and FWEveDetectorGeo::popupMenu().

336  {
337  if (getFirstSelectedTableIndex() < 0) {
338  if (fSted.empty())
339  fwLog(fwlog::kInfo) << "No menu -- no node/entry selected \n";
340  return nullptr;
341  }
342 
343  FWPopupMenu* nodePopup = new FWPopupMenu();
344 
345  nodePopup->AddEntry("Set As Top Node", kSetTopNode);
346  nodePopup->AddEntry("Set As Top Node and Reset Camera", kSetTopNodeCam);
347  nodePopup->AddSeparator();
348  if (v) {
349  nodePopup->AddEntry("Rnr Off", kVisSelfOff);
350  }
351  nodePopup->AddEntry("Turn Render On For Children", kVisChldOn);
352  nodePopup->AddEntry("Turn Render Off For Children", kVisChldOff);
353  nodePopup->AddEntry("Apply Color To Children", kApplyChldCol);
354  nodePopup->AddEntry("Apply Color Recursively", kApplyChldColRec);
355  nodePopup->AddSeparator();
356 
357  if (overlap)
358  nodePopup->AddEntry("Print Overlap", kPrintOverlap);
359  nodePopup->AddEntry("Print Path", kPrintPath);
360  nodePopup->AddEntry("Print Shape", kPrintShape);
361  nodePopup->AddEntry("Print Material", kPrintMaterial);
362 
363  nodePopup->AddSeparator();
364  if (v) {
365  Window_t wdummy;
366  Int_t x, y;
367  gVirtualX->TranslateCoordinates(
368  gClient->GetDefaultRoot()->GetId(), v->GetGLWidget()->GetId(), iX, iY, x, y, wdummy);
369  TGLVector3 pnt(x, y, 0.5 * v->GetSelRec().GetMinZ());
370  v->CurrentCamera().WindowToViewport(pnt);
371  s_pickedCamera3DCenter = v->CurrentCamera().ViewportToWorld(pnt);
372  // s_pickedCamera3DCenter.Dump();
373  s_pickedViewer = v;
374 
375  nodePopup->AddEntry("Set Camera Center", kCamera);
376  }
377 
378  nodePopup->PlaceMenu(iX, iY, true, true);
379  return nodePopup;
380 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:72
int getFirstSelectedTableIndex()
bool overlap(const reco::Muon &muon1, const reco::Muon &muon2, double pullX=1.0, double pullY=1.0, bool checkAdjacentChambers=false)
#define fwLog(_level_)
Definition: fwLog.h:45
static TGLViewer * s_pickedViewer
Definition: FWGeoTopNode.h:88
static TGLVector3 s_pickedCamera3DCenter
Definition: FWGeoTopNode.h:87
void FWGeoTopNode::SetStateOf ( TGLPhysicalShape *  id)
protected

Definition at line 71 of file FWGeoTopNode.cc.

References data, fHted, fSted, FWGeometryTableManagerBase::kHighlighted, FWGeometryTableManagerBase::kSelected, FWGeometryTableManagerBase::refEntries(), FWGeometryTableManagerBase::NodeInfo::resetBit(), FWGeometryTableManagerBase::NodeInfo::setBit(), tableIdx(), and tableManager().

Referenced by ClearSet(), EraseFromSet(), and ProcessSelection().

71  {
73 
74  if (fSted.find(id) != fSted.end()) {
75  id->Select(1);
77  } else if (fHted.find(id) != fHted.end()) {
78  id->Select(3);
80  } else {
81  id->Select(0);
84  }
85 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:72
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:68
std::set< TGLPhysicalShape * > fHted
Definition: FWGeoTopNode.h:71
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
static int tableIdx(TGLPhysicalShape *ps)
Definition: FWGeoTopNode.cc:55
void FWGeoTopNode::setupBuffMtx ( TBuffer3D &  buff,
const TGeoHMatrix &  mat 
)
protected

Definition at line 187 of file FWGeoTopNode.cc.

References visualization-live-secondInstance_cfg::m, alignCSCRings::r, alignCSCRings::s, and submitPVValidationJobs::t.

Referenced by paintShape().

187  {
188  const Double_t* r = mat.GetRotationMatrix();
189  const Double_t* t = mat.GetTranslation();
190  const Double_t* s = mat.GetScale();
191  Double_t* m = buff.fLocalMaster;
192  m[0] = r[0] * s[0];
193  m[1] = r[1] * s[1];
194  m[2] = r[2] * s[2];
195  m[3] = 0;
196  m[4] = r[3] * s[0];
197  m[5] = r[4] * s[1];
198  m[6] = r[5] * s[2];
199  m[7] = 0;
200  m[8] = r[6] * s[0];
201  m[9] = r[7] * s[1];
202  m[10] = r[8] * s[2];
203  m[11] = 0;
204  m[12] = t[0];
205  m[13] = t[1];
206  m[15] = t[2];
207  m[15] = 1;
208 
209  buff.fLocalFrame = kTRUE;
210 }
int FWGeoTopNode::tableIdx ( TGLPhysicalShape *  ps)
staticprotected

Definition at line 55 of file FWGeoTopNode.cc.

Referenced by FWEveOverlap::GetHighlightTooltip(), FWEveDetectorGeo::GetHighlightTooltip(), printSelected(), and SetStateOf().

55 { return ps->ID() - 2; }
virtual FWGeometryTableManagerBase* FWGeoTopNode::tableManager ( )
inlinevirtual
void FWGeoTopNode::UnHighlighted ( )
override

Definition at line 327 of file FWGeoTopNode.cc.

References SplitLinear::begin, ClearSet(), fHted, mps_fire::i, FWGeometryTableManagerBase::kHighlighted, FWGeometryTableManagerBase::refEntries(), and tableManager().

Referenced by FWGeometryTableViewBase::setColumnSelected().

327  {
328  ClearSet(fHted);
330  i != tableManager()->refEntries().end();
331  ++i)
333 }
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:68
void ClearSet(std::set< TGLPhysicalShape * > &sset)
Definition: FWGeoTopNode.cc:63
std::set< TGLPhysicalShape * > fHted
Definition: FWGeoTopNode.h:71
void FWGeoTopNode::UnSelected ( )
override

Definition at line 318 of file FWGeoTopNode.cc.

References SplitLinear::begin, ClearSet(), fSted, mps_fire::i, FWGeometryTableManagerBase::kSelected, FWGeometryTableManagerBase::refEntries(), and tableManager().

Referenced by FWGeometryTableViewBase::setColumnSelected().

318  {
319  ClearSet(fSted);
321  i != tableManager()->refEntries().end();
322  ++i)
324 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:72
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:68
void ClearSet(std::set< TGLPhysicalShape * > &sset)
Definition: FWGeoTopNode.cc:63
UChar_t FWGeoTopNode::wrapTransparency ( FWGeometryTableManagerBase::NodeInfo data,
bool  leafNode 
)
private

Definition at line 382 of file FWGeoTopNode.cc.

References browser(), FWGeometryTableViewBase::getLeafTransparencyFactor(), FWGeometryTableViewBase::getParentTransparencyFactor(), FWGeometryTableManagerBase::NodeInfo::m_transparency, and Max().

Referenced by paintShape().

382  {
383  if (isParentNode) {
384  return TMath::Max((Char_t)browser()->getMinParentTransparency(), data.m_transparency) *
386  } else {
387  return TMath::Max((Char_t)browser()->getMinLeafTransparency(), data.m_transparency) *
389  }
390 }
T Max(T a, T b)
Definition: MathUtil.h:44
virtual FWGeometryTableViewBase * browser()
Definition: FWGeoTopNode.h:69

Friends And Related Function Documentation

friend class FWGeoTopNodeGL
friend

Definition at line 42 of file FWGeoTopNode.h.

Member Data Documentation

std::set<TGLPhysicalShape*> FWGeoTopNode::fHted
std::set<TGLPhysicalShape*> FWGeoTopNode::fSted
FWGeoTopNodeGLScene* FWGeoTopNode::m_scene
TGLVector3 FWGeoTopNode::s_pickedCamera3DCenter
static

Definition at line 87 of file FWGeoTopNode.h.

Referenced by FWGeometryTableViewBase::chosenItem(), and setPopupMenu().

TGLViewer * FWGeoTopNode::s_pickedViewer = nullptr
static

Definition at line 88 of file FWGeoTopNode.h.

Referenced by FWGeometryTableViewBase::chosenItem(), and setPopupMenu().