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 &) override
 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 &) override
 
virtual edm::EDLooperBase::Status endOfLoop (const edm::EventSetup &, unsigned int) override
 
 FWFFLooper (const edm::ParameterSet &)
 
TEveMagField * getMagField ()
 
void postBeginJob ()
 
void postEndJob ()
 
void quit ()
 
void remakeGeometry (const DisplayGeomRecord &dgRec)
 
void requestChanges (const std::string &, const edm::ParameterSet &)
 
void setupFieldForPropagator (TEveTrackPropagator *prop)
 
void showPathsGUI (const TGWindow *p)
 
virtual void startingNewLoop (unsigned int) override
 
virtual void stopPlaying ()
 
virtual ~FWFFLooper ()
 
- 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)
 
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 ()
 
- 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::EventSetupRecordKey
modifyingRecords () const
 
EDLooperBaseoperator= (EDLooperBase const &)=delete
 
void prepareForNextLoop (eventsetup::EventSetupProvider *esp)
 
void setActionTable (ExceptionToActionTable const *actionTable)
 
void setModuleChanger (ModuleChanger *)
 
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
 
edm::ESWatcher< DisplayGeomRecordm_geomWatcher
 
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
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 ps)

Definition at line 132 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(), CmsShowMainBase::setup(), and AlCaHLTBitMon_QueryRunRegistry::string.

133  : CmsShowMainBase(),
134  m_navigator(new FWFFNavigator(*this)),
138  eiManager(),
139  colorManager(),
140  m_metadataManager.get())),
141  m_Rint(m_appHelper->app()),
142  m_AllowStep(true),
143  m_ShowEvent(true),
144  m_firstTime(true),
145  m_pathsGUI(0),
147 {
148  setup(m_navigator.get(), m_context.get(), m_metadataManager.get());
149 
150  eiManager()->setContext(m_context.get());
151 
152  // By default, we look up geometry and configuration in the workarea, then
153  // in the release area then in the local directory. It is also possible to
154  // override those locations by using the displayConfigurationFilename and
155  // geometryFilename in the parameterset.
156  const char *releaseBase = getenv("CMSSW_RELEASE_BASE");
157  const char *workarea = getenv("CMSSW_BASE");
158  std::string displayConfigRelFilename = "/src/Fireworks/FWInterface/macros/ffw.fwc";
159  std::string geometryRelFilename = "/src/Fireworks/FWInterface/data/cmsGeom10.root";
160 
161  std::string displayConfigFilename = "ffw.fwc";
163 
164  if (releaseBase && access((releaseBase + displayConfigFilename).c_str(), R_OK) == 0)
165  displayConfigFilename = releaseBase + displayConfigRelFilename;
166  if (workarea && access((workarea + displayConfigRelFilename).c_str(), R_OK) == 0)
167  displayConfigFilename = workarea + displayConfigRelFilename;
168 
169  if (releaseBase && access((releaseBase + geometryRelFilename).c_str(), R_OK) == 0)
170  geometryFilename = releaseBase + geometryRelFilename;
171  if (workarea && access((workarea + geometryRelFilename).c_str(), R_OK) == 0)
172  geometryFilename = workarea + geometryRelFilename;
173 
174  displayConfigFilename = ps.getUntrackedParameter<std::string>("displayConfigFilename", displayConfigFilename);
175  geometryFilename = ps.getUntrackedParameter<std::string>("geometryFilename", geometryFilename);
176  if( !geometryFilename.empty())
177  {
179  }
180  setGeometryFilename(geometryFilename);
181  setConfigFilename(displayConfigFilename);
182 
183  if( !geometryFilename.empty())
184  {
186  }
187 
188  m_MagField = new CmsEveMagField();
189 }
edm::ESWatcher< DisplayGeomRecord > m_geomWatcher
Definition: FWFFLooper.h:110
T getUntrackedParameter(std::string const &, T const &) const
FWSelectionManager * selectionManager()
bool m_ShowEvent
Definition: FWFFLooper.h:99
FWColorManager * colorManager()
FWEventItemsManager * eiManager()
FWPathsPopup * m_pathsGUI
Definition: FWFFLooper.h:101
TEveMagField * m_MagField
Definition: FWFFLooper.h:96
void setup(FWNavigatorBase *navigator, fireworks::Context *context, FWJobMetadataManager *metadataManager)
void remakeGeometry(const DisplayGeomRecord &dgRec)
Definition: FWFFLooper.cc:551
void setContext(fireworks::Context *)
void loadDefaultGeometryFile(void)
Definition: FWFFLooper.cc:192
FWModelChangeManager * changeManager()
void setGeometryFilename(const std::string &filename)
std::auto_ptr< FWFFNavigator > m_navigator
Definition: FWFFLooper.h:89
std::auto_ptr< FWFFMetadataManager > m_metadataManager
Definition: FWFFLooper.h:90
TRint * m_Rint
Definition: FWFFLooper.h:94
bool m_firstTime
Definition: FWFFLooper.h:100
TRint * app()
Definition: FWFFHelper.h:16
edm::Service< FWFFHelper > m_appHelper
Definition: FWFFLooper.h:88
bool m_AllowStep
Definition: FWFFLooper.h:98
const std::string & geometryFilename(void)
void setConfigFilename(const std::string &f)
std::auto_ptr< fireworks::Context > m_context
Definition: FWFFLooper.h:91
FWFFLooper::~FWFFLooper ( )
virtual

Definition at line 209 of file FWFFLooper.cc.

References m_MagField.

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 )
virtual

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 CmsShowMainBase::guiManager(), m_pathsGUI, 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 ( )
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 276 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::stopAutoLoadTimer(), 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
std::auto_ptr< FWFFNavigator > m_navigator
Definition: FWFFLooper.h:89
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:201
bool m_isFirstEvent
Definition: FWFFLooper.h:107
bool forward() const
void enableComplexNavigation(bool enable=true)
void FWFFLooper::beginRun ( const edm::Run ,
const edm::EventSetup  
)
overridevirtual

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

Reimplemented from edm::EDLooperBase.

Definition at line 311 of file FWFFLooper.cc.

References edm::ESWatcher< T >::check(), CmsShowMainBase::context(), cppFunctionSkipper::exception, FWGUIManager::filterButtonClicked_, edm::EventSetup::find(), fwLog, edm::EventSetup::get(), edm::Run::getByLabel(), fireworks::Context::getField(), CmsShowMainBase::getGeom(), CmsShowMainBase::guiManager(), FWGeometry::initMap(), edm::HandleBase::isValid(), fwlog::kInfo, CmsShowMainBase::loadGeometry(), m_autoReload, m_context, m_firstTime, m_geomWatcher, m_MagField, edm::ESHandle< class >::product(), FWMagField::setFFFieldMag(), FWGUIManager::setFilterButtonText(), CmsShowMainBase::setGeometryFilename(), CmsShowMainBase::setupActions(), CmsShowMainBase::setupConfiguration(), CmsShowMainBase::setupViewManagers(), FWGUIManager::showEventFilterGUI(), FWGUIManager::showEventFilterGUI_, showPathsGUI(), and FWGUIManager::updateStatus().

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() == 0)
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  const edm::eventsetup::EventSetupRecord* rec = iSetup.find( edm::eventsetup::EventSetupRecordKey::makeKey<RunInfoRcd>());
373  if( 0 != 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
sigc::signal< void > filterButtonClicked_
Definition: FWGUIManager.h:207
FWGUIManager * guiManager()
void initMap(const FWRecoGeom::InfoMap &map)
Definition: FWGeometry.cc:143
TEveMagField * m_MagField
Definition: FWFFLooper.h:96
void updateStatus(const char *status)
void setGeometryFilename(const std::string &filename)
void setFFFieldMag(float)
Definition: FWMagField.cc:229
DataProxy const * find(DataKey const &aKey) const
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()
bool m_firstTime
Definition: FWFFLooper.h:100
bool isValid() const
Definition: HandleBase.h:75
#define fwLog(_level_)
Definition: fwLog.h:50
T const * product() const
Definition: ESHandle.h:86
void setFilterButtonText(const char *txt)
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
FWGeometry & getGeom()
void showEventFilterGUI()
void showPathsGUI(const TGWindow *p)
Definition: FWFFLooper.cc:526
std::auto_ptr< fireworks::Context > m_context
Definition: FWFFLooper.h:91
void FWFFLooper::checkPosition ( )
virtual

Implements CmsShowMainBase.

Definition at line 251 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().

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 m_AllowStep, and 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 ,
const edm::EventSetup ,
edm::ProcessingController  
)
overridevirtual

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

Implements edm::EDLooperBase.

Definition at line 392 of file FWFFLooper.cc.

References edm::ESWatcher< T >::check(), 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_geomWatcher, m_isFirstEvent, m_isLastEvent, m_metadataManager, m_navigator, m_nextEventId, m_pathsGUI, m_Rint, FWPathsPopup::postEvent(), edm::ProcessingController::reverseState(), edm::ProcessingController::setTransitionToEvent(), edm::ProcessingController::setTransitionToNextEvent(), edm::ProcessingController::setTransitionToPreviousEvent(), and CmsShowMainBase::startAutoLoadTimer().

395 {
396  // Check DisplayGeomRecord changes.
397  try {
398  m_geomWatcher.check(es);
399  } catch (...) {}
400 
401 
403 
404  m_isLastEvent = controller.forwardState() == edm::ProcessingController::kAtLastEvent;
405  m_isFirstEvent = controller.reverseState() == edm::ProcessingController::kAtFirstEvent;
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  {
410  controller.setTransitionToEvent(m_nextEventId);
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;
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
bool m_autoReload
Definition: FWFFLooper.h:106
std::auto_ptr< FWFFNavigator > m_navigator
Definition: FWFFLooper.h:89
std::auto_ptr< FWFFMetadataManager > m_metadataManager
Definition: FWFFLooper.h:90
bool & hasChanges()
Definition: FWPathsPopup.h:37
TRint * m_Rint
Definition: FWFFLooper.h:94
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:107
virtual void checkPosition()
Definition: FWFFLooper.cc:251
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
void postEvent(edm::Event const &event)
edm::EventID m_nextEventId
Definition: FWFFLooper.h:105
edm::EDLooperBase::Status FWFFLooper::endOfLoop ( const edm::EventSetup ,
unsigned int   
)
overridevirtual

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

References ecal_dqm_sourceclient-live_cfg::cerr, edm::ModuleChanger::changeModule(), alignCSCRings::e, fwLog, i, edm::EDLooperBase::kContinue, fwlog::kError, m_scheduledChanges, edm::EDLooperBase::moduleChanger(), 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 }
virtual char const * what() const
Definition: Exception.cc:141
int i
Definition: DBlmapReader.cc:9
ModuleChanges m_scheduledChanges
Definition: FWFFLooper.h:104
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.

References m_MagField.

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 CmsShowTaskExecutor::addTask(), f, CmsShowMainBase::loadGeometry(), and CmsShowMainBase::startupTasks().

Referenced by FWFFLooper().

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

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< class >::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 }
void get(HolderT &iHolder) const
#define fwLog(_level_)
Definition: fwLog.h:50
T const * product() const
Definition: ESHandle.h:86
static void setGeoManagerRuntime(TGeoManager *)
void FWFFLooper::requestChanges ( const std::string &  moduleLabel,
const edm::ParameterSet ps 
)

Definition at line 543 of file FWFFLooper.cc.

References m_scheduledChanges.

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.

References m_MagField.

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.

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

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 CmsShowTaskExecutor::addTask(), assert(), f, info(), m_pathsGUI, m_Rint, edm::EDLooperBase::scheduleInfo(), FWPathsPopup::setup(), CmsShowTaskExecutor::startDoingTasks(), and CmsShowMainBase::startupTasks().

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)
assert(m_qm.get())
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 ( )
virtual

Reimplemented from CmsShowMainBase.

Definition at line 297 of file FWFFLooper.cc.

References checkPosition(), FWGUIManager::enableActions(), CmsShowMainFrame::enableComplexNavigation(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), m_autoReload, CmsShowMainBase::stopAutoLoadTimer(), and 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
virtual void checkPosition()
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.

Referenced by display().

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.

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

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

Definition at line 91 of file FWFFLooper.h.

Referenced by beginRun(), and FWFFLooper().

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.

Referenced by beginRun().

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

Definition at line 110 of file FWFFLooper.h.

Referenced by beginRun(), and duringLoop().

bool FWFFLooper::m_isFirstEvent
private

Definition at line 107 of file FWFFLooper.h.

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

bool FWFFLooper::m_isLastEvent
private

Definition at line 108 of file FWFFLooper.h.

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

TEveMagField* FWFFLooper::m_MagField
private

Definition at line 96 of file FWFFLooper.h.

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

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

Definition at line 90 of file FWFFLooper.h.

Referenced by duringLoop(), and FWFFLooper().

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

Definition at line 89 of file FWFFLooper.h.

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

edm::EventID FWFFLooper::m_nextEventId
private

Definition at line 105 of file FWFFLooper.h.

Referenced by duringLoop().

FWPathsPopup* FWFFLooper::m_pathsGUI
private

Definition at line 101 of file FWFFLooper.h.

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

TRint* FWFFLooper::m_Rint
private

Definition at line 94 of file FWFFLooper.h.

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

ModuleChanges FWFFLooper::m_scheduledChanges
private

Definition at line 104 of file FWFFLooper.h.

Referenced by endOfLoop(), and requestChanges().

bool FWFFLooper::m_ShowEvent
private

Definition at line 99 of file FWFFLooper.h.