CMS 3D CMS Logo

FWRPZViewGeometry.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Core
4 // Class : FWRPZViewGeometry
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author: Alja Mrak-Tadel
10 // Created: Thu Mar 25 20:33:06 CET 2010
11 //
12 
13 // system include files
14 #include <iostream>
15 #include <cassert>
16 
17 // user include files
18 #include "TGeoBBox.h"
19 
20 #include "TEveElement.h"
21 #include "TEveCompound.h"
22 #include "TEveScene.h"
23 #include "TEvePointSet.h"
24 #include "TEveStraightLineSet.h"
25 #include "TEveGeoNode.h"
26 #include "TEveManager.h"
27 #include "TEveProjectionManager.h"
28 
34 
40 
41 //
42 //
43 //
44 // constants, enums and typedefs
45 //
46 
47 //
48 // static data member definitions
49 //
50 
51 //
52 // constructors and destructor
53 //
55  : FWViewGeometryList(context),
56 
57  m_rhoPhiGeo(nullptr),
58  m_rhoZGeo(nullptr),
59 
60  m_pixelBarrelElements(nullptr),
61  m_pixelEndcapElements(nullptr),
62  m_trackerBarrelElements(nullptr),
63  m_trackerEndcapElements(nullptr),
64  m_rpcEndcapElements(nullptr),
65  m_GEMElements(nullptr),
66  m_ME0Elements(nullptr) {
67  SetElementName("RPZGeomShared");
68 }
69 
70 // FWRPZViewGeometry::FWRPZViewGeometry(const FWRPZViewGeometry& rhs)
71 // {
72 // // do actual copying here;
73 // }
74 
76  m_rhoPhiGeo->DecDenyDestroy();
77  m_rhoZGeo->DecDenyDestroy();
78 }
79 
80 //______________________________________________________________________________
81 
83  assert(m_geom != nullptr);
84 
85  if (type == FWViewType::kRhoZ) {
86  AddElement(makeMuonGeometryRhoZ());
87  AddElement(makeCaloOutlineRhoZ());
88  } else {
89  AddElement(makeMuonGeometryRhoPhi());
90  AddElement(makeCaloOutlineRhoPhi());
91  }
92 }
93 
94 //______________________________________________________________________________
95 
97  using namespace fireworks;
98 
99  float ri = m_context.caloZ2() * tan(2 * atan(exp(-m_context.caloMaxEta())));
100 
101  TEveStraightLineSet* el = new TEveStraightLineSet("TrackerRhoZoutline");
102  el->SetPickable(kFALSE);
104 
105  el->AddLine(0, m_context.caloR1(), -m_context.caloZ1(), 0, m_context.caloR1(), m_context.caloZ1());
106  el->AddLine(0, -m_context.caloR1(), m_context.caloZ1(), 0, -m_context.caloR1(), -m_context.caloZ1());
107 
108  el->AddLine(0, -m_context.caloR2(), m_context.caloZ2(), 0, -ri, m_context.caloZ2());
109  el->AddLine(0, ri, m_context.caloZ2(), 0, m_context.caloR2(), m_context.caloZ2());
110 
111  el->AddLine(0, -m_context.caloR2(), -m_context.caloZ2(), 0, -ri, -m_context.caloZ2());
112  el->AddLine(0, ri, -m_context.caloZ2(), 0, m_context.caloR2(), -m_context.caloZ2());
113 
114  return el;
115 }
116 
118  TEveStraightLineSet* el = new TEveStraightLineSet("TrackerRhoPhi");
120 
122  const unsigned int nSegments = 100;
123  const double r = m_context.caloR1();
124  for (unsigned int i = 1; i <= nSegments; ++i)
125  el->AddLine(r * sin(TMath::TwoPi() / nSegments * (i - 1)),
126  r * cos(TMath::TwoPi() / nSegments * (i - 1)),
127  0,
128  r * sin(TMath::TwoPi() / nSegments * i),
129  r * cos(TMath::TwoPi() / nSegments * i),
130  0);
131 
132  TEvePointSet* ref = new TEvePointSet("reference");
133  ref->SetTitle("(0,0,0)");
134  ref->SetMarkerStyle(4);
135  ref->SetMarkerColor(kWhite);
136  ref->SetNextPoint(0., 0., 0.);
137  el->AddElement(ref);
138 
139  return el;
140 }
141 
142 //______________________________________________________________________________
143 
145  Int_t iWheel = 0;
146 
147  // rho-phi view
148  TEveCompound* container = new TEveCompound("MuonRhoPhi");
149 
150  for (Int_t iStation = 1; iStation <= 4; ++iStation) {
151  for (Int_t iSector = 1; iSector <= 14; ++iSector) {
152  if (iStation < 4 && iSector > 12)
153  continue;
154  DTChamberId id(iWheel, iStation, iSector);
155  TEveGeoShape* shape = m_geom->getEveShape(id.rawId());
156  if (shape) {
157  shape->SetMainColor(m_colorComp[kFWMuonBarrelLineColorIndex]->GetMainColor());
159  container->AddElement(shape);
160  }
161  }
162  }
163  return container;
164 }
165 namespace {
166 
167  //void addLibe
168 
169 }
170 //______________________________________________________________________________
171 
173  TEveElementList* container = new TEveElementList("MuonRhoZ");
174 
175  {
176  TEveCompound* dtContainer = new TEveCompound("DT");
177  for (Int_t iWheel = -2; iWheel <= 2; ++iWheel) {
178  for (Int_t iStation = 1; iStation <= 4; ++iStation) {
179  float min_rho(1000), max_rho(0), min_z(2000), max_z(-2000);
180 
181  // This will give us a quarter of DTs
182  // which is enough for our projection
183  for (Int_t iSector = 1; iSector <= 4; ++iSector) {
184  DTChamberId id(iWheel, iStation, iSector);
185  unsigned int rawid = id.rawId();
186  FWGeometry::IdToInfoItr det = m_geom->find(rawid);
187  if (det == m_geom->mapEnd())
188  return container;
189  estimateProjectionSizeDT(*det, min_rho, max_rho, min_z, max_z);
190  }
191  if (min_rho > max_rho || min_z > max_z)
192  continue;
193  TEveElement* se = makeShape(min_rho, max_rho, min_z, max_z);
195  dtContainer->AddElement(se);
196  se = makeShape(-max_rho, -min_rho, min_z, max_z);
198  dtContainer->AddElement(se);
199  }
200  }
201 
202  container->AddElement(dtContainer);
203  }
204  {
205  // addcsc
206  TEveCompound* cscContainer = new TEveCompound("CSC");
207  std::vector<CSCDetId> ids;
209  for (int station = 1; station <= 4; ++station) {
210  ids.push_back(CSCDetId(endcap, station, 2, 10, 0)); //outer ring up
211  ids.push_back(CSCDetId(endcap, station, 2, 11, 0)); //outer ring up
212 
213  ids.push_back(CSCDetId(endcap, station, 2, 28, 0)); //outer ring down
214  ids.push_back(CSCDetId(endcap, station, 2, 29, 0)); //outer ring down
215 
216  ids.push_back(CSCDetId(endcap, station, 1, 5, 0)); //inner ring up
217  ids.push_back(CSCDetId(endcap, station, 1, 6, 0)); //inner ring up
218 
219  int off = (station == 1) ? 10 : 0;
220  ids.push_back(CSCDetId(endcap, station, 1, 15 + off, 0)); //inner ring down
221  ids.push_back(CSCDetId(endcap, station, 1, 16 + off, 0)); //inner ring down
222  }
223  ids.push_back(CSCDetId(endcap, 1, 3, 10, 0)); // ring 3 down
224  ids.push_back(CSCDetId(endcap, 1, 3, 28, 0)); // ring 3 down
225  }
226  for (std::vector<CSCDetId>::iterator i = ids.begin(); i != ids.end(); ++i) {
227  unsigned int rawid = i->rawId();
228  TEveGeoShape* shape = m_geom->getEveShape(rawid);
229  if (!shape)
230  return cscContainer;
232  shape->SetName(Form(" e:%d r:%d s:%d chamber %d", i->endcap(), i->ring(), i->station(), i->chamber()));
233  cscContainer->AddElement(shape);
234  }
235  container->AddElement(cscContainer);
236  }
237 
238  return container;
239 }
240 
241 //______________________________________________________________________________
242 
243 TEveGeoShape* FWRPZViewGeometry::makeShape(double min_rho, double max_rho, double min_z, double max_z) {
244  TEveTrans t;
245  t(1, 1) = 1;
246  t(1, 2) = 0;
247  t(1, 3) = 0;
248  t(2, 1) = 0;
249  t(2, 2) = 1;
250  t(2, 3) = 0;
251  t(3, 1) = 0;
252  t(3, 2) = 0;
253  t(3, 3) = 1;
254  t(1, 4) = 0;
255  t(2, 4) = (min_rho + max_rho) / 2;
256  t(3, 4) = (min_z + max_z) / 2;
257 
258  TEveGeoShape* shape = new TEveGeoShape;
259  shape->SetTransMatrix(t.Array());
260 
261  shape->SetRnrSelf(kTRUE);
262  shape->SetRnrChildren(kTRUE);
263  TGeoBBox* box = new TGeoBBox(0, (max_rho - min_rho) / 2, (max_z - min_z) / 2);
264  shape->SetShape(box);
265 
266  return shape;
267 }
268 
269 //______________________________________________________________________________
270 
272  const FWGeometry::GeomDetInfo& info, float& min_rho, float& max_rho, float& min_z, float& max_z) {
273  // we will test 5 points on both sides ( +/- z)
274  float local[3], global[3];
275 
276  float dX = info.shape[1];
277  float dY = info.shape[2];
278  float dZ = info.shape[3];
279 
280  local[0] = 0;
281  local[1] = 0;
282  local[2] = dZ;
283  m_geom->localToGlobal(info, local, global);
284  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
285 
286  local[0] = dX;
287  local[1] = dY;
288  local[2] = dZ;
289  m_geom->localToGlobal(info, local, global);
290  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
291 
292  local[0] = -dX;
293  local[1] = dY;
294  local[2] = dZ;
295  m_geom->localToGlobal(info, local, global);
296  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
297 
298  local[0] = dX;
299  local[1] = -dY;
300  local[2] = dZ;
301  m_geom->localToGlobal(info, local, global);
302  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
303 
304  local[0] = -dX;
305  local[1] = -dY;
306  local[2] = dZ;
307  m_geom->localToGlobal(info, local, global);
308  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
309 
310  local[0] = 0;
311  local[1] = 0;
312  local[2] = -dZ;
313  m_geom->localToGlobal(info, local, global);
314  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
315 
316  local[0] = dX;
317  local[1] = dY;
318  local[2] = -dZ;
319  m_geom->localToGlobal(info, local, global);
320  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
321 
322  local[0] = -dX;
323  local[1] = dY;
324  local[2] = -dZ;
325  m_geom->localToGlobal(info, local, global);
326  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
327 
328  local[0] = dX;
329  local[1] = -dY;
330  local[2] = -dZ;
331  m_geom->localToGlobal(info, local, global);
332  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
333 
334  local[0] = -dX;
335  local[1] = -dY;
336  local[2] = -dZ;
337  m_geom->localToGlobal(info, local, global);
338  estimateProjectionSize(global, min_rho, max_rho, min_z, max_z);
339 }
340 
342  const float* global, float& min_rho, float& max_rho, float& min_z, float& max_z) {
343  double rho = sqrt(global[0] * global[0] + global[1] * global[1]);
344  if (min_rho > rho)
345  min_rho = rho;
346  if (max_rho < rho)
347  max_rho = rho;
348  if (min_z > global[2])
349  min_z = global[2];
350  if (max_z < global[2])
351  max_z = global[2];
352 }
353 
354 // ATODO:: check white vertex -> shouldn't be relative to background
355 // when detruction ?
356 
357 // ATODO why color is not set in 3D original, why cast to polygonsetprojected after projected ????
358 // is geom color dynamic --- independent of projection manager
359 
360 // NOTE geomtry MuonRhoZAdanced renamed to MuonRhoZ
361 
362 //==============================================================================
363 //==============================================================================
364 
366  if (!m_pixelBarrelElements && show) {
367  m_pixelBarrelElements = new TEveElementList("PixelBarrel");
368  AddElement(m_pixelBarrelElements);
369  std::vector<unsigned int> ids = m_geom->getMatchedIds(FWGeometry::Tracker, FWGeometry::PixelBarrel);
370  for (std::vector<unsigned int>::const_iterator id = ids.begin(); id != ids.end(); ++id) {
371  TEveGeoShape* shape = m_geom->getEveShape(*id);
372  if (!shape)
373  return;
374  shape->SetTitle(Form("PixelBarrel %d", *id));
376  m_pixelBarrelElements->AddElement(shape);
377  }
379  }
380 
381  if (m_pixelBarrelElements) {
382  m_pixelBarrelElements->SetRnrState(show);
383  gEve->Redraw3D();
384  }
385 }
386 
388  if (!m_pixelEndcapElements && show) {
389  m_pixelEndcapElements = new TEveElementList("PixelEndcap");
390 
391  std::vector<unsigned int> ids = m_geom->getMatchedIds(FWGeometry::Tracker, FWGeometry::PixelEndcap);
392  for (std::vector<unsigned int>::const_iterator id = ids.begin(); id != ids.end(); ++id) {
393  TEveGeoShape* shape = m_geom->getEveShape(*id);
394  if (!shape)
395  return;
396  shape->SetTitle(Form("PixelEndCap %d", *id));
398  m_pixelEndcapElements->AddElement(shape);
399  }
400 
401  AddElement(m_pixelEndcapElements);
403  }
404 
405  if (m_pixelEndcapElements) {
406  m_pixelEndcapElements->SetRnrState(show);
407  gEve->Redraw3D();
408  }
409 }
410 
412  if (!m_trackerBarrelElements && show) {
413  m_trackerBarrelElements = new TEveElementList("TrackerBarrel");
414 
415  std::vector<unsigned int> ids = m_geom->getMatchedIds(FWGeometry::Tracker, FWGeometry::TIB);
416  for (std::vector<unsigned int>::const_iterator id = ids.begin(); id != ids.end(); ++id) {
417  TEveGeoShape* shape = m_geom->getEveShape(*id);
418  if (!shape)
419  return;
421  m_trackerBarrelElements->AddElement(shape);
422  }
424  for (std::vector<unsigned int>::const_iterator id = ids.begin(); id != ids.end(); ++id) {
425  TEveGeoShape* shape = m_geom->getEveShape(*id);
426  if (!shape)
427  return;
428  shape->SetTitle(Form("TrackerBarrel %d", *id));
430  m_trackerBarrelElements->AddElement(shape);
431  }
432 
433  AddElement(m_trackerBarrelElements);
435  }
436 
438  m_trackerBarrelElements->SetRnrState(show);
439  gEve->Redraw3D();
440  }
441 }
442 
444  if (!m_trackerEndcapElements && show) {
445  m_trackerEndcapElements = new TEveElementList("TrackerEndcap");
446 
447  std::vector<unsigned int> ids = m_geom->getMatchedIds(FWGeometry::Tracker, FWGeometry::TID);
448  for (std::vector<unsigned int>::const_iterator id = ids.begin(); id != ids.end(); ++id) {
449  TEveGeoShape* shape = m_geom->getEveShape(*id);
451 
452  if (!shape)
453  return;
454  m_trackerEndcapElements->AddElement(shape);
455  }
457  for (std::vector<unsigned int>::const_iterator id = ids.begin(); id != ids.end(); ++id) {
458  TEveGeoShape* shape = m_geom->getEveShape(*id);
459  shape->SetTitle(Form("TrackerEndcap %d", *id));
460  if (!shape)
461  return;
463  m_trackerEndcapElements->AddElement(shape);
464  }
465 
466  AddElement(m_trackerEndcapElements);
468  }
469 
471  m_trackerEndcapElements->SetRnrState(show);
472  gEve->Redraw3D();
473  }
474 }
475 
476 //---------------------------------------------------------
478  if (!m_rpcEndcapElements && show) {
479  m_rpcEndcapElements = new TEveElementList("RpcEndcap");
480 
481  std::vector<RPCDetId> ids;
482  int mxSt = m_geom->versionInfo().haveExtraDet("RE4") ? 4 : 3;
483  for (int region = -1; region <= 1; ++region) {
484  if (region == 0)
485  continue;
486  for (int ring = 2; ring <= 3; ++ring) {
487  for (int station = 1; station <= mxSt; ++station) {
488  int sector = 1;
489  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 1));
490  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 2));
491  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 3));
492  if (ring == 2 && station == 1) { // 2 layers in ring 2 station 1 up
493  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 1));
494  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 2));
495  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 3));
496  }
497  sector = 5;
498  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 1));
499  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 2));
500  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 3));
501 
502  if (ring == 2 && station == 1) { // 2 layers in ring 2 station 1 down
503  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 1));
504  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 2));
505  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 3));
506  }
507  }
508  }
509  }
510 
511  for (std::vector<RPCDetId>::iterator i = ids.begin(); i != ids.end(); ++i) {
512  TEveGeoShape* shape = m_geom->getEveShape(i->rawId());
513  if (!shape)
514  return;
516  m_rpcEndcapElements->AddElement(shape);
517  gEve->AddToListTree(shape, true);
518  }
519 
520  AddElement(m_rpcEndcapElements);
522  }
523 
524  if (m_rpcEndcapElements) {
525  m_rpcEndcapElements->SetRnrState(show);
526  gEve->Redraw3D();
527  }
528 }
529 
530 //______________________________________________________________________________
531 
532 void FWRPZViewGeometry::showGEM(bool show) {
533  // hardcoded gem and me0; need to find better way for different gem geometries
534  if (!m_GEMElements && show) {
535  m_GEMElements = new TEveElementList("GEM");
536 
537  for (Int_t iRegion = GEMDetId::minRegionId; iRegion <= GEMDetId::maxRegionId; iRegion = iRegion + 2) {
538  int mxSt = m_geom->versionInfo().haveExtraDet("GE2") ? 3 : 1;
539 
540  for (Int_t iStation = GEMDetId::minStationId; iStation <= mxSt; ++iStation) {
541  Int_t iRing = 1;
542  for (Int_t iLayer = GEMDetId::minLayerId; iLayer <= GEMDetId::maxLayerId; ++iLayer) {
543  int maxChamber = 36;
544  if (iStation >= 2)
545  maxChamber = 18;
546 
547  for (Int_t iChamber = 1; iChamber <= maxChamber; ++iChamber) {
548  int maxRoll = iChamber % 2 ? 9 : 10;
549  if (iStation == 2)
550  maxRoll = 8;
551  if (iStation == 3)
552  maxRoll = 12;
553 
554  for (Int_t iRoll = GEMDetId::minRollId; iRoll <= maxRoll; ++iRoll) {
555  GEMDetId id(iRegion, iRing, iStation, iLayer, iChamber, iRoll);
556  TEveGeoShape* shape = m_geom->getEveShape(id.rawId());
557  if (shape) {
559  m_GEMElements->AddElement(shape);
560  gEve->AddToListTree(shape, true);
561  }
562  }
563  }
564  }
565  }
566  }
567 
568  AddElement(m_GEMElements);
570  }
571  if (m_GEMElements) {
572  m_GEMElements->SetRnrState(show);
573  gEve->Redraw3D();
574  }
575 }
576 
577 void FWRPZViewGeometry::showME0(bool show) {
578  if (!m_ME0Elements && show) {
579  m_ME0Elements = new TEveElementList("ME0");
580 
581  for (Int_t iRegion = ME0DetId::minRegionId; iRegion <= ME0DetId::maxRegionId; iRegion = iRegion + 2) {
582  for (Int_t iLayer = 1; iLayer <= 6; ++iLayer) {
583  for (Int_t iChamber = 1; iChamber <= 18; ++iChamber) {
584  Int_t iRoll = 1;
585  ME0DetId id(iRegion, iLayer, iChamber, iRoll);
586  TEveGeoShape* shape = m_geom->getEveShape(id.rawId());
587  if (shape) {
589  m_ME0Elements->AddElement(shape);
590  gEve->AddToListTree(shape, true);
591  }
592  }
593  }
594  }
595 
596  AddElement(m_ME0Elements);
598  }
599  if (m_ME0Elements) {
600  m_ME0Elements->SetRnrState(show);
601  gEve->Redraw3D();
602  }
603 }
604 
605 //-------------------------------------
606 
607 void FWRPZViewGeometry::importNew(TEveElementList* x) {
608  TEveProjected* proj = *BeginProjecteds();
609  proj->GetManager()->SubImportElements(x, proj->GetProjectedAsElement());
610 }
const double TwoPi
type
Definition: HCALResponse.h:21
~FWRPZViewGeometry() override
TEveElementList * m_pixelBarrelElements
static const TGPicture * info(bool iBackgroundIsBlack)
FWRPZViewGeometry(const fireworks::Context &context)
TEveCompound * m_colorComp[kFWGeomColorSize]
static int minEndcapId()
Definition: CSCDetId.h:219
void estimateProjectionSizeDT(const FWGeometry::GeomDetInfo &info, float &, float &, float &, float &)
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:458
TEveElementList * m_GEMElements
TEveElementList * m_rhoPhiGeo
TEveElement * makeCaloOutlineRhoPhi()
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
FWColorManager * colorManager() const
Definition: Context.h:58
#define nullptr
static int32_t minRegionId
Definition: GEMDetId.h:19
static float caloZ2(bool offset=true)
Definition: Context.cc:185
static const int maxRegionId
Definition: ME0DetId.h:64
const VersionInfo & versionInfo() const
Definition: FWGeometry.h:150
TEveElementList * m_rpcEndcapElements
void addToCompound(TEveElement *el, FWGeomColorIndex idx, bool applyTransp=true) const
TEveGeoShape * makeShape(double, double, double, double)
static const int minRegionId
Definition: ME0DetId.h:63
void initStdGeoElements(const FWViewType::EType id)
bool haveExtraDet(const char *) const
Definition: FWGeometry.cc:473
static float caloR2(bool offset=true)
Definition: Context.cc:182
TEveElement * makeMuonGeometryRhoPhi()
IdToInfoItr mapEnd() const
Definition: FWGeometry.h:141
void importNew(TEveElementList *x)
TEveElementList * m_trackerBarrelElements
void estimateProjectionSize(const float *, float &, float &, float &, float &)
TEveGeoShape * getEveShape(unsigned int id) const
Definition: FWGeometry.cc:262
TEveElementList * m_pixelEndcapElements
T sqrt(T t)
Definition: SSEVec.h:19
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
void localToGlobal(unsigned int id, const float *local, float *global, bool translatep=true) const
Definition: FWGeometry.cc:438
static int maxEndcapId()
Definition: CSCDetId.h:220
static float caloR1(bool offset=true)
Definition: Context.cc:180
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
const FWGeometry * m_geom
TEveElementList * m_rhoZGeo
TEveElementList * m_ME0Elements
static int32_t maxLayerId
Definition: GEMDetId.h:31
static int32_t minRollId
Definition: GEMDetId.h:32
TEveElement * makeCaloOutlineRhoZ()
void showTrackerBarrel(bool)
TEveElementList * m_trackerEndcapElements
static int32_t maxRegionId
Definition: GEMDetId.h:20
std::vector< unsigned int > getMatchedIds(Detector det, SubDetector subdet) const
Definition: FWGeometry.cc:192
TEveElement * makeMuonGeometryRhoZ()
static double caloMaxEta()
Definition: Context.cc:191
static int32_t minStationId
Definition: GEMDetId.h:24
static float caloZ1(bool offset=true)
Definition: Context.cc:183
void showTrackerEndcap(bool)
static int32_t minLayerId
Definition: GEMDetId.h:29
Color_t geomColor(FWGeomColorIndex) const
const fireworks::Context & m_context
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:137