]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MONITOR/AliOnlineReco.h
patch for not checking the number of connections when running proof lite (M.Vala)
[u/mrichter/AliRoot.git] / MONITOR / AliOnlineReco.h
1 // @(#)root/eve:$Id$
2 // Author: Matevz Tadel 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 #ifndef ALIONLINERECO_H
11 #define ALIONLINERECO_H
12
13 #include "TObject.h"
14 #include "TString.h"
15 #include <TGFrame.h>
16
17 #include <map>
18
19 class AliDimIntNotifier;
20
21 class TTimer;
22
23 class TGTextButton;
24 class TGCheckButton;
25 class TGListBox;
26
27 //______________________________________________________________________________
28 // Short description of AliOnlineReco
29 //
30
31
32 class AliOnlineReco : public TGMainFrame
33 {
34 public:
35   AliOnlineReco();
36   virtual ~AliOnlineReco();
37
38   AliDimIntNotifier* GetSOR(Int_t i) const { return fSOR[i]; }
39   AliDimIntNotifier* GetEOR(Int_t i) const { return fEOR[i]; }
40
41   Int_t  GetLastRun() const;
42
43   Bool_t GetAutoRunMode() const;
44   void   SetAutoRunMode(Bool_t ar);
45
46   void SetTestMode() { fTestMode = kTRUE; }
47
48   //------------------------------------------------------------------------------
49   // Handlers of DIM signals.
50   //------------------------------------------------------------------------------
51
52   void StartOfRun(Int_t run);
53   void EndOfRun(Int_t run);
54
55   //------------------------------------------------------------------------------
56   // Handlers of OS signals.
57   //------------------------------------------------------------------------------
58
59   void ChildProcTerm(Int_t pid, Int_t status);
60
61   //------------------------------------------------------------------------------
62   // Handlers of button signals.
63   //------------------------------------------------------------------------------
64
65   void DoAutoRun();
66   void DoStart();
67   void DoStop();
68   void DoExit();
69
70   virtual void CloseWindow();
71
72   Int_t RetrieveGRP(UInt_t run, TString &gdc);
73
74   // Things that should be private but have to be public for CINT.
75   void AutoRunTimerTimeout();
76
77 private:
78   AliOnlineReco(const AliOnlineReco&);            // Not implemented
79   AliOnlineReco& operator=(const AliOnlineReco&); // Not implemented
80
81   // GUI components.
82   TGListBox     *fRunList;    // List-box for listing current runs.
83   TGCheckButton *fAutoRun;    // Check-box toggling auto-run when a new run starts.
84   TGTextButton  *fStartButt;  // Start for selected run.
85   TGTextButton  *fStopButt;   // Stop for selected run.
86   TGTextButton  *fExitButt;   // Exit button.
87
88   // DIM interface. Could do without members and just leak them ...
89   AliDimIntNotifier *fSOR[5]; // DIM listeners for SOR.
90   AliDimIntNotifier *fEOR[5]; // DIM listeners for EOR.
91
92   // AutoRun state and timer
93   TTimer        *fAutoRunTimer;     // Timer for auto-run on new run.
94   Int_t          fAutoRunScheduled; // Run for which auto-run is scheduled.
95   Int_t          fAutoRunRunning;   // Run for which auto-run was executed.
96
97   // Run-state, process mngmnt
98   typedef std::map<Int_t, Int_t> mIntInt_t; // value should be struct { pid, state, ... };
99   typedef mIntInt_t::iterator    mIntInt_i;
100
101   mIntInt_t      fRun2PidMap;  // Map from run-number to process id.
102
103   Bool_t         fTestMode;    // Flag for test mode (run xclock instead of alieve).
104
105   mIntInt_i FindMapEntryByPid(Int_t pid);
106
107   void StartAliEve(mIntInt_i& mi);
108   void KillPid(Int_t pid);
109
110   void StartAutoRunTimer(Int_t run);
111   void StopAutoRunTimer();
112
113   ClassDef(AliOnlineReco, 0);
114 };
115
116 #endif