R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
ex_digi.cxx
Go to the documentation of this file.
1#include "FairFileSource.h"
2#include "FairParRootFileIo.h"
3#include "FairRootFileSink.h"
4#include "FairRunAna.h"
5#include "FairRuntimeDb.h"
10#include "R3BDigitizingTamex.h"
11#include "R3BNeulandDigitizer.h"
12#include "R3BNeulandHitMon.h"
13#include "R3BProgramOptions.h"
14#include "TStopwatch.h"
16#include <iostream>
17
18namespace Digitizing = R3B::Digitizing;
26
27auto main(int argc, const char** argv) -> int
28{
29
30 auto timer = TStopwatch{};
31 timer.Start();
32
33 auto programOptions = R3B::ProgramOptions("options for neuland data analysis");
34 auto help = programOptions.create_option<bool>("help,h", "help message", false);
35 auto paraFileName =
36 programOptions.create_option<std::string>("paraFile", "set the filename of parameter sink", "para.root");
37 auto digiFileName =
38 programOptions.create_option<std::string>("digiFile", "set the filename of digitization output", "digi.root");
39 auto simuFileName =
40 programOptions.create_option<std::string>("simuFile", "set the filename of simulation input", "simu.root");
41 if (!programOptions.verify(argc, argv))
42 {
43 return EXIT_FAILURE;
44 }
45
46 if (help->value())
47 {
48 std::cout << programOptions.get_desc_ref() << std::endl;
49 return 0;
50 }
51
52 FairLogger::GetLogger()->SetLogScreenLevel("error");
53
54 auto run = std::make_unique<FairRunAna>();
55 auto filesource = std::make_unique<FairFileSource>(simuFileName->value().c_str());
56 auto filesink = std::make_unique<FairRootFileSink>(digiFileName->value().c_str());
57 run->SetSource(filesource.release());
58 run->SetSink(filesink.release());
59
60 auto fileio = std::make_unique<FairParRootFileIo>();
61 fileio->open(paraFileName->value().c_str());
62 run->GetRuntimeDb()->setFirstInput(fileio.release());
63
64 // Tasks:
65
66 // Set up digitization task:
69 tamexParameter.fPMTThresh = 1.;
70 tamexParameter.fTimeMin = 1.;
71 auto digiNeuland = std::make_unique<R3BNeulandDigitizer>();
72 auto engine = CreateEngine(UsePaddle<NeulandPaddle>(), UseChannel<TamexChannel>(pileup_strategy, tamexParameter));
73 digiNeuland->SetEngine(std::move(engine));
74 run->AddTask(digiNeuland.release());
75
76 // Set up monitoring task:
77 auto hitmon = std::make_unique<R3BNeulandHitMon>();
78 run->AddTask(hitmon.release());
79
80 // Setup clustering task:
81 auto r3bNeulandClusterFinder = std::make_unique<R3BNeulandClusterFinder>(2. * 7.5, 2. * 7.5, 2. * 7.5, 5.);
82 run->AddTask(r3bNeulandClusterFinder.release());
83
84 run->Init();
85 run->Run();
86 timer.Stop();
87 auto* sink = run->GetSink();
88 sink->Close();
89 std::cout << "Macro finished successfully." << std::endl;
90 std::cout << "Real time: " << timer.RealTime() << "s, CPU time: " << timer.CpuTime() << "s" << std::endl;
91 return 0;
92}
Tamex::Channel TamexChannel
Digitizing::Neuland::MockPaddle MockPaddle
Digitizing::Neuland::NeulandPaddle NeulandPaddle
Digitizing::Neuland::MockChannel MockChannel
Digitizing::Neuland::TacQuila::Channel TacquilaChannel
static auto GetDefaultRandomGen() -> TRandom3 &
auto main() -> int
Definition ex_test.cxx:109