CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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(0),
58  m_rhoZGeo(0),
59 
60  m_pixelBarrelElements(0),
61  m_pixelEndcapElements(0),
62  m_trackerBarrelElements(0),
63  m_trackerEndcapElements(0),
64  m_rpcEndcapElements(0),
65  m_GEMElements(0),
66  m_ME0Elements(0)
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 != 0);
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  estimateProjectionSizeDT( *det, min_rho, max_rho, min_z, max_z );
206  }
207  if ( min_rho > max_rho || min_z > max_z ) continue;
208  TEveElement* se = makeShape( min_rho, max_rho, min_z, max_z );
210  dtContainer->AddElement(se);
211  se = makeShape( -max_rho, -min_rho, min_z, max_z );
213  dtContainer->AddElement(se);
214  }
215  }
216 
217  container->AddElement( dtContainer );
218  }
219  {
220  // addcsc
221  TEveCompound* cscContainer = new TEveCompound( "CSC" );
222  std::vector<CSCDetId> ids;
224  {
225  for (int station = 1; station <= 4; ++station)
226  {
227  ids.push_back(CSCDetId(endcap, station, 2, 10, 0 ));//outer ring up
228  ids.push_back(CSCDetId(endcap, station, 2, 11, 0 ));//outer ring up
229 
230  ids.push_back(CSCDetId(endcap, station, 2, 28, 0 ));//outer ring down
231  ids.push_back(CSCDetId(endcap, station, 2, 29, 0 ));//outer ring down
232 
233  ids.push_back(CSCDetId(endcap, station, 1, 5, 0 ));//inner ring up
234  ids.push_back(CSCDetId(endcap, station, 1, 6, 0 )); //inner ring up
235 
236  int off = (station == 1) ? 10:0;
237  ids.push_back(CSCDetId(endcap, station, 1, 15+off, 0 ));//inner ring down
238  ids.push_back(CSCDetId(endcap, station, 1, 16+off, 0 )); //inner ring down
239  }
240  ids.push_back(CSCDetId(endcap, 1, 3, 10, 0 )); // ring 3 down
241  ids.push_back(CSCDetId(endcap, 1, 3, 28, 0 )); // ring 3 down
242  }
243  for (std::vector<CSCDetId>::iterator i = ids.begin(); i != ids.end(); ++i)
244  {
245  unsigned int rawid = i->rawId();
246  TEveGeoShape* shape = m_geom->getEveShape(rawid);
248  shape->SetName(Form(" e:%d r:%d s:%d chamber %d",i->endcap(), i->ring(), i->station(), i->chamber() ));
249  cscContainer->AddElement(shape);
250  }
251  container->AddElement( cscContainer );
252  }
253 
254  return container;
255 }
256 
257 //______________________________________________________________________________
258 
259 TEveGeoShape*
260 FWRPZViewGeometry::makeShape( double min_rho, double max_rho, double min_z, double max_z)
261 {
262  TEveTrans t;
263  t(1,1) = 1; t(1,2) = 0; t(1,3) = 0;
264  t(2,1) = 0; t(2,2) = 1; t(2,3) = 0;
265  t(3,1) = 0; t(3,2) = 0; t(3,3) = 1;
266  t(1,4) = 0; t(2,4) = (min_rho+max_rho)/2; t(3,4) = (min_z+max_z)/2;
267 
268  TEveGeoShape* shape = new TEveGeoShape;
269  shape->SetTransMatrix(t.Array());
270 
271  shape->SetRnrSelf(kTRUE);
272  shape->SetRnrChildren(kTRUE);
273  TGeoBBox* box = new TGeoBBox( 0, (max_rho-min_rho)/2, (max_z-min_z)/2 );
274  shape->SetShape( box );
275 
276  return shape;
277 }
278 
279 //______________________________________________________________________________
280 
281 void
283  float& min_rho, float& max_rho, float& min_z, float& max_z )
284 {
285  // we will test 5 points on both sides ( +/- z)
286  float local[3], global[3];
287 
288  float dX = info.shape[1];
289  float dY = info.shape[2];
290  float dZ = info.shape[3];
291 
292  local[0] = 0; local[1] = 0; local[2] = dZ;
293  m_geom->localToGlobal( info, local, global );
294  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
295 
296  local[0] = dX; local[1] = dY; local[2] = dZ;
297  m_geom->localToGlobal( info, local, global );
298  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
299 
300  local[0] = -dX; local[1] = dY; 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; local[1] = -dY; local[2] = dZ;
305  m_geom->localToGlobal( info, local, global );
306  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
307 
308  local[0] = -dX; local[1] = -dY; local[2] = dZ;
309  m_geom->localToGlobal( info, local, global );
310  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
311 
312  local[0] = 0; local[1] = 0; 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; local[1] = dY; local[2] = -dZ;
317  m_geom->localToGlobal( info, local, global );
318  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
319 
320  local[0] = -dX; local[1] = dY; local[2] = -dZ;
321  m_geom->localToGlobal( info, local, global );
322  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
323 
324  local[0] = dX; local[1] = -dY; 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; local[1] = -dY; local[2] = -dZ;
329  m_geom->localToGlobal( info, local, global );
330  estimateProjectionSize( global, min_rho, max_rho, min_z, max_z );
331 }
332 
333 
334 void
336  float& min_rho, float& max_rho, float& min_z, float& max_z )
337 {
338  double rho = sqrt(global[0] *global[0]+global[1] *global[1]);
339  if ( min_rho > rho ) min_rho = rho;
340  if ( max_rho < rho ) max_rho = rho;
341  if ( min_z > global[2] ) min_z = global[2];
342  if ( max_z < global[2] ) max_z = global[2];
343 }
344 
345 
346 // ATODO:: check white vertex -> shouldn't be relative to background
347 // when detruction ?
348 
349 
350 // ATODO why color is not set in 3D original, why cast to polygonsetprojected after projected ????
351 // is geom color dynamic --- independent of projection manager
352 
353 // NOTE geomtry MuonRhoZAdanced renamed to MuonRhoZ
354 
355 
356 //==============================================================================
357 //==============================================================================
358 
359 
360 
361 void
363 {
364  if( !m_pixelBarrelElements && show )
365  {
366  m_pixelBarrelElements = new TEveElementList("PixelBarrel");
367  AddElement(m_pixelBarrelElements);
368  std::vector<unsigned int> ids = m_geom->getMatchedIds( FWGeometry::Tracker, FWGeometry::PixelBarrel );
369  for( std::vector<unsigned int>::const_iterator id = ids.begin();
370  id != ids.end(); ++id )
371  {
372  TEveGeoShape* shape = m_geom->getEveShape( *id );
373  shape->SetTitle(Form("PixelBarrel %d",*id));
375  m_pixelBarrelElements->AddElement( shape );
376  }
378  }
379 
381  {
382  m_pixelBarrelElements->SetRnrState(show);
383  gEve->Redraw3D();
384  }
385 }
386 
387 void
389 {
390  if( !m_pixelEndcapElements && show )
391  {
392  m_pixelEndcapElements = new TEveElementList("PixelEndcap");
393 
394  std::vector<unsigned int> ids = m_geom->getMatchedIds( FWGeometry::Tracker, FWGeometry::PixelEndcap );
395  for( std::vector<unsigned int>::const_iterator id = ids.begin();
396  id != ids.end(); ++id )
397  {
398  TEveGeoShape* shape = m_geom->getEveShape( *id );
399 
400  shape->SetTitle(Form("PixelEndCap %d",*id));
402  m_pixelEndcapElements->AddElement( shape );
403  }
404 
405  AddElement(m_pixelEndcapElements);
407  }
408 
410  {
411  m_pixelEndcapElements->SetRnrState(show);
412  gEve->Redraw3D();
413  }
414 }
415 
416 
417 void
419 {
420  if( !m_trackerBarrelElements && show )
421  {
422  m_trackerBarrelElements = new TEveElementList("TrackerBarrel");
423 
424  std::vector<unsigned int> ids = m_geom->getMatchedIds( FWGeometry::Tracker, FWGeometry::TIB );
425  for( std::vector<unsigned int>::const_iterator id = ids.begin();
426  id != ids.end(); ++id )
427  {
428  TEveGeoShape* shape = m_geom->getEveShape( *id );
430  m_trackerBarrelElements->AddElement( shape );
431  }
433  for( std::vector<unsigned int>::const_iterator id = ids.begin();
434  id != ids.end(); ++id )
435  {
436  TEveGeoShape* shape = m_geom->getEveShape( *id );
437 
438  shape->SetTitle(Form("TrackerBarrel %d",*id));
440  m_trackerBarrelElements->AddElement( shape );
441  }
442 
443  AddElement(m_trackerBarrelElements);
445  }
446 
448  {
449  m_trackerBarrelElements->SetRnrState(show);
450  gEve->Redraw3D();
451  }
452 }
453 
454 void
456 {
457  if( !m_trackerEndcapElements && show )
458  {
459  m_trackerEndcapElements = new TEveElementList("TrackerEndcap");
460 
461  std::vector<unsigned int> ids = m_geom->getMatchedIds( FWGeometry::Tracker, FWGeometry::TID );
462  for( std::vector<unsigned int>::const_iterator id = ids.begin();
463  id != ids.end(); ++id )
464  {
465  TEveGeoShape* shape = m_geom->getEveShape( *id );
467  m_trackerEndcapElements->AddElement( shape );
468  }
470  for( std::vector<unsigned int>::const_iterator id = ids.begin();
471  id != ids.end(); ++id )
472  {
473  TEveGeoShape* shape = m_geom->getEveShape( *id );
474 
475  shape->SetTitle(Form("TrackerEndcap %d",*id));
477  m_trackerEndcapElements->AddElement( shape );
478  }
479 
480  AddElement(m_trackerEndcapElements);
482  }
483 
485  {
486  m_trackerEndcapElements->SetRnrState(show);
487  gEve->Redraw3D();
488  }
489 }
490 
491 //---------------------------------------------------------
492 void
494 {
495  if( !m_rpcEndcapElements && show )
496  {
497  m_rpcEndcapElements = new TEveElementList("RpcEndcap");
498 
499 
500  std::vector<RPCDetId> ids;
501  int mxSt = m_geom->versionInfo().haveExtraDet("RE4") ? 4:3;
502  for (int region = -1; region <=1; ++ region )
503  {
504  if (region == 0 ) continue;
505  for (int ring = 2; ring <= 3; ++ring) {
506  for (int station = 1; station <= mxSt; ++station ) {
507  int sector = 1;
508  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 1));
509  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 2));
510  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 3));
511  if (ring == 2 && station == 1) { // 2 layers in ring 2 station 1 up
512  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 1));
513  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 2));
514  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 3));
515  }
516  sector = 5;
517  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 1));
518  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 2));
519  ids.push_back(RPCDetId(region, ring, station, sector, 1, 1, 3));
520 
521  if (ring == 2 && station == 1) { // 2 layers in ring 2 station 1 down
522  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 1));
523  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 2));
524  ids.push_back(RPCDetId(region, ring, station, sector, 1, 2, 3));
525  }
526  }
527  }
528  }
529 
530  for (std::vector<RPCDetId>::iterator i = ids.begin(); i != ids.end(); ++i)
531  {
532  TEveGeoShape* shape = m_geom->getEveShape(i->rawId());
534  m_rpcEndcapElements->AddElement(shape);
535  gEve->AddToListTree(shape, true);
536  }
537 
538  AddElement(m_rpcEndcapElements);
540  }
541 
543  {
544  m_rpcEndcapElements->SetRnrState(show);
545  gEve->Redraw3D();
546  }
547 }
548 
549 //______________________________________________________________________________
550 
551 void
553 {
554  // hardcoded gem and me0; need to find better way for different gem geometries
555  if( !m_GEMElements && show ){
556  m_GEMElements = new TEveElementList("GEM");
557 
558  for( Int_t iRegion = GEMDetId::minRegionId; iRegion <= GEMDetId::maxRegionId; iRegion= iRegion+2){
559  int mxSt = m_geom->versionInfo().haveExtraDet("GE2") ? 3:1;
560 
561  for( Int_t iStation = GEMDetId::minStationId; iStation <= mxSt; ++iStation ){
562  Int_t iRing = 1;
563  for( Int_t iLayer = GEMDetId::minLayerId; iLayer <= GEMDetId::maxLayerId ; ++iLayer ){
564  int maxChamber = 36;
565  if (iStation >= 2) maxChamber = 18;
566 
567  for( Int_t iChamber = 1; iChamber <= maxChamber; ++iChamber ){
568  int maxRoll = iChamber%2 ? 9:10;
569  if (iStation == 2) maxRoll = 8;
570  if (iStation == 3) maxRoll = 12;
571 
572  for (Int_t iRoll = GEMDetId::minRollId; iRoll <= maxRoll ; ++iRoll ){
573  GEMDetId id( iRegion, iRing, iStation, iLayer, iChamber, iRoll );
574  TEveGeoShape* shape = m_geom->getEveShape(id.rawId());
575  if (shape){
577  m_GEMElements->AddElement( shape );
578  gEve->AddToListTree(shape, true);
579  }
580  }
581  }
582  }
583  }
584  }
585 
586  AddElement(m_GEMElements);
588  }
589  if (m_GEMElements){
590  m_GEMElements->SetRnrState(show);
591  gEve->Redraw3D();
592  }
593 }
594 
595 void
597 {
598  if( !m_ME0Elements && show ){
599  m_ME0Elements = new TEveElementList("ME0");
600 
601  for( Int_t iRegion = ME0DetId::minRegionId; iRegion <= ME0DetId::maxRegionId; iRegion= iRegion+2 ){
602  for( Int_t iLayer = 1; iLayer <= 6 ; ++iLayer ){
603  for( Int_t iChamber = 1; iChamber <= 18; ++iChamber ){
604  Int_t iRoll = 1;
605  ME0DetId id( iRegion, iLayer, iChamber, iRoll );
606  TEveGeoShape* shape = m_geom->getEveShape(id.rawId());
607  if (shape){
609  m_ME0Elements->AddElement( shape );
610  gEve->AddToListTree(shape, true);
611  }
612  }
613  }
614  }
615 
616  AddElement(m_ME0Elements);
618  }
619  if (m_ME0Elements){
620  m_ME0Elements->SetRnrState(show);
621  gEve->Redraw3D();
622  }
623 }
624 
625 //-------------------------------------
626 
627 void FWRPZViewGeometry::importNew(TEveElementList* x)
628 {
629  TEveProjected* proj = *BeginProjecteds();
630  proj->GetManager()->SubImportElements(x, proj->GetProjectedAsElement());
631 
632 }
const double TwoPi
type
Definition: HCALResponse.h:21
TEveElementList * m_pixelBarrelElements
int i
Definition: DBlmapReader.cc:9
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:358
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
assert(m_qm.get())
static float caloZ2(bool offset=true)
Definition: Context.cc:223
static const int minRegionId
Definition: GEMDetId.h:90
static const int maxRegionId
Definition: ME0DetId.h:87
const VersionInfo & versionInfo() const
Definition: FWGeometry.h:117
static const int maxLayerId
Definition: GEMDetId.h:103
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:379
static float caloR2(bool offset=true)
Definition: Context.cc:213
TEveElement * makeMuonGeometryRhoPhi()
void importNew(TEveElementList *x)
TEveElementList * m_trackerBarrelElements
void estimateProjectionSize(const float *, float &, float &, float &, float &)
TEveGeoShape * getEveShape(unsigned int id) const
Definition: FWGeometry.cc:253
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:328
static int maxEndcapId()
Definition: CSCDetId.h:237
static float caloR1(bool offset=true)
Definition: Context.cc:208
static const int minRollId
Definition: GEMDetId.h:105
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:96
TEveElement * makeCaloOutlineRhoZ()
void showTrackerBarrel(bool)
TEveElementList * m_trackerEndcapElements
std::vector< unsigned int > getMatchedIds(Detector det, SubDetector subdet) const
Definition: FWGeometry.cc:197
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:102
static const int maxRegionId
Definition: GEMDetId.h:91
Color_t geomColor(FWGeomColorIndex) const
const fireworks::Context & m_context
virtual ~FWRPZViewGeometry()
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:107