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 {
68  SetElementName("RPZGeomShared");
69 }
70 
71 // FWRPZViewGeometry::FWRPZViewGeometry(const FWRPZViewGeometry& rhs)
72 // {
73 // // do actual copying here;
74 // }
75 
77 {
78  m_rhoPhiGeo->DecDenyDestroy();
79  m_rhoZGeo->DecDenyDestroy();
80 }
81 
82 //______________________________________________________________________________
83 
84 void
86 {
87  assert(m_geom != nullptr);
88 
89  if (type == FWViewType::kRhoZ)
90  {
91  AddElement(makeMuonGeometryRhoZ());
92  AddElement(makeCaloOutlineRhoZ());
93  }
94  else
95  {
96  AddElement(makeMuonGeometryRhoPhi());
97  AddElement(makeCaloOutlineRhoPhi());
98  }
99 }
100 
101 //______________________________________________________________________________
102 
103 
104 TEveElement*
106 {
107  using namespace fireworks;
108 
109  float ri = m_context.caloZ2()*tan(2*atan(exp(-m_context.caloMaxEta())));
110 
111  TEveStraightLineSet* el = new TEveStraightLineSet( "TrackerRhoZoutline" );
112  el->SetPickable(kFALSE);
114 
115  el->AddLine(0, m_context.caloR1(), -m_context.caloZ1(), 0, m_context.caloR1(), m_context.caloZ1());
116  el->AddLine(0, -m_context.caloR1(), m_context.caloZ1(), 0, -m_context.caloR1(), -m_context.caloZ1());
117 
118  el->AddLine(0, -m_context.caloR2(), m_context.caloZ2(), 0, -ri, m_context.caloZ2());
119  el->AddLine(0, ri, m_context.caloZ2(), 0, m_context.caloR2(), m_context.caloZ2());
120 
121  el->AddLine(0, -m_context.caloR2(), -m_context.caloZ2(), 0, -ri, -m_context.caloZ2());
122  el->AddLine(0, ri, -m_context.caloZ2(), 0, m_context.caloR2(), -m_context.caloZ2());
123 
124  return el;
125 }
126 
127 TEveElement*
129 {
130  TEveStraightLineSet* el = new TEveStraightLineSet( "TrackerRhoPhi" );
132 
134  const unsigned int nSegments = 100;
135  const double r = m_context.caloR1();
136  for ( unsigned int i = 1; i <= nSegments; ++i )
137  el->AddLine(r*sin(TMath::TwoPi()/nSegments*(i-1)), r*cos(TMath::TwoPi()/nSegments*(i-1)), 0,
138  r*sin(TMath::TwoPi()/nSegments*i), r*cos(TMath::TwoPi()/nSegments*i), 0);
139 
140  TEvePointSet* ref = new TEvePointSet("reference");
141  ref->SetTitle("(0,0,0)");
142  ref->SetMarkerStyle(4);
143  ref->SetMarkerColor(kWhite);
144  ref->SetNextPoint(0.,0.,0.);
145  el->AddElement(ref);
146 
147  return el;
148 }
149 
150 //______________________________________________________________________________
151 
152 TEveElement*
154 {
155  Int_t iWheel = 0;
156 
157  // rho-phi view
158  TEveCompound* container = new TEveCompound( "MuonRhoPhi" );
159 
160 
161  for( Int_t iStation = 1; iStation <= 4; ++iStation )
162  {
163  for( Int_t iSector = 1 ; iSector <= 14; ++iSector )
164  {
165  if( iStation < 4 && iSector > 12 ) continue;
166  DTChamberId id( iWheel, iStation, iSector );
167  TEveGeoShape* shape = m_geom->getEveShape( id.rawId() );
168  if( shape )
169  {
170  shape->SetMainColor(m_colorComp[kFWMuonBarrelLineColorIndex]->GetMainColor());
172  container->AddElement( shape );
173  }
174  }
175  }
176  return container;
177 }
178 namespace {
179 
180 //void addLibe
181 
182 }
183 //______________________________________________________________________________
184 
185 TEveElement*
187 {
188  TEveElementList* container = new TEveElementList( "MuonRhoZ" );
189 
190  {
191  TEveCompound* dtContainer = new TEveCompound( "DT" );
192  for( Int_t iWheel = -2; iWheel <= 2; ++iWheel )
193  {
194  for( Int_t iStation = 1; iStation <= 4; ++iStation )
195  {
196  float min_rho(1000), max_rho(0), min_z(2000), max_z(-2000);
197 
198  // This will give us a quarter of DTs
199  // which is enough for our projection
200  for( Int_t iSector = 1; iSector <= 4; ++iSector )
201  {
202  DTChamberId id( iWheel, iStation, iSector );
203  unsigned int rawid = id.rawId();
204  FWGeometry::IdToInfoItr det = m_geom->find( rawid );
205  if (det == m_geom->mapEnd()) return container;
206  estimateProjectionSizeDT( *det, min_rho, max_rho, min_z, max_z );
207  }
208  if ( min_rho > max_rho || min_z > max_z ) continue;
209  TEveElement* se = makeShape( min_rho, max_rho, min_z, max_z );
211  dtContainer->AddElement(se);
212  se = makeShape( -max_rho, -min_rho, min_z, max_z );
214  dtContainer->AddElement(se);
215  }
216  }
217 
218  container->AddElement( dtContainer );
219  }
220  {
221  // addcsc
222  TEveCompound* cscContainer = new TEveCompound( "CSC" );
223  std::vector<CSCDetId> ids;
225  {
226  for (int station = 1; station <= 4; ++station)
227  {
228  ids.push_back(CSCDetId(endcap, station, 2, 10, 0 ));//outer ring up
229  ids.push_back(CSCDetId(endcap, station, 2, 11, 0 ));//outer ring up
230 
231  ids.push_back(CSCDetId(endcap, station, 2, 28, 0 ));//outer ring down
232  ids.push_back(CSCDetId(endcap, station, 2, 29, 0 ));//outer ring down
233 
234  ids.push_back(CSCDetId(endcap, station, 1, 5, 0 ));//inner ring up
235  ids.push_back(CSCDetId(endcap, station, 1, 6, 0 )); //inner ring up
236 
237  int off = (station == 1) ? 10:0;
238  ids.push_back(CSCDetId(endcap, station, 1, 15+off, 0 ));//inner ring down
239  ids.push_back(CSCDetId(endcap, station, 1, 16+off, 0 )); //inner ring down
240  }
241  ids.push_back(CSCDetId(endcap, 1, 3, 10, 0 )); // ring 3 down
242  ids.push_back(CSCDetId(endcap, 1, 3, 28, 0 )); // ring 3 down
243  }
244  for (std::vector<CSCDetId>::iterator i = ids.begin(); i != ids.end(); ++i)
245  {
246  unsigned int rawid = i->rawId();
247  TEveGeoShape* shape = m_geom->getEveShape(rawid);
248  if (!shape) return cscContainer;
250  shape->SetName(Form(" e:%d r:%d s:%d chamber %d",i->endcap(), i->ring(), i->station(), i->chamber() ));
251  cscContainer->AddElement(shape);
252  }
253  container->AddElement( cscContainer );
254  }
255 
256  return container;
257 }
258 
259 //______________________________________________________________________________
260 
261 TEveGeoShape*
262 FWRPZViewGeometry::makeShape( double min_rho, double max_rho, double min_z, double max_z)
263 {
264  TEveTrans t;
265  t(1,1) = 1; t(1,2) = 0; t(1,3) = 0;
266  t(2,1) = 0; t(2,2) = 1; t(2,3) = 0;
267  t(3,1) = 0; t(3,2) = 0; t(3,3) = 1;
268  t(1,4) = 0; t(2,4) = (min_rho+max_rho)/2; t(3,4) = (min_z+max_z)/2;
269 
270  TEveGeoShape* shape = new TEveGeoShape;
271  shape->SetTransMatrix(t.Array());
272 
273  shape->SetRnrSelf(kTRUE);
274  shape->SetRnrChildren(kTRUE);
275  TGeoBBox* box = new TGeoBBox( 0, (max_rho-min_rho)/2, (max_z-min_z)/2 );
276  shape->SetShape( box );
277 
278  return shape;
279 }
280 
281 //______________________________________________________________________________
282 
283 void
285  float& min_rho, float& max_rho, float& min_z, float& max_z )
286 {
287  // we will test 5 points on both sides ( +/- z)
288  float local[3], global[3];
289 
290  float dX = info.shape[1];
291  float dY = info.shape[2];
292  float dZ = info.shape[3];
293 
294  local[0] = 0; local[1] = 0; 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; local[1] = dY; local[2] = dZ;
299  m_geom->localToGlobal( info, local, global );
300  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
301 
302  local[0] = -dX; local[1] = dY; local[2] = dZ;
303  m_geom->localToGlobal( info, local, global );
304  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
305 
306  local[0] = dX; local[1] = -dY; 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] = -dX; local[1] = -dY; local[2] = dZ;
311  m_geom->localToGlobal( info, local, global );
312  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
313 
314  local[0] = 0; local[1] = 0; local[2] = -dZ;
315  m_geom->localToGlobal( info, local, global );
316  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
317 
318  local[0] = dX; local[1] = dY; 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; local[1] = dY; local[2] = -dZ;
323  m_geom->localToGlobal( info, local, global );
324  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
325 
326  local[0] = dX; local[1] = -dY; local[2] = -dZ;
327  m_geom->localToGlobal( info, local, global );
328  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
329 
330  local[0] = -dX; local[1] = -dY; local[2] = -dZ;
331  m_geom->localToGlobal( info, local, global );
332  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
333 }
334 
335 
336 void
338  float& min_rho, float& max_rho, float& min_z, float& max_z )
339 {
340  double rho = sqrt(global[0] *global[0]+global[1] *global[1]);
341  if ( min_rho > rho ) min_rho = rho;
342  if ( max_rho < rho ) max_rho = rho;
343  if ( min_z > global[2] ) min_z = global[2];
344  if ( max_z < global[2] ) max_z = global[2];
345 }
346 
347 
348 // ATODO:: check white vertex -> shouldn't be relative to background
349 // when detruction ?
350 
351 
352 // ATODO why color is not set in 3D original, why cast to polygonsetprojected after projected ????
353 // is geom color dynamic --- independent of projection manager
354 
355 // NOTE geomtry MuonRhoZAdanced renamed to MuonRhoZ
356 
357 
358 //==============================================================================
359 //==============================================================================
360 
361 
362 
363 void
365 {
366  if( !m_pixelBarrelElements && show )
367  {
368  m_pixelBarrelElements = new TEveElementList("PixelBarrel");
369  AddElement(m_pixelBarrelElements);
370  std::vector<unsigned int> ids = m_geom->getMatchedIds( FWGeometry::Tracker, FWGeometry::PixelBarrel );
371  for( std::vector<unsigned int>::const_iterator id = ids.begin();
372  id != ids.end(); ++id )
373  {
374  TEveGeoShape* shape = m_geom->getEveShape( *id );
375  if (!shape) return;
376  shape->SetTitle(Form("PixelBarrel %d",*id));
378  m_pixelBarrelElements->AddElement( shape );
379  }
381  }
382 
384  {
385  m_pixelBarrelElements->SetRnrState(show);
386  gEve->Redraw3D();
387  }
388 }
389 
390 void
392 {
393  if( !m_pixelEndcapElements && show )
394  {
395  m_pixelEndcapElements = new TEveElementList("PixelEndcap");
396 
397  std::vector<unsigned int> ids = m_geom->getMatchedIds( FWGeometry::Tracker, FWGeometry::PixelEndcap );
398  for( std::vector<unsigned int>::const_iterator id = ids.begin();
399  id != ids.end(); ++id )
400  {
401  TEveGeoShape* shape = m_geom->getEveShape( *id );
402  if (!shape) return;
403  shape->SetTitle(Form("PixelEndCap %d",*id));
405  m_pixelEndcapElements->AddElement( shape );
406  }
407 
408  AddElement(m_pixelEndcapElements);
410  }
411 
413  {
414  m_pixelEndcapElements->SetRnrState(show);
415  gEve->Redraw3D();
416  }
417 }
418 
419 
420 void
422 {
423  if( !m_trackerBarrelElements && show )
424  {
425  m_trackerBarrelElements = new TEveElementList("TrackerBarrel");
426 
427  std::vector<unsigned int> ids = m_geom->getMatchedIds( FWGeometry::Tracker, FWGeometry::TIB );
428  for( std::vector<unsigned int>::const_iterator id = ids.begin();
429  id != ids.end(); ++id )
430  {
431  TEveGeoShape* shape = m_geom->getEveShape( *id );
432  if (!shape) return;
434  m_trackerBarrelElements->AddElement( shape );
435  }
437  for( std::vector<unsigned int>::const_iterator id = ids.begin();
438  id != ids.end(); ++id )
439  {
440  TEveGeoShape* shape = m_geom->getEveShape( *id );
441  if (!shape) return;
442  shape->SetTitle(Form("TrackerBarrel %d",*id));
444  m_trackerBarrelElements->AddElement( shape );
445  }
446 
447  AddElement(m_trackerBarrelElements);
449  }
450 
452  {
453  m_trackerBarrelElements->SetRnrState(show);
454  gEve->Redraw3D();
455  }
456 }
457 
458 void
460 {
461  if( !m_trackerEndcapElements && show )
462  {
463  m_trackerEndcapElements = new TEveElementList("TrackerEndcap");
464 
465  std::vector<unsigned int> ids = m_geom->getMatchedIds( FWGeometry::Tracker, FWGeometry::TID );
466  for( std::vector<unsigned int>::const_iterator id = ids.begin();
467  id != ids.end(); ++id )
468  {
469  TEveGeoShape* shape = m_geom->getEveShape( *id );
471 
472  if (!shape) return;
473  m_trackerEndcapElements->AddElement( shape );
474  }
476  for( std::vector<unsigned int>::const_iterator id = ids.begin();
477  id != ids.end(); ++id )
478  {
479  TEveGeoShape* shape = m_geom->getEveShape( *id );
480  shape->SetTitle(Form("TrackerEndcap %d",*id));
481  if (!shape) return;
483  m_trackerEndcapElements->AddElement( shape );
484  }
485 
486  AddElement(m_trackerEndcapElements);
488  }
489 
491  {
492  m_trackerEndcapElements->SetRnrState(show);
493  gEve->Redraw3D();
494  }
495 }
496 
497 //---------------------------------------------------------
498 void
500 {
501  if( !m_rpcEndcapElements && show )
502  {
503  m_rpcEndcapElements = new TEveElementList("RpcEndcap");
504 
505 
506  std::vector<RPCDetId> ids;
507  int mxSt = m_geom->versionInfo().haveExtraDet("RE4") ? 4:3;
508  for (int region = -1; region <=1; ++ region )
509  {
510  if (region == 0 ) continue;
511  for (int ring = 2; ring <= 3; ++ring) {
512  for (int station = 1; station <= mxSt; ++station ) {
513  int sector = 1;
514  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 1));
515  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 2));
516  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 3));
517  if (ring == 2 && station == 1) { // 2 layers in ring 2 station 1 up
518  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 1));
519  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 2));
520  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 3));
521  }
522  sector = 5;
523  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 1));
524  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 2));
525  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 3));
526 
527  if (ring == 2 && station == 1) { // 2 layers in ring 2 station 1 down
528  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 1));
529  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 2));
530  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 3));
531  }
532  }
533  }
534  }
535 
536  for (std::vector<RPCDetId>::iterator i = ids.begin(); i != ids.end(); ++i)
537  {
538  TEveGeoShape* shape = m_geom->getEveShape(i->rawId());
539  if (!shape) return;
541  m_rpcEndcapElements->AddElement(shape);
542  gEve->AddToListTree(shape, true);
543  }
544 
545  AddElement(m_rpcEndcapElements);
547  }
548 
550  {
551  m_rpcEndcapElements->SetRnrState(show);
552  gEve->Redraw3D();
553  }
554 }
555 
556 //______________________________________________________________________________
557 
558 void
560 {
561  // hardcoded gem and me0; need to find better way for different gem geometries
562  if( !m_GEMElements && show ){
563  m_GEMElements = new TEveElementList("GEM");
564 
565  for( Int_t iRegion = GEMDetId::minRegionId; iRegion <= GEMDetId::maxRegionId; iRegion= iRegion+2){
566  int mxSt = m_geom->versionInfo().haveExtraDet("GE2") ? 3:1;
567 
568  for( Int_t iStation = GEMDetId::minStationId; iStation <= mxSt; ++iStation ){
569  Int_t iRing = 1;
570  for( Int_t iLayer = GEMDetId::minLayerId; iLayer <= GEMDetId::maxLayerId ; ++iLayer ){
571  int maxChamber = 36;
572  if (iStation >= 2) maxChamber = 18;
573 
574  for( Int_t iChamber = 1; iChamber <= maxChamber; ++iChamber ){
575  int maxRoll = iChamber%2 ? 9:10;
576  if (iStation == 2) maxRoll = 8;
577  if (iStation == 3) maxRoll = 12;
578 
579  for (Int_t iRoll = GEMDetId::minRollId; iRoll <= maxRoll ; ++iRoll ){
580  GEMDetId id( iRegion, iRing, iStation, iLayer, iChamber, iRoll );
581  TEveGeoShape* shape = m_geom->getEveShape(id.rawId());
582  if (shape){
584  m_GEMElements->AddElement( shape );
585  gEve->AddToListTree(shape, true);
586  }
587  }
588  }
589  }
590  }
591  }
592 
593  AddElement(m_GEMElements);
595  }
596  if (m_GEMElements){
597  m_GEMElements->SetRnrState(show);
598  gEve->Redraw3D();
599  }
600 }
601 
602 void
604 {
605  if( !m_ME0Elements && show ){
606  m_ME0Elements = new TEveElementList("ME0");
607 
608  for( Int_t iRegion = ME0DetId::minRegionId; iRegion <= ME0DetId::maxRegionId; iRegion= iRegion+2 ){
609  for( Int_t iLayer = 1; iLayer <= 6 ; ++iLayer ){
610  for( Int_t iChamber = 1; iChamber <= 18; ++iChamber ){
611  Int_t iRoll = 1;
612  ME0DetId id( iRegion, iLayer, iChamber, iRoll );
613  TEveGeoShape* shape = m_geom->getEveShape(id.rawId());
614  if (shape){
616  m_ME0Elements->AddElement( shape );
617  gEve->AddToListTree(shape, true);
618  }
619  }
620  }
621  }
622 
623  AddElement(m_ME0Elements);
625  }
626  if (m_ME0Elements){
627  m_ME0Elements->SetRnrState(show);
628  gEve->Redraw3D();
629  }
630 }
631 
632 //-------------------------------------
633 
634 void FWRPZViewGeometry::importNew(TEveElementList* x)
635 {
636  TEveProjected* proj = *BeginProjecteds();
637  proj->GetManager()->SubImportElements(x, proj->GetProjectedAsElement());
638 
639 }
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:236
void estimateProjectionSizeDT(const FWGeometry::GeomDetInfo &info, float &, float &, float &, float &)
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:508
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:65
#define nullptr
static float caloZ2(bool offset=true)
Definition: Context.cc:223
static const int minRegionId
Definition: GEMDetId.h:94
static const int maxRegionId
Definition: ME0DetId.h:87
const VersionInfo & versionInfo() const
Definition: FWGeometry.h:127
static const int maxLayerId
Definition: GEMDetId.h:108
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:86
void initStdGeoElements(const FWViewType::EType id)
bool haveExtraDet(const char *) const
Definition: FWGeometry.cc:529
static float caloR2(bool offset=true)
Definition: Context.cc:213
TEveElement * makeMuonGeometryRhoPhi()
IdToInfoItr mapEnd() const
Definition: FWGeometry.h:121
void importNew(TEveElementList *x)
TEveElementList * m_trackerBarrelElements
void estimateProjectionSize(const float *, float &, float &, float &, float &)
TEveGeoShape * getEveShape(unsigned int id) const
Definition: FWGeometry.cc:298
TEveElementList * m_pixelEndcapElements
T sqrt(T t)
Definition: SSEVec.h:18
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:478
static int maxEndcapId()
Definition: CSCDetId.h:237
static float caloR1(bool offset=true)
Definition: Context.cc:208
static const int minRollId
Definition: GEMDetId.h:110
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
const FWGeometry * m_geom
TEveElementList * m_rhoZGeo
TEveElementList * m_ME0Elements
static const int minStationId
Definition: GEMDetId.h:100
TEveElement * makeCaloOutlineRhoZ()
void showTrackerBarrel(bool)
TEveElementList * m_trackerEndcapElements
std::vector< unsigned int > getMatchedIds(Detector det, SubDetector subdet) const
Definition: FWGeometry.cc:214
TEveElement * makeMuonGeometryRhoZ()
static double caloMaxEta()
Definition: Context.cc:238
static float caloZ1(bool offset=true)
Definition: Context.cc:218
void showTrackerEndcap(bool)
static const int minLayerId
Definition: GEMDetId.h:107
static const int maxRegionId
Definition: GEMDetId.h:95
Color_t geomColor(FWGeomColorIndex) const
const fireworks::Context & m_context
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:114