NSCL DDAS 12.2-009
Support for XIA DDAS at FRIB
Todo List
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, int nChannels)
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.
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.
Member crateConfiguration
(ASC 3/26/25): Entire package needs to replace hardcoded API error messages with API calls to get error messages from return codes. See Boot.cpp for initial progress.
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::Configuration::setNumberOfModules (size_t size)
(ASC 3/21/25): Clean up this class and remove everything which we do not need (e.g. default maps) and remove any hardware types which are not real or we do not support (e.g. 500m-16b rev F??)
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 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?
Class DDASRootEvent
(ASC 4/2/24): Write tests for this class to validate its methods.
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 MAX_MODULES_PER_CRATE
(ASC 1/8/25): See Github issue #417: simplify readout and pass system information around via the Configuation class.