BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
run_reco_bmn.cxx
Go to the documentation of this file.
1#if !defined(__CLING__) || defined(__MAKECLING__)
2// ROOT includes
3#include "TKey.h"
4#include "TList.h"
5#include "TPRegexp.h"
6#include "TROOT.h"
7#include "TRandom3.h"
8#include "TStopwatch.h"
9#include "TString.h"
10#include "TSystem.h"
11
12// Fair includes
13#include "FairCave.h"
14#include "FairField.h"
15#include "FairFileSource.h"
16#include "FairMagnet.h"
17#include "FairParAsciiFileIo.h"
18#include "FairParRootFileIo.h"
19#include "FairPipe.h"
20#include "FairRootFileSink.h"
21#include "FairRunAna.h"
22#include "FairRuntimeDb.h"
23#include "FairTask.h"
24#include "FairTrackParP.h"
25
26// BM@N includes
27#include "BmnBeamTracking.h"
28#include "BmnCSCHitMaker.h"
29#include "BmnCombineVertexFinder.h"
30#include "BmnDchHitProducer.h"
31#include "BmnDchTrackFinder.h"
32#include "BmnEventSelector.h"
33#include "BmnFHCalReconstructor.h"
34#include "BmnFieldMap.h"
35#include "BmnFileSource.h"
36#include "BmnFillDstTask.h"
37#include "BmnFillTrigInfoDst.h"
38#include "BmnFunctionSet.h"
39#include "BmnGemResiduals.h"
40#include "BmnGemStripHitMaker.h"
41#include "BmnGemTrack.h"
42#include "BmnGlobalTracking.h"
43#include "BmnHodoReconstructor.h"
45#include "BmnKFPrimaryVertexFinder.h"
46#include "BmnNewFieldMap.h"
47// #include "BmnLANDHitProducer.h"
48#include "BmnMatchRecoToMC.h"
49#include "BmnMwpcHitFinder.h"
50#include "BmnMwpcHitProducer.h"
51#include "BmnMwpcTrackFinder.h"
52#include "BmnNdetReconstructor.h"
53#include "BmnPid.h"
54#include "BmnScWallReconstructor.h"
55#include "BmnSiBTHitMaker.h"
56#include "BmnSiResiduals.h"
57#include "BmnSiliconHitMaker.h"
58#include "BmnStsMatchTracks.h"
59#include "BmnStsVectorFinder.h"
60#include "BmnToCbmHitConverter.h"
61#include "BmnTof1HitProducer.h"
62#include "BmnTof701HitProducer.h"
63#include "BmnTofHitProducer.h"
64#include "BmnVacWallReconstructor.h"
65#include "BmnVertexFinder.h"
66#include "BmnZdcAnalyzer.h"
67#include "CbmFindPrimaryVertex.h"
68#include "CbmKF.h"
69#include "CbmL1.h"
70#include "CbmL1StsTrackFinder.h"
71#include "CbmPVFinderKF.h"
72#include "CbmPrimaryVertexFinder.h"
73#include "CbmStsFindTracks.h"
74#include "CbmStsTrackFinder.h"
75#include "CentralityClusterizer.h"
76#include "DstEventHeader.h"
77#include "GeoSetup.h"
78#include "MpdGetNumEvents.h"
79#include "UniRun.h"
80
81#include <iostream>
82using namespace std;
83#endif
84
85// Macro for reconstruction of simulated and experimental BM@N events
86//
87// inFileName - input file with data (MC or exp. data)
88// dstFileName - output file with reconstructed data (full DST format)
89// nStartEvent - number of first event to process (starts with zero), default: 0
90// nEvents - number of events to process after nStartEvent, 0 - all events of the given file after nStartEvent to
91R__ADD_INCLUDE_PATH($VMCWORKDIR)
98
99void run_reco_bmn(TString inFileName = "$VMCWORKDIR/macro/run/bmnsim.root",
100 TString dstFileName = "$VMCWORKDIR/macro/run/bmndst.root",
101 Int_t nStartEvent = 0,
102 Int_t nEvents = 10,
103 enumTracking tracking = VectorFinder)
104{
105 gDebug = 0; // ROOT debug option
106 // Verbosity level (0 = summary only, 1 = event-level, 2 = track-level, 3 = full debug)
107 Int_t iVerbose = 0;
108 // Log level for LOG(severity): "fatal", "error", "alarm", "important", "warn", "state", "info", "detail", "debug",
109 // "debug[1-4]", "trace", "nolog"
110 FairLogger::GetLogger()->SetLogScreenLevel("info");
111
112 // ----- Timer ---------------------------------------------------------
113 TStopwatch timer;
114 timer.Start();
115
116 // check input file exists
117 if (!BmnFunctionSet::CheckFileExist(inFileName, 1))
118 exit(-1);
119
120 // ----- Reconstruction run --------------------------------------------
121 FairRunAna* fRunAna = new FairRunAna();
122 fRunAna->SetEventHeader(new DstEventHeader());
123
124 Bool_t isTarget = kTRUE; // flag for tracking (run with target or not)
125 Bool_t isExp = (BmnFunctionSet::isSimulationFile(inFileName)
126 == 0); // flag for FairRunAna tasks whether simulation or experimental data are used
127
128 // Declare input source as simulation file or experimental data
129 FairSource* fFileSource;
130
131 // -1 means use of the BM@N-setup when processing MC-input
132 // DO NOT change it manually!
133 Int_t run_period = 8, run_number = -1;
134 Double_t fieldScale = 0.;
135 if (!isExp) // for simulation files
136 fFileSource = new FairFileSource(inFileName);
137 else // for experimental files
138 {
139 // set source as raw root data file (without additional directories)
140 fFileSource = new BmnFileSource(inFileName, run_period, run_number);
141
142 // get geometry for run from the Geometry Database
143 GeoSetup gSetup;
144 string setupTag = gSetup.GetLastApprovedSetupTag(TString::Format("run%d", run_period).Data());
145 Int_t res_code = gSetup.LoadSetupToGeoManager(setupTag);
146 if (res_code != 0) {
147 cout << "ERROR: could not load geometry '" << setupTag << "' from the Geometry Database" << endl;
148 exit(-3);
149 }
150
151 // set magnet field with factor corresponding to the given run
152 UniRun* pCurrentRun = UniRun::GetRun(run_period, run_number);
153 if (pCurrentRun == 0)
154 exit(-6);
155 Double_t* field_voltage = pCurrentRun->GetFieldVoltage();
156 if (field_voltage == NULL) {
157 cout << "ERROR: no field voltage was found for run " << run_period << ":" << run_number << endl;
158 exit(-7);
159 }
160 Double_t map_current = (run_period == 8) ? 112.0 : (run_period == 7) ? 55.87 : 0.0;
161 if (*field_voltage < 10) {
162 fieldScale = 0;
163 } else
164 fieldScale = (*field_voltage) / map_current;
165
166 BmnFieldMap* magField = new BmnNewFieldMap("FieldMap_1900_extrap_noPed.root");
167 magField->SetScale(fieldScale);
168 magField->Init();
169 fRunAna->SetField(magField);
170 isExp = kTRUE;
171 TString targ = "-";
172 if (pCurrentRun->GetTargetParticle() == "") {
173 isTarget = kFALSE;
174 } else {
175 targ = pCurrentRun->GetTargetParticle();
176 isTarget = kTRUE;
177 }
178 TString beam = pCurrentRun->GetBeamParticle();
179 if (beam == "")
180 beam = "-";
181 cout << "\n\n|||||||||||||||| EXPERIMENTAL RUN SUMMARY ||||||||||||||||" << endl;
182 cout << "||\t\t\t\t\t\t\t||" << endl;
183 cout << "||\t\tPeriod:\t\t" << run_period << "\t\t\t||" << endl;
184 cout << "||\t\tNumber:\t\t" << run_number << "\t\t\t||" << endl;
185 cout << "||\t\tBeam:\t\t" << beam << "\t\t\t||" << endl;
186 cout << "||\t\tTarget:\t\t" << targ << "\t\t\t||" << endl;
187 cout << "||\t\tField scale:\t" << setprecision(4) << fieldScale << "\t\t\t||" << endl;
188 cout << "||\t\t\t\t\t\t\t||" << endl;
189 cout << "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n\n" << endl;
190 remove(geoFileName.Data());
191 }
192
193 fRunAna->SetSource(fFileSource);
194
195 if (dstFileName == "")
196 dstFileName = "bmndst.root";
197 // if directory for the output file does not exist, then create
198 if (BmnFunctionSet::CreateDirectoryTree(dstFileName, 1) < 0)
199 exit(-2);
200 fRunAna->SetSink(new FairRootFileSink(dstFileName));
201 fRunAna->SetGenerateRunInfo(false);
202
203 // if nEvents is equal 0 then all events of the given file starting with "nStartEvent" should be processed
204 if (nEvents == 0)
205 nEvents = MpdGetNumEvents::GetNumROOTEvents((char*)inFileName.Data()) - nStartEvent;
206
207 // Digitisation files.
208 // Add TObjectString file names to a TList which is passed as input to the FairParAsciiFileIo.
209 // The FairParAsciiFileIo will create on fly a concatenated input parameter file, which is then used during the
210 // reconstruction.
211 TList* parFileNameList = new TList();
212
213 // ====================================================================== //
214 // === Pileup Event Classification === //
215 // ====================================================================== //
216 if (run_period >= 8 && isExp) {
217 BmnEventSelector* eventSelector = new BmnEventSelector();
218 eventSelector->SetRunId(run_number);
219 eventSelector->SetInputFileName("$VMCWORKDIR/input/eventSelector_calib_run8.root");
220 fRunAna->AddTask(eventSelector);
221 }
222
223 // ====================================================================== //
224 // === Fill basic trigger information === //
225 // ====================================================================== //
226 BmnFillTrigInfoDst* trig = new BmnFillTrigInfoDst(isExp);
227 fRunAna->AddTask(trig);
228
229 // ====================================================================== //
230 // === Hits in front of the target === //
231 // ====================================================================== //
232 if (run_period >= 8) {
233 if (isExp) {
234 BmnSiBTHitMaker* sibtHM = new BmnSiBTHitMaker(run_period, run_number, isExp);
235 fRunAna->AddTask(sibtHM);
236 }
237 } else {
238 if (!isExp) {
240 fRunAna->AddTask(mwpcHP);
241 }
242 BmnMwpcHitFinder* mwpcHM = new BmnMwpcHitFinder(isExp, run_period, run_number);
243 fRunAna->AddTask(mwpcHM);
244 }
245
246 // ====================================================================== //
247 // === Silicon hit finder === //
248 // ====================================================================== //
249 BmnSiliconHitMaker* siliconHM = new BmnSiliconHitMaker(run_period, run_number, isExp);
250 if (isExp)
251 siliconHM->SetHitMatching(kFALSE);
252 fRunAna->AddTask(siliconHM);
253
254 // ====================================================================== //
255 // === GEM hit finder === //
256 // ====================================================================== //
257 BmnGemStripHitMaker* gemHM = new BmnGemStripHitMaker(run_period, run_number, isExp);
258 if (isExp)
259 gemHM->SetHitMatching(kFALSE);
260 fRunAna->AddTask(gemHM);
261
262 // ====================================================================== //
263 // === CSC hit finder === //
264 // ====================================================================== //
265 BmnCSCHitMaker* cscHM = new BmnCSCHitMaker(run_period, run_number, isExp);
266 if (!isExp)
267 cscHM->SetCurrentConfig(BmnCSCConfiguration::FullCSC_Run8); // set explicitly
268 if (isExp)
269 cscHM->SetHitMatching(kFALSE);
270 fRunAna->AddTask(cscHM);
271
272 // ====================================================================== //
273 // === TOF400 hit finder === //
274 // ====================================================================== //
275 BmnTof1HitProducer* tof1HP = new BmnTof1HitProducer("TOF1", !isExp, iVerbose, kFALSE);
276 tof1HP->SetPeriodRun(run_period, run_number);
277 fRunAna->AddTask(tof1HP);
278
279 // ====================================================================== //
280 // === TOF700 hit finder === //
281 // ====================================================================== //
282 BmnTof701HitProducer* tof701HP = new BmnTof701HitProducer("TOF701", !isExp, iVerbose, kFALSE);
283 tof701HP->SetPeriodRun(run_period, run_number);
284 fRunAna->AddTask(tof701HP);
285
286 // ====================================================================== //
287 // === DCH hit finder === //
288 // ====================================================================== //
289 // if (!isExp) {
290 // BmnDchHitProducer* dchHP = new BmnDchHitProducer();
291 // fRunAna->AddTask(dchHP);
292 // }
293
294 // ====================================================================== //
295 // === FHCAL/ZDC === //
296 // ====================================================================== //
297 bool IsGlobalCoordinates = true;
298 if (run_period >= 8) {
299 // TODO check isExp
300 BmnFHCalReconstructor* fhcalReco = new BmnFHCalReconstructor(isExp, IsGlobalCoordinates);
301 fhcalReco->SetRecoCutsFile("FHCAL_reco_cuts_period8.txt");
302 fRunAna->AddTask(fhcalReco);
303 } else {
304 BmnZdcAnalyzer* zdcAna = new BmnZdcAnalyzer();
305 fRunAna->AddTask(zdcAna);
306 }
307
308 // ====================================================================== //
309 // === ScWall === //
310 // ====================================================================== //
311 IsGlobalCoordinates = true;
312 BmnScWallReconstructor* scwallReco = new BmnScWallReconstructor(isExp, IsGlobalCoordinates);
313 scwallReco->SetRecoCutsFile("SCWALL_reco_cuts_period8.txt");
314 fRunAna->AddTask(scwallReco);
315
316 // ====================================================================== //
317 // === Hodo === //
318 // ====================================================================== //
319
320 BmnHodoReconstructor* hodoReco = new BmnHodoReconstructor("", isExp);
321 hodoReco->SetRecoCutsFile("HODO_reco_cuts_period8.txt");
322 fRunAna->AddTask(hodoReco);
323
324 // ====================================================================== //
325 // === Ndet === //
326 // ====================================================================== //
327 IsGlobalCoordinates = true;
328 BmnNdetReconstructor* ndetReco = new BmnNdetReconstructor(isExp, IsGlobalCoordinates);
329 ndetReco->SetRecoCutsFile("NDET_reco_cuts_period8.txt");
330 fRunAna->AddTask(ndetReco);
331
332 // ====================================================================== //
333 // === Vacuum Wall === //
334 // ====================================================================== //
335
337 fRunAna->AddTask(vacReco);
338
339 // ====================================================================== //
340 // === Inner Tracking === //
341 // ====================================================================== //
342 TString innerTrackBranchName; // use different track container
343 if (tracking == L1Tracking)
344 innerTrackBranchName = "StsTrack";
345 else
346 innerTrackBranchName = "StsVector";
347 if (run_period >= 8) {
348 BmnToCbmHitConverter* hitConverter = new BmnToCbmHitConverter(iVerbose, isExp);
349 // AZ-150224 hitConverter->SetFixedErrors(0.05, 0.25, 0.02, 0.65);
350 hitConverter->SetFixedErrors(0.08 / sqrt(12) * 1.2, 0.1234, 0.01 / sqrt(12), 0.1234); // AZ-150224
351 // hitConverter->EnableAlignment(kFALSE);
352 fRunAna->AddTask(hitConverter);
353
354 CbmKF* kalman = new CbmKF();
355 fRunAna->AddTask(kalman);
356
357 CbmL1* l1 = new CbmL1();
358 TString stsMatBudgetFile = "";
359 l1->SetMaterialBudgetFileName(stsMatBudgetFile);
360 fRunAna->AddTask(l1);
361
362 if (tracking == L1Tracking) {
363 FairTask* stsFindTracks = new CbmStsFindTracks(iVerbose, "CbmL1StsTrackFinder");
364 fRunAna->AddTask(stsFindTracks);
365 }
366 if (tracking == VectorFinder) {
368 vf->SetMatBudgetFileName("$VMCWORKDIR/parameters/sts_matbudget_run8.root");
369 fRunAna->AddTask(vf);
370 }
371
372 BmnStsMatchTracks* stsMatchTracks = new BmnStsMatchTracks(iVerbose);
373 stsMatchTracks->SetTrackBranch(innerTrackBranchName);
374 fRunAna->AddTask(stsMatchTracks);
375
376 } else {
377 BmnInnerTrackingRun7* innerTF = new BmnInnerTrackingRun7(run_number, isTarget);
378 innerTF->SetFiltration(isExp); // we use filtration for experimental data only now
379 fRunAna->AddTask(innerTF);
380 }
381
382 // ====================================================================== //
383 // === Beam Tracking === //
384 // ====================================================================== //
385 if (run_period >= 8) {
386 if (isExp) {
387 BmnBeamTracking* beamTF = new BmnBeamTracking(run_period);
388 fRunAna->AddTask(beamTF);
389 }
390 } else {
391 BmnMwpcTrackFinder* mwpcTF = new BmnMwpcTrackFinder(isExp, run_period, run_number);
392 fRunAna->AddTask(mwpcTF);
393 }
394
395 // ====================================================================== //
396 // === Tracking (DCH) === //
397 // ====================================================================== //
398 // BmnDchTrackFinder* dchTF = new BmnDchTrackFinder(run_period, run_number, isExp);
399 // dchTF->SetTransferFunction("transfer_func.txt");
400 // fRunAna->AddTask(dchTF);
401
402 // ====================================================================== //
403 // === Primary vertex finding === //
404 // ====================================================================== //
405 // if (run_period >= 8) {
406 CbmPrimaryVertexFinder* pvFinder = new CbmPVFinderKF();
407 CbmFindPrimaryVertex* findVertex = new CbmFindPrimaryVertex(pvFinder);
408 findVertex->SetTrackBranch(innerTrackBranchName);
409 fRunAna->AddTask(findVertex);
410
411 // AZ-150224
413 fRunAna->AddTask(pvMPD);
414
416 fRunAna->AddTask(combPV);
417 //
418 // // } else {
419 // BmnVertexFinder* gemVF = new BmnVertexFinder(run_period);
420 // fRunAna->AddTask(gemVF);
421 //}
422
423 // ====================================================================== //
424 // === Global Tracking === //
425 // ====================================================================== //
427 glTF->SetPeriodNumber(run_period);
428 glTF->SetInnerTracksBranchName(innerTrackBranchName);
429 fRunAna->AddTask(glTF);
430
431 // BmnVertexFinder* gemVF = new BmnVertexFinder(run_period);
432 // fRunAna->AddTask(gemVF);
433
434 // ====================================================================== //
435 // === Matching global track to MC track procedure === //
436 // ====================================================================== //
437 if (!isExp) {
438 BmnMatchRecoToMC* mcMatching = new BmnMatchRecoToMC();
439 mcMatching->SetInnerTracksBranchName(innerTrackBranchName);
440 fRunAna->AddTask(mcMatching);
441 }
442
443 // ====================================================================== //
444 // === PID procedure === //
445 // ====================================================================== //
446 BmnPid* pid_analyser = new BmnPid();
447 fRunAna->AddTask(pid_analyser);
448
449 // ====================================================================== //
450 // === Residual analysis === //
451 // ====================================================================== //
452 if (run_period < 8) {
453 BmnResiduals* res = new BmnResiduals(run_period, run_number);
454 fRunAna->AddTask(res);
455 }
456
457 // ====================================================================== //
458 // === Centrality === //
459 // ====================================================================== //
460 CentralityClusterizer* cclusterizer = new CentralityClusterizer("XeCsI@3.8AGeV_MBT_7clusters_period8.root");
461 fRunAna->AddTask(cclusterizer);
462
463 // Fill DST Event Header
464 BmnFillDstTask* dst_task = new BmnFillDstTask(nStartEvent, nEvents, isExp, run_period, run_number);
465 fRunAna->AddTask(dst_task);
466
467 // ----- Parameter database (input) -------------------------------------
468 FairRuntimeDb* rtdb = fRunAna->GetRuntimeDb();
469 FairParRootFileIo* parIo1 = new FairParRootFileIo();
470 FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo();
471 parIo1->open(inFileName.Data());
472 parIo2->open(parFileNameList, "in");
473 rtdb->setFirstInput(parIo1);
474 rtdb->setSecondInput(parIo2);
475 // -------------------------------------------------------------------------
476
477 // ----- Initialize FaiRunAna --------------------------------------------
478 fRunAna->GetMainTask()->SetVerbose(iVerbose);
479 fRunAna->Init();
480 // -------------------------------------------------------------------------
481
482 // ----- Parameter database (output) ------------------------------------
483 FairParRootFileIo* parOut = new FairParRootFileIo(kTRUE);
484 // parOut->open(dstFileName);
485 parOut->open(gFile);
486 rtdb->setOutput(parOut);
487 rtdb->writeContainer(rtdb->getContainer("FairGeoParSet"), rtdb->getCurrentRun());
488 rtdb->saveOutput();
489 // rtdb->print();
490 // -------------------------------------------------------------------------
491
492 // ----- Run FairRunAna -------------------------------------------------
493 fRunAna->Run(nStartEvent, nStartEvent + nEvents);
494 // -------------------------------------------------------------------------
495
496 // ----- Cleanup --------------------------------------------------------
497 delete fRunAna;
498 delete pvFinder;
499 delete parFileNameList;
500 delete parIo1;
501 delete parIo2;
502 delete parOut;
503 // Global singletons destruction
505 delete TDatabasePDG::Instance();
506
507 // ----- Finish --------------------------------------------------------
508 timer.Stop();
509 Double_t rtime = timer.RealTime();
510 Double_t ctime = timer.CpuTime();
511 cout << endl << endl;
512 cout << "Macro finished successfully." << endl; // marker of successful execution
513 cout << "Input file is " + inFileName << endl;
514 cout << "Output file is " + dstFileName << endl;
515 cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
516 cout << endl;
517 // ------------------------------------------------------------------------
518}
519
520int main(int argc, char** arg)
521{
522 run_reco_bmn();
523}
bool Bool_t
int Int_t
Int_t gDebug
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
#define R__ADD_INCLUDE_PATH(PATH)
#define gFile
enumTracking
@ L1Tracking
@ VectorFinder
void SetCurrentConfig(BmnCSCConfiguration::CSC_CONFIG config)
void SetHitMatching(Bool_t opt=kTRUE)
void SetInputFileName(const char *name)
void SetRunId(int runId)
Class for BmnFHCalEvent reconstruction (creation) from BmnFHCalDigi {Data} or BmnFHCalDigit {Sim}...
void SetRecoCutsFile(TString reco_cuts_file)
void SetScale(Double_t factor)
Set a global field scaling factor.
Definition BmnFieldMap.h:55
virtual void Init()
BmnFileSource.h.
static int CreateDirectoryTree(TString &fileName, int iVerbose=0, EAccessMode mode=kWritePermission)
static int isSimulationFile(TString fileName="")
static int CheckFileExist(TString &fileName, int iVerbose=0, EAccessMode mode=kFileExists)
void SetHitMatching(Bool_t opt=kTRUE)
void SetInnerTracksBranchName(TString name)
void SetPeriodNumber(Short_t p)
Class for BmnHodoEvent reconstruction (creation) from BmnHodoDigi {Data} or BmnHodoDigit {Sim}...
void SetRecoCutsFile(const std::string &cuts)
The BmnKFPrimaryVertexFinder class - adaptation of MpdKfPrimaryVertexFinder.
void SetInnerTracksBranchName(TString name)
Class for BmnNdetEvent reconstruction (creation) from BmnNdetDigi {Data} or BmnNdetDigit {Sim}...
void SetRecoCutsFile(const std::string &cuts)
Field Map does not have any symmetries w.r.t coordinate axises.
Class for BmnScWallEvent reconstruction (creation) from BmnScWallDigi {Data} or BmnScWallDigit {Sim}...
void SetRecoCutsFile(TString reco_cuts_file)
void SetHitMatching(Bool_t opt=kTRUE)
void SetTrackBranch(TString trBranch="StsTrack")
BmnStsVectorFinder.h.
void SetMatBudgetFileName(TString s)
void SetFixedErrors(Float_t dXgem=0.015, Float_t dYgem=0.058, Float_t dXsil=0.003, Float_t dYsil=0.021)
void SetPeriodRun(Int_t p, Int_t r)
Class for BmnVacWall points info transition on reconstruction stage.
void SetTrackBranch(TString trBranch="StsTrack")
The CbmKF Kalman Filter algorithm.
Definition CbmKF.h:28
Definition CbmL1.h:48
void SetMaterialBudgetFileName(TString s)
Definition CbmL1.h:86
CbmPVFinderKF.
static CbmStsDigiScheme * Instance(int version=1)
CbmStsFindTracks.
Class for event centrality determination through clusterization.
GeoSetup class.
Definition GeoSetup.h:40
int LoadSetupToGeoManager(string_view setup_tag)
Load selected geometry setup from the Local Geometry Database and create gGeoManager instance.
Definition GeoSetup.cxx:512
string GetLastApprovedSetupTag(string_view tag_prefix)
Get tag for the last approved setup corresponding to the pattern.
Definition GeoSetup.cxx:122
static Int_t GetNumROOTEvents(const char *filename, const char *treename="", int iVerbose=2)
static TDatabasePDG * Instance()
Double_t RealTime()
void Start(Bool_t reset=kTRUE)
Double_t CpuTime()
void Stop()
static TString Format(const char *fmt,...)
UniRun.h Class for the table: run_.
Definition UniRun.h:21
static UniRun * GetRun(int period_number, int run_number)
get run from the database
Definition UniRun.cxx:161
TString GetBeamParticle()
get beam particle of the current run
Definition UniRun.h:109
double * GetFieldVoltage()
get field voltage of the current run
Definition UniRun.h:121
TString GetTargetParticle()
get target particle of the current run
Definition UniRun.h:111
RVec< PromoteType< T > > sqrt(const RVec< T > &v)
void run_reco_bmn(TString inFileName="$VMCWORKDIR/macro/run/bmnsim.root", TString dstFileName="$VMCWORKDIR/macro/run/bmndst.root", Int_t nStartEvent=0, Int_t nEvents=10, enumTracking tracking=VectorFinder)
Definition json.hpp:4446
int main(void)
Definition test_FC.cpp:33