Skip to content

Commit b9afc9f

Browse files
authored
Merge pull request #589 from SBNSoftware/feature/rtriozzi_HWTriggerInfoToCAFs_v10_06_00_01
Add ICARUS HW trigger information to CAFs
2 parents 6d6dcbf + 7b24207 commit b9afc9f

3 files changed

Lines changed: 25 additions & 16 deletions

File tree

sbncode/CAFMaker/CAFMaker_module.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1703,6 +1703,8 @@ void CAFMaker::produce(art::Event& evt) noexcept {
17031703
caf::SRTrigger srtrigger;
17041704
if (isValidTrigger) {
17051705
FillTrigger(*extratrig_handle, trig_handle->at(0), srtrigger, triggerShift);
1706+
if (fDet == kICARUS)
1707+
FillTriggerICARUS(*extratrig_handle, srtrigger);
17061708
}
17071709
// Fill trigger emulation information
17081710
if (isValidEmulationTrigger) {

sbncode/CAFMaker/FillTrigger.cxx

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,16 @@
44
namespace caf
55
{
66
void FillTrigger(const sbn::ExtraTriggerInfo& addltrig_info,
7-
const raw::Trigger& trig,
8-
caf::SRTrigger& triggerInfo,
9-
const double time_offset = 0.0)
7+
const raw::Trigger& trig,
8+
caf::SRTrigger& triggerInfo,
9+
const double time_offset = 0.0)
1010
{
1111
triggerInfo.global_trigger_time = addltrig_info.triggerTimestamp;
1212
triggerInfo.beam_gate_time_abs = addltrig_info.beamGateTimestamp;
1313
triggerInfo.beam_gate_det_time = trig.BeamGateTime() + time_offset;
1414
triggerInfo.global_trigger_det_time = trig.TriggerTime() + time_offset;
15-
std::cout << "Gen triggerInfo.global_trigger_det_time: " << triggerInfo.global_trigger_det_time << std::endl;
16-
std::cout << "Gen triggerInfo.beam_gate_det_time: " << triggerInfo.beam_gate_det_time << std::endl;
1715
double diff_ts = triggerInfo.global_trigger_det_time - triggerInfo.beam_gate_det_time;
18-
std::cout << "diff_ts: " << diff_ts << std::endl;
1916
triggerInfo.trigger_within_gate = diff_ts;
20-
2117
triggerInfo.prev_global_trigger_time = addltrig_info.previousTriggerTimestamp;
2218
triggerInfo.source_type = sbn::bits::value(addltrig_info.sourceType);
2319
triggerInfo.trigger_type = sbn::bits::value(addltrig_info.triggerType);
@@ -29,23 +25,34 @@ namespace caf
2925

3026
}
3127

32-
void FillTriggerMC(double absolute_time, caf::SRTrigger& triggerInfo) {
28+
void FillTriggerMC(double absolute_time, caf::SRTrigger& triggerInfo)
29+
{
3330
triggerInfo.global_trigger_time = absolute_time;
3431
triggerInfo.beam_gate_time_abs = absolute_time;
32+
triggerInfo.trigger_within_gate = 0.; // Set this to 0 since the "MC" trigger is (for now) always at the spill time
33+
}
3534

36-
// Set this to 0 since the "MC" trigger is (for now) always at the spill time
37-
triggerInfo.trigger_within_gate = 0.;
35+
void FillTriggerICARUS(const sbn::ExtraTriggerInfo& addltrig_info,
36+
caf::SRTrigger& triggerInfo)
37+
{
38+
// Choose the cryostat that triggered first (if both are available)
39+
int const cryo = addltrig_info.cryostats[sbn::ExtraTriggerInfo::EastCryostat].beamToTrigger < addltrig_info.cryostats[sbn::ExtraTriggerInfo::WestCryostat].beamToTrigger
40+
? sbn::ExtraTriggerInfo::EastCryostat
41+
: sbn::ExtraTriggerInfo::WestCryostat;
3842

43+
sbn::ExtraTriggerInfo::CryostatInfo const& cryoInfo = addltrig_info.cryostats[cryo];
44+
if (cryoInfo.hasTrigger()) {
45+
triggerInfo.trigger_cryo_source = cryo;
46+
triggerInfo.trigger_logic_bits = cryoInfo.triggerLogicBits;
47+
triggerInfo.gate_to_trigger_time = static_cast<float>(cryoInfo.beamToTrigger) / 1000.0f; // [us]
48+
}
3949
}
4050

4151
void FillTriggerSBND(caf::SRSBNDTimingInfo& timingInfo, caf::SRTrigger& triggerInfo){
4252

4353
triggerInfo.global_trigger_time = timingInfo.hltEtrig;
4454
triggerInfo.beam_gate_time_abs = timingInfo.hltBeamGate;
45-
std::cout << "triggerInfo.global_trigger_det_time: " << triggerInfo.global_trigger_det_time << std::endl;
46-
std::cout << "triggerInfo.beam_gate_det_time: " << triggerInfo.beam_gate_det_time << std::endl;
4755
double diff_ts = triggerInfo.global_trigger_det_time - triggerInfo.beam_gate_det_time;
48-
std::cout << "diff_ts: " << diff_ts << std::endl;
4956
triggerInfo.trigger_within_gate = diff_ts;
5057
}
5158

sbncode/CAFMaker/FillTrigger.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@
88
#include "lardataobj/RawData/TriggerData.h"
99
#include "art/Framework/Principal/Handle.h"
1010

11-
#include <vector>
12-
1311
namespace caf
1412
{
15-
1613
void FillTrigger(const sbn::ExtraTriggerInfo& addltrig_info,
1714
const raw::Trigger& trig_info,
1815
caf::SRTrigger& triggerInfo,
1916
const double time_offset);
2017

2118
void FillTriggerMC(double absolute_time, caf::SRTrigger& triggerInfo);
2219

20+
void FillTriggerICARUS(const sbn::ExtraTriggerInfo& addltrig_info,
21+
caf::SRTrigger& triggerInfo);
22+
2323
void FillTriggerSBND(caf::SRSBNDTimingInfo& timingInfo, caf::SRTrigger& triggerInfo);
2424

2525
void FillTriggerEmulation(art::Handle<std::vector<int>> const& monpulsesFlat,

0 commit comments

Comments
 (0)