@@ -195,6 +195,7 @@ sbndaq::SBNDPMTDecoder::SBNDPMTDecoder(fhicl::ParameterSet const& p)
195195
196196 produces< std::vector<int > >(" MonPulses" );
197197 produces< std::vector<int > >(" MonPulseSizes" );
198+ produces<int >(" pairsOverThreshold" );
198199}
199200
200201void sbndaq::SBNDPMTDecoder::produce (art::Event& evt)
@@ -278,6 +279,9 @@ void sbndaq::SBNDPMTDecoder::produce(art::Event& evt)
278279 auto sizesPtr = std::make_unique<std::vector<int >>();
279280 evt.put (std::move (flatPtr), " MonPulses" );
280281 evt.put (std::move (sizesPtr), " MonPulseSizes" );
282+
283+ auto pairFlag = std::make_unique<int >(-1 );
284+ evt.put (std::move (pairFlag), " pairsOverThreshold" );
281285 return ;
282286 }
283287
@@ -623,30 +627,27 @@ void sbndaq::SBNDPMTDecoder::produce(art::Event& evt)
623627 std::vector<int > pulseSizes;
624628 MonPulsesFlat.clear ();
625629 pulseSizes.clear ();
626- int TotalFlash = pmtwvfmVec->size ()/((int )fn_caenboards*PMTPerBoard); // pmtwvfmVec = waveHandle ???
630+ int pmt_caenboards = (int )fn_caenboards-1 ;
631+ int TotalFlash = pmtwvfmVec->size ()/(pmt_caenboards*PMTPerBoard);
632+
633+ int numPairsOverThreshold = 0 ;
627634 for (int FlashCounter=0 ; FlashCounter<TotalFlash; FlashCounter++)
628635 {
629636 int WaveIndex = FlashCounter*PMTPerBoard;
630637 int WaveformSize = (*pmtwvfmVec)[WaveIndex].size ();
638+ int pairThisFlash = 0 ;
631639 std::vector<int > *MonPulse = new std::vector<int >(WaveformSize);
632- fTriggerService ->ConstructMonPulse (*pmtwvfmVec, fmon_threshold, MonPulse, FlashCounter);
640+ fTriggerService ->ConstructMonPulse (*pmtwvfmVec, fmon_threshold, MonPulse, FlashCounter, &pairThisFlash );
633641 // MonPulsesAll.push_back(std::move(MonPulse));
634642 MonPulsesFlat.insert (MonPulsesFlat.end (), (*MonPulse).begin (), (*MonPulse).end ());
635643 pulseSizes.push_back (MonPulse->size ());
644+ numPairsOverThreshold = numPairsOverThreshold + pairThisFlash;
636645 delete MonPulse;
637646 }
638647 // make ptrs
639648 auto flatPtr = std::make_unique<std::vector<int >>(std::move (MonPulsesFlat));
640649 auto sizesPtr = std::make_unique<std::vector<int >>(std::move (pulseSizes));
641-
642- /* std::unique_ptr< std::vector< std::vector<int> > > MonPulsesPtr(std::make_unique< std::vector< std::vector<int> > > ());
643- for (auto &pulse : MonPulsesAll) {
644- MonPulsesPtr->reserve(MonPulsesPtr->size() + pulse.size());
645- std::move(pulse.begin(), pulse.end(), std::back_inserter(*MonPulsesPtr));
646- }
647- // clean up the vector
648- for (unsigned i = 0; i < MonPulsesAll.size(); i++) MonPulsesAll[i] = std::vector<int>();
649- */
650+ auto pairFlag = std::make_unique<int >(numPairsOverThreshold);
650651
651652 board_frag_v.clear ();
652653
@@ -663,6 +664,7 @@ void sbndaq::SBNDPMTDecoder::produce(art::Event& evt)
663664
664665 evt.put (std::move (flatPtr), " MonPulses" );
665666 evt.put (std::move (sizesPtr), " MonPulseSizes" );
667+ evt.put (std::move (pairFlag), " pairsOverThreshold" );
666668}
667669
668670void sbndaq::SBNDPMTDecoder::get_fragments (artdaq::Fragment & frag, std::vector<std::vector<artdaq::Fragment>> & board_frag_v){
0 commit comments