CMS 3D CMS Logo

VisTkIdealHelixTracksTwig Class Reference

#include <VisReco/VisTracker/interface/VisTkIdealHelixTracksTwig.h>

Inheritance diagram for VisTkIdealHelixTracksTwig:

VisQueuedTwig IgSimpleTwig VisEventObserver IgCompoundTwig IgTwig IgRepresentable

List of all members.

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)
 VisTkIdealHelixTracksTwig (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

VisAnimate m_animate
VisMuonAnnotation m_annot
VisBField m_BField
VisCounterMax m_counterMax
VisCounterMin m_counterMin
VisMuonDt m_dt
double m_flytime
VisCounterFrequency m_frequency
const std::string m_friendlyName
const std::string m_instanceName
const std::string m_moduleLabel
const std::string m_processName
VisRMax m_RMax
VisShowHitDets m_showDets
VisMuonT0 m_t0
std::string m_text
std::vector< std::string > m_trackCollectionNames
std::vector< reco::Trackm_tracks
std::vector< std::vector
< SbVec3f > > 
m_trajectoryDirections
std::vector< std::vector
< SbVec3f > > 
m_trajectoryPositions
VisZMax m_ZMax
const edm::ParameterSetpset
double trackThickness


Detailed Description

Definition at line 38 of file VisTkIdealHelixTracksTwig.h.


Constructor & Destructor Documentation

VisTkIdealHelixTracksTwig::VisTkIdealHelixTracksTwig ( 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 63 of file VisTkIdealHelixTracksTwig.cc.

References createThisTwig(), edm::TypeID::friendlyClassName(), DBSPlugin::get(), edm::ParameterSet::getUntrackedParameter(), m_flytime, m_trackCollectionNames, p, VisConfigurationService::pSet(), pset, VisTwigFactroyService::registerTwig(), trackThickness, and VisConfigurationService_cff::VisConfigurationService.

00069     : VisQueuedTwig (state, parent, name),
00070       m_text ("no info"),
00071       m_friendlyName (friendlyName),
00072       m_moduleLabel (moduleLabel),
00073       m_instanceName (instanceName),
00074       m_processName (processName),
00075       m_animate (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00076       m_counterMax (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00077       m_counterMin (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00078       m_frequency (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00079       m_BField (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00080       m_RMax (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00081       m_ZMax (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00082       m_t0 (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00083       m_dt (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00084       m_annot (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged)),
00085       m_showDets (state, lat::CreateCallback (this, &VisTkIdealHelixTracksTwig::twigChanged))
00086 {
00087     VisTwigFactroyService *tfService = VisTwigFactroyService::get (state);
00088     if (! tfService)
00089     {
00090         tfService = new VisTwigFactroyService (state);
00091     }
00092     edm::TypeID trackID (typeid (reco::TrackCollection));
00093     tfService->registerTwig (trackID.friendlyClassName (), &createThisTwig);
00094     pset = VisConfigurationService::pSet ();
00095     if (! pset)
00096     {
00097         edm::ParameterSet p;
00098         VisConfigurationService *visService = new VisConfigurationService (p);
00099         pset = visService->pSet ();
00100         delete visService;
00101     } 
00102     trackThickness = pset->getUntrackedParameter<double> ("trackLineThickness", 2.0);
00103 
00104     m_flytime = pset->getUntrackedParameter<double> ("flyTime", 0.5);
00105 
00106     std::vector<std::string> notSpecified;
00107     m_trackCollectionNames = pset->getUntrackedParameter<std::vector<std::string> > ("trackCollectionNames", notSpecified);
00108 }


Member Function Documentation

void VisTkIdealHelixTracksTwig::onNewEvent ( const edm::Event event,
const edm::EventSetup eventSetup 
) [virtual]

Reimplemented from VisQueuedTwig.

Definition at line 115 of file VisTkIdealHelixTracksTwig.cc.

References cms::Exception::append(), arg, c, e, exception, edm::Event::getManyByType(), i, edm::Event::id(), LFfwvis, LOG, m_friendlyName, m_instanceName, m_moduleLabel, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_processName, m_text, m_trackCollectionNames, m_tracks, m_trajectoryDirections, m_trajectoryPositions, VisQueuedTwig::onBaseInvalidate(), VisQueuedTwig::onNewEvent(), tc, GsfMatrixTools::trace(), track, x, y, and z.

00117 {
00118     // Get debugging dump.
00119     VisQueuedTwig::onNewEvent (event, eventSetup);
00120 
00121     m_tracks.clear ();
00122 
00123     m_trajectoryPositions.clear ();
00124     m_trajectoryDirections.clear ();
00125 
00126     m_text = (QString ("Run # %1, event # %2")
00127               .arg (event.id ().run ())
00128               .arg (event.id ().event ()).latin1 ());
00129 
00130     std::vector<edm::Handle<reco::TrackCollection> > trackCollections;
00131   
00132     try
00133     {
00134         if ((! m_friendlyName.empty ()) || (! m_moduleLabel.empty ()) || (! m_instanceName.empty ()) || (! m_processName.empty ()))
00135         {
00136             VisEventSelector visSel (m_friendlyName, m_moduleLabel, m_instanceName, m_processName);
00137             event.getMany (visSel, trackCollections);
00138         }
00139         else
00140         {
00141             if (m_trackCollectionNames.empty ())
00142                 event.getManyByType (trackCollections);
00143             else 
00144             {
00145                 for(std::vector<std::string>::iterator tkColl = m_trackCollectionNames.begin (), tkCollEnd = m_trackCollectionNames.end ();
00146                     tkColl != tkCollEnd; ++tkColl) 
00147                 {
00148                     LOG (2, trace, LFfwvis, "Getting track Collection with label " << (*tkColl) << "\n");
00149 
00150                     edm::Handle<reco::TrackCollection> tcHandle;
00151 
00152                     event.getByLabel ((*tkColl), tcHandle);
00153                     trackCollections.push_back (tcHandle);
00154                 }
00155             }
00156         }
00157     }
00158     catch (cms::Exception& e)
00159     {
00160         e.append (" from VisTkIdealHelixTracksTwig: ");
00161         e.append (this->name ());
00162             
00163         if (this->m_onCmsException)
00164             this->m_onCmsException (&e);
00165     }
00166     catch (lat::Error &e) 
00167     {
00168         if (this->m_onError)
00169             this->m_onError (&e);
00170     }
00171     catch (std::exception &e) 
00172     {
00173         if (this->m_onException)
00174             this->m_onException (&e);
00175     }
00176     catch (...) 
00177     {
00178         if (this->m_onUnhandledException)
00179             this->m_onUnhandledException ();
00180     }
00181   
00182     if (! trackCollections.empty ())
00183     {
00184         std::vector<edm::Handle<reco::TrackCollection> >::iterator i;
00185         std::vector<edm::Handle<reco::TrackCollection> >::iterator iEnd;
00186     
00187         LOG (2, trace, LFfwvis, "There are " << trackCollections.size () << " track collections.\n");
00188         int tc = 1;
00189         
00190         for (i = trackCollections.begin (), iEnd = trackCollections.end (); i != iEnd; ++i)
00191         {
00192             try 
00193             {
00194                 const reco::TrackCollection c = *(*i).product ();
00195                 LOG (3, trace, LFfwvis, "#" << tc++ << ":    track collection has " << c.size () << " tracks\n");
00196                 for (reco::TrackCollection::const_iterator track = c.begin (), cEnd = c.end (); track != cEnd; ++track)
00197                 {
00198                     m_tracks.push_back (*track);
00199                     LOG (3, trace, LFfwvis, "\nTrack with rechitsize = " << (*track).recHitsSize () << "\n");
00200                     
00201                     LOG (3, trace, LFfwvis, "\nConvert failed, use Inner and Onter States " <<  "\n");
00202 
00203                     std::vector<SbVec3f> myTraPos;
00204                     std::vector<SbVec3f> myTraDir;
00205 
00206                     if ((*track).innerOk () && (*track).outerOk ())
00207                     {
00208 
00209                         float x = (*track).innerPosition ().x () / 100.0;
00210                         float y = (*track).innerPosition ().y () / 100.0;
00211                         float z = (*track).innerPosition ().z () / 100.0;
00212 
00213                         float dirx = (*track).innerMomentum ().x (); //FIXME
00214                         float diry = (*track).innerMomentum ().y ();
00215                         float dirz = (*track).innerMomentum ().z ();
00216                        
00217                         myTraPos.push_back (SbVec3f (x, y, z));
00218                         myTraDir.push_back (SbVec3f (dirx, diry, dirz));
00219 
00220                         x = (*track).outerPosition ().x () / 100.0;
00221                         y = (*track).outerPosition ().y () / 100.0;
00222                         z = (*track).outerPosition ().z () / 100.0;
00223 
00224                         dirx = (*track).outerMomentum ().x ();
00225                         diry = (*track).outerMomentum ().y ();
00226                         dirz = (*track).outerMomentum ().z ();
00227 
00228                         myTraPos.push_back (SbVec3f (x, y, z));
00229                         myTraDir.push_back (SbVec3f (dirx, diry, dirz));
00230                     }
00231                     else
00232                     {
00233                         LOG (2, trace, LFfwvis, "\nOuter or Inner not OK\n");
00234                     }
00235 
00236                     m_trajectoryPositions.push_back (myTraPos);
00237                     m_trajectoryDirections.push_back (myTraDir);
00238                 }
00239             }    
00240             catch (cms::Exception& e)
00241             {
00242                 if (this->m_onCmsException)
00243                     this->m_onCmsException (&e);
00244             }
00245             catch (lat::Error &e) 
00246             {
00247                 if (this->m_onError)
00248                     this->m_onError (&e);
00249             }
00250             catch (std::exception &e) 
00251             {
00252                 if (this->m_onException)
00253                     this->m_onException (&e);
00254             }
00255             catch (...) 
00256             {
00257                 if (this->m_onUnhandledException)
00258                     this->m_onUnhandledException ();
00259             }
00260         }       
00261     }
00262     
00263     VisQueuedTwig::onBaseInvalidate ();
00264 }

void VisTkIdealHelixTracksTwig::twigChanged ( void   )  [virtual]

Definition at line 111 of file VisTkIdealHelixTracksTwig.cc.

References IgRepSet::invalidate(), and IgTwig::SELF_MASK.

00112 { IgRepSet::invalidate (this, SELF_MASK); }

void VisTkIdealHelixTracksTwig::update ( IgRZRep rep  )  [virtual]

Reimplemented from VisQueuedTwig.

Definition at line 506 of file VisTkIdealHelixTracksTwig.cc.

References Ig3DBaseRep::clear(), IgSoIdealTrack::dt, IgParticleChar::getByName(), IgSoIdealTrack::initialise(), m_BField, m_dt, m_flytime, m_RMax, m_t0, m_tracks, m_trajectoryDirections, m_trajectoryPositions, m_ZMax, Ig3DBaseRep::node(), IgSoIdealTrack::setBField(), IgSoIdealTrack::setRMax(), IgSoIdealTrack::setZMax(), IgSoIdealTrack::t0, trackThickness, VisQueuedTwig::update(), and VisActiveConfigurable< T >::value().

00507 {
00508     // Get debugging dump.
00509     VisQueuedTwig::update (rep);
00510 
00511     IgQtLock ();
00512     rep->clear ();
00513 
00514     if (! m_tracks.empty ())
00515     {
00516         SoSeparator *sep = new SoSeparator;
00517 
00518         SoMaterial *recomat = new SoMaterial;
00519         recomat->diffuseColor.setValue (1.0, 0.0, 0.0);
00520         sep->addChild (recomat);
00521         //set line width
00522         SoDrawStyle *sty = new SoDrawStyle;
00523         sty->style = SoDrawStyle::LINES;
00524         sty->lineWidth.setValue (trackThickness);
00525         sep->addChild (sty);
00526 
00527         if (!m_trajectoryPositions.empty () && !m_trajectoryDirections.empty ())
00528         {
00529             std::vector<std::vector<SbVec3f> >::const_iterator ipos = m_trajectoryPositions.begin ();
00530             std::vector<std::vector<SbVec3f> >::const_iterator idir = m_trajectoryDirections.begin ();
00531             for (std::vector<reco::Track>::const_iterator itrack = m_tracks.begin (); itrack != m_tracks.end (); ++itrack)
00532             {
00533                 int nState = 0;
00534                 std::vector<SbVec3f>::const_iterator idd = (*idir).begin ();
00535                 for (std::vector<SbVec3f>::const_iterator ipp = (*ipos).begin (); ipp != (*ipos).end (); ++ipp)
00536                 {
00537                     IgSoIdealTrack* myTraj = new IgSoIdealTrack;
00538                     myTraj->setBField (m_BField.value ());
00539                     myTraj->setRMax (m_RMax.value ());
00540                     myTraj->setZMax (m_ZMax.value ());
00541                     myTraj->t0.setValue (m_t0.value ());
00542                     myTraj->dt.setValue (m_dt.value ());
00543                     if ((*itrack).charge() > 0)
00544                     {
00545                         myTraj->initialise ((*ipp)[0], (*ipp)[1], (*ipp)[2],
00546                                             (*idd)[0], (*idd)[1], (*idd)[2],
00547                                             m_flytime,
00548                                             IgParticleChar::getByName ("muon"));
00549                     }
00550                     else if ((*itrack).charge() < 0)
00551                     {
00552                         myTraj->initialise ((*ipp)[0], (*ipp)[1], (*ipp)[2],
00553                                             (*idd)[0], (*idd)[1], (*idd)[2],
00554                                             m_flytime,
00555                                             IgParticleChar::getByName ("electron"));
00556                     } else
00557                     {
00558                         myTraj->initialise ((*ipp)[0], (*ipp)[1], (*ipp)[2],
00559                                             (*idd)[0], (*idd)[1], (*idd)[2],
00560                                             m_flytime,
00561                                             IgParticleChar::getByName ("gamma"));
00562                     }
00563 
00564                     sep->addChild (myTraj);
00565                     nState++;
00566                     idd++;
00567                 }
00568                 ipos++;
00569                 idir++;
00570             }
00571         }
00572         rep->node ()->addChild (sep);
00573     }
00574 }

void VisTkIdealHelixTracksTwig::update ( IgRPhiRep rep  )  [virtual]

Reimplemented from VisQueuedTwig.

Definition at line 433 of file VisTkIdealHelixTracksTwig.cc.

References Ig3DBaseRep::clear(), IgSoIdealTrack::dt, IgParticleChar::getByName(), IgSoIdealTrack::initialise(), m_BField, m_dt, m_flytime, m_RMax, m_t0, m_tracks, m_trajectoryDirections, m_trajectoryPositions, m_ZMax, Ig3DBaseRep::node(), IgSoIdealTrack::setBField(), IgSoIdealTrack::setRMax(), IgSoIdealTrack::setZMax(), IgSoIdealTrack::t0, trackThickness, VisQueuedTwig::update(), and VisActiveConfigurable< T >::value().

00434 {
00435     // Get debugging dump.
00436     VisQueuedTwig::update (rep);
00437 
00438     IgQtLock ();
00439     rep->clear ();
00440 
00441     if (! m_tracks.empty ())
00442     {
00443         SoSeparator *sep = new SoSeparator;
00444 
00445         SoMaterial *recomat = new SoMaterial;
00446         recomat->diffuseColor.setValue (1.0, 0.0, 0.0);
00447         sep->addChild (recomat);
00448         //set line width
00449         SoDrawStyle *sty = new SoDrawStyle;
00450         sty->style = SoDrawStyle::LINES;
00451         sty->lineWidth.setValue (trackThickness);
00452         sep->addChild (sty);
00453 
00454         if (! m_trajectoryPositions.empty () && ! m_trajectoryDirections.empty ())        
00455         {
00456             std::vector<std::vector<SbVec3f> >::const_iterator ipos = m_trajectoryPositions.begin ();
00457             std::vector<std::vector<SbVec3f> >::const_iterator idir = m_trajectoryDirections.begin ();
00458 
00459             for (std::vector<reco::Track>::const_iterator itrack = m_tracks.begin (); itrack != m_tracks.end (); ++itrack)
00460             {
00461                 int nState = 0;
00462                 std::vector<SbVec3f>::const_iterator idd = (*idir).begin ();
00463                 for (std::vector<SbVec3f>::const_iterator ipp = (*ipos).begin (); ipp != (*ipos).end (); ++ipp)
00464                 {
00465                     IgSoIdealTrack* myTraj = new IgSoIdealTrack;
00466                     myTraj->setBField (m_BField.value ());
00467                     myTraj->setRMax (m_RMax.value ());
00468                     myTraj->setZMax (m_ZMax.value ());
00469                     myTraj->t0.setValue (m_t0.value ());
00470                     myTraj->dt.setValue (m_dt.value ());
00471                     if ((*itrack).charge() > 0)
00472                     {
00473                         myTraj->initialise ((*ipp)[0], (*ipp)[1], (*ipp)[2],
00474                                             (*idd)[0], (*idd)[1], (*idd)[2],
00475                                             m_flytime,
00476                                             IgParticleChar::getByName ("muon"));
00477                     }
00478                     else if ((*itrack).charge() < 0)
00479                     {
00480                         myTraj->initialise ((*ipp)[0], (*ipp)[1], (*ipp)[2],
00481                                             (*idd)[0], (*idd)[1], (*idd)[2],
00482                                             m_flytime,
00483                                             IgParticleChar::getByName ("electron"));
00484                     } else
00485                     {
00486                         myTraj->initialise ((*ipp)[0], (*ipp)[1], (*ipp)[2],
00487                                             (*idd)[0], (*idd)[1], (*idd)[2],
00488                                             m_flytime,
00489                                             IgParticleChar::getByName ("gamma"));
00490                     }
00491 
00492                     sep->addChild (myTraj);
00493                     nState++;
00494                     idd++;
00495                 }
00496                 ipos++;
00497                 idir++;
00498             }
00499         }
00500         rep->node ()->addChild (sep);
00501     }
00502 }

void VisTkIdealHelixTracksTwig::update ( IgTextRep rep  )  [virtual]

Reimplemented from VisQueuedTwig.

Definition at line 267 of file VisTkIdealHelixTracksTwig.cc.

References e, exception, VisQueuedTwig::m_onCmsException, VisQueuedTwig::m_onError, VisQueuedTwig::m_onException, VisQueuedTwig::m_onUnhandledException, m_tracks, m_trajectoryDirections, m_trajectoryPositions, IgTextRep::setText(), and VisQueuedTwig::update().

00268 {
00269     // Get debugging dump.
00270     VisQueuedTwig::update (rep);
00271   
00272     // Prepare the property description.
00273     std::ostringstream text;
00274   
00275     text << setiosflags (std::ios::showpoint | std::ios::fixed);
00276     text.setf (std::ios::right, std::ios::adjustfield);
00277   
00278     text << "Reconstructed Tracks = ";
00279   
00280     try
00281     {    
00282         unsigned int tracks_size = m_tracks.size ();
00283 
00284         std::vector<std::vector<SbVec3f> >::const_iterator ipos = m_trajectoryPositions.begin ();
00285         std::vector<std::vector<SbVec3f> >::const_iterator idir = m_trajectoryDirections.begin ();
00286 
00287         for (unsigned int nt = 0; nt < tracks_size; nt++)
00288         {
00289             std::ostringstream out_pt;
00290             out_pt << m_tracks [nt].pt (); 
00291             text << "<table width='100%' border=1>"
00292                  << "<TR align = center>"
00293                  << "<TD COLSPAN =4>Track number = " << nt 
00294                  << " track pt = " << out_pt.str () 
00295                  << "</TR>";
00296 
00297             int nState = 0;
00298 
00299             std::vector<SbVec3f>::const_iterator idd = (*idir).begin ();
00300             for (std::vector<SbVec3f>::const_iterator ipp = (*ipos).begin (); ipp != (*ipos).end (); ++ipp)
00301             {  
00302                 text << "<TR align = right>"
00303                      << "<TD>" << std::setw (3) << nState++<< "</TD>"
00304                      << "<TD>" << std::setw (6) << std::setprecision (3) << (*ipp)[0] << "," << (*ipp)[1] << "," << (*ipp)[2] << "</TD>"
00305                      << "<TD>" << std::setw (6) << std::setprecision (3) << (*idd)[0] << "," << (*idd)[1] << "," << (*idd)[2] << "</TD></TR>";
00306                 idd++;
00307             }
00308             text << "</table>";  
00309         }
00310     }
00311     catch (cms::Exception& e)
00312     {
00313         if (this->m_onCmsException)
00314             this->m_onCmsException (&e);
00315     }
00316     catch (lat::Error &e) 
00317     {
00318         if (this->m_onError)
00319             this->m_onError (&e);
00320     }
00321     catch (std::exception &e) 
00322     {
00323         if (this->m_onException)
00324             this->m_onException (&e);
00325     }
00326     catch (...) 
00327     {
00328         if (this->m_onUnhandledException)
00329             this->m_onUnhandledException ();
00330     }
00331   
00332     IgQtLock ();
00333     rep->setText (text.str ());
00334 }

void VisTkIdealHelixTracksTwig::update ( IgLegoRep rep  )  [virtual]

Reimplemented from VisQueuedTwig.

Definition at line 577 of file VisTkIdealHelixTracksTwig.cc.

References Ig3DBaseRep::clear(), and VisQueuedTwig::update().

00578 {
00579 
00580     // Get debugging dump.
00581     VisQueuedTwig::update (rep);
00582 
00583     IgQtLock ();
00584     rep->clear ();
00585 
00586     //........ still missing
00587 }

void VisTkIdealHelixTracksTwig::update ( Ig3DRep rep  )  [virtual]

Reimplemented from VisQueuedTwig.

Definition at line 337 of file VisTkIdealHelixTracksTwig.cc.

References Ig3DBaseRep::clear(), IgSoSimpleTrajectory::controlPoints, IgSoIdealTrack::dt, IgParticleChar::getByName(), IgSoIdealTrack::initialise(), m_BField, m_dt, m_flytime, m_RMax, m_t0, m_tracks, m_trajectoryDirections, m_trajectoryPositions, m_ZMax, IgSoSimpleTrajectory::markerPoints, Ig3DBaseRep::node(), IgSoIdealTrack::setBField(), IgSoIdealTrack::setRMax(), IgSoIdealTrack::setZMax(), IgSoIdealTrack::t0, track, trackThickness, VisQueuedTwig::update(), and VisActiveConfigurable< T >::value().

00338 {
00339     // Get debugging dump.  
00340     VisQueuedTwig::update (rep);
00341   
00342     IgQtLock ();
00343     rep->clear ();
00344   
00345     if (! m_tracks.empty ())
00346     {
00347         SoSeparator *sep = new SoSeparator;    
00348       
00349         SoMaterial *recomat = new SoMaterial;
00350         recomat->diffuseColor.setValue (1.0, 0.0, 0.0);
00351         sep->addChild (recomat);
00352         //set line width
00353         SoDrawStyle *sty = new SoDrawStyle;
00354         sty->style = SoDrawStyle::LINES;
00355         sty->lineWidth.setValue (trackThickness);
00356         sep->addChild (sty);
00357 
00358         if (!m_trajectoryPositions.empty () && !m_trajectoryDirections.empty ())
00359         {
00360             std::vector<std::vector<SbVec3f> >::const_iterator ipos = m_trajectoryPositions.begin ();
00361             std::vector<std::vector<SbVec3f> >::const_iterator idir = m_trajectoryDirections.begin ();
00362 
00363             for (std::vector<reco::Track>::const_iterator itrack = m_tracks.begin (), itrackEnd = m_tracks.end (); itrack != itrackEnd; ++itrack)
00364             {
00365                 int nState = 0;
00366                 std::vector<SbVec3f>::const_iterator idd = (*idir).begin ();
00367                 for (std::vector<SbVec3f>::const_iterator ipp = (*ipos).begin (); ipp != (*ipos).end (); ++ipp)
00368                 {
00369                     if ((*itrack).charge() > 0)
00370                     {
00371                         IgSoIdealTrack* myTraj = new IgSoIdealTrack;
00372                         myTraj->setBField (m_BField.value ());
00373                         myTraj->setRMax (m_RMax.value ());
00374                         myTraj->setZMax (m_ZMax.value ());
00375                         myTraj->t0.setValue (m_t0.value ());
00376                         myTraj->dt.setValue (m_dt.value ());
00377                         myTraj->initialise ((*ipp)[0], (*ipp)[1], (*ipp)[2],
00378                                             (*idd)[0], (*idd)[1], (*idd)[2],
00379                                             m_flytime,
00380                                             IgParticleChar::getByName ("muon"));
00381                         sep->addChild (myTraj);
00382                     }
00383                     else if ((*itrack).charge() < 0)
00384                     {
00385                         IgSoIdealTrack* myTraj = new IgSoIdealTrack;
00386                         myTraj->setBField (m_BField.value ());
00387                         myTraj->setRMax (m_RMax.value ());
00388                         myTraj->setZMax (m_ZMax.value ());
00389                         myTraj->t0.setValue (m_t0.value ());
00390                         myTraj->dt.setValue (m_dt.value ());
00391                         myTraj->initialise ((*ipp)[0], (*ipp)[1], (*ipp)[2],
00392                                             (*idd)[0], (*idd)[1], (*idd)[2],
00393                                             m_flytime,
00394                                             IgParticleChar::getByName ("electron"));
00395                         sep->addChild (myTraj);
00396                     } 
00397                     else
00398                     {
00399                         SoSeparator *gammas = new SoSeparator;
00400                         SoMaterial *gammaMaterial = new SoMaterial;
00401                         gammaMaterial->ambientColor.setValue (0.000, 0.000, 0.000); 
00402                         gammaMaterial->diffuseColor.setValue (1.000, 1.000, 0.000);  
00403                         gammaMaterial->emissiveColor.setValue (1.000, 1.000, 0.000); 
00404                         gammaMaterial->specularColor.setValue (0.000, 0.000, 0.000); 
00405                         gammaMaterial->shininess = 0.0;
00406                         gammaMaterial->transparency = 0.0;
00407                         gammas->addChild (gammaMaterial);
00408                          
00409                         IgSoSimpleTrajectory *track = new IgSoSimpleTrajectory;
00410                          
00411                         track->controlPoints.set1Value (0, SbVec3f ((*ipp)[0], (*ipp)[1], (*ipp)[2]));
00412                         track->markerPoints.set1Value (0, SbVec3f ((*ipp)[0], (*ipp)[1], (*ipp)[2]));
00413                           
00414                         track->controlPoints.set1Value (1, SbVec3f ((*ipp)[0], (*ipp)[1], (*ipp)[2]));
00415                         track->markerPoints.set1Value (1, SbVec3f ((*ipp)[0] * 10, (*ipp)[1] * 10, (*ipp)[2] * 10));
00416                         gammas->addChild (track);
00417                           
00418                         sep->addChild (gammas);
00419                     }
00420                     
00421                     nState++;
00422                     idd++;
00423                 }
00424                 ipos++;
00425                 idir++;
00426             }
00427         }
00428         rep->node ()->addChild (sep);
00429     }
00430 }


Member Data Documentation

VisAnimate VisTkIdealHelixTracksTwig::m_animate [private]

Definition at line 70 of file VisTkIdealHelixTracksTwig.h.

VisMuonAnnotation VisTkIdealHelixTracksTwig::m_annot [private]

Definition at line 79 of file VisTkIdealHelixTracksTwig.h.

VisBField VisTkIdealHelixTracksTwig::m_BField [private]

Definition at line 74 of file VisTkIdealHelixTracksTwig.h.

Referenced by update().

VisCounterMax VisTkIdealHelixTracksTwig::m_counterMax [private]

Definition at line 71 of file VisTkIdealHelixTracksTwig.h.

VisCounterMin VisTkIdealHelixTracksTwig::m_counterMin [private]

Definition at line 72 of file VisTkIdealHelixTracksTwig.h.

VisMuonDt VisTkIdealHelixTracksTwig::m_dt [private]

Definition at line 78 of file VisTkIdealHelixTracksTwig.h.

Referenced by update().

double VisTkIdealHelixTracksTwig::m_flytime [private]

Definition at line 90 of file VisTkIdealHelixTracksTwig.h.

Referenced by update(), and VisTkIdealHelixTracksTwig().

VisCounterFrequency VisTkIdealHelixTracksTwig::m_frequency [private]

Definition at line 73 of file VisTkIdealHelixTracksTwig.h.

const std::string VisTkIdealHelixTracksTwig::m_friendlyName [private]

Definition at line 66 of file VisTkIdealHelixTracksTwig.h.

Referenced by onNewEvent().

const std::string VisTkIdealHelixTracksTwig::m_instanceName [private]

Definition at line 68 of file VisTkIdealHelixTracksTwig.h.

Referenced by onNewEvent().

const std::string VisTkIdealHelixTracksTwig::m_moduleLabel [private]

Definition at line 67 of file VisTkIdealHelixTracksTwig.h.

Referenced by onNewEvent().

const std::string VisTkIdealHelixTracksTwig::m_processName [private]

Definition at line 69 of file VisTkIdealHelixTracksTwig.h.

Referenced by onNewEvent().

VisRMax VisTkIdealHelixTracksTwig::m_RMax [private]

Definition at line 75 of file VisTkIdealHelixTracksTwig.h.

Referenced by update().

VisShowHitDets VisTkIdealHelixTracksTwig::m_showDets [private]

Definition at line 80 of file VisTkIdealHelixTracksTwig.h.

VisMuonT0 VisTkIdealHelixTracksTwig::m_t0 [private]

Definition at line 77 of file VisTkIdealHelixTracksTwig.h.

Referenced by update().

std::string VisTkIdealHelixTracksTwig::m_text [private]

Definition at line 65 of file VisTkIdealHelixTracksTwig.h.

Referenced by onNewEvent().

std::vector<std::string> VisTkIdealHelixTracksTwig::m_trackCollectionNames [private]

Definition at line 81 of file VisTkIdealHelixTracksTwig.h.

Referenced by onNewEvent(), and VisTkIdealHelixTracksTwig().

std::vector<reco::Track> VisTkIdealHelixTracksTwig::m_tracks [private]

Definition at line 83 of file VisTkIdealHelixTracksTwig.h.

Referenced by onNewEvent(), and update().

std::vector<std::vector<SbVec3f> > VisTkIdealHelixTracksTwig::m_trajectoryDirections [private]

Definition at line 86 of file VisTkIdealHelixTracksTwig.h.

Referenced by onNewEvent(), and update().

std::vector<std::vector<SbVec3f> > VisTkIdealHelixTracksTwig::m_trajectoryPositions [private]

Definition at line 85 of file VisTkIdealHelixTracksTwig.h.

Referenced by onNewEvent(), and update().

VisZMax VisTkIdealHelixTracksTwig::m_ZMax [private]

Definition at line 76 of file VisTkIdealHelixTracksTwig.h.

Referenced by update().

const edm::ParameterSet* VisTkIdealHelixTracksTwig::pset [private]

Definition at line 88 of file VisTkIdealHelixTracksTwig.h.

Referenced by VisTkIdealHelixTracksTwig().

double VisTkIdealHelixTracksTwig::trackThickness [private]

Definition at line 89 of file VisTkIdealHelixTracksTwig.h.

Referenced by update(), and VisTkIdealHelixTracksTwig().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:35:39 2009 for CMSSW by  doxygen 1.5.4