Skip to content

Commit 340f043

Browse files
committed
Update CafMaker for refactoring frameshift module
1 parent 2daacc4 commit 340f043

3 files changed

Lines changed: 85 additions & 76 deletions

File tree

sbncode/CAFMaker/CAFMaker_module.cc

Lines changed: 54 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -327,8 +327,8 @@ class CAFMaker : public art::EDProducer {
327327
void FixPMTReferenceTimes(StandardRecord &rec, double PMT_reference_time);
328328
void FixCRTReferenceTimes(StandardRecord &rec, double CRTT0_reference_time, double CRTT1_reference_time);
329329

330-
//void SBNDShiftCRTReference(StandardRecord &rec, double SBNDFrame) const;
331-
//void SBNDShiftPMTReference(StandardRecord &rec, double SBNDFrame) const;
330+
void SBNDShiftCRTReference(StandardRecord &rec, double SBNDFrame) const;
331+
void SBNDShiftPMTReference(StandardRecord &rec, double SBNDFrame) const;
332332

333333
/// Equivalent of FindManyP except a return that is !isValid() prints a
334334
/// messsage and aborts if StrictMode is true.
@@ -516,43 +516,43 @@ void CAFMaker::BlindEnergyParameters(StandardRecord* brec) {
516516
}
517517
}
518518

519-
//void CAFMaker::SBNDShiftCRTReference(StandardRecord &rec, double SBNDFrame) const {
520-
//
521-
// //CRT Space Point
522-
// for (SRCRTSpacePoint &sp: rec.crt_spacepoints){
523-
// sp.time += SBNDFrame; //ns
524-
// }
525-
//
526-
// //CRT Track
527-
// for (SRSBNDCRTTrack &trk: rec.sbnd_crt_tracks){
528-
// trk.time += SBNDFrame; //ns
529-
// }
530-
//
531-
// //TODO: CRT Space Point and Track Match
532-
// for (SRSlice &slc: rec.slc){
533-
// for (SRPFP &pfp: slc.reco.pfp){
534-
// if(!std::isnan(pfp.trk.crtspacepoint.score)) pfp.trk.crtspacepoint.spacepoint.time += SBNDFrame;
535-
//
536-
// if(!std::isnan(pfp.trk.crtsbndtrack.score)) pfp.trk.crtsbndtrack.track.time += SBNDFrame;
537-
// }
538-
// }
539-
//}
540-
//
541-
//void CAFMaker::SBNDShiftPMTReference(StandardRecord &rec, double SBNDFrame) const {
542-
//
543-
// double SBNDFrame_us = SBNDFrame / 1000.0; //convert ns to us
544-
//
545-
// //Op Flash
546-
// for (SROpFlash &opf: rec.opflashes) {
547-
// opf.time += SBNDFrame_us;
548-
// opf.firsttime += SBNDFrame_us;
549-
// }
550-
//
551-
// //OpT0 match to slice
552-
// for (SRSlice &s: rec.slc) {
553-
// s.opt0.time += SBNDFrame_us;
554-
// }
555-
//}
519+
void CAFMaker::SBNDShiftCRTReference(StandardRecord &rec, double SBNDFrame) const {
520+
521+
//CRT Space Point
522+
for (SRCRTSpacePoint &sp: rec.crt_spacepoints){
523+
sp.time += SBNDFrame; //ns
524+
}
525+
526+
//CRT Track
527+
for (SRSBNDCRTTrack &trk: rec.sbnd_crt_tracks){
528+
trk.time += SBNDFrame; //ns
529+
}
530+
531+
//TODO: CRT Space Point and Track Match
532+
for (SRSlice &slc: rec.slc){
533+
for (SRPFP &pfp: slc.reco.pfp){
534+
if(!std::isnan(pfp.trk.crtspacepoint.score)) pfp.trk.crtspacepoint.spacepoint.time += SBNDFrame;
535+
536+
if(!std::isnan(pfp.trk.crtsbndtrack.score)) pfp.trk.crtsbndtrack.track.time += SBNDFrame;
537+
}
538+
}
539+
}
540+
541+
void CAFMaker::SBNDShiftPMTReference(StandardRecord &rec, double SBNDFrame) const {
542+
543+
double SBNDFrame_us = SBNDFrame / 1000.0; //convert ns to us
544+
545+
//Op Flash
546+
for (SROpFlash &opf: rec.opflashes) {
547+
opf.time += SBNDFrame_us;
548+
opf.firsttime += SBNDFrame_us;
549+
}
550+
551+
//OpT0 match to slice
552+
for (SRSlice &s: rec.slc) {
553+
s.opt0.time += SBNDFrame_us;
554+
}
555+
}
556556

557557
void CAFMaker::FixPMTReferenceTimes(StandardRecord &rec, double PMT_reference_time) {
558558
// Fix the flashes
@@ -2586,28 +2586,21 @@ void CAFMaker::produce(art::Event& evt) noexcept {
25862586
FixPMTReferenceTimes(rec, PMT_reference_time);
25872587

25882588
// TODO: TPC?
2589-
2590-
//// SBND: Fix the Reference time in data depending on the stream
2591-
//// For more information, see:
2592-
//// https://sbn-docdb.fnal.gov/cgi-bin/sso/RetrieveFile?docid=43090
2593-
2594-
//if (isRealData && (fDet == kSBND) && fSubRunPOT > 0)
2595-
//{
2596-
// // Fill trigger info
2597-
// FillTriggerSBND(srsbndtiminginfo, srtrigger);
2598-
2599-
// // Shift timing reference frame
2600-
// if (!std::isnan(rec.sbnd_frames.frameApplyAtCaf) && (rec.sbnd_frames.frameApplyAtCaf != 0.0)){
2601-
// mf::LogInfo("CAFMaker") << "Setting Reference Timing for timing object in SBND \n"
2602-
// << " Shift Apply At Caf Level = " << rec.sbnd_frames.frameApplyAtCaf << " ns\n";
2603-
//
2604-
// //shift reference frame for CRT objects: crt trk, crt sp, crt sp match, crt trk match
2605-
// SBNDShiftCRTReference(rec, rec.sbnd_frames.frameApplyAtCaf);
2606-
2607-
// //shift reference frame for PMT objects: opflash, opt0
2608-
// SBNDShiftPMTReference(rec, rec.sbnd_frames.frameApplyAtCaf);
2609-
// }
2610-
//}
2589+
2590+
2591+
if (isRealData && (fDet == kSBND))
2592+
{
2593+
// Fill trigger info
2594+
FillTriggerSBND(srsbndtiminginfo, srtrigger);
2595+
2596+
//// Legacy: Timing correction is being done at decoding/reconstruction level
2597+
//// SBND: Fix the Reference time in data depending on the stream
2598+
////shift reference frame for CRT objects: crt trk, crt sp, crt sp match, crt trk match
2599+
//SBNDShiftCRTReference(rec, rec.sbnd_frames.frameApplyAtCaf);
2600+
2601+
////shift reference frame for PMT objects: opflash, opt0
2602+
//SBNDShiftPMTReference(rec, rec.sbnd_frames.frameApplyAtCaf);
2603+
}
26112604

26122605
// Get metadata information for header
26132606
unsigned int run = evt.run();

sbncode/CAFMaker/FillReco.cxx

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,22 @@ namespace caf
192192
caf::SRSBNDFrameShiftInfo &srsbndframe,
193193
bool allowEmpty)
194194
{
195-
std::cout << "FIX ME: FillSBNDFrameShiftInfo" << std::endl;
196-
//srsbndframe.timingType = frame.TimingType();
197-
//srsbndframe.frameTdcCrtt1 = frame.FrameTdcCrtt1();
198-
//srsbndframe.frameTdcBes = frame.FrameTdcBes();
199-
//srsbndframe.frameTdcRwm = frame.FrameTdcRwm();
200-
//srsbndframe.frameHltCrtt1 = frame.FrameHltCrtt1();
201-
//srsbndframe.frameHltBeamGate = frame.FrameHltBeamGate();
202-
//srsbndframe.frameApplyAtCaf = frame.FrameApplyAtCaf();
195+
srsbndframe.frameCrtt1 = frame.FrameCrtt1();
196+
srsbndframe.timingTypeCrtt1 = frame.TimingTypeCrtt1();
197+
srsbndframe.timingChannelCrtt1 = frame.TimingChannelCrtt1();
198+
199+
srsbndframe.frameBeamGate = frame.FrameBeamGate();
200+
srsbndframe.timingTypeBeamGate = frame.TimingTypeBeamGate();
201+
srsbndframe.timingChannelBeamGate = frame.TimingChannelBeamGate();
202+
203+
srsbndframe.frameEtrig = frame.FrameEtrig();
204+
srsbndframe.timingTypeEtrig = frame.TimingTypeEtrig();
205+
srsbndframe.timingChannelEtrig = frame.TimingChannelEtrig();
206+
207+
srsbndframe.frameDefault = frame.FrameDefault();
208+
srsbndframe.timingTypeDefault = frame.TimingTypeDefault();
209+
srsbndframe.timingChannelDefault = frame.TimingChannelDefault();
210+
203211
}
204212

205213
void FillSBNDTimingInfo(const sbnd::timing::TimingInfo &timing,

sbncode/CAFMaker/FillTrigger.cxx

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,21 @@ namespace caf
3939
}
4040

4141
void FillTriggerSBND(caf::SRSBNDTimingInfo& timingInfo, caf::SRTrigger& triggerInfo){
42-
43-
triggerInfo.global_trigger_time = timingInfo.hltEtrig;
44-
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;
47-
double diff_ts = triggerInfo.global_trigger_det_time - triggerInfo.beam_gate_det_time;
48-
std::cout << "diff_ts: " << diff_ts << std::endl;
42+
43+
if (timingInfo.hltEtrig != std::numeric_limits<uint64_t>::max()) triggerInfo.global_trigger_time = timingInfo.hltEtrig;
44+
if (timingInfo.hltBeamGate != std::numeric_limits<uint64_t>::max()) triggerInfo.beam_gate_time_abs = timingInfo.hltBeamGate;
45+
46+
double diff_ts = std::numeric_limits<double>::max();
47+
48+
if ((triggerInfo.global_trigger_time != std::numeric_limits<uint64_t>::max()) & (triggerInfo.beam_gate_time_abs != std::numeric_limits<uint64_t>::max())){
49+
50+
if (triggerInfo.global_trigger_time > triggerInfo.beam_gate_time_abs){
51+
diff_ts = triggerInfo.global_trigger_time - triggerInfo.beam_gate_time_abs;
52+
}
53+
else{
54+
diff_ts = (triggerInfo.beam_gate_time_abs - triggerInfo.global_trigger_time)*(double)-1;
55+
}
56+
}
4957
triggerInfo.trigger_within_gate = diff_ts;
5058
}
5159

0 commit comments

Comments
 (0)