Skip to content

Commit d6bffea

Browse files
committed
flash peak pe bug fix
1 parent c09be65 commit d6bffea

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

sbndcode/Trigger/PMT/PMTMetricProducer_module.cc

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ void sbnd::trigger::pmtSoftwareTriggerProducer::produce(art::Event& e)
248248
if(!ptbHandle.isValid() || ptbHandle->size() == 0)
249249
continue;
250250
foundgate = getGateTime(ptbHandle, gateTime);
251+
// std::cout << "Gate time: " << int(gateTime) << std::endl;
251252
}
252253
}
253254

@@ -355,6 +356,7 @@ void sbnd::trigger::pmtSoftwareTriggerProducer::produce(art::Event& e)
355356
if (contf.fragment_type()==sbndaq::detail::FragmentType::CAENV1730) {
356357
if (std::find(fFragIDs.begin(), fFragIDs.end(), contf[0].get()->fragmentID()) == fFragIDs.end()) continue;
357358
if (fVerbose>=3) TLOG(TLVL_INFO) << "Found " << contf.block_count() << " CAEN1730 fragments in container with fragID " << contf[0].get()->fragmentID();
359+
// std::cout << "Found " << contf.block_count() << " CAEN1730 fragments in container with fragID " << contf[0].get()->fragmentID() << std::endl;
358360

359361
if (etrig_frag_dt==1e9){
360362
for (size_t ii = 0; ii < contf.block_count(); ++ii){
@@ -486,13 +488,15 @@ void sbnd::trigger::pmtSoftwareTriggerProducer::produce(art::Event& e)
486488

487489
flash_prelimPE = (flash_baseline-(*std::min_element(wvfm_sum.begin()+prelimStart,wvfm_sum.begin()+windowStartBin)))/fADCtoPE;
488490
flash_promptPE = (flash_baseline-(*std::min_element(wvfm_sum.begin()+windowStartBin,wvfm_sum.begin()+promptEnd)))/fADCtoPE;
489-
flash_peakPE = (flash_baseline-(*std::min_element(wvfm_sum.begin(),wvfm_sum.end())))/fADCtoPE;
490491
// auto flash_peak_it = std::min_element(wvfm_sum.begin(),wvfm_sum.end());
491492
// look at only the last 5000 samples of the waveform
492493
// important because our "chosen" ftrig may be an extended fragment
493494
auto flash_peak_it = std::min_element(wvfm_sum.end()-fWvfmLength,wvfm_sum.end());
494495
// time is referenced to the end of the waveform; this is correct assuming we grabbed the right fragment!
496+
flash_peakPE = (flash_baseline-(*flash_peak_it))/fADCtoPE;
495497
flash_peaktime = (fWvfmLength*fWvfmPostPercent - (wvfm_sum.end() - flash_peak_it))*ticks_to_us; // us
498+
// std::cout << "Flash peak time: " << flash_peaktime << " us" << std::endl;
499+
// std::cout << "Flash peak PE: " << flash_peakPE << " PE" << std::endl;
496500
}
497501
trig_metrics.nAboveThreshold = nAboveThreshold;
498502
if (fCalculatePEMetrics){
@@ -567,7 +571,10 @@ bool sbnd::trigger::pmtSoftwareTriggerProducer::getGateTime(art::Handle<std::vec
567571
for(size_t word_i = 0; word_i < ctb_frag.NWords(); ++word_i){
568572
if(ctb_frag.Trigger(word_i)){
569573
auto wt = ctb_frag.Word(word_i)->word_type;
570-
if (wt == 2 && ( ctb_frag.Trigger(word_i)->IsTrigger(26) || ctb_frag.Trigger(word_i)->IsTrigger(27) )){
574+
bool gate_hlt = false;
575+
if ((fStreamType == 2 ) && (ctb_frag.Trigger(word_i)->IsTrigger(26))) gate_hlt = true;
576+
if ((fStreamType == 4 ) && (ctb_frag.Trigger(word_i)->IsTrigger(27))) gate_hlt = true;
577+
if (wt == 2 && gate_hlt){
571578
foundgate = true;
572579
gateTime = double((std::bitset<64>(ctb_frag.Trigger(word_i)->timestamp).to_ullong()*20)%(uint(1e9)) - fPTBDelay);
573580
if (fVerbose>=3) TLOG(TLVL_INFO) << "PTB gated FTRIG HLT timestamp: " << uint(gateTime) << " ns";
@@ -592,6 +599,7 @@ int8_t sbnd::trigger::pmtSoftwareTriggerProducer::getClosestFTrig(double refTime
592599
// auto iftrig = ftrig_v[i];
593600
double diff = ftrig_v[i] - refTime;
594601
diff_v[i] = std::abs(diff);
602+
// std::cout << "ftrig " << i << ": " << int(ftrig_v[i]) << "diff = " << diff << std::endl;
595603
if (std::abs(diff) < min_diff){
596604
min_idx = int8_t(i);
597605
min_diff = std::abs(diff);

0 commit comments

Comments
 (0)