FairRoot
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FairMonitor.h
Go to the documentation of this file.
1 /********************************************************************************
2  * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
8 
9 /*
10  * FairMonitor.h
11  *
12  * Created on: Aug 01, 2015
13  * Author: r.karabowicz
14  */
15 
16 #ifndef BASE_FAIRMONITOR_H_
17 #define BASE_FAIRMONITOR_H_
18 
19 #include <Rtypes.h>
20 #include <TNamed.h>
21 #include <TStopwatch.h>
22 #include <map>
23 
24 class TCanvas;
25 class TFile;
26 class TList;
27 class TTask;
28 
29 class FairMonitor : public TNamed
30 {
31  public:
32  static FairMonitor* GetMonitor();
33 
34  void EnableMonitor(Bool_t tempBool = kTRUE, TString fileName = "")
35  {
36  fRunMonitor = tempBool;
37  fOutputFileName = fileName;
38  }
39  void EnableDrawing(Bool_t tempBool = kTRUE) { fDrawCanvas = tempBool; }
40  Bool_t IsRunning() { return fRunMonitor; }
41 
42  void StartMonitoring(const TTask* tTask, const char* identStr)
43  {
44  StartTimer(tTask, identStr);
45  StartMemoryMonitor(tTask, identStr);
46  }
47  void StopMonitoring(const TTask* tTask, const char* identStr)
48  {
49  StopTimer(tTask, identStr);
50  StopMemoryMonitor(tTask, identStr);
51  }
52 
53  void StartTimer(const TTask* tTask, const char* identStr);
54  void StopTimer(const TTask* tTask, const char* identStr);
55 
56  void StartMemoryMonitor(const TTask* tTask, const char* identStr);
57  void StopMemoryMonitor(const TTask* tTask, const char* identStr);
58 
59  void RecordInfo(const TTask* tTask, const char* identStr, Double_t value);
60 
61  void RecordRegister(const char* name, const char* folderName, Bool_t toFile);
62  void RecordGetting(const char* name);
63 
64  void SetCurrentTask(TTask* tTask) { fCurrentTask = tTask; }
65 
66  virtual void Print(Option_t* option = "") const;
67  virtual void Draw(Option_t* option = "");
68 
69  void PrintTask(TString specString) const;
70  void PrintTask(TTask* tempTask, Int_t taskLevel = 0) const;
71  void DrawHist(TString specString);
72 
73  TList* GetHistList() { return fHistList; }
74 
75  void StoreHistograms(TFile* sinkFile);
76 
77  private:
78  static FairMonitor* instance;
79  FairMonitor();
80  ~FairMonitor();
81  FairMonitor(const FairMonitor&);
82  FairMonitor& operator=(const FairMonitor&);
83 
84  Bool_t fRunMonitor;
85  Bool_t fDrawCanvas;
86 
87  Double_t fRunTime;
88  Double_t fRunMem;
89 
90  std::map<TString, TStopwatch> fTimerMap;
91  std::map<TString, Int_t> fMemoryMap;
92 
93  TList* fHistList;
94  TCanvas* fCanvas;
95 
96  Int_t fNoTaskRequired;
97  Int_t fNoTaskCreated;
98 
99  TTask* fCurrentTask;
100 
101  TString fOutputFileName; // output file name, if empty then try to use FairSink to store histograms
102 
103  std::multimap<TString, TString> fTaskRequired;
104  std::multimap<TString, TString> fTaskCreated;
105  std::multimap<TString, TString> fTaskCreatedTemp;
106 
107  std::map<TString, Int_t> fObjectMap;
108  std::map<TString, Int_t> fTaskMap;
109 
110  std::map<TString, std::pair<Double_t, Double_t>> fObjectPos;
111  std::map<TString, std::pair<Double_t, Double_t>> fTaskPos;
112 
113  void GetTaskMap(TTask* tempTask);
114  void AnalyzeObjectMap(TTask* tempTask);
115 
116  ClassDef(FairMonitor, 0);
117 };
118 
119 extern FairMonitor* gMonitor;
120 
121 #endif // BASE_FAIRMONITOR_H_
void RecordInfo(const TTask *tTask, const char *identStr, Double_t value)
virtual void Print(Option_t *option="") const
void DrawHist(TString specString)
void SetCurrentTask(TTask *tTask)
Definition: FairMonitor.h:64
void EnableDrawing(Bool_t tempBool=kTRUE)
Definition: FairMonitor.h:39
void StartMemoryMonitor(const TTask *tTask, const char *identStr)
void StopTimer(const TTask *tTask, const char *identStr)
Definition: FairMonitor.cxx:89
TList * GetHistList()
Definition: FairMonitor.h:73
static FairMonitor * GetMonitor()
Definition: FairMonitor.cxx:66
FairMonitor * gMonitor
void RecordGetting(const char *name)
void StopMemoryMonitor(const TTask *tTask, const char *identStr)
void RecordRegister(const char *name, const char *folderName, Bool_t toFile)
void EnableMonitor(Bool_t tempBool=kTRUE, TString fileName="")
Definition: FairMonitor.h:34
void StartTimer(const TTask *tTask, const char *identStr)
Definition: FairMonitor.cxx:74
virtual void Draw(Option_t *option="")
void StopMonitoring(const TTask *tTask, const char *identStr)
Definition: FairMonitor.h:47
Bool_t IsRunning()
Definition: FairMonitor.h:40
void StoreHistograms(TFile *sinkFile)
void StartMonitoring(const TTask *tTask, const char *identStr)
Definition: FairMonitor.h:42
void PrintTask(TString specString) const