CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
FWFFLooper Class Reference

#include <FWFFLooper.h>

Inheritance diagram for FWFFLooper:
CmsShowMainBase edm::EDLooperBase

Public Member Functions

void attachTo (edm::ActivityRegistry &) override
 Override this method if you need to monitor the state of the processing. More...
 
void autoLoadNewEvent () override
 
void beginRun (const edm::Run &, const edm::EventSetup &) override
 
void checkPosition () override
 
void display (const std::string &info="")
 
edm::EDLooperBase::Status duringLoop (const edm::Event &, const edm::EventSetup &, edm::ProcessingController &) override
 
edm::EDLooperBase::Status endOfLoop (const edm::EventSetup &, unsigned int) override
 
 FWFFLooper (const edm::ParameterSet &)
 
TEveMagField * getMagField ()
 
void postBeginJob ()
 
void postEndJob ()
 
void quit () override
 
void remakeGeometry (const DisplayGeomRecord &dgRec)
 
void requestChanges (const std::string &, const edm::ParameterSet &)
 
void setupFieldForPropagator (TEveTrackPropagator *prop)
 
void showPathsGUI (const TGWindow *p)
 
void startingNewLoop (unsigned int) override
 
void stopPlaying () override
 
 ~FWFFLooper () override
 
- Public Member Functions inherited from CmsShowMainBase
FWModelChangeManagerchangeManager ()
 
virtual void checkKeyBindingsOnPLayEventsStateChanged ()
 
 CmsShowMainBase ()
 
FWColorManagercolorManager ()
 
const char * configFilename () const
 
FWConfigurationManagerconfigurationManager ()
 
void doFirstEvent ()
 
void doLastEvent ()
 
void doNextEvent ()
 
void doPreviousEvent ()
 
void draw ()
 
FWEventItemsManagereiManager ()
 
bool forward () const
 
const std::string & geometryFilename (void)
 
FWGeometrygetGeom ()
 
void goToRunEvent (edm::RunNumber_t, edm::LuminosityBlockNumber_t, edm::EventNumber_t)
 
FWGUIManagerguiManager ()
 
bool isPlaying () const
 
void loadGeometry ()
 
bool loop () const
 
FWModelChangeManagermodelChangeManager ()
 
void partialLoadConfiguration (const std::string &config)
 
void partialWriteToConfigFile (const std::string &config)
 
void playBackward ()
 
void playForward ()
 
void registerPhysicsObject (const FWPhysicsObjectDesc &iItem)
 
void reloadConfiguration (const std::string &config)
 
FWSelectionManagerselectionManager ()
 
void setAutoSaveAllViewsFormat (const std::string &fmt)
 
void setAutoSaveAllViewsHeight (int x)
 
void setConfigFilename (const std::string &f)
 
void setGeometryFilename (const std::string &filename)
 
void setPlayDelay (Float_t val)
 
void setPlayLoop ()
 
void setSimGeometryFilename (const std::string &filename, const std::string &geoname)
 
void setup (FWNavigatorBase *navigator, fireworks::Context *context, FWJobMetadataManager *metadataManager)
 
void setupActions ()
 
void setupAutoLoad (float x)
 
void setupConfiguration ()
 
void setupDebugSupport ()
 
void setupViewManagers ()
 
void startAutoLoadTimer ()
 
CmsShowTaskExecutorstartupTasks ()
 
void stopAutoLoadTimer ()
 
void unsetPlayLoop ()
 
FWViewManagerManagerviewManager ()
 
void writePartialToConfigFile ()
 
void writeToConfigFile (const std::string &config)
 
void writeToCurrentConfigFile ()
 
virtual ~CmsShowMainBase () noexcept(false)
 
- Public Member Functions inherited from edm::EDLooperBase
virtual void beginOfJob (EventSetup const &)
 
virtual void beginOfJob ()
 
void copyInfo (ScheduleInfo const &)
 
void doBeginLuminosityBlock (LuminosityBlockPrincipal &, EventSetup const &, ProcessContext *)
 
void doBeginRun (RunPrincipal &, EventSetup const &, ProcessContext *)
 
Status doDuringLoop (EventPrincipal &eventPrincipal, EventSetup const &es, ProcessingController &, StreamContext *)
 
void doEndLuminosityBlock (LuminosityBlockPrincipal &, EventSetup const &, ProcessContext *)
 
Status doEndOfLoop (EventSetup const &es)
 
void doEndRun (RunPrincipal &, EventSetup const &, ProcessContext *)
 
void doStartingNewLoop ()
 
 EDLooperBase ()
 
 EDLooperBase (EDLooperBase const &)=delete
 
virtual void endOfJob ()
 
virtual std::set< eventsetup::EventSetupRecordKeymodifyingRecords () const
 
EDLooperBaseoperator= (EDLooperBase const &)=delete
 
void prepareForNextLoop (eventsetup::EventSetupProvider *esp)
 
void setActionTable (ExceptionToActionTable const *actionTable)
 
void setModuleChanger (ModuleChanger *)
 
virtual ~EDLooperBase () noexcept(false)
 

Private Types

typedef std::map< std::string, edm::ParameterSetModuleChanges
 

Private Member Functions

 FWFFLooper (const FWFFLooper &)
 
void loadDefaultGeometryFile (void)
 
const FWFFLooperoperator= (const FWFFLooper &)
 

Private Attributes

bool m_AllowStep
 
edm::Service< FWFFHelperm_appHelper
 
bool m_autoReload
 
std::unique_ptr< fireworks::Contextm_context
 
TEveManager * m_EveManager
 
bool m_firstTime
 
edm::ESWatcher< DisplayGeomRecordm_geomWatcher
 
bool m_isFirstEvent
 
bool m_isLastEvent
 
TEveMagField * m_MagField
 
std::unique_ptr< FWFFMetadataManagerm_metadataManager
 
std::unique_ptr< FWFFNavigatorm_navigator
 
edm::EventID m_nextEventId
 
FWPathsPopupm_pathsGUI
 
TRint * m_Rint
 
ModuleChanges m_scheduledChanges
 
bool m_ShowEvent
 

Additional Inherited Members

- Public Types inherited from edm::EDLooperBase
enum  Status { kContinue, kStop }
 
- Protected Member Functions inherited from CmsShowMainBase
fireworks::Contextcontext ()
 
virtual void eventChangedImp ()
 
void eventChangedSlot ()
 
void sendVersionInfo ()
 
- Protected Member Functions inherited from edm::EDLooperBase
ModuleChangermoduleChanger ()
 This only returns a non-zero value during the call to endOfLoop. More...
 
ScheduleInfo const * scheduleInfo () const
 This returns a non-zero value after the constructor has been called. More...
 

Detailed Description

Definition at line 44 of file FWFFLooper.h.

Member Typedef Documentation

typedef std::map<std::string, edm::ParameterSet> FWFFLooper::ModuleChanges
private

Definition at line 103 of file FWFFLooper.h.

Constructor & Destructor Documentation

FWFFLooper::FWFFLooper ( const edm::ParameterSet )
FWFFLooper::~FWFFLooper ( )
override

Definition at line 209 of file FWFFLooper.cc.

210 {
211  delete m_MagField;
212 }
TEveMagField * m_MagField
Definition: FWFFLooper.h:96
FWFFLooper::FWFFLooper ( const FWFFLooper )
private

Member Function Documentation

void FWFFLooper::attachTo ( edm::ActivityRegistry )
overridevirtual

Override this method if you need to monitor the state of the processing.

Reimplemented from edm::EDLooperBase.

Definition at line 200 of file FWFFLooper.cc.

References postEndJob(), FWPathsPopup::postModuleEvent(), FWPathsPopup::preModuleEvent(), edm::ActivityRegistry::watchPostEndJob(), edm::ActivityRegistry::watchPostModuleEvent(), and edm::ActivityRegistry::watchPreModuleEvent().

201 {
202  m_pathsGUI = new FWPathsPopup(this, guiManager());
203 
204  ar.watchPostModuleEvent(m_pathsGUI, &FWPathsPopup::postModuleEvent);
205  ar.watchPreModuleEvent(m_pathsGUI, &FWPathsPopup::preModuleEvent);
206  ar.watchPostEndJob(this, &FWFFLooper::postEndJob);
207 }
void preModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
FWGUIManager * guiManager()
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:101
void postEndJob()
Definition: FWFFLooper.cc:244
void postModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
void FWFFLooper::autoLoadNewEvent ( )
overridevirtual

This actually needs to be different from the standalone case because nextEvent() / previousEvent() will immediately interrupt the GUI event loop and fall back to the looper.

Implements CmsShowMainBase.

Definition at line 276 of file FWFFLooper.cc.

References heppy_loop::loop, and CmsShowMainBase::stopPlaying().

277 {
279  bool reachedEnd = (forward() && m_isLastEvent) || (!forward() && m_isFirstEvent);
280 
281  if (!reachedEnd || loop())
282  {
283  // Will exit the loop here!
284  m_autoReload = true;
285  forward() ? m_navigator->nextEvent() : m_navigator->previousEvent();
286  }
287  else
288  {
289  m_autoReload = false;
293  }
294 }
bool m_isLastEvent
Definition: FWFFLooper.h:108
FWGUIManager * guiManager()
void enableActions(bool enable=true)
virtual void stopPlaying()
bool loop() const
bool m_autoReload
Definition: FWFFLooper.h:106
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:201
bool m_isFirstEvent
Definition: FWFFLooper.h:107
std::unique_ptr< FWFFNavigator > m_navigator
Definition: FWFFLooper.h:89
bool forward() const
void enableComplexNavigation(bool enable=true)
void FWFFLooper::beginRun ( const edm::Run iRun,
const edm::EventSetup iSetup 
)
override

Definition at line 311 of file FWFFLooper.cc.

References edm::ConditionsInRunBlock::BAvgCurrent, cppFunctionSkipper::exception, edm::EventSetup::find(), fwLog, edm::EventSetup::get(), edm::Run::getByLabel(), FWRecoGeometry::idToName, edm::HandleBase::isValid(), fwlog::kInfo, CmsShowMainBase::loadGeometry(), RunInfo::m_avg_current, edm::ESHandle< T >::product(), FWGUIManager::showEventFilterGUI(), and showPathsGUI().

312 {
313  // Check DisplayGeomRecord changes.
314  try {
315  m_geomWatcher.check(iSetup);
316  }
317  catch (...) {}
318 
319  // If the geometry was not picked up from a file, we try to get it from the
320  // EventSetup!
321  // FIXME: we need to check we execute only once because the view managers
322  // depend on geometry and they cannot be initialised more than once.
323  // This should actually be cleaned up so that the various view manager
324  // don't care about geometry.
325  // FIXME: we should actually be able to update the geometry when requested.
326  // this is not possible at the moment.
327  if (m_firstTime == true)
328  {
329  if (m_context->getGeom() == nullptr)
330  {
331  try
332  {
333  guiManager()->updateStatus("Loading geometry...");
335  iSetup.get<FWRecoGeometryRecord>().get(geoh);
336  getGeom().initMap(geoh.product()->idToName);
337  m_context->setGeom(&(getGeom()));
338  }
339  catch( const cms::Exception& exception )
340  {
341  setGeometryFilename("cmsGeom10.root");
343  }
344  }
345 
348  setupActions();
349 
350  guiManager()->showEventFilterGUI_.connect(boost::bind(&FWFFLooper::showPathsGUI, this, _1));
351  guiManager()->setFilterButtonText("Show paths / CMSSW configuration editor");
353 
354  m_firstTime = false;
355  m_autoReload = false;
356  }
357 
358  float current = 18160.0f;
359  try {
361  // bool res = iRun.getByType(runCond);
362  bool res = iRun.getByLabel("conditionsInEdm", runCond);
363  if (res && runCond.isValid())
364  {
365  printf("Got current from conds in edm %f\n", runCond->BAvgCurrent);
366  current = runCond->BAvgCurrent;
367  }
368  else
369  {
370  printf("Could not extract run-conditions get-result=%d, is-valid=%d\n", res, runCond.isValid());
371 
372  auto rec = iSetup.find( edm::eventsetup::EventSetupRecordKey::makeKey<RunInfoRcd>());
373  if( rec )
374  {
376  iSetup.get<RunInfoRcd>().get(sum);
377 
378  current = sum->m_avg_current;
379  printf("Got current from RunInfoRcd %f\n", sum->m_avg_current);
380  }
381  }
382  }
383  catch (...) {
384  fwLog(fwlog::kInfo) << "ConditionsInRunBlock not available\n";
385  }
386  static_cast<CmsEveMagField*>(m_MagField)->SetFieldByCurrent(current);
387  context()->getField()->setFFFieldMag(m_MagField->GetMaxFieldMag());
388 }
edm::ESWatcher< DisplayGeomRecord > m_geomWatcher
Definition: FWFFLooper.h:110
bool getByLabel(std::string const &label, Handle< PROD > &result) const
Definition: Run.h:304
sigc::signal< void > filterButtonClicked_
Definition: FWGUIManager.h:207
FWGUIManager * guiManager()
void initMap(const FWRecoGeom::InfoMap &map)
Definition: FWGeometry.cc:160
TEveMagField * m_MagField
Definition: FWFFLooper.h:96
void updateStatus(const char *status)
Definition: Electron.h:6
FWRecoGeom::InfoMap idToName
void setGeometryFilename(const std::string &filename)
void setFFFieldMag(float)
Definition: FWMagField.cc:229
FWMagField * getField() const
Definition: Context.h:77
bool m_autoReload
Definition: FWFFLooper.h:106
sigc::signal< void, const TGWindow * > showEventFilterGUI_
Definition: FWGUIManager.h:208
fireworks::Context * context()
std::optional< eventsetup::EventSetupRecordGeneric > find(const eventsetup::EventSetupRecordKey &) const
Definition: EventSetup.cc:88
bool m_firstTime
Definition: FWFFLooper.h:100
bool isValid() const
Definition: HandleBase.h:74
#define fwLog(_level_)
Definition: fwLog.h:50
void setFilterButtonText(const char *txt)
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
float m_avg_current
Definition: RunInfo.h:29
FWGeometry & getGeom()
void showEventFilterGUI()
std::unique_ptr< fireworks::Context > m_context
Definition: FWFFLooper.h:91
T get() const
Definition: EventSetup.h:68
void showPathsGUI(const TGWindow *p)
Definition: FWFFLooper.cc:526
T const * product() const
Definition: ESHandle.h:84
void FWFFLooper::checkPosition ( )
overridevirtual

Implements CmsShowMainBase.

Definition at line 251 of file FWFFLooper.cc.

References heppy_loop::loop.

252 {
253  if (loop() && isPlaying())
254  return;
255 
258 
259  if (m_isFirstEvent)
261 
262  if (m_isLastEvent)
263  {
264  guiManager()->disableNext();
265  // force enable play events action in --port mode
266  if (!guiManager()->playEventsAction()->isEnabled())
268  }
269 }
bool m_isLastEvent
Definition: FWFFLooper.h:108
FWGUIManager * guiManager()
void enable()
Definition: CSGAction.cc:284
bool loop() const
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:201
void disablePrevious()
bool m_isFirstEvent
Definition: FWFFLooper.h:107
CSGContinuousAction * playEventsAction()
bool isPlaying() const
void enableComplexNavigation(bool enable=true)
void disableNext()
void FWFFLooper::display ( const std::string &  info = "")

Definition at line 459 of file FWFFLooper.cc.

References FWFFHelper::m_Rint.

460 {
461  // Display whatever was registered so far, wait until user presses
462  // the "Step" button.
463 
464  if (m_AllowStep)
465  {
466  gEve->Redraw3D();
467  m_Rint->Run(kTRUE);
468  }
469 }
TRint * m_Rint
Definition: FWFFLooper.h:94
bool m_AllowStep
Definition: FWFFLooper.h:98
edm::EDLooperBase::Status FWFFLooper::duringLoop ( const edm::Event event,
const edm::EventSetup es,
edm::ProcessingController controller 
)
override

Definition at line 392 of file FWFFLooper.cc.

References ntuplePlotting::draw(), edm::ProcessingController::forwardState(), edm::ProcessingController::kAtFirstEvent, edm::ProcessingController::kAtLastEvent, FWFFNavigator::kFirstEvent, FWFFNavigator::kLastEvent, FWFFNavigator::kNextEvent, FWFFNavigator::kPreviousEvent, FWFFHelper::m_Rint, edm::ProcessingController::reverseState(), edm::ProcessingController::setTransitionToEvent(), edm::ProcessingController::setTransitionToNextEvent(), and edm::ProcessingController::setTransitionToPreviousEvent().

395 {
396  // Check DisplayGeomRecord changes.
397  try {
398  m_geomWatcher.check(es);
399  } catch (...) {}
400 
401 
402  m_pathsGUI->postEvent(event);
403 
406  // If the next event id is valid, set the transition so
407  // that we go to it go to to it.
408  if (m_nextEventId != edm::EventID())
409  {
412  return kContinue;
413  }
414  // We handle "last event" by going to the first event and then moving to the
415  // previous event.
416  if (m_navigator->currentTransition() == FWFFNavigator::kLastEvent)
417  {
418  m_navigator->resetTransition();
419  controller.setTransitionToPreviousEvent();
420  return kContinue;
421  }
422 
423  m_pathsGUI->hasChanges() = false;
424  m_metadataManager->update(new FWFFMetadataUpdateRequest(event));
425  m_navigator->setCurrentEvent(&event);
426  if (m_autoReload == true)
428 
429  checkPosition();
430  draw();
431 
432  m_Rint->Run(kTRUE);
433  // If the GUI changed the PSet, save the current event to reload
434  // it on next iteration.
435  if (m_pathsGUI->hasChanges())
436  {
438  return kStop;
439  }
440  else if (m_navigator->currentTransition() == FWFFNavigator::kFirstEvent)
441  {
442  m_nextEventId = m_navigator->getFirstEventID();
443  return kStop;
444  }
445  else if (m_navigator->currentTransition() == FWFFNavigator::kLastEvent)
446  {
447  m_nextEventId = m_navigator->getFirstEventID();
448  return kStop;
449  }
450  else if (m_navigator->currentTransition() == FWFFNavigator::kNextEvent)
451  controller.setTransitionToNextEvent();
452  else if (m_navigator->currentTransition() == FWFFNavigator::kPreviousEvent)
453  controller.setTransitionToPreviousEvent();
454  return kContinue;
455 }
edm::ESWatcher< DisplayGeomRecord > m_geomWatcher
Definition: FWFFLooper.h:110
bool m_isLastEvent
Definition: FWFFLooper.h:108
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:101
void setTransitionToEvent(edm::EventID const &iID)
bool m_autoReload
Definition: FWFFLooper.h:106
ForwardState forwardState() const
Returns the present state of processing.
std::unique_ptr< FWFFMetadataManager > m_metadataManager
Definition: FWFFLooper.h:90
bool & hasChanges()
Definition: FWPathsPopup.h:37
TRint * m_Rint
Definition: FWFFLooper.h:94
bool m_isFirstEvent
Definition: FWFFLooper.h:107
void checkPosition() override
Definition: FWFFLooper.cc:251
std::unique_ptr< FWFFNavigator > m_navigator
Definition: FWFFLooper.h:89
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
void postEvent(edm::Event const &event)
edm::EventID m_nextEventId
Definition: FWFFLooper.h:105
ReverseState reverseState() const
edm::EDLooperBase::Status FWFFLooper::endOfLoop ( const edm::EventSetup ,
unsigned  int 
)
override

This is called at the end of looping. We always continue because we want the transition set in the ProcessingController to happen.

Definition at line 505 of file FWFFLooper.cc.

References MessageLogger_cfi::cerr, MillePedeFileConverter_cfg::e, fwLog, mps_fire::i, fwlog::kError, and cms::Exception::what().

506 {
507  // Looks like the module changer is availble only here.
508  for (ModuleChanges::iterator i = m_scheduledChanges.begin(),
509  e = m_scheduledChanges.end();
510  i != e; ++i)
511  {
512  try {
513  moduleChanger()->changeModule(i->first, i->second);
514  }
515  catch (cms::Exception const& e)
516  {
517  fwLog(fwlog::kError) << "FWFFLooper::endOfLoop caught exception.\n";
518  std::cerr << e.what() << std::endl;
519  }
520  }
521  m_scheduledChanges.clear();
522  return kContinue;
523 }
ModuleChanges m_scheduledChanges
Definition: FWFFLooper.h:104
char const * what() const override
Definition: Exception.cc:141
bool changeModule(const std::string &iLabel, const ParameterSet &iPSet)
#define fwLog(_level_)
Definition: fwLog.h:50
ModuleChanger * moduleChanger()
This only returns a non-zero value during the call to endOfLoop.
TEveMagField * FWFFLooper::getMagField ( )

Definition at line 476 of file FWFFLooper.cc.

477 {
478  return m_MagField;
479 }
TEveMagField * m_MagField
Definition: FWFFLooper.h:96
void FWFFLooper::loadDefaultGeometryFile ( void  )
private

Definition at line 192 of file FWFFLooper.cc.

References f, and CmsShowMainBase::loadGeometry().

193 {
195  f=boost::bind( &CmsShowMainBase::loadGeometry, this );
196  startupTasks()->addTask( f );
197 }
CmsShowTaskExecutor * startupTasks()
double f[11][100]
boost::function0< void > TaskFunctor
void addTask(const TaskFunctor &iTask)
const FWFFLooper& FWFFLooper::operator= ( const FWFFLooper )
private
void FWFFLooper::postBeginJob ( )
void FWFFLooper::postEndJob ( )

Definition at line 244 of file FWFFLooper.cc.

Referenced by attachTo().

245 {
246  printf("FWFFLooper::postEndJob\n");
247  TEveManager::Terminate();
248 }
void FWFFLooper::quit ( )
overridevirtual

Implements CmsShowMainBase.

Definition at line 488 of file FWFFLooper.cc.

489 {
490  gSystem->ExitLoop();
491 
492  // Throwing exception here is bad because:
493  // a) it does not work when in a "debug step";
494  // b) does not restore terminal state.
495  // So we do exit instead for now.
496  // throw cms::Exception("UserTerminationRequest");
497  gSystem->Exit(0);
498 }
void FWFFLooper::remakeGeometry ( const DisplayGeomRecord dgRec)

Definition at line 551 of file FWFFLooper.cc.

References fwLog, relativeConstraints::geom, edm::eventsetup::EventSetupRecord::get(), fwlog::kInfo, edm::ESHandle< T >::product(), and FWGeometryTableViewManager::setGeoManagerRuntime().

552 {
553  fwLog(fwlog::kInfo) << "FWFFLooper set TGeo geomtery from DisplayGeomRecord.\n";
554 
556  dgRec.get(geom);
557  TEveGeoManagerHolder _tgeo(const_cast<TGeoManager*>(geom.product()));
559 }
#define fwLog(_level_)
Definition: fwLog.h:50
static void setGeoManagerRuntime(TGeoManager *)
T const * product() const
Definition: ESHandle.h:84
bool get(HolderT &iHolder) const
void FWFFLooper::requestChanges ( const std::string &  moduleLabel,
const edm::ParameterSet ps 
)

Definition at line 543 of file FWFFLooper.cc.

Referenced by FWPathsPopup::scheduleReloadEvent().

544 {
545  m_scheduledChanges[moduleLabel] = ps;
546 }
ModuleChanges m_scheduledChanges
Definition: FWFFLooper.h:104
void FWFFLooper::setupFieldForPropagator ( TEveTrackPropagator *  prop)

Definition at line 482 of file FWFFLooper.cc.

483 {
484  prop->SetMagFieldObj(m_MagField, kFALSE);
485 }
TEveMagField * m_MagField
Definition: FWFFLooper.h:96
void FWFFLooper::showPathsGUI ( const TGWindow *  p)

Definition at line 526 of file FWFFLooper.cc.

Referenced by beginRun().

527 {
528  if (!m_pathsGUI)
529  return;
530  if (m_pathsGUI->IsMapped())
531  {
532  guiManager()->setFilterButtonText("Show paths / CMSSW configuration editor");
533  m_pathsGUI->UnmapWindow();
534  }
535  else
536  {
537  guiManager()->setFilterButtonText("Hide paths / CMSSW configuration editor");
538  m_pathsGUI->MapWindow();
539  }
540 }
FWGUIManager * guiManager()
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:101
void setFilterButtonText(const char *txt)
void FWFFLooper::startingNewLoop ( unsigned  int)
overridevirtual

Called before system starts to loop over the events. The argument is a count of how many loops have been processed. For the first time through the events the argument will be 0.

Implements edm::EDLooperBase.

Definition at line 220 of file FWFFLooper.cc.

References f, info(), and FWFFHelper::m_Rint.

221 {
222  // Initialise on first loop.
223  if (count == 0)
224  {
226  m_pathsGUI->setup(info);
227 
228  // We need to enter the GUI loop in order to
229  // have all the callbacks executed. The last callback will
230  // be responsible for returning the control to CMSSW.
231  assert(m_Rint);
233  f=boost::bind(&TApplication::Terminate, m_Rint, 0);
234  startupTasks()->addTask(f);
235  // FIXME: do we really need to delay tasks like this?
237  m_Rint->Run(kTRUE);
238  // Show the GUI ...
239  gSystem->ProcessEvents();
240  }
241 }
static const TGPicture * info(bool iBackgroundIsBlack)
void startDoingTasks() override
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:101
CmsShowTaskExecutor * startupTasks()
TRint * m_Rint
Definition: FWFFLooper.h:94
double f[11][100]
ScheduleInfo const * scheduleInfo() const
This returns a non-zero value after the constructor has been called.
boost::function0< void > TaskFunctor
void addTask(const TaskFunctor &iTask)
void setup(const edm::ScheduleInfo *info)
void FWFFLooper::stopPlaying ( )
overridevirtual

Reimplemented from CmsShowMainBase.

Definition at line 297 of file FWFFLooper.cc.

References CmsShowMainBase::stopPlaying().

298 {
300  m_autoReload = false;
304  checkPosition();
305 }
FWGUIManager * guiManager()
void enableActions(bool enable=true)
virtual void stopPlaying()
bool m_autoReload
Definition: FWFFLooper.h:106
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:201
void checkPosition() override
Definition: FWFFLooper.cc:251
void enableComplexNavigation(bool enable=true)

Member Data Documentation

bool FWFFLooper::m_AllowStep
private

Definition at line 98 of file FWFFLooper.h.

edm::Service<FWFFHelper> FWFFLooper::m_appHelper
private

Definition at line 88 of file FWFFLooper.h.

bool FWFFLooper::m_autoReload
private

Definition at line 106 of file FWFFLooper.h.

std::unique_ptr<fireworks::Context> FWFFLooper::m_context
private

Definition at line 91 of file FWFFLooper.h.

TEveManager* FWFFLooper::m_EveManager
private

Definition at line 93 of file FWFFLooper.h.

bool FWFFLooper::m_firstTime
private

Definition at line 100 of file FWFFLooper.h.

edm::ESWatcher<DisplayGeomRecord> FWFFLooper::m_geomWatcher
private

Definition at line 110 of file FWFFLooper.h.

bool FWFFLooper::m_isFirstEvent
private

Definition at line 107 of file FWFFLooper.h.

bool FWFFLooper::m_isLastEvent
private

Definition at line 108 of file FWFFLooper.h.

TEveMagField* FWFFLooper::m_MagField
private

Definition at line 96 of file FWFFLooper.h.

std::unique_ptr<FWFFMetadataManager> FWFFLooper::m_metadataManager
private

Definition at line 90 of file FWFFLooper.h.

std::unique_ptr<FWFFNavigator> FWFFLooper::m_navigator
private

Definition at line 89 of file FWFFLooper.h.

edm::EventID FWFFLooper::m_nextEventId
private

Definition at line 105 of file FWFFLooper.h.

FWPathsPopup* FWFFLooper::m_pathsGUI
private

Definition at line 101 of file FWFFLooper.h.

TRint* FWFFLooper::m_Rint
private

Definition at line 94 of file FWFFLooper.h.

ModuleChanges FWFFLooper::m_scheduledChanges
private

Definition at line 104 of file FWFFLooper.h.

bool FWFFLooper::m_ShowEvent
private

Definition at line 99 of file FWFFLooper.h.