]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MONITOR/AliMonitorProcess.h
Include cstdlib (gcc 4.3.0)
[u/mrichter/AliRoot.git] / MONITOR / AliMonitorProcess.h
1 #ifndef ALIMONITORPROCESS_H
2 #define ALIMONITORPROCESS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 class TFile;
9 class TFolder;
10 class TGrid;
11 class TServerSocket;
12 class TSocket;
13 class TTimer;
14 class TTree;
15
16 #include <TObjArray.h>
17 #include <TObject.h>
18 #include <TString.h>
19 #include <TSystem.h>
20
21 class AliESDEvent;
22 class AliITSgeom;
23 class AliRawReader;
24 class AliRunLoader;
25 class AliTPCParam;
26 class AliLevel3;
27 class AliHLTHough;
28
29
30 class AliMonitorProcess : public TObject {
31 public:
32   AliMonitorProcess(const char* alienHost,
33                     const char* alienDir,
34                     const char* selection = "ALL",
35                     const char* fileNameGalice = "galice.root");
36   virtual ~AliMonitorProcess();
37
38   static const char* GetRevision();
39
40   void             Run();
41   void             Stop();
42   void             Reset();
43
44   void             ProcessFile(const char* fileName);
45
46   UInt_t           GetRunNumber() const {return fRunNumber;};
47   UInt_t           GetEventPeriodNumber() const;
48   UInt_t           GetEventOrbitNumber() const;
49   UInt_t           GetEventBunchNumber() const;
50
51   enum EStatus     {kStopped, kWaiting, kReading, kRecTPC, kRecITS, kRecV0s,
52                     kRecHLT, kFilling, kUpdating, kWriting, kResetting, 
53                     kConnecting, kBroadcasting};
54   EStatus          GetStatus() const 
55     {gSystem->ProcessEvents(); return fStatus;};
56   Bool_t           WillStop() const {return fStopping;};
57   Bool_t           IsStopped() const {return (fStatus == kStopped);};
58
59   Int_t            GetNumberOfEvents() const {return fNEvents;};
60   Int_t            GetNumberOfClients() const 
61     {return fSockets.GetEntriesFast();};
62   TObjArray*       GetListOfClients() {return &fSockets;};
63   Int_t            GetNEventsMin() const {return fNEventsMin;};
64   void             SetNEventsMin(Int_t nEventsMin) {fNEventsMin = nEventsMin;};
65   void             SetWriteHistoList(Bool_t writeHistoList = kTRUE) 
66                                          {fWriteHistoList = writeHistoList;};
67
68   static Int_t     GetPort() {return fgkPort;};
69   
70 private:
71   AliMonitorProcess(const AliMonitorProcess& process);
72   AliMonitorProcess& operator = (const AliMonitorProcess& process);
73
74   Bool_t           CheckForNewFile();
75   Bool_t           ProcessFile();
76   Int_t            GetNumberOfEvents(const char* fileName) const;
77   Bool_t           ReconstructTPC(AliRawReader* rawReader, AliESDEvent* esd);
78   Bool_t           ReconstructITS(AliRawReader* rawReader, AliESDEvent* esd);
79   Bool_t           ReconstructV0s(AliESDEvent* esd);
80 #ifdef ENABLE_ALIMONITORPROCESS_HLT
81   void             CreateHLT(const char* fileName);
82   void             CreateHLTHough(const char* fileName);
83   Bool_t           ReconstructHLT(Int_t iEvent);
84   Bool_t           ReconstructHLTHough(Int_t iEvent);
85 #endif // ENABLE_ALIMONITORPROCESS_HLT
86
87   Bool_t           WriteHistos();
88   void             StartNewRun();
89
90   void             CheckForConnections();
91   void             BroadcastHistos(TSocket* toSocket = NULL);
92   void             SetStatus(EStatus status);
93   Bool_t           IsSelected(const char* name) const
94     {return (fSelection.Contains(name) || fSelection.Contains("ALL"));}
95
96   static const Int_t fgkPort;          // port number for client connections
97
98   TString          fSelection;          // selection of monitor histograms
99   TGrid*           fGrid;               // pointer to AliEn
100   TString          fAlienDir;           // name of alien directory
101   AliRunLoader*    fRunLoader;          // the current run loader
102   AliTPCParam*     fTPCParam;           // TPC parameters
103   AliITSgeom*      fITSgeom;            // ITS parameters
104   TString          fLogicalFileName;    // logical AliEn file name
105   TString          fFileName;           // physical file name
106   AliLevel3*       fHLT;                // the HLT tracker
107   AliHLTHough*      fHLTHough;           // the HLT hough transformer
108
109
110   UInt_t           fRunNumber;          // current run number
111   UInt_t           fSubRunNumber;       // current part (=resets per run)
112   UInt_t           fEventNumber[2];     // current event number
113   Int_t            fNEvents;            // total number of monitored events
114   Int_t            fNEventsMin;         // threshold for writing
115   Bool_t           fWriteHistoList;     // write event histos or not
116
117   TFolder*         fTopFolder;          // folder with histos
118   TObjArray        fMonitors;           // array of monitor objects
119   TFile*           fFile;               // file with tree
120   TTree*           fTree;               // monitor tree
121
122   TServerSocket*   fServerSocket;       // socket for client connections
123   TObjArray        fSockets;            // array of client sockets
124   TSocket*         fDisplaySocket;      // socket for an event display
125
126   EStatus          fStatus;             // current status
127   Bool_t           fStopping;           // stop of process requested or not
128
129   class AliMonitorInterruptHandler : public TSignalHandler {
130   public:
131     AliMonitorInterruptHandler(AliMonitorProcess* process);
132     virtual ~AliMonitorInterruptHandler() {};
133     virtual Bool_t Notify();
134   private:
135     AliMonitorProcess* fProcess;       // process to notify
136
137     AliMonitorInterruptHandler(const AliMonitorInterruptHandler& handler); // Not implemented
138     AliMonitorInterruptHandler& operator = 
139       (const AliMonitorInterruptHandler& handler); // Not implemented
140
141   };
142
143   AliMonitorInterruptHandler* fInterruptHandler;  // interrupt handler
144
145   ClassDef(AliMonitorProcess, 0)   // class for performing the monitoring
146 };
147  
148
149 #endif
150
151
152
153
154
155
156
157
158