1 #include "art/Framework/Core/OutputModule.h"
2 #include "art/Framework/IO/ClosingCriteria.h"
3 #include "artdaq-utilities/Plugins/MetricManager.hh"
4 #include "fhiclcpp/types/Atom.h"
5 #include "fhiclcpp/types/OptionalAtom.h"
6 #include "fhiclcpp/types/OptionalSequence.h"
7 #include "fhiclcpp/types/OptionalTable.h"
8 #include "fhiclcpp/types/Sequence.h"
9 #include "fhiclcpp/types/Table.h"
10 #include "fhiclcpp/types/Tuple.h"
19 fhicl::Atom<std::string>
service_provider{fhicl::Name{
"service_provider"}, fhicl::Comment{
"Name of the provider for the ArtdaqFragmentNamingServiceInterface (e.g. ArtdaqFragmentNamingService)"}};
21 fhicl::Atom<std::string>
helper_plugin{ fhicl::Name{
"helper_plugin"}, fhicl::Comment{
"Name of the helper plugin used by ArtdaqFragmentNamingService"},
"Artdaq"};
23 fhicl::Atom<std::string>
unidentified_instance_name{fhicl::Name{
"unidentified_instance_name"}, fhicl::Comment{
"Name to use for Fragment types which are not identified by the ArtdaqFragmentNamingServiceInterface implementation."},
"unidentified"};
25 fhicl::OptionalSequence<fhicl::Tuple<artdaq::Fragment::type_t, std::string>>
fragment_type_map{fhicl::Name{
"fragment_type_map"}, fhicl::Comment{
"Additional types to register with the ArtdaqFragmentNamingServiceInterface"}};
34 fhicl::Atom<std::string>
service_provider{fhicl::Name{
"service_provider"}, fhicl::Comment{
"Name of the provider for the ArtdaqSharedMemoryServiceInterface (e.g. ArtdaqSharedMemoryService)"}};
36 fhicl::Atom<size_t>
read_timeout_us{fhicl::Name{
"read_timeout_us"}, fhicl::Comment{
"Amount of time (in us) to wait for events from shared memory. Defaults to waiting_time if unspecified."}, 600000000};
38 fhicl::Atom<double>
waiting_time{fhicl::Name{
"waiting_time"}, fhicl::Comment{
"Amount of time (in s) to wait for events from shared memory. Overridden by read_timeout_us if specified."}, 600.0};
40 fhicl::Atom<bool>
resume_after_timeout{fhicl::Name{
"resume_after_timeout"}, fhicl::Comment{
"Whether to continue to attempt to receive events after a timeout occurs"},
true};
42 fhicl::OptionalAtom<int>
shared_memory_key{fhicl::Name{
"shared_memory_key"}, fhicl::Comment{
"Key to use for Data shared memory segment. Automatically generated using parent PID."}};
44 fhicl::OptionalAtom<int>
broadcast_shared_memory_key{fhicl::Name{
"broadcast_shared_memory_key"}, fhicl::Comment{
"Key to use for Broadcast shared memory segment. Automatically generated using parent PID."}};
46 fhicl::OptionalTable<artdaq::MetricManager::Config>
metrics{fhicl::Name{
"metrics"}, fhicl::Comment{
"Configuration for artdaq Metrics"}};
70 fhicl::Table<AnalyzersConfig>
analyzers{fhicl::Name{
"analyzers"}};
71 fhicl::Table<ProducersConfig>
producers{fhicl::Name{
"producers"}};
72 fhicl::Table<FiltersConfig>
filters{fhicl::Name{
"filters"}};
73 fhicl::Sequence<std::string>
my_output_modules{fhicl::Name{
"my_output_modules"}, fhicl::Comment{
"Output modules (configured in the outputs block) to use"}};
86 using Atom = fhicl::Atom<T>;
91 fhicl::TableFragment<art::OutputModule::Config>
omConfig;
118 std::set<std::string> keys{art::OutputModule::Config::KeysToIgnore::get()};
119 keys.insert(
"results");
130 fhicl::OptionalTable<art::OutputModule::Config>
rootNetOutput{fhicl::Name{
"rootNetOutput"}};
131 fhicl::OptionalTable<RootOutputConfig>
normalOutput{fhicl::Name{
"normalOutput"}};
132 fhicl::OptionalTable<RootOutputConfig>
rootDAQOutFile{fhicl::Name{
"rootDAQOutFile"}};
141 fhicl::Atom<std::string>
module_type{fhicl::Name{
"module_type"}, fhicl::Comment{
"Module type of source. Should be \"ArtdaqInput\""}};
143 fhicl::Atom<double>
init_fragment_timeout_seconds{fhicl::Name{
"init_fragment_timeout_seconds"}, fhicl::Comment{
"Amount of time ArtdaqInput should wait for an Init Fragment before simply returning Fragments"}, 600.0};
145 fhicl::Atom<std::string>
raw_data_label{fhicl::Name{
"raw_data_label"}, fhicl::Comment{
"Label to use for raw data (i.e. Fragments from the DAQ)"},
"daq"};
147 fhicl::Atom<bool>
register_fragment_types{fhicl::Name{
"register_fragment_types"}, fhicl::Comment{
"Whether ArtdaqInputHelper should register the known Fragment types from the ArtdaqFragmentNamingServiceInterface. Required for EventBuilders. Disable for processes that don't handle Fragments."},
true};
155 fhicl::Table<art::ServicesConfig>
services{fhicl::Name{
"services"}};
156 fhicl::Table<art::PhysicsConfig>
physics{fhicl::Name{
"physics"}};
157 fhicl::Table<art::OutputsConfig>
outputs{fhicl::Name{
"outputs"}};
158 fhicl::Table<art::SourceConfig>
source{fhicl::Name{
"source"}};
159 fhicl::Atom<std::string>
process_name{fhicl::Name{
"process_name"}, fhicl::Comment{
"Name of this art processing job"},
"DAQ"};
Atom< bool > dropAllSubRuns
Whether to drop all subruns ???
Atom< int64_t > saveMemoryObjectThreshold
???
fhicl::Table< FiltersConfig > filters
fhicl::TableFragment< art::OutputModule::Config > omConfig
Configuration common to all OutputModules.
Atom< int > splitLevel
???
Interface for ArtdaqSharedMemoryService. This interface is declared to art as part of the required re...
fhicl::OptionalAtom< T > OptionalAtom
Optional Configuration Parameter.
fhicl::Atom< T > Atom
Configuration Parameter.
Atom< int > basketSize
???
fhicl::OptionalAtom< int > shared_memory_key
"shared_memory_key" (OPTIONAL): Key to use for Data shared memory segment. Automatically generated us...
Configuration for the ArtdaqFragmentNamingServiceInterface
fhicl::Sequence< std::string > my_output_modules
Output modules (configured in the outputs block) to use.
fhicl::Atom< std::string > unidentified_instance_name
"unidentified_instance_name" (Default: "unidentified"): Name to use for Fragment types which are not ...
Configuration for the source block of artdaq art processes
Atom< bool > dropMetaDataForDroppedData
???
fhicl::OptionalAtom< int > broadcast_shared_memory_key
"broadcast_shared_memory_key" (OPTIONAL): Key to use for Broadcast shared memory segment. Automatically generated using parent PID.
fhicl::Table< art::PhysicsConfig > physics
Physics block.
Artdaq does not provide any producers.
Configuration for the ArtdaqSharedMemoryServiceInterface
Required configuration for art processes started by artdaq, with artdaq-specific defaults where appli...
Atom< int > compressionLevel
Compression level to use. artdaq recommends <= 3.
fhicl::OptionalTable< RootOutputConfig > normalOutput
Normal art/ROOT output.
fhicl::OptionalTable< artdaq::MetricManager::Config > metrics
"metrics" (OPTIONAL): Configuration for artdaq Metrics
fhicl::Atom< bool > resume_after_timeout
"resume_after_timeout" (Default: true): Whether to continue to attempt to receive events after a time...
fhicl::Name Name
Parameter Name.
fhicl::Table< art::OutputsConfig > outputs
Outputs block.
Confgiguration for ROOT output modules
Atom< std::string > dropMetaData
Which metadata to drop (Default: "NONE")
Configuration for the outputs block of artdaq art processes
fhicl::Atom< std::string > process_name
"process_name" (Default: "DAQ"): Name of this art processing job
fhicl::OptionalTable< art::OutputModule::Config > rootNetOutput
For transferring data from EventBuilders to DataLoggers.
fhicl::Atom< std::string > service_provider
"service_provider" (REQUIRED): Name of the provider for the ArtdaqSharedMemoryServiceInterface (e...
Configuration of the physics block for artdaq art processes
fhicl::Atom< bool > register_fragment_types
"register_fragment_types" (Default: true): Whether ArtdaqInputHelper should register the known Frag...
fhicl::Atom< double > init_fragment_timeout_seconds
"init_fragment_timeout_seconds" (Default: 600.0): Amount of time (in s) ArtdaqInput should wait for a...
fhicl::Table< ClosingCriteria::Config > fileProperties
When should the file be closed.
fhicl::Table< AnalyzersConfig > analyzers
Analyzer module configuration.
Atom< int64_t > treeMaxVirtualSize
???
Configuration of the services block for artdaq art processes
Atom< bool > writeParameterSets
Write art ParameterSet to output file (Default: true)
fhicl::Table< art::SourceConfig > source
fhicl::Atom< std::string > module_type
"module_type": REQUIRED: Module type of source. Should be "ArtdaqInput"
fhicl::Atom< std::string > helper_plugin
"helper_plugin" (Default: "Artdaq"): Name of the helper plugin used by ArtdaqFragmentNamingService ...
fhicl::Table< ProducersConfig > producers
Producer module configuration.
fhicl::Atom< std::string > raw_data_label
"raw_data_label" (Default: "daq"): Label to use for raw data (i.e. Fragments from the DAQ) ...
OptionalAtom< bool > dropAllEvents
Whether to drop all events ???
std::set< std::string > operator()() const
Get the keys to ignore
Interface for ArtdaqFragmentNamingService. This interface is declared to art as part of the required ...
OptionalAtom< bool > fastCloning
Whether to try to use fastCloning on the file.
fhicl::Atom< size_t > read_timeout_us
"read_timeout_us" (Default: "waiting_time" * 1000000): Amount of time (in us) to wait for events from...
fhicl::Table< art::ServicesConfig > services
Services block.
Atom< std::string > tmpDir
Temporary directory.
fhicl::OptionalTable< RootOutputConfig > rootDAQOutFile
art/ROOT output where the filename can be specified at initialization (e.g. to /dev/null), for testing
fhicl::Atom< std::string > service_provider
"service_provider" (REQUIRED): Name of the provider for the ArtdaqFragmentNamingServiceInterface (e...
Atom< std::string > catalog
???
These keys should be ignored by the configuration validation processor
fhicl::Atom< double > waiting_time
"waiting_time" (Default: 600.0): Amount of time (in s) to wait for events from shared memory...
fhicl::OptionalSequence< fhicl::Tuple< artdaq::Fragment::type_t, std::string > > fragment_type_map
"fragment_type_map" (OPTIONAL): Additional types to register with the ArtdaqFragmentNamingServiceInte...