#include <VisReco/VisHcal/interface/VisHFRecHitTwig.h>
Public Member Functions | |
virtual void | onNewEvent (const edm::Event &event, const edm::EventSetup &eventSetup) |
virtual void | twigChanged (void) |
virtual void | update (IgRZRep *rep) |
virtual void | update (IgRPhiRep *rep) |
virtual void | update (IgTextRep *rep) |
virtual void | update (IgLegoRep *rep) |
virtual void | update (Ig3DRep *rep) |
VisHFRecHitTwig (IgState *state, IgTwig *parent, const std::string &name="", const std::string &friendlyName="", const std::string &moduleLabel="", const std::string &instanceName="", const std::string &processName="", unsigned color=0x0066ff00) | |
Private Attributes | |
VisCaloAnnotation | m_annotation |
VisBinningStrategy | m_binning |
VisEnergyCut | m_cut |
VisCaloEnergyScale | m_escale |
const std::string | m_friendlyName |
const std::string | m_instanceName |
const std::string | m_moduleLabel |
std::string | m_name |
VisPhiDelta | m_phiDelta |
VisPhiStart | m_phiStart |
const std::string | m_processName |
std::vector< HFRecHit > | m_recHits |
unsigned | m_rgba |
VisLegoScale | m_scale |
std::string | m_text |
Definition at line 26 of file VisHFRecHitTwig.h.
VisHFRecHitTwig::VisHFRecHitTwig | ( | IgState * | state, | |
IgTwig * | parent, | |||
const std::string & | name = "" , |
|||
const std::string & | friendlyName = "" , |
|||
const std::string & | moduleLabel = "" , |
|||
const std::string & | instanceName = "" , |
|||
const std::string & | processName = "" , |
|||
unsigned | color = 0x0066ff00 | |||
) |
Definition at line 67 of file VisHFRecHitTwig.cc.
References createThisTwig(), edm::TypeID::friendlyClassName(), DBSPlugin::get(), and VisTwigFactroyService::registerTwig().
00074 : VisQueuedTwig (state, parent, name), 00075 m_name (name), 00076 m_friendlyName (friendlyName), 00077 m_moduleLabel (moduleLabel), 00078 m_instanceName (instanceName), 00079 m_processName (processName), 00080 m_binning (state, lat::CreateCallback (this, &VisHFRecHitTwig::twigChanged)), 00081 m_annotation (state, lat::CreateCallback (this, &VisHFRecHitTwig::twigChanged)), 00082 m_escale (state, lat::CreateCallback (this, &VisHFRecHitTwig::twigChanged)), 00083 m_cut (state, lat::CreateCallback (this, &VisHFRecHitTwig::twigChanged)), 00084 m_scale (state, lat::CreateCallback (this, &VisHFRecHitTwig::twigChanged)), 00085 m_phiStart (state, lat::CreateCallback (this, &VisHFRecHitTwig::twigChanged)), 00086 m_phiDelta (state, lat::CreateCallback (this, &VisHFRecHitTwig::twigChanged)), 00087 m_text ("no info"), 00088 m_recHits (880), 00089 m_rgba (colour) 00090 { 00091 VisTwigFactroyService *tfService = VisTwigFactroyService::get (state); 00092 if (! tfService) 00093 { 00094 tfService = new VisTwigFactroyService (state); 00095 } 00096 edm::TypeID recHitCollID (typeid (HFRecHitCollection)); 00097 tfService->registerTwig (recHitCollID.friendlyClassName (), &createThisTwig); 00098 }
void VisHFRecHitTwig::onNewEvent | ( | const edm::Event & | event, | |
const edm::EventSetup & | eventSetup | |||
) | [virtual] |
Reimplemented from VisQueuedTwig.
Definition at line 105 of file VisHFRecHitTwig.cc.
References cms::Exception::append(), arg, edm::SortedCollection< T, SORT >::begin(), c, e, edm::SortedCollection< T, SORT >::end(), exception, DBSPlugin::get(), i, edm::Event::id(), m_friendlyName, m_instanceName, m_moduleLabel, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_processName, m_recHits, m_text, IgSimpleTwig::name(), VisQueuedTwig::onBaseInvalidate(), VisQueuedTwig::onNewEvent(), edm::SortedCollection< T, SORT >::size(), and VisQueuedTwig::state().
00107 { 00108 // Get debugging dump. 00109 VisQueuedTwig::onNewEvent (event, eventSetup); 00110 00111 m_recHits.clear (); 00112 00113 m_text = (QString ("Run # %1, event # %2") 00114 .arg (event.id ().run ()) 00115 .arg (event.id ().event ()).latin1 ()); 00116 00117 std::vector<edm::Handle<HFRecHitCollection> > recHits; 00118 try 00119 { 00120 QApplication::setOverrideCursor (Qt::waitCursor); 00121 00122 if (IgQtAppStatusBarService *sbar = IgQtAppStatusBarService::get (state ())) 00123 sbar->setMessage ("Retrieving an HFRecHitCollection..."); 00124 00125 if ((! m_friendlyName.empty ()) || (! m_moduleLabel.empty ()) || (! m_instanceName.empty ()) || (! m_processName.empty ())) 00126 { 00127 VisEventSelector visSel (m_friendlyName, m_moduleLabel, m_instanceName, m_processName); 00128 event.getMany (visSel, recHits); 00129 } 00130 00131 if (IgQtAppStatusBarService *sbar = IgQtAppStatusBarService::get (state ())) 00132 sbar->setMessage ("HFRecHitCollection done."); 00133 00134 QApplication::restoreOverrideCursor (); 00135 } 00136 catch (cms::Exception& e) 00137 { 00138 e.append (" from VisHFRecHitTwig::onNewEvent "); 00139 e.append (this->name ()); 00140 00141 if (this->m_onCmsException) 00142 this->m_onCmsException (&e); 00143 } 00144 catch (lat::Error &e) 00145 { 00146 if (this->m_onError) 00147 this->m_onError (&e); 00148 } 00149 catch (std::exception &e) 00150 { 00151 if (this->m_onException) 00152 this->m_onException (&e); 00153 } 00154 catch (...) 00155 { 00156 if (this->m_onUnhandledException) 00157 this->m_onUnhandledException (); 00158 } 00159 if (! recHits.empty ()) 00160 { 00161 for (std::vector<edm::Handle<HFRecHitCollection> >::iterator i = recHits.begin (), iEnd = recHits.end (); i != iEnd; ++i) 00162 { 00163 const HFRecHitCollection& c = *(*i); 00164 QString sizeStr = (QString ("%1").arg (c.size ())); 00165 QString nameStr = QString (this->name ()); 00166 int ib = nameStr.find ("["); 00167 int ie = nameStr.find ("]"); 00168 nameStr.replace (ib + 1, ie - 1, sizeStr); 00169 this->name (nameStr); 00170 for (std::vector<HFRecHit>::const_iterator ci = c.begin (), ciEnd = c.end (); 00171 ci != ciEnd; ++ci) 00172 { 00173 m_recHits.push_back (*ci); 00174 } 00175 } 00176 } 00177 00178 VisQueuedTwig::onBaseInvalidate (); 00179 00180 if (IgQtAppStatusBarService *sbar = IgQtAppStatusBarService::get (state ())) 00181 sbar->setMessage (QString (m_text)); 00182 }
Definition at line 101 of file VisHFRecHitTwig.cc.
References IgRepSet::invalidate(), and IgTwig::SELF_MASK.
00102 { IgRepSet::invalidate (this, SELF_MASK); }
Reimplemented from VisQueuedTwig.
Definition at line 422 of file VisHFRecHitTwig.cc.
References cms::Exception::append(), ASSERT, TestMuL1L2Filter_cff::cerr, Ig3DBaseRep::clear(), e, lat::endl(), IgSoRectColHist::energies, relval_parameters_module::energy, exception, IgSoRectColHist::faceColors, DBSPlugin::get(), VisEventSetupService::getBinNumber(), i, IgSoRectColHist::layer, IgSoRectColHist::logScale, m_binning, m_cut, m_escale, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_recHits, m_rgba, Ig3DBaseRep::node(), IgSoRectColHist::numR, IgSoRectColHist::numZ, IgSoRectColHist::radiusR, IgSoRectColHist::radiusZ, IgSoRectColHist::scaleFactor, VisQueuedTwig::state(), IgSbColorMap::unpack(), VisQueuedTwig::update(), and VisActiveConfigurable< T >::value().
00423 { 00424 // Get debugging dump. 00425 VisQueuedTwig::update (rep); 00426 00427 IgQtLock (); 00428 rep->clear (); 00429 00430 SoSeparator *sep = new SoSeparator; 00431 00432 SoMaterial *mat = new SoMaterial; 00433 float rgbcomponents [4]; 00434 IgSbColorMap::unpack (m_rgba, rgbcomponents); 00435 mat->ambientColor.setValue (SbColor (rgbcomponents)); 00436 mat->diffuseColor.setValue (SbColor (rgbcomponents)); 00437 mat->specularColor.setValue (SbColor (rgbcomponents)); 00438 mat->emissiveColor.setValue (SbColor (rgbcomponents)); 00439 sep->addChild (mat); 00440 00441 VisEventSetupService *esService = VisEventSetupService::get (state ()); 00442 ASSERT (esService); 00443 00444 unsigned binNumber = 0; 00445 const unsigned nBinsZ = 2; 00446 const unsigned nBinsR = 2*13; 00447 const unsigned nbrOfBins = 2 * (nBinsZ + nBinsR); 00448 const float radiusR = 1.29f; 00449 const float radiusZ = 11.f; 00450 // const float maxEta = 5.0; 00451 // const float minEta = 2.72; 00452 00453 std::vector<float> energies (nbrOfBins * 2); // times 2 for the other energy (which is not used) 00454 00455 try 00456 { 00457 if (! m_recHits.empty ()) 00458 { 00459 for (std::vector<HFRecHit>::const_iterator i = m_recHits.begin (), iEnd = m_recHits.end (); i != iEnd; ++i) 00460 { 00461 float energy = (*i).energy (); 00462 if (energy > m_cut.value ()) 00463 { 00464 binNumber = esService->getBinNumber ((*i).detid (), nBinsR, nBinsZ, radiusR, radiusZ); 00465 if (binNumber < nbrOfBins) 00466 { 00467 if (m_binning.value () == "project") 00468 (energies[binNumber] > energy) ? energies[binNumber] : energies[binNumber] = energy; 00469 else 00470 energies[binNumber] += energy; 00471 } 00472 else 00473 { 00474 std::cerr << "Bin number (" << binNumber << ") exceeds the number of bins (" << nbrOfBins << ")"<< std::endl; 00475 } 00476 } 00477 } 00478 00479 if (*max_element (energies.begin (), energies.end ()) > 0.0) 00480 { 00481 SoMaterial *mat = new SoMaterial; 00482 mat->ambientColor.setValue (0.0, 0.4, 1.0); 00483 mat->diffuseColor.setValue (0.0, 0.1, 1.0); 00484 mat->specularColor.setValue (0.0, 0.1, 1.0); 00485 mat->emissiveColor.setValue (0.0, 0.1, 1.0); 00486 00487 SoDrawStyle *drawStyle = new SoDrawStyle; 00488 drawStyle->lineWidth.setValue (2.0); 00489 00490 IgSoRectColHist* hist = new IgSoRectColHist; 00491 hist->radiusR = radiusR; 00492 hist->radiusZ = radiusZ; 00493 hist->numR = nBinsR; 00494 hist->numZ = nBinsZ; 00495 hist->energies.setValues (0, energies.size(), &energies [0]); 00496 hist->logScale = false; 00497 hist->layer = -5.0; 00498 hist->scaleFactor = m_escale.value (); 00499 00500 std::vector<SbColor> colors (4); 00501 colors[0] = SbColor (0.0, 0.3, 1.0); 00502 colors[1] = SbColor (1.0, 0.0, 1.0); 00503 colors[2] = SbColor (1.0, 0.4, 0.0); 00504 colors[3] = SbColor (1.0, 1.0, 0.0); 00505 00506 hist->faceColors.setValues (0, colors.size (), &colors[0]); 00507 sep->addChild (mat); 00508 sep->addChild (drawStyle); 00509 sep->addChild (hist); 00510 } 00511 } 00512 } 00513 catch (cms::Exception& e) 00514 { 00515 e.append (" from VisHFRecHitTwig::update(IgRZRep*) "); 00516 e.append (this->name ()); 00517 00518 if (this->m_onCmsException) 00519 this->m_onCmsException (&e); 00520 } 00521 catch (lat::Error &e) 00522 { 00523 if (this->m_onError) 00524 this->m_onError (&e); 00525 } 00526 catch (std::exception &e) 00527 { 00528 if (this->m_onException) 00529 this->m_onException (&e); 00530 } 00531 catch (...) 00532 { 00533 if (this->m_onUnhandledException) 00534 this->m_onUnhandledException (); 00535 } 00536 00537 rep->node ()->addChild (sep); 00538 }
Reimplemented from VisQueuedTwig.
Definition at line 415 of file VisHFRecHitTwig.cc.
References VisQueuedTwig::update().
00416 { 00417 // Get debugging dump. 00418 VisQueuedTwig::update (rep); 00419 }
Reimplemented from VisQueuedTwig.
Definition at line 185 of file VisHFRecHitTwig.cc.
References cms::Exception::append(), e, relval_parameters_module::energy, exception, i, m_cut, m_friendlyName, m_instanceName, m_moduleLabel, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_processName, m_recHits, m_text, IgSimpleTwig::name(), IgTextRep::setText(), VisHcalSubdetector::subDetName(), VisQueuedTwig::update(), and VisActiveConfigurable< T >::value().
00186 { 00187 // Get debugging dump. 00188 VisQueuedTwig::update (rep); 00189 00190 // Prepare property description. 00191 std::ostringstream text; 00192 text << this->name () << " from "; 00193 text << m_text << "<br>"; 00194 00195 if (m_friendlyName.empty () && m_moduleLabel.empty () && m_instanceName.empty () && m_processName.empty ()) 00196 { 00197 text << "Please, select the branches of this Twig for more information."; 00198 } 00199 else 00200 { 00201 text << "Displayed only above " << m_cut.value () << " GeV:<br>"; 00202 00203 text << "<table width='100%' border=1>" 00204 << "<TR align = center>" 00205 << "<TH>Number</TH>" 00206 << "<TH>Energy</TH>" 00207 << "<TH>Time</TH>" 00208 << "<TH>Subdetector</TH>" 00209 << "<TH>ietaAbs</TH>" 00210 << "<TH>ieta</TH>" 00211 << "<TH>iphi [rad]</TH>" 00212 << "<TH>Depth</TH>" 00213 << "</TR>"; 00214 text << setiosflags (std::ios::showpoint | std::ios::fixed); 00215 text.setf (std::ios::right, std::ios::adjustfield); 00216 00217 int nDigis = 0; 00218 try 00219 { 00220 for (std::vector<HFRecHit>::const_iterator i = m_recHits.begin (), iEnd = m_recHits.end (); i != iEnd; ++i) 00221 { 00222 float energy = (*i).energy (); 00223 if (energy > m_cut.value ()) 00224 { 00225 text << "<TR align = right>" 00226 << "<TD>" << std::setw (3) << nDigis++ << "</TD>" 00227 << "<TD>" << std::setw (5) << std::setprecision (3) << energy << "</TD>" 00228 << "<TD>" << std::setw (5) << std::setprecision (3) << (*i).time () << "</TD>" 00229 << "<TD>" << std::setw (2) << VisHcalSubdetector::subDetName ((*i).id ().subdet ()) << "</TD>" 00230 << "<TD>" << std::setw (5) << std::setprecision (3) << (*i).id ().ietaAbs () << "</TD>" 00231 << "<TD>" << std::setw (6) << std::setprecision (3) << (*i).id ().ieta () << "</TD>" 00232 << "<TD>" << std::setw (5) << std::setprecision (3) << (*i).id ().iphi () << "</TD>" 00233 << "<TD>" << std::setw (5) << std::setprecision (3) << (*i).id ().depth() << "</TD>" 00234 << "</TR>"; 00235 } 00236 } 00237 } 00238 catch (cms::Exception& e) 00239 { 00240 e.append (" from VisHFRecHitTwig::update(IgTextRep*) "); 00241 e.append (this->name ()); 00242 00243 if (this->m_onCmsException) 00244 this->m_onCmsException (&e); 00245 } 00246 catch (lat::Error &e) 00247 { 00248 if (this->m_onError) 00249 this->m_onError (&e); 00250 } 00251 catch (std::exception &e) 00252 { 00253 if (this->m_onException) 00254 this->m_onException (&e); 00255 } 00256 catch (...) 00257 { 00258 if (this->m_onUnhandledException) 00259 this->m_onUnhandledException (); 00260 } 00261 00262 text << "</table>"; 00263 } 00264 00265 // Send it over. 00266 IgQtLock (); 00267 rep->setText (text.str ()); 00268 }
Reimplemented from VisQueuedTwig.
Definition at line 353 of file VisHFRecHitTwig.cc.
References cms::Exception::append(), Ig3DBaseRep::clear(), e, IgSoTower::energy, eta, exception, i, m_cut, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_recHits, m_scale, Ig3DBaseRep::node(), phi, IgSoTower::position, IgSoTower::scaleFactor, VisQueuedTwig::update(), and VisActiveConfigurable< T >::value().
00354 { 00355 // Get debugging dump. 00356 VisQueuedTwig::update (rep); 00357 00358 IgQtLock (); 00359 rep->clear (); 00360 00361 SoSeparator *sep = new SoSeparator; 00362 00363 try 00364 { 00365 if (! m_recHits.empty ()) 00366 { 00367 for (std::vector<HFRecHit>::const_iterator i = m_recHits.begin (), iEnd = m_recHits.end (); i != iEnd; ++i) 00368 { 00369 float et = (*i).energy (); 00370 if (fabs (et) > m_cut.value ()) 00371 { 00372 int iphi = (*i).id ().iphi (); 00373 int ieta = (*i).id ().ieta (); 00374 00375 float phi = (iphi - 1) * 0.087 + 0.087 / 2.0; 00376 float eta = ieta * 0.087 + 0.087 / 2.0; 00377 00378 IgSoTower *tower = new IgSoTower; 00379 tower->position = SbVec2f (phi, eta); // eta, phi 00380 tower->scaleFactor = m_scale.value (); 00381 tower->energy = et; 00382 sep->addChild (tower); 00383 } 00384 } 00385 } 00386 } 00387 catch (cms::Exception& e) 00388 { 00389 e.append (" from VisHFRecHitTwig::update(IgLegoRep *) "); 00390 e.append (this->name ()); 00391 00392 if (this->m_onCmsException) 00393 this->m_onCmsException (&e); 00394 } 00395 catch (lat::Error &e) 00396 { 00397 if (this->m_onError) 00398 this->m_onError (&e); 00399 } 00400 catch (std::exception &e) 00401 { 00402 if (this->m_onException) 00403 this->m_onException (&e); 00404 } 00405 catch (...) 00406 { 00407 if (this->m_onUnhandledException) 00408 this->m_onUnhandledException (); 00409 } 00410 00411 rep->node ()->addChild (sep); 00412 }
Reimplemented from VisQueuedTwig.
Definition at line 271 of file VisHFRecHitTwig.cc.
References cms::Exception::append(), ASSERT, Ig3DBaseRep::clear(), e, relval_parameters_module::energy, exception, DBSPlugin::get(), VisEventSetupService::getCorners(), i, m_cut, m_escale, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_recHits, m_rgba, Ig3DBaseRep::node(), EZArrayFL< T >::size(), VisQueuedTwig::state(), IgSbColorMap::unpack(), VisQueuedTwig::update(), VisActiveConfigurable< T >::value(), x, y, and z.
00272 { 00273 // Get debugging dump. 00274 VisQueuedTwig::update (rep); 00275 00276 IgQtLock (); 00277 rep->clear (); 00278 00279 SoSeparator *sep = new SoSeparator; 00280 00281 SoMaterial *mat = new SoMaterial; 00282 float rgbcomponents [4]; 00283 IgSbColorMap::unpack (m_rgba, rgbcomponents); 00284 mat->diffuseColor.setValue (SbColor (rgbcomponents)); 00285 sep->addChild (mat); 00286 00287 if (! m_recHits.empty ()) 00288 { 00289 VisEventSetupService *esService = VisEventSetupService::get (state ()); 00290 ASSERT (esService); 00291 00292 try 00293 { 00294 for (std::vector<HFRecHit>::const_iterator i = m_recHits.begin (), iEnd = m_recHits.end (); i != iEnd; ++i) 00295 { 00296 float energy = (*i).energy (); 00297 if (energy > m_cut.value ()) 00298 { 00299 const CaloCellGeometry::CornersVec& corners = esService->getCorners ((*i).detid ()); 00300 ASSERT (corners.size () == 8); 00301 00302 IgSoCrystalHit *crystalHit = new IgSoCrystalHit; 00303 crystalHit->energy.setValue (energy); 00304 00305 crystalHit->scale.setValue (m_escale.value ()); 00306 crystalHit->relativeWidth.setValue (0.9); 00307 crystalHit->drawCrystal.setValue (false); 00308 crystalHit->drawHit.setValue (true); 00309 00310 crystalHit->front1.setValue (corners [0].x () / 100.0, corners [0].y () / 100.0, corners [0].z () / 100.0); 00311 crystalHit->front2.setValue (corners [1].x () / 100.0, corners [1].y () / 100.0, corners [1].z () / 100.0); 00312 crystalHit->front3.setValue (corners [2].x () / 100.0, corners [2].y () / 100.0, corners [2].z () / 100.0); 00313 crystalHit->front4.setValue (corners [3].x () / 100.0, corners [3].y () / 100.0, corners [3].z () / 100.0); 00314 00315 crystalHit->back1.setValue (corners [4].x () / 100.0, corners [4].y () / 100.0, corners [4].z () / 100.0); 00316 crystalHit->back2.setValue (corners [5].x () / 100.0, corners [5].y () / 100.0, corners [5].z () / 100.0); 00317 crystalHit->back3.setValue (corners [6].x () / 100.0, corners [6].y () / 100.0, corners [6].z () / 100.0); 00318 crystalHit->back4.setValue (corners [7].x () / 100.0, corners [7].y () / 100.0, corners [7].z () / 100.0); 00319 00320 sep->addChild (crystalHit); 00321 } 00322 } 00323 } 00324 catch (cms::Exception& e) 00325 { 00326 e.append (" from VisHFRecHitTwig::update(Ig3DRep*) "); 00327 e.append (this->name ()); 00328 00329 if (this->m_onCmsException) 00330 this->m_onCmsException (&e); 00331 } 00332 catch (lat::Error &e) 00333 { 00334 if (this->m_onError) 00335 this->m_onError (&e); 00336 } 00337 catch (std::exception &e) 00338 { 00339 if (this->m_onException) 00340 this->m_onException (&e); 00341 } 00342 catch (...) 00343 { 00344 if (this->m_onUnhandledException) 00345 this->m_onUnhandledException (); 00346 } 00347 } 00348 00349 rep->node ()->addChild (sep); 00350 }
Definition at line 56 of file VisHFRecHitTwig.h.
VisBinningStrategy VisHFRecHitTwig::m_binning [private] |
VisEnergyCut VisHFRecHitTwig::m_cut [private] |
VisCaloEnergyScale VisHFRecHitTwig::m_escale [private] |
const std::string VisHFRecHitTwig::m_friendlyName [private] |
const std::string VisHFRecHitTwig::m_instanceName [private] |
const std::string VisHFRecHitTwig::m_moduleLabel [private] |
std::string VisHFRecHitTwig::m_name [private] |
VisPhiDelta VisHFRecHitTwig::m_phiDelta [private] |
Definition at line 61 of file VisHFRecHitTwig.h.
VisPhiStart VisHFRecHitTwig::m_phiStart [private] |
Definition at line 60 of file VisHFRecHitTwig.h.
const std::string VisHFRecHitTwig::m_processName [private] |
std::vector<HFRecHit> VisHFRecHitTwig::m_recHits [private] |
unsigned VisHFRecHitTwig::m_rgba [private] |
VisLegoScale VisHFRecHitTwig::m_scale [private] |
std::string VisHFRecHitTwig::m_text [private] |