--- /dev/null
+// @(#)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 <sys/wait.h>
+
+//______________________________________________________________________________
+// 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);
+}
--- /dev/null
+// @(#)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
--- /dev/null
+// @(#)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();
+}
--- /dev/null
+// @(#)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 <TObject.h>
+#include <TQObject.h>
+
+#include <TMutex.h>
+#include <TCondition.h>
+#include <TTimer.h>
+
+#ifdef ALI_DIM
+#include <dic.hxx>
+#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
--- /dev/null
+// @(#)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 <TGListBox.h>
+#include <TGButton.h>
+
+#include <unistd.h>
+#include <signal.h>
+
+//______________________________________________________________________________
+// 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();
+}
--- /dev/null
+// @(#)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 <TGFrame.h>
+
+#include <map>
+
+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<Int_t, Int_t> 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
--- /dev/null
+// @(#)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 <TGButton.h>
+
+#include <TSystem.h>
+
+#include <cstdio>
+#include <cstdlib>
+
+
+//==============================================================================
+// 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");
+}
--- /dev/null
+// @(#)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 <TGFrame.h>
+
+//______________________________________________________________________________
+// 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
#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
--- /dev/null
+#include "AliDimIntNotifier.h"
+#include "AliOnlineReco.h"
+
+#include <TRint.h>
+
+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;
+}
--- /dev/null
+#include "AliTestChildProc.h"
+
+#include <TRint.h>
+#include <TSystem.h>
+
+#include <TGFrame.h>
+
+#include <cstdlib>
+
+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;
+}
--- /dev/null
+#-*- 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
--- /dev/null
+#-*- 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
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
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)))
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)))
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)