From c6d78c69939da49a77987e98cd062f7c55c25571 Mon Sep 17 00:00:00 2001 From: cvetan Date: Fri, 4 Sep 2009 16:18:30 +0000 Subject: [PATCH] Brand new GUI application for online display/reco by Matevz. --- MONITOR/AliChildReaper.cxx | 52 +++++++ MONITOR/AliChildReaper.h | 42 ++++++ MONITOR/AliDimIntNotifier.cxx | 99 +++++++++++++ MONITOR/AliDimIntNotifier.h | 72 +++++++++ MONITOR/AliOnlineReco.cxx | 254 ++++++++++++++++++++++++++++++++ MONITOR/AliOnlineReco.h | 89 +++++++++++ MONITOR/AliTestChildProc.cxx | 68 +++++++++ MONITOR/AliTestChildProc.h | 36 +++++ MONITOR/MONITORLinkDef.h | 7 +- MONITOR/alionlinemonitor.cxx | 31 ++++ MONITOR/alitestproc.cxx | 22 +++ MONITOR/binalionlinemonitor.pkg | 30 ++++ MONITOR/binalitestproc.pkg | 30 ++++ MONITOR/binderoot.pkg | 2 + MONITOR/binmonitorCheck.pkg | 12 +- MONITOR/binmonitorGDC.pkg | 12 +- MONITOR/libMONITOR.pkg | 3 +- 17 files changed, 857 insertions(+), 4 deletions(-) create mode 100644 MONITOR/AliChildReaper.cxx create mode 100644 MONITOR/AliChildReaper.h create mode 100644 MONITOR/AliDimIntNotifier.cxx create mode 100644 MONITOR/AliDimIntNotifier.h create mode 100644 MONITOR/AliOnlineReco.cxx create mode 100644 MONITOR/AliOnlineReco.h create mode 100644 MONITOR/AliTestChildProc.cxx create mode 100644 MONITOR/AliTestChildProc.h create mode 100644 MONITOR/alionlinemonitor.cxx create mode 100644 MONITOR/alitestproc.cxx create mode 100644 MONITOR/binalionlinemonitor.pkg create mode 100644 MONITOR/binalitestproc.pkg diff --git a/MONITOR/AliChildReaper.cxx b/MONITOR/AliChildReaper.cxx new file mode 100644 index 00000000000..8eb3f65c9a3 --- /dev/null +++ b/MONITOR/AliChildReaper.cxx @@ -0,0 +1,52 @@ +// @(#)root/eve:$Id$ +// Author: Matevz Tadel 2007 + +/************************************************************************** + * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * + * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * + * full copyright notice. * + **************************************************************************/ + +#include "AliChildReaper.h" + +#include + +//______________________________________________________________________________ +// Full description of AliChildReaper +// + +ClassImp(AliChildReaper) + +AliChildReaper* AliChildReaper::fgTheOne = 0; + +AliChildReaper* AliChildReaper::Instance() +{ + if (fgTheOne == 0) + fgTheOne = new AliChildReaper; + return fgTheOne; +} + +AliChildReaper::AliChildReaper() +{ + struct sigaction sac; + sac.sa_handler = sig_handler; + sigemptyset(&sac.sa_mask); + sac.sa_flags = 0; + sigaction(SIGCHLD, &sac, 0); +} + +void AliChildReaper::sig_handler(int /*sig*/) +{ + int status; + pid_t pid = wait(&status); + Instance()->ChildDeath(pid, status); +} + +void AliChildReaper::ChildDeath(Int_t pid, Int_t status) +{ + Long_t args[2]; + args[0] = (Long_t) pid; + args[1] = (Long_t) status; + + Emit("ChildDeath(Int_t,Int_t)", args); +} diff --git a/MONITOR/AliChildReaper.h b/MONITOR/AliChildReaper.h new file mode 100644 index 00000000000..036e6c61b11 --- /dev/null +++ b/MONITOR/AliChildReaper.h @@ -0,0 +1,42 @@ +// @(#)root/eve:$Id$ +// Author: Matevz Tadel 2007 + +/************************************************************************** + * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * + * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * + * full copyright notice. * + **************************************************************************/ + +#ifndef AliChildReaper_H +#define AliChildReaper_H + +#include "TObject.h" +#include "TQObject.h" + +//______________________________________________________________________________ +// Short description of AliChildReaper +// + +class AliChildReaper : public TObject, + public TQObject +{ +public: + void ChildDeath(Int_t pid, Int_t status); // *SIGNAL* + + static AliChildReaper* Instance(); + +private: + AliChildReaper(); + virtual ~AliChildReaper() {} + + AliChildReaper(const AliChildReaper&); // Not implemented + AliChildReaper& operator=(const AliChildReaper&); // Not implemented + + static void sig_handler(int sig); + + static AliChildReaper* fgTheOne; + + ClassDef(AliChildReaper, 0); +}; + +#endif diff --git a/MONITOR/AliDimIntNotifier.cxx b/MONITOR/AliDimIntNotifier.cxx new file mode 100644 index 00000000000..fc84831d345 --- /dev/null +++ b/MONITOR/AliDimIntNotifier.cxx @@ -0,0 +1,99 @@ +// @(#)root/eve:$Id$ +// Author: Matevz Tadel 2007 + +/************************************************************************** + * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * + * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * + * full copyright notice. * + **************************************************************************/ + +#include "AliDimIntNotifier.h" + + +//______________________________________________________________________________ +// Full description of AliDimIntNotifier +// + +ClassImp(AliDimIntNotifier) + +Long_t AliDimIntNotifier::fgMainThreadId = 0; + +void AliDimIntNotifier::SetMainThreadId() +{ + fgMainThreadId = TThread::SelfId(); +} + +AliDimIntNotifier::AliDimIntNotifier(const TString& service) : + DimUpdatedInfo(service, -1), + fNotifyLck(kTRUE), + fNotifyCnd(&fNotifyLck), + fLastMessage(-1) +{ + fReThreader.Connect("Timeout()", "AliDimIntNotifier", this, "DimMessage()"); +} + +void AliDimIntNotifier::StartTimer() +{ + fReThreader.Reset(); + fReThreader.TurnOn(); +} + +void AliDimIntNotifier::StopTimer() +{ + fReThreader.TurnOff(); +} + +void AliDimIntNotifier::infoHandler() +{ + // Handle DIM message + + fNotifyLck.Lock(); + fLastMessage = getData() ? getInt() : -1; + if (TThread::SelfId() != fgMainThreadId) + { + StartTimer(); + fNotifyCnd.Wait(); + } + else + { + Warning("infoHandler", "DIM message received from CINT thread."); + DimMessage(); + } + fNotifyLck.UnLock(); +} + +void AliDimIntNotifier::infoHandlerTest(Int_t fake) +{ + // Fake handler for testing. + + fNotifyLck.Lock(); + fLastMessage = fake; + if (TThread::SelfId() != fgMainThreadId) + { + StartTimer(); + fNotifyCnd.Wait(); + } + else + { + Warning("infoHandlerTest", "Was called from CINT thread ..."); + DimMessage(); + } + fNotifyLck.UnLock(); +} + +void AliDimIntNotifier::DimMessage(Int_t) +{ + StopTimer(); + if (fLastMessage != -1) + { + Emit("DimMessage(Int_t)", fLastMessage); + printf("Notify %d\n", fLastMessage); + } + else + { + printf("NOTNotify %d\n", fLastMessage); + } + fNotifyLck.Lock(); + fNotifyCnd.Signal(); + fNotifyLck.UnLock(); +} diff --git a/MONITOR/AliDimIntNotifier.h b/MONITOR/AliDimIntNotifier.h new file mode 100644 index 00000000000..8d2fc85fb9a --- /dev/null +++ b/MONITOR/AliDimIntNotifier.h @@ -0,0 +1,72 @@ +// @(#)root/eve:$Id$ +// Author: Matevz Tadel 2007 + +/************************************************************************** + * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * + * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * + * full copyright notice. * + **************************************************************************/ + +#ifndef AliDimIntNotifier_H +#define AliDimIntNotifier_H + +#include +#include + +#include +#include +#include + +#ifdef ALI_DIM +#include +#else +class DimUpdatedInfo +{ +public: + DimUpdatedInfo(const Char_t*, Int_t) {} + + Bool_t getData() { return kFALSE; } + Int_t getInt() { return -1; } +}; +#endif + +//______________________________________________________________________________ +// Short description of AliDimIntNotifier +// + +class AliDimIntNotifier : public TObject, + public TQObject, + public DimUpdatedInfo +{ +public: + + AliDimIntNotifier(const TString& service); + + virtual ~AliDimIntNotifier() {} + + void infoHandler(); + void infoHandlerTest(Int_t fake); + + void DimMessage(Int_t=-1); // *SIGNAL* + + static void SetMainThreadId(); + +private: + AliDimIntNotifier(const AliDimIntNotifier&); // Not implemented + AliDimIntNotifier& operator=(const AliDimIntNotifier&); // Not implemented + + void StartTimer(); + void StopTimer(); + + TTimer fReThreader; + TMutex fNotifyLck; + TCondition fNotifyCnd; + + Int_t fLastMessage; + + static Long_t fgMainThreadId; + + ClassDef(AliDimIntNotifier, 0); +}; + +#endif diff --git a/MONITOR/AliOnlineReco.cxx b/MONITOR/AliOnlineReco.cxx new file mode 100644 index 00000000000..b5f455326e6 --- /dev/null +++ b/MONITOR/AliOnlineReco.cxx @@ -0,0 +1,254 @@ +// @(#)root/eve:$Id$ +// Author: Matevz Tadel 2007 + +/************************************************************************** + * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * + * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * + * full copyright notice. * + **************************************************************************/ + +#include "AliOnlineReco.h" +#include "AliChildReaper.h" +#include "AliDimIntNotifier.h" + +#include +#include + +#include +#include + +//______________________________________________________________________________ +// Full description of AliOnlineReco +// + +ClassImp(AliOnlineReco) + +AliOnlineReco::AliOnlineReco() : + TGMainFrame(gClient->GetRoot(), 400, 400), + + fRunList(0), fStartButt(0), fStopButt(0), fXyzzButt(0), + + fSOR(new AliDimIntNotifier("/LOGBOOK/SUBSCRIBE/DAQ_SOR_PHYSICS")), + fEOR(new AliDimIntNotifier("/LOGBOOK/SUBSCRIBE/DAQ_EOR_PHYSICS")), + + fTestMode(kFALSE) +{ + // GUI components. + fRunList = new TGListBox(this); + AddFrame(fRunList, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY)); + + TGHorizontalFrame *hf = new TGHorizontalFrame(this, 1, 20); + + fStartButt = new TGTextButton(hf, "Start"); + hf->AddFrame(fStartButt, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY)); + fStartButt->Connect("Clicked()", "AliOnlineReco", this, "DoStart()"); + + fStopButt = new TGTextButton(hf, "Stop"); + hf->AddFrame(fStopButt, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY)); + fStopButt->Connect("Clicked()", "AliOnlineReco", this, "DoStop()"); + + fXyzzButt = new TGTextButton(hf, "Exit"); + hf->AddFrame(fXyzzButt, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY)); + fXyzzButt->Connect("Clicked()", "AliOnlineReco", this, "DoXyzz()"); + + AddFrame(hf, new TGLayoutHints(kLHintsNormal | kLHintsExpandX)); + + MapSubwindows(); + Layout(); + SetWindowName("Alice Online Reconstruction"); + + // DIM interface. + fSOR->Connect("DimMessage(Int_t)", "AliOnlineReco", this, "StartOfRun(Int_t)"); + fEOR->Connect("DimMessage(Int_t)", "AliOnlineReco", this, "EndOfRun(Int_t)"); + + // Signal handlers + // ROOT's TSignalHAndler works not SIGCHLD ... + AliChildReaper::Instance()->Connect("ChildDeath(Int_t,Int_t)", "AliOnlineReco", this, "ChildDeath(Int_t,Int_t)"); +} + +AliOnlineReco::mIntInt_i AliOnlineReco::FindMapEntryByPid(Int_t pid) +{ + for (mIntInt_i i = fRun2PidMap.begin(); i != fRun2PidMap.end(); ++i) + { + if (i->second == pid) + return i; + } + + return fRun2PidMap.end(); +} + +//------------------------------------------------------------------------------ +// Handlers of DIM signals. +//------------------------------------------------------------------------------ + +void AliOnlineReco::StartOfRun(Int_t run) +{ + mIntInt_i i = fRun2PidMap.find(run); + if (i == fRun2PidMap.end()) + { + fRun2PidMap[run] = 0; + fRunList->AddEntrySort(TString::Format("%d", run), run); + fRunList->Layout(); + } + else + { + Error("StartOfRun", "Run %d already registered.", run); + } +} + +void AliOnlineReco::EndOfRun(Int_t run) +{ + mIntInt_i i = fRun2PidMap.find(run); + if (i != fRun2PidMap.end()) + { + Int_t pid = i->second; + fRunList->RemoveEntry(run); + fRunList->Layout(); + fRun2PidMap.erase(i); + if (pid) + { + // Send terminate signal to process ... + if (fTestMode) + { + kill(pid, SIGTERM); + } + else + { + // alieve will auto-destruct on SIGUSR1 + kill(pid, SIGUSR1); + } + } + gClient->NeedRedraw(fRunList); + } + else + { + Error("EndOfRun", "Run %d not registered.", run); + } +} + +//------------------------------------------------------------------------------ +// Handlers of OS signals. +//------------------------------------------------------------------------------ + +void AliOnlineReco::ChildDeath(Int_t pid, Int_t status) +{ + printf("child death pid=%d, statues=%d...\n", pid, status); + + mIntInt_i i = FindMapEntryByPid(pid); + if (i != fRun2PidMap.end()) + { + Int_t run = i->first; + fRunList->RemoveEntry(run); + if (status == 0) + { + fRunList->AddEntrySort(TString::Format("%-20d -- FINISHED", run), run); + } + else + { + fRunList->AddEntrySort(TString::Format("%-20d -- CRASHED [%d]", run, status), run); + } + fRunList->Layout(); + i->second = 0; + } + else + { + Warning("ChildDeath", "Process with pid=%d not registered.", pid); + } +} + +//------------------------------------------------------------------------------ +// Handlers of button signals. +//------------------------------------------------------------------------------ + +void AliOnlineReco::DoStart() +{ + Int_t run = fRunList->GetSelected(); + mIntInt_i i = fRun2PidMap.find(run); + + if (i == fRun2PidMap.end()) + { + Error("DoStart", "no selection"); + return; + } + + if (i->second == 0) + { + pid_t pid = fork(); + if (pid == -1) + { + perror("DoStart -- Fork failed"); + return; + } + + if (pid) + { + i->second = pid; + fRunList->RemoveEntry(run); + fRunList->AddEntrySort(TString::Format("%-20d -- RUNNING", run), run); + fRunList->Layout(); + } + else + { + int s; + if (fTestMode) + { + s = execlp("alitestproc", "alitestproc", TString::Format("%d", run).Data(), (char*) 0); + } + else + { + // !!!! Cvetan, add proper args here ... + s = execlp("alieve", "alieve", TString::Format("%d", run).Data(), (char*) 0); + } + + if (s == -1) + { + perror("execlp failed - this will not end well"); + gSystem->Exit(1); + } + } + } + else + { + Error("DoStart", "Process already running."); + } +} + +void AliOnlineReco::DoStop() +{ + Int_t run = fRunList->GetSelected(); + mIntInt_i i = fRun2PidMap.find(run); + + if (i == fRun2PidMap.end()) + { + Error("DoStop", "no selection"); + return; + } + + Int_t pid = i->second; + if (pid) + { + if (fTestMode) + { + kill(pid, SIGTERM); + } + else + { + // alieve will auto-destruct on SIGUSR1 + kill(pid, SIGUSR1); + } + } + else + { + Error("DoStop", "Process not running."); + } +} + +void AliOnlineReco::DoXyzz() +{ + gSystem->ExitLoop(); +} + +void AliOnlineReco::CloseWindow() +{ + gSystem->ExitLoop(); +} diff --git a/MONITOR/AliOnlineReco.h b/MONITOR/AliOnlineReco.h new file mode 100644 index 00000000000..85e612a56d8 --- /dev/null +++ b/MONITOR/AliOnlineReco.h @@ -0,0 +1,89 @@ +// @(#)root/eve:$Id$ +// Author: Matevz Tadel 2007 + +/************************************************************************** + * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * + * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * + * full copyright notice. * + **************************************************************************/ + +#ifndef AliOnlineReco_H +#define AliOnlineReco_H + +#include "TObject.h" +#include + +#include + +class AliDimIntNotifier; + +class TGTextButton; +class TGListBox; + +//______________________________________________________________________________ +// Short description of AliOnlineReco +// + + +class AliOnlineReco : public TGMainFrame +{ +public: + AliOnlineReco(); + virtual ~AliOnlineReco() {} + + AliDimIntNotifier* GetSOR() const { return fSOR; } + AliDimIntNotifier* GetEOR() const { return fEOR; } + + void SetTestMode() { fTestMode = kTRUE; } + + //------------------------------------------------------------------------------ + // Handlers of DIM signals. + //------------------------------------------------------------------------------ + + void StartOfRun(Int_t run); + void EndOfRun(Int_t run); + + //------------------------------------------------------------------------------ + // Handlers of OS signals. + //------------------------------------------------------------------------------ + + void ChildDeath(Int_t pid, Int_t status); + + //------------------------------------------------------------------------------ + // Handlers of button signals. + //------------------------------------------------------------------------------ + + void DoStart(); + void DoStop(); + void DoXyzz(); + + virtual void CloseWindow(); + +private: + AliOnlineReco(const AliOnlineReco&); // Not implemented + AliOnlineReco& operator=(const AliOnlineReco&); // Not implemented + + // GUI components. + TGListBox *fRunList; + TGTextButton *fStartButt; + TGTextButton *fStopButt; + TGTextButton *fXyzzButt; + + // DIM interface. Could do without ... + AliDimIntNotifier *fSOR; + AliDimIntNotifier *fEOR; + + // Run-state, process mngmnt + typedef std::map mIntInt_t; // value should be struct { pid, state, ... }; + typedef mIntInt_t::iterator mIntInt_i; + + mIntInt_t fRun2PidMap; + + Bool_t fTestMode; + + mIntInt_i FindMapEntryByPid(Int_t pid); + + ClassDef(AliOnlineReco, 0); +}; + +#endif diff --git a/MONITOR/AliTestChildProc.cxx b/MONITOR/AliTestChildProc.cxx new file mode 100644 index 00000000000..ea1005b59e6 --- /dev/null +++ b/MONITOR/AliTestChildProc.cxx @@ -0,0 +1,68 @@ +// @(#)root/eve:$Id$ +// Author: Matevz Tadel 2007 + +/************************************************************************** + * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * + * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * + * full copyright notice. * + **************************************************************************/ + +#include "AliTestChildProc.h" + +#include + +#include + +#include +#include + + +//============================================================================== +// AliTestChildProc +//============================================================================== + +//______________________________________________________________________________ +// Full description of AliTestChildProc +// + +ClassImp(AliTestChildProc) + +AliTestChildProc::AliTestChildProc(Int_t run) : + TGMainFrame(gClient->GetRoot(), 400, 200) +{ + TGTextButton *b; + + b = new TGTextButton(this, "Exit"); + AddFrame(b, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY)); + b->Connect("Clicked()", "AliTestChildProc", this, "DoExit()"); + + b = new TGTextButton(this, "Crash"); + AddFrame(b, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY)); + b->Connect("Clicked()", "AliTestChildProc", this, "DoCrash()"); + + b = new TGTextButton(this, "Xyzz"); + AddFrame(b, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY)); + b->Connect("Clicked()", "AliTestChildProc", this, "DoXyzz()"); + + MapSubwindows(); + Layout(); + SetWindowName(TString::Format("Test window %d", run)); +} + +void AliTestChildProc::DoExit() +{ + printf("doing exit ...\n"); + gSystem->ExitLoop(); +} + +void AliTestChildProc::DoCrash() +{ + printf("doing crash ...\n"); + TObject *p = 0; + p->Dump(); +} + +void AliTestChildProc::DoXyzz() +{ + printf("doing xyzz ...\n"); +} diff --git a/MONITOR/AliTestChildProc.h b/MONITOR/AliTestChildProc.h new file mode 100644 index 00000000000..d4bb2cd18c0 --- /dev/null +++ b/MONITOR/AliTestChildProc.h @@ -0,0 +1,36 @@ +// @(#)root/eve:$Id$ +// Author: Matevz Tadel 2007 + +/************************************************************************** + * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * + * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * + * full copyright notice. * + **************************************************************************/ + +#ifndef AliTestChildProc_H +#define AliTestChildProc_H + +#include + +//______________________________________________________________________________ +// Short description of AliTestChildProc +// + +class AliTestChildProc : public TGMainFrame +{ + +public: + AliTestChildProc(Int_t run); + + void DoExit(); + void DoCrash(); + void DoXyzz(); + +private: + AliTestChildProc(const AliTestChildProc&); // Not implemented + AliTestChildProc& operator=(const AliTestChildProc&); // Not implemented + + ClassDef(AliTestChildProc, 0); +}; + +#endif diff --git a/MONITOR/MONITORLinkDef.h b/MONITOR/MONITORLinkDef.h index 93b6dbd7ae7..46e60d59216 100644 --- a/MONITOR/MONITORLinkDef.h +++ b/MONITOR/MONITORLinkDef.h @@ -31,5 +31,10 @@ #pragma link C++ class AliQADirListItem+; #pragma link C++ class AliOnlineRecoTrigger+; #pragma link C++ class TerminateSignalHandler+; -#endif +#pragma link C++ class AliDimIntNotifier+; +#pragma link C++ class AliChildReaper+; +#pragma link C++ class AliOnlineReco+; +#pragma link C++ class AliTestChildProc+; + +#endif diff --git a/MONITOR/alionlinemonitor.cxx b/MONITOR/alionlinemonitor.cxx new file mode 100644 index 00000000000..34a38bc560f --- /dev/null +++ b/MONITOR/alionlinemonitor.cxx @@ -0,0 +1,31 @@ +#include "AliDimIntNotifier.h" +#include "AliOnlineReco.h" + +#include + +int main(int argc, char **argv) +{ + AliDimIntNotifier::SetMainThreadId(); + + Bool_t test = argc > 1 && strcmp("-test", argv[1]) == 0; + + TRint app("App", &argc, argv); + + AliOnlineReco *win = new AliOnlineReco; + win->MapWindow(); + + if (test) + { + win->SetTestMode(); + + win->GetSOR()->infoHandlerTest(2214); + win->GetSOR()->infoHandlerTest(2215); + win->GetSOR()->infoHandlerTest(2224); + win->GetSOR()->infoHandlerTest(2244); + + printf("win = (AliOnlineReco*) 0x%lx\n", (unsigned long)win); + } + + app.Run(kTRUE); + return 0; +} diff --git a/MONITOR/alitestproc.cxx b/MONITOR/alitestproc.cxx new file mode 100644 index 00000000000..bdbb255484b --- /dev/null +++ b/MONITOR/alitestproc.cxx @@ -0,0 +1,22 @@ +#include "AliTestChildProc.h" + +#include +#include + +#include + +#include + +int main(int argc, char **argv) +{ + // Crash on SEGV. + gSystem->IgnoreSignal(kSigSegmentationViolation, true); + + TRint app("App", &argc, argv); + + TGMainFrame* mf = new AliTestChildProc(atoi(argv[1])); + mf->MapWindow(); + + app.Run(kTRUE); + return 0; +} diff --git a/MONITOR/binalionlinemonitor.pkg b/MONITOR/binalionlinemonitor.pkg new file mode 100644 index 00000000000..52d6513e8d0 --- /dev/null +++ b/MONITOR/binalionlinemonitor.pkg @@ -0,0 +1,30 @@ +#-*- Mode: Makefile -*- + +SRCS := alionlinemonitor.cxx + +EINCLUDE+= TPC ITS RAW + +PACKBLIBS := $(ROOTCLIBS) $(SYSLIBS) + +ELIBS:= MONITOR STEERBase ESD AOD CDB STEER RAWDatabase RAWDatarec RAWDatasim TPCbase TPCsim TPCrec ITSbase ITSsim ITSrec HLTbase MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONcalib MUONmapping MUONtrigger MUONevaluation MUONcore + +ifdef DATE_ROOT + +PACKBLIBS += $(shell date-config --monitorlibs) +ELIBSDIR:= + +EINCLUDE+= ${DATE_COMMON_DEFS} ${DATE_MONITOR_DIR} + +ifdef DIMDIR + +EINCLUDE += $(DIMDIR)/dim +ELIBS += dim +ELIBSDIR += $(DIMDIR)/$(ALICE_TARGET) + +endif + +endif + +ifneq (,$(findstring macosx,$(ALICE_TARGET))) +PACKLDFLAGS:=$(LDFLAGS) $(ELIBS:%=-Wl,-u,_G__cpp_setupG__%) +endif diff --git a/MONITOR/binalitestproc.pkg b/MONITOR/binalitestproc.pkg new file mode 100644 index 00000000000..f6988763cec --- /dev/null +++ b/MONITOR/binalitestproc.pkg @@ -0,0 +1,30 @@ +#-*- Mode: Makefile -*- + +SRCS := alitestproc.cxx + +EINCLUDE+= TPC ITS RAW + +PACKBLIBS := $(ROOTCLIBS) $(SYSLIBS) + +ELIBS:= MONITOR STEERBase ESD AOD CDB STEER RAWDatabase RAWDatarec RAWDatasim TPCbase TPCsim TPCrec ITSbase ITSsim ITSrec HLTbase MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONcalib MUONmapping MUONtrigger MUONevaluation MUONcore + +ifdef DATE_ROOT + +PACKBLIBS += $(shell date-config --monitorlibs) +ELIBSDIR:= + +EINCLUDE+= ${DATE_COMMON_DEFS} ${DATE_MONITOR_DIR} + +ifdef DIMDIR + +EINCLUDE += $(DIMDIR)/dim +ELIBS += dim +ELIBSDIR += $(DIMDIR)/$(ALICE_TARGET) + +endif + +endif + +ifneq (,$(findstring macosx,$(ALICE_TARGET))) +PACKLDFLAGS:=$(LDFLAGS) $(ELIBS:%=-Wl,-u,_G__cpp_setupG__%) +endif diff --git a/MONITOR/binderoot.pkg b/MONITOR/binderoot.pkg index 6e1cad84c35..d4f04762166 100644 --- a/MONITOR/binderoot.pkg +++ b/MONITOR/binderoot.pkg @@ -6,6 +6,8 @@ EINCLUDE+= TPC ITS RAW PACKBLIBS := $(ROOTCLIBS) $(SYSLIBS) +ELIBS:= MONITOR + SRCS += root2date.cxx ELIBSDIR:= ELIBS:=STEERBase ESD AOD CDB STEER RAWDatabase RAWDatarec RAWDatasim TPCbase TPCsim TPCrec HLTbase ITSbase ITSsim ITSrec MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONcalib MUONmapping MUONtrigger MUONevaluation MUONcore diff --git a/MONITOR/binmonitorCheck.pkg b/MONITOR/binmonitorCheck.pkg index abea878c7b5..43f2f113874 100644 --- a/MONITOR/binmonitorCheck.pkg +++ b/MONITOR/binmonitorCheck.pkg @@ -7,13 +7,23 @@ EINCLUDE+= TPC ITS RAW PACKBLIBS := $(ROOTCLIBS) $(SYSLIBS) +ELIBS:= MONITOR STEERBase ESD AOD CDB STEER RAWDatabase RAWDatarec RAWDatasim TPCbase TPCsim TPCrec ITSbase ITSsim ITSrec HLTbase MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONcalib MUONmapping MUONtrigger MUONevaluation MUONcore + ifdef DATE_ROOT PACKBLIBS += $(shell date-config --monitorlibs) ELIBSDIR:= -ELIBS:=STEERBase ESD AOD CDB STEER RAWDatabase RAWDatarec RAWDatasim TPCbase TPCsim TPCrec ITSbase ITSsim ITSrec HLTbase MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONcalib MUONmapping MUONtrigger MUONevaluation MUONcore + EINCLUDE+= ${DATE_COMMON_DEFS} ${DATE_MONITOR_DIR} +ifdef DIMDIR + +EINCLUDE += $(DIMDIR)/dim +ELIBS += dim +ELIBSDIR += $(DIMDIR)/$(ALICE_TARGET) + +endif + endif ifneq (,$(findstring macosx,$(ALICE_TARGET))) diff --git a/MONITOR/binmonitorGDC.pkg b/MONITOR/binmonitorGDC.pkg index b86f6931db3..8bf1660cc94 100644 --- a/MONITOR/binmonitorGDC.pkg +++ b/MONITOR/binmonitorGDC.pkg @@ -7,13 +7,23 @@ EINCLUDE+= TPC ITS RAW PACKBLIBS := $(ROOTCLIBS) $(SYSLIBS) +ELIBS:= MONITOR STEERBase ESD AOD CDB STEER RAWDatabase RAWDatarec RAWDatasim TPCbase TPCsim TPCrec HLTbase ITSbase ITSsim ITSrec MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONcalib MUONmapping MUONtrigger MUONevaluation MUONcore + ifdef DATE_ROOT PACKBLIBS += $(shell date-config --monitorlibs) ELIBSDIR:= -ELIBS:=STEERBase ESD AOD CDB STEER RAWDatabase RAWDatarec RAWDatasim TPCbase TPCsim TPCrec HLTbase ITSbase ITSsim ITSrec MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONcalib MUONmapping MUONtrigger MUONevaluation MUONcore + EINCLUDE+= ${DATE_COMMON_DEFS} ${DATE_MONITOR_DIR} +ifdef DIMDIR + +EINCLUDE += $(DIMDIR)/dim +ELIBS += dim +ELIBSDIR += $(DIMDIR)/$(ALICE_TARGET) + +endif + endif ifneq (,$(findstring macosx,$(ALICE_TARGET))) diff --git a/MONITOR/libMONITOR.pkg b/MONITOR/libMONITOR.pkg index 86789510458..0494c1ce5cd 100644 --- a/MONITOR/libMONITOR.pkg +++ b/MONITOR/libMONITOR.pkg @@ -8,7 +8,8 @@ SRCS:= AliMonitorPlot.cxx AliMonitorHisto.cxx AliMonitorTrend.cxx \ AliMonitorProcess.cxx AliMonitorControl.cxx \ AliMonitorDialog.cxx AliMonitorClient.cxx \ AliQAHistNavigator.cxx AliQAHistViewer.cxx \ - AliOnlineRecoTrigger.cxx + AliOnlineRecoTrigger.cxx \ + AliDimIntNotifier.cxx AliChildReaper.cxx AliOnlineReco.cxx AliTestChildProc.cxx CINTHDRS:= $(SRCS:.cxx=.h) -- 2.39.3