File indexing completed on 2025-12-16 10:29:50
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef ROOT_RJITTEDACTION
0012 #define ROOT_RJITTEDACTION
0013
0014 #include "ROOT/RDF/RActionBase.hxx"
0015 #include "ROOT/RDF/RLoopManager.hxx"
0016 #include "RtypesCore.h"
0017
0018 #include <memory>
0019
0020 class TTreeReader;
0021
0022 namespace ROOT {
0023 namespace Detail {
0024 namespace RDF {
0025 class RMergeableValueBase;
0026 }
0027 }
0028 }
0029
0030 namespace ROOT {
0031 namespace Internal {
0032 namespace RDF {
0033
0034
0035 namespace GraphDrawing {
0036 class GraphNode;
0037 }
0038
0039 class RJittedAction : public RActionBase {
0040 private:
0041 std::unique_ptr<RActionBase> fConcreteAction;
0042
0043 public:
0044 RJittedAction(RLoopManager &lm, const ROOT::RDF::ColumnNames_t &columns, const RColumnRegister &colRegister,
0045 const std::vector<std::string> &prevVariations);
0046 ~RJittedAction();
0047
0048 void SetAction(std::unique_ptr<RActionBase> a) { fConcreteAction = std::move(a); }
0049
0050 void Run(unsigned int slot, Long64_t entry) final;
0051 void Initialize() final;
0052 void InitSlot(TTreeReader *r, unsigned int slot) final;
0053 void TriggerChildrenCount() final;
0054 void FinalizeSlot(unsigned int) final;
0055 void Finalize() final;
0056 void *PartialUpdate(unsigned int slot) final;
0057 bool HasRun() const final;
0058 void SetHasRun() final;
0059
0060 std::shared_ptr<GraphDrawing::GraphNode>
0061 GetGraph(std::unordered_map<void *, std::shared_ptr<GraphDrawing::GraphNode>> &visitedMap) final;
0062
0063
0064 std::unique_ptr<ROOT::Detail::RDF::RMergeableValueBase> GetMergeableValue() const final;
0065
0066 ROOT::RDF::SampleCallback_t GetSampleCallback() final;
0067
0068 std::unique_ptr<RActionBase> MakeVariedAction(std::vector<void *> &&results) final;
0069 std::unique_ptr<ROOT::Internal::RDF::RActionBase> CloneAction(void *newResult) final;
0070 };
0071
0072 }
0073 }
0074 }
0075
0076 #endif