test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros 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 ()
 
virtual void Paint (Option_t *option="")
 
virtual void popupMenu (int x, int y, TGLViewer *)
 
void printSelected ()
 
bool selectPhysicalFromTable (int)
 
virtual
FWGeometryTableManagerBase
tableManager ()
 
virtual void UnHighlighted ()
 
virtual void UnSelected ()
 
virtual ~FWGeoTopNode ()
 

Public Attributes

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

Static Public Attributes

static TGLVector3 s_pickedCamera3DCenter
 
static TGLViewer * s_pickedViewer = 0
 

Protected Member Functions

void ClearSet (std::set< TGLPhysicalShape * > &sset)
 
virtual void ComputeBBox ()
 
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

 ClassDef (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 47 of file FWGeoTopNode.h.

Constructor & Destructor Documentation

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

Definition at line 64 of file FWGeoTopNode.h.

64 {}
virtual FWGeoTopNode::~FWGeoTopNode ( )
inlinevirtual

Definition at line 65 of file FWGeoTopNode.h.

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

Member Function Documentation

virtual FWGeometryTableViewBase* FWGeoTopNode::browser ( )
inlinevirtual

Reimplemented in FWEveDetectorGeo, and FWEveOverlap.

Definition at line 71 of file FWGeoTopNode.h.

Referenced by wrapTransparency().

71 { return 0; }
FWGeoTopNode::ClassDef ( FWGeoTopNode  ,
 
)
private
void FWGeoTopNode::clearSelection ( )
inline

Definition at line 78 of file FWGeoTopNode.h.

References fHted, and fSted.

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

78 {fHted.clear(); fSted.clear();}
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:74
std::set< TGLPhysicalShape * > fHted
Definition: FWGeoTopNode.h:73
void FWGeoTopNode::ClearSet ( std::set< TGLPhysicalShape * > &  sset)
protected

Definition at line 71 of file FWGeoTopNode.cc.

References SetStateOf().

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

72 {
73  while (!sset.empty())
74  {
75  TGLPhysicalShape *id = *sset.begin();
76  sset.erase(id);
77  SetStateOf(id);
78  }
79 }
void SetStateOf(TGLPhysicalShape *id)
Definition: FWGeoTopNode.cc:81
void FWGeoTopNode::ComputeBBox ( )
protectedvirtual

Definition at line 223 of file FWGeoTopNode.cc.

References f.

224 {
225  // Fill bounding-box information. Virtual from TAttBBox.
226 
227  BBoxZero(1.0f);
228 }
double f[11][100]
void FWGeoTopNode::EraseFromSet ( std::set< TGLPhysicalShape * > &  sset,
TGLPhysicalShape *  id 
)
protected

Definition at line 64 of file FWGeoTopNode.cc.

References SetStateOf().

Referenced by ProcessSelection().

65 {
66  sset.erase(id);
67  SetStateOf(id);
68 }
void SetStateOf(TGLPhysicalShape *id)
Definition: FWGeoTopNode.cc:81
int FWGeoTopNode::getFirstSelectedTableIndex ( )

Definition at line 207 of file FWGeoTopNode.cc.

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

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

208 {
209  // Note: if object would be rendered, this would return fSted.begin().
210 
211  if (fSted.size() <= 1)
212  {
213  int cnt = 0;
214  for (FWGeometryTableManagerBase::Entries_i i = tableManager()->refEntries().begin(); i != tableManager()->refEntries().end(); ++i, ++cnt)
215  {
216  if (i->testBit(FWGeometryTableManagerBase::kSelected)) return cnt;
217  }
218  }
219  return -1;
220 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:74
int i
Definition: DBlmapReader.cc:9
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:70
const FWGeoTopNode& FWGeoTopNode::operator= ( const FWGeoTopNode )
private
void FWGeoTopNode::Paint ( Option_t *  option = "")
virtual

Reimplemented in FWEveDetectorGeo, and FWEveOverlap.

Definition at line 330 of file FWGeoTopNode.cc.

References WDecay::kNone.

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

331 {
332  static const TEveException eh("FWGeoTopNode::Paint ");
333 
334  TBuffer3D buff(TBuffer3DTypes::kGeneric);
335 
336  // Section kCore
337  buff.fID = this;
338  buff.fColor = GetMainColor();
339  buff.fTransparency = GetMainTransparency();
340  if (HasMainTrans()) RefMainTrans().SetBuffer3D(buff);
341 
342  buff.SetSectionsValid(TBuffer3D::kCore);
343 
344  Int_t reqSections = gPad->GetViewer3D()->AddObject(1, buff);
345  if (reqSections != TBuffer3D::kNone)
346  {
347  Warning(eh, "IsA='%s'. Viewer3D requires more sections (%d). Only direct-rendering supported.",
348  ClassName(), reqSections);
349  }
350 }
void FWGeoTopNode::paintShape ( Int_t  idx,
const TGeoHMatrix &  nm,
bool  volumeColor,
bool  parentNode 
)
protected

Definition at line 246 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().

247 {
248  static const TEveException eh("FWGeoTopNode::paintShape ");
249 
250  // printf("paint sahpe id %d\n", tableIndex );
251 
253  UChar_t transparency = wrapTransparency(data, isParentNode);
254  // printf("trans %d \n", transparency );
255  if (transparency >= 100) return;
256 
257  if (data.m_node->GetVolume()->IsAssembly()) return;
258  TGeoShape* shape = data.m_node->GetVolume()->GetShape();
259 
260  TGeoCompositeShape* compositeShape = dynamic_cast<TGeoCompositeShape*>(shape);
261  if (compositeShape)
262  {
263  // m_scene->fNextCompositeID = phyID(tableIndex);
264 
265  Double_t halfLengths[3] = { compositeShape->GetDX(), compositeShape->GetDY(), compositeShape->GetDZ() };
266 
267  TBuffer3D buff(TBuffer3DTypes::kComposite);
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  buff.SetAABoundingBox(compositeShape->GetOrigin(), halfLengths);
275  buff.SetSectionsValid(TBuffer3D::kCore|TBuffer3D::kBoundingBox);
276 
277  Bool_t paintComponents = kTRUE;
278  // Start a composite shape, identified by this buffer
279  if (TBuffer3D::GetCSLevel() == 0) {
280  paintComponents = m_scene->OpenCompositeWithPhyID(phyID(tableIndex), buff);
281  }
282 
283  TBuffer3D::IncCSLevel();
284 
285  // Paint the boolean node - will add more buffers to viewer
286  TGeoHMatrix xxx;
287  TGeoMatrix *gst = TGeoShape::GetTransform();
288  TGeoShape::SetTransform(&xxx);
289 
290  if (paintComponents) compositeShape->GetBoolNode()->Paint("");
291  TGeoShape::SetTransform(gst);
292  // Close the composite shape
293  if (TBuffer3D::DecCSLevel() == 0)
294  gPad->GetViewer3D()->CloseComposite();
295 
296 
297  // m_scene->fNextCompositeID = 0;
298  }
299  else
300  {
301  TBuffer3D& buff = (TBuffer3D&) shape->GetBuffer3D (TBuffer3D::kCore, kFALSE);
302  setupBuffMtx(buff, nm);
303  buff.fID = data.m_node->GetVolume();
304  buff.fColor = volumeColor ? data.m_node->GetVolume()->GetLineColor() : data.m_color ;
305  buff.fTransparency = transparency;// data.m_node->GetVolume()->GetTransparency();
306 
307 
308  nm.GetHomogenousMatrix(buff.fLocalMaster);
309  buff.fLocalFrame = kTRUE; // Always enforce local frame (no geo manager).
310 
311  Int_t sections = TBuffer3D::kBoundingBox | TBuffer3D::kShapeSpecific;
312  shape->GetBuffer3D(sections, kTRUE);
313 
314  Int_t reqSec = gPad->GetViewer3D()->AddObject(phyID(tableIndex), buff);
315 
316  if (reqSec != TBuffer3D::kNone) {
317  // This shouldn't happen, but I suspect it does sometimes.
318  if (reqSec & TBuffer3D::kCore)
319  Warning(eh, "Core section required again for shape='%s'. This shouldn't happen.", GetName());
320  shape->GetBuffer3D(reqSec, kTRUE);
321  reqSec = gPad->GetViewer3D()->AddObject(phyID(tableIndex), buff);
322  }
323 
324  if (reqSec != TBuffer3D::kNone)
325  Warning(eh, "Extra section required: reqSec=%d, shape=%s.", reqSec, GetName());
326  }
327 }
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:70
bool OpenCompositeWithPhyID(UInt_t phyID, const TBuffer3D &buffer)
static const G4AffineTransform & GetTransform(const G4TouchableHistory *touchable, int depth)
FWGeoTopNodeGLScene * m_scene
Definition: FWGeoTopNode.h:68
UChar_t wrapTransparency(FWGeometryTableManagerBase::NodeInfo &data, bool leafNode)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
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().

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

Reimplemented in FWEveDetectorGeo, and FWEveOverlap.

Definition at line 81 of file FWGeoTopNode.h.

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

81 {}
void FWGeoTopNode::printSelected ( )

Definition at line 197 of file FWGeoTopNode.cc.

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

198 {
199  for (std::set<TGLPhysicalShape*>::iterator it = fSted.begin(); it != fSted.end(); ++it)
200  {
201  printf("FWGeoTopNode::printSelected %s \n", tableManager()->refEntries().at(tableIdx(*it)).name() );
202  }
203 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:74
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:70
static int tableIdx(TGLPhysicalShape *ps)
Definition: FWGeoTopNode.cc:59
void FWGeoTopNode::ProcessSelection ( TGLSelectRecord &  rec,
std::set< TGLPhysicalShape * > &  sset,
TGLPhysicalShape *  id 
)
protected

Definition at line 105 of file FWGeoTopNode.cc.

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

Referenced by FWGeoTopNodeGL::ProcessSelection().

106 {
107  // printf("FWGeoTopNode::ProcessSelection ===============================\n");
108 
109  m_scene->BeginUpdate();
110 
111  if (sset.empty())
112  {
113  if (id)
114  {
115  sset.insert(id);
116  rec.SetSecSelResult(TGLSelectRecord::kEnteringSelection);
117  }
118  }
119  else
120  {
121  if (id)
122  {
123  if (rec.GetMultiple())
124  {
125  if (sset.find(id) == sset.end())
126  {
127  sset.insert(id);
128  rec.SetSecSelResult(TGLSelectRecord::kModifyingInternalSelection);
129  }
130  else
131  {
132  EraseFromSet(sset, id);
133  if (sset.empty())
134  rec.SetSecSelResult(TGLSelectRecord::kLeavingSelection);
135  else
136  rec.SetSecSelResult(TGLSelectRecord::kModifyingInternalSelection);
137  }
138  }
139  else
140  {
141  if (sset.size() != 1 || sset.find(id) == sset.end())
142  {
143  ClearSet(sset);
144  sset.insert(id);
145  rec.SetSecSelResult(TGLSelectRecord::kModifyingInternalSelection);
146  }
147  }
148  }
149  else
150  {
151  if (!rec.GetMultiple())
152  {
153  ClearSet(sset);
154  rec.SetSecSelResult(TGLSelectRecord::kLeavingSelection);
155  }
156  }
157  }
158 
159  if (id)
160  {
161  SetStateOf(id);
162  }
163 
164  if (rec.GetSecSelResult() != TGLSelectRecord::kNone)
165  {
166  m_scene->EndUpdate(kTRUE, kFALSE, kTRUE);
167  gEve->Redraw3D();
168 
170  }
171  else
172  {
173  m_scene->EndUpdate(kFALSE, kFALSE, kFALSE);
174  }
175 }
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:70
void ClearSet(std::set< TGLPhysicalShape * > &sset)
Definition: FWGeoTopNode.cc:71
void dataChanged()
Classes which inherit from FWTableManagerBase must call this when their underlying data changes...
FWGeoTopNodeGLScene * m_scene
Definition: FWGeoTopNode.h:68
void EraseFromSet(std::set< TGLPhysicalShape * > &sset, TGLPhysicalShape *id)
Definition: FWGeoTopNode.cc:64
void SetStateOf(TGLPhysicalShape *id)
Definition: FWGeoTopNode.cc:81
bool FWGeoTopNode::selectPhysicalFromTable ( int  tableIndex)

Definition at line 178 of file FWGeoTopNode.cc.

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

Referenced by FWGeometryTableViewBase::setColumnSelected().

179 {
180  // printf("FWGeoTopNode::selectPhysicalFromTable
181 
182  TGLPhysicalShape* ps = m_scene->FindPhysical(phyID(tableIndex));
183  if (ps) {
184  fSted.insert(ps);
185  ps->Select(1);
186  // printf("selectPhysicalFromTable found physical \n");
187  return true;
188  }
189  else if ( tableManager()->refEntries().at(tableIndex).testBit(FWGeometryTableManagerBase::kVisNodeSelf));
190  {
191  fwLog(fwlog::kInfo) << "Selected entry not drawn in GL viewer. \n" ;
192  return false;
193  }
194 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:74
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:70
FWGeoTopNodeGLScene * m_scene
Definition: FWGeoTopNode.h:68
#define fwLog(_level_)
Definition: fwLog.h:50
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 370 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().

371 {
372  if (getFirstSelectedTableIndex() < 0)
373  {
374  if (fSted.empty()) fwLog(fwlog::kInfo) << "No menu -- no node/entry selected \n";
375  return 0;
376  }
377 
378  FWPopupMenu* nodePopup = new FWPopupMenu();
379 
380  nodePopup->AddEntry("Set As Top Node", kSetTopNode);
381  nodePopup->AddEntry("Set As Top Node and Reset Camera", kSetTopNodeCam);
382  nodePopup->AddSeparator();
383  if (v) {
384  nodePopup->AddEntry("Rnr Off", kVisSelfOff);
385  }
386  nodePopup->AddEntry("Turn Render On For Children", kVisChldOn);
387  nodePopup->AddEntry("Turn Render Off For Children", kVisChldOff);
388  nodePopup->AddEntry("Apply Color To Children", kApplyChldCol);
389  nodePopup->AddEntry("Apply Color Recursively", kApplyChldColRec);
390  nodePopup->AddSeparator();
391 
392  if (overlap)
393  nodePopup->AddEntry("Print Overlap", kPrintOverlap);
394  nodePopup->AddEntry("Print Path", kPrintPath);
395  nodePopup->AddEntry("Print Shape", kPrintShape);
396  nodePopup->AddEntry("Print Material", kPrintMaterial);
397 
398  nodePopup->AddSeparator();
399  if (v) {
400  Window_t wdummy;
401  Int_t x,y;
402  gVirtualX->TranslateCoordinates(gClient->GetDefaultRoot()->GetId(), v->GetGLWidget()->GetId(), iX, iY, x, y, wdummy);
403  TGLVector3 pnt(x, y, 0.5*v->GetSelRec().GetMinZ());
404  v->CurrentCamera().WindowToViewport(pnt);
405  s_pickedCamera3DCenter = v->CurrentCamera().ViewportToWorld(pnt);
406  // s_pickedCamera3DCenter.Dump();
407  s_pickedViewer = v;
408 
409  nodePopup->AddEntry("Set Camera Center", kCamera);
410  }
411 
412  nodePopup->PlaceMenu(iX, iY,true,true);
413  return nodePopup;
414 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:74
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:50
static TGLViewer * s_pickedViewer
Definition: FWGeoTopNode.h:87
static TGLVector3 s_pickedCamera3DCenter
Definition: FWGeoTopNode.h:86
void FWGeoTopNode::SetStateOf ( TGLPhysicalShape *  id)
protected

Definition at line 81 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().

82 {
84 
85  if (fSted.find(id) != fSted.end())
86  {
87  id->Select(1);
89  }
90  else if (fHted.find(id) != fHted.end())
91  {
92  id->Select(3);
94  }
95  else
96  {
97  id->Select(0);
100  }
101 
102 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:74
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:70
std::set< TGLPhysicalShape * > fHted
Definition: FWGeoTopNode.h:73
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
static int tableIdx(TGLPhysicalShape *ps)
Definition: FWGeoTopNode.cc:59
void FWGeoTopNode::setupBuffMtx ( TBuffer3D &  buff,
const TGeoHMatrix &  mat 
)
protected

Definition at line 231 of file FWGeoTopNode.cc.

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

Referenced by paintShape().

232 {
233  const Double_t *r = mat.GetRotationMatrix();
234  const Double_t *t = mat.GetTranslation();
235  const Double_t *s = mat.GetScale();
236  Double_t *m = buff.fLocalMaster;
237  m[0] = r[0]*s[0]; m[1] = r[1]*s[1]; m[2] = r[2]*s[2]; m[3] = 0;
238  m[4] = r[3]*s[0]; m[5] = r[4]*s[1]; m[6] = r[5]*s[2]; m[7] = 0;
239  m[8] = r[6]*s[0]; m[9] = r[7]*s[1]; m[10] = r[8]*s[2]; m[11] = 0;
240  m[12] = t[0]; m[13] = t[1]; m[15] = t[2]; m[15] = 1;
241 
242  buff.fLocalFrame = kTRUE;
243 }
int FWGeoTopNode::tableIdx ( TGLPhysicalShape *  ps)
staticprotected

Definition at line 59 of file FWGeoTopNode.cc.

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

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

Definition at line 361 of file FWGeoTopNode.cc.

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

Referenced by FWGeometryTableViewBase::setColumnSelected().

362 {
363  ClearSet(fHted);
364  for (FWGeometryTableManagerBase::Entries_i i = tableManager()->refEntries().begin(); i != tableManager()->refEntries().end(); ++i)
366 }
int i
Definition: DBlmapReader.cc:9
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:70
void ClearSet(std::set< TGLPhysicalShape * > &sset)
Definition: FWGeoTopNode.cc:71
std::set< TGLPhysicalShape * > fHted
Definition: FWGeoTopNode.h:73
#define begin
Definition: vmac.h:30
void FWGeoTopNode::UnSelected ( )
virtual

Definition at line 353 of file FWGeoTopNode.cc.

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

Referenced by FWGeometryTableViewBase::setColumnSelected().

354 {
355  ClearSet(fSted);
356  for (FWGeometryTableManagerBase::Entries_i i = tableManager()->refEntries().begin(); i != tableManager()->refEntries().end(); ++i)
358 }
std::set< TGLPhysicalShape * > fSted
Definition: FWGeoTopNode.h:74
int i
Definition: DBlmapReader.cc:9
virtual FWGeometryTableManagerBase * tableManager()
Definition: FWGeoTopNode.h:70
void ClearSet(std::set< TGLPhysicalShape * > &sset)
Definition: FWGeoTopNode.cc:71
#define begin
Definition: vmac.h:30
UChar_t FWGeoTopNode::wrapTransparency ( FWGeometryTableManagerBase::NodeInfo data,
bool  leafNode 
)
private

Definition at line 417 of file FWGeoTopNode.cc.

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

Referenced by paintShape().

418 {
419  if (isParentNode)
420  {
421  return TMath::Max((Char_t)browser()->getMinParentTransparency(), data.m_transparency) * browser()->getParentTransparencyFactor();
422  }
423  else
424  {
425  return TMath::Max((Char_t)browser()->getMinLeafTransparency(), data.m_transparency) * browser()->getLeafTransparencyFactor();
426  }
427 }
T Max(T a, T b)
Definition: MathUtil.h:44
virtual FWGeometryTableViewBase * browser()
Definition: FWGeoTopNode.h:71

Friends And Related Function Documentation

friend class FWGeoTopNodeGL
friend

Definition at line 44 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 86 of file FWGeoTopNode.h.

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

TGLViewer * FWGeoTopNode::s_pickedViewer = 0
static

Definition at line 87 of file FWGeoTopNode.h.

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