@@ -6,72 +6,83 @@ ClassImp(TRestGeant4ParticleSourceCry);
6
6
7
7
TRestGeant4ParticleSourceCry::TRestGeant4ParticleSourceCry () {}
8
8
9
- void TRestGeant4ParticleSourceCry::PrintParticleSource () {
10
- /*
11
- metadata << "---------------------------------------" << endl;
12
- if (!fParticleName.empty() && fParticleName != "NO_SUCH_PARA")
13
- metadata << "Particle Source Name: " << fParticleName << endl;
14
- metadata << "Parent Nuclide: " << fParentName << endl;
15
- metadata << "Decay Mode: " << fDecayType << endl;
16
- metadata << "Daughter Level: " << fDaughterLevel << endl;
17
- metadata << "Seed: " << fSeed << endl;
18
- */
9
+ void TRestGeant4ParticleSourceCry::PrintMetadata () {
10
+
11
+ TRestGeant4ParticleSource::PrintMetadata ();
12
+
13
+ RESTMetadata << " Return Neutrons : " << fReturnNeutrons << RESTendl;
14
+ RESTMetadata << " Return Protons : " << fReturnProtons << RESTendl;
15
+ RESTMetadata << " Return Gammas : " << fReturnGammas << RESTendl;
16
+ RESTMetadata << " Return Electrons : " << fReturnElectrons << RESTendl;
17
+ RESTMetadata << " Return Pions : " << fReturnPions << RESTendl;
18
+ RESTMetadata << " Return Kaons : " << fReturnKaons << RESTendl;
19
+ RESTMetadata << " Return Muons : " << fReturnMuons << RESTendl;
20
+ RESTMetadata << " ======= " << RESTendl;
21
+
22
+ RESTMetadata << " N particles min : " << fNParticlesMin << RESTendl;
23
+ RESTMetadata << " N particles max : " << fNParticlesMax << RESTendl;
24
+ RESTMetadata << " ======= " << RESTendl;
25
+
26
+ RESTMetadata << " X-offset : " << fXOffset << " m" << RESTendl;
27
+ RESTMetadata << " Y-offset : " << fYOffset << " m" << RESTendl;
28
+ RESTMetadata << " Z-offset : " << fZOffset << " m" << RESTendl;
29
+ RESTMetadata << " SubBoxLength : " << fSubBoxLength << " m" << RESTendl;
30
+ RESTMetadata << " ======= " << RESTendl;
31
+
32
+ RESTMetadata << " Date : " << fDate << RESTendl;
33
+ RESTMetadata << " Latitude : " << fLatitude << RESTendl;
34
+ RESTMetadata << " Altitude : " << fAltitude << RESTendl;
35
+ RESTMetadata << " ----------------------" << RESTendl;
19
36
}
20
37
21
38
void TRestGeant4ParticleSourceCry::InitFromConfigFile () {
22
- /*
23
- // unsigned int seed = (uintptr_t)this;
24
- // std::default_random_engine generator(seed);
25
- // prng = bxdecay0::std_random(generator);
26
- fParticleName = ((TRestMetadata*)this)->ClassName();
27
- fParentName = GetParameter("particle");
28
- fDecayType = GetParameter("decayMode");
29
- fDaughterLevel = StringToInteger(GetParameter("daughterLevel"));
30
- fSeed = StringToInteger(GetParameter("seed", "0"));
31
- if (fSeed != 0) {
32
- } else {
33
- fSeed = (uintptr_t)this;
34
- }
35
- generator = new std::default_random_engine(fSeed);
36
- prng = new bxdecay0::std_random(*generator);
37
39
38
- fDecay0Model->set_decay_category(bxdecay0::decay0_generator::DECAY_CATEGORY_DBD);
40
+ fReturnNeutrons = StringToInteger ( GetParameter ( " returnNeutrons" , " 1" ) );
41
+ fReturnProtons = StringToInteger ( GetParameter ( " returnProtons" , " 1" ) );
42
+ fReturnGammas = StringToInteger ( GetParameter ( " returnGammas" , " 1" ) );
43
+ fReturnElectrons = StringToInteger ( GetParameter ( " returnElectrons" , " 1" ) );
44
+ fReturnPions = StringToInteger ( GetParameter ( " returnPions" , " 1" ) );
45
+ fReturnKaons = StringToInteger ( GetParameter ( " returnKaons" , " 1" ) );
46
+ fReturnMuons = StringToInteger ( GetParameter ( " returnMuons" , " 1" ) );
39
47
40
- if (fParentName != "Xe136") {
41
- ferr << "Only Xe136 double beta decay is supported by restDecay0" << endl;
42
- exit(1);
43
- }
44
- if (fDaughterLevel < 0 || fDaughterLevel > 3) {
45
- ferr << "Supported Ba136 excitation level: 0, 1, 2, 3" << endl;
46
- exit(1);
47
- }
48
+ fNParticlesMin = StringToInteger ( GetParameter ( " nParticlesMin" , " 1" ) );
49
+ fNParticlesMax = StringToInteger ( GetParameter ( " nParticlesMax" , " 1000000" ) );
48
50
49
- fDecay0Model->set_decay_isotope(fParentName);
51
+ fXOffset = StringToDouble ( GetParameter ( " xoffset" , " 0.0" ) );
52
+ fYOffset = StringToDouble ( GetParameter ( " yoffset" , " 0.0" ) );
53
+ fZOffset = StringToDouble ( GetParameter ( " zoffset" , " 0.0" ) );
54
+ fSubBoxLength = StringToDouble ( GetParameter ( " subBoxLength" , " 100.0" ) );
50
55
51
- fDecay0Model->set_decay_dbd_level(fDaughterLevel);
56
+ fDate = GetParameter ( " date" , " 7\\ 1\\ 2012" );
57
+ fDate = REST_StringHelper::Replace ( fDate , " \\ " , " -" );
58
+ fLatitude = StringToDouble ( GetParameter ( " latitude" , " 90.0" ) );
59
+ fAltitude = StringToDouble ( GetParameter ( " altitude" , " 0.0" ) );
52
60
53
- if (fDecayType == "2vbb") {
54
- if (fDaughterLevel == 0 || fDaughterLevel == 3) {
55
- fDecay0Model->set_decay_dbd_mode(bxdecay0::DBDMODE_2NUBB_0_2N);
56
- } else if (fDaughterLevel == 1 || fDaughterLevel == 2) {
57
- fDecay0Model->set_decay_dbd_mode(bxdecay0::DBDMODE_2NUBB_2_2N);
58
- }
59
- } else if (fDecayType == "0vbb") {
60
- if (fDaughterLevel == 0 || fDaughterLevel == 3) {
61
- fDecay0Model->set_decay_dbd_mode(bxdecay0::DBDMODE_0NUBB_MN_0_2N);
62
- } else if (fDaughterLevel == 1 || fDaughterLevel == 2) {
63
- fDecay0Model->set_decay_dbd_mode(bxdecay0::DBDMODE_0NUBB_RHC_LAMBDA_2_2N);
64
- }
65
- }
61
+ PrintMetadata ();
62
+
63
+ std::string setupString = " " ;
64
+ setupString += " returnNeutrons " + IntegerToString (fReturnNeutrons );
65
+ setupString += " returnProtons " + IntegerToString (fReturnProtons );
66
+ setupString += " returnGammas " + IntegerToString (fReturnGammas );
67
+ setupString += " returnElectrons " + IntegerToString (fReturnElectrons );
68
+ setupString += " returnPions " + IntegerToString (fReturnPions );
69
+ setupString += " returnKaons " + IntegerToString (fReturnKaons );
70
+ setupString += " returnMuons " + IntegerToString (fReturnMuons );
71
+
72
+ setupString += " xoffset " + DoubleToString (fXOffset );
73
+ setupString += " yoffset " + DoubleToString (fYOffset );
74
+ setupString += " zoffset " + DoubleToString (fZOffset );
75
+ setupString += " subboxLength " + DoubleToString (fSubBoxLength );
76
+
77
+ setupString += " date " + fDate ;
78
+ setupString += " latitude " + DoubleToString (fLatitude );
79
+ setupString += " altitude " + DoubleToString (fAltitude );
80
+
81
+ setupString += " nParticlesMin " + IntegerToString (fNParticlesMin );
82
+ setupString += " nParticlesMax " + IntegerToString (fNParticlesMax );
66
83
67
- fDecay0Model->initialize(*prng);
68
- */
69
84
70
85
#ifdef USE_CRY
71
- // / Of course, we should be able to configure this inside InitFromConfigFile
72
- std::string setupString = " returnNeutrons 1" ;
73
- // std::string setupString = "returnNeutrons 1\nreturnProtons 1\nreturnGammas 1\ndate
74
- // 7-1-2012\nlatitude 90.0\naltitude 0\nsubboxLength 100\n";
75
86
CRYSetup* setup = new CRYSetup (setupString, CRY_DATA_PATH);
76
87
fCRYGenerator = new CRYGenerator (setup);
77
88
#endif
@@ -91,12 +102,10 @@ void TRestGeant4ParticleSourceCry::Update() {
91
102
// std::cout << "-----" << std::endl;
92
103
93
104
for (const auto & cryParticle : *ev) {
94
- /*
95
- std::cout << "id: " << cryParticle->id() << std::endl;
96
- std::cout << "x: " << cryParticle->x() << " y: " << cryParticle->y() << " z: " << cryParticle->z() << std::endl;
97
- std::cout << "u: " << cryParticle->u() << " v: " << cryParticle->v() << " w: " << cryParticle->w() << std::endl;
98
- std::cout << "charge: " << cryParticle->charge() << " energy: " << cryParticle->ke() << std::endl;
99
- */
105
+ // std::cout << "id: " << cryParticle->id() << std::endl;
106
+ // std::cout << "x: " << cryParticle->x() << " y: " << cryParticle->y() << " z: " << cryParticle->z() << std::endl;
107
+ // std::cout << "u: " << cryParticle->u() << " v: " << cryParticle->v() << " w: " << cryParticle->w() << std::endl;
108
+ // std::cout << "charge: " << cryParticle->charge() << " energy: " << cryParticle->ke() << std::endl;
100
109
101
110
TRestGeant4Particle particle;
102
111
0 commit comments