#include <VisReco/VisMuonRPC/interface/VisRPCRecHitTwig.h>
Public Member Functions | |
virtual void | onNewEvent (const edm::Event &event, const edm::EventSetup &eventSetup) |
virtual void | update (IgRZRep *rep) |
Update object property description. | |
virtual void | update (IgRPhiRep *rep) |
Update object property description. | |
virtual void | update (IgTextRep *rep) |
Update object property description. | |
virtual void | update (IgLegoRep *rep) |
Update object property description. | |
virtual void | update (Ig3DRep *rep) |
Update object property description. | |
VisRPCRecHitTwig (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 | |
const std::string | m_friendlyName |
const std::string | m_instanceName |
const std::string | m_moduleLabel |
edm::ESHandle< RPCGeometry > | m_pDD |
const std::string | m_processName |
std::vector< RPCRecHit > | m_rechits |
std::string | m_text |
Definition at line 22 of file VisRPCRecHitTwig.h.
VisRPCRecHitTwig::VisRPCRecHitTwig | ( | 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 60 of file VisRPCRecHitTwig.cc.
References createThisTwig(), edm::TypeID::friendlyClassName(), DBSPlugin::get(), and VisTwigFactroyService::registerTwig().
00066 : VisQueuedTwig (state, parent, name), 00067 m_text (name), 00068 m_friendlyName (friendlyName), 00069 m_moduleLabel (moduleLabel), 00070 m_instanceName (instanceName), 00071 m_processName (processName) 00072 { 00073 VisTwigFactroyService *tfService = VisTwigFactroyService::get (state); 00074 if (! tfService) 00075 { 00076 tfService = new VisTwigFactroyService (state); 00077 } 00078 edm::TypeID rechitCollID (typeid (RPCRecHitCollection)); 00079 tfService->registerTwig (rechitCollID.friendlyClassName (), &createThisTwig); 00080 }
void VisRPCRecHitTwig::onNewEvent | ( | const edm::Event & | event, | |
const edm::EventSetup & | eventSetup | |||
) | [virtual] |
Reimplemented from VisQueuedTwig.
Definition at line 83 of file VisRPCRecHitTwig.cc.
References arg, c, e, exception, edm::EventSetup::get(), i, edm::Event::id(), m_friendlyName, m_instanceName, m_moduleLabel, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_processName, m_rechits, m_text, VisQueuedTwig::onBaseInvalidate(), and VisQueuedTwig::onNewEvent().
00085 { 00086 // Get debugging dump. 00087 VisQueuedTwig::onNewEvent (event, eventSetup); 00088 00089 m_rechits.clear (); 00090 m_text = (QString ("Run # %1, event # %2") 00091 .arg (event.id ().run ()) 00092 .arg (event.id ().event ()).latin1 ()); 00093 00094 std::vector<edm::Handle<RPCRecHitCollection> > collections; 00095 00096 try 00097 { 00098 if ((! m_friendlyName.empty ()) || (! m_moduleLabel.empty ()) || (! m_instanceName.empty ()) || (! m_processName.empty ())) 00099 { 00100 VisEventSelector visSel (m_friendlyName, m_moduleLabel, m_instanceName, m_processName); 00101 event.getMany (visSel, collections); 00102 } 00103 else 00104 { 00105 event.getManyByType (collections); 00106 } 00107 00108 eventSetup.get<MuonGeometryRecord> ().get (m_pDD); 00109 } 00110 catch (cms::Exception& e) 00111 { 00112 if (this->m_onCmsException) 00113 this->m_onCmsException (&e); 00114 } 00115 catch (lat::Error &e) 00116 { 00117 if (this->m_onError) 00118 this->m_onError (&e); 00119 } 00120 catch (std::exception &e) 00121 { 00122 if (this->m_onException) 00123 this->m_onException (&e); 00124 } 00125 catch (...) 00126 { 00127 if (this->m_onUnhandledException) 00128 this->m_onUnhandledException (); 00129 } 00130 00131 if (! collections.empty ()) 00132 { 00133 std::vector<edm::Handle<RPCRecHitCollection> >::iterator i; 00134 std::vector<edm::Handle<RPCRecHitCollection> >::iterator iEnd; 00135 for (i = collections.begin (), iEnd = collections.end (); i != iEnd; ++i) 00136 { 00137 const RPCRecHitCollection& c = *(*i); 00138 00139 RPCRecHitCollection::const_iterator segIt; 00140 RPCRecHitCollection::const_iterator segItEnd; 00141 for (segIt = c.begin (), segItEnd = c.end (); segIt != segItEnd; ++segIt) 00142 { 00143 m_rechits.push_back (*segIt); 00144 } 00145 } 00146 } 00147 00148 VisQueuedTwig::onBaseInvalidate (); 00149 }
Update object property description.
Reimplemented from VisQueuedTwig.
Definition at line 419 of file VisRPCRecHitTwig.cc.
References Ig3DBaseRep::clear(), e, exception, edm::ESHandle< T >::isValid(), VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_rechits, Ig3DBaseRep::node(), funct::sqrt(), GeomDet::surface(), Surface::toGlobal(), VisQueuedTwig::update(), PV3DBase< T, PVType, FrameType >::x(), x, PV3DBase< T, PVType, FrameType >::y(), y, PV3DBase< T, PVType, FrameType >::z(), and z.
00420 { 00421 // Get debugging dump. 00422 VisQueuedTwig::update (rep); 00423 00424 IgQtLock (); 00425 00426 SoSeparator *sep = new SoSeparator; 00427 SoMaterial *mat = new SoMaterial; 00428 mat->ambientColor.setValue (0.135, 0.2225, 0.1575); 00429 mat->diffuseColor.setValue (0.54, 0.89, 0.63); 00430 mat->specularColor.setValue (0.316228, 0.316228, 0.316228); 00431 mat->emissiveColor.setValue(0.0, 0.0, 0.0); 00432 mat->shininess = 0.1; 00433 sep->addChild (mat); 00434 00435 if (! m_rechits.empty () && m_pDD.isValid ()) 00436 { 00437 try 00438 { 00439 // 00440 // Muon Endcap Segment 00441 // 00442 00443 for (std::vector<RPCRecHit>::const_iterator is = m_rechits.begin (), isEnd = m_rechits.end (); is != isEnd; ++is) 00444 { 00445 const GeomDetUnit *det = m_pDD->idToDetUnit ((*is).rpcId ()); 00446 00447 // warning: error bars aren't right for tilted wires 00448 LocalPoint xyzLocal = is->localPosition (); 00449 float x = xyzLocal.x (); 00450 float y = xyzLocal.y (); 00451 float z = xyzLocal.z (); 00452 float dx = is->localPositionError ().xx (); 00453 // float dy = lenght/2; 00454 float dy = sqrt(is->localPositionError ().yy ()); 00455 00456 IgSo3DErrorBar *errorBar = new IgSo3DErrorBar; 00457 GlobalPoint gp; 00458 /* gp = det->surface ().toGlobal (LocalPoint (-x, -y, 0)); 00459 errorBar->u1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00460 gp = det->surface ().toGlobal (LocalPoint (x, -y, 0)); 00461 errorBar->u2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00462 gp = det->surface ().toGlobal (LocalPoint (x, y, 0)); 00463 errorBar->v1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00464 gp = det->surface ().toGlobal (LocalPoint (-x, y, 0)); 00465 errorBar->v2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00466 gp = det->surface ().toGlobal (xyzLocal); // no error in z 00467 errorBar->w1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00468 errorBar->w2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00469 */ 00470 00471 gp = det->surface ().toGlobal (LocalPoint ((x - dx), y, z)); 00472 errorBar->u1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00473 gp = det->surface ().toGlobal (LocalPoint ((x + dx), y, z)); 00474 errorBar->u2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00475 gp = det->surface ().toGlobal (LocalPoint (x, (y - dy), z)); 00476 errorBar->v1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00477 gp = det->surface ().toGlobal (LocalPoint (x, (y + dy), z)); 00478 errorBar->v2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00479 gp = det->surface ().toGlobal (xyzLocal); // no error in z 00480 errorBar->w1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00481 errorBar->w2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00482 00483 errorBar->lineWidth.setValue (1.0); 00484 00485 sep->addChild (errorBar); 00486 } 00487 } 00488 catch (cms::Exception& e) 00489 { 00490 if (this->m_onCmsException) 00491 this->m_onCmsException (&e); 00492 } 00493 catch (lat::Error &e) 00494 { 00495 if (this->m_onError) 00496 this->m_onError (&e); 00497 } 00498 catch (std::exception &e) 00499 { 00500 if (this->m_onException) 00501 this->m_onException (&e); 00502 } 00503 catch (...) 00504 { 00505 if (this->m_onUnhandledException) 00506 this->m_onUnhandledException (); 00507 } 00508 } 00509 00510 rep->clear (); 00511 rep->node ()->addChild (sep); 00512 }
Update object property description.
Reimplemented from VisQueuedTwig.
Definition at line 322 of file VisRPCRecHitTwig.cc.
References Ig3DBaseRep::clear(), e, exception, edm::ESHandle< T >::isValid(), VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_rechits, Ig3DBaseRep::node(), funct::sqrt(), GeomDet::surface(), Surface::toGlobal(), VisQueuedTwig::update(), PV3DBase< T, PVType, FrameType >::x(), x, PV3DBase< T, PVType, FrameType >::y(), y, PV3DBase< T, PVType, FrameType >::z(), and z.
00323 { 00324 // Get debugging dump. 00325 VisQueuedTwig::update (rep); 00326 00327 IgQtLock (); 00328 00329 SoSeparator *sep = new SoSeparator; 00330 SoMaterial *mat = new SoMaterial; 00331 mat->ambientColor.setValue (0.135, 0.2225, 0.1575); 00332 mat->diffuseColor.setValue (0.54, 0.89, 0.63); 00333 mat->specularColor.setValue (0.316228, 0.316228, 0.316228); 00334 mat->emissiveColor.setValue(0.0, 0.0, 0.0); 00335 mat->shininess = 0.1; 00336 sep->addChild (mat); 00337 00338 if (! m_rechits.empty () && m_pDD.isValid ()) 00339 { 00340 try 00341 { 00342 // 00343 // Muon Endcap Segment 00344 // 00345 00346 for (std::vector<RPCRecHit>::const_iterator is = m_rechits.begin (), isEnd = m_rechits.end (); is != isEnd; ++is) 00347 { 00348 const GeomDetUnit *det = m_pDD->idToDetUnit ((*is).rpcId ()); 00349 00350 // warning: error bars aren't right for tilted wires 00351 LocalPoint xyzLocal = is->localPosition (); 00352 float x = xyzLocal.x (); 00353 float y = xyzLocal.y (); 00354 float z = xyzLocal.z (); 00355 float dx = is->localPositionError ().xx (); 00356 // float dy = lenght/2; 00357 float dy = sqrt(is->localPositionError ().yy ()); 00358 00359 IgSo3DErrorBar *errorBar = new IgSo3DErrorBar; 00360 GlobalPoint gp; 00361 /* gp = det->surface ().toGlobal (LocalPoint (-x, -y, 0)); 00362 errorBar->u1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00363 gp = det->surface ().toGlobal (LocalPoint (x, -y, 0)); 00364 errorBar->u2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00365 gp = det->surface ().toGlobal (LocalPoint (x, y, 0)); 00366 errorBar->v1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00367 gp = det->surface ().toGlobal (LocalPoint (-x, y, 0)); 00368 errorBar->v2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00369 gp = det->surface ().toGlobal (xyzLocal); // no error in z 00370 errorBar->w1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00371 errorBar->w2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00372 */ 00373 00374 gp = det->surface ().toGlobal (LocalPoint ((x - dx), y, z)); 00375 errorBar->u1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00376 gp = det->surface ().toGlobal (LocalPoint ((x + dx), y, z)); 00377 errorBar->u2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00378 gp = det->surface ().toGlobal (LocalPoint (x, (y - dy), z)); 00379 errorBar->v1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00380 gp = det->surface ().toGlobal (LocalPoint (x, (y + dy), z)); 00381 errorBar->v2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00382 gp = det->surface ().toGlobal (xyzLocal); // no error in z 00383 errorBar->w1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00384 errorBar->w2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00385 00386 errorBar->lineWidth.setValue (1.0); 00387 00388 sep->addChild (errorBar); 00389 } 00390 } 00391 catch (cms::Exception& e) 00392 { 00393 if (this->m_onCmsException) 00394 this->m_onCmsException (&e); 00395 } 00396 catch (lat::Error &e) 00397 { 00398 if (this->m_onError) 00399 this->m_onError (&e); 00400 } 00401 catch (std::exception &e) 00402 { 00403 if (this->m_onException) 00404 this->m_onException (&e); 00405 } 00406 catch (...) 00407 { 00408 if (this->m_onUnhandledException) 00409 this->m_onUnhandledException (); 00410 } 00411 } 00412 00413 rep->clear (); 00414 rep->node ()->addChild (sep); 00415 }
Update object property description.
Reimplemented from VisQueuedTwig.
Definition at line 153 of file VisRPCRecHitTwig.cc.
References e, exception, edm::ESHandle< T >::isValid(), VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_rechits, IgTextRep::setText(), GeomDet::surface(), Surface::toGlobal(), and VisQueuedTwig::update().
00154 { 00155 // Get debugging dump. 00156 VisQueuedTwig::update (rep); 00157 00158 // Prepare the property description. 00159 std::ostringstream text; 00160 text << "Muon Endcap: RPC Rec Hits <br>"; 00161 00162 if (! m_rechits.empty () && m_pDD.isValid ()) 00163 { 00164 try 00165 { 00166 text << "<table width='100%' border=1>" 00167 << "<TR align = center>" 00168 << "<TH>Number</TH>" 00169 << "<TH>position</TH>" 00170 << "<TH>chi2</TH>" 00171 << "</TR>"; 00172 text << setiosflags (std::ios::showpoint | std::ios::fixed); 00173 text.setf (std::ios::right,std::ios::adjustfield); 00174 00175 int nRecHits = 0; 00176 00177 for (std::vector<RPCRecHit>::const_iterator iseg = m_rechits.begin (), isegEnd = m_rechits.end (); iseg != isegEnd; ++iseg) 00178 { 00179 const GeomDetUnit *det = m_pDD->idToDetUnit ((*iseg).rpcId ()); 00180 00181 GlobalPoint pos = det->surface ().toGlobal ((*iseg).localPosition ()); 00182 00183 text << "<TR align = right>" 00184 << "<TD>" << std::setw (2) << nRecHits++ << "</TD>" 00185 << "<TD>" << std::setw (6) << std::setprecision (2) << pos << "</TD>" 00186 // << "<TD>" << std::setw (6) << std::setprecision (2) << (*iseg).chi2 () << "</TD>" 00187 << "</TR>"; 00188 } 00189 text << "</table>"; 00190 } 00191 catch (cms::Exception& e) 00192 { 00193 if (this->m_onCmsException) 00194 this->m_onCmsException (&e); 00195 } 00196 catch (lat::Error &e) 00197 { 00198 if (this->m_onError) 00199 this->m_onError (&e); 00200 } 00201 catch (std::exception &e) 00202 { 00203 if (this->m_onException) 00204 this->m_onException (&e); 00205 } 00206 catch (...) 00207 { 00208 if (this->m_onUnhandledException) 00209 this->m_onUnhandledException (); 00210 } 00211 } 00212 00213 // Send it over. 00214 IgQtLock (); 00215 rep->setText (text.str ()); 00216 }
Update object property description.
Reimplemented from VisQueuedTwig.
Definition at line 317 of file VisRPCRecHitTwig.cc.
Update object property description.
Reimplemented from VisQueuedTwig.
Definition at line 220 of file VisRPCRecHitTwig.cc.
References Ig3DBaseRep::clear(), e, exception, edm::ESHandle< T >::isValid(), VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_pDD, m_rechits, Ig3DBaseRep::node(), funct::sqrt(), GeomDet::surface(), Surface::toGlobal(), VisQueuedTwig::update(), PV3DBase< T, PVType, FrameType >::x(), x, PV3DBase< T, PVType, FrameType >::y(), y, PV3DBase< T, PVType, FrameType >::z(), and z.
00221 { 00222 // Get debugging dump. 00223 VisQueuedTwig::update (rep); 00224 00225 IgQtLock (); 00226 00227 SoSeparator *sep = new SoSeparator; 00228 SoMaterial *mat = new SoMaterial; 00229 mat->ambientColor.setValue (0.135, 0.2225, 0.1575); 00230 mat->diffuseColor.setValue (0.54, 0.89, 0.63); 00231 mat->specularColor.setValue (0.316228, 0.316228, 0.316228); 00232 mat->emissiveColor.setValue(0.0, 0.0, 0.0); 00233 mat->shininess = 0.1; 00234 sep->addChild (mat); 00235 00236 if (! m_rechits.empty () && m_pDD.isValid ()) 00237 { 00238 try 00239 { 00240 // 00241 // Muon Endcap Segment 00242 // 00243 00244 for (std::vector<RPCRecHit>::const_iterator is = m_rechits.begin (), isEnd = m_rechits.end (); is != isEnd; ++is) 00245 { 00246 const GeomDetUnit *det = m_pDD->idToDetUnit ((*is).rpcId ()); 00247 00248 // warning: error bars aren't right for tilted wires 00249 LocalPoint xyzLocal = is->localPosition (); 00250 float x = xyzLocal.x (); 00251 float y = xyzLocal.y (); 00252 float z = xyzLocal.z (); 00253 float dx = is->localPositionError ().xx (); 00254 // float dy = lenght/2; 00255 float dy = sqrt(is->localPositionError ().yy ()); 00256 00257 IgSo3DErrorBar *errorBar = new IgSo3DErrorBar; 00258 GlobalPoint gp; 00259 /* gp = det->surface ().toGlobal (LocalPoint (-x, -y, 0)); 00260 errorBar->u1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00261 gp = det->surface ().toGlobal (LocalPoint (x, -y, 0)); 00262 errorBar->u2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00263 gp = det->surface ().toGlobal (LocalPoint (x, y, 0)); 00264 errorBar->v1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00265 gp = det->surface ().toGlobal (LocalPoint (-x, y, 0)); 00266 errorBar->v2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00267 gp = det->surface ().toGlobal (xyzLocal); // no error in z 00268 errorBar->w1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00269 errorBar->w2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00270 */ 00271 00272 gp = det->surface ().toGlobal (LocalPoint ((x - dx), y, z)); 00273 errorBar->u1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00274 gp = det->surface ().toGlobal (LocalPoint ((x + dx), y, z)); 00275 errorBar->u2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00276 gp = det->surface ().toGlobal (LocalPoint (x, (y - dy), z)); 00277 errorBar->v1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00278 gp = det->surface ().toGlobal (LocalPoint (x, (y + dy), z)); 00279 errorBar->v2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00280 gp = det->surface ().toGlobal (xyzLocal); // no error in z 00281 errorBar->w1.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00282 errorBar->w2.setValue (gp.x () / 100.0, gp.y () / 100.0, gp.z () / 100.0); 00283 00284 errorBar->lineWidth.setValue (1.0); 00285 00286 sep->addChild (errorBar); 00287 } 00288 } 00289 catch (cms::Exception& e) 00290 { 00291 if (this->m_onCmsException) 00292 this->m_onCmsException (&e); 00293 } 00294 catch (lat::Error &e) 00295 { 00296 if (this->m_onError) 00297 this->m_onError (&e); 00298 } 00299 catch (std::exception &e) 00300 { 00301 if (this->m_onException) 00302 this->m_onException (&e); 00303 } 00304 catch (...) 00305 { 00306 if (this->m_onUnhandledException) 00307 this->m_onUnhandledException (); 00308 } 00309 } 00310 00311 rep->clear (); 00312 rep->node ()->addChild (sep); 00313 }
const std::string VisRPCRecHitTwig::m_friendlyName [private] |
const std::string VisRPCRecHitTwig::m_instanceName [private] |
const std::string VisRPCRecHitTwig::m_moduleLabel [private] |
edm::ESHandle<RPCGeometry> VisRPCRecHitTwig::m_pDD [private] |
const std::string VisRPCRecHitTwig::m_processName [private] |
std::vector<RPCRecHit> VisRPCRecHitTwig::m_rechits [private] |
std::string VisRPCRecHitTwig::m_text [private] |