![]() |
![]() |
#include <VisSimulation/VisSimTracker/interface/VisTkSimTrackTwig.h>
Public Member Functions | |
virtual void | onNewEvent (const edm::Event &event, const edm::EventSetup &eventSetup) |
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) |
VisTkSimTrackTwig (IgState *state, IgTwig *parent, const std::string &name="", const std::string &friendlyName="", const std::string &moduleLabel="", const std::string &instanceName="", const std::string &processName="") | |
Private Attributes | |
unsigned int | m_detType |
const std::string | m_friendlyName |
const std::string | m_instanceName |
const std::string | m_moduleLabel |
edm::ESHandle< TrackerGeometry > | m_pDD |
const std::string | m_processName |
unsigned int | m_subDetType |
std::string | m_text |
std::vector< PSimHit > | m_trackerHits |
std::vector< std::vector < PSimHit > > | m_trackerHitsSorted |
Definition at line 29 of file VisTkSimTrackTwig.h.
VisTkSimTrackTwig::VisTkSimTrackTwig | ( | IgState * | state, | |
IgTwig * | parent, | |||
const std::string & | name = "" , |
|||
const std::string & | friendlyName = "" , |
|||
const std::string & | moduleLabel = "" , |
|||
const std::string & | instanceName = "" , |
|||
const std::string & | processName = "" | |||
) |
Definition at line 75 of file VisTkSimTrackTwig.cc.
References createThisTwig(), edm::TypeID::friendlyClassName(), DBSPlugin::get(), and VisTwigFactroyService::registerTwig().
00081 : VisQueuedTwig (state, parent, name), 00082 m_text (name), 00083 m_friendlyName (friendlyName), 00084 m_moduleLabel (moduleLabel), 00085 m_instanceName (instanceName), 00086 m_processName (processName) 00087 { 00088 VisTwigFactroyService *tfService = VisTwigFactroyService::get (state); 00089 if (! tfService) 00090 { 00091 tfService = new VisTwigFactroyService (state); 00092 } 00093 edm::TypeID simtrackID (typeid (edm::PSimHitContainer)); 00094 tfService->registerTwig (simtrackID.friendlyClassName (), &createThisTwig); 00095 }
void VisTkSimTrackTwig::onNewEvent | ( | const edm::Event & | event, | |
const edm::EventSetup & | eventSetup | |||
) | [virtual] |
Reimplemented from VisQueuedTwig.
Definition at line 98 of file VisTkSimTrackTwig.cc.
References arg, c, IgCompoundTwig::clear(), e, exception, edm::EventSetup::get(), i, edm::Event::id(), edm::ESHandle< T >::isValid(), m_friendlyName, m_instanceName, m_moduleLabel, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_processName, m_text, m_trackerHits, m_trackerHitsSorted, VisQueuedTwig::onBaseInvalidate(), VisQueuedTwig::onNewEvent(), python::multivaluedict::sort(), sort_TOF(), and track.
00100 { 00101 // Get debugging dump. 00102 VisQueuedTwig::onNewEvent (event, eventSetup); 00103 00104 m_trackerHits.clear (); 00105 00106 m_text = (QString ("Run # %1, event # %2") 00107 .arg (event.id ().run ()) 00108 .arg (event.id ().event ()).latin1 ()); 00109 00110 std::vector<edm::Handle<edm::PSimHitContainer> > hitCollections; 00111 00112 try 00113 { 00114 if ((! m_friendlyName.empty ()) || (! m_moduleLabel.empty ()) || (! m_instanceName.empty ()) || (! m_processName.empty ())) 00115 { 00116 VisEventSelector visSel (m_friendlyName, m_moduleLabel, m_instanceName, m_processName); 00117 event.getMany (visSel, hitCollections); 00118 } 00119 else 00120 { 00121 event.getManyByType (hitCollections); 00122 } 00123 } 00124 catch (cms::Exception& e) 00125 { 00126 if (this->m_onCmsException) 00127 this->m_onCmsException (&e); 00128 } 00129 catch (lat::Error &e) 00130 { 00131 if (this->m_onError) 00132 this->m_onError (&e); 00133 } 00134 catch (std::exception &e) 00135 { 00136 if (this->m_onException) 00137 this->m_onException (&e); 00138 } 00139 catch (...) 00140 { 00141 if (this->m_onUnhandledException) 00142 this->m_onUnhandledException (); 00143 } 00144 00145 if (! hitCollections.empty ()) 00146 { 00147 std::vector<edm::Handle<edm::PSimHitContainer> >::iterator i; 00148 for (i = hitCollections.begin (); i != hitCollections.end (); i++) 00149 { 00150 const edm::PSimHitContainer& c = *(*i); 00151 00152 for (std::vector<PSimHit>::const_iterator isim = c.begin (), isimEnd = c.end (); 00153 isim != isimEnd; ++isim) 00154 { 00155 m_trackerHits.push_back ((*isim)); 00156 } 00157 } 00158 } 00159 try 00160 { 00161 eventSetup.get<TrackerDigiGeometryRecord> ().get (m_pDD); 00162 } 00163 catch (cms::Exception& e) 00164 { 00165 if (this->m_onCmsException) 00166 this->m_onCmsException (&e); 00167 } 00168 catch (lat::Error &e) 00169 { 00170 if (this->m_onError) 00171 this->m_onError (&e); 00172 } 00173 catch (std::exception &e) 00174 { 00175 if (this->m_onException) 00176 this->m_onException (&e); 00177 } 00178 catch (...) 00179 { 00180 if (this->m_onUnhandledException) 00181 this->m_onUnhandledException (); 00182 } 00183 00184 if (! m_trackerHits.empty () && m_pDD.isValid ()) 00185 { 00186 try 00187 { 00188 m_trackerHitsSorted.clear (); 00189 unsigned int maxid = 0; 00190 //get number of tracks track 65535 (FFFF) is exluded. I suppose it is no real track. 00191 for (std::vector<PSimHit>::iterator isim = m_trackerHits.begin (), isimEnd = m_trackerHits.end (); 00192 isim != isimEnd; ++isim) 00193 { 00194 if ((maxid < (*isim).trackId ()) && ((*isim).trackId () < 65535)) maxid = (*isim).trackId (); 00195 } 00196 00197 //array of vector is assigned and initialized 00198 std::vector<PSimHit> *m_trackerHitsUnsorted = new std::vector<PSimHit> [maxid + 2]; 00199 maxid += 2; 00200 00201 for (unsigned int i = 0; i < maxid; ++i) 00202 { 00203 (m_trackerHitsUnsorted [i]).clear (); 00204 } 00205 00206 //filling of array 00207 00208 for (std::vector<PSimHit>::iterator isim = m_trackerHits.begin (), isimEnd = m_trackerHits.end (); 00209 isim != isimEnd; ++isim) 00210 { 00211 if ((*isim).trackId () == 65535) 00212 { 00213 (m_trackerHitsUnsorted [0]).push_back (*isim); 00214 } 00215 else 00216 { 00217 (m_trackerHitsUnsorted[((*isim).trackId ()) + 1]).push_back (*isim); 00218 } 00219 } 00220 00221 //copying data into theTrackerHitsSorted and deleting theTrackerHitsUnsorted 00222 for (unsigned int i = 0; i < maxid; ++i) 00223 m_trackerHitsSorted.push_back (m_trackerHitsUnsorted [i]); 00224 delete [] m_trackerHitsUnsorted; 00225 // calling theTrackerHitsSorted[i][j] gives Event j of TrackID i-1 00226 00227 //Every Track should be sorted by ToF and IDs which do not exist shoul dbe removed 00228 for (std::vector<std::vector<PSimHit> >::iterator track = m_trackerHitsSorted.begin (), 00229 trackEnd = m_trackerHitsSorted.end (); 00230 track != trackEnd; ++track) 00231 { 00232 unsigned int length = (*track).size (); 00233 if (length == 0) 00234 { 00235 m_trackerHitsSorted.erase (track); // Remove all elements. 00236 track--; 00237 continue; 00238 } 00239 00240 unsigned int id = ((*track) [0]).trackId (); 00241 if (id == 65535) continue; 00242 std::sort ((*track).begin (), (*track).end (), sort_TOF); 00243 } 00244 } 00245 catch (cms::Exception& e) 00246 { 00247 if (this->m_onCmsException) 00248 this->m_onCmsException (&e); 00249 } 00250 catch (lat::Error &e) 00251 { 00252 if (this->m_onError) 00253 this->m_onError (&e); 00254 } 00255 catch (std::exception &e) 00256 { 00257 if (this->m_onException) 00258 this->m_onException (&e); 00259 } 00260 catch (...) 00261 { 00262 if (this->m_onUnhandledException) 00263 this->m_onUnhandledException (); 00264 } 00265 } 00266 00267 VisQueuedTwig::onBaseInvalidate (); 00268 }
Reimplemented from VisQueuedTwig.
Definition at line 532 of file VisTkSimTrackTwig.cc.
References Ig3DBaseRep::clear(), IgSoSimpleTrajectory::controlPoints, e, exception, SurfaceOrientation::inner, edm::ESHandle< T >::isValid(), VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_trackerHits, m_trackerHitsSorted, IgSoSimpleTrajectory::markerPoints, Ig3DBaseRep::node(), track, VisQueuedTwig::update(), PV3DBase< T, PVType, FrameType >::x(), x, PV3DBase< T, PVType, FrameType >::y(), y, PV3DBase< T, PVType, FrameType >::z(), and z.
00533 { 00534 // Get debugging dump. 00535 VisQueuedTwig::update (rep); 00536 IgQtLock (); 00537 rep->clear (); 00538 if (! m_trackerHits.empty () && m_pDD.isValid ()) 00539 { 00540 SoSeparator *sep = new SoSeparator; // global 00541 SoMaterial *mat = new SoMaterial; 00542 mat->diffuseColor.setValue (1.0, 1.0, 0.0); 00543 sep->addChild (mat); 00544 try 00545 { 00546 for (std::vector<std::vector<PSimHit> >::iterator track = m_trackerHitsSorted.begin (), 00547 trackEnd = m_trackerHitsSorted.end (); 00548 track != trackEnd; ++track) 00549 { 00550 unsigned int id = ((*track) [0]).trackId (); 00551 if (id == 65535) continue; 00552 IgSoSimpleTrajectory *simulatedTrack = new IgSoSimpleTrajectory; 00553 int nSimHit = 0; 00554 for (std::vector<PSimHit>::iterator jsim = (*track).begin (), 00555 jsimEnd = (*track).end (); 00556 jsim != jsimEnd; ++jsim) 00557 { 00558 GlobalPoint inner = m_pDD->idToDet (DetId ((*jsim).detUnitId ()))->surface ().toGlobal ((*jsim).localPosition ()); 00559 float x = inner.x () / 100; 00560 float y = inner.y () / 100; 00561 float z = inner.z () / 100; 00562 simulatedTrack->controlPoints.set1Value (nSimHit, (SbVec3f (x, y, z))); 00563 simulatedTrack->markerPoints.set1Value (nSimHit, (SbVec3f (x, y, z))); 00564 ++nSimHit; 00565 } 00566 sep->addChild (simulatedTrack); 00567 //if (id>30) break;; 00568 //delete simulatedTrack; 00569 } 00570 } 00571 catch (cms::Exception& e) 00572 { 00573 if (this->m_onCmsException) 00574 this->m_onCmsException (&e); 00575 } 00576 catch (lat::Error &e) 00577 { 00578 if (this->m_onError) 00579 this->m_onError (&e); 00580 } 00581 catch (std::exception &e) 00582 { 00583 if (this->m_onException) 00584 this->m_onException (&e); 00585 } 00586 catch (...) 00587 { 00588 if (this->m_onUnhandledException) 00589 this->m_onUnhandledException (); 00590 } 00591 rep->node ()->addChild (sep); 00592 } 00593 }
Reimplemented from VisQueuedTwig.
Definition at line 468 of file VisTkSimTrackTwig.cc.
References Ig3DBaseRep::clear(), IgSoSimpleTrajectory::controlPoints, e, exception, SurfaceOrientation::inner, edm::ESHandle< T >::isValid(), VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_trackerHits, m_trackerHitsSorted, IgSoSimpleTrajectory::markerPoints, Ig3DBaseRep::node(), track, VisQueuedTwig::update(), PV3DBase< T, PVType, FrameType >::x(), x, PV3DBase< T, PVType, FrameType >::y(), y, PV3DBase< T, PVType, FrameType >::z(), and z.
00469 { 00470 // Get debugging dump. 00471 VisQueuedTwig::update (rep); 00472 IgQtLock (); 00473 rep->clear (); 00474 00475 if (! m_trackerHits.empty () && m_pDD.isValid ()) 00476 { 00477 SoSeparator *sep = new SoSeparator; // global 00478 SoMaterial *mat = new SoMaterial; 00479 mat->diffuseColor.setValue (1.0, 1.0, 0.0); 00480 sep->addChild (mat); 00481 try 00482 { 00483 for (std::vector<std::vector<PSimHit> >::iterator track = m_trackerHitsSorted.begin (), 00484 trackEnd = m_trackerHitsSorted.end (); 00485 track != trackEnd; ++track) 00486 { 00487 unsigned int id = ((*track) [0]).trackId (); 00488 if (id == 65535) continue; 00489 IgSoSimpleTrajectory *simulatedTrack = new IgSoSimpleTrajectory; 00490 int nSimHit = 0; 00491 for (std::vector<PSimHit>::iterator jsim = (*track).begin (), jsimEnd = (*track).end (); 00492 jsim != jsimEnd; ++jsim) 00493 { 00494 GlobalPoint inner = m_pDD->idToDet (DetId ((*jsim).detUnitId ()))->surface ().toGlobal ((*jsim).localPosition ()); 00495 float x = inner.x () / 100; 00496 float y = inner.y () / 100; 00497 float z = inner.z () / 100; 00498 simulatedTrack->controlPoints.set1Value (nSimHit, (SbVec3f (x, y, z))); 00499 simulatedTrack->markerPoints.set1Value (nSimHit, (SbVec3f (x, y, z))); 00500 ++nSimHit; 00501 } 00502 sep->addChild (simulatedTrack); 00503 //if (id>30) break;; 00504 //delete simulatedTrack; 00505 } 00506 } 00507 catch (cms::Exception& e) 00508 { 00509 if (this->m_onCmsException) 00510 this->m_onCmsException (&e); 00511 } 00512 catch (lat::Error &e) 00513 { 00514 if (this->m_onError) 00515 this->m_onError (&e); 00516 } 00517 catch (std::exception &e) 00518 { 00519 if (this->m_onException) 00520 this->m_onException (&e); 00521 } 00522 catch (...) 00523 { 00524 if (this->m_onUnhandledException) 00525 this->m_onUnhandledException (); 00526 } 00527 rep->node ()->addChild (sep); 00528 } 00529 }
Reimplemented from VisQueuedTwig.
Definition at line 271 of file VisTkSimTrackTwig.cc.
References e, exception, edm::ESHandle< T >::isValid(), VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_text, m_trackerHits, m_trackerHitsSorted, IgTextRep::setText(), and VisQueuedTwig::update().
00272 { 00273 // Get debugging dump. 00274 VisQueuedTwig::update (rep); 00275 // Prepare property description. 00276 std::ostringstream text; 00277 text << "Total " << m_trackerHitsSorted.size () << " Tracker SimTracks from"; 00278 if (m_trackerHitsSorted.size () > 1000) 00279 { 00280 text << " input file: printing only first 1000 " << "<br>"; 00281 } 00282 else 00283 { 00284 text << " input file: " << m_text << "<br>"; 00285 } 00286 00287 text << "<table width='100%' border=1>" 00288 << "<TR align = center>" 00289 << "<TH>TrackID</TH>" 00290 << "<TH>NumberSimHits</TH>" 00291 << "</TR>"; 00292 text << setiosflags (std::ios::showpoint | std::ios::fixed); 00293 text.setf (std::ios::right, std::ios::adjustfield); 00294 00295 if (! m_trackerHits.empty () && m_pDD.isValid ()) 00296 { 00297 int nSimtracks = 0; 00298 try 00299 { 00300 for (std::vector<std::vector<PSimHit> >::iterator isim = m_trackerHitsSorted.begin (), 00301 isimEnd = m_trackerHitsSorted.end (); 00302 isim != isimEnd; ++isim) 00303 { 00304 unsigned int length = (*isim).size (); 00305 unsigned int id = ((*isim) [0]).trackId (); 00306 00307 text << "<TR align = right>" 00308 << "<TD>" << id << "</TD>" 00309 << "<TD>" << length << "</TD>"; 00310 ++nSimtracks; 00311 00312 if (nSimtracks > 1000) break; 00313 } 00314 } 00315 catch (cms::Exception& e) 00316 { 00317 if (this->m_onCmsException) 00318 this->m_onCmsException (&e); 00319 } 00320 catch (lat::Error &e) 00321 { 00322 if (this->m_onError) 00323 this->m_onError (&e); 00324 } 00325 catch (std::exception &e) 00326 { 00327 if (this->m_onException) 00328 this->m_onException (&e); 00329 } 00330 catch (...) 00331 { 00332 if (this->m_onUnhandledException) 00333 this->m_onUnhandledException (); 00334 } 00335 } 00336 text << "</table>"; 00337 00338 // Send it over. 00339 IgQtLock (); 00340 rep->setText (text.str ()); 00341 }
Reimplemented from VisQueuedTwig.
Definition at line 407 of file VisTkSimTrackTwig.cc.
References Ig3DBaseRep::clear(), e, IgSoTower::energy, eta, PV3DBase< T, PVType, FrameType >::eta(), exception, i, iter, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_trackerHitsSorted, Ig3DBaseRep::node(), PV3DBase< T, PVType, FrameType >::phi(), phi, IgSoTower::position, IgSoTower::scaleFactor, and VisQueuedTwig::update().
00408 { 00409 // Get debugging dump. 00410 VisQueuedTwig::update (rep); 00411 00412 IgQtLock (); 00413 rep->clear (); 00414 00415 SoSeparator *sep = new SoSeparator; // global 00416 00417 try 00418 { 00419 for (std::vector<std::vector<PSimHit> >::const_iterator i = m_trackerHitsSorted.begin (), 00420 iEnd = m_trackerHitsSorted.end (); 00421 i != iEnd; ++i) 00422 { 00423 if ((*(*i).begin ()).trackId () != 65535) 00424 { 00425 for (std::vector<PSimHit>::const_iterator iter = (*i).begin (), iterEnd = (*i).end (); iter != iterEnd; ++iter) 00426 { 00427 GlobalPoint SimHitPosition = m_pDD->idToDet (DetId ((*iter).detUnitId ()))->surface ().toGlobal ((*iter).localPosition ()); 00428 00429 double eta = SimHitPosition.eta (); 00430 double phi = SimHitPosition.phi (); 00431 if (phi < 0.0) phi = 2 * M_PI + phi; // correction in absence of one convention 00432 00433 float EnergyLoss = (*iter).energyLoss(); // the energy deposit in the PSimHit, in ??? 00434 00435 IgSoTower *tower = new IgSoTower; 00436 tower->position = SbVec2f (phi, eta); // eta, phi 00437 tower->scaleFactor = 20.0; 00438 tower->energy = EnergyLoss; 00439 sep->addChild (tower); 00440 } 00441 } 00442 } 00443 } 00444 catch (cms::Exception& e) 00445 { 00446 if (this->m_onCmsException) 00447 this->m_onCmsException (&e); 00448 } 00449 catch (lat::Error &e) 00450 { 00451 if (this->m_onError) 00452 this->m_onError (&e); 00453 } 00454 catch (std::exception &e) 00455 { 00456 if (this->m_onException) 00457 this->m_onException (&e); 00458 } 00459 catch (...) 00460 { 00461 if (this->m_onUnhandledException) 00462 this->m_onUnhandledException (); 00463 } 00464 rep->node ()->addChild (sep); 00465 }
Reimplemented from VisQueuedTwig.
Definition at line 344 of file VisTkSimTrackTwig.cc.
References Ig3DBaseRep::clear(), IgSoSimpleTrajectory::controlPoints, e, exception, SurfaceOrientation::inner, edm::ESHandle< T >::isValid(), VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_trackerHits, m_trackerHitsSorted, IgSoSimpleTrajectory::markerPoints, Ig3DBaseRep::node(), track, VisQueuedTwig::update(), PV3DBase< T, PVType, FrameType >::x(), x, PV3DBase< T, PVType, FrameType >::y(), y, PV3DBase< T, PVType, FrameType >::z(), and z.
00345 { 00346 // Get debugging dump. 00347 VisQueuedTwig::update (rep); 00348 IgQtLock (); 00349 rep->clear (); 00350 if (! m_trackerHits.empty () && m_pDD.isValid ()) 00351 { 00352 SoSeparator *sep = new SoSeparator; // global 00353 SoMaterial *mat = new SoMaterial; 00354 mat->diffuseColor.setValue (1.0, 1.0, 0.0); 00355 sep->addChild (mat); 00356 try 00357 { 00358 for (std::vector<std::vector<PSimHit> >::iterator track = m_trackerHitsSorted.begin (), 00359 trackEnd = m_trackerHitsSorted.end (); 00360 track != trackEnd; ++track) 00361 { 00362 unsigned int id = ((*track) [0]).trackId (); 00363 if (id == 65535) continue; 00364 IgSoSimpleTrajectory *simulatedTrack = new IgSoSimpleTrajectory; 00365 int nSimHit = 0; 00366 for (std::vector<PSimHit>::iterator jsim = (*track).begin (), jsimEnd = (*track).end (); 00367 jsim != jsimEnd; ++jsim) 00368 { 00369 GlobalPoint inner = m_pDD->idToDet (DetId ((*jsim).detUnitId ()))->surface ().toGlobal ((*jsim).localPosition ()); 00370 float x = inner.x () / 100; 00371 float y = inner.y () / 100; 00372 float z = inner.z () / 100; 00373 simulatedTrack->controlPoints.set1Value (nSimHit, (SbVec3f (x, y, z))); 00374 simulatedTrack->markerPoints.set1Value (nSimHit, (SbVec3f (x, y, z))); 00375 ++nSimHit; 00376 } 00377 sep->addChild (simulatedTrack); 00378 //if (id>30) break;; 00379 //delete simulatedTrack; 00380 } 00381 } 00382 catch (cms::Exception& e) 00383 { 00384 if (this->m_onCmsException) 00385 this->m_onCmsException (&e); 00386 } 00387 catch (lat::Error &e) 00388 { 00389 if (this->m_onError) 00390 this->m_onError (&e); 00391 } 00392 catch (std::exception &e) 00393 { 00394 if (this->m_onException) 00395 this->m_onException (&e); 00396 } 00397 catch (...) 00398 { 00399 if (this->m_onUnhandledException) 00400 this->m_onUnhandledException (); 00401 } 00402 rep->node ()->addChild (sep); 00403 } 00404 }
unsigned int VisTkSimTrackTwig::m_detType [private] |
Definition at line 57 of file VisTkSimTrackTwig.h.
const std::string VisTkSimTrackTwig::m_friendlyName [private] |
const std::string VisTkSimTrackTwig::m_instanceName [private] |
const std::string VisTkSimTrackTwig::m_moduleLabel [private] |
edm::ESHandle<TrackerGeometry> VisTkSimTrackTwig::m_pDD [private] |
const std::string VisTkSimTrackTwig::m_processName [private] |
unsigned int VisTkSimTrackTwig::m_subDetType [private] |
Definition at line 58 of file VisTkSimTrackTwig.h.
std::string VisTkSimTrackTwig::m_text [private] |
std::vector<PSimHit> VisTkSimTrackTwig::m_trackerHits [private] |
std::vector<std::vector<PSimHit> > VisTkSimTrackTwig::m_trackerHitsSorted [private] |