R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
R3BNeulandGenerators.h
Go to the documentation of this file.
1#pragma once
2
3#include "CosmicMuon.h"
5#include "FairBoxGenerator.h"
6#include "FairPrimaryGenerator.h"
7#include "R3BNeulandCommon.h"
8#include <TRandom3.h>
9
10// NOTE: what's the purpose of this file? Just function definitions?
11
12inline auto create_muon_generator(TRandom3& random_gen,
13 int num_dp,
14 double energy,
16{
17 constexpr auto PID = 2112;
18 auto detector_box_size = ::R3B::Neuland::DetectorBoxSize{};
19 detector_box_size.xmin = pos.x - R3B::Neuland::BarLength / 2;
20 detector_box_size.xmax = pos.x + R3B::Neuland::BarLength / 2;
21 detector_box_size.ymin = pos.y - R3B::Neuland::BarLength / 2;
22 detector_box_size.ymax = pos.y + R3B::Neuland::BarLength / 2;
23 detector_box_size.zmin = pos.z - (R3B::Neuland::BarSize_Z * num_dp);
24 detector_box_size.zmax = pos.z + (R3B::Neuland::BarSize_Z * num_dp);
25
26 auto angle_dist = R3B::Neuland::AngleDist{};
27 auto energy_dist = R3B::Neuland::EnergyDist{};
28 auto position_dist = R3B::Neuland::PositionDist{};
29
30 auto const mean = energy;
31 auto const sigma = 0.2;
32 energy_dist.set_mean_sigma(mean, sigma);
33
34 position_dist.set_box_size(detector_box_size);
35
36 auto CosmicMuonGenerator = R3B::Neuland::CreateTrackGenerator(angle_dist, energy_dist, position_dist);
37
38 CosmicMuonGenerator->set_rd_engine(&random_gen);
39
40 auto primGen = std::make_unique<FairPrimaryGenerator>();
41 primGen->AddGenerator(CosmicMuonGenerator.release());
42 return primGen;
43}
44
45inline auto create_box_generator(double energy, int multi)
46{
47 // Primary particle generator
48 constexpr auto PID = 2112;
49 auto boxGen = std::make_unique<FairBoxGenerator>(PID, multi);
50 boxGen->SetXYZ(0, 0, 0.);
51 boxGen->SetThetaRange(0., 3.);
52 boxGen->SetPhiRange(0., 360.);
53 boxGen->SetEkinRange(energy, energy);
54 auto primGen = std::make_unique<FairPrimaryGenerator>();
55 primGen->AddGenerator(boxGen.release());
56 return primGen;
57}
auto create_box_generator(double energy, int multi)
auto create_muon_generator(TRandom3 &random_gen, int num_dp, double energy, const R3B::Neuland::XYZCoordinate &pos)
void set_box_size(DetectorBoxSize detector_box_size)
constexpr auto BarLength
constexpr auto BarSize_Z
auto CreateTrackGenerator(const AngleDist &angle_dist, const EnergyDist &energy_dist, const PositionDist &position_dist)
Definition CosmicMuon.h:206