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