25std::shared_ptr<DataOutputDirector> AnalysisSupportHelpers::getDataOutputDirector(
ConfigContext const& ctx)
27 auto const& options = ctx.
options();
31 std::shared_ptr<DataOutputDirector> dod = std::make_shared<DataOutputDirector>();
35 std::string rdn, resdir(
"./");
36 std::string fnb, fnbase(
"AnalysisResults_trees");
37 float mfs, maxfilesize(-1.);
38 std::string fmo, filemode(
"RECREATE");
39 int ntfm, ntfmerge = 1;
42 if (options.isSet(
"aod-writer-json")) {
43 auto fnjson = options.get<std::string>(
"aod-writer-json");
44 if (!fnjson.empty()) {
45 std::tie(rdn, fnb, fmo, mfs, ntfm) = dod->readJson(fnjson);
65 if (options.isSet(
"aod-writer-resdir")) {
66 rdn = options.get<std::string>(
"aod-writer-resdir");
71 if (options.isSet(
"aod-writer-resfile")) {
72 fnb = options.get<std::string>(
"aod-writer-resfile");
77 if (options.isSet(
"aod-writer-resmode")) {
78 fmo = options.get<std::string>(
"aod-writer-resmode");
83 if (options.isSet(
"aod-writer-maxfilesize")) {
84 mfs = options.get<
float>(
"aod-writer-maxfilesize");
89 if (options.isSet(
"aod-writer-ntfmerge")) {
90 ntfm = options.get<
int>(
"aod-writer-ntfmerge");
96 if (options.isSet(
"aod-writer-keep")) {
97 auto keepString = options.get<std::string>(
"aod-writer-keep");
98 if (!keepString.empty()) {
100 std::string d(
"dangling");
101 if (d.find(keepString) == 0) {
103 std::vector<InputSpec> danglingOutputs;
104 for (
auto ii = 0u; ii < OutputsInputs.size(); ii++) {
105 if (DataSpecUtils::partialMatch(OutputsInputs[ii], writableAODOrigins) && isDangling[ii]) {
106 danglingOutputs.emplace_back(OutputsInputs[ii]);
109 dod->readSpecs(danglingOutputs);
112 dod->readString(keepString);
116 dod->setResultDir(resdir);
117 dod->setFilenameBase(fnbase);
118 dod->setFileMode(filemode);
119 dod->setMaximumFileSize(maxfilesize);
120 dod->setNumberTimeFramesToMerge(ntfmerge);
136void AnalysisSupportHelpers::addMissingOutputsToSpawner(std::vector<OutputSpec>
const& providedSpecials,
137 std::vector<InputSpec>
const& requestedSpecials,
138 std::vector<InputSpec>& requestedAODs,
142 views::filter_not_matching(providedSpecials) |
143 views::input_to_output_specs() |
146 std::vector<InputSpec> additionalInputs;
147 for (
auto& input : requestedSpecials | views::filter_not_matching(providedSpecials)) {
149 views::filter_string_params_with(
"input:") |
150 views::params_to_input_specs() |
157void AnalysisSupportHelpers::addMissingOutputsToBuilder(std::vector<InputSpec>
const& requestedSpecials,
158 std::vector<InputSpec>& requestedAODs,
159 std::vector<InputSpec>& requestedDYNs,
163 views::input_to_output_specs() |
166 std::vector<InputSpec> additionalInputs;
167 for (
auto const& input : requestedSpecials) {
169 views::filter_string_params_with(
"input:") |
170 views::params_to_input_specs() |
177 views::partial_match_filter(AODOrigins) |
ServiceRegistryRef services() const
ConfigParamRegistry & options() const