NSCL DDAS  12.1-001
Support for XIA DDAS at FRIB
Todo List
Class DDASRootEvent
(ASC 4/2/24): Write tests for this class to validate its methods.
Member CMyEventSegment::CMyEventSegment (CMyTrigger *trig, CExperiment &exp)
(ASC 1/25/24): The assumption that the external timestamp bit for channel 0 is the same as the rest of the module allows some obviously bad configurations to be accepted. This may be a QtScope issue too: users should be prevented from enabling the external timestamp on a subset of channels if the readout code doesn't support it.
Member CMyEventSegment::initialize ()
(ASC 1/25/24): An old comment from (I bet) RF: "paging through the global **environ is probably thread-safe however I'm pretty sure at this point in time there's no other thread doing a getenv()."
Member CPixieRunUtilities::BeginHistogramRun (int module)
Disable multiple modules from running in non-sync mode.
Member CPixieRunUtilities::ReadBaseline (int module, int channel)
(ASC 7/14/23): Why not just have the getter take a channel as an input parameter and return the correct baseline data. It seems unnecessary to maintain a separate copy.
Member CPixieRunUtilities::ReadModuleStats (int module)
(ASC 9/27/23): Confirm end of run and handle if not ended properly.
Class CPixieTraceUtilities
Instead of validated traces can we process the trace using the fast filter parameters and wait for a real trigger?
Member CPixieTraceUtilities::ReadTrace (int module, int channel)
(ASC 6/14/24): Improved baseline estimation for validation.
Namespace DAQ
(ASC 9/22/23): Firmware configuration map creates some circular dependencies, as we start including Configuration.h and HardwareRegistry.h in multiple places. Include guards should handle this but may be nice to redesign things to avoid the multiple inclusions in the first place.
Member DAQ::DDAS::ConfigurationParser::parse (std::istream &input, Configuration &config)
(ASC 3/13/24): Whitespace-tolerant comments could be allowed using this trim-and-inspect framework i.e. check that first character of trimmed line is a comment character. For now, anything besides whitespace will throw when parsing the configuration file.
Member DAQ::DDAS::FirmwareVersionFileParser::parse (std::istream &input, FirmwareMap &config)
(ASC 3/13/24): CFWFileParseError for exceptions.
Member DAQ::DDAS::HardwareRegistry::HardwareType
(ASC 3/13/24): Create a method that can query a module and compute the HardwareType.
Member DAQ::DDAS::SystemBooter::populateHardwareMap (Configuration &config)
(ASC 12/14/23): For the API transition we want to read the module_config struct. We may not even need to log it (just put them in a vector)
Module libddasrootformat
(ASC 3/26/24): Enforce some consistent namespace business here:
  1. Does this class belong in some namespace or not?
  2. What namespace(s) is/are used for DDAS code?
  3. What purpose(s) do they serve? For example, DDASRootHit probably should be under some daq::ddas:: namespace.
Member main (int argc, char **argv)
(ASC 3/18/24): Sometimes the sorter fails to create its sort ring. In my attempts to resurrect the sorter tests, I had some issues making multiple createAndProduce calls from within the same function. Here it had better be making that call only once. Is this more reliable if I call CRingBuffer::create() and new CRingBuffer() similar to whats done in sortertests.cpp?
Member DDASReadout::RawChannel::Validate (int expecting)
(ASC 1/23/24): An old and somewhat cryptic comment about "hating the output" but maintaining it for compatibility. Perhaps because we write to stderr and return 1 instead of raising an exception?