BmnRoot
Loading...
Searching...
No Matches
BmnQaBase.cxx
Go to the documentation of this file.
1
9#include "BmnQaBase.h"
10
12#include "BmnDchHit.h"
13#include "BmnDchTrack.h"
14#include "BmnEnums.h"
15#include "BmnGemStripHit.h"
16#include "BmnGemTrack.h"
17#include "BmnGlobalTrack.h"
18#include "BmnHistManager.h"
19#include "BmnMCPoint.h"
20#include "BmnMatch.h"
21#include "BmnMath.h"
22#include "BmnSiliconHit.h"
23#include "BmnSiliconPoint.h"
24#include "BmnTrackMatch.h"
25#include "BmnUtils.h"
26#include "BmnVertex.h"
27#include "CbmBaseHit.h"
28#include "CbmGlobalTrack.h"
29#include "CbmMCTrack.h"
30#include "CbmStsPoint.h"
31#include "CbmStsTrack.h"
32#include "CbmTofHit.h"
33#include "FairMCEventHeader.h"
34#include "FairMCPoint.h"
35#include "FairRunAna.h"
36#include "TClonesArray.h"
37#include "TF1.h"
38#include "TFitResult.h"
39#include "TH1.h"
40#include "TH2F.h"
41
42#include <fstream>
43#include <iostream>
44
45using namespace std;
46using namespace TMath;
48using lit::Split;
49
50BmnQaBase::BmnQaBase(const char* name, Int_t iVerbose)
51 : FairTask(name, iVerbose)
52 , fServer(nullptr)
53 , fOutName(name)
54 , fHM(nullptr)
55 , fOutputDir("./")
56 , fReport(nullptr)
57 , fMonitorMode(kFALSE)
58 , fRunId(0)
59 , fPrevRunId(0)
60 , fEventNo(0)
61 , fEventId(0)
62 , fNItersSinceUpdate(0)
63{}
64
66{
67 printf("~BmnQaBase()\n");
68 if (fHM)
69 delete fHM;
70 if (fReport)
71 delete fReport;
72}
73
74InitStatus BmnQaBase::Init()
75{
76 fHM = new BmnHistManager();
79 if (fMonitorMode) {
84 fTicksLastUpdate = chrono::system_clock::now();
86 fReport->Register("/");
87 // fServer->SetTimer(50, kFALSE);
88 } else {
89 }
90 return kSUCCESS;
91}
92
93void BmnQaBase::Exec(Option_t* opt)
94{
95 if (fEventNo % 100 == 0)
96 printf("Event: %d\n", fEventNo);
97 fEventNo++;
98 // Increase event counter
99 fHM->H1("hen_EventNo_TrackingQa")->Fill(0.5);
102 if (fMonitorMode) {
104 // fServer->ProcessRequests();
105 gSystem->ProcessEvents();
106 chrono::time_point<chrono::system_clock> now = chrono::system_clock::now();
107 chrono::seconds time = chrono::duration_cast<chrono::seconds>(now - fTicksLastUpdate);
108 time_t tt = chrono::system_clock::to_time_t(now);
109 printf("\ntime %s\n", ctime(&tt));
111 fReport->CallDraw();
112 printf("\n\nDraw! iters %d\n\n", fNItersSinceUpdate);
113 fTicksLastUpdate = now;
115 }
116 }
117}
118
120{
121 fHM->WriteToFile();
122 if (!fMonitorMode) {
125 }
126}
127
129{
130 FairRootManager* ioman = FairRootManager::Instance();
131 if (nullptr == ioman)
132 Fatal("Init", "BmnRootManager is not instantiated");
133 printf("\nBRANCHES READ!\n\n");
134}
135
137{
138 // FairMCEventHeader* evHead = (FairMCEventHeader*)FairRootManager::Instance()->GetObject("MCEventHeader.");
139 // fHM->H1("Impact parameter")->Fill(evHead->GetB());
140 // fHM->H1("Multiplicity")->Fill(evHead->GetNPrim());
141 // fHM->H2("Impact_Mult")->Fill(evHead->GetB(), evHead->GetNPrim());
142}
143
144void BmnQaBase::CreateH1(const string& name,
145 const string& xTitle,
146 const string& yTitle,
147 Int_t nofBins,
148 Double_t minBin,
149 Double_t maxBin)
150{
151 TH1F* h = new TH1F(name.c_str(), string(name + ";" + xTitle + ";" + yTitle).c_str(), nofBins, minBin, maxBin);
152 fHM->Add(name, h);
153}
154
155void BmnQaBase::CreateH2(const string& name,
156 const string& xTitle,
157 const string& yTitle,
158 const string& zTitle,
159 Int_t nofBinsX,
160 Double_t minBinX,
161 Double_t maxBinX,
162 Int_t nofBinsY,
163 Double_t minBinY,
164 Double_t maxBinY)
165{
166 TH2F* h = new TH2F(name.c_str(), (name + ";" + xTitle + ";" + yTitle + ";" + zTitle).c_str(), nofBinsX, minBinX,
167 maxBinX, nofBinsY, minBinY, maxBinY);
168 fHM->Add(name, h);
169}
170
171void BmnQaBase::FillStripHits(DetectorId detId, TClonesArray* hits)
172{
173 TString detName;
175 for (Int_t iHit = 0; iHit < hits->GetEntriesFast(); ++iHit) {
176 BmnHit* hit = static_cast<BmnHit*>(hits->At(iHit));
177 if (hit->IsPseudo())
178 continue;
179 Short_t iSt = hit->GetStation();
180 // if (detId==kCSC)
181 // printf("hit! station %d {%2.3f, %2.3f}\n", iSt, hit->GetX(), hit->GetY());
182 fHM->H2(BmnSimulationReport::HistNameHits(detName, iSt))->Fill(hit->GetX(), hit->GetY());
183 }
184}
185
186//
187//
188// void BmnQaBase::CreateHistograms() {
189//
190//
191// printf("\nHISTOGRAMS CREATED!\n\n");
192//
193//}
194//
195// void BmnQaBase::ProcessGlobal() {
196//}
Global function to define the track acceptance. Used in QA.
Monte-Carlo point.
FairTask for tracking performance calculation.
DetectorId
static void GetSystemNameCaps(DetectorId det, TString &name)
Histogram manager.
void Add(const TString &name, TNamed *object)
Add new named object to manager.
TH2 * H2(const TString &name) const
Return pointer to TH2 histogram.
void WriteToFile()
Write all histograms to current opened file.
TH1 * H1(const TString &name) const
Return pointer to TH1 histogram.
Bool_t IsPseudo()
Definition BmnHit.h:145
Short_t GetStation() const
Definition BmnHit.h:45
Bool_t fMonitorMode
Definition BmnQaBase.h:157
chrono::time_point< chrono::system_clock > fTicksLastUpdate
Definition BmnQaBase.h:167
virtual ~BmnQaBase()
Destructor.
Definition BmnQaBase.cxx:65
virtual void Finish()
Derived from FairTask.
virtual void ProcessGlobal()=0
BmnQaBase()
Constructor.
Definition BmnQaBase.h:39
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
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 FillStripHits(DetectorId detId, TClonesArray *hits)
virtual void CreateHistograms()=0
virtual InitStatus Init()
Derived from FairTask.
Definition BmnQaBase.cxx:74
virtual void ReadEventHeader()
BmnHistManager * fHM
Definition BmnQaBase.h:152
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
void SetMonitorMode(const Bool_t mm)
Definition BmnReport.h:69
void CallDraw()
Definition BmnReport.h:53
void SetObjServer(THttpServer *s)
Definition BmnReport.h:70
void Register(string path)
static char * HistNameHits(string detName, Short_t iSt)
void SetHM(BmnHistManager *hm)
void Create(BmnHistManager *histManager, const string &outputDir)
Main function which creates report data.
Create report for tracking QA.
string FindAndReplace(const string &name, const string &oldSubstr, const string &newSubstr)
Definition BmnUtils.cxx:20
vector< string > Split(const string &name, char delimiter)
Definition BmnUtils.cxx:27
STL namespace.