CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
CmsShowMain Class Reference

#include <Fireworks/Core/interface/CmsShowMain.h>

Inheritance diagram for CmsShowMain:
CmsShowMainBase

Public Member Functions

void appendData ()
 
 CmsShowMain (int argc, char *argv[])
 
const fireworks::Contextcontext () const
 
void doExit ()
 
void fileChangedSlot (const TFile *file)
 
const fwlite::EventgetCurrentEvent () const
 
bool getVersionCheck () const
 
void notified (TSocket *)
 
void openData ()
 
void openDataViaURL ()
 
void quit () override
 
void resetInitialization ()
 
 ~CmsShowMain () override
 
- 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 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)
 

Protected Member Functions

void eventChangedImp () override
 
- Protected Member Functions inherited from CmsShowMainBase
fireworks::Contextcontext ()
 
void eventChangedSlot ()
 
void sendVersionInfo ()
 

Private Member Functions

void autoLoadNewEvent () override
 
void checkKeyBindingsOnPLayEventsStateChanged () override
 
void checkLiveMode ()
 
void checkPosition () override
 
 CmsShowMain (const CmsShowMain &)
 
void connectSocket ()
 
void filterButtonClicked ()
 
void loadGeometry ()
 
void navigatorChangedFilterState (int)
 
const CmsShowMainoperator= (const CmsShowMain &)
 
void postFiltering (bool)
 
void preFiltering ()
 
void reachedBeginning ()
 
void reachedEnd ()
 
void setLiveMode ()
 
void setLoadedAnyInputFileAfterStartup ()
 
void setupDataHandling ()
 
void setupSocket (unsigned int)
 
void stopPlaying () override
 

Private Attributes

std::unique_ptr< fireworks::Contextm_context
 
std::vector< std::string > m_inputFiles
 
UInt_t m_lastXEventSerial
 
bool m_live
 
int m_liveTimeout
 
std::unique_ptr< SignalTimerm_liveTimer
 
bool m_loadedAnyInputFile
 
std::unique_ptr< FWLiteJobMetadataManagerm_metadataManager
 
std::unique_ptr< TMonitor > m_monitor
 
std::unique_ptr< CmsShowNavigatorm_navigator
 
bool m_noVersionCheck
 
const TFile * m_openFile
 
std::unique_ptr< CmsShowSearchFilesm_searchFiles
 

Detailed Description

Description: Displays an fwlite::Event in ROOT

Usage: <usage>

Definition at line 58 of file CmsShowMain.h.

Constructor & Destructor Documentation

CmsShowMain::CmsShowMain ( int  argc,
char *  argv[] 
)

Definition at line 124 of file CmsShowMain.cc.

References CmsShowTaskExecutor::addTask(), Vispa.Plugins.EdmBrowser.EdmDataAccessor::all(), dir2webdir::argc, cmsBatch::argv, CmsShowMainBase::configFilename(), CmsShowMainBase::configurationManager(), connectSocket(), gather_cfg::cout, MillePedeFileConverter_cfg::e, CmsShowMainBase::eiManager(), FWLiteEnabler::enable(), FWColorPopup::EnableFreePalette(), cppFunctionSkipper::exception, beamvalidation::exit(), f, fwLog, CmsShowMainBase::geometryFilename(), CmsShowMainBase::guiManager(), kAdvancedRenderCommandOpt, kAdvancedRenderOpt, kAutoSaveAllViews, kAutoSaveHeight, kAutoSaveType, kChainCommandOpt, kConfigFileCommandOpt, kConfigFileOpt, kEnableFPE, fwlog::kError, kEveCommandOpt, kEveOpt, kExpertCommandOpt, kFieldCommandOpt, kFreePaletteCommandOpt, kGeomFileCommandOpt, kGeomFileOpt, kHelpCommandOpt, kHelpOpt, fwlog::kInfo, kInputFilesCommandOpt, kInputFilesOpt, kLiveCommandOpt, kLogLevelCommandOpt, kLogTreeCacheOpt, kLoopCommandOpt, kLoopOpt, kNoConfigFileCommandOpt, kNoConfigFileOpt, kNoVersionCheck, kPlainRootCommandOpt, kPlayCommandOpt, kPlayOpt, kPortCommandOpt, kPrefetchTreeCacheOpt, kRootInteractiveCommandOpt, kSimGeomFileCommandOpt, kSimGeomFileOpt, kSizeTreeCacheOpt, kSoftCommandOpt, kSyncAllViews, kTGeoNameCommandOpt, kTGeoNameOpt, FWMagField::kUser, kZeroWinOffsets, personalPlayback::level, CmsShowMainBase::loadGeometry(), FWTTreeCache::LoggingOn(), m_context, m_inputFiles, m_metadataManager, m_navigator, m_noVersionCheck, AlcaSiPixelAliHarvester0T_cff::options, AlCaHLTBitMon_ParallelJobs::p, FWTTreeCache::PrefetchingOn(), FWGUIManager::resetWMOffsets(), writedatasetfile::run, CmsShowMainBase::setAutoSaveAllViewsFormat(), CmsShowMainBase::setAutoSaveAllViewsHeight(), CmsShowMainBase::setConfigFilename(), FWEventItemsManager::setContext(), FWTTreeCache::SetDefaultCacheSize(), CmsShowMainBase::setGeometryFilename(), FWConfigurationManager::setIgnore(), setLiveMode(), CmsShowNavigator::setMaxNumberOfFilesToChain(), CmsShowMainBase::setPlayLoop(), fwlog::setPresentLogLevel(), CmsShowMainBase::setSimGeometryFilename(), CmsShowMainBase::setup(), CmsShowMainBase::setupAutoLoad(), setupDataHandling(), CmsShowMainBase::setupDebugSupport(), setupSocket(), CmsShowMainBase::setupViewManagers(), CmsShowTaskExecutor::startDoingTasks(), CmsShowMainBase::startupTasks(), AlCaHLTBitMon_QueryRunRegistry::string, FWEveViewManager::syncAllViews(), and w.

125  : CmsShowMainBase(),
126  m_navigator(new CmsShowNavigator(*this)),
130  m_loadedAnyInputFile(false),
131  m_openFile(nullptr),
132  m_live(false),
133  m_liveTimer(new SignalTimer()),
134  m_liveTimeout(600000),
136  m_noVersionCheck(false) {
137  try {
138  TGLWidget* w = TGLWidget::Create(gClient->GetDefaultRoot(), kTRUE, kTRUE, nullptr, 10, 10);
139  delete w;
140  } catch (std::exception& iException) {
141  fwLog(fwlog::kError) << "Failed creating an OpenGL window: " << iException.what()
142  << "\n"
143  "Things to check:\n"
144  "- Is DISPLAY environment variable set?\n"
145  "- Are OpenGL libraries installed?\n"
146  "- If running remotely, make sure you use 'ssh -X' or 'ssh -Y'.\n"
147  "See also: https://twiki.cern.ch/twiki/bin/viewauth/CMS/WorkBookFireworks\n";
148  gSystem->Exit(1);
149  }
150 
151  eiManager()->setContext(m_context.get());
152 
153  std::string descString(argv[0]);
154  descString += " [options] <data file>\nGeneral";
155 
156  namespace po = boost::program_options;
157  po::options_description desc(descString);
158  desc.add_options()(kInputFilesCommandOpt, po::value<std::vector<std::string> >(), "Input root files")(
159  kConfigFileCommandOpt, po::value<std::string>(), "Include configuration file")(
160  kNoConfigFileCommandOpt, "Empty configuration")(kNoVersionCheck, "No file version check")(
161  kGeomFileCommandOpt, po::value<std::string>(), "Reco geometry file. Default is cmsGeom10.root")(
163  po::value<std::string>(),
164  "Geometry file for browsing in table view. Default is CmsSimGeom-14.root. Can be simulation or reco geometry in "
165  "TGeo format")(kTGeoNameCommandOpt, po::value<std::string>(), "TGeoManager name. The default is \"cmsGeo;1\"")(
166  kFieldCommandOpt, po::value<double>(), "Set magnetic field value explicitly. Default is auto-field estimation")(
167  kRootInteractiveCommandOpt, "Enable root interactive prompt")(
168  kSoftCommandOpt, "Try to force software rendering to avoid problems with bad hardware drivers")(
169  kExpertCommandOpt, "Enable PF user plugins.")(kHelpCommandOpt, "Display help message");
170 
171  po::options_description livedesc("Live Event Display");
172  livedesc.add_options()(
173  kPlayCommandOpt, po::value<float>(), "Start in play mode with given interval between events in seconds")(
174  kPortCommandOpt, po::value<unsigned int>(), "Listen to port for new data files to open")(
175  kLoopCommandOpt, "Loop events in play mode")(
177  po::value<unsigned int>(),
178  "Chain up to a given number of recently open files. Default is 1 - no chain")(
179  kLiveCommandOpt, "Enforce playback mode if a user is not using display")(
181  po::value<std::string>(),
182  "Auto-save all views with given prefix (run_event_lumi_view.<auto-save-type> is appended)")(
183  kAutoSaveType, po::value<std::string>(), "Image type of auto-saved views, png or jpg (png is default)")(
184  kAutoSaveHeight, po::value<int>(), "Screenshots height when auto-save-all-views is enabled")(
185  kSyncAllViews, "Synchronize all views on new event");
186 
187  po::options_description debugdesc("Debug");
188  debugdesc.add_options()(kLogLevelCommandOpt,
189  po::value<unsigned int>(),
190  "Set log level starting from 0 to 4 : kDebug, kInfo, kWarning, kError")(
191  kEveCommandOpt, "Show TEveBrowser to help debug problems")(kEnableFPE,
192  "Enable detection of floating-point exceptions");
193 
194  po::options_description tcachedesc("TreeCache");
195  tcachedesc.add_options()(kLogTreeCacheOpt, "Log tree cache operations and status")(
196  kSizeTreeCacheOpt, po::value<int>(), "Set size of TTreeCache for data access in MB (default is 50)")(
197  kPrefetchTreeCacheOpt, "Enable prefetching");
198 
199  po::options_description rnrdesc("Appearance");
200  rnrdesc.add_options()(kFreePaletteCommandOpt, "Allow free color selection (requires special configuration!)")(
201  kZeroWinOffsets, "Disable auto-detection of window position offsets")(kAdvancedRenderCommandOpt,
202  "Enable line anti-aliasing");
203  po::positional_options_description p;
204  p.add(kInputFilesOpt, -1);
205 
206  po::options_description hiddendesc("hidden");
207  hiddendesc.add_options();
208 
209  po::options_description all("");
210  all.add(desc).add(rnrdesc).add(livedesc).add(debugdesc).add(tcachedesc);
211 
212  int newArgc = argc;
213  char** newArgv = argv;
214  po::variables_map vm;
215  try {
216  po::store(po::command_line_parser(newArgc, newArgv).options(all).positional(p).run(), vm);
217 
218  po::notify(vm);
219  } catch (const std::exception& e) {
220  // Return with exit status 0 to avoid generating crash reports
221 
222  fwLog(fwlog::kError) << e.what() << std::endl;
223  std::cout << all << std::endl;
224  exit(0);
225  }
226 
227  if (vm.count(kHelpOpt)) {
228  std::cout << all << std::endl;
229  exit(0);
230  }
231 
232  if (vm.count(kLogLevelCommandOpt)) {
233  fwlog::LogLevel level = (fwlog::LogLevel)(vm[kLogLevelCommandOpt].as<unsigned int>());
235  }
236 
237  if (vm.count(kLogTreeCacheOpt)) {
238  fwLog(fwlog::kInfo) << "Enabling logging of TTreCache operations." << std::endl;
240  }
241 
242  if (vm.count(kPrefetchTreeCacheOpt)) {
243  fwLog(fwlog::kInfo) << "Enabling TTreCache prefetching." << std::endl;
245  }
246 
247  if (vm.count(kSizeTreeCacheOpt)) {
248  int ds = vm[kSizeTreeCacheOpt].as<int>();
249  if (ds < 0)
250  throw std::runtime_error("tree-cache-size should be non negative");
251  if (ds > 8192)
252  throw std::runtime_error("tree-cache-size should be smaller than 8 GB");
253  fwLog(fwlog::kInfo) << "Setting default TTreeCache size to " << ds << " MB." << std::endl;
254  FWTTreeCache::SetDefaultCacheSize(ds * 1024 * 1024);
255  }
256 
257  if (vm.count(kPlainRootCommandOpt)) {
258  fwLog(fwlog::kInfo) << "Plain ROOT prompt requested" << std::endl;
259  return;
260  }
261 
262  const char* cmspath = gSystem->Getenv("CMSSW_BASE");
263  if (nullptr == cmspath) {
264  throw std::runtime_error("CMSSW_BASE environment variable not set");
265  }
266 
267  // input file
268  if (vm.count(kInputFilesOpt)) {
269  m_inputFiles = vm[kInputFilesOpt].as<std::vector<std::string> >();
270  }
271 
272  if (m_inputFiles.empty())
273  fwLog(fwlog::kInfo) << "No data file given." << std::endl;
274  else if (m_inputFiles.size() == 1)
275  fwLog(fwlog::kInfo) << "Input " << m_inputFiles.front() << std::endl;
276  else
277  fwLog(fwlog::kInfo) << m_inputFiles.size() << " input files; first: " << m_inputFiles.front()
278  << ", last: " << m_inputFiles.back() << std::endl;
279 
280  // configuration file
281  if (vm.count(kConfigFileOpt)) {
282  setConfigFilename(vm[kConfigFileOpt].as<std::string>());
283  if (access(configFilename(), R_OK) == -1) {
284  fwLog(fwlog::kError) << "Specified configuration file does not exist. Quitting.\n";
285  exit(1);
286  }
287 
288  fwLog(fwlog::kInfo) << "Config " << configFilename() << std::endl;
289  } else {
290  if (vm.count(kNoConfigFileOpt)) {
291  fwLog(fwlog::kInfo) << "No configuration is loaded.\n";
293  }
294  }
295 
296  // geometry
297  if (vm.count(kGeomFileOpt)) {
298  setGeometryFilename(vm[kGeomFileOpt].as<std::string>());
299  fwLog(fwlog::kInfo) << "Geometry file " << geometryFilename() << "\n";
300  } else {
301  // fwLog(fwlog::kInfo) << "No geom file name. Choosing default.\n";
302  setGeometryFilename("cmsGeom10.root");
303  }
304 
305  if (vm.count(kSimGeomFileOpt)) {
306  if (vm.count(kTGeoNameOpt))
307  setSimGeometryFilename(vm[kSimGeomFileOpt].as<std::string>(), vm[kTGeoNameOpt].as<std::string>());
308  else
309  setSimGeometryFilename(vm[kSimGeomFileOpt].as<std::string>(), "cmsGeo;1");
310  } else {
311  setSimGeometryFilename("cmsSimGeom-14.root", "cmsGeo;1");
312  }
313 
314  // Free-palette palette
315  if (vm.count(kFreePaletteCommandOpt)) {
317  fwLog(fwlog::kInfo) << "Palette restriction removed on user request!\n";
318  }
319  bool eveMode = vm.count(kEveOpt);
320 
321  //Delay creating guiManager and enabling autoloading until here so that if we have a 'help' request we don't
322  // open any graphics or build dictionaries
324 
325  TEveManager::Create(kFALSE, eveMode ? "FIV" : "FI");
326 
327  if (vm.count(kExpertCommandOpt)) {
328  m_context->setHidePFBuilders(false);
329  } else {
330  m_context->setHidePFBuilders(true);
331  }
332 
333  if (vm.count(kExpertCommandOpt)) {
334  m_context->setHidePFBuilders(false);
335  } else {
336  m_context->setHidePFBuilders(true);
337  }
338 
339  setup(m_navigator.get(), m_context.get(), m_metadataManager.get());
340 
341  if (vm.count(kZeroWinOffsets)) {
343  fwLog(fwlog::kInfo) << "Window offsets reset on user request!\n";
344  }
345 
346  if (vm.count(kAdvancedRenderOpt)) {
347  TEveLine::SetDefaultSmooth(kTRUE);
348  }
349 
350  //figure out where to find macros
351  //tell ROOT where to find our macros
353  // first check if port is not occupied
354  if (vm.count(kPortCommandOpt)) {
355  f = boost::bind(&CmsShowMain::setupSocket, this, vm[kPortCommandOpt].as<unsigned int>());
356  startupTasks()->addTask(f);
357  }
358 
359  f = boost::bind(&CmsShowMainBase::loadGeometry, this);
360  startupTasks()->addTask(f);
361  f = boost::bind(&CmsShowMainBase::setupViewManagers, this);
362  startupTasks()->addTask(f);
363 
364  if (vm.count(kLiveCommandOpt)) {
365  f = boost::bind(&CmsShowMain::setLiveMode, this);
366  startupTasks()->addTask(f);
367  }
368 
369  if (vm.count(kFieldCommandOpt)) {
370  m_context->getField()->setSource(FWMagField::kUser);
371  m_context->getField()->setUserField(vm[kFieldCommandOpt].as<double>());
372  }
373 
374  f = boost::bind(&CmsShowMain::setupDataHandling, this);
375  startupTasks()->addTask(f);
376 
377  if (vm.count(kLoopOpt))
378  setPlayLoop();
379 
380  if (eveMode) {
381  f = boost::bind(&CmsShowMainBase::setupDebugSupport, this);
382  startupTasks()->addTask(f);
383  }
384  if (vm.count(kChainCommandOpt)) {
385  f = boost::bind(
387  startupTasks()->addTask(f);
388  }
389  if (vm.count(kPlayOpt)) {
390  f = boost::bind(&CmsShowMainBase::setupAutoLoad, this, vm[kPlayOpt].as<float>());
391  startupTasks()->addTask(f);
392  }
393 
394  if (vm.count(kAutoSaveAllViews)) {
395  std::string type = "png";
396  if (vm.count(kAutoSaveType)) {
397  type = vm[kAutoSaveType].as<std::string>();
398  if (type != "png" && type != "jpg") {
399  fwLog(fwlog::kError) << "Specified auto-save type not supported. Quitting.\n";
400  exit(1);
401  }
402  }
403  std::string fmt = vm[kAutoSaveAllViews].as<std::string>();
404  fmt += "%u_%u_%llu_%s.";
405  fmt += type;
407  }
408  if (vm.count(kAutoSaveHeight)) {
410  }
411  if (vm.count(kSyncAllViews)) {
413  }
414  if (vm.count(kNoVersionCheck)) {
415  m_noVersionCheck = true;
416  }
417  if (vm.count(kEnableFPE)) {
418  gSystem->SetFPEMask();
419  }
420 
421  if (vm.count(kPortCommandOpt)) {
422  f = boost::bind(&CmsShowMain::connectSocket, this);
423  startupTasks()->addTask(f);
424  }
425 
427 }
static const char *const kPlayCommandOpt
Definition: CmsShowMain.cc:91
static const char *const kNoVersionCheck
Definition: CmsShowMain.cc:119
static void PrefetchingOn()
Definition: FWTTreeCache.cc:25
type
Definition: HCALResponse.h:21
static const char *const kGeomFileCommandOpt
Definition: CmsShowMain.cc:83
FWSelectionManager * selectionManager()
static const char *const kChainCommandOpt
Definition: CmsShowMain.cc:109
static const char *const kAutoSaveAllViews
Definition: CmsShowMain.cc:113
bool m_loadedAnyInputFile
Definition: CmsShowMain.h:118
const double w
Definition: UKUtility.cc:23
FWGUIManager * guiManager()
FWColorManager * colorManager()
static const char *const kZeroWinOffsets
Definition: CmsShowMain.cc:118
void setupSocket(unsigned int)
Definition: CmsShowMain.cc:710
static const char *const kSyncAllViews
Definition: CmsShowMain.cc:116
static const char *const kFieldCommandOpt
Definition: CmsShowMain.cc:111
void setAutoSaveAllViewsHeight(int x)
static const char *const kLogTreeCacheOpt
Definition: CmsShowMain.cc:95
void startDoingTasks() override
FWEventItemsManager * eiManager()
static const char *const kSimGeomFileOpt
Definition: CmsShowMain.cc:84
static const char *const kTGeoNameCommandOpt
Definition: CmsShowMain.cc:87
static const char *const kNoConfigFileOpt
Definition: CmsShowMain.cc:88
const char * configFilename() const
void setup(FWNavigatorBase *navigator, fireworks::Context *context, FWJobMetadataManager *metadataManager)
void setContext(fireworks::Context *)
static const char *const kTGeoNameOpt
Definition: CmsShowMain.cc:86
static const char *const kConfigFileCommandOpt
Definition: CmsShowMain.cc:81
void setupDataHandling()
Definition: CmsShowMain.cc:638
FWModelChangeManager * changeManager()
static const char *const kExpertCommandOpt
Definition: CmsShowMain.cc:105
static const char *const kAdvancedRenderOpt
Definition: CmsShowMain.cc:100
static const char *const kGeomFileOpt
Definition: CmsShowMain.cc:82
LogLevel
Definition: fwLog.h:35
void setupAutoLoad(float x)
static const char *const kPortCommandOpt
Definition: CmsShowMain.cc:106
void setGeometryFilename(const std::string &filename)
static const char *const kPlayOpt
Definition: CmsShowMain.cc:90
void resetWMOffsets()
CmsShowTaskExecutor * startupTasks()
UInt_t m_lastXEventSerial
Definition: CmsShowMain.h:127
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
static const char *const kEveOpt
Definition: CmsShowMain.cc:98
std::unique_ptr< fireworks::Context > m_context
Definition: CmsShowMain.h:115
static void enable()
enable automatic library loading
std::unique_ptr< FWLiteJobMetadataManager > m_metadataManager
Definition: CmsShowMain.h:114
static const char *const kConfigFileOpt
Definition: CmsShowMain.cc:80
static const char *const kFreePaletteCommandOpt
Definition: CmsShowMain.cc:112
static const char *const kLoopOpt
Definition: CmsShowMain.cc:92
static const char *const kEveCommandOpt
Definition: CmsShowMain.cc:99
double f[11][100]
void setSimGeometryFilename(const std::string &filename, const std::string &geoname)
static const char *const kSoftCommandOpt
Definition: CmsShowMain.cc:104
std::unique_ptr< SignalTimer > m_liveTimer
Definition: CmsShowMain.h:125
static const char *const kLogLevelCommandOpt
Definition: CmsShowMain.cc:94
static const char *const kNoConfigFileCommandOpt
Definition: CmsShowMain.cc:89
static const char *const kEnableFPE
Definition: CmsShowMain.cc:117
std::vector< std::string > m_inputFiles
Definition: CmsShowMain.h:117
void setLiveMode()
Definition: CmsShowMain.cc:828
static const char *const kPrefetchTreeCacheOpt
Definition: CmsShowMain.cc:97
static const char *const kLiveCommandOpt
Definition: CmsShowMain.cc:110
static const char *const kHelpCommandOpt
Definition: CmsShowMain.cc:103
static const char *const kInputFilesCommandOpt
Definition: CmsShowMain.cc:79
#define fwLog(_level_)
Definition: fwLog.h:45
static const char *const kInputFilesOpt
Definition: CmsShowMain.cc:78
static const char *const kPlainRootCommandOpt
Definition: CmsShowMain.cc:107
const TFile * m_openFile
Definition: CmsShowMain.h:119
void setAutoSaveAllViewsFormat(const std::string &fmt)
static const char *const kAutoSaveType
Definition: CmsShowMain.cc:114
static const char *const kRootInteractiveCommandOpt
Definition: CmsShowMain.cc:108
bool m_noVersionCheck
Definition: CmsShowMain.h:129
static const char *const kAdvancedRenderCommandOpt
Definition: CmsShowMain.cc:101
boost::function0< void > TaskFunctor
FWConfigurationManager * configurationManager()
void addTask(const TaskFunctor &iTask)
int m_liveTimeout
Definition: CmsShowMain.h:126
void setMaxNumberOfFilesToChain(unsigned int i)
const std::string & geometryFilename(void)
static void EnableFreePalette()
static void LoggingOn()
Definition: FWTTreeCache.cc:21
void setPresentLogLevel(LogLevel)
Definition: fwLog.cc:47
static const char *const kSizeTreeCacheOpt
Definition: CmsShowMain.cc:96
static const char *const kSimGeomFileCommandOpt
Definition: CmsShowMain.cc:85
static void syncAllViews()
void connectSocket()
Definition: CmsShowMain.cc:720
static const char *const kHelpOpt
Definition: CmsShowMain.cc:102
static void SetDefaultCacheSize(int def_size)
Definition: FWTTreeCache.cc:29
static const char *const kLoopCommandOpt
Definition: CmsShowMain.cc:93
static const char *const kAutoSaveHeight
Definition: CmsShowMain.cc:115
void setConfigFilename(const std::string &f)
def exit(msg="")
CmsShowMain::~CmsShowMain ( )
override

Definition at line 433 of file CmsShowMain.cc.

References FWSelectionManager::clearSelection(), and CmsShowMainBase::selectionManager().

433  {
434  //avoids a seg fault from eve which happens if eve is terminated after the GUI is gone
436 }
FWSelectionManager * selectionManager()
CmsShowMain::CmsShowMain ( const CmsShowMain )
private

Member Function Documentation

void CmsShowMain::appendData ( )

Definition at line 534 of file CmsShowMain.cc.

References checkPosition(), FWGUIManager::clearStatus(), CmsShowMainBase::draw(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), m_navigator, setLoadedAnyInputFileAfterStartup(), FWGUIManager::titleChanged(), and FWGUIManager::updateStatus().

Referenced by setupDataHandling().

534  {
535  const char* kRootType[] = {"ROOT files", "*.root", nullptr, nullptr};
536  TGFileInfo fi;
537  fi.fFileTypes = kRootType;
538  /* this is how things used to be done:
539  fi.fIniDir = ".";
540  this is bad because the destructor calls delete[] on fIniDir.
541  */
542  fi.fIniDir = new char[128];
543  strncpy(fi.fIniDir, ".", 127);
544  guiManager()->updateStatus("waiting for data file ...");
545  new TGFileDialog(gClient->GetDefaultRoot(), guiManager()->getMainFrame(), kFDOpen, &fi);
546  guiManager()->updateStatus("loading file ...");
547  if (fi.fFilename) {
548  m_navigator->appendFile(fi.fFilename, false, false);
550  checkPosition();
551  draw();
552  guiManager()->titleChanged(m_navigator->frameTitle());
553  }
554  guiManager()->clearStatus();
555 }
void setLoadedAnyInputFileAfterStartup()
Definition: CmsShowMain.cc:702
void checkPosition() override
Definition: CmsShowMain.cc:620
FWGUIManager * guiManager()
void updateStatus(const char *status)
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:196
void clearStatus()
void titleChanged(const char *title)
void CmsShowMain::autoLoadNewEvent ( )
overrideprivatevirtual

Implements CmsShowMainBase.

Definition at line 583 of file CmsShowMain.cc.

References checkPosition(), CmsShowMainBase::draw(), FWGUIManager::enableActions(), CmsShowMainBase::forward(), CmsShowMainBase::guiManager(), CmsShowMainBase::loop(), m_loadedAnyInputFile, m_monitor, m_navigator, reachedEnd(), CmsShowMainBase::startAutoLoadTimer(), and CmsShowMainBase::stopAutoLoadTimer().

583  {
585 
586  // case when start with no input file
587  if (!m_loadedAnyInputFile) {
588  if (m_monitor.get())
590  return;
591  }
592 
593  bool reachedEnd = (forward() && m_navigator->isLastEvent()) || (!forward() && m_navigator->isFirstEvent());
594 
595  if (loop() && reachedEnd) {
596  forward() ? m_navigator->firstEvent() : m_navigator->lastEvent();
597  draw();
598  } else if (!reachedEnd) {
599  forward() ? m_navigator->nextEvent() : m_navigator->previousEvent();
600  draw();
601  }
602 
603  // stop loop in case no loop or monitor mode
604  if (reachedEnd && (loop() || m_monitor.get()) == kFALSE) {
605  if (forward() && m_navigator->isLastEvent()) {
607  checkPosition();
608  }
609 
610  if ((!forward()) && m_navigator->isFirstEvent()) {
612  checkPosition();
613  }
614  } else
616 }
void checkPosition() override
Definition: CmsShowMain.cc:620
bool m_loadedAnyInputFile
Definition: CmsShowMain.h:118
FWGUIManager * guiManager()
void enableActions(bool enable=true)
bool loop() const
std::unique_ptr< TMonitor > m_monitor
Definition: CmsShowMain.h:131
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
bool forward() const
void reachedEnd()
void CmsShowMain::checkKeyBindingsOnPLayEventsStateChanged ( )
overrideprivatevirtual

Reimplemented from CmsShowMainBase.

Definition at line 780 of file CmsShowMain.cc.

References FWGUIManager::getGUIManager(), FWGUIManager::getMainFrame(), CmsShowMainBase::isPlaying(), and m_live.

780  {
781  if (m_live) {
782  Int_t keycode = gVirtualX->KeysymToKeycode((int)kKey_Space);
783  Window_t id = FWGUIManager::getGUIManager()->getMainFrame()->GetId();
784  gVirtualX->GrabKey(id, keycode, 0, isPlaying());
785  }
786 }
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:196
static FWGUIManager * getGUIManager()
bool isPlaying() const
void CmsShowMain::checkLiveMode ( )
private

Definition at line 843 of file CmsShowMain.cc.

References ev, CmsShowMainBase::guiManager(), CmsShowMainBase::isPlaying(), m_lastXEventSerial, m_liveTimeout, m_liveTimer, FWGUIManager::playEventsAction(), and CSGContinuousAction::switchMode().

Referenced by setLiveMode().

843  {
844  m_liveTimer->TurnOff();
845 
846 #if defined(R__LINUX)
847  TGX11* x11 = dynamic_cast<TGX11*>(gVirtualX);
848  if (x11) {
849  XAnyEvent* ev = (XAnyEvent*)x11->GetNativeEvent();
850  // printf("serial %d \n",(int)ev->serial );
851 
852  if (!isPlaying() && m_lastXEventSerial == ev->serial)
854  m_lastXEventSerial = ev->serial;
855  }
856 #endif
857  m_liveTimer->SetTime((Long_t)(m_liveTimeout));
858  m_liveTimer->Reset();
859  m_liveTimer->TurnOn();
860 }
FWGUIManager * guiManager()
bool ev
UInt_t m_lastXEventSerial
Definition: CmsShowMain.h:127
std::unique_ptr< SignalTimer > m_liveTimer
Definition: CmsShowMain.h:125
CSGContinuousAction * playEventsAction()
bool isPlaying() const
int m_liveTimeout
Definition: CmsShowMain.h:126
void CmsShowMain::checkPosition ( )
overrideprivatevirtual

Implements CmsShowMainBase.

Definition at line 620 of file CmsShowMain.cc.

References FWGUIManager::disableNext(), FWGUIManager::disablePrevious(), CSGAction::enable(), CmsShowMainFrame::enableNavigatorControls(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), CSGAction::isEnabled(), CmsShowMainBase::isPlaying(), CmsShowMainBase::loop(), m_monitor, m_navigator, and FWGUIManager::playEventsAction().

Referenced by appendData(), autoLoadNewEvent(), navigatorChangedFilterState(), notified(), openData(), openDataViaURL(), postFiltering(), setupDataHandling(), and stopPlaying().

620  {
621  if ((m_monitor.get() || loop()) && isPlaying())
622  return;
623 
625 
626  if (m_navigator->isFirstEvent())
628 
629  if (m_navigator->isLastEvent()) {
630  guiManager()->disableNext();
631  // force enable play events action in --port mode
632  if (m_monitor.get() && !guiManager()->playEventsAction()->isEnabled())
634  }
635 }
FWGUIManager * guiManager()
void enable()
Definition: CSGAction.cc:268
bool loop() const
virtual Bool_t isEnabled() const
Definition: CSGAction.cc:288
std::unique_ptr< TMonitor > m_monitor
Definition: CmsShowMain.h:131
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:196
void disablePrevious()
CSGContinuousAction * playEventsAction()
bool isPlaying() const
void disableNext()
void CmsShowMain::connectSocket ( )
private

Definition at line 720 of file CmsShowMain.cc.

References m_monitor.

Referenced by CmsShowMain().

720 { m_monitor->Connect("Ready(TSocket*)", "CmsShowMain", this, "notified(TSocket*)"); }
std::unique_ptr< TMonitor > m_monitor
Definition: CmsShowMain.h:131
const fireworks::Context* CmsShowMain::context ( ) const
inline

Definition at line 77 of file CmsShowMain.h.

Referenced by fileChangedSlot(), CmsShowNavigator::getProcessList(), and CmsShowNavigator::updateFileFilters().

77 { return m_context.get(); };
std::unique_ptr< fireworks::Context > m_context
Definition: CmsShowMain.h:115
void CmsShowMain::doExit ( )

Definition at line 455 of file CmsShowMain.cc.

References FWGUIManager::evePreTerminate(), CmsShowMainBase::guiManager(), and m_context.

Referenced by DieTimer::Notify().

455  {
456  // pre terminate eve
457  m_context->deleteEveElements();
459 
460  // sleep at least 150 ms
461  // windows in ROOT GUI are destroyed in 150 ms timeout after
462  gSystem->Sleep(151);
463  gSystem->ProcessEvents();
464  gSystem->ExitLoop();
465 }
FWGUIManager * guiManager()
std::unique_ptr< fireworks::Context > m_context
Definition: CmsShowMain.h:115
void evePreTerminate()
void CmsShowMain::eventChangedImp ( )
overrideprotectedvirtual

Reimplemented from CmsShowMainBase.

Definition at line 500 of file CmsShowMain.cc.

References CmsShowMainBase::eventChangedImp(), getCurrentEvent(), CmsShowMainBase::guiManager(), m_metadataManager, m_navigator, m_openFile, and FWGUIManager::titleChanged().

500  {
502  guiManager()->titleChanged(m_navigator->frameTitle());
504 }
const fwlite::Event * getCurrentEvent() const
Definition: CmsShowMain.cc:483
FWGUIManager * guiManager()
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
virtual void eventChangedImp()
std::unique_ptr< FWLiteJobMetadataManager > m_metadataManager
Definition: CmsShowMain.h:114
const TFile * m_openFile
Definition: CmsShowMain.h:119
void titleChanged(const char *title)
void CmsShowMain::fileChangedSlot ( const TFile *  file)

Definition at line 489 of file CmsShowMain.cc.

References context(), FrontierConditions_GlobalTag_cff::file, getCurrentEvent(), fireworks::Context::getField(), FWMagField::getSource(), CmsShowMainBase::guiManager(), FWMagField::kNone, m_metadataManager, m_navigator, m_openFile, FWMagField::resetFieldEstimate(), and FWGUIManager::titleChanged().

Referenced by setupDataHandling().

489  {
490  m_openFile = file;
491  if (file)
492  guiManager()->titleChanged(m_navigator->frameTitle());
493 
494  if (context()->getField()->getSource() == FWMagField::kNone) {
496  }
498 }
const fwlite::Event * getCurrentEvent() const
Definition: CmsShowMain.cc:483
FWGUIManager * guiManager()
FWMagField * getField() const
Definition: Context.h:66
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
std::unique_ptr< FWLiteJobMetadataManager > m_metadataManager
Definition: CmsShowMain.h:114
ESource getSource() const
Definition: FWMagField.h:31
const TFile * m_openFile
Definition: CmsShowMain.h:119
const fireworks::Context * context() const
Definition: CmsShowMain.h:77
void titleChanged(const char *title)
void resetFieldEstimate() const
Definition: FWMagField.cc:135
void CmsShowMain::filterButtonClicked ( )
private

Definition at line 805 of file CmsShowMain.cc.

References CmsShowMainBase::guiManager(), CmsShowNavigator::kWithdrawn, m_navigator, and FWGUIManager::showEventFilterGUI().

Referenced by setupDataHandling().

805  {
806  if (m_navigator->getFilterState() == CmsShowNavigator::kWithdrawn)
808  else
809  m_navigator->toggleFilterEnable();
810 }
FWGUIManager * guiManager()
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
void showEventFilterGUI()
const fwlite::Event * CmsShowMain::getCurrentEvent ( ) const

Definition at line 483 of file CmsShowMain.cc.

References m_navigator.

Referenced by eventChangedImp(), and fileChangedSlot().

483  {
484  if (m_navigator.get())
485  return static_cast<const fwlite::Event*>(m_navigator->getCurrentEvent());
486  return nullptr;
487 }
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
bool CmsShowMain::getVersionCheck ( ) const
inline

Definition at line 78 of file CmsShowMain.h.

References FrontierConditions_GlobalTag_cff::file.

Referenced by CmsShowNavigator::appendFile(), and CmsShowNavigator::openFile().

78 { return !m_noVersionCheck; }
bool m_noVersionCheck
Definition: CmsShowMain.h:129
void CmsShowMain::loadGeometry ( )
private
void CmsShowMain::navigatorChangedFilterState ( int  state)
private

Definition at line 797 of file CmsShowMain.cc.

References checkPosition(), CmsShowMainBase::guiManager(), m_navigator, FWGUIManager::setFilterButtonIcon(), and FWGUIManager::setFilterButtonText().

Referenced by setupDataHandling().

797  {
799  if (m_navigator->filesNeedUpdate() == false) {
800  guiManager()->setFilterButtonText(m_navigator->filterStatusMessage());
801  checkPosition();
802  }
803 }
void checkPosition() override
Definition: CmsShowMain.cc:620
FWGUIManager * guiManager()
void setFilterButtonIcon(int)
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
void setFilterButtonText(const char *txt)
void CmsShowMain::notified ( TSocket *  iSocket)

Definition at line 722 of file CmsShowMain.cc.

References edmScanValgrind::buffer, checkPosition(), CmsShowMainBase::draw(), MillePedeFileConverter_cfg::fileName, CmsShowMainBase::forward(), CmsShowMainBase::guiManager(), CmsShowMainBase::isPlaying(), m_live, m_loadedAnyInputFile, m_monitor, m_navigator, alignCSCRings::s, contentValuesFiles::server, AlCaHLTBitMon_QueryRunRegistry::string, and FWGUIManager::updateStatus().

722  {
723  TServerSocket* server = dynamic_cast<TServerSocket*>(iSocket);
724  if (server) {
725  TSocket* connection = server->Accept();
726  if (connection) {
727  m_monitor->Add(connection);
728  std::stringstream s;
729  s << "received connection from " << iSocket->GetInetAddress().GetHostName();
730  guiManager()->updateStatus(s.str().c_str());
731  }
732  } else {
733  char buffer[4096];
734  memset(buffer, 0, sizeof(buffer));
735  if (iSocket->RecvRaw(buffer, sizeof(buffer)) <= 0) {
736  m_monitor->Remove(iSocket);
737  //std::stringstream s;
738  //s << "closing connection to "<<iSocket->GetInetAddress().GetHostName();
739  //m_guiManager->updateStatus(s.str().c_str());
740  delete iSocket;
741  return;
742  }
743  std::string fileName(buffer);
744  std::string::size_type lastNonSpace = fileName.find_last_not_of(" \n\t");
745  if (lastNonSpace != std::string::npos) {
746  fileName.erase(lastNonSpace + 1);
747  }
748 
749  std::stringstream s;
750  s << "New file notified '" << fileName << "'";
751  guiManager()->updateStatus(s.str().c_str());
752 
753  bool appended = m_navigator->appendFile(fileName, true, m_live);
754 
755  if (appended) {
756  if (m_live && isPlaying() && forward())
757  m_navigator->activateNewFileOnNextEvent();
758  else if (!isPlaying())
759  checkPosition();
760 
761  // bootstrap case: --port and no input file
762  if (!m_loadedAnyInputFile) {
763  m_loadedAnyInputFile = true;
764  m_navigator->firstEvent();
765  if (!isPlaying())
766  draw();
767  }
768 
769  std::stringstream sr;
770  sr << "New file registered '" << fileName << "'";
771  guiManager()->updateStatus(sr.str().c_str());
772  } else {
773  std::stringstream sr;
774  sr << "New file NOT registered '" << fileName << "'";
775  guiManager()->updateStatus(sr.str().c_str());
776  }
777  }
778 }
void checkPosition() override
Definition: CmsShowMain.cc:620
bool m_loadedAnyInputFile
Definition: CmsShowMain.h:118
FWGUIManager * guiManager()
void updateStatus(const char *status)
uint16_t size_type
std::unique_ptr< TMonitor > m_monitor
Definition: CmsShowMain.h:131
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
bool isPlaying() const
bool forward() const
void CmsShowMain::openData ( )

Definition at line 510 of file CmsShowMain.cc.

References checkPosition(), FWGUIManager::clearStatus(), CmsShowMainBase::draw(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), m_navigator, setLoadedAnyInputFileAfterStartup(), and FWGUIManager::updateStatus().

Referenced by setupDataHandling().

510  {
511  const char* kRootType[] = {"ROOT files", "*.root", nullptr, nullptr};
512  TGFileInfo fi;
513  fi.fFileTypes = kRootType;
514  /* this is how things used to be done:
515  fi.fIniDir = ".";
516  this is bad because the destructor calls delete[] on fIniDir.
517  */
518  fi.fIniDir = new char[128];
519  strncpy(fi.fIniDir, ".", 127);
520  guiManager()->updateStatus("waiting for data file ...");
521  new TGFileDialog(gClient->GetDefaultRoot(), guiManager()->getMainFrame(), kFDOpen, &fi);
522  guiManager()->updateStatus("loading file ...");
523  if (fi.fFilename) {
524  m_navigator->openFile(fi.fFilename);
525 
527  m_navigator->firstEvent();
528  checkPosition();
529  draw();
530  }
531  guiManager()->clearStatus();
532 }
void setLoadedAnyInputFileAfterStartup()
Definition: CmsShowMain.cc:702
void checkPosition() override
Definition: CmsShowMain.cc:620
FWGUIManager * guiManager()
void updateStatus(const char *status)
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
CmsShowMainFrame * getMainFrame() const
Definition: FWGUIManager.h:196
void clearStatus()
void CmsShowMain::openDataViaURL ( )

Definition at line 557 of file CmsShowMain.cc.

References checkPosition(), FWGUIManager::clearStatus(), CmsShowMainBase::draw(), CmsShowMainBase::guiManager(), m_navigator, m_searchFiles, setLoadedAnyInputFileAfterStartup(), AlCaHLTBitMon_QueryRunRegistry::string, and FWGUIManager::updateStatus().

Referenced by setupDataHandling().

557  {
558  if (m_searchFiles.get() == nullptr) {
559  m_searchFiles = std::unique_ptr<CmsShowSearchFiles>(
560  new CmsShowSearchFiles("", "Open Remote Data Files", guiManager()->getMainFrame(), 500, 400));
561  m_searchFiles->CenterOnParent(kTRUE, TGTransientFrame::kBottomRight);
562  }
563  std::string chosenFile = m_searchFiles->chooseFileFromURL();
564  if (!chosenFile.empty()) {
565  guiManager()->updateStatus("loading file ...");
566  if (m_navigator->openFile(chosenFile)) {
568  m_navigator->firstEvent();
569  checkPosition();
570  draw();
571  guiManager()->clearStatus();
572  } else {
573  guiManager()->updateStatus("failed to load data file");
574  }
575  }
576 }
void setLoadedAnyInputFileAfterStartup()
Definition: CmsShowMain.cc:702
void checkPosition() override
Definition: CmsShowMain.cc:620
FWGUIManager * guiManager()
std::unique_ptr< CmsShowSearchFiles > m_searchFiles
Definition: CmsShowMain.h:121
void updateStatus(const char *status)
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
void clearStatus()
const CmsShowMain& CmsShowMain::operator= ( const CmsShowMain )
private
void CmsShowMain::postFiltering ( bool  doDraw)
private

Definition at line 817 of file CmsShowMain.cc.

References checkPosition(), FWGUIManager::clearStatus(), CmsShowMainBase::draw(), CmsShowMainBase::guiManager(), m_navigator, and FWGUIManager::setFilterButtonText().

Referenced by setupDataHandling().

817  {
818  // called only filter is changed
819  guiManager()->clearStatus();
820  if (doDraw)
821  draw();
822  checkPosition();
823  guiManager()->setFilterButtonText(m_navigator->filterStatusMessage());
824 }
void checkPosition() override
Definition: CmsShowMain.cc:620
FWGUIManager * guiManager()
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
void clearStatus()
void setFilterButtonText(const char *txt)
void CmsShowMain::preFiltering ( )
private

Definition at line 812 of file CmsShowMain.cc.

References CmsShowMainBase::guiManager(), and FWGUIManager::updateStatus().

812  {
813  // called only if filter has changed
814  guiManager()->updateStatus("Filtering events");
815 }
FWGUIManager * guiManager()
void updateStatus(const char *status)
void CmsShowMain::quit ( )
overridevirtual

Implements CmsShowMainBase.

Definition at line 453 of file CmsShowMain.cc.

453 { new DieTimer(this); }
void CmsShowMain::reachedBeginning ( )
private
void CmsShowMain::reachedEnd ( )
private

Referenced by autoLoadNewEvent().

void CmsShowMain::resetInitialization ( )

Definition at line 506 of file CmsShowMain.cc.

506  {
507  //printf("Need to reset\n");
508 }
void CmsShowMain::setLiveMode ( )
private

Definition at line 828 of file CmsShowMain.cc.

References checkLiveMode(), m_live, m_liveTimeout, and m_liveTimer.

Referenced by CmsShowMain().

828  {
829  m_live = true;
830  m_liveTimer.reset(new SignalTimer());
831  m_liveTimer->timeout_.connect(boost::bind(&CmsShowMain::checkLiveMode, this));
832 
833  Window_t rootw, childw;
834  Int_t root_x, root_y, win_x, win_y;
835  UInt_t mask;
836  gVirtualX->QueryPointer(gClient->GetDefaultRoot()->GetId(), rootw, childw, root_x, root_y, win_x, win_y, mask);
837 
838  m_liveTimer->SetTime(m_liveTimeout);
839  m_liveTimer->Reset();
840  m_liveTimer->TurnOn();
841 }
void checkLiveMode()
Definition: CmsShowMain.cc:843
std::unique_ptr< SignalTimer > m_liveTimer
Definition: CmsShowMain.h:125
int m_liveTimeout
Definition: CmsShowMain.h:126
void CmsShowMain::setLoadedAnyInputFileAfterStartup ( )
private

Definition at line 702 of file CmsShowMain.cc.

References CmsShowMainBase::configFilename(), CmsShowMainBase::configurationManager(), m_loadedAnyInputFile, and CmsShowMainBase::setupConfiguration().

Referenced by appendData(), openData(), and openDataViaURL().

702  {
703  if (m_loadedAnyInputFile == false) {
704  m_loadedAnyInputFile = true;
705  if ((configFilename()[0] == '\0') && (configurationManager()->getIgnore() == false))
707  }
708 }
bool m_loadedAnyInputFile
Definition: CmsShowMain.h:118
const char * configFilename() const
FWConfigurationManager * configurationManager()
void CmsShowMain::setupDataHandling ( )
private

Definition at line 638 of file CmsShowMain.cc.

References CSGAction::activated, appendData(), FWEventItemsManager::begin(), checkPosition(), CmsShowMainBase::configFilename(), CmsShowMainBase::configurationManager(), CmsShowMainBase::eiManager(), FWEventItemsManager::end(), fileChangedSlot(), filterButtonClicked(), FWGUIManager::filterButtonClicked_, alignmentValidation::fname, FWGUIManager::getAction(), FWConfigurationManager::getIgnore(), CmsShowMainBase::guiManager(), cuy::ii, FWGUIManager::initEmpty(), m_inputFiles, m_loadedAnyInputFile, m_monitor, m_navigator, navigatorChangedFilterState(), openData(), openDataViaURL(), postFiltering(), cmsshow::sAppendData, FWGUIManager::setFilterButtonIcon(), CmsShowMainBase::setupActions(), CmsShowMainBase::setupConfiguration(), CmsShowNavigator::showEventFilterGUI(), FWGUIManager::showEventFilterGUI_, cmsshow::sOpenData, cmsshow::sSearchFiles, AlCaHLTBitMon_QueryRunRegistry::string, FWGUIManager::updateEventFilterEnable(), and FWGUIManager::updateStatus().

Referenced by CmsShowMain().

638  {
639  guiManager()->updateStatus("Setting up data handling...");
640 
641  // navigator filtering ->
642  m_navigator->fileChanged_.connect(boost::bind(&CmsShowMain::fileChangedSlot, this, _1));
643  m_navigator->editFiltersExternally_.connect(boost::bind(&FWGUIManager::updateEventFilterEnable, guiManager(), _1));
644  m_navigator->filterStateChanged_.connect(boost::bind(&CmsShowMain::navigatorChangedFilterState, this, _1));
645  m_navigator->postFiltering_.connect(boost::bind(&CmsShowMain::postFiltering, this, _1));
646 
647  // navigator fitlering <-
649  guiManager()->filterButtonClicked_.connect(boost::bind(&CmsShowMain::filterButtonClicked, this));
650 
651  // Data handling. File related and therefore not in the base class.
652  if (guiManager()->getAction(cmsshow::sOpenData) != nullptr)
653  guiManager()->getAction(cmsshow::sOpenData)->activated.connect(sigc::mem_fun(*this, &CmsShowMain::openData));
654  if (guiManager()->getAction(cmsshow::sAppendData) != nullptr)
655  guiManager()->getAction(cmsshow::sAppendData)->activated.connect(sigc::mem_fun(*this, &CmsShowMain::appendData));
656  if (guiManager()->getAction(cmsshow::sSearchFiles) != nullptr)
657  guiManager()
659  ->activated.connect(sigc::mem_fun(*this, &CmsShowMain::openDataViaURL));
660 
661  setupActions();
662  // init data from CmsShowNavigator configuration, can do this with signals since there were not connected yet
663  guiManager()->setFilterButtonIcon(m_navigator->getFilterState());
664 
665  for (unsigned int ii = 0; ii < m_inputFiles.size(); ++ii) {
666  const std::string& fname = m_inputFiles[ii];
667  if (fname.empty())
668  continue;
669  guiManager()->updateStatus("loading data file ...");
670  if (!m_navigator->appendFile(fname, false, false)) {
671  guiManager()->updateStatus("failed to load data file");
672  } else {
673  m_loadedAnyInputFile = true;
674  }
675  }
676 
677  if (m_loadedAnyInputFile) {
678  m_navigator->firstEvent();
679  checkPosition();
680  if (configurationManager()->getIgnore())
681  guiManager()->initEmpty();
682  else
684  } else {
685  if (configFilename()[0] == '\0') {
686  guiManager()->initEmpty();
687  } else {
689  }
690 
691  bool geoBrowser = (configFilename()[0] != '\0') && (eiManager()->begin() == eiManager()->end());
692 
693  if (m_monitor.get() == nullptr && (configurationManager()->getIgnore() == false) && (!geoBrowser)) {
694  if (m_inputFiles.empty())
695  openDataViaURL();
696  else
697  openData();
698  }
699  }
700 }
void fileChangedSlot(const TFile *file)
Definition: CmsShowMain.cc:489
void navigatorChangedFilterState(int)
Definition: CmsShowMain.cc:797
void openData()
Definition: CmsShowMain.cc:510
void showEventFilterGUI(const TGWindow *p)
sigc::signal< void > filterButtonClicked_
Definition: FWGUIManager.h:202
void checkPosition() override
Definition: CmsShowMain.cc:620
bool m_loadedAnyInputFile
Definition: CmsShowMain.h:118
FWGUIManager * guiManager()
void appendData()
Definition: CmsShowMain.cc:534
void setFilterButtonIcon(int)
FWEventItemsManager * eiManager()
sigc::signal< void > activated
Definition: CSGAction.h:100
const char * configFilename() const
const std::string sOpenData
Definition: ActionsList.cc:12
void updateStatus(const char *status)
void filterButtonClicked()
Definition: CmsShowMain.cc:805
const std::string sAppendData
Definition: ActionsList.cc:13
std::unique_ptr< TMonitor > m_monitor
Definition: CmsShowMain.h:131
sigc::signal< void, const TGWindow * > showEventFilterGUI_
Definition: FWGUIManager.h:203
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113
std::vector< std::string > m_inputFiles
Definition: CmsShowMain.h:117
ii
Definition: cuy.py:590
void postFiltering(bool)
Definition: CmsShowMain.cc:817
const_iterator begin() const
NOTE: iterator is allowed to return a null object for items that have been removed.
CSGAction * getAction(const std::string name)
void updateEventFilterEnable(bool)
string fname
main script
FWConfigurationManager * configurationManager()
void openDataViaURL()
Definition: CmsShowMain.cc:557
const_iterator end() const
const std::string sSearchFiles
Definition: ActionsList.cc:14
void CmsShowMain::setupSocket ( unsigned int  iSocket)
private

Definition at line 710 of file CmsShowMain.cc.

References beamvalidation::exit(), fwLog, fwlog::kError, m_monitor, and contentValuesFiles::server.

Referenced by CmsShowMain().

710  {
711  m_monitor = std::unique_ptr<TMonitor>(new TMonitor);
712  TServerSocket* server = new TServerSocket(iSocket, kTRUE);
713  if (server->GetErrorCode()) {
714  fwLog(fwlog::kError) << "CmsShowMain::setupSocket, can't create socket on port " << iSocket << "." << std::endl;
715  exit(0);
716  }
717  m_monitor->Add(server);
718 }
std::unique_ptr< TMonitor > m_monitor
Definition: CmsShowMain.h:131
#define fwLog(_level_)
Definition: fwLog.h:45
def exit(msg="")
void CmsShowMain::stopPlaying ( )
overrideprivatevirtual

Reimplemented from CmsShowMainBase.

Definition at line 788 of file CmsShowMain.cc.

References checkPosition(), FWGUIManager::enableActions(), CmsShowMainBase::guiManager(), m_live, m_navigator, CmsShowMainBase::stopAutoLoadTimer(), and CmsShowMainBase::stopPlaying().

788  {
790  if (m_live)
791  m_navigator->resetNewFileOnNextEvent();
794  checkPosition();
795 }
void checkPosition() override
Definition: CmsShowMain.cc:620
FWGUIManager * guiManager()
void enableActions(bool enable=true)
virtual void stopPlaying()
std::unique_ptr< CmsShowNavigator > m_navigator
Definition: CmsShowMain.h:113

Member Data Documentation

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

Definition at line 115 of file CmsShowMain.h.

Referenced by CmsShowMain(), and doExit().

std::vector<std::string> CmsShowMain::m_inputFiles
private

Definition at line 117 of file CmsShowMain.h.

Referenced by CmsShowMain(), and setupDataHandling().

UInt_t CmsShowMain::m_lastXEventSerial
private

Definition at line 127 of file CmsShowMain.h.

Referenced by checkLiveMode().

bool CmsShowMain::m_live
private
int CmsShowMain::m_liveTimeout
private

Definition at line 126 of file CmsShowMain.h.

Referenced by checkLiveMode(), and setLiveMode().

std::unique_ptr<SignalTimer> CmsShowMain::m_liveTimer
private

Definition at line 125 of file CmsShowMain.h.

Referenced by checkLiveMode(), and setLiveMode().

bool CmsShowMain::m_loadedAnyInputFile
private
std::unique_ptr<FWLiteJobMetadataManager> CmsShowMain::m_metadataManager
private

Definition at line 114 of file CmsShowMain.h.

Referenced by CmsShowMain(), eventChangedImp(), and fileChangedSlot().

std::unique_ptr<TMonitor> CmsShowMain::m_monitor
private
std::unique_ptr<CmsShowNavigator> CmsShowMain::m_navigator
private
bool CmsShowMain::m_noVersionCheck
private

Definition at line 129 of file CmsShowMain.h.

Referenced by CmsShowMain().

const TFile* CmsShowMain::m_openFile
private

Definition at line 119 of file CmsShowMain.h.

Referenced by eventChangedImp(), and fileChangedSlot().

std::unique_ptr<CmsShowSearchFiles> CmsShowMain::m_searchFiles
private

Definition at line 121 of file CmsShowMain.h.

Referenced by openDataViaURL().