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 */
16 #include <TObjArray.h>
32 class AliMonitorProcess : public TObject {
34 AliMonitorProcess(const char* alienHost,
36 const char* fileNameGalice = "galice.root");
37 AliMonitorProcess(const AliMonitorProcess& process);
38 AliMonitorProcess& operator = (const AliMonitorProcess& process);
39 virtual ~AliMonitorProcess();
41 static const char* GetRevision();
47 void ProcessFile(const char* fileName);
49 UInt_t GetRunNumber() const {return fRunNumber;};
50 UInt_t GetEventPeriodNumber() const;
51 UInt_t GetEventOrbitNumber() const;
52 UInt_t GetEventBunchNumber() const;
54 enum EStatus {kStopped, kWaiting, kReading, kRecTPC, kRecITS, kRecV0s,
55 kRecHLT, kFilling, kUpdating, kWriting, kResetting,
56 kConnecting, kBroadcasting};
57 EStatus GetStatus() const
58 {gSystem->ProcessEvents(); return fStatus;};
59 Bool_t WillStop() const {return fStopping;};
60 Bool_t IsStopped() const {return (fStatus == kStopped);};
62 Int_t GetNumberOfEvents() const {return fNEvents;};
63 Int_t GetNumberOfClients() const
64 {return fSockets.GetEntriesFast();};
65 TObjArray* GetListOfClients() {return &fSockets;};
66 Int_t GetNEventsMin() const {return fNEventsMin;};
67 void SetNEventsMin(Int_t nEventsMin) {fNEventsMin = nEventsMin;};
68 void SetWriteHistoList(Bool_t writeHistoList = kTRUE)
69 {fWriteHistoList = writeHistoList;};
71 static Int_t GetPort() {return fgkPort;};
74 Bool_t CheckForNewFile();
76 Int_t GetNumberOfEvents(const char* fileName) const;
77 Bool_t ReconstructTPC(AliRawReader* rawReader, AliESD* esd);
78 Bool_t ReconstructITS(AliRawReader* rawReader, AliESD* esd);
79 Bool_t ReconstructV0s(AliESD* esd);
81 void CreateHLT(const char* fileName);
82 void CreateHLTHough(const char* fileName);
84 Bool_t ReconstructHLT(Int_t iEvent);
85 Bool_t ReconstructHLTHough(Int_t iEvent);
90 void CheckForConnections();
91 void BroadcastHistos(TSocket* toSocket = NULL);
92 void SetStatus(EStatus status);
94 static const Int_t fgkPort; // port number for client connections
96 TGrid* fGrid; // pointer to AliEn
97 TString fAlienDir; // name of alien directory
98 AliRunLoader* fRunLoader; // the current run loader
99 AliTPCParam* fTPCParam; // TPC parameters
100 AliITSgeom* fITSgeom; // ITS parameters
101 TString fLogicalFileName; // logical AliEn file name
102 TString fFileName; // physical file name
104 AliLevel3* fHLT; // the HLT tracker
105 AliL3Hough* fHLTHough; // the HLT hough transformer
108 UInt_t fRunNumber; // current run number
109 UInt_t fSubRunNumber; // current part (=resets per run)
110 UInt_t fEventNumber[2]; // current event number
111 Int_t fNEvents; // total number of monitored events
112 Int_t fNEventsMin; // threshold for writing
113 Bool_t fWriteHistoList; // write event histos or not
115 TFolder* fTopFolder; // folder with histos
116 TObjArray fMonitors; // array of monitor objects
117 TFile* fFile; // file with tree
118 TTree* fTree; // monitor tree
120 TServerSocket* fServerSocket; // socket for client connections
121 TObjArray fSockets; // array of client sockets
122 TSocket* fDisplaySocket; // socket for an event display
124 EStatus fStatus; // current status
125 Bool_t fStopping; // stop of process requested or not
127 class AliMonitorInterruptHandler : public TSignalHandler {
129 AliMonitorInterruptHandler(AliMonitorProcess* process);
130 AliMonitorInterruptHandler(const AliMonitorInterruptHandler& handler);
131 AliMonitorInterruptHandler& operator =
132 (const AliMonitorInterruptHandler& handler);
133 virtual ~AliMonitorInterruptHandler() {};
134 virtual Bool_t Notify();
136 AliMonitorProcess* fProcess; // process to notify
139 AliMonitorInterruptHandler* fInterruptHandler; // interrupt handler
141 ClassDef(AliMonitorProcess, 0) // class for performing the monitoring