Skip to content

Commit 6fa3f62

Browse files
authored
Merge pull request #583 from SBNSoftware/feature/TriggerWorkNikkiCAFs
Update CAFMaker to fill new trigger variables
2 parents a415453 + a342ca7 commit 6fa3f62

5 files changed

Lines changed: 71 additions & 2 deletions

File tree

sbncode/CAFMaker/CAFMakerParams.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,30 @@ namespace caf
417417
"emuTriggerUnshifted"
418418
};
419419

420+
Atom<art::InputTag> MonPulsesTriggerLabel {
421+
Name("MonPulsesTriggerLabel"),
422+
Comment("Label of trigger emulation product MonPulses (number of PMT pairs above threshold for all channels) for all flashes."),
423+
art::InputTag("opdaq", "MonPulses", "DetSim")
424+
};
425+
426+
Atom<art::InputTag> MonPulseSizesTriggerLabel {
427+
Name("MonPulseSizesTriggerLabel"),
428+
Comment("Label of trigger emulation product MonPulses Sizes, which gives the length of each trigger response in MonPulses."),
429+
art::InputTag("opdaq", "MonPulseSizes", "DetSim")
430+
};
431+
432+
Atom<art::InputTag> PairsTriggerLabel {
433+
Name("PairsTriggerLabel"),
434+
Comment("Label of number of PMT pairs over threshold."),
435+
art::InputTag("opdaq", "pairsOverThreshold", "DetSim")
436+
};
437+
438+
Atom<art::InputTag> EmulatedTriggerLabel {
439+
Name("EmulatedTriggerLabel"),
440+
Comment("Label of bool of passing the trigger."),
441+
art::InputTag("opdaq", "triggerEmulation", "DetSim")
442+
};
443+
420444
Atom<string> FlashTrigLabel {
421445
Name("FlashTrigLabel"),
422446
Comment("Label of bool of passing flash trigger."),

sbncode/CAFMaker/CAFMaker_module.cc

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1600,7 +1600,7 @@ void CAFMaker::produce(art::Event& evt) noexcept {
16001600
//#######################################################
16011601
// Fill detector & reco
16021602
//#######################################################
1603-
1603+
16041604
//Beam gate and Trigger info
16051605
art::Handle<sbn::ExtraTriggerInfo> extratrig_handle;
16061606
GetByLabelStrict(evt, fParams.TriggerLabel().encode(), extratrig_handle);
@@ -1612,16 +1612,40 @@ void CAFMaker::produce(art::Event& evt) noexcept {
16121612
if (!isRealData)
16131613
GetByLabelStrict(evt, fParams.UnshiftedTriggerLabel().encode(), unshifted_trig_handle);
16141614

1615+
//Trigger emulation handles
1616+
art::Handle<std::vector<int>> monpulses_handle;
1617+
GetByLabelStrict(evt, fParams.MonPulsesTriggerLabel().encode(), monpulses_handle);
1618+
1619+
art::Handle<std::vector<int>> monpulse_sizes_handle;
1620+
GetByLabelStrict(evt, fParams.MonPulseSizesTriggerLabel().encode(), monpulse_sizes_handle);
1621+
1622+
art::Handle<int> pairs_handle;
1623+
GetByLabelStrict(evt, fParams.PairsTriggerLabel().encode(), pairs_handle);
1624+
1625+
art::Handle<bool> trigemu_handle;
1626+
GetByLabelStrict(evt, fParams.EmulatedTriggerLabel().encode(), trigemu_handle);
1627+
1628+
// Check trigger handles
16151629
const bool isValidTrigger = extratrig_handle.isValid() && trig_handle.isValid() && trig_handle->size() == 1;
16161630
const bool isValidUnshiftedTrigger = unshifted_trig_handle.isValid() && unshifted_trig_handle->size() == 1;
1631+
const bool isValidEmulationTrigger = monpulses_handle.isValid() && monpulse_sizes_handle.isValid() && pairs_handle.isValid() && trigemu_handle.isValid();
16171632

16181633
const double triggerShift = (isValidUnshiftedTrigger && isValidTrigger)?
16191634
unshifted_trig_handle->at(0).TriggerTime() - trig_handle->at(0).TriggerTime() : 0.;
16201635

1636+
// Fill local ExtraTriggerInfo struct
1637+
sbn::ExtraTriggerInfo extratrig;
1638+
if (extratrig_handle.isValid()) extratrig = *extratrig_handle;
1639+
16211640
caf::SRTrigger srtrigger;
16221641
if (isValidTrigger) {
16231642
FillTrigger(*extratrig_handle, trig_handle->at(0), srtrigger, triggerShift);
16241643
}
1644+
// Fill trigger emulation information
1645+
if (isValidEmulationTrigger) {
1646+
FillTriggerEmulation(monpulses_handle, monpulse_sizes_handle, pairs_handle, trigemu_handle, srtrigger);
1647+
}
1648+
16251649
// If not real data, fill in enough of the SRTrigger to make (e.g.) the CRT
16261650
// time referencing work. TODO: add more stuff to a "MC"-Trigger?
16271651
// No longer needed with incorporation of trigger emulation in the MC.

sbncode/CAFMaker/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ art_make_library( LIBRARY_NAME sbncode_CAFMaker
3636
sbnobj::Common_Reco
3737
sbnobj::Common_Analysis
3838
sbnobj::Common_PMT_Data
39+
sbnobj::Common_Trigger
3940
sbnobj::SBND_CRT
4041
sbnobj::SBND_Timing
4142
lardataalg::DetectorInfo

sbncode/CAFMaker/FillTrigger.cxx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ namespace caf
2626
triggerInfo.trigger_count = addltrig_info.triggerCount;
2727
triggerInfo.gate_count = addltrig_info.gateCount;
2828
triggerInfo.gate_delta = addltrig_info.gateCountFromPreviousTrigger;
29+
2930
}
3031

3132
void FillTriggerMC(double absolute_time, caf::SRTrigger& triggerInfo) {
@@ -35,7 +36,6 @@ namespace caf
3536
// Set this to 0 since the "MC" trigger is (for now) always at the spill time
3637
triggerInfo.trigger_within_gate = 0.;
3738

38-
// TODO: fill others?
3939
}
4040

4141
void FillTriggerSBND(caf::SRSBNDTimingInfo& timingInfo, caf::SRTrigger& triggerInfo){
@@ -49,4 +49,17 @@ namespace caf
4949
triggerInfo.trigger_within_gate = diff_ts;
5050
}
5151

52+
void FillTriggerEmulation(art::Handle<std::vector<int>> const& monpulsesFlat,
53+
art::Handle<std::vector<int>> const& monpulseSizes,
54+
art::Handle<int> const& numPairs,
55+
art::Handle<bool> const& passedTrig,
56+
caf::SRTrigger& triggerInfo) {
57+
58+
triggerInfo.monpulses_flat = *monpulsesFlat;
59+
triggerInfo.monpulse_sizes = *monpulseSizes;
60+
triggerInfo.num_pairs_over_threshold = *numPairs;
61+
triggerInfo.passed_trigger = *passedTrig;
62+
63+
}
64+
5265
}

sbncode/CAFMaker/FillTrigger.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "sbnanaobj/StandardRecord/SRTrigger.h"
77
#include "sbnanaobj/StandardRecord/SRSBNDTimingInfo.h"
88
#include "lardataobj/RawData/TriggerData.h"
9+
#include "art/Framework/Principal/Handle.h"
910

1011
#include <vector>
1112

@@ -20,6 +21,12 @@ namespace caf
2021
void FillTriggerMC(double absolute_time, caf::SRTrigger& triggerInfo);
2122

2223
void FillTriggerSBND(caf::SRSBNDTimingInfo& timingInfo, caf::SRTrigger& triggerInfo);
24+
25+
void FillTriggerEmulation(art::Handle<std::vector<int>> const& monpulsesFlat,
26+
art::Handle<std::vector<int>> const& monpulseSizes,
27+
art::Handle<int> const& numPairs,
28+
art::Handle<bool> const& passedTrig,
29+
caf::SRTrigger& triggerInfo);
2330
}
2431

2532
#endif

0 commit comments

Comments
 (0)