CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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_ecalBarrel(nullptr),
114  m_showEcalBarrel(this, "Show Ecal Barrel", false),
115  m_rnrStyle(this, "Render Style", 0l, 0l, 2l),
116  m_selectable(this, "Enable Tooltips", false),
117  m_cameraType(this, "Camera Type", 0l, 0l, 5l),
118  m_clipEnable(this, "Enable Clip", false),
119  m_clipTheta(this, "Clip Theta", 0.0, -5.0, 5.0),
120  m_clipPhi(this, "Clip Phi", 0.0, -2.0, 2.0),
121  m_clipDelta1(this, "Clip Delta1", 0.2, 0.01, 2),
122  m_clipDelta2(this, "Clip Delta2", 0.2, 0.01, 2),
123  m_clipAppexOffset(this, "Appex Offset", 10l, 0l, 50l),
124  m_clipHGCalLayerBegin(this, "HGCal Lower Bound", 1l, 1l, 52l),
125  m_clipHGCalLayerEnd(this, "HGCal Upper Bound", 52l, 1l, 52l),
126  m_DMT(nullptr),
127  m_DMTline(nullptr) {
128  viewerGL()->SetCurrentCamera(TGLViewer::kCameraPerspXOZ);
130 
131  m_showMuonBarrel.addEntry(0, "Hide");
132  m_showMuonBarrel.addEntry(1, "Simplified");
133  m_showMuonBarrel.addEntry(2, "Full");
134  m_showMuonBarrel.changed_.connect(std::bind(&FW3DViewBase::showMuonBarrel, this, std::placeholders::_1));
135 
136  m_rnrStyle.addEntry(TGLRnrCtx::kFill, "Fill");
137  m_rnrStyle.addEntry(TGLRnrCtx::kOutline, "Outline");
138  m_rnrStyle.addEntry(TGLRnrCtx::kWireFrame, "WireFrame");
139  m_rnrStyle.changed_.connect(std::bind(&FW3DViewBase::rnrStyle, this, std::placeholders::_1));
140 
141  m_selectable.changed_.connect(std::bind(&FW3DViewBase::selectable, this, std::placeholders::_1));
142 
143  m_cameraType.addEntry(TGLViewer::kCameraPerspXOZ, "PerspXOZ");
144  m_cameraType.addEntry(TGLViewer::kCameraOrthoXOY, "OrthoXOY");
145  m_cameraType.addEntry(TGLViewer::kCameraOrthoXOZ, "OrthoXOZ");
146  m_cameraType.addEntry(TGLViewer::kCameraOrthoZOY, "OrthoZOY");
147  m_cameraType.addEntry(TGLViewer::kCameraOrthoXnOY, "OrthoXnOY");
148  m_cameraType.addEntry(TGLViewer::kCameraOrthoXnOZ, "OrthoXnOZ");
149  m_cameraType.addEntry(TGLViewer::kCameraOrthoZnOY, "OrthoZnOY");
150  m_cameraType.changed_.connect(std::bind(&FW3DViewBase::setCameraType, this, std::placeholders::_1));
151 
152  m_clipEnable.changed_.connect(std::bind(&FW3DViewBase::enableSceneClip, this, std::placeholders::_1));
153  m_clipTheta.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
154  m_clipPhi.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
155  m_clipDelta1.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
156  m_clipDelta2.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
157  m_clipAppexOffset.changed_.connect(std::bind(&FW3DViewBase::updateClipPlanes, this, false));
158  m_clipHGCalLayerBegin.changed_.connect(std::bind(&FW3DViewBase::updateHGCalVisibility, this, false));
159  m_clipHGCalLayerEnd.changed_.connect(std::bind(&FW3DViewBase::updateHGCalVisibility, this, false));
160 
161  m_ecalBarrel = new TEveBoxSet("ecalBarrel");
162  m_ecalBarrel->UseSingleColor();
163  m_ecalBarrel->SetMainColor(kAzure + 10);
164  m_ecalBarrel->SetMainTransparency(98);
165  geoScene()->AddElement(m_ecalBarrel);
166 }
167 
169 
171  FWEveView::setContext(context);
172 
173  m_geometry = new FW3DViewGeometry(context);
174  geoScene()->AddElement(m_geometry);
175 
176  m_showPixelBarrel.changed_.connect(std::bind(&FW3DViewGeometry::showPixelBarrel, m_geometry, std::placeholders::_1));
177  m_showPixelEndcap.changed_.connect(std::bind(&FW3DViewGeometry::showPixelEndcap, m_geometry, std::placeholders::_1));
179  std::bind(&FW3DViewGeometry::showTrackerBarrel, m_geometry, std::placeholders::_1));
181  std::bind(&FW3DViewGeometry::showTrackerEndcap, m_geometry, std::placeholders::_1));
182  m_showHGCalEE.changed_.connect(std::bind(&FW3DViewGeometry::showHGCalEE, m_geometry, std::placeholders::_1));
183  m_showHGCalHSi.changed_.connect(std::bind(&FW3DViewGeometry::showHGCalHSi, m_geometry, std::placeholders::_1));
184  m_showHGCalHSc.changed_.connect(std::bind(&FW3DViewGeometry::showHGCalHSc, m_geometry, std::placeholders::_1));
185  m_showMuonEndcap.changed_.connect(std::bind(&FW3DViewGeometry::showMuonEndcap, m_geometry, std::placeholders::_1));
186  m_showEcalBarrel.changed_.connect(std::bind(&FW3DViewBase::showEcalBarrel, this, std::placeholders::_1));
187 
188  // don't clip event scene -- ideally, would have TGLClipNoClip in root
189  TGLClipPlane* c = new TGLClipPlane();
190  c->Setup(TGLVector3(1e10, 0, 0), TGLVector3(-1, 0, 0));
191  eventScene()->GetGLScene()->SetClip(c);
192 
193  m_DMTline = new TEveLine();
194  m_DMTline->SetLineColor(1016);
195  m_DMTline->SetLineStyle(5);
196 
197  m_DMTline->SetPoint(0, 0, 0, 0);
198  m_DMTline->SetPoint(1, 0, 0, 0);
199  eventScene()->AddElement(m_DMTline);
201 }
202 
204  if (m_geometry) {
205  m_geometry->showMuonBarrel(x == 1);
207  }
208 }
209 
211  viewerGL()->RefCamera(TGLViewer::ECameraType(x)).IncTimeStamp();
212  viewerGL()->SetCurrentCamera(TGLViewer::ECameraType(x));
213 
214  //if (viewerGL()->CurrentCamera().IsOrthographic())
215  // ((TGLOrthoCamera*)(&viewerGL()->CurrentCamera()))->SetEnableRotate(1);
216 }
217 
219  geoScene()->GetGLScene()->SetStyle(x);
220  viewerGL()->Changed();
221  gEve->Redraw3D();
222 }
223 
224 void FW3DViewBase::selectable(bool x) { geoScene()->GetGLScene()->SetSelectable(x); }
226  if (m_glClip == nullptr) {
227  m_glClip = new Clipsi(viewerGL()->GetRnrCtx());
228 
229  m_glClip->SetMode(TGLClip::kOutside);
230  }
231 
232  geoScene()->GetGLScene()->SetClip(x ? m_glClip : nullptr);
233  for (TEveElement::List_i it = gEve->GetScenes()->BeginChildren(); it != gEve->GetScenes()->EndChildren(); ++it) {
234  if (strncmp((*it)->GetElementName(), "TopGeoNodeScene", 15) == 0)
235  ((TEveScene*)(*it))->GetGLScene()->SetClip(x ? m_glClip : nullptr);
236  }
237  eventScene()->GetGLScene()->SetClip(x ? m_glClip : nullptr);
238  updateClipPlanes(true);
239  updateHGCalVisibility(false);
240  viewerGL()->RequestDraw();
241 }
242 
243 void FW3DViewBase::setClip(float theta, float phi) {
244  // called from popup menu via FWGUIManager
245 
246  // limit to 2 decimals, else TGNumber entry in the view controller shows only last 5 irrelevant digits
247  double base = 100.0;
248  int thetaInt = theta * base;
249  int phiInt = phi * base;
250  m_clipTheta.set(thetaInt / base);
251  m_clipPhi.set(phiInt / base);
252  m_clipEnable.set(true);
253 }
254 
255 namespace {
256  float getBBoxLineLength(TEveScene* scene, TEveVector in) {
257  if (!scene->NumChildren())
258  return 0;
259 
260  scene->Repaint();
261  scene->GetGLScene()->CalcBoundingBox();
262  const TGLBoundingBox& bb = scene->GetGLScene()->BoundingBox();
263  if (bb.IsEmpty())
264  return 0;
265 
266  TGLPlaneSet_t ps;
267  bb.PlaneSet(ps);
268  TEveVector inn = in;
269  inn.Normalize();
270  inn *= 10000;
271  TGLLine3 line(TGLVertex3(), TGLVertex3(inn.fX, inn.fY, inn.fZ));
272  std::vector<float> res;
273  for (TGLPlaneSet_i i = ps.begin(); i != ps.end(); ++i) {
274  std::pair<Bool_t, TGLVertex3> r = Intersection(*i, line, false);
275  if (r.first) {
276  TGLVector3 vr(r.second.X(), r.second.Y(), r.second.Z());
277  res.push_back(vr.Mag());
278  }
279  }
280  std::sort(res.begin(), res.end());
281  return res.front();
282  }
283 
284  void setBBoxClipped(TGLBoundingBox& bbox, TEveVector dir, TEveVector b0, TEveVector b1, float fac) {
285  dir *= fac;
286  b0 *= fac;
287  b1 *= fac;
288 
289  TEveVectorD bb[8];
290  bb[0] += b0;
291  bb[0] += b1;
292  bb[1] -= b0;
293  bb[1] += b1;
294  bb[2] -= b0;
295  bb[2] -= b1;
296  bb[3] += b0;
297  bb[3] -= b1;
298 
299  for (int i = 4; i < 8; ++i)
300  bb[i] = dir;
301 
302  bb[0 + 4] += b0;
303  bb[0 + 4] += b1;
304  bb[1 + 4] -= b0;
305  bb[1 + 4] += b1;
306  bb[2 + 4] -= b0;
307  bb[2 + 4] -= b1;
308  bb[3 + 4] += b0;
309  bb[3 + 4] -= b1;
310 
311  TGLVertex3 bbv[8];
312  for (int i = 0; i < 8; ++i) {
313  bbv[i].Set(bb[i].fX, bb[i].fY, bb[i].fZ);
314  }
315  bbox.Set(bbv);
316  }
317 } // namespace
318 
319 void FW3DViewBase::updateClipPlanes(bool resetCamera) {
320  // TEveScene* gs = (TEveScene*)gEve->GetScenes()->FindChild(TString("TopGeoNodeScene"));
321  //printf("node scene %p\n", gs);
322  if (m_clipEnable.value()) {
323  float theta = m_clipTheta.value();
324  float phi = m_clipPhi.value();
325  using namespace TMath;
326  TEveVector in(Sin(theta) * Cos(phi), Sin(theta) * Sin(phi), Cos(theta));
327 
328  // one side of cross section plane is paralel to XY plane
329  TEveVector normXY(0., 1., 0);
330  TEveVector b0 = in.Cross(normXY);
331  TEveVector b1 = in.Cross(b0);
332 
333  float delta1 = m_clipDelta1.value();
334  float delta2 = m_clipDelta2.value();
335  b0.Normalize();
336  b0 *= Sin(delta1);
337  b1.Normalize();
338  b1 *= Sin(delta2);
339 
340  TEveVector c[4];
341  c[0] += b0;
342  c[0] += b1;
343  c[1] -= b0;
344  c[1] += b1;
345  c[2] -= b0;
346  c[2] -= b1;
347  c[3] += b0;
348  c[3] -= b1;
349  for (int i = 0; i < 4; ++i)
350  c[i] += in;
351 
352  TEveVector aOff = in;
353  aOff.NegateXYZ();
354  aOff.Normalize();
355  aOff *= m_clipAppexOffset.value();
356  ((Clipsi*)m_glClip)->SetAppexOffset(aOff);
357 
358  ((Clipsi*)m_glClip)->SetPlaneInfo(&c[0]);
359 
360  if (resetCamera) {
361  TGLBoundingBox bbox;
362  float es = getBBoxLineLength(eventScene(), in);
363  float gs = getBBoxLineLength(geoScene(), in);
364  setBBoxClipped(bbox, in, b0, b1, TMath::Max(es, gs));
365 
366  /*
367  TEvePointSet* bmarker = new TEvePointSet(8);
368  bmarker->Reset(4);
369  bmarker->SetName("bbox");
370  bmarker->SetMarkerColor(kOrange);
371  bmarker->SetMarkerStyle(3);
372  bmarker->SetMarkerSize(0.2);
373  for (int i = 0; i < 8; ++i)
374  bmarker->SetPoint(i, bbox[i].X(), bbox[i].Y(), bbox[i].Z());
375  eventScene()->AddElement(bmarker);
376  */
377 
378  TGLCamera& cam = viewerGL()->CurrentCamera();
379  cam.SetExternalCenter(true);
380  cam.SetCenterVec(bbox.Center().X(), bbox.Center().Y(), bbox.Center().Z());
381  cam.Setup(bbox, true);
382  } else {
383  eventScene()->Repaint();
384  }
385  }
386 
387  gEve->Redraw3D();
388 }
389 
391  if (!m_clipEnable.value())
392  return;
393 
394  long lmin = m_clipHGCalLayerBegin.value();
395  long lmax = m_clipHGCalLayerEnd.value();
396 
397  // real min, max
398  long r_lmin = std::min(lmin, lmax);
399  long r_lmax = std::max(lmin, lmax);
400 
401  TEveElementList const* const HGCalEE = m_geometry->getHGCalEE();
402  if (HGCalEE) {
403  for (const auto& it : HGCalEE->RefChildren()) {
404  std::string title(it->GetElementTitle());
405  int layer = stoi(title.substr(title.length() - 2));
406  it->SetRnrState(layer >= r_lmin && layer <= r_lmax);
407  }
408  }
409 
410  TEveElementList const* const HGCalHSi = m_geometry->getHGCalHSi();
411  if (HGCalHSi) {
412  for (const auto& it : HGCalHSi->RefChildren()) {
413  std::string title(it->GetElementTitle());
414  int layer = stoi(title.substr(title.length() - 2));
415  it->SetRnrState(layer >= r_lmin && layer <= r_lmax);
416  }
417  }
418 
419  TEveElementList const* const HGCalHSc = m_geometry->getHGCalHSc();
420  if (HGCalHSc) {
421  for (const auto& it : HGCalHSc->RefChildren()) {
422  std::string title(it->GetElementTitle());
423  int layer = stoi(title.substr(title.length() - 2));
424  it->SetRnrState(layer >= r_lmin && layer <= r_lmax);
425  }
426  }
427 
428  gEve->Redraw3D();
429 }
430 
431 //______________________________________________________________________________
433  // take care of parameters
434  FWEveView::addTo(iTo);
435  TGLPerspectiveCamera* camera = dynamic_cast<TGLPerspectiveCamera*>(&(viewerGL()->CurrentCamera()));
436  if (camera)
437  addToPerspectiveCamera(camera, "Plain3D", iTo);
438 }
439 
440 //______________________________________________________________________________
442  // take care of parameters
443  FWEveView::setFrom(iFrom);
444 
445  TGLPerspectiveCamera* camera = dynamic_cast<TGLPerspectiveCamera*>(&(viewerGL()->CurrentCamera()));
446  if (camera)
447  setFromPerspectiveCamera(camera, "Plain3D", iFrom);
448 
449  if (iFrom.version() < 5) {
450  // transparency moved to common preferences in FWEveView version 5
451  std::string tName("Detector Transparency");
452  std::istringstream s(iFrom.valueForKey(tName)->value());
453  int transp;
454  s >> transp;
455  context().colorManager()->setGeomTransparency(transp, false);
456  }
457 }
458 
460 
461 void FW3DViewBase::setCurrentDMTVertex(double x, double y, double z) {
463  printf("ERROR!!!! FW3DViewBase::setCurrentDMTVertex \n");
464 
465  m_DMTline->SetPoint(m_DMT->m_action, x, y, z);
466  m_DMTline->ElementChanged();
467  viewerGL()->RequestDraw();
468 
469  m_DMT->refCurrentVertex().Set(x, y, z);
470  m_DMT->resetAction();
471 }
472 
475 
476  gui.requestTab("Detector")
489 
490  gui.requestTab("Clipping")
499 
500  gui.requestTab("Style").separator();
501  gui.getTabContainer()->AddFrame(
502  new TGTextButton(gui.getTabContainer(),
503  "Root controls",
504  Form("TEveGedEditor::SpawnNewEditor((TGLViewer*)0x%lx)", (unsigned long)viewerGL())));
505 
506  gui.requestTab("Tools").addParam(&m_cameraType).separator();
507  gui.getTabContainer()->AddFrame(m_DMT->buildGUI(gui.getTabContainer()),
508  new TGLayoutHints(kLHintsExpandX, 2, 2, 2, 2));
509 }
510 
512  if (x && m_ecalBarrel->GetPlex()->Size() == 0) {
513  const FWGeometry* geom = context().getGeom();
514  std::vector<unsigned int> ids =
515  geom->getMatchedIds(FWGeometry::Detector::Ecal, FWGeometry::SubDetector::PixelBarrel);
516  m_ecalBarrel->Reset(TEveBoxSet::kBT_FreeBox, true, ids.size());
517  for (std::vector<unsigned int>::iterator it = ids.begin(); it != ids.end(); ++it) {
518  const float* cor = context().getGeom()->getCorners(*it);
519  m_ecalBarrel->AddBox(cor);
520  }
521  m_ecalBarrel->RefitPlex();
522  }
523 
524  if (m_ecalBarrel->GetRnrSelf() != x) {
525  m_ecalBarrel->SetRnrSelf(x);
526  gEve->Redraw3D();
527  }
528 
529  // disable enable grid in 3DView
530  if (typeId() == FWViewType::k3D) {
531  TEveElement* calo = eventScene()->FindChild("calo barrel");
532  if (calo) {
533  TEveCalo3D* c3d = dynamic_cast<TEveCalo3D*>(calo);
534  c3d->SetRnrFrame(!x, !x);
535  c3d->ElementChanged();
536  }
537  }
538 }
tuple base
Main Program
Definition: newFWLiteAna.py:92
FWDoubleParameter m_clipTheta
Definition: FW3DViewBase.h:98
bool requestGLHandlerPick() const override
void updateHGCalVisibility(bool)
const edm::EventSetup & c
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 setClip(float eta, float phi)
TEveElementList const *const getHGCalHSc()
FWBoolParameter m_showHGCalEE
Definition: FW3DViewBase.h:85
FWColorManager * colorManager() const
Definition: Context.h:58
void addTo(FWConfiguration &) const override
ViewerParameterGUI & requestTab(const char *)
void showTrackerEndcap(bool)
ViewerParameterGUI & separator()
Geom::Theta< T > theta() const
TGCompositeFrame * buildGUI(TGCompositeFrame *p)
unsigned int version() const
void setCurrentDMTVertex(double x, double y, double z)
FWBoolParameter m_showTrackerBarrel
Definition: FW3DViewBase.h:83
TGLViewer * viewerGL() const
Definition: FWEveView.cc:177
FW3DViewDistanceMeasureTool * m_DMT
Definition: FW3DViewBase.h:106
void selectable(bool)
void showMuonBarrelFull(bool)
void setCameraType(long)
FWDoubleParameter m_clipPhi
Definition: FW3DViewBase.h:99
constexpr std::array< uint8_t, layerIndexSize > layer
void showTrackerBarrel(bool)
~FW3DViewBase() override
void enableSceneClip(bool)
void setGeomTransparency(Color_t idx, bool projectedType)
void showMuonEndcap(bool)
FWEnumParameter m_rnrStyle
Definition: FW3DViewBase.h:92
void updateClipPlanes(bool resetCamera)
FWBoolParameter m_clipEnable
Definition: FW3DViewBase.h:97
printf("params %d %f %f %f\n", minT, eps, errmax, chi2max)
TEveElementList const *const getHGCalHSi()
FWBoolParameter m_showPixelEndcap
Definition: FW3DViewBase.h:82
FWDoubleParameter m_clipDelta1
Definition: FW3DViewBase.h:100
bool addEntry(Long_t id, const std::string &txt)
void setContext(const fireworks::Context &) override
void populateController(ViewerParameterGUI &) const override
FWLongParameter m_clipHGCalLayerBegin
Definition: FW3DViewBase.h:103
const std::string & value(unsigned int iIndex=0) const
const fireworks::Context & context()
Definition: FWEveView.h:64
FWBoolParameter m_showHGCalHSi
Definition: FW3DViewBase.h:86
const float * getCorners(unsigned int id) const
Definition: FWGeometry.cc:461
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:90
TEveScene * geoScene()
Definition: FWEveView.h:80
TGLClip * m_glClip
Definition: FW3DViewBase.h:76
ViewerParameterGUI & addParam(const FWParameterBase *)
TGCompositeFrame * getTabContainer()
void showPixelEndcap(bool)
std::vector< unsigned int > getMatchedIds(Detector det, SubDetector subdet) const
Definition: FWGeometry.cc:254
TEveElementList const *const getHGCalEE()
TEveLine * m_DMTline
Definition: FW3DViewBase.h:107
float x
TEveBoxSet * m_ecalBarrel
Definition: FW3DViewBase.h:89
FWEnumParameter m_showMuonBarrel
Definition: FW3DViewBase.h:79
FW3DViewBase(TEveWindowSlot *, FWViewType::EType, unsigned int version=8)
FW3DViewGeometry * m_geometry
Definition: FW3DViewBase.h:75
const FWConfiguration * valueForKey(const std::string &iKey) const
sigc::signal< void(T)> changed_
static constexpr float b0
void addTo(FWConfiguration &) const override
Definition: FWEveView.cc:291
FWBoolParameter m_selectable
Definition: FW3DViewBase.h:93
FWLongParameter m_clipHGCalLayerEnd
Definition: FW3DViewBase.h:104
FWEnumParameter m_cameraType
Definition: FW3DViewBase.h:95
void setFrom(const FWConfiguration &) override
FWLongParameter m_clipAppexOffset
Definition: FW3DViewBase.h:102
FWGeometry * getGeom() const
Definition: Context.h:72
virtual void setContext(const fireworks::Context &x)
Definition: FWEveView.cc:227
FWBoolParameter m_showTrackerEndcap
Definition: FW3DViewBase.h:84
FWDoubleParameter m_clipDelta2
Definition: FW3DViewBase.h:101
static constexpr float b1
FWBoolParameter m_showPixelBarrel
Definition: FW3DViewBase.h:81
FWViewType::EType typeId() const
Definition: FWViewBase.h:42
void addToPerspectiveCamera(TGLPerspectiveCamera *, const std::string &, FWConfiguration &) const
Definition: FWEveView.cc:397