CMS 3D CMS Logo

VisTrackerGeometryTwig.cc

Go to the documentation of this file.
00001 //<<<<<< INCLUDES                                                       >>>>>>
00002 
00003 #include "VisFramework/VisEventSetup/interface/VisTrackerGeometryTwig.h"
00004 #include "VisFramework/VisEventSetup/interface/VisEventSetupService.h"
00005 #include "Iguana/Models/interface/IgTextRep.h"
00006 #include "Iguana/GLModels/interface/Ig3DRep.h"
00007 #include "Iguana/GLModels/interface/IgLegoRep.h"
00008 #include "Iguana/GLModels/interface/IgRPhiRep.h"
00009 #include "Iguana/GLModels/interface/IgRZRep.h"
00010 #include "Iguana/Studio/interface/IgQtLock.h"
00011 #include <classlib/utils/DebugAids.h>
00012 
00013 //<<<<<< PRIVATE DEFINES                                                >>>>>>
00014 //<<<<<< PRIVATE CONSTANTS                                              >>>>>>
00015 //<<<<<< PRIVATE TYPES                                                  >>>>>>
00016 //<<<<<< PRIVATE VARIABLE DEFINITIONS                                   >>>>>>
00017 //<<<<<< PUBLIC VARIABLE DEFINITIONS                                    >>>>>>
00018 //<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
00019 //<<<<<< PRIVATE FUNCTION DEFINITIONS                                   >>>>>>
00020 //<<<<<< PUBLIC FUNCTION DEFINITIONS                                    >>>>>>
00021 //<<<<<< MEMBER FUNCTION DEFINITIONS                                    >>>>>>
00022 
00023 VisTrackerGeometryTwig::VisTrackerGeometryTwig (IgState *state, IgTwig *parent,
00024                                                 const std::string &name /* = "" */)
00025     : VisQueuedTwig (state, parent, name),
00026       m_3dDet (NULL),
00027       m_rzDet (NULL),
00028       m_rphiDet (NULL),
00029       m_3Ddone (false),
00030       m_rzdone (false),
00031       m_rphidone (false),
00032       m_annotate (state, lat::CreateCallback (this, &VisTrackerGeometryTwig::invalidate))
00033 {}
00034 
00036 VisTrackerGeometryTwig::~VisTrackerGeometryTwig (void) 
00037 {
00038     if (m_3dDet != NULL) m_3dDet->unref ();
00039     if (m_rzDet != NULL) m_rzDet->unref ();
00040     if (m_rphiDet != NULL) m_rphiDet->unref ();
00041 }
00042 
00043 void
00044 VisTrackerGeometryTwig::invalidate (void)
00045 {
00046     if (m_3dDet != NULL) m_3dDet->unref ();
00047     if (m_rzDet != NULL) m_rzDet->unref ();
00048     if (m_rphiDet != NULL) m_rphiDet->unref ();
00049     m_3Ddone = false;    
00050     m_rzdone = false;
00051     m_rphidone = false;
00052 
00053     VisQueuedTwig::onBaseInvalidate ();
00054 }
00055 
00056 void
00057 VisTrackerGeometryTwig::onNewEvent (const edm::Event &event,
00058                                     const edm::EventSetup &eventSetup)
00059 {
00060     // Get debugging dump.
00061     VisQueuedTwig::onNewEvent (event, eventSetup);
00062 
00063     VisEventSetupService *esService = VisEventSetupService::get (state ());
00064     ASSERT (esService);
00065 
00066     if (esService->trackerGeomChanged ())
00067         invalidate ();
00068 }
00069 
00070 void
00071 VisTrackerGeometryTwig::update (IgTextRep *rep)
00072 {
00073     // Get debugging dump.
00074     VisQueuedTwig::update (rep);
00075 
00076     // Prepare property description.
00077     std::ostringstream  text;
00078     text << "CMS Tracker Geometry: ";
00079     text << this->name () << "<br>";
00080     
00081     text << "<table width='100%' border=1>"
00082          << "<TR align = center>"
00083          << "<TH>#</TH>"
00084          << "<TH>Det ID</TH>"
00085          << "<TH>Position</TH>"
00086          << "</TR>";
00087 
00088     VisEventSetupService *esService = VisEventSetupService::get (state ());
00089     ASSERT (esService);
00090     
00091     text << esService->trackerTextRep (this->name ());
00092     text << "</table>";
00093 
00094     IgQtLock ();
00095     rep->setText (text.str ());
00096 }
00097 
00098 void
00099 VisTrackerGeometryTwig::update (Ig3DRep *rep)
00100 {
00101     // Get debugging dump.
00102     VisQueuedTwig::update (rep);
00103 
00104     IgQtLock ();
00105     rep->clear ();
00106 
00107     if (! m_3Ddone)
00108     {
00109         VisEventSetupService *esService = VisEventSetupService::get (state ());
00110         ASSERT (esService);
00111 
00112         m_3dDet = esService->buildTracker (VisEventSetupService::FullDet, this->name ());
00113 
00114         if (m_3dDet == NULL) return;
00115 
00116         if (m_annotate.value ())
00117         {           
00118             SoSeparator *sep = esService->annotateTracker (VisEventSetupService::FullDet, this->name ());
00119             if (sep != NULL) m_3dDet->addChild (sep);       
00120         }
00121 
00122         m_3dDet->ref ();
00123         m_3Ddone = true;        
00124     }   
00125     rep->node ()->addChild (m_3dDet);
00126 }
00127 
00128 void
00129 VisTrackerGeometryTwig::update (IgRPhiRep *rep)
00130 {
00131     // Get debugging dump.
00132     VisQueuedTwig::update (rep);
00133 
00134     IgQtLock ();
00135     rep->clear ();
00136     
00137     if (! m_rphidone)
00138     {
00139         VisEventSetupService *esService = VisEventSetupService::get (state ());
00140         ASSERT (esService);
00141 
00142         m_rphiDet = esService->buildTracker (VisEventSetupService::RPhiDet, this->name ());
00143 
00144         if (m_rphiDet == NULL) return;
00145 
00146         if (m_annotate.value ())
00147         {           
00148             SoSeparator *sep = esService->annotateTracker (VisEventSetupService::RPhiDet, this->name ());
00149             if (sep != NULL) m_rphiDet->addChild (sep);     
00150         }
00151         
00152         m_rphiDet->ref ();
00153         m_rphidone = true;
00154     }    
00155     rep->node ()->addChild (m_rphiDet);
00156 }
00157 
00158 void
00159 VisTrackerGeometryTwig::update (IgRZRep *rep)
00160 {
00161     // Get debugging dump.
00162     VisQueuedTwig::update (rep);
00163 
00164     IgQtLock ();
00165     rep->clear ();
00166     
00167     if (! m_rzdone)
00168     {
00169         VisEventSetupService *esService = VisEventSetupService::get (state ());
00170         ASSERT (esService);
00171 
00172         m_rzDet = esService->buildTracker (VisEventSetupService::RZDet, this->name ());
00173 
00174         if (m_rzDet == NULL) return;
00175 
00176         if (m_annotate.value ())
00177         {
00178             SoSeparator *sep = esService->annotateTracker (VisEventSetupService::RZDet, this->name ());
00179             if (sep != NULL) m_rzDet->addChild (sep);
00180         }
00181 
00182         m_rzDet->ref ();        
00183         m_rzdone = true;        
00184     }
00185     rep->node ()->addChild (m_rzDet);
00186 }

Generated on Tue Jun 9 17:49:49 2009 for CMSSW by  doxygen 1.5.4