CMS 3D CMS Logo

FW3DViewBase.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Core
4 // Class : FW3DViewBase
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author: Chris Jones
10 // Created: Thu Feb 21 11:22:41 EST 2008
11 //
12 #include <functional>
13 #include <string>
14 #include <algorithm>
15 
16 // user include files
17 
18 #include "TGButton.h"
19 #include "TGLScenePad.h"
20 #include "TGLViewer.h"
21 #include "TGLClip.h"
22 #include "TGLPerspectiveCamera.h"
23 #include "TEveManager.h"
24 #include "TEveElement.h"
25 #include "TEveLine.h"
26 #include "TEveBoxSet.h"
27 #include "TEveScene.h"
28 #include "TGLLogicalShape.h"
29 #include "TEveCalo.h"
30 #include "TEveCaloData.h"
31 #include "TEveStraightLineSet.h"
32 
41 
42 namespace {
43  class TGLClipsiLogical : public TGLLogicalShape {
44  protected:
45  void DirectDraw(TGLRnrCtx& rnrCtx) const override {}
46 
47  public:
48  TGLClipsiLogical() : TGLLogicalShape() {}
49  ~TGLClipsiLogical() override {}
50  void Resize(Double_t ext) {}
51  };
52 
53  const float fgColor[4] = {1.0, 0.6, 0.2, 0.5};
54 
55  class Clipsi : public TGLClip {
56  public:
57  Clipsi(const Clipsi&) = delete; // Not implemented
58  Clipsi& operator=(const Clipsi&) = delete; // Not implemented
59 
60  private:
61  TGLRnrCtx* m_rnrCtx;
62  TGLVertex3 vtx[4];
63  TGLVertex3 appexOffset;
64 
65  public:
66  Clipsi(TGLRnrCtx* ctx) : TGLClip(*new TGLClipsiLogical, TGLMatrix(), fgColor), m_rnrCtx(ctx) {}
67  ~Clipsi() override {}
68  using TGLClip::Setup;
69  void Setup(const TGLBoundingBox& bbox) override {}
70 
71  void SetPlaneInfo(TEveVector* vec) {
72  for (int i = 0; i < 4; ++i) {
73  // vec[i].Dump();
74  vtx[i].Set(vec[i].fX + appexOffset.X(), vec[i].fY + appexOffset.Y(), vec[i].fZ + appexOffset.Z());
75  }
76  }
77 
78  void SetAppexOffset(TEveVector& vec) { appexOffset.Set(vec.fX, vec.fY, vec.fZ); }
79 
80  using TGLClip::PlaneSet;
81  void PlaneSet(TGLPlaneSet_t& planeSet) const override {
82  TGLVertex3 o = appexOffset;
83 
84  planeSet.push_back(TGLPlane(o, vtx[0], vtx[1]));
85  planeSet.push_back(TGLPlane(o, vtx[1], vtx[2]));
86  planeSet.push_back(TGLPlane(o, vtx[2], vtx[3]));
87  planeSet.push_back(TGLPlane(o, vtx[3], vtx[0]));
88  }
89  };
90 } // namespace
91 
93 //
94 //
95 // FW3DViewBase
96 //
97 //
98 //
100 FW3DViewBase::FW3DViewBase(TEveWindowSlot* iParent, FWViewType::EType typeId, unsigned int version)
101  : FWEveView(iParent, typeId, version),
102  m_geometry(nullptr),
103  m_glClip(nullptr),
104  m_showMuonBarrel(this, "Show Muon Barrel", 0l, 0l, 2l),
105  m_showMuonEndcap(this, "Show Muon Endcap", false),
106  m_showPixelBarrel(this, "Show Pixel Barrel", false),
107  m_showPixelEndcap(this, "Show Pixel Endcap", false),
108  m_showTrackerBarrel(this, "Show Tracker Barrel", false),
109  m_showTrackerEndcap(this, "Show Tracker Endcap", false),
110  m_showHGCalEE(this, "Show HGCalEE", false),
111  m_showHGCalHSi(this, "Show HGCalHSi", false),
112  m_showHGCalHSc(this, "Show HGCalHSc", false),
113  m_showMtdBarrel(this, "Show MTD Barrel", false),
114  m_showMtdEndcap(this, "Show MTD Endcap", false),
115  m_ecalBarrel(nullptr),
116  m_showEcalBarrel(this, "Show Ecal Barrel", false),
117  m_rnrStyle(this, "Render Style", 0l, 0l, 2l),
118  m_selectable(this, "Enable Tooltips", false),
119  m_cameraType(this, "Camera Type", 0l, 0l, 5l),
120  m_clipEnable(this, "Enable Clip", false),
121  m_clipTheta(this, "Clip Theta", 0.0, -5.0, 5.0),
122  m_clipPhi(this, "Clip Phi", 0.0, -2.0, 2.0),
123  m_clipDelta1(this, "Clip Delta1", 0.2, 0.01, 2),
124  m_clipDelta2(this, "Clip Delta2", 0.2, 0.01, 2),
125  m_clipAppexOffset(this, "Appex Offset", 10l, 0l, 50l),
126  m_clipHGCalLayerBegin(this, "HGCal Lower Bound", 1l, 1l, 52l),
127  m_clipHGCalLayerEnd(this, "HGCal Upper Bound", 52l, 1l, 52l),
128  m_DMT(nullptr),
129  m_DMTline(nullptr) {
130  viewerGL()->SetCurrentCamera(TGLViewer::kCameraPerspXOZ);
132 
133  m_showMuonBarrel.addEntry(0, "Hide");
134  m_showMuonBarrel.addEntry(1, "Simplified");
135  m_showMuonBarrel.addEntry(2, "Full");
136  m_showMuonBarrel.changed_.connect(std::bind(&FW3DViewBase::showMuonBarrel, this, std::placeholders::_1));
137 
138  m_rnrStyle.addEntry(TGLRnrCtx::kFill, "Fill");
139  m_rnrStyle.addEntry(TGLRnrCtx::kOutline, "Outline");
140  m_rnrStyle.addEntry(TGLRnrCtx::kWireFrame, "WireFrame");
141  m_rnrStyle.changed_.connect(std::bind(&FW3DViewBase::rnrStyle, this, std::placeholders::_1));
142 
143  m_selectable.changed_.connect(std::bind(&FW3DViewBase::selectable, this, std::placeholders::_1));
144 
145  m_cameraType.addEntry(TGLViewer::kCameraPerspXOZ, "PerspXOZ");
146  m_cameraType.addEntry(TGLViewer::kCameraOrthoXOY, "OrthoXOY");
147  m_cameraType.addEntry(TGLViewer::kCameraOrthoXOZ, "OrthoXOZ");
148  m_cameraType.addEntry(TGLViewer::kCameraOrthoZOY, "OrthoZOY");
149  m_cameraType.addEntry(TGLViewer::kCameraOrthoXnOY, "OrthoXnOY");
150  m_cameraType.addEntry(TGLViewer::kCameraOrthoXnOZ, "OrthoXnOZ");
151  m_cameraType.addEntry(TGLViewer::kCameraOrthoZnOY, "OrthoZnOY");
152  m_cameraType.changed_.connect(std::bind(&FW3DViewBase::setCameraType, this, std::placeholders::_1));
153 
154  m_clipEnable.changed_.connect(std::bind(&FW3DViewBase::enableSceneClip, this, std::placeholders::_1));
155  m_clipTheta.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
156  m_clipPhi.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
157  m_clipDelta1.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
158  m_clipDelta2.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
159  m_clipAppexOffset.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
160  m_clipHGCalLayerBegin.changed_.connect(std::bind(&FW3DViewBase::updateHGCalVisibility, this, false));
161  m_clipHGCalLayerEnd.changed_.connect(std::bind(&FW3DViewBase::updateHGCalVisibility, this, false));
162 
163  m_ecalBarrel = new TEveBoxSet("ecalBarrel");
164  m_ecalBarrel->UseSingleColor();
165  m_ecalBarrel->SetMainColor(kAzure + 10);
166  m_ecalBarrel->SetMainTransparency(98);
167  geoScene()->AddElement(m_ecalBarrel);
168 }
169 
171 
174 
176  geoScene()->AddElement(m_geometry);
177 
178  m_showPixelBarrel.changed_.connect(std::bind(&FW3DViewGeometry::showPixelBarrel, m_geometry, std::placeholders::_1));
179  m_showPixelEndcap.changed_.connect(std::bind(&FW3DViewGeometry::showPixelEndcap, m_geometry, std::placeholders::_1));
181  std::bind(&FW3DViewGeometry::showTrackerBarrel, m_geometry, std::placeholders::_1));
183  std::bind(&FW3DViewGeometry::showTrackerEndcap, m_geometry, std::placeholders::_1));
184  m_showHGCalEE.changed_.connect(std::bind(&FW3DViewGeometry::showHGCalEE, m_geometry, std::placeholders::_1));
185  m_showHGCalHSi.changed_.connect(std::bind(&FW3DViewGeometry::showHGCalHSi, m_geometry, std::placeholders::_1));
186  m_showHGCalHSc.changed_.connect(std::bind(&FW3DViewGeometry::showHGCalHSc, m_geometry, std::placeholders::_1));
187  m_showMuonEndcap.changed_.connect(std::bind(&FW3DViewGeometry::showMuonEndcap, m_geometry, std::placeholders::_1));
188  m_showMtdBarrel.changed_.connect(std::bind(&FW3DViewGeometry::showMtdBarrel, m_geometry, std::placeholders::_1));
189  m_showMtdEndcap.changed_.connect(std::bind(&FW3DViewGeometry::showMtdEndcap, m_geometry, std::placeholders::_1));
190  m_showEcalBarrel.changed_.connect(std::bind(&FW3DViewBase::showEcalBarrel, this, std::placeholders::_1));
191 
192  // don't clip event scene -- ideally, would have TGLClipNoClip in root
193  TGLClipPlane* c = new TGLClipPlane();
194  c->Setup(TGLVector3(1e10, 0, 0), TGLVector3(-1, 0, 0));
195  eventScene()->GetGLScene()->SetClip(c);
196 
197  m_DMTline = new TEveLine();
198  m_DMTline->SetLineColor(1016);
199  m_DMTline->SetLineStyle(5);
200 
201  m_DMTline->SetPoint(0, 0, 0, 0);
202  m_DMTline->SetPoint(1, 0, 0, 0);
203  eventScene()->AddElement(m_DMTline);
205 }
206 
208  if (m_geometry) {
209  m_geometry->showMuonBarrel(x == 1);
211  }
212 }
213 
215  viewerGL()->RefCamera(TGLViewer::ECameraType(x)).IncTimeStamp();
216  viewerGL()->SetCurrentCamera(TGLViewer::ECameraType(x));
217 
218  //if (viewerGL()->CurrentCamera().IsOrthographic())
219  // ((TGLOrthoCamera*)(&viewerGL()->CurrentCamera()))->SetEnableRotate(1);
220 }
221 
223  geoScene()->GetGLScene()->SetStyle(x);
224  viewerGL()->Changed();
225  gEve->Redraw3D();
226 }
227 
228 void FW3DViewBase::selectable(bool x) { geoScene()->GetGLScene()->SetSelectable(x); }
230  if (m_glClip == nullptr) {
231  m_glClip = new Clipsi(viewerGL()->GetRnrCtx());
232 
233  m_glClip->SetMode(TGLClip::kOutside);
234  }
235 
236  geoScene()->GetGLScene()->SetClip(x ? m_glClip : nullptr);
237  for (TEveElement::List_i it = gEve->GetScenes()->BeginChildren(); it != gEve->GetScenes()->EndChildren(); ++it) {
238  if (strncmp((*it)->GetElementName(), "TopGeoNodeScene", 15) == 0)
239  ((TEveScene*)(*it))->GetGLScene()->SetClip(x ? m_glClip : nullptr);
240  }
241  eventScene()->GetGLScene()->SetClip(x ? m_glClip : nullptr);
242  updateClipPlanes(true);
243  updateHGCalVisibility(false);
244  viewerGL()->RequestDraw();
245 }
246 
247 void FW3DViewBase::setClip(float theta, float phi) {
248  // called from popup menu via FWGUIManager
249 
250  // limit to 2 decimals, else TGNumber entry in the view controller shows only last 5 irrelevant digits
251  double base = 100.0;
252  int thetaInt = theta * base;
253  int phiInt = phi * base;
254  m_clipTheta.set(thetaInt / base);
255  m_clipPhi.set(phiInt / base);
256  m_clipEnable.set(true);
257 }
258 
259 namespace {
260  float getBBoxLineLength(TEveScene* scene, TEveVector in) {
261  if (!scene->NumChildren())
262  return 0;
263 
264  scene->Repaint();
265  scene->GetGLScene()->CalcBoundingBox();
266  const TGLBoundingBox& bb = scene->GetGLScene()->BoundingBox();
267  if (bb.IsEmpty())
268  return 0;
269 
270  TGLPlaneSet_t ps;
271  bb.PlaneSet(ps);
272  TEveVector inn = in;
273  inn.Normalize();
274  inn *= 10000;
275  TGLLine3 line(TGLVertex3(), TGLVertex3(inn.fX, inn.fY, inn.fZ));
276  std::vector<float> res;
277  for (TGLPlaneSet_i i = ps.begin(); i != ps.end(); ++i) {
278  std::pair<Bool_t, TGLVertex3> r = Intersection(*i, line, false);
279  if (r.first) {
280  TGLVector3 vr(r.second.X(), r.second.Y(), r.second.Z());
281  res.push_back(vr.Mag());
282  }
283  }
284  std::sort(res.begin(), res.end());
285  return res.front();
286  }
287 
288  void setBBoxClipped(TGLBoundingBox& bbox, TEveVector dir, TEveVector b0, TEveVector b1, float fac) {
289  dir *= fac;
290  b0 *= fac;
291  b1 *= fac;
292 
293  TEveVectorD bb[8];
294  bb[0] += b0;
295  bb[0] += b1;
296  bb[1] -= b0;
297  bb[1] += b1;
298  bb[2] -= b0;
299  bb[2] -= b1;
300  bb[3] += b0;
301  bb[3] -= b1;
302 
303  for (int i = 4; i < 8; ++i)
304  bb[i] = dir;
305 
306  bb[0 + 4] += b0;
307  bb[0 + 4] += b1;
308  bb[1 + 4] -= b0;
309  bb[1 + 4] += b1;
310  bb[2 + 4] -= b0;
311  bb[2 + 4] -= b1;
312  bb[3 + 4] += b0;
313  bb[3 + 4] -= b1;
314 
315  TGLVertex3 bbv[8];
316  for (int i = 0; i < 8; ++i) {
317  bbv[i].Set(bb[i].fX, bb[i].fY, bb[i].fZ);
318  }
319  bbox.Set(bbv);
320  }
321 } // namespace
322 
323 void FW3DViewBase::updateClipPlanes(bool resetCamera) {
324  // TEveScene* gs = (TEveScene*)gEve->GetScenes()->FindChild(TString("TopGeoNodeScene"));
325  //printf("node scene %p\n", gs);
326  if (m_clipEnable.value()) {
327  float theta = m_clipTheta.value();
328  float phi = m_clipPhi.value();
329  using namespace TMath;
330  TEveVector in(Sin(theta) * Cos(phi), Sin(theta) * Sin(phi), Cos(theta));
331 
332  // one side of cross section plane is paralel to XY plane
333  TEveVector normXY(0., 1., 0);
334  TEveVector b0 = in.Cross(normXY);
335  TEveVector b1 = in.Cross(b0);
336 
337  float delta1 = m_clipDelta1.value();
338  float delta2 = m_clipDelta2.value();
339  b0.Normalize();
340  b0 *= Sin(delta1);
341  b1.Normalize();
342  b1 *= Sin(delta2);
343 
344  TEveVector c[4];
345  c[0] += b0;
346  c[0] += b1;
347  c[1] -= b0;
348  c[1] += b1;
349  c[2] -= b0;
350  c[2] -= b1;
351  c[3] += b0;
352  c[3] -= b1;
353  for (int i = 0; i < 4; ++i)
354  c[i] += in;
355 
356  TEveVector aOff = in;
357  aOff.NegateXYZ();
358  aOff.Normalize();
359  aOff *= m_clipAppexOffset.value();
360  ((Clipsi*)m_glClip)->SetAppexOffset(aOff);
361 
362  ((Clipsi*)m_glClip)->SetPlaneInfo(&c[0]);
363 
364  if (resetCamera) {
365  TGLBoundingBox bbox;
366  float es = getBBoxLineLength(eventScene(), in);
367  float gs = getBBoxLineLength(geoScene(), in);
368  setBBoxClipped(bbox, in, b0, b1, TMath::Max(es, gs));
369 
370  /*
371  TEvePointSet* bmarker = new TEvePointSet(8);
372  bmarker->Reset(4);
373  bmarker->SetName("bbox");
374  bmarker->SetMarkerColor(kOrange);
375  bmarker->SetMarkerStyle(3);
376  bmarker->SetMarkerSize(0.2);
377  for (int i = 0; i < 8; ++i)
378  bmarker->SetPoint(i, bbox[i].X(), bbox[i].Y(), bbox[i].Z());
379  eventScene()->AddElement(bmarker);
380  */
381 
382  TGLCamera& cam = viewerGL()->CurrentCamera();
383  cam.SetExternalCenter(true);
384  cam.SetCenterVec(bbox.Center().X(), bbox.Center().Y(), bbox.Center().Z());
385  cam.Setup(bbox, true);
386  } else {
387  eventScene()->Repaint();
388  }
389  }
390 
391  gEve->Redraw3D();
392 }
393 
395  if (!m_clipEnable.value())
396  return;
397 
398  long lmin = m_clipHGCalLayerBegin.value();
399  long lmax = m_clipHGCalLayerEnd.value();
400 
401  // real min, max
402  long r_lmin = std::min(lmin, lmax);
403  long r_lmax = std::max(lmin, lmax);
404 
405  TEveElementList const* const HGCalEE = m_geometry->getHGCalEE();
406  if (HGCalEE) {
407  for (const auto& it : HGCalEE->RefChildren()) {
408  std::string title(it->GetElementTitle());
409  int layer = stoi(title.substr(title.length() - 2));
410  it->SetRnrState(layer >= r_lmin && layer <= r_lmax);
411  }
412  }
413 
414  TEveElementList const* const HGCalHSi = m_geometry->getHGCalHSi();
415  if (HGCalHSi) {
416  for (const auto& it : HGCalHSi->RefChildren()) {
417  std::string title(it->GetElementTitle());
418  int layer = stoi(title.substr(title.length() - 2));
419  it->SetRnrState(layer >= r_lmin && layer <= r_lmax);
420  }
421  }
422 
423  TEveElementList const* const HGCalHSc = m_geometry->getHGCalHSc();
424  if (HGCalHSc) {
425  for (const auto& it : HGCalHSc->RefChildren()) {
426  std::string title(it->GetElementTitle());
427  int layer = stoi(title.substr(title.length() - 2));
428  it->SetRnrState(layer >= r_lmin && layer <= r_lmax);
429  }
430  }
431 
432  gEve->Redraw3D();
433 }
434 
435 //______________________________________________________________________________
437  // take care of parameters
438  FWEveView::addTo(iTo);
439  TGLPerspectiveCamera* camera = dynamic_cast<TGLPerspectiveCamera*>(&(viewerGL()->CurrentCamera()));
440  if (camera)
441  addToPerspectiveCamera(camera, "Plain3D", iTo);
442 }
443 
444 //______________________________________________________________________________
446  // take care of parameters
447  FWEveView::setFrom(iFrom);
448 
449  TGLPerspectiveCamera* camera = dynamic_cast<TGLPerspectiveCamera*>(&(viewerGL()->CurrentCamera()));
450  if (camera)
451  setFromPerspectiveCamera(camera, "Plain3D", iFrom);
452 
453  if (iFrom.version() < 5) {
454  // transparency moved to common preferences in FWEveView version 5
455  std::string tName("Detector Transparency");
456  std::istringstream s(iFrom.valueForKey(tName)->value());
457  int transp;
458  s >> transp;
459  context().colorManager()->setGeomTransparency(transp, false);
460  }
461 }
462 
464 
465 void FW3DViewBase::setCurrentDMTVertex(double x, double y, double z) {
467  printf("ERROR!!!! FW3DViewBase::setCurrentDMTVertex \n");
468 
469  m_DMTline->SetPoint(m_DMT->m_action, x, y, z);
470  m_DMTline->ElementChanged();
471  viewerGL()->RequestDraw();
472 
473  m_DMT->refCurrentVertex().Set(x, y, z);
474  m_DMT->resetAction();
475 }
476 
479 
480  gui.requestTab("Detector")
495 
496  gui.requestTab("Clipping")
505 
506  gui.requestTab("Style").separator();
507  gui.getTabContainer()->AddFrame(
508  new TGTextButton(gui.getTabContainer(),
509  "Root controls",
510  Form("TEveGedEditor::SpawnNewEditor((TGLViewer*)0x%lx)", (unsigned long)viewerGL())));
511 
512  gui.requestTab("Tools").addParam(&m_cameraType).separator();
513  gui.getTabContainer()->AddFrame(m_DMT->buildGUI(gui.getTabContainer()),
514  new TGLayoutHints(kLHintsExpandX, 2, 2, 2, 2));
515 }
516 
518  if (x && m_ecalBarrel->GetPlex()->Size() == 0) {
519  const FWGeometry* geom = context().getGeom();
520  std::vector<unsigned int> ids =
521  geom->getMatchedIds(FWGeometry::Detector::Ecal, FWGeometry::SubDetector::PixelBarrel);
522  m_ecalBarrel->Reset(TEveBoxSet::kBT_FreeBox, true, ids.size());
523  for (std::vector<unsigned int>::iterator it = ids.begin(); it != ids.end(); ++it) {
524  const float* cor = context().getGeom()->getCorners(*it);
525  m_ecalBarrel->AddBox(cor);
526  }
527  m_ecalBarrel->RefitPlex();
528  }
529 
530  if (m_ecalBarrel->GetRnrSelf() != x) {
531  m_ecalBarrel->SetRnrSelf(x);
532  gEve->Redraw3D();
533  }
534 
535  // disable enable grid in 3DView
536  if (typeId() == FWViewType::k3D) {
537  TEveElement* calo = eventScene()->FindChild("calo barrel");
538  if (calo) {
539  TEveCalo3D* c3d = dynamic_cast<TEveCalo3D*>(calo);
540  c3d->SetRnrFrame(!x, !x);
541  c3d->ElementChanged();
542  }
543  }
544 }
FWDoubleParameter m_clipTheta
Definition: FW3DViewBase.h:100
bool requestGLHandlerPick() const override
void updateHGCalVisibility(bool)
FWBoolParameter m_showMtdBarrel
Definition: FW3DViewBase.h:88
Basic3DVector & operator=(const Basic3DVector &)=default
Assignment operator.
TEveScene * eventScene()
Definition: FWEveView.h:79
void showEcalBarrel(bool)
void showMuonBarrel(long)
void rnrStyle(long)
FWBoolParameter m_showMuonEndcap
Definition: FW3DViewBase.h:80
void showMuonBarrel(bool)
void showMtdBarrel(bool)
void setClip(float eta, float phi)
void showMtdEndcap(bool)
TEveElementList const *const getHGCalHSc()
FWBoolParameter m_showHGCalEE
Definition: FW3DViewBase.h:85
base
Main Program
Definition: newFWLiteAna.py:92
void addTo(FWConfiguration &) const override
ViewerParameterGUI & requestTab(const char *)
void showTrackerEndcap(bool)
ViewerParameterGUI & separator()
TGCompositeFrame * buildGUI(TGCompositeFrame *p)
void setCurrentDMTVertex(double x, double y, double z)
FWBoolParameter m_showTrackerBarrel
Definition: FW3DViewBase.h:83
FW3DViewDistanceMeasureTool * m_DMT
Definition: FW3DViewBase.h:108
void selectable(bool)
void showMuonBarrelFull(bool)
void setCameraType(long)
Definition: Electron.h:6
FWDoubleParameter m_clipPhi
Definition: FW3DViewBase.h:101
void showTrackerBarrel(bool)
~FW3DViewBase() override
void enableSceneClip(bool)
void setGeomTransparency(Color_t idx, bool projectedType)
const std::string & value(unsigned int iIndex=0) const
void showMuonEndcap(bool)
FWGeometry * getGeom() const
Definition: Context.h:72
FWEnumParameter m_rnrStyle
Definition: FW3DViewBase.h:94
const float * getCorners(unsigned int id) const
Definition: FWGeometry.cc:439
void updateClipPlanes(bool resetCamera)
FWBoolParameter m_clipEnable
Definition: FW3DViewBase.h:99
TEveElementList const *const getHGCalHSi()
FWBoolParameter m_showPixelEndcap
Definition: FW3DViewBase.h:82
FWDoubleParameter m_clipDelta1
Definition: FW3DViewBase.h:102
bool addEntry(Long_t id, const std::string &txt)
virtual void resetCamera()
Definition: FWEveView.cc:224
void setContext(const fireworks::Context &) override
void populateController(ViewerParameterGUI &) const override
FWLongParameter m_clipHGCalLayerBegin
Definition: FW3DViewBase.h:105
const fireworks::Context & context()
Definition: FWEveView.h:64
FWBoolParameter m_showHGCalHSi
Definition: FW3DViewBase.h:86
void populateController(ViewerParameterGUI &) const override
Definition: FWEveView.cc:466
void setFrom(const FWConfiguration &) override
Definition: FWEveView.cc:307
void setFromPerspectiveCamera(TGLPerspectiveCamera *, const std::string &, const FWConfiguration &)
Definition: FWEveView.cc:420
void showPixelBarrel(bool)
FWBoolParameter m_showHGCalHSc
Definition: FW3DViewBase.h:87
FWBoolParameter m_showEcalBarrel
Definition: FW3DViewBase.h:92
TEveScene * geoScene()
Definition: FWEveView.h:80
TGLClip * m_glClip
Definition: FW3DViewBase.h:76
ViewerParameterGUI & addParam(const FWParameterBase *)
TGCompositeFrame * getTabContainer()
void showPixelEndcap(bool)
const FWConfiguration * valueForKey(const std::string &iKey) const
FWBoolParameter m_showMtdEndcap
Definition: FW3DViewBase.h:89
TEveElementList const *const getHGCalEE()
TEveLine * m_DMTline
Definition: FW3DViewBase.h:109
float x
TEveBoxSet * m_ecalBarrel
Definition: FW3DViewBase.h:91
FWEnumParameter m_showMuonBarrel
Definition: FW3DViewBase.h:79
FW3DViewBase(TEveWindowSlot *, FWViewType::EType, unsigned int version=8)
FW3DViewGeometry * m_geometry
Definition: FW3DViewBase.h:75
sigc::signal< void(T)> changed_
Definition: AbsArchive.cc:46
FWViewType::EType typeId() const
Definition: FWViewBase.h:42
void addToPerspectiveCamera(TGLPerspectiveCamera *, const std::string &, FWConfiguration &) const
Definition: FWEveView.cc:397
static constexpr float b0
void addTo(FWConfiguration &) const override
Definition: FWEveView.cc:291
FWBoolParameter m_selectable
Definition: FW3DViewBase.h:95
FWLongParameter m_clipHGCalLayerEnd
Definition: FW3DViewBase.h:106
FWEnumParameter m_cameraType
Definition: FW3DViewBase.h:97
Definition: memstream.h:15
void setFrom(const FWConfiguration &) override
TGLViewer * viewerGL() const
Definition: FWEveView.cc:177
FWLongParameter m_clipAppexOffset
Definition: FW3DViewBase.h:104
Geom::Theta< T > theta() const
virtual void setContext(const fireworks::Context &x)
Definition: FWEveView.cc:227
FWBoolParameter m_showTrackerEndcap
Definition: FW3DViewBase.h:84
FWColorManager * colorManager() const
Definition: Context.h:58
Definition: Common.h:9
FWDoubleParameter m_clipDelta2
Definition: FW3DViewBase.h:103
static constexpr float b1
unsigned int version() const
FWBoolParameter m_showPixelBarrel
Definition: FW3DViewBase.h:81