CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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

virtual void attachTo (edm::ActivityRegistry &)
 Override this method if you need to monitor the state of the processing. More...
 
virtual void autoLoadNewEvent ()
 
virtual void beginRun (const edm::Run &, const edm::EventSetup &)
 Called after all event modules have processed the begin of a Run. More...
 
virtual void checkPosition ()
 
void display (const std::string &info="")
 
virtual edm::EDLooperBase::Status duringLoop (const edm::Event &, const edm::EventSetup &, edm::ProcessingController &)
 
virtual edm::EDLooperBase::Status endOfLoop (const edm::EventSetup &, unsigned int)
 
 FWFFLooper (const edm::ParameterSet &)
 
TEveMagField * getMagField ()
 
void postBeginJob ()
 
void postEndJob ()
 
void quit ()
 
void requestChanges (const std::string &, const edm::ParameterSet &)
 
void setupFieldForPropagator (TEveTrackPropagator *prop)
 
void showPathsGUI (const TGWindow *p)
 
virtual void startingNewLoop (unsigned int)
 
virtual void stopPlaying ()
 
virtual ~FWFFLooper ()
 
- Public Member Functions inherited from CmsShowMainBase
FWModelChangeManagerchangeManager ()
 
 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 playBackward ()
 
void playForward ()
 
void registerPhysicsObject (const FWPhysicsObjectDesc &iItem)
 
void reloadConfiguration (const std::string &config)
 
FWSelectionManagerselectionManager ()
 
void setAutoSaveAllViewsFormat (const std::string &fmt)
 
void setConfigFilename (const std::string &f)
 
void setGeometryFilename (const std::string &filename)
 
void setIsPlaying (bool value)
 
void setPlayDelay (Float_t val)
 
void setPlayLoop ()
 
void setSimGeometryFilename (const std::string &filename)
 
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 writeToConfigFile (const std::string &config)
 
void writeToCurrentConfigFile ()
 
virtual ~CmsShowMainBase ()
 
- Public Member Functions inherited from edm::EDLooperBase
virtual void beginOfJob (EventSetup const &)
 
virtual void beginOfJob ()
 
void copyInfo (ScheduleInfo const &)
 
void doBeginLuminosityBlock (LuminosityBlockPrincipal &, EventSetup const &)
 
void doBeginRun (RunPrincipal &, EventSetup const &)
 
Status doDuringLoop (EventPrincipal &eventPrincipal, EventSetup const &es, ProcessingController &)
 
void doEndLuminosityBlock (LuminosityBlockPrincipal &, EventSetup const &)
 
Status doEndOfLoop (EventSetup const &es)
 
void doEndRun (RunPrincipal &, EventSetup const &)
 
void doStartingNewLoop ()
 
 EDLooperBase ()
 
virtual void endOfJob ()
 
virtual std::set
< eventsetup::EventSetupRecordKey
modifyingRecords () const
 
void prepareForNextLoop (eventsetup::EventSetupProvider *esp)
 
void setActionTable (ActionTable const *actionTable)
 
void setModuleChanger (ModuleChanger const *)
 
virtual ~EDLooperBase ()
 

Private Types

typedef std::map< std::string,
edm::ParameterSet
ModuleChanges
 

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::auto_ptr< fireworks::Contextm_context
 
TEveManager * m_EveManager
 
bool m_firstTime
 
bool m_isFirstEvent
 
bool m_isLastEvent
 
TEveMagField * m_MagField
 
std::auto_ptr
< FWFFMetadataManager
m_metadataManager
 
std::auto_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
virtual void eventChangedImp ()
 
void eventChangedSlot ()
 
- Protected Member Functions inherited from edm::EDLooperBase
ModuleChanger const * moduleChanger () const
 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 41 of file FWFFLooper.h.

Member Typedef Documentation

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

Definition at line 97 of file FWFFLooper.h.

Constructor & Destructor Documentation

FWFFLooper::FWFFLooper ( const edm::ParameterSet ps)

Definition at line 116 of file FWFFLooper.cc.

References CmsShowMainBase::eiManager(), CmsShowMainBase::geometryFilename(), edm::ParameterSet::getUntrackedParameter(), loadDefaultGeometryFile(), m_context, m_MagField, m_metadataManager, m_navigator, CmsShowMainBase::setConfigFilename(), FWEventItemsManager::setContext(), CmsShowMainBase::setGeometryFilename(), and CmsShowMainBase::setup().

117  : CmsShowMainBase(),
118  m_navigator(new FWFFNavigator(*this)),
122  eiManager(),
123  colorManager(),
124  m_metadataManager.get())),
125  m_Rint(m_appHelper->app()),
126  m_AllowStep(true),
127  m_ShowEvent(true),
128  m_firstTime(true),
129  m_pathsGUI(0)
130 {
131  setup(m_navigator.get(), m_context.get(), m_metadataManager.get());
132 
133  eiManager()->setContext(m_context.get());
134 
135  // By default, we look up geometry and configuration in the workarea, then
136  // in the release area then in the local directory. It is also possible to
137  // override those locations by using the displayConfigurationFilename and
138  // geometryFilename in the parameterset.
139  const char *releaseBase = getenv("CMSSW_RELEASE_BASE");
140  const char *workarea = getenv("CMSSW_BASE");
141  std::string displayConfigRelFilename = "/src/Fireworks/FWInterface/macros/ffw.fwc";
142  std::string geometryRelFilename = "/src/Fireworks/FWInterface/data/cmsGeom10.root";
143 
144  std::string displayConfigFilename = "ffw.fwc";
145  std::string geometryFilename;
146 
147  if (releaseBase && access((releaseBase + displayConfigFilename).c_str(), R_OK) == 0)
148  displayConfigFilename = releaseBase + displayConfigRelFilename;
149  if (workarea && access((workarea + displayConfigRelFilename).c_str(), R_OK) == 0)
150  displayConfigFilename = workarea + displayConfigRelFilename;
151 
152  if (releaseBase && access((releaseBase + geometryRelFilename).c_str(), R_OK) == 0)
153  geometryFilename = releaseBase + geometryRelFilename;
154  if (workarea && access((workarea + geometryRelFilename).c_str(), R_OK) == 0)
155  geometryFilename = workarea + geometryRelFilename;
156 
157  displayConfigFilename = ps.getUntrackedParameter<std::string>("displayConfigFilename", displayConfigFilename);
158  geometryFilename = ps.getUntrackedParameter<std::string>("geometryFilename", geometryFilename);
159 
160  setGeometryFilename(geometryFilename);
161  setConfigFilename(displayConfigFilename);
162 
163  if( !geometryFilename.empty())
164  {
166  }
167 
168  m_MagField = new CmsEveMagField();
169 }
T getUntrackedParameter(std::string const &, T const &) const
FWSelectionManager * selectionManager()
bool m_ShowEvent
Definition: FWFFLooper.h:93
FWColorManager * colorManager()
FWEventItemsManager * eiManager()
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:95
TEveMagField * m_MagField
Definition: FWFFLooper.h:90
void setup(FWNavigatorBase *navigator, fireworks::Context *context, FWJobMetadataManager *metadataManager)
void setContext(fireworks::Context *)
void loadDefaultGeometryFile(void)
Definition: FWFFLooper.cc:172
FWModelChangeManager * changeManager()
void setGeometryFilename(const std::string &filename)
std::auto_ptr< FWFFNavigator > m_navigator
Definition: FWFFLooper.h:83
std::auto_ptr< FWFFMetadataManager > m_metadataManager
Definition: FWFFLooper.h:84
TRint * m_Rint
Definition: FWFFLooper.h:88
bool m_firstTime
Definition: FWFFLooper.h:94
TRint * app()
Definition: FWFFHelper.h:16
edm::Service< FWFFHelper > m_appHelper
Definition: FWFFLooper.h:82
bool m_AllowStep
Definition: FWFFLooper.h:92
const std::string & geometryFilename(void)
void setConfigFilename(const std::string &f)
std::auto_ptr< fireworks::Context > m_context
Definition: FWFFLooper.h:85
FWFFLooper::~FWFFLooper ( )
virtual

Definition at line 190 of file FWFFLooper.cc.

References m_MagField.

191 {
192  delete m_MagField;
193 }
TEveMagField * m_MagField
Definition: FWFFLooper.h:90
FWFFLooper::FWFFLooper ( const FWFFLooper )
private

Member Function Documentation

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

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

Reimplemented from edm::EDLooperBase.

Definition at line 180 of file FWFFLooper.cc.

References CmsShowMainBase::guiManager(), m_pathsGUI, postEndJob(), FWPathsPopup::postModule(), FWPathsPopup::postProcessEvent(), FWPathsPopup::preModule(), edm::ActivityRegistry::watchPostEndJob(), edm::ActivityRegistry::watchPostModule(), edm::ActivityRegistry::watchPostProcessEvent(), and edm::ActivityRegistry::watchPreModule().

181 {
182  m_pathsGUI = new FWPathsPopup(this, guiManager());
183 
184  ar.watchPostProcessEvent(m_pathsGUI, &FWPathsPopup::postProcessEvent);
185  ar.watchPostModule(m_pathsGUI, &FWPathsPopup::postModule);
186  ar.watchPreModule(m_pathsGUI, &FWPathsPopup::preModule);
187  ar.watchPostEndJob(this, &FWFFLooper::postEndJob);
188 }
FWGUIManager * guiManager()
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:95
void postEndJob()
Definition: FWFFLooper.cc:225
void preModule(edm::ModuleDescription const &)
void postModule(edm::ModuleDescription const &)
void postProcessEvent(edm::Event const &, edm::EventSetup const &)
void FWFFLooper::autoLoadNewEvent ( )
virtual

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 257 of file FWFFLooper.cc.

References FWGUIManager::enableActions(), CmsShowMainFrame::enableComplexNavigation(), CmsShowMainBase::forward(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), CmsShowMainBase::loop(), m_autoReload, m_isFirstEvent, m_isLastEvent, m_navigator, CmsShowMainBase::setIsPlaying(), and CmsShowMainBase::stopAutoLoadTimer().

258 {
260  bool reachedEnd = (forward() && m_isLastEvent) || (!forward() && m_isFirstEvent);
261 
262  if (!reachedEnd || loop())
263  {
264  // Will exit the loop here!
265  m_autoReload = true;
266  forward() ? m_navigator->nextEvent() : m_navigator->previousEvent();
267  }
268  else
269  {
270  m_autoReload = false;
271  setIsPlaying(false);
274  }
275 }
bool m_isLastEvent
Definition: FWFFLooper.h:102
FWGUIManager * guiManager()
void enableActions(bool enable=true)
bool loop() const
bool m_autoReload
Definition: FWFFLooper.h:100
std::auto_ptr< FWFFNavigator > m_navigator
Definition: FWFFLooper.h:83
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:201
bool m_isFirstEvent
Definition: FWFFLooper.h:101
void setIsPlaying(bool value)
bool forward() const
void enableComplexNavigation(bool enable=true)
void FWFFLooper::beginRun ( const edm::Run ,
const edm::EventSetup  
)
virtual

Called after all event modules have processed the begin of a Run.

Reimplemented from edm::EDLooperBase.

Definition at line 292 of file FWFFLooper.cc.

References cond::rpcobimon::current, cmsCodeRules.cppFunctionSkipper::exception, FWGUIManager::filterButtonClicked_, edm::EventSetup::find(), edm::EventSetup::get(), edm::Run::getByType(), CmsShowMainBase::getGeom(), CmsShowMainBase::guiManager(), FWGeometry::initMap(), edm::HandleBase::isValid(), loadDefaultGeometryFile(), m_autoReload, m_context, m_firstTime, m_MagField, edm::ESHandle< class >::product(), FWGUIManager::setFilterButtonText(), CmsShowMainBase::setupActions(), CmsShowMainBase::setupConfiguration(), CmsShowMainBase::setupViewManagers(), FWGUIManager::showEventFilterGUI(), FWGUIManager::showEventFilterGUI_, showPathsGUI(), and FWGUIManager::updateStatus().

293 {
294  // If the geometry was not picked up from a file, we try to get it from the
295  // EventSetup!
296  // FIXME: we need to check we execute only once because the view managers
297  // depend on geometry and they cannot be initialised more than once.
298  // This should actually be cleaned up so that the various view manager
299  // don't care about geometry.
300  // FIXME: we should actually be able to update the geometry when requested.
301  // this is not possible at the moment.
302  if (m_firstTime == true)
303  {
304  if (m_context->getGeom() == 0)
305  {
306  try
307  {
308  guiManager()->updateStatus("Loading geometry...");
310  iSetup.get<FWRecoGeometryRecord>().get(geoh);
311  getGeom().initMap(geoh.product()->idToName);
312  m_context->setGeom(&(getGeom()));
313  }
314  catch( const cms::Exception& exception )
315  {
317  }
318  }
319 
322  setupActions();
323 
324  guiManager()->showEventFilterGUI_.connect(boost::bind(&FWFFLooper::showPathsGUI, this, _1));
325  guiManager()->setFilterButtonText("Show paths / CMSSW configuration editor");
327 
328  m_firstTime = false;
329  m_autoReload = false;
330  }
331 
332  float current = 18160.0f;
333 
335  bool res = iRun.getByType(runCond);
336  //bool res = run.getByLabel("conditionsInEdm", runCond, "", "");
337  if (res && runCond.isValid())
338  {
339  printf("Got current from conds in edm %f\n", runCond->BAvgCurrent);
340  current = runCond->BAvgCurrent;
341  }
342  else
343  {
344  printf("Could not extract run-conditions get-result=%d, is-valid=%d\n", res, runCond.isValid());
345 
346  const edm::eventsetup::EventSetupRecord* rec = iSetup.find( edm::eventsetup::EventSetupRecordKey::makeKey<RunInfoRcd>());
347  if( 0 != rec )
348  {
350  iSetup.get<RunInfoRcd>().get(sum);
351 
352  current = sum->m_avg_current;
353  printf("Got current from RunInfoRcd %f\n", sum->m_avg_current);
354  }
355  }
356 
357  static_cast<CmsEveMagField*>(m_MagField)->SetFieldByCurrent(current);
358 }
sigc::signal< void > filterButtonClicked_
Definition: FWGUIManager.h:207
FWGUIManager * guiManager()
void initMap(const FWRecoGeom::InfoMap &map)
Definition: FWGeometry.cc:141
TEveMagField * m_MagField
Definition: FWFFLooper.h:90
void updateStatus(const char *status)
void loadDefaultGeometryFile(void)
Definition: FWFFLooper.cc:172
DataProxy const * find(DataKey const &aKey) const
bool m_autoReload
Definition: FWFFLooper.h:100
sigc::signal< void, const TGWindow * > showEventFilterGUI_
Definition: FWGUIManager.h:208
bool m_firstTime
Definition: FWFFLooper.h:94
bool isValid() const
Definition: HandleBase.h:76
T const * product() const
Definition: ESHandle.h:62
void setFilterButtonText(const char *txt)
FWGeometry & getGeom()
void showEventFilterGUI()
void showPathsGUI(const TGWindow *p)
Definition: FWFFLooper.cc:481
std::auto_ptr< fireworks::Context > m_context
Definition: FWFFLooper.h:85
void FWFFLooper::checkPosition ( )
virtual

Implements CmsShowMainBase.

Definition at line 232 of file FWFFLooper.cc.

References FWGUIManager::disableNext(), FWGUIManager::disablePrevious(), CSGAction::enable(), CmsShowMainFrame::enableComplexNavigation(), CmsShowMainFrame::enableNavigatorControls(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), CmsShowMainBase::isPlaying(), CmsShowMainBase::loop(), m_isFirstEvent, m_isLastEvent, and FWGUIManager::playEventsAction().

Referenced by duringLoop(), and stopPlaying().

233 {
234  if (loop() && isPlaying())
235  return;
236 
239 
240  if (m_isFirstEvent)
242 
243  if (m_isLastEvent)
244  {
245  guiManager()->disableNext();
246  // force enable play events action in --port mode
247  if (!guiManager()->playEventsAction()->isEnabled())
249  }
250 }
bool m_isLastEvent
Definition: FWFFLooper.h:102
FWGUIManager * guiManager()
void enable()
Definition: CSGAction.cc:274
bool loop() const
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:201
void disablePrevious()
bool m_isFirstEvent
Definition: FWFFLooper.h:101
CSGContinuousAction * playEventsAction()
bool isPlaying() const
void enableComplexNavigation(bool enable=true)
void disableNext()
void FWFFLooper::display ( const std::string &  info = "")

Definition at line 421 of file FWFFLooper.cc.

References m_AllowStep, and m_Rint.

422 {
423  // Display whatever was registered so far, wait until user presses
424  // the "Step" button.
425 
426  if (m_AllowStep)
427  {
428  gEve->Redraw3D();
429  m_Rint->Run(kTRUE);
430  }
431 }
TRint * m_Rint
Definition: FWFFLooper.h:88
bool m_AllowStep
Definition: FWFFLooper.h:92
edm::EDLooperBase::Status FWFFLooper::duringLoop ( const edm::Event ,
const edm::EventSetup ,
edm::ProcessingController  
)
virtual

Called after all event modules have had a chance to process the Event.

Implements edm::EDLooperBase.

Definition at line 362 of file FWFFLooper.cc.

References checkPosition(), CmsShowMainBase::draw(), edm::ProcessingController::forwardState(), FWPathsPopup::hasChanges(), edm::ProcessingController::kAtFirstEvent, edm::ProcessingController::kAtLastEvent, edm::EDLooperBase::kContinue, FWFFNavigator::kFirstEvent, FWFFNavigator::kLastEvent, FWFFNavigator::kNextEvent, FWFFNavigator::kPreviousEvent, edm::EDLooperBase::kStop, m_autoReload, m_isFirstEvent, m_isLastEvent, m_metadataManager, m_navigator, m_nextEventId, m_pathsGUI, m_Rint, edm::ProcessingController::reverseState(), edm::ProcessingController::setTransitionToEvent(), edm::ProcessingController::setTransitionToNextEvent(), edm::ProcessingController::setTransitionToPreviousEvent(), and CmsShowMainBase::startAutoLoadTimer().

365 {
366  m_isLastEvent = controller.forwardState() == edm::ProcessingController::kAtLastEvent;
367  m_isFirstEvent = controller.reverseState() == edm::ProcessingController::kAtFirstEvent;
368  // If the next event id is valid, set the transition so
369  // that we go to it go to to it.
370  if (m_nextEventId != edm::EventID())
371  {
372  controller.setTransitionToEvent(m_nextEventId);
374  return kContinue;
375  }
376  // We handle "last event" by going to the first event and then moving to the
377  // previous event.
378  if (m_navigator->currentTransition() == FWFFNavigator::kLastEvent)
379  {
380  m_navigator->resetTransition();
381  controller.setTransitionToPreviousEvent();
382  return kContinue;
383  }
384 
385  m_pathsGUI->hasChanges() = false;
387  m_navigator->setCurrentEvent(&event);
388  if (m_autoReload == true)
390 
391  checkPosition();
392  draw();
393 
394  m_Rint->Run(kTRUE);
395  // If the GUI changed the PSet, save the current event to reload
396  // it on next iteration.
397  if (m_pathsGUI->hasChanges())
398  {
400  return kStop;
401  }
402  else if (m_navigator->currentTransition() == FWFFNavigator::kFirstEvent)
403  {
404  m_nextEventId = m_navigator->getFirstEventID();
405  return kStop;
406  }
407  else if (m_navigator->currentTransition() == FWFFNavigator::kLastEvent)
408  {
409  m_nextEventId = m_navigator->getFirstEventID();
410  return kStop;
411  }
412  else if (m_navigator->currentTransition() == FWFFNavigator::kNextEvent)
413  controller.setTransitionToNextEvent();
414  else if (m_navigator->currentTransition() == FWFFNavigator::kPreviousEvent)
415  controller.setTransitionToPreviousEvent();
416  return kContinue;
417 }
bool m_isLastEvent
Definition: FWFFLooper.h:102
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:95
bool m_autoReload
Definition: FWFFLooper.h:100
std::auto_ptr< FWFFNavigator > m_navigator
Definition: FWFFLooper.h:83
std::auto_ptr< FWFFMetadataManager > m_metadataManager
Definition: FWFFLooper.h:84
bool & hasChanges()
Definition: FWPathsPopup.h:35
TRint * m_Rint
Definition: FWFFLooper.h:88
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
bool m_isFirstEvent
Definition: FWFFLooper.h:101
virtual void checkPosition()
Definition: FWFFLooper.cc:232
edm::EventID m_nextEventId
Definition: FWFFLooper.h:99
edm::EDLooperBase::Status FWFFLooper::endOfLoop ( const edm::EventSetup ,
unsigned int   
)
virtual

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

Implements edm::EDLooperBase.

Definition at line 467 of file FWFFLooper.cc.

References edm::ModuleChanger::changeModule(), i, edm::EDLooperBase::kContinue, m_scheduledChanges, and edm::EDLooperBase::moduleChanger().

468 {
469  // Looks like the module changer is availble only here.
470  for (ModuleChanges::iterator i = m_scheduledChanges.begin(),
471  e = m_scheduledChanges.end();
472  i != e; ++i)
473  {
474  moduleChanger()->changeModule(i->first, i->second);
475  }
476  m_scheduledChanges.clear();
477  return kContinue;
478 }
int i
Definition: DBlmapReader.cc:9
ModuleChanges m_scheduledChanges
Definition: FWFFLooper.h:98
bool changeModule(const std::string &iLabel, const ParameterSet &iPSet) const
ModuleChanger const * moduleChanger() const
This only returns a non-zero value during the call to endOfLoop.
TEveMagField * FWFFLooper::getMagField ( )

Definition at line 438 of file FWFFLooper.cc.

References m_MagField.

439 {
440  return m_MagField;
441 }
TEveMagField * m_MagField
Definition: FWFFLooper.h:90
void FWFFLooper::loadDefaultGeometryFile ( void  )
private

Definition at line 172 of file FWFFLooper.cc.

References CmsShowTaskExecutor::addTask(), f, CmsShowMainBase::loadGeometry(), and CmsShowMainBase::startupTasks().

Referenced by beginRun(), and FWFFLooper().

173 {
175  f=boost::bind( &CmsShowMainBase::loadGeometry, this );
176  startupTasks()->addTask( f );
177 }
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 225 of file FWFFLooper.cc.

Referenced by attachTo().

226 {
227 // printf("FWFFLooper::postEndJob\n");
228 // TEveManager::Terminate();
229 }
void FWFFLooper::quit ( )
virtual

Implements CmsShowMainBase.

Definition at line 450 of file FWFFLooper.cc.

451 {
452  gSystem->ExitLoop();
453 
454  // Throwing exception here is bad because:
455  // a) it does not work when in a "debug step";
456  // b) does not restore terminal state.
457  // So we do exit instead for now.
458  // throw cms::Exception("UserTerminationRequest");
459  gSystem->Exit(0);
460 }
void FWFFLooper::requestChanges ( const std::string &  moduleLabel,
const edm::ParameterSet ps 
)

Definition at line 498 of file FWFFLooper.cc.

References m_scheduledChanges, and moduleLabel().

Referenced by FWPathsPopup::scheduleReloadEvent().

499 {
501 }
ModuleChanges m_scheduledChanges
Definition: FWFFLooper.h:98
const std::string * moduleLabel() const
Definition: HLTadd.h:40
void FWFFLooper::setupFieldForPropagator ( TEveTrackPropagator *  prop)

Definition at line 444 of file FWFFLooper.cc.

References m_MagField.

445 {
446  prop->SetMagFieldObj(m_MagField, kFALSE);
447 }
TEveMagField * m_MagField
Definition: FWFFLooper.h:90
void FWFFLooper::showPathsGUI ( const TGWindow *  p)

Definition at line 481 of file FWFFLooper.cc.

References CmsShowMainBase::guiManager(), m_pathsGUI, and FWGUIManager::setFilterButtonText().

Referenced by beginRun().

482 {
483  if (!m_pathsGUI)
484  return;
485  if (m_pathsGUI->IsMapped())
486  {
487  guiManager()->setFilterButtonText("Show paths / CMSSW configuration editor");
488  m_pathsGUI->UnmapWindow();
489  }
490  else
491  {
492  guiManager()->setFilterButtonText("Hide paths / CMSSW configuration editor");
493  m_pathsGUI->MapWindow();
494  }
495 }
FWGUIManager * guiManager()
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:95
void setFilterButtonText(const char *txt)
void FWFFLooper::startingNewLoop ( unsigned  int)
virtual

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 201 of file FWFFLooper.cc.

References CmsShowTaskExecutor::addTask(), f, info, m_pathsGUI, m_Rint, edm::EDLooperBase::scheduleInfo(), FWPathsPopup::setup(), CmsShowTaskExecutor::startDoingTasks(), and CmsShowMainBase::startupTasks().

202 {
203  // Initialise on first loop.
204  if (count == 0)
205  {
207  m_pathsGUI->setup(info);
208 
209  // We need to enter the GUI loop in order to
210  // have all the callbacks executed. The last callback will
211  // be responsible for returning the control to CMSSW.
212  assert(m_Rint);
214  f=boost::bind(&TApplication::Terminate, m_Rint, 0);
215  startupTasks()->addTask(f);
216  // FIXME: do we really need to delay tasks like this?
218  m_Rint->Run(kTRUE);
219  // Show the GUI ...
220  gSystem->ProcessEvents();
221  }
222 }
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:95
CmsShowTaskExecutor * startupTasks()
TRint * m_Rint
Definition: FWFFLooper.h:88
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 ( )
virtual

Implements CmsShowMainBase.

Definition at line 278 of file FWFFLooper.cc.

References checkPosition(), FWGUIManager::enableActions(), CmsShowMainFrame::enableComplexNavigation(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), m_autoReload, CmsShowMainBase::setIsPlaying(), and CmsShowMainBase::stopAutoLoadTimer().

279 {
281  m_autoReload = false;
282  setIsPlaying(false);
285  checkPosition();
286 }
FWGUIManager * guiManager()
void enableActions(bool enable=true)
bool m_autoReload
Definition: FWFFLooper.h:100
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:201
void setIsPlaying(bool value)
virtual void checkPosition()
Definition: FWFFLooper.cc:232
void enableComplexNavigation(bool enable=true)

Member Data Documentation

bool FWFFLooper::m_AllowStep
private

Definition at line 92 of file FWFFLooper.h.

Referenced by display().

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

Definition at line 82 of file FWFFLooper.h.

bool FWFFLooper::m_autoReload
private

Definition at line 100 of file FWFFLooper.h.

Referenced by autoLoadNewEvent(), beginRun(), duringLoop(), and stopPlaying().

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

Definition at line 85 of file FWFFLooper.h.

Referenced by beginRun(), and FWFFLooper().

TEveManager* FWFFLooper::m_EveManager
private

Definition at line 87 of file FWFFLooper.h.

bool FWFFLooper::m_firstTime
private

Definition at line 94 of file FWFFLooper.h.

Referenced by beginRun().

bool FWFFLooper::m_isFirstEvent
private

Definition at line 101 of file FWFFLooper.h.

Referenced by autoLoadNewEvent(), checkPosition(), and duringLoop().

bool FWFFLooper::m_isLastEvent
private

Definition at line 102 of file FWFFLooper.h.

Referenced by autoLoadNewEvent(), checkPosition(), and duringLoop().

TEveMagField* FWFFLooper::m_MagField
private

Definition at line 90 of file FWFFLooper.h.

Referenced by beginRun(), FWFFLooper(), getMagField(), setupFieldForPropagator(), and ~FWFFLooper().

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

Definition at line 84 of file FWFFLooper.h.

Referenced by duringLoop(), and FWFFLooper().

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

Definition at line 83 of file FWFFLooper.h.

Referenced by autoLoadNewEvent(), duringLoop(), and FWFFLooper().

edm::EventID FWFFLooper::m_nextEventId
private

Definition at line 99 of file FWFFLooper.h.

Referenced by duringLoop().

FWPathsPopup* FWFFLooper::m_pathsGUI
private

Definition at line 95 of file FWFFLooper.h.

Referenced by attachTo(), duringLoop(), showPathsGUI(), and startingNewLoop().

TRint* FWFFLooper::m_Rint
private

Definition at line 88 of file FWFFLooper.h.

Referenced by display(), duringLoop(), and startingNewLoop().

ModuleChanges FWFFLooper::m_scheduledChanges
private

Definition at line 98 of file FWFFLooper.h.

Referenced by endOfLoop(), and requestChanges().

bool FWFFLooper::m_ShowEvent
private

Definition at line 93 of file FWFFLooper.h.