BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
move_field_2_run.C
Go to the documentation of this file.
1
// macro for moving magnetic field voltage from parameter values to table RUN_
2
class
UniqueRunNumber
;
3
void
move_field_2_run
(
int
period)
4
{
5
UniqueRunNumber
* run_numbers;
6
int
run_count =
UniRun::GetRunNumbers
(run_numbers, period, 1, period, 100000);
7
if
(run_count <= 0)
8
return
;
9
10
const
char
* detector_name =
"magnet"
;
11
const
char
* parameter_name =
"average_field_mv"
;
12
13
for
(
int
i
= 0;
i
< run_count;
i
++) {
14
// get the average magnetic field from Runs of the Unified Condition Database
15
UniDetectorParameter
* pDetectorParameter =
UniDetectorParameter::GetDetectorParameter
(
16
detector_name, parameter_name, run_numbers[
i
].
period_number
, run_numbers[
i
].
run_number
);
17
if
(pDetectorParameter ==
nullptr
) {
18
cout <<
"No field voltage was found for run ("
<< run_numbers[
i
].
period_number
<<
":"
19
<< run_numbers[
i
].
run_number
<<
")"
<< endl;
20
continue
;
21
}
22
double
field_voltage = ((
DoubleValue
*)pDetectorParameter->
GetValue
())->value;
23
delete
pDetectorParameter;
24
25
// get run
26
UniRun
* pRun =
UniRun::GetRun
(run_numbers[
i
].
period_number
, run_numbers[
i
].
run_number
);
27
if
(pRun ==
nullptr
) {
28
cout <<
"The function encountered with errors: no experimental run was found ("
29
<< run_numbers[
i
].
period_number
<<
":"
<< run_numbers[
i
].
run_number
<<
"). This run will be skipped!"
30
<< endl;
31
continue
;
32
}
33
pRun->
SetFieldVoltage
(&field_voltage);
34
delete
pRun;
35
36
cout <<
"Average magnetic field for run "
<< run_numbers[
i
].
period_number
<<
"-"
<< run_numbers[
i
].
run_number
37
<<
": "
<< field_voltage <<
" mV"
<< endl;
38
}
39
40
delete
run_numbers;
41
cout <<
"Macro finished successfully"
<< endl;
42
}
43
44
void
convert_current_2_voltage
(
int
period)
45
{
46
UniqueRunNumber
* run_numbers;
47
int
run_count =
UniRun::GetRunNumbers
(run_numbers, period, 1, period, 100000);
48
if
(run_count <= 0)
49
return
;
50
51
const
char
* detector_name =
"magnet"
;
52
const
char
* parameter_name =
"field_current"
;
53
54
for
(
int
i
= 0;
i
< run_count;
i
++) {
55
// get the field current from parameter values of the Unified Condition Database
56
UniDetectorParameter
* pDetectorParameter =
UniDetectorParameter::GetDetectorParameter
(
57
detector_name, parameter_name, run_numbers[
i
].
period_number
, run_numbers[
i
].
run_number
);
58
if
(pDetectorParameter ==
nullptr
) {
59
cout <<
"No field current was found for run ("
<< run_numbers[
i
].
period_number
<<
":"
60
<< run_numbers[
i
].
run_number
<<
")"
<< endl;
61
continue
;
62
}
63
int
field_current = ((
IntValue
*)pDetectorParameter->
GetValue
())->value;
64
delete
pDetectorParameter;
65
66
// convert current to voltage approximately
67
double
field_voltage = field_current / 900.0 * 55.87;
68
69
// get run
70
UniRun
* pRun =
UniRun::GetRun
(run_numbers[
i
].
period_number
, run_numbers[
i
].
run_number
);
71
if
(pRun ==
nullptr
) {
72
cout <<
"The function encountered with errors: no experimental run was found ("
73
<< run_numbers[
i
].
period_number
<<
":"
<< run_numbers[
i
].
run_number
<<
"). This run will be skipped!"
74
<< endl;
75
continue
;
76
}
77
78
double
* current_voltage = pRun->
GetFieldVoltage
();
79
if
(current_voltage ==
nullptr
) {
80
pRun->
SetFieldVoltage
(&field_voltage);
81
cout <<
"Field voltage was written for run "
<< run_numbers[
i
].
period_number
<<
"-"
82
<< run_numbers[
i
].
run_number
<<
": "
<< field_voltage <<
" mV"
<< endl;
83
}
else
84
cout <<
"Field voltage exists for run "
<< run_numbers[
i
].
period_number
<<
"-"
<< run_numbers[
i
].
run_number
85
<<
": "
<< *current_voltage <<
" mV"
<< endl;
86
87
delete
pRun;
88
}
89
90
delete
run_numbers;
91
cout <<
"Macro finished successfully"
<< endl;
92
}
i
int i
Definition
P4_F32vec4.h:22
UniDetectorParameter
Definition
UniDetectorParameter.h:23
UniDetectorParameter::GetValue
int GetValue(vector< UniValue * > ¶meter_value)
get value of detector parameter presented by an array
Definition
UniDetectorParameter.cxx:1109
UniDetectorParameter::GetDetectorParameter
static UniDetectorParameter * GetDetectorParameter(int value_id)
get detector parameter from the database
Definition
UniDetectorParameter.cxx:165
UniRun
UniRun.h Class for the table: run_.
Definition
UniRun.h:21
UniRun::GetRun
static UniRun * GetRun(int period_number, int run_number)
get run from the database
Definition
UniRun.cxx:161
UniRun::GetFieldVoltage
double * GetFieldVoltage()
get field voltage of the current run
Definition
UniRun.h:121
UniRun::GetRunNumbers
static int GetRunNumbers(UniqueRunNumber *&run_numbers, int start_period, int start_run=0, int end_period=-1, int end_run=-1)
get numbers of runs stored in the Database for a selected range
Definition
UniRun.cxx:804
UniRun::SetFieldVoltage
int SetFieldVoltage(double *field_voltage)
set field voltage of the current run
Definition
UniRun.cxx:665
move_field_2_run
void move_field_2_run(int period)
Definition
move_field_2_run.C:3
convert_current_2_voltage
void convert_current_2_voltage(int period)
Definition
move_field_2_run.C:44
DoubleValue
Definition
uni_db_structures.h:90
IntValue
Definition
uni_db_structures.h:70
UniqueRunNumber
Definition
uni_db_structures.h:15
UniqueRunNumber::run_number
int run_number
Definition
uni_db_structures.h:27
UniqueRunNumber::period_number
int period_number
Definition
uni_db_structures.h:26
database
examples
uni_db
temp
move_field_2_run.C
Generated on
for BmnRoot by
1.17.0