ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
CexmcReconstructorMessenger.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file CexmcReconstructorMessenger.cc
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
/*
27
* ============================================================================
28
*
29
* Filename: CexmcReconstructorMessenger.cc
30
*
31
* Description: reconstructor messenger
32
*
33
* Version: 1.0
34
* Created: 02.12.2009 15:38:30
35
* Revision: none
36
* Compiler: gcc
37
*
38
* Author: Alexey Radkov (),
39
* Company: PNPI
40
*
41
* ============================================================================
42
*/
43
44
#include <
G4UIcmdWithABool.hh
>
45
#include <
G4UIcmdWithAString.hh
>
46
#include <
G4UIcmdWithADoubleAndUnit.hh
>
47
#include "
CexmcReconstructorMessenger.hh
"
48
#include "
CexmcReconstructor.hh
"
49
#include "
CexmcMessenger.hh
"
50
#include "
CexmcCommon.hh
"
51
52
53
CexmcReconstructorMessenger::CexmcReconstructorMessenger
(
54
CexmcReconstructor
* reconstructor_ ) :
55
reconstructor( reconstructor_ ),
56
setCalorimeterEntryPointDefinitionAlgorithm( NULL ),
57
setCrystalSelectionAlgorithm( NULL ), useInnerRefCrystal( NULL ),
58
setCalorimeterEntryPointDepth( NULL )
59
{
60
setCalorimeterEntryPointDefinitionAlgorithm
=
new
G4UIcmdWithAString
(
61
(
CexmcMessenger::reconstructorDirName
+
"entryPointDefinitionAlgo"
).
62
c_str(),
this
);
63
setCalorimeterEntryPointDefinitionAlgorithm
->
SetGuidance
(
64
"\n Algorithm to reconstruct entry point of output particle"
65
"\n decay products in calorimeter"
66
"\n (none of the following algorithms reconstruct directions)\n"
67
" center - entry points defined in the center of the\n"
68
" calorimeters,\n"
69
" simple - entry points defined in the center of the crystal\n"
70
" that has maximum energy deposit value,\n"
71
" linear - entry points defined by linear weights of energy\n"
72
" deposit in crystals,\n"
73
" sqrt - entry points defined by square root weights of\n"
74
" energy deposit in crystals"
);
75
setCalorimeterEntryPointDefinitionAlgorithm
->
SetParameterName
(
76
"EntryPointDefinitionAlgo"
,
false
);
77
setCalorimeterEntryPointDefinitionAlgorithm
->
SetCandidates
(
78
"center simple linear sqrt"
);
79
setCalorimeterEntryPointDefinitionAlgorithm
->
SetDefaultValue
(
"sqrt"
);
80
setCalorimeterEntryPointDefinitionAlgorithm
->
AvailableForStates
(
81
G4State_PreInit
,
G4State_Idle
);
82
83
setCalorimeterEntryPointDepthDefinitionAlgorithm
=
new
G4UIcmdWithAString
(
84
(
CexmcMessenger::reconstructorDirName
+
85
"entryPointDepthDefinitionAlgo"
).c_str(),
this
);
86
setCalorimeterEntryPointDepthDefinitionAlgorithm
->
SetGuidance
(
87
"\n Algorithm to reconstruct entry point depth of output\n"
88
" particle decay products in calorimeter\n"
89
" (value is defined by 'entryPointDepth' parameter)\n"
90
" plain - depth is a constant\n"
91
" sphere - depth depends on X and Y of calorimeter entry\n"
92
" points and locates on surface of a sphere\n"
93
" with origin in the center of the target;\n"
94
" radius of the sphere is sum of distance to\n"
95
" the calorimeter and 'entryPointDepth' value"
);
96
setCalorimeterEntryPointDepthDefinitionAlgorithm
->
SetParameterName
(
97
"EntryPointDepthDefinitionAlgo"
,
false
);
98
setCalorimeterEntryPointDepthDefinitionAlgorithm
->
SetCandidates
(
99
"plain sphere"
);
100
setCalorimeterEntryPointDepthDefinitionAlgorithm
->
SetDefaultValue
(
101
"plain"
);
102
setCalorimeterEntryPointDepthDefinitionAlgorithm
->
AvailableForStates
(
103
G4State_PreInit
,
G4State_Idle
);
104
105
setCrystalSelectionAlgorithm
=
new
G4UIcmdWithAString
(
106
(
CexmcMessenger::reconstructorDirName
+
"crystalSelectionAlgo"
).
107
c_str(),
this
);
108
setCrystalSelectionAlgorithm
->
SetGuidance
(
109
"\n Choose crystals to be selected in weighted entry point\n"
110
" reconstruction algorithms\n"
111
" all - all,\n"
112
" adjacent - crystal with maximum energy deposit and\n"
113
" adjacent crystals"
);
114
setCrystalSelectionAlgorithm
->
SetParameterName
(
"CrystalSelAlgo"
,
false
);
115
setCrystalSelectionAlgorithm
->
SetCandidates
(
"all adjacent"
);
116
setCrystalSelectionAlgorithm
->
SetDefaultValue
(
"all"
);
117
setCrystalSelectionAlgorithm
->
AvailableForStates
(
G4State_PreInit
,
118
G4State_Idle
);
119
120
useInnerRefCrystal
=
new
G4UIcmdWithABool
(
121
(
CexmcMessenger::reconstructorDirName
+
"useInnerRefCrystal"
).
122
c_str(),
this
);
123
useInnerRefCrystal
->
SetGuidance
(
124
"\n Defines that if the crystal with maximum energy deposit in\n"
125
" calorimeter is an outer crystal then the closest inner crystal\n"
126
" will be chosen as the reference for adjacent crystal selection\n"
127
" algorithm and simple entry point definition algorithm. It also\n"
128
" affects energy deposit collection if adjacent crystals\n"
129
" algorithm was chosen for that. If not set then the reference\n"
130
" crystal will be found from all crystals in calorimeter"
);
131
useInnerRefCrystal
->
SetParameterName
(
"UseInnerRefCrystal"
,
true
);
132
useInnerRefCrystal
->
SetDefaultValue
(
true
);
133
useInnerRefCrystal
->
AvailableForStates
(
G4State_PreInit
,
G4State_Idle
);
134
135
setCalorimeterEntryPointDepth
=
new
G4UIcmdWithADoubleAndUnit
(
136
(
CexmcMessenger::reconstructorDirName
+
"entryPointDepth"
).c_str(),
137
this
);
138
setCalorimeterEntryPointDepth
->
SetGuidance
(
139
"\n Depth of entry point used in reconstruction of angle\n"
140
" between output particle decay products"
);
141
setCalorimeterEntryPointDepth
->
SetParameterName
(
"EntryPointDepth"
,
false
);
142
setCalorimeterEntryPointDepth
->
SetDefaultValue
( 0 );
143
setCalorimeterEntryPointDepth
->
SetUnitCandidates
(
"mm cm m"
);
144
setCalorimeterEntryPointDepth
->
SetDefaultUnit
(
"cm"
);
145
setCalorimeterEntryPointDepth
->
AvailableForStates
(
G4State_PreInit
,
146
G4State_Idle
);
147
}
148
149
150
CexmcReconstructorMessenger::~CexmcReconstructorMessenger
()
151
{
152
delete
setCalorimeterEntryPointDefinitionAlgorithm
;
153
delete
setCalorimeterEntryPointDepthDefinitionAlgorithm
;
154
delete
setCrystalSelectionAlgorithm
;
155
delete
useInnerRefCrystal
;
156
delete
setCalorimeterEntryPointDepth
;
157
}
158
159
160
void
CexmcReconstructorMessenger::SetNewValue
(
G4UIcommand
* cmd,
161
G4String
value
)
162
{
163
do
164
{
165
if
( cmd ==
setCalorimeterEntryPointDefinitionAlgorithm
)
166
{
167
CexmcCalorimeterEntryPointDefinitionAlgorithm
168
epDefinitionAlgorithm(
CexmcEntryPointInTheCenter
);
169
do
170
{
171
if
( value ==
"simple"
)
172
{
173
epDefinitionAlgorithm =
174
CexmcEntryPointInTheCenterOfCrystalWithMaxED
;
175
break
;
176
}
177
if
( value ==
"linear"
)
178
{
179
epDefinitionAlgorithm =
CexmcEntryPointByLinearEDWeights
;
180
break
;
181
}
182
if
( value ==
"sqrt"
)
183
{
184
epDefinitionAlgorithm =
CexmcEntryPointBySqrtEDWeights
;
185
break
;
186
}
187
}
while
(
false
);
188
reconstructor
->
SetCalorimeterEntryPointDefinitionAlgorithm
(
189
epDefinitionAlgorithm );
190
break
;
191
}
192
if
( cmd ==
setCalorimeterEntryPointDepthDefinitionAlgorithm
)
193
{
194
CexmcCalorimeterEntryPointDepthDefinitionAlgorithm
195
epDepthDefinitionAlgorithm(
CexmcEntryPointDepthPlain
);
196
do
197
{
198
if
( value ==
"sphere"
)
199
{
200
epDepthDefinitionAlgorithm =
CexmcEntryPointDepthSphere
;
201
break
;
202
}
203
}
while
(
false
);
204
reconstructor
->
SetCalorimeterEntryPointDepthDefinitionAlgorithm
(
205
epDepthDefinitionAlgorithm );
206
break
;
207
}
208
if
( cmd ==
setCrystalSelectionAlgorithm
)
209
{
210
CexmcCrystalSelectionAlgorithm
211
csAlgorithm(
CexmcSelectAllCrystals
);
212
do
213
{
214
if
( value ==
"adjacent"
)
215
{
216
csAlgorithm =
CexmcSelectAdjacentCrystals
;
217
break
;
218
}
219
}
while
(
false
);
220
reconstructor
->
SetCrystalSelectionAlgorithm
( csAlgorithm );
221
break
;
222
}
223
if
( cmd ==
useInnerRefCrystal
)
224
{
225
reconstructor
->
UseInnerRefCrystal
(
226
G4UIcmdWithABool::GetNewBoolValue
( value ) );
227
break
;
228
}
229
if
( cmd ==
setCalorimeterEntryPointDepth
)
230
{
231
reconstructor
->
SetCalorimeterEntryPointDepth
(
232
G4UIcmdWithADoubleAndUnit::GetNewDoubleValue
( value ) );
233
break
;
234
}
235
}
while
(
false
);
236
}
237
geant4
tree
geant4-10.6-release
examples
advanced
ChargeExchangeMC
src
CexmcReconstructorMessenger.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:56
using
1.8.2 with
ECCE GitHub integration