Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:29:50

0001 // Author: Enrico Guiraud, Danilo Piparo CERN  09/2018
0002 
0003 /*************************************************************************
0004  * Copyright (C) 1995-2020, Rene Brun and Fons Rademakers.               *
0005  * All rights reserved.                                                  *
0006  *                                                                       *
0007  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0008  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
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 } // namespace RDF
0027 } // namespace Detail
0028 } // namespace ROOT
0029 
0030 namespace ROOT {
0031 namespace Internal {
0032 namespace RDF {
0033 
0034 // fwd decl
0035 namespace GraphDrawing {
0036 class GraphNode;
0037 } // ns GraphDrawing
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    // Helper for RMergeableValue
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 } // ns RDF
0073 } // ns Internal
0074 } // ns ROOT
0075 
0076 #endif // ROOT_RJITTEDACTION