Skip to content

Commit d4c2a84

Browse files
JYoo001tvami
andauthored
Update filters to take gen energy for 8 GeV Update (#1715)
* Filter default updated, changes in ecal, target, eat * No defaults in the filter file, but required to add the values where the filters are used --------- Co-authored-by: Tamas Vami <[email protected]>
1 parent 9785ee2 commit d4c2a84

File tree

3 files changed

+45
-49
lines changed

3 files changed

+45
-49
lines changed

Biasing/python/ecal.py

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,14 @@ def photo_nuclear( detector, generator ) :
5151
sim.setDetector( detector , True )
5252

5353
# Set run parameters
54+
xsec_bias_threshold = 0.625 * generator.energy * 1000.
55+
tagger_threshold = 0.95 * generator.energy * 1000.
56+
recoil_max_p = 0.375 * generator.energy * 1000.
57+
brem_min_e = 0.625 * generator.energy * 1000.
5458
if generator.energy == 8.0:
5559
xsec_bias = 550.
56-
xsec_bias_threshold = 5000.
57-
tagger_threshold = 7600.
58-
recoil_max_p = 3000.
59-
brem_min_e = 5000.
6060
else:
6161
xsec_bias = 450.
62-
xsec_bias_threshold = 2500.
63-
tagger_threshold = 3800.
64-
recoil_max_p = 1500.
65-
brem_min_e = 2500.
6662

6763
sim.description = "ECal photo-nuclear, xsec bias " + str(xsec_bias) + " xsec threshold " + str(xsec_bias_threshold) + " GeV"
6864
sim.beamSpotSmear = [20., 80., 0.] #mm
@@ -98,18 +94,14 @@ def nonfiducial_photo_nuclear( detector, generator ) :
9894
sim.setDetector( detector , True )
9995

10096
# Set run parameters
97+
xsec_bias_threshold = 0.625 * generator.energy * 1000.
98+
tagger_threshold = 0.95 * generator.energy * 1000.
99+
recoil_max_p = 0.375 * generator.energy * 1000.
100+
brem_min_e = 0.625 * generator.energy * 1000.
101101
if generator.energy == 8.0:
102-
xsec_bias = 550.
103-
xsec_bias_threshold = 5000.
104-
tagger_threshold = 7600.
105-
recoil_max_p = 3000.
106-
brem_min_e = 5000.
102+
xsec_bias = 550.
107103
else:
108104
xsec_bias = 450.
109-
xsec_bias_threshold = 2500.
110-
tagger_threshold = 3800.
111-
recoil_max_p = 1500.
112-
brem_min_e = 2500.
113105

114106
sim.description = "Non-fiducial ECal photo-nuclear, xsec bias " + str(xsec_bias) + " xsec threshold " + str(xsec_bias_threshold) + " GeV"
115107
sim.generators.append( generator )
@@ -126,7 +118,7 @@ def nonfiducial_photo_nuclear( detector, generator ) :
126118
# Only consider events where a hard brem occurs
127119
filters.TargetBremFilter(recoil_max_p = recoil_max_p, brem_min_e = brem_min_e),
128120
# Only considers events that are Non-Fiducial (Doesn't enter an ECal volume)
129-
filters.NonFiducialFilter(),
121+
filters.NonFiducialFilter(recoil_max_momentum = recoil_max_p),
130122
# Only consider events where a PN reaction happens in the ECal
131123
filters.EcalProcessFilter(),
132124
# Tag all photo-nuclear tracks to persist them to the event.
@@ -167,18 +159,15 @@ def gamma_mumu(detector, generator) :
167159
sim.setDetector( detector, True )
168160

169161
# Set run parameters
162+
xsec_bias_threshold = 0.625 * generator.energy * 1000.
163+
tagger_threshold = 0.95 * generator.energy * 1000.
164+
recoil_max_p = 0.375 * generator.energy * 1000.
165+
brem_min_e = 0.625 * generator.energy * 1000.
170166
if generator.energy == 8.0:
171167
xsec_bias = 1.E5
172-
xsec_bias_threshold = 5000.
173-
tagger_threshold = 7600.
174-
recoil_max_p = 3000.
175-
brem_min_e = 5000.
168+
176169
else:
177170
xsec_bias = 3.E4
178-
xsec_bias_threshold = 2500.
179-
tagger_threshold = 3800.
180-
recoil_max_p = 1500.
181-
brem_min_e = 2500.
182171

183172
sim.description = "gamma --> mu+ mu-, xsec bias " + str(xsec_bias) + " xsec threshold " + str(xsec_bias_threshold) + " GeV"
184173
sim.generators.append(generator)
@@ -210,12 +199,11 @@ def deep_photo_nuclear( detector, generator, bias_threshold, processes, ecal_min
210199

211200
# Set run parameters
212201
# Set run parameters
202+
xsec_bias_threshold = 0.625 * generator.energy * 1000.
213203
if generator.energy == 8.0:
214204
xsec_bias = 550.
215-
xsec_bias_threshold = 5000.
216205
else:
217206
xsec_bias = 450.
218-
xsec_bias_threshold = 2500.
219207

220208
sim.description = "deep ECal photo-nuclear, xsec bias " + str(xsec_bias) + " xsec threshold " + str(xsec_bias_threshold) + " GeV"
221209
sim.beamSpotSmear = [20., 80., 0.] #mm

Biasing/python/filters.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class TargetBremFilter(simcfg.UserAction):
2929
Should we kill the recoil electron track for a worst case scenario?
3030
"""
3131

32-
def __init__(self,recoil_max_p = 1500.,brem_min_e = 2500.) :
32+
def __init__(self,recoil_max_p,brem_min_e) :
3333
super().__init__("target_brem_filter", "biasing::TargetBremFilter")
3434

3535
from LDMX.Biasing import include
@@ -50,7 +50,7 @@ class NonFiducialFilter(simcfg.UserAction):
5050
If true, aborts fiducial events. Otherwise, the fiducial events will be only tagged
5151
"""
5252

53-
def __init__(self,recoil_max_momentum = 1500., abort_fid_event = True) :
53+
def __init__(self,recoil_max_momentum, abort_fid_event = True) :
5454
super().__init__("nonfiducial_filter", "biasing::NonFiducialFilter")
5555

5656
from LDMX.Biasing import include
@@ -113,7 +113,7 @@ class TargetENFilter(simcfg.UserAction) :
113113
Maximum energy recoil electron is allowed to have [MeV]
114114
"""
115115

116-
def __init__(self,recoil_thresh = 2500.) :
116+
def __init__(self,recoil_thresh) :
117117
super().__init__("target_en_process_filter","biasing::TargetENProcessFilter")
118118

119119
from LDMX.Biasing import include
@@ -188,7 +188,7 @@ class TaggerVetoFilter(simcfg.UserAction):
188188
Also veto events where the primary particle misses the tagger region
189189
"""
190190

191-
def __init__(self,thresh=3800., reject_events_missing_tagger=True) :
191+
def __init__(self,thresh, reject_events_missing_tagger=True) :
192192
super().__init__('tagger_veto_filter','biasing::TaggerVetoFilter')
193193

194194
from LDMX.Biasing import include

Biasing/python/target.py

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,11 @@ def electro_nuclear( detector, generator ) :
5757
includeBiasing.library()
5858

5959
# Configure the sequence in which user actions should be called.
60+
recoil_thresh = 0.625 * generator.energy * 1000.
61+
tagger_threshold = 0.95 * generator.energy * 1000.
6062
sim.actions.extend([
61-
filters.TaggerVetoFilter(),
62-
filters.TargetENFilter(2500.),
63+
filters.TaggerVetoFilter(thresh = tagger_threshold),
64+
filters.TargetENFilter(recoil_thresh),
6365
util.TrackProcessFilter.electro_nuclear()
6466
])
6567

@@ -100,18 +102,15 @@ def photo_nuclear( detector, generator ) :
100102
sim.setDetector( detector , True )
101103

102104
# Set run parameters
105+
xsec_bias_threshold = 0.625 * generator.energy * 1000.
106+
tagger_threshold = 0.95 * generator.energy * 1000.
107+
recoil_max_p = 0.375 * generator.energy * 1000.
108+
brem_min_e = 0.625 * generator.energy * 1000.
103109
if generator.energy == 8.0:
104110
xsec_bias = 550.
105-
xsec_bias_threshold = 5000.
106-
tagger_threshold = 7600.
107-
recoil_max_p = 3000.
108-
brem_min_e = 5000.
111+
109112
else:
110113
xsec_bias = 450.
111-
xsec_bias_threshold = 2500.
112-
tagger_threshold = 3800.
113-
recoil_max_p = 1500.
114-
brem_min_e = 2500.
115114

116115
sim.description = "ECal photo-nuclear, xsec bias " + str(xsec_bias) + " xsec threshold " + str(xsec_bias_threshold) + " GeV"
117116
sim.beamSpotSmear = [20., 80., 0.]
@@ -139,9 +138,9 @@ def photo_nuclear( detector, generator ) :
139138
def gamma_mumu( detector, generator ) :
140139
"""Example configuration for biasing gamma to mu+ mu- conversions in the target.
141140
142-
In this particular example, 4 GeV electrons are fired upstream of the
141+
In this particular example, 8 GeV electrons are fired upstream of the
143142
tagger tracker. The TargetBremFilter filters out all events that don't
144-
produced a brem in the target with an energy greater than 2.5 GeV.
143+
produced a brem in the target with an energy greater than 5 GeV.
145144
146145
Parameters
147146
----------
@@ -171,6 +170,15 @@ def gamma_mumu( detector, generator ) :
171170
sim.description = "gamma -> mu+ mu-, xsec bias 10e9"
172171
sim.beamSpotSmear = [20., 80., 0.]
173172

173+
tagger_threshold = 0.95 * generator.energy * 1000.
174+
recoil_max_p = 0.375 * generator.energy * 1000.
175+
brem_min_e = 0.625 * generator.energy * 1000.
176+
if generator.energy == 8.0:
177+
xsec_bias = 550.
178+
179+
else:
180+
xsec_bias = 450.
181+
174182
sim.generators.append(generator)
175183

176184
# Enable and configure the biasing
@@ -182,8 +190,8 @@ def gamma_mumu( detector, generator ) :
182190
# Configure the sequence in which user actions should be called.
183191
sim.actions.extend([
184192
# Only consider events where a hard brem occurs
185-
filters.TaggerVetoFilter(),
186-
filters.TargetBremFilter(),
193+
filters.TaggerVetoFilter(thresh = tagger_threshold),
194+
filters.TargetBremFilter(recoil_max_p = recoil_max_p, brem_min_e = brem_min_e),
187195
filters.TargetGammaMuMuFilter(),
188196
util.TrackProcessFilter.gamma_mumu()
189197
])
@@ -193,7 +201,7 @@ def gamma_mumu( detector, generator ) :
193201
def dark_brem( ap_mass , lhe, detector) :
194202
"""Example configuration for producing dark brem interactions in the target.
195203
196-
This configures the sim to fire a 4 GeV electron upstream of the
204+
This configures the sim to fire a 8 GeV electron upstream of the
197205
tagger tracker. The dark-photon production cross-section is biased up in
198206
the target. Only events that result in a dark-photon being produced in the
199207
target are kept.
@@ -246,9 +254,9 @@ def dark_brem( ap_mass , lhe, detector) :
246254
]
247255

248256
sim.actions.extend([
249-
#make sure electron reaches target with 3.5GeV
257+
#make sure electron reaches target with 7 GeV
250258
filters.TaggerVetoFilter(7000.),
251-
#make sure dark brem occurs in the target where A' has at least 2GeV
259+
#make sure dark brem occurs in the target where A' has at least 4GeV
252260
filters.TargetDarkBremFilter(4000.),
253261
#keep all prodcuts of dark brem(A' and recoil electron)
254262
util.TrackProcessFilter.dark_brem()

0 commit comments

Comments
 (0)