BmnRoot
Loading...
Searching...
No Matches
BmnQaBase.h
Go to the documentation of this file.
1
10#ifndef BMNQABASE_H_
11#define BMNQABASE_H_
12
13#include "BmnCSCStationSet.h"
15#include "BmnMCTrackCreator.h"
18#include "BmnVSPStationSet.h"
19#include "CbmVertex.h"
20#include "FairTask.h"
21
22#include <TSystem.h>
23#include <chrono>
24#include <time.h>
25
26class BmnHistManager;
27
28using std::string;
29
30class BmnQaBase : public FairTask
31{
32#define QA_COORD_BINS 250
33#define QA_COORD_INDENT_X 1
34#define QA_COORD_INDENT_Y 1
35 public:
40
44 BmnQaBase(const char* name, Int_t iVerbose);
45
49 virtual ~BmnQaBase();
50
54 virtual InitStatus Init();
55
59 virtual void Exec(Option_t* opt);
60
64 virtual void Finish();
65
66 void SetOutputDir(const std::string& dir) { fOutputDir = dir; }
67
68 void SetMonitorMode(const Bool_t mm) { fMonitorMode = mm; }
69
70 Bool_t GetMonitorMode() const { return fMonitorMode; }
71 void SetObjServer(THttpServer* s) { fServer = s; }
72 THttpServer* GetObjServer() const { return fServer; }
73
74 protected:
78 virtual void ReadDataBranches() = 0;
79
80 virtual void ReadEventHeader();
81
82 virtual void CreateHistograms() = 0;
83 virtual void ProcessGlobal() = 0;
84
85 void CreateH1(const string& name,
86 const string& xTitle,
87 const string& yTitle,
88 Int_t nofBins,
89 Double_t minBin,
90 Double_t maxBin);
91
92 void CreateH2(const string& name,
93 const string& xTitle,
94 const string& yTitle,
95 const string& zTitle,
96 Int_t nofBinsX,
97 Double_t minBinX,
98 Double_t maxBinX,
99 Int_t nofBinsY,
100 Double_t minBinY,
101 Double_t maxBinY);
102
103 template<typename SST>
104 void CreateStripDigiHists(SST& ss, DetectorId detId)
105 {
106 TString detName;
108 UInt_t sumMods(0);
109 UInt_t maxLayers(0);
110 UInt_t maxMods(0);
111 for (Short_t iSt = 0; iSt < ss->GetNStations(); ++iSt) {
112 auto* st = ss->GetStation(iSt);
113 sumMods += st->GetNModules();
114 if (maxMods < st->GetNModules())
115 maxMods = st->GetNModules();
116 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
117 auto* mod = st->GetModule(iModule);
118 if (maxLayers < mod->GetNStripLayers())
119 maxLayers = mod->GetNStripLayers();
120
121 for (Int_t iLayer = 0; iLayer < mod->GetNStripLayers(); iLayer++) {
122 auto& lay = mod->GetStripLayer(iLayer);
123 CreateH1(BmnSimulationReport::HistNameStripDigit(detName, iSt, iModule, iLayer), "Strip #", "Count",
124 "", lay.GetNStrips(), 0, lay.GetNStrips());
125 // BmnHist::SetHistStyleTH1(h);
126 }
127 }
128 }
129 }
130
131 void FillStripDigiHists(DetectorId detId, TClonesArray* hits);
132
133 template<typename SST>
134 void CreateStripHits(SST& ss, DetectorId detId)
135 {
136 TString detName;
138 for (Short_t iSt = 0; iSt < ss->GetNStations(); ++iSt) {
139 auto* st = ss->GetStation(iSt);
140 int32_t coord_bins = (ss->GetNStations() == 1) ? 400 : QA_COORD_BINS;
141 CreateH2(BmnSimulationReport::HistNameHits(detName, iSt), "x cm", "y cm", "", coord_bins,
142 -st->GetXMinStation() - QA_COORD_INDENT_X, -st->GetXMaxStation() + QA_COORD_INDENT_X, coord_bins,
143 st->GetYMinStation() - QA_COORD_INDENT_Y, st->GetYMaxStation() + QA_COORD_INDENT_Y);
144 }
145 }
146
147 void FillStripHits(DetectorId detId, TClonesArray* hits);
148
149 THttpServer* fServer;
150 TString fOutName;
151
152 BmnHistManager* fHM; // Histogram manager
153 string fOutputDir; // Output directory for results
154
156
158
159 UInt_t fRunId;
161 Int_t fEventNo; // event counter
162 Int_t fEventId; // event id
163
164 const Int_t fNItersToUpdate = 500;
165 const chrono::seconds fTimeToUpdate = chrono::seconds(5);
167 chrono::time_point<chrono::system_clock> fTicksLastUpdate;
168
169 BmnQaBase(const BmnQaBase&) = delete;
170 BmnQaBase& operator=(const BmnQaBase&) = delete;
171
173};
174
175#endif /* BMNQABASE_H_ */
#define QA_COORD_INDENT_Y
Definition BmnQaBase.h:34
#define QA_COORD_BINS
Definition BmnQaBase.h:32
#define QA_COORD_INDENT_X
Definition BmnQaBase.h:33
DetectorId
static void GetSystemNameCaps(DetectorId det, TString &name)
Histogram manager.
Bool_t fMonitorMode
Definition BmnQaBase.h:157
chrono::time_point< chrono::system_clock > fTicksLastUpdate
Definition BmnQaBase.h:167
UInt_t fRunId
Definition BmnQaBase.h:159
virtual ~BmnQaBase()
Destructor.
Definition BmnQaBase.cxx:65
void CreateStripHits(SST &ss, DetectorId detId)
Definition BmnQaBase.h:134
virtual void Finish()
Derived from FairTask.
virtual void ProcessGlobal()=0
Int_t fEventId
Definition BmnQaBase.h:162
void FillStripDigiHists(DetectorId detId, TClonesArray *hits)
BmnQaBase()
Constructor.
Definition BmnQaBase.h:39
void SetMonitorMode(const Bool_t mm)
Definition BmnQaBase.h:68
void SetOutputDir(const std::string &dir)
Definition BmnQaBase.h:66
BmnQaBase & operator=(const BmnQaBase &)=delete
void CreateH1(const string &name, const string &xTitle, const string &yTitle, Int_t nofBins, Double_t minBin, Double_t maxBin)
BmnSimulationReport * fReport
Definition BmnQaBase.h:155
void SetObjServer(THttpServer *s)
Definition BmnQaBase.h:71
virtual void Exec(Option_t *opt)
Derived from FairTask.
Definition BmnQaBase.cxx:93
const Int_t fNItersToUpdate
Definition BmnQaBase.h:164
void CreateH2(const string &name, const string &xTitle, const string &yTitle, const string &zTitle, Int_t nofBinsX, Double_t minBinX, Double_t maxBinX, Int_t nofBinsY, Double_t minBinY, Double_t maxBinY)
const chrono::seconds fTimeToUpdate
Definition BmnQaBase.h:165
TString fOutName
Definition BmnQaBase.h:150
string fOutputDir
Definition BmnQaBase.h:153
void CreateStripDigiHists(SST &ss, DetectorId detId)
Definition BmnQaBase.h:104
ClassDef(BmnQaBase, 1)
void FillStripHits(DetectorId detId, TClonesArray *hits)
virtual void CreateHistograms()=0
virtual InitStatus Init()
Derived from FairTask.
Definition BmnQaBase.cxx:74
virtual void ReadEventHeader()
BmnQaBase(const BmnQaBase &)=delete
Bool_t GetMonitorMode() const
Definition BmnQaBase.h:70
THttpServer * GetObjServer() const
Definition BmnQaBase.h:72
BmnHistManager * fHM
Definition BmnQaBase.h:152
UInt_t fPrevRunId
Definition BmnQaBase.h:160
THttpServer * fServer
Definition BmnQaBase.h:149
virtual void ReadDataBranches()=0
Read data branches from input data files.
Int_t fEventNo
Definition BmnQaBase.h:161
Int_t fNItersSinceUpdate
redraw each timeout seconds
Definition BmnQaBase.h:166
Base class for simulation reports.
static char * HistNameHits(string detName, Short_t iSt)
static char * HistNameStripDigit(TString &detName, Short_t iSt, Short_t iMod, Short_t iLayer)