artdaq  v3_02_00
ArtConfig.hh
1 #include "fhiclcpp/types/Atom.h"
2 #include "fhiclcpp/types/Table.h"
3 #include "fhiclcpp/types/OptionalAtom.h"
4 #include "fhiclcpp/types/OptionalTable.h"
5 #include "artdaq/ArtModules/NetMonTransportService.h"
6 #include "artdaq/ArtModules/RootNetOutput.hh"
7 #include "art/Framework/Core/OutputModule.h"
8 #if ART_HEX_VERSION >= 0x21002
9 # include "art/Framework/IO/ClosingCriteria.h"
10 #else
11 # include "art/Framework/IO/Root/RootOutputClosingCriteria.h"
12 #endif
13 
14 namespace art {
16  {
17  fhicl::Atom<bool> errorOnFailureToPut{ fhicl::Name{"errorOnFailureToPut"}, fhicl::Comment{"This parameter is necessary for correct function of artdaq. Do not modify."}, false };
18  };
20  {
21  fhicl::Table<ServicesSchedulerConfig> scheduler{ fhicl::Name{"scheduler"} };
22  fhicl::OptionalTable<NetMonTransportService::Config> netMonTransportServiceInterface{ fhicl::Name{ "NetMonTransportServiceInterface" } };
23  };
24 
25  struct AnalyzersConfig {};
26  struct ProducersConfig {};
27  struct FiltersConfig {};
28 
30  {
31  fhicl::Table<AnalyzersConfig> analyzers{ fhicl::Name{"analyzers"} };
32  fhicl::Table<ProducersConfig> producers{ fhicl::Name{"producers"} };
33  fhicl::Table<FiltersConfig> filters{ fhicl::Name{"filters"} };
34  fhicl::Sequence<std::string> my_output_modules{ fhicl::Name{"my_output_modules"}, fhicl::Comment{"Output modules (configured in the outputs block) to use"} };
35  };
36 
37 
39  {
40 
41  using Name = fhicl::Name;
42  using Comment = fhicl::Comment;
43  template <typename T> using Atom = fhicl::Atom<T>;
44  template <typename T> using OptionalAtom = fhicl::OptionalAtom<T>;
45 
46  fhicl::TableFragment<art::OutputModule::Config> omConfig;
47  Atom<std::string> catalog{ Name("catalog"), "" };
48  OptionalAtom<bool> dropAllEvents{ Name("dropAllEvents") };
49  Atom<bool> dropAllSubRuns{ Name("dropAllSubRuns"), false };
50  OptionalAtom<bool> fastCloning{ Name("fastCloning") };
51  Atom<std::string> tmpDir{ Name("tmpDir"), "/tmp" };
52  Atom<int> compressionLevel{ Name("compressionLevel"), 7 };
53  Atom<int64_t> saveMemoryObjectThreshold{ Name("saveMemoryObjectThreshold"), -1l };
54  Atom<int64_t> treeMaxVirtualSize{ Name("treeMaxVirtualSize"), -1 };
55  Atom<int> splitLevel{ Name("splitLevel"), 99 };
56  Atom<int> basketSize{ Name("basketSize"), 16384 };
57  Atom<bool> dropMetaDataForDroppedData{ Name("dropMetaDataForDroppedData"), false };
58  Atom<std::string> dropMetaData{ Name("dropMetaData"), "NONE" };
59  Atom<bool> writeParameterSets{ Name("writeParameterSets"), true };
60  fhicl::Table<ClosingCriteria::Config> fileProperties{ Name("fileProperties") };
61 
62  struct KeysToIgnore
63  {
64  std::set<std::string> operator()() const
65  {
66  std::set<std::string> keys{ art::OutputModule::Config::KeysToIgnore::get() };
67  keys.insert("results");
68  return keys;
69  }
70  };
71 
72  };
73 
75  {
76  fhicl::OptionalTable<art::RootNetOutput::Config> rootNetOutput{ fhicl::Name{"rootNetOutput"} };
77  fhicl::OptionalTable<RootOutputConfig> normalOutput{ fhicl::Name{"normalOutput"} };
78  fhicl::OptionalTable<RootOutputConfig> rootDAQOutFile{ fhicl::Name{"rootDAQOutFile"} };
79  };
80 
81  struct SourceConfig
82  {
83  fhicl::Atom<std::string> module_type{ fhicl::Name{ "module_type" }, fhicl::Comment{ "Module type of source. Should be \"RawInput\", \"NetMonInput\", or an experiment-defined input type (i.e. \"DemoInput\")" } };
84  };
85 
86  struct Config
87  {
88  fhicl::Table<art::ServicesConfig> services{ fhicl::Name{"services"} };
89  fhicl::Table<art::PhysicsConfig> physics{ fhicl::Name{"physics"} };
90  fhicl::Table<art::OutputsConfig> outputs{ fhicl::Name{"outputs"} };
91  fhicl::Table<art::SourceConfig> source{ fhicl::Name{"source"} };
92  fhicl::Atom<std::string> process_name{ fhicl::Name{"process_name" },fhicl::Comment{"Name of this art processing job"}, "DAQ" };
93  };
94 }
Artdaq does not provide any producers.
Definition: ArtConfig.hh:26