CMS 3D CMS Logo

Functions
cmsShow.cc File Reference
#include "TEnv.h"
#include "TSystem.h"
#include "TEveManager.h"
#include "TRint.h"
#include "TApplication.h"
#include "TSysEvtHandler.h"
#include "Getline.h"
#include <iostream>
#include <fstream>
#include <cstring>
#include <memory>
#include <csignal>
#include "Fireworks/Core/src/CmsShowMain.h"
#include "Fireworks/Core/interface/fwPaths.h"
#include "FWCore/MessageLogger/interface/AbstractMLscribe.h"
#include "FWCore/MessageLogger/interface/ErrorObj.h"
#include "FWCore/MessageLogger/interface/MessageLoggerQ.h"
#include "FWCore/MessageLogger/interface/MessageDrop.h"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 
void run_app (TApplication &app, int argc, char **argv)
 

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 118 of file cmsShow.cc.

118  {
119  const char* dummyArgvArray[] = {"cmsShow"};
120  char** dummyArgv = const_cast<char**>(dummyArgvArray);
121  int dummyArgc = 1;
122  gEnv->SetValue("Gui.BackgroundColor", "#9f9f9f");
123 
124  // print version
125  TString infoText;
126  if (gSystem->Getenv("CMSSW_VERSION")) {
127  infoText = gSystem->Getenv("CMSSW_VERSION");
128  } else {
129  TString infoFileName("data/version.txt");
130  fireworks::setPath(infoFileName);
131  std::ifstream infoFile(infoFileName);
132  infoText.ReadLine(infoFile);
133  infoFile.close();
134  }
135  printf("Starting cmsShow, version %s.\n", infoText.Data());
136  fflush(stdout);
137 
138  // check root interactive promp
139  bool isri = false;
140  for (Int_t i = 0; i < argc; i++) {
141  if (strncmp(argv[i], "-r", 2) == 0 || strncmp(argv[i], "--root", 6) == 0) {
142  isri = true;
143  }
144  }
145 
146  try {
147  if (isri) {
148  std::cerr << "" << std::endl;
149  std::cerr << "WARNING:You are running cmsShow with ROOT prompt enabled." << std::endl;
150  std::cerr << "If you encounter an issue you suspect to be a bug in " << std::endl;
151  std::cerr << "cmsShow, please re-run without this option and try to " << std::endl;
152  std::cerr << "reproduce it before submitting a bug-report. " << std::endl;
153  std::cerr << "" << std::endl;
154 
155  TRint app("cmsShow", &dummyArgc, dummyArgv);
156  run_app(app, argc, argv);
157  } else {
158  TApplication app("cmsShow", &dummyArgc, dummyArgv);
159  run_app(app, argc, argv);
160  }
161  } catch (std::exception& iException) {
162  std::cerr << "CmsShow unhandled exception " << iException.what() << std::endl;
163  return 1;
164  }
165 
166  return 0;
167 }

References dir2webdir::argc, cmsBatch::argv, EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::cerr, cppFunctionSkipper::exception, mps_fire::i, run_app(), fireworks::setPath(), and mps_setup::stdout.

◆ run_app()

void run_app ( TApplication &  app,
int  argc,
char **  argv 
)

Definition at line 82 of file cmsShow.cc.

82  {
83  //Remove when FWLite handles the MessageLogger
85  std::shared_ptr<edm::service::AbstractMLscribe>(std::make_shared<SilentMLscribe>()));
87  //---------------------
88  std::unique_ptr<CmsShowMain> pMain(new CmsShowMain(argc, argv));
89 
90  // Avoid haing root handling various associated to an error and install
91  // back the default ones.
92  gSystem->ResetSignal(kSigBus);
93  gSystem->ResetSignal(kSigSegmentationViolation);
94  gSystem->ResetSignal(kSigIllegalInstruction);
95  gSystem->ResetSignal(kSigSystem);
96  gSystem->ResetSignal(kSigPipe);
97  gSystem->ResetSignal(kSigFloatingException);
98 
99  struct sigaction sac;
100  sac.sa_sigaction = signal_handler_wrapper;
101  sigemptyset(&sac.sa_mask);
102  sac.sa_flags = SA_SIGINFO;
103  sigaction(SIGILL, &sac, nullptr);
104  sigaction(SIGSEGV, &sac, nullptr);
105  sigaction(SIGBUS, &sac, nullptr);
106  sigaction(SIGFPE, &sac, nullptr);
107 
108  app.Run();
109  pMain.reset();
110 
111  TEveManager::Terminate();
112  app.Terminate();
113 
114  //Remove when FWLite handled the MessageLogger
116 }

References dir2webdir::argc, cmsBatch::argv, edm::MessageDrop::instance(), edm::MessageDrop::messageLoggerScribeIsRunning, edm::MessageLoggerQ::MLqEND(), edm::MLSCRIBE_RUNNING_INDICATOR, and edm::MessageLoggerQ::setMLscribe_ptr().

Referenced by main().

cmsBatch.argv
argv
Definition: cmsBatch.py:279
mps_fire.i
i
Definition: mps_fire.py:428
edm::MLSCRIBE_RUNNING_INDICATOR
static const unsigned char MLSCRIBE_RUNNING_INDICATOR
Definition: MessageDrop.h:83
dir2webdir.argc
argc
Definition: dir2webdir.py:39
CmsShowMain
Definition: CmsShowMain.h:58
edm::MessageLoggerQ::setMLscribe_ptr
static void setMLscribe_ptr(std::shared_ptr< edm::service::AbstractMLscribe > m)
Definition: MessageLoggerQ.cc:124
edm::MessageDrop::messageLoggerScribeIsRunning
static unsigned char messageLoggerScribeIsRunning
Definition: MessageDrop.h:70
cppFunctionSkipper.exception
exception
Definition: cppFunctionSkipper.py:10
mps_setup.stdout
stdout
Definition: mps_setup.py:250
run_app
void run_app(TApplication &app, int argc, char **argv)
Definition: cmsShow.cc:82
edm::MessageDrop::instance
static MessageDrop * instance()
Definition: MessageDrop.cc:33
edm::MessageLoggerQ::MLqEND
static void MLqEND()
Definition: MessageLoggerQ.cc:152
EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.cerr
cerr
Definition: EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.py:8
fireworks::setPath
void setPath(TString &v)
Definition: fwPaths.cc:15