LCOV - code coverage report
Current view: top level - test/ArtModules - FragmentSniffer_module.cc (source / functions) Coverage Total Hit
Test: artdaq.info.cleaned Lines: 0.0 % 24 0
Test Date: 2025-09-04 00:45:34 Functions: 0.0 % 13 0

            Line data    Source code
       1              : #include "TRACE/tracemf.h"
       2              : #define TRACE_NAME "FragmentSniffer"
       3              : 
       4              : #include <memory>
       5              : #include <string>
       6              : 
       7              : #include "art/Framework/Core/EDAnalyzer.h"
       8              : #include "art/Framework/Core/ModuleMacros.h"
       9              : #include "art/Framework/Principal/Event.h"
      10              : #include "art/Framework/Principal/Handle.h"
      11              : #include "art/Framework/Principal/Run.h"
      12              : #include "art/Framework/Principal/SubRun.h"
      13              : #include "canvas/Persistency/Provenance/BranchType.h"
      14              : #include "fhiclcpp/ParameterSet.h"
      15              : 
      16              : #include "artdaq-core/Data/Fragment.hh"
      17              : #include "artdaq/DAQdata/Globals.hh"
      18              : 
      19              : namespace artdaq {
      20              : /**
      21              :  * \brief This art::EDAnalyzer plugin tries to get Fragments from each event, asserting that the correct number of Fragments were present
      22              :  */
      23              : class FragmentSniffer : public art::EDAnalyzer
      24              : {
      25              : public:
      26              :         /**
      27              :          * \brief FragmentSniffer Constructor
      28              :          * \param p ParameterSet used to configure FragmentSniffer
      29              :          *
      30              :          * \verbatim
      31              :          * FragmentSniffer accepts the following Parameters:
      32              :          * "raw_label" (Default: "daq"): Label under which Fragments are stored
      33              :          * "product_instance_name" (REQUIRED): Instance name under which Fragments are stored (Should be Fragment type name)
      34              :          * "num_frags_per_event" (REQUIRED): Expected number of Fragments in each event
      35              :          * "num_events_expected" (Default: 0): Expected number of events in the job. If 0, will not perform end-of-job test
      36              :          * \endverbatim
      37              :          */
      38              :         explicit FragmentSniffer(fhicl::ParameterSet const& p);
      39              : 
      40              :         /**
      41              :          * \brief Default destructor
      42              :          */
      43            0 :         ~FragmentSniffer() override = default;
      44              : 
      45              :         /**
      46              :          * \brief Called for each event. Asserts that Fragment objects are present in the event and that the correct number of Fragments were found
      47              :          * \param e Event to analyze
      48              :          */
      49              :         void analyze(art::Event const& e) override;
      50              : 
      51              :         /**
      52              :          * \brief Called at the end of the job. Asserts that the number of events processed was equal to the expected number
      53              :          */
      54              :         void endJob() override;
      55              : 
      56              : private:
      57              :         FragmentSniffer(FragmentSniffer const&) = delete;
      58              :         FragmentSniffer(FragmentSniffer&&) = delete;
      59              :         FragmentSniffer& operator=(FragmentSniffer const&) = delete;
      60              :         FragmentSniffer& operator=(FragmentSniffer&&) = delete;
      61              : 
      62              :         std::string raw_label_;
      63              :         std::string product_instance_name_;
      64              :         std::size_t num_frags_per_event_;
      65              :         std::size_t num_events_expected_;
      66              :         std::size_t num_events_processed_;
      67              : };
      68              : 
      69            0 : FragmentSniffer::FragmentSniffer(fhicl::ParameterSet const& p)
      70              :     : art::EDAnalyzer(p)
      71            0 :     , raw_label_(p.get<std::string>("raw_label", "daq"))
      72            0 :     , product_instance_name_(p.get<std::string>("product_instance_name"))
      73            0 :     , num_frags_per_event_(p.get<size_t>("num_frags_per_event"))
      74            0 :     , num_events_expected_(p.get<size_t>("num_events_expected", 0))
      75            0 :     , num_events_processed_() {}
      76              : 
      77            0 : void FragmentSniffer::analyze(art::Event const& e)
      78              : {
      79            0 :         TLOG(TLVL_DEBUG) << "Analyze called for event " << e.event();
      80            0 :         art::Handle<Fragments> handle;
      81            0 :         e.getByLabel(raw_label_, product_instance_name_, handle);
      82            0 :         assert(!handle->empty() && "getByLabel returned empty handle");
      83            0 :         assert(handle->size() == num_frags_per_event_);
      84            0 :         ++num_events_processed_;
      85            0 :         TLOG(TLVL_DEBUG) << "End of FragmentSniffer::analyze";
      86            0 : }
      87              : 
      88            0 : void FragmentSniffer::endJob()
      89              : {
      90            0 :         TLOG(TLVL_INFO) << "events processed: "
      91            0 :                         << num_events_processed_
      92            0 :                         << "\nevents expected:  "
      93            0 :                         << num_events_expected_;
      94            0 :         if (num_events_expected_ > 0) { assert(num_events_processed_ == num_events_expected_); }
      95            0 : }
      96              : 
      97            0 : DEFINE_ART_MODULE(FragmentSniffer)  // NOLINT(performance-unnecessary-value-param)
      98              : }  // namespace artdaq
        

Generated by: LCOV version 2.0-1