Skip to content

Commit 24443ac

Browse files
author
Ibrahim Safa
committed
Merge branch 'release/v09_89_01_01'
Patch of v09_89_01 to include ML reco PRs
2 parents 27ba765 + d49041d commit 24443ac

File tree

6 files changed

+49
-15
lines changed

6 files changed

+49
-15
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
1717

1818
find_package(cetmodules 3.20.00 REQUIRED)
19-
project(sbncode VERSION 09.89.01 LANGUAGES CXX)
19+
project(sbncode VERSION 09.89.01.01 LANGUAGES CXX)
2020

2121
message(STATUS "\n\n ========================== ${PROJECT_NAME} ==========================")
2222

sbncode/CAFMaker/CAFMakerParams.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ namespace caf
5252
rndm::SeedAtom FakeRecoRandomSeed { Name("FakeRecoRandomSeed"),
5353
Comment("fix the random seed for the truth-based reconstruction")
5454
};
55-
55+
5656
rndm::SeedAtom BlindingRandomSeed { Name("BlindingRandomSeed"),
5757
Comment("fix the random seed for the blinding")
5858
};
59-
59+
6060
Atom<std::string> DetectorOverride { Name("DetectorOverride"),
6161
Comment("Override the automatically detectected detector using 'sbnd' or 'icarus'. This parameter should usually be unset - ''"),
6262
""
@@ -180,7 +180,7 @@ namespace caf
180180
"crumbs"
181181
};
182182

183-
Atom<string> OpT0Label {
183+
Atom<string> OpT0Label {
184184
Name("OpT0Label"),
185185
Comment("Base label of OpT0Finder producer"),
186186
"opt0finder"
@@ -354,6 +354,12 @@ namespace caf
354354
"daqTrigger"
355355
};
356356

357+
Atom<art::InputTag> UnshiftedTriggerLabel {
358+
Name("UnshiftedTriggerLabel"),
359+
Comment("Label of trigger emulation before applying trigger time shifts."),
360+
"emuTriggerUnshifted"
361+
};
362+
357363
Atom<string> FlashTrigLabel {
358364
Name("FlashTrigLabel"),
359365
Comment("Label of bool of passing flash trigger."),

sbncode/CAFMaker/CAFMaker_module.cc

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,9 +1392,19 @@ void CAFMaker::produce(art::Event& evt) noexcept {
13921392
art::Handle<std::vector<raw::Trigger>> trig_handle;
13931393
GetByLabelStrict(evt, fParams.TriggerLabel().encode(), trig_handle);
13941394

1395+
art::Handle<std::vector<raw::Trigger>> unshifted_trig_handle;
1396+
if (!isRealData)
1397+
GetByLabelStrict(evt, fParams.UnshiftedTriggerLabel().encode(), unshifted_trig_handle);
1398+
1399+
const bool isValidTrigger = extratrig_handle.isValid() && trig_handle.isValid() && trig_handle->size() == 1;
1400+
const bool isValidUnshiftedTrigger = unshifted_trig_handle.isValid() && unshifted_trig_handle->size() == 1;
1401+
1402+
const double triggerShift = (isValidUnshiftedTrigger && isValidTrigger)?
1403+
unshifted_trig_handle->at(0).TriggerTime() - trig_handle->at(0).TriggerTime() : 0.;
1404+
13951405
caf::SRTrigger srtrigger;
1396-
if (extratrig_handle.isValid() && trig_handle.isValid() && trig_handle->size() == 1) {
1397-
FillTrigger(*extratrig_handle, trig_handle->at(0), srtrigger);
1406+
if (isValidTrigger) {
1407+
FillTrigger(*extratrig_handle, trig_handle->at(0), srtrigger, triggerShift);
13981408
}
13991409
// If not real data, fill in enough of the SRTrigger to make (e.g.) the CRT
14001410
// time referencing work. TODO: add more stuff to a "MC"-Trigger?
@@ -1933,7 +1943,7 @@ void CAFMaker::produce(art::Event& evt) noexcept {
19331943
const sbn::PFPCNNScore *cnnScores = fmCNNScores.at(iPart).at(0).get();
19341944
FillCNNScores(thisParticle, cnnScores, pfp);
19351945
}
1936-
1946+
19371947
if (!thisTrack.empty()) { // it has a track!
19381948
assert(thisTrack.size() == 1);
19391949

@@ -2112,7 +2122,23 @@ void CAFMaker::produce(art::Event& evt) noexcept {
21122122
// time from MC.
21132123
//
21142124
// PMT's:
2115-
double PMT_reference_time = fParams.ReferencePMTFromTriggerToBeam() ? srtrigger.trigger_within_gate : 0.;
2125+
//
2126+
// TW (2024-03-29): In MC, when an event doesn't fire the trigger, the raw::Trigger will be
2127+
// filled with the default values, which are set to the numerical limits of double.
2128+
// In this case, we should set the PMT_reference_time to 0.
2129+
2130+
const bool hasValidTriggerTime =
2131+
srtrigger.global_trigger_det_time >
2132+
(std::numeric_limits<double>::min() + std::numeric_limits<double>::epsilon()) &&
2133+
srtrigger.global_trigger_det_time <
2134+
(std::numeric_limits<double>::max() - std::numeric_limits<double>::epsilon());
2135+
2136+
double PMT_reference_time = fParams.ReferencePMTFromTriggerToBeam() && hasValidTriggerTime ? triggerShift : 0.;
2137+
2138+
mf::LogInfo("CAFMaker") << "Setting PMT reference time to " << PMT_reference_time << " us\n"
2139+
<< " Trigger Time = " << srtrigger.global_trigger_det_time << " us\n"
2140+
<< " Beam Gate Time = " << srtrigger.beam_gate_det_time << " us";
2141+
21162142
FixPMTReferenceTimes(rec, PMT_reference_time);
21172143

21182144
// TODO: TPC?

sbncode/CAFMaker/FillTrigger.cxx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ namespace caf
55
{
66
void FillTrigger(const sbn::ExtraTriggerInfo& addltrig_info,
77
const raw::Trigger& trig,
8-
caf::SRTrigger& triggerInfo)
8+
caf::SRTrigger& triggerInfo,
9+
const double time_offset = 0.0)
910
{
1011
triggerInfo.global_trigger_time = addltrig_info.triggerTimestamp;
1112
triggerInfo.beam_gate_time_abs = addltrig_info.beamGateTimestamp;
12-
triggerInfo.beam_gate_det_time = trig.BeamGateTime();
13-
triggerInfo.global_trigger_det_time = trig.TriggerTime();
13+
triggerInfo.beam_gate_det_time = trig.BeamGateTime() + time_offset;
14+
triggerInfo.global_trigger_det_time = trig.TriggerTime() + time_offset;
1415
double diff_ts = triggerInfo.global_trigger_det_time - triggerInfo.beam_gate_det_time;
1516
triggerInfo.trigger_within_gate = diff_ts;
1617
}
@@ -20,9 +21,9 @@ namespace caf
2021
triggerInfo.beam_gate_time_abs = absolute_time;
2122

2223
// Set this to 0 since the "MC" trigger is (for now) always at the spill time
23-
triggerInfo.trigger_within_gate = 0.;
24+
triggerInfo.trigger_within_gate = 0.;
2425

2526
// TODO: fill others?
2627
}
27-
28+
2829
}

sbncode/CAFMaker/FillTrigger.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ namespace caf
1212

1313
void FillTrigger(const sbn::ExtraTriggerInfo& addltrig_info,
1414
const raw::Trigger& trig_info,
15-
caf::SRTrigger& triggerInfo);
15+
caf::SRTrigger& triggerInfo,
16+
const double time_offset);
1617

1718
void FillTriggerMC(double absolute_time, caf::SRTrigger& triggerInfo);
1819

0 commit comments

Comments
 (0)