CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
FWGeometryTableView.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <boost/bind.hpp>
3 #include <boost/regex.hpp>
4 
17 
19 
20 #include "TGFileDialog.h"
21 #include "TGeoNode.h"
22 #include "TGeoMatrix.h"
23 #include "TGStatusBar.h"
24 #include "TGButton.h"
25 #include "TGLabel.h"
26 #include "TGMenu.h"
27 #include "TGComboBox.h"
28 #include "KeySymbols.h"
29 
30 // #define PERFTOOL_BROWSER
31 #include "TGeoShape.h"
32 #include "TGeoBBox.h"
33 #include "TEveManager.h"
34 #include "TEveGeoNode.h"
35 #include "TEveScene.h"
36 #include "TEveSceneInfo.h"
37 #include "TEveViewer.h"
38 #include "TGLViewer.h"
39 #include "TGLCamera.h"
40 #ifdef PERFTOOL_BROWSER
41 #include <google/profiler.h>
42 #endif
43 
44 bool geodebug = 0;
45 
55 };
56 
57 
59 public:
60  struct Material
61  {
62  TGeoMaterial* g;
63  std::string n;
64  bool operator< (const Material& x) const { return n < x.n ;}
65  Material( TGeoMaterial* x) { g= x; n = x ? x->GetName() : "<show-all>";}
66  };
67 
69  mutable std::vector<Material> m_list;
70 
73 
74 
75  virtual void fillOptions(const char* iBegin, const char* iEnd, std::vector<std::pair<boost::shared_ptr<std::string>, std::string> >& oOptions) const
76  {
77  oOptions.clear();
78  std::string part(iBegin,iEnd);
79  unsigned int part_size = part.size();
80 
81  m_list.clear();
82  m_list.push_back(0);
83 
85  int nLevel = it->m_level;
86  it++;
87  while (it->m_level > nLevel)
88  {
89  TGeoMaterial* g = it->m_node->GetVolume()->GetMaterial();
90  bool duplicate = false;
91  for (std::vector<Material>::iterator j = m_list.begin(); j!=m_list.end(); ++j) {
92  if (j->g == g) {
93  duplicate = true;
94  break;
95  }
96  }
97  if (!duplicate)
98  m_list.push_back(g);
99 
100  ++it;
101  }
102  std::vector<Material>::iterator startIt = m_list.begin();
103  startIt++;
104  std::sort(startIt, m_list.end());
105 
106  std::string h = "";
107  oOptions.push_back(std::make_pair(boost::shared_ptr<std::string>(new std::string(m_list.begin()->n)), h));
108  for (std::vector<Material>::iterator i = startIt; i!=m_list.end(); ++i) {
109  if(part == (*i).n.substr(0,part_size) )
110  {
111  // std::cout << i->n <<std::endl;
112  oOptions.push_back(std::make_pair(boost::shared_ptr<std::string>(new std::string((*i).n)), (*i).n.substr(part_size, (*i).n.size()-part_size)));
113  }
114  }
115 
116  }
117 
118  bool isStringValid(std::string& exp)
119  {
120  if (exp.empty()) return true;
121 
122  for (std::vector<Material>::iterator i = m_list.begin(); i!=m_list.end(); ++i) {
123  if (exp == (*i).n)
124  return true;
125 
126  }
127  return false;
128  }
129 };
130 
131 //______________________________________________________________________________
132 
133 class FWViewCombo : public TGTextButton
134 {
135 private:
137  TEveElement* m_el;
138 
139 public:
140  FWViewCombo(const TGWindow *p, FWGeometryTableView* t):
141  TGTextButton(p, "Select Views", -1, TGButton::GetDefaultGC()(), TGTextButton::GetDefaultFontStruct(), kRaisedFrame | kDoubleBorder ), m_tableView(t), m_el(0) {}
142  virtual ~FWViewCombo() {}
143  void setElement(TEveElement* x) {m_el = x;}
144 
145  virtual Bool_t HandleButton(Event_t* event)
146  {
147  if (event->fType == kButtonPress)
148  {
149  bool map = false;
150 
151  FWPopupMenu* m_viewPopup = new FWPopupMenu(0);
152 
153  TEveElementList* views = gEve->GetViewers();
154  int idx = 0;
155 
156  for (TEveElement::List_i it = views->BeginChildren(); it != views->EndChildren(); ++it)
157  {
158  TEveViewer* v = ((TEveViewer*)(*it));
159  if (strstr( v->GetElementName(), "3D") )
160  {
161  bool added = false;
162  m_viewPopup->AddEntry(v->GetElementName(), idx);
163  TEveSceneInfo* si = ( TEveSceneInfo*)v->FindChild(Form("SI - EventScene %s",v->GetElementName() ));
164  if (m_el) {
165  for (TEveElement::List_i it = m_el->BeginParents(); it != m_el->EndParents(); ++it ){
166  if (*it == si->GetScene()) {
167  added = true;
168  break;
169  }
170  }
171  }
172  map = true;
173  if (added)
174  m_viewPopup->CheckEntry(idx);
175  }
176  ++idx;
177  }
178 
179  if (map) {
180 
181  Window_t wdummy;
182  Int_t ax,ay;
183  gVirtualX->TranslateCoordinates(GetId(),
184  gClient->GetDefaultRoot()->GetId(),
185  event->fX, event->fY, //0,0 in local coordinates
186  ax,ay, //coordinates of screen
187  wdummy);
188 
189 
190  m_viewPopup->PlaceMenu(ax, ay, true,true);
191  m_viewPopup->Connect("Activated(Int_t)",
192  "FWGeometryTableView",
193  const_cast<FWGeometryTableView*>(m_tableView),
194  "selectView(Int_t)");
195  }
196  else
197  {
198  fwLog(fwlog::kError) << "No 3D View added. \n";
199  }
200  }
201  return true;
202  }
203 
204 };
205 
206 //==============================================================================
207 //==============================================================================
208 //==============================================================================
209 //==============================================================================
210 
211 FWGeometryTableView::FWGeometryTableView(TEveWindowSlot* iParent,FWColorManager* colMng, TGeoNode* tn, TObjArray* volumes )
212  : FWViewBase(FWViewType::kGeometryTable),
213  m_mode(this, "Mode:", 0l, 0l, 1l),
214  m_filter(this,"Materials:",std::string()),
215  m_autoExpand(this,"ExpandList:", 1l, 0l, 100l),
216  m_visLevel(this,"VisLevel:", 3l, 1l, 100l),
217  m_visLevelFilter(this,"IgnoreVisLevelOnFilter", true),
218  m_topNodeIdx(this, "TopNodeIndex", -1l, 0, 1e7),
219  m_colorManager(colMng),
220  m_tableManager(0),
221  m_eveTopNode(0),
222  m_colorPopup(0),
223  m_eveWindow(0),
224  m_frame(0),
225  m_viewBox(0),
226  m_filterEntry(0),
227  m_filterValidator(0),
228  m_viewersConfig(0)
229 {
230  m_eveWindow = iParent->MakeFrame(0);
231  TGCompositeFrame* xf = m_eveWindow->GetGUICompositeFrame();
232 
233  m_frame = new TGVerticalFrame(xf);
234  xf->AddFrame(m_frame, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
235 
236  m_mode.addEntry(0, "Node");
237  m_mode.addEntry(1, "Volume");
238 
240  m_mode.changed_.connect(boost::bind(&FWGeometryTableView::modeChanged,this));
241  m_autoExpand.changed_.connect(boost::bind(&FWGeometryTableView::autoExpandChanged, this));
242  m_visLevel.changed_.connect(boost::bind(&FWGeometryTableView::refreshTable3D,this));
244 
245 
246  // top row
247  {
248  TGHorizontalFrame* hp = new TGHorizontalFrame(m_frame);
249 
250  if (0) { TGTextButton* fileOpen = new TGTextButton (hp, "Open Geometry File");
251  hp->AddFrame(fileOpen);
252  fileOpen->Connect("Clicked()","FWGeometryTableView",this,"browse()");
253  }
254  {
255  TGTextButton* rb = new TGTextButton (hp, "CdTop");
256  hp->AddFrame(rb, new TGLayoutHints(kLHintsNormal, 2, 2, 0, 0) );
257  rb->Connect("Clicked()","FWGeometryTableView",this,"cdTop()");
258  } {
259  TGTextButton* rb = new TGTextButton (hp, "CdUp");
260  hp->AddFrame(rb, new TGLayoutHints(kLHintsNormal, 2, 2, 0, 0));
261  rb->Connect("Clicked()","FWGeometryTableView",this,"cdUp()");
262  }
263 
264  {
265  m_viewBox = new FWViewCombo(hp, this);
266  hp->AddFrame( m_viewBox,new TGLayoutHints(kLHintsExpandY, 2, 2, 0, 0));
267  }
268  {
269  hp->AddFrame(new TGLabel(hp, "Filter:"), new TGLayoutHints(kLHintsBottom, 10, 0, 0, 2));
271  m_filterEntry->SetHeight(20);
274  hp->AddFrame(m_filterEntry, new TGLayoutHints(kLHintsExpandX, 1, 2, 1, 0));
276  m_filterEntry->getListBox()->Connect("Selected(int)", "FWGeometryTableView", this, "filterListCallback()");
277  m_filterEntry->Connect("ReturnPressed()", "FWGeometryTableView", this, "filterTextEntryCallback()");
278 
279  gVirtualX->GrabKey( m_filterEntry->GetId(),gVirtualX->KeysymToKeycode((int)kKey_A), kKeyControlMask, true);
280  }
281  m_frame->AddFrame(hp,new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 4, 2, 2, 0));
282  }
283 
284  m_settersFrame = new TGHorizontalFrame(m_frame);
285  m_frame->AddFrame( m_settersFrame, new TGLayoutHints(kLHintsExpandX,4,2,2,2));
286  m_settersFrame->SetCleanup(kDeepCleanup);
287 
289  m_frame->AddFrame(m_tableWidget,new TGLayoutHints(kLHintsExpandX|kLHintsExpandY,2,2,0,0));
293  m_tableWidget->Connect("cellClicked(Int_t,Int_t,Int_t,Int_t,Int_t,Int_t)",
294  "FWGeometryTableView",this,
295  "cellClicked(Int_t,Int_t,Int_t,Int_t,Int_t,Int_t)");
297  resetSetters();
298 
299  if (tn)
300  {
301  m_tableManager->loadGeometry(tn, volumes);
302  cdTop();
303  }
304 
305  m_frame->MapSubwindows();
306  m_frame->Layout();
307  xf->Layout();
308  m_frame->MapWindow();
309 }
310 
312 {
313  if (m_eveTopNode)
314  {
315  while ( m_eveTopNode->HasParents()) {
316  TEveElement* x = *m_eveTopNode->BeginParents();
317  x->RemoveElement(m_eveTopNode);
318  }
319  m_eveTopNode->DecDenyDestroy();
320  }
321 
322  // take out composite frame and delete it directly (zwithout the timeout)
323  TGCompositeFrame *frame = m_eveWindow->GetGUICompositeFrame();
324  frame->RemoveFrame( m_frame );
325  delete m_frame;
326 
327  m_eveWindow->DestroyWindowAndSlot();
328  delete m_tableManager;
329 }
330 
331 //==============================================================================
332 
333 void
335 {
337 
338  FWConfiguration viewers(1);
339  if (m_eveTopNode)
340  {
341  for (TEveElement::List_i it = m_eveTopNode->BeginParents(); it != m_eveTopNode->EndParents(); ++it )
342  {
343  FWConfiguration tempArea;
344  TEveScene* scene = dynamic_cast<TEveScene*>(*it);
345  std::string n = scene->GetElementName();
346  viewers.addKeyValue(n, tempArea);
347  }
348  }
349  iTo.addKeyValue("Viewers", viewers, true);
350 }
351 
352 void
354 {
355  for(const_iterator it =begin(), itEnd = end();
356  it != itEnd;
357  ++it) {
358  (*it)->setFrom(iFrom);
359 
360  }
361  m_filterEntry->SetText(m_filter.value().c_str(), false);
362  resetSetters();
364  m_viewersConfig = iFrom.valueForKey("Viewers");
365 }
366 
367 void
369 {
370  // post-config
371  if (m_viewersConfig) {
372  TEveElementList* scenes = gEve->GetScenes();
374  if(0!=keyVals)
375  {
376  for(FWConfiguration::KeyValuesIt it = keyVals->begin(); it!= keyVals->end(); ++it) {
377 
378  TString sname = it->first;
379  TEveElement* s = scenes->FindChild(sname);
380  if (s)
381  {
382  // std::cout << sname.Data() << std::endl;
383  if (!m_eveTopNode) {
384  m_eveTopNode = new FWGeoTopNode(this);
385  m_eveTopNode->IncDenyDestroy();
387  }
388  s->AddElement(m_eveTopNode);
389  }
390  }
391  }
392  }
393 }
394 
395 void
397 {
398 
399  if (!m_settersFrame->GetList()->IsEmpty())
400  {
401  m_setters.clear();
402 
403  TGFrameElement *el = (TGFrameElement*) m_settersFrame->GetList()->First();
404  TGHorizontalFrame* f = (TGHorizontalFrame*) el->fFrame;
405  m_settersFrame->RemoveFrame(f);
406  }
407 
408  TGHorizontalFrame* frame = new TGHorizontalFrame(m_settersFrame);
409  m_settersFrame->AddFrame(frame, new TGLayoutHints(kLHintsExpandX,4,2,2,2) );
410  m_settersFrame->SetCleanup(kDeepCleanup);
411  makeSetter(frame, &m_mode);
412  makeSetter(frame, &m_autoExpand);
413  makeSetter(frame, &m_visLevel);
414  makeSetter(frame, &m_visLevelFilter);
415  m_settersFrame->MapSubwindows();
416  m_frame->Layout();
417 }
418 
419 void
420 FWGeometryTableView::makeSetter(TGCompositeFrame* frame, FWParameterBase* param)
421 {
422  boost::shared_ptr<FWParameterSetterBase> ptr( FWParameterSetterBase::makeSetterFor(param) );
423  ptr->attach(param, this);
424 
425  TGFrame* m_frame = ptr->build(frame, false);
426  frame->AddFrame(m_frame, new TGLayoutHints(kLHintsExpandX));
427 
428  m_setters.push_back(ptr);
429 }
430 
431 
432 //==============================================================================
433 
434 void
436 {
437  TEveElement::List_i it = gEve->GetViewers()->BeginChildren();
438  std::advance(it, idx);
439  TEveViewer* v = (TEveViewer*)(*it);
440  TEveSceneInfo* si = (TEveSceneInfo*)v->FindChild(Form("SI - EventScene %s",v->GetElementName()));
441 
442  bool added = false;
443  if (!m_eveTopNode) {
444  m_eveTopNode = new FWGeoTopNode(this);
445  m_eveTopNode->IncDenyDestroy();
447  }
448  else
449  {
450  for (TEveElement::List_i it = m_eveTopNode->BeginParents(); it != m_eveTopNode->EndParents(); ++it ){
451  if (*it == si->GetScene()) {
452  added = true;
453  break;
454  }
455  }
456  }
457  printf("add node %s \n", si->GetElementName());
458 
459  if (added)
460  si->GetScene()->RemoveElement(m_eveTopNode);
461  else
462  si->GetScene()->AddElement(m_eveTopNode);
463 
464  m_eveTopNode->ElementChanged();
465  gEve->Redraw3D();
466 }
467 
468 
469 
470 //==============================================================================
471 void
472 FWGeometryTableView::cellClicked(Int_t iRow, Int_t iColumn, Int_t iButton, Int_t iKeyMod, Int_t x, Int_t y)
473 {
474  m_tableManager->setSelection(iRow, iColumn, iButton);
476 
477  if (iButton == kButton1)
478  {
479  if (iColumn == FWGeometryTableManager::kName)
480  {
482  return;
483  }
484  else if (iColumn == FWGeometryTableManager::kColor)
485  {
486  std::vector<Color_t> colors;
488 
489  if (!m_colorPopup) {
490  m_colorPopup = new FWColorPopup(gClient->GetDefaultRoot(), colors.front());
491  m_colorPopup->InitContent("", colors);
492  m_colorPopup->Connect("ColorSelected(Color_t)","FWGeometryTableView", const_cast<FWGeometryTableView*>(this), "nodeColorChangeRequested(Color_t)");
493  }
494  m_colorPopup->SetName("Selected");
496  m_colorPopup->PlacePopup(x, y, m_colorPopup->GetDefaultWidth(), m_colorPopup->GetDefaultHeight());
497  return;
498  }
499  else
500  {
501  bool elementChanged = false;
502  if (iColumn == FWGeometryTableManager::kVisSelf)
503  {
505  elementChanged = true;
506  }
507  if (iColumn == FWGeometryTableManager::kVisChild)
508  {
510  elementChanged = true;
511  }
512 
513 
514  if (m_eveTopNode && elementChanged)
515  {
516  m_eveTopNode->ElementChanged();
517  gEve->RegisterRedraw3D();
518  }
519  }
520 
521 
523 
524  }
525  else if (iColumn == FWGeometryTableManager::kName)
526  {
527  FWPopupMenu* m_nodePopup = new FWPopupMenu();
528  m_nodePopup->AddEntry("Set As Top Node", kSetTopNode);
529  m_nodePopup->AddEntry("Set As Top Node And Camera Center", kSetTopNodeCam);
530  m_nodePopup->AddSeparator();
531  m_nodePopup->AddEntry("Rnr Off For All Children", kVisOff);
532  m_nodePopup->AddEntry("Rnr On For All Children", kVisOn);
533  m_nodePopup->AddSeparator();
534  m_nodePopup->AddEntry("Set Camera Center", kCamera);
535  m_nodePopup->AddSeparator();
536  m_nodePopup->AddEntry("InspectMaterial", kInspectMaterial);
537  m_nodePopup->AddEntry("InspectShape", kInspectShape);
538  m_nodePopup->AddEntry("Table Debug", kTableDebug);
539 
540  m_nodePopup->PlaceMenu(x,y,true,true);
541  m_nodePopup->Connect("Activated(Int_t)",
542  "FWGeometryTableView",
543  const_cast<FWGeometryTableView*>(this),
544  "chosenItem(Int_t)");
545  }
546 }
547 
549 {
551  TGeoVolume* gv = ni.m_node->GetVolume();
552  bool visible = true;
553  bool resetHome = false;
554  if (gv)
555  {
556  switch (x) {
557  case kVisOff:
558  visible = false;
559  case kVisOn:
561  refreshTable3D();
562  break;
563 
564  case kInspectMaterial:
565  gv->InspectMaterial();
566  break;
567  case kInspectShape:
568  gv->InspectShape();
569  break;
570  case kTableDebug:
571  // std::cout << "node name " << ni.name() << "parent " <<m_tableManager->refEntries()[ni.m_parent].name() << std::endl;
572  // printf("node expanded [%d] imported[%d] children[%d]\n", ni.m_expanded,m_tableManager->nodeImported(m_tableManager->m_selectedIdx) , ni.m_node->GetNdaughters());
573  // m_tableManager->printChildren(
574  // m_tableManager->m_selectedIdx);
576  break;
577 
578  case kSetTopNode:
580  break;
581 
582  case kSetTopNodeCam:
584  resetHome = true;
585  case kCamera:
586  {
587  TGeoHMatrix mtx;
588  m_tableManager->getNodeMatrix( ni, mtx);
589 
590  static double pnt[3];
591  TGeoBBox* bb = static_cast<TGeoBBox*>( ni.m_node->GetVolume()->GetShape());
592  const double* origin = bb->GetOrigin();
593  mtx.LocalToMaster(origin, pnt);
594 
595  TEveElementList* vl = gEve->GetViewers();
596  for (TEveElement::List_i it = vl->BeginChildren(); it != vl->EndChildren(); ++it)
597  {
598  TEveViewer* v = ((TEveViewer*)(*it));
599  TString name = v->GetElementName();
600  if (name.Contains("3D"))
601  {
602  v->GetGLViewer()->SetDrawCameraCenter(true);
603  TGLCamera& cam = v->GetGLViewer()->CurrentCamera();
604  cam.SetExternalCenter(true);
605  cam.SetCenterVec(pnt[0], pnt[1], pnt[2]);
606  }
607  }
608  if (resetHome) gEve->FullRedraw3D(true, true);
609  break;
610  }
611  }
612  }
613 }
614 
616 {
618  if(backgroundIsWhite) {
621  } else {
624  }
625  m_tableManager->setBackgroundToWhite(backgroundIsWhite);
626  gClient->NeedRedraw(m_tableWidget);
627 }
628 
630 {
632  ni.m_color = col;
633  ni.m_node->GetVolume()->SetLineColor(col);
634  refreshTable3D();
635 }
636 
637 void
639 {
640  // print all entries
642 }
643 
644 //______________________________________________________________________________
645 
646 
648 {
649  std::string p;
650  m_tableManager->getNodePath(idx, p);
651  setPath(idx, p);
652 }
653 
655 {
656  std::string path = "/" ;
657  path += m_tableManager->refEntries().at(0).name();
658  setPath(-1, path );
659 }
660 
662 {
663  if ( getTopNodeIdx() != -1)
664  {
665  int pIdx = m_tableManager->refEntries()[getTopNodeIdx()].m_parent;
666  std::string p;
667  m_tableManager->getNodePath(pIdx, p);
668  setPath(pIdx, p);
669  }
670 }
671 
672 void FWGeometryTableView::setPath(int parentIdx, std::string& path)
673 {
674  m_topNodeIdx.set(parentIdx);
675 #ifdef PERFTOOL_BROWSER
676  ProfilerStart(Form("cdPath%d.prof", parentIdx));
677 #endif
678 
679  m_tableManager->topGeoNodeChanged(parentIdx);
682 
683  refreshTable3D();
684  // printf("END Set Path to [%s], curren node %s \n", m_path.value().c_str(), topNode->GetName());
685 
687  if ( m_eveTopNode) {
688  m_eveTopNode->ElementChanged();
689  gEve->FullRedraw3D(false, true);
690  }
691 
692 #ifdef PERFTOOL_BROWSER
693  ProfilerStop();
694 #endif
695 }
696 //______________________________________________________________________________
698 {
699  // std::cout << "text entry click ed \n" ;
700  std::string exp = m_filterEntry->GetText();
701  if ( m_filterValidator->isStringValid(exp))
702  {
703  updateFilter(exp);
704  }
705  else
706  {
707  fwLog(fwlog::kError) << "filter expression not valid." << std::endl;
708  return;
709  }
710 }
711 
713 {
714  // std::cout << "list click ed \n" ;
715  TGListBox* list = m_filterEntry->getListBox();
716  TList selected;
717  list->GetSelectedEntries(&selected);
718  if (selected.GetEntries() == 1)
719  {
720  const TGLBEntry* entry = dynamic_cast<TGLBEntry*> (selected.First());
721  updateFilter( m_filterValidator->m_list[ entry->EntryId()].n);
722  }
723 }
724 
725 
726 
728 {
729  // std::cout << "=FWGeometryTableView::updateFilter()" << m_filterEntry->GetText() <<std::endl;
730 
731  if (exp == m_filterValidator->m_list.begin()->n)
732  exp.clear();
733 
734  if (exp == m_filter.value()) return;
735 
736  if (exp.empty())
737  {
738  // std::cout << "FITLER OFF \n";
740  {
741  m_tableManager->setVisibility(*i, true);
743  }
744 
745  // NOTE: entry should be cleared automatically
746  m_filterEntry->Clear();
747 
749  }
750 
751  m_filter.set(exp);
753  refreshTable3D();
754 
755 }
756 
757 //______________________________________________________________________________
759 {
760  // reset filter when change mode
761  // std::cout << "chage mode \n";
763  refreshTable3D();
764 }
765 
766 //______________________________________________________________________________
767 
769 {
772 }
773 //______________________________________________________________________________
774 
776 {
778 
779  if ( m_eveTopNode) {
780  m_eveTopNode->ElementChanged();
781  gEve->FullRedraw3D(false, true);
782  }
783 }
784 
void setVisibility(NodeInfo &nodeInfo, bool)
std::vector< std::pair< std::string, FWConfiguration > > KeyValues
void loadGeometry(TGeoNode *, TObjArray *)
int i
Definition: DBlmapReader.cc:9
void SetBackgroundColor(Pixel_t)
TEveElement * m_el
std::vector< FWParameterBase * >::const_iterator const_iterator
const KeyValues * keyValues() const
void InitContent(const char *name, const std::vector< Color_t > &colors, bool backgroundIsBlack=true)
void SetName(const char *iName)
bool getVisibilityChld(const NodeInfo &nodeInfo) const
const_iterator begin() const
TGCompositeFrame * m_frame
virtual void setFrom(const FWConfiguration &)
void updateFilter(std::string &)
void setElement(TEveElement *x)
FWGeoMaterialValidator * m_filterValidator
void setVisibilityChld(NodeInfo &nodeInfo, bool)
void getNodePath(int, std::string &) const
std::vector< Color_t > colors
Definition: eve_filter.cc:26
void fillLimitedColors(std::vector< Color_t > &cv) const
void SetHeaderBackgroundColor(Pixel_t)
FWGeometryTableView(TEveWindowSlot *, FWColorManager *, TGeoNode *, TObjArray *)
static boost::shared_ptr< FWParameterSetterBase > makeSetterFor(FWParameterBase *)
void cellClicked(Int_t iRow, Int_t iColumn, Int_t iButton, Int_t iKeyMod, Int_t iGlobalX, Int_t iGlobalY)
Exp< T >::type exp(const T &t)
Definition: Exp.h:22
FWGeometryTableManager * m_table
void dataChanged()
Classes which inherit from FWTableManagerBase must call this when their underlying data changes...
FWViewCombo(const TGWindow *p, FWGeometryTableView *t)
sigc::signal< void, T > changed_
FWColorManager * m_colorManager
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
void SetLineSeparatorColor(Pixel_t)
FWTableWidget * m_tableWidget
int path() const
Definition: HLTadd.h:3
bool operator<(const Material &x) const
GeoMenuOptions
void PlacePopup(Int_t x, Int_t y, UInt_t w, UInt_t h)
FWLongParameter m_visLevel
void disableGrowInWidth()
std::pair< std::string, MonitorElement * > entry
Definition: ME_MAP.h:8
BackgroundColorIndex backgroundColorIndex() const
FWStringParameter m_filter
virtual Bool_t HandleButton(Event_t *event)
void setValidator(FWValidatorBase *)
const_iterator end() const
bool addEntry(Long_t id, const std::string &txt)
int j
Definition: DBlmapReader.cc:9
bool getVisibility(const NodeInfo &nodeInfo) const
double f[11][100]
virtual ~FWViewCombo()
void ResetColors(const std::vector< Color_t > &colors, bool backgroundIsBlack=true)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
FWGeometryTableManager * m_tableManager
FWGeoTopNode * m_eveTopNode
FWConfiguration & addKeyValue(const std::string &, const FWConfiguration &)
bool isStringValid(std::string &exp)
FWLongParameter m_autoExpand
bool geodebug
void setSelection(int row, int column, int mask)
void getNodeMatrix(const NodeInfo &nodeInfo, TGeoHMatrix &mat) const
#define fwLog(_level_)
Definition: fwLog.h:51
part
Definition: HCALResponse.h:21
std::vector< boost::shared_ptr< FWParameterSetterBase > > m_setters
const FWConfiguration * m_viewersConfig
std::vector< Material > m_list
Entries_v::iterator Entries_i
virtual void addTo(FWConfiguration &) const
KeyValues::const_iterator KeyValuesIt
void makeSetter(TGCompositeFrame *frame, FWParameterBase *param)
FWColorPopup * m_colorPopup
FWBoolParameter m_visLevelFilter
void nodeColorChangeRequested(Color_t)
const FWConfiguration * valueForKey(const std::string &iKey) const
string s
Definition: asciidump.py:422
Definition: DDAxes.h:10
FWLongParameter m_topNodeIdx
FWGUIValidatingTextEntry * m_filterEntry
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
void setPath(int, std::string &)
mathSSE::Vec4< T > v
virtual void fillOptions(const char *iBegin, const char *iEnd, std::vector< std::pair< boost::shared_ptr< std::string >, std::string > > &oOptions) const
FWGeoMaterialValidator(FWGeometryTableManager *t)
FWGeometryTableView * m_tableView
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
TEveWindowFrame * m_eveWindow
virtual void addTo(FWConfiguration &) const
TGCompositeFrame * m_settersFrame