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
ECCE @ EIC Software
Deprecated List
Modules
Namespaces
Classes
Files
File List
acts
analysis
coresoftware
Doxygen_Assist
ecce-detectors
fun4all_eicdetectors
geant4
macros
blob
master
common
DisplayOn.C
ECCEStyle.C
ECCEStyle.h
G4_Aerogel.C
G4_AllSilicon.C
G4_B0ECAL.C
G4_B0Tracking_EIC.C
G4_Barrel_EIC.C
G4_Bbc.C
G4_BECAL.C
G4_BlackHole.C
G4_BMMG.C
G4_BToF.C
G4_BWD.C
G4_CEmc_Albedo.C
G4_CEmc_EIC.C
G4_CEmc_Spacal.C
G4_DIRC.C
G4_DRCALO.C
G4_dRICH.C
G4_DSTReader_EICDetector.C
G4_EEMC.C
G4_EEMC_hybrid.C
G4_EHCAL.C
G4_EToF.C
G4_EventEvaluator.C
G4_FEMC.C
G4_FEMC_EIC.C
G4_FHCAL.C
G4_FST_EIC.C
G4_FwdJets.C
G4_GEM_EIC.C
G4_Global.C
G4_HcalIn_ref.C
G4_HcalOut_ref.C
G4_hFarBwdBeamLine_EIC.C
G4_hFarFwdBeamLine_EIC.C
G4_HToF.C
G4_Input.C
G4_Jets.C
G4_KFParticle.C
G4_LFHCAL.C
G4_Magnet.C
G4_Micromegas.C
G4_mRICH.C
G4_mRwell_EIC.C
G4_Mvtx_EIC.C
G4_ParticleFlow.C
G4_Pipe.C
G4_Pipe_EIC.C
G4_Piston.C
G4_PlugDoor.C
G4_PlugDoor_EIC.C
G4_Production.C
G4_PSTOF.C
G4_RICH.C
G4_TopoClusterReco.C
G4_TPC_EIC.C
G4_Tracking_EIC.C
G4_TrackingSupport.C
G4_TRD.C
G4_TTL_EIC.C
G4_User.C
G4_World.C
GlobalVariables.C
QA.C
sPhenixStyle.C
sPhenixStyle.h
detectors
online_distribution
tutorials
doxygen_mainpage.h
File Members
External Links
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4_BECAL.C
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4_BECAL.C
1
#ifndef MACRO_G4BECAL_C
2
#define MACRO_G4BECAL_C
3
4
#include <
GlobalVariables.C
>
5
6
#include <
g4calo/RawTowerDigitizer.h
>
7
8
#include <
g4eiccalos/PHG4BarrelEcalSubsystem.h
>
9
#include <
g4eiccalos/RawTowerBuilderByHitIndexBECAL.h
>
10
11
#include <
g4eval/CaloEvaluator.h
>
12
13
#include <
g4main/PHG4Reco.h
>
14
15
#include <
eiccaloreco/RawClusterBuilderkV3.h
>
16
#include <
eiccaloreco/RawClusterBuilderHelper.h
>
17
18
#include <caloreco/RawClusterBuilderFwd.h>
19
#include <caloreco/RawClusterBuilderTemplate.h>
20
#include <caloreco/RawTowerCalibration.h>
21
22
#include <
fun4all/Fun4AllServer.h
>
23
24
R__LOAD_LIBRARY
(libcalo_reco.so)
25
R__LOAD_LIBRARY
(libg4calo.so)
26
R__LOAD_LIBRARY
(libg4eiccalos.so)
27
R__LOAD_LIBRARY
(libg4eval.so)
28
29
namespace Enable
30
{
31
bool
BECAL
=
false
;
32
bool
BECAL_ABSORBER
=
false
;
33
bool
BECAL_CELL
=
false
;
34
bool
BECAL_TOWER
=
false
;
35
bool
BECAL_CLUSTER
=
false
;
36
bool
BECAL_EVAL
=
false
;
37
bool
BECAL_OVERLAPCHECK
=
false
;
38
int
BECAL_VERBOSITY
= 0;
39
}
// namespace Enable
40
41
42
43
namespace
G4BECAL
44
{
45
46
//double minz = -273.6*cm;
47
//double maxz = 142.4*cm;
48
double
minz
= -453;
49
double
maxz
= 371;
50
double
topradius
= 138;
51
double
radius
= 80;
52
53
// this is default set to -1.5<eta<1.24 for 2018 Letter of Intent
54
// if the user changes these, the z position of the
55
56
// Digitization (default photon digi):
57
RawTowerDigitizer::enu_digi_algorithm
TowerDigi
=
RawTowerDigitizer::kSiPM_photon_digitization
;
58
// directly pass the energy of sim tower to digitized tower
59
// kNo_digitization
60
// simple digitization with photon statistics, single amplitude ADC conversion and pedestal
61
// kSimple_photon_digitization
62
// digitization with photon statistics on SiPM with an effective pixel N, ADC conversion and pedestal
63
// kSiPM_photon_digitization
64
65
}
// namespace G4BECAL
66
67
void
BECALInit
()
68
{
69
70
// update black hole settings
71
BlackHoleGeometry::max_radius
=
std::max
(
BlackHoleGeometry::max_radius
,
G4BECAL::topradius
);
72
BlackHoleGeometry::max_z
=
std::max
(
BlackHoleGeometry::max_z
,
G4BECAL::maxz
);
73
BlackHoleGeometry::min_z
=
std::min
(
BlackHoleGeometry::min_z
,
G4BECAL::minz
);
74
75
}
76
77
double
BECALSetup
(
PHG4Reco
*g4Reco)
78
{
79
80
bool
AbsorberActive =
Enable::ABSORBER
||
Enable::BECAL_ABSORBER
;
81
bool
OverlapCheck =
Enable::OVERLAPCHECK
||
Enable::BECAL_OVERLAPCHECK
;
82
83
// Update IR of BCAL to R~80cm
84
// From Nathaly Santiesteban:
85
// https://raw.githubusercontent.com/eic/fun4all_eiccalibrations/main/BarrelEcal/mapping/towerMap_BEMC_v002.txt
86
// It uses IR of 80.3.
87
ostringstream mapping_becal;
88
mapping_becal << getenv(
"CALIBRATIONROOT"
) <<
"/BarrelEcal/mapping/towerMap_BEMC_v002.txt"
;
89
90
PHG4BarrelEcalSubsystem
*becal =
new
PHG4BarrelEcalSubsystem
(
"BECAL"
);
91
becal->
set_string_param
(
"mapping_file"
, mapping_becal.str());
92
becal->
OverlapCheck
(OverlapCheck);
93
becal->
SetActive
();
94
becal->
SuperDetector
(
"BECAL"
);
95
if
(AbsorberActive) becal->
SetAbsorberActive
();
96
97
g4Reco->
registerSubsystem
(becal);
98
99
return
G4BECAL::topradius
;
100
101
}
102
103
void
BECAL_Cells
(
int
verbosity = 0)
104
{
105
return
;
106
}
107
108
void
BECAL_Towers
()
109
{
110
111
int
verbosity =
std::max
(
Enable::VERBOSITY
,
Enable::BECAL_VERBOSITY
);
112
113
Fun4AllServer
*se =
Fun4AllServer::instance
();
114
115
ostringstream mapping_BECAL;
116
mapping_BECAL << getenv(
"CALIBRATIONROOT"
) <<
"/BarrelEcal/mapping/towerMap_BEMC_v001.txt"
;
117
118
const
double
photoelectron_per_GeV = 5000;
119
120
RawTowerBuilderByHitIndexBECAL
*tower_BECAL =
new
RawTowerBuilderByHitIndexBECAL
(
"TowerBuilder_BECAL"
);
121
tower_BECAL->
Detector
(
"BECAL"
);
122
tower_BECAL->
set_sim_tower_node_prefix
(
"SIM"
);
123
tower_BECAL->
EminCut
(1
e
-7);
124
tower_BECAL->
GeometryTableFile
(mapping_BECAL.str());
125
tower_BECAL->
Verbosity
(verbosity);
126
se->
registerSubsystem
(tower_BECAL);
127
128
RawTowerDigitizer
*TowerDigitizer_BECAL =
new
RawTowerDigitizer
(
"BECALRawTowerDigitizer"
);
129
TowerDigitizer_BECAL->
Detector
(
"BECAL"
);
130
TowerDigitizer_BECAL->
Verbosity
(verbosity);
131
// TowerDigitizer_BECAL->Verbosity(verbosity);
132
TowerDigitizer_BECAL->
set_digi_algorithm
(
G4BECAL::TowerDigi
);
133
TowerDigitizer_BECAL->
set_raw_tower_node_prefix
(
"RAW"
);
134
TowerDigitizer_BECAL->
set_pedstal_central_ADC
(0);
135
TowerDigitizer_BECAL->
set_pedstal_width_ADC
(0);
// eRD1 test beam setting
136
TowerDigitizer_BECAL->
set_photonelec_ADC
(1);
// not simulating ADC discretization error
137
TowerDigitizer_BECAL->
set_photonelec_yield_visible_GeV
(photoelectron_per_GeV);
138
TowerDigitizer_BECAL->
set_zero_suppression_ADC
(0);
// eRD1 test beam setting
139
se->
registerSubsystem
(TowerDigitizer_BECAL);
140
141
RawTowerCalibration
*TowerCalibration_BECAL =
new
RawTowerCalibration
(
"BECALRawTowerCalibration"
);
142
TowerCalibration_BECAL->
Detector
(
"BECAL"
);
143
TowerCalibration_BECAL->
Verbosity
(verbosity);
144
TowerCalibration_BECAL->
set_calib_algorithm
(
RawTowerCalibration::kSimple_linear_calibration
);
145
TowerCalibration_BECAL->
set_calib_const_GeV_ADC
(1. / photoelectron_per_GeV);
146
TowerCalibration_BECAL->
set_pedstal_ADC
(0);
147
se->
registerSubsystem
(TowerCalibration_BECAL);
148
149
}
150
151
void
BECAL_Clusters
()
152
{
153
Fun4AllServer
*se =
Fun4AllServer::instance
();
154
155
RawClusterBuilderHelper
*ClusterBuilder =
new
RawClusterBuilderkV3
(
"BECALRawClusterBuilderkV3"
);
156
ClusterBuilder->
Detector
(
"BECAL"
);
157
ClusterBuilder->
set_seed_e
(0.5);
158
ClusterBuilder->
set_agg_e
(0.1);
159
se->
registerSubsystem
(ClusterBuilder);
160
161
return
;
162
}
163
164
void
BECAL_Eval
(
const
std::string &outputfile)
165
{
166
int
verbosity =
std::max
(
Enable::VERBOSITY
,
Enable::BECAL_VERBOSITY
);
167
Fun4AllServer
*se =
Fun4AllServer::instance
();
168
169
CaloEvaluator
*eval =
new
CaloEvaluator
(
"BECALEVALUATOR"
,
"BECAL"
, outputfile.c_str());
170
eval->
set_do_cluster_eval
(
false
);
171
eval->
Verbosity
(1);
172
se->
registerSubsystem
(eval);
173
174
return
;
175
}
176
#endif
macros
blob
master
common
G4_BECAL.C
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:58
using
1.8.2 with
ECCE GitHub integration