@@ -106,20 +106,20 @@ struct AnalysisDataProcessorBuilder {
106106 }
107107
108108 template <typename G, typename ... Args>
109- static void addGroupingCandidates (std::vector<StringPair> & bk, std::vector<StringPair> & bku)
109+ static void addGroupingCandidates (Cache & bk, Cache & bku, bool enabled )
110110 {
111- [&bk, &bku]<typename ... As>(framework::pack<As...>) mutable {
111+ [&bk, &bku, enabled ]<typename ... As>(framework::pack<As...>) mutable {
112112 std::string key;
113113 if constexpr (soa::is_iterator<std::decay_t <G>>) {
114114 key = std::string{" fIndex" } + o2::framework::cutString (soa::getLabelFromType<std::decay_t <G>>());
115115 }
116- ([&bk, &bku, &key]() mutable {
116+ ([&bk, &bku, &key, enabled ]() mutable {
117117 if constexpr (soa::relatedByIndex<std::decay_t <G>, std::decay_t <As>>()) {
118118 auto binding = soa::getLabelFromTypeForKey<std::decay_t <As>>(key);
119119 if constexpr (o2::soa::is_smallgroups<std::decay_t <As>>) {
120- framework::updatePairList (bku, binding, key);
120+ framework::updatePairList (bku, binding, key, enabled );
121121 } else {
122- framework::updatePairList (bk, binding, key);
122+ framework::updatePairList (bk, binding, key, enabled );
123123 }
124124 }
125125 }(),
@@ -192,7 +192,7 @@ struct AnalysisDataProcessorBuilder {
192192 // / helper to parse the process arguments
193193 // / 1. enumeration (must be the only argument)
194194 template <typename R, typename C, is_enumeration A>
195- static void inputsFromArgs (R (C::*)(A), const char* /* name*/ , bool /* value*/ , std::vector<InputSpec>& inputs, std::vector<ExpressionInfo>&, std::vector<StringPair> &, std::vector<StringPair> &)
195+ static void inputsFromArgs (R (C::*)(A), const char* /* name*/ , bool /* value*/ , std::vector<InputSpec>& inputs, std::vector<ExpressionInfo>&, Cache &, Cache &)
196196 {
197197 std::vector<ConfigParamSpec> inputMetadata;
198198 // FIXME: for the moment we do not support begin, end and step.
@@ -201,17 +201,17 @@ struct AnalysisDataProcessorBuilder {
201201
202202 // / 2. grouping case - 1st argument is an iterator
203203 template <typename R, typename C, soa::is_iterator A, soa::is_table... Args>
204- static void inputsFromArgs (R (C::*)(A, Args...), const char* name, bool value, std::vector<InputSpec>& inputs, std::vector<ExpressionInfo>& eInfos, std::vector<StringPair> & bk, std::vector<StringPair> & bku)
204+ static void inputsFromArgs (R (C::*)(A, Args...), const char* name, bool value, std::vector<InputSpec>& inputs, std::vector<ExpressionInfo>& eInfos, Cache & bk, Cache & bku)
205205 requires(std::is_lvalue_reference_v<A> && (std::is_lvalue_reference_v<Args> && ...))
206206 {
207- addGroupingCandidates<A, Args...>(bk, bku);
207+ addGroupingCandidates<A, Args...>(bk, bku, value );
208208 constexpr auto hash = o2::framework::TypeIdHelpers::uniqueId<R (C::*)(A, Args...)>();
209209 addInputsAndExpressions<typename std::decay_t <A>::parent_t , Args...>(hash, name, value, inputs, eInfos);
210210 }
211211
212212 // / 3. generic case
213213 template <typename R, typename C, soa::is_table... Args>
214- static void inputsFromArgs (R (C::*)(Args...), const char* name, bool value, std::vector<InputSpec>& inputs, std::vector<ExpressionInfo>& eInfos, std::vector<StringPair> &, std::vector<StringPair> &)
214+ static void inputsFromArgs (R (C::*)(Args...), const char* name, bool value, std::vector<InputSpec>& inputs, std::vector<ExpressionInfo>& eInfos, Cache &, Cache &)
215215 requires(std::is_lvalue_reference_v<Args> && ...)
216216 {
217217 constexpr auto hash = o2::framework::TypeIdHelpers::uniqueId<R (C::*)(Args...)>();
@@ -525,8 +525,8 @@ DataProcessorSpec adaptAnalysisTask(ConfigContext const& ctx, Args&&... args)
525525 std::vector<InputSpec> inputs;
526526 std::vector<ConfigParamSpec> options;
527527 std::vector<ExpressionInfo> expressionInfos;
528- std::vector<StringPair> bindingsKeys;
529- std::vector<StringPair> bindingsKeysUnsorted;
528+ Cache bindingsKeys;
529+ Cache bindingsKeysUnsorted;
530530
531531 // / make sure options and configurables are set before expression infos are created
532532 homogeneous_apply_refs ([&options, &hash](auto & element) { return analysis_task_parsers::appendOption (options, element); }, *task.get ());
0 commit comments