From 65bb0ca942096fa7a8d3dce9a70297d4564ccbf3 Mon Sep 17 00:00:00 2001
From: alja <amraktadel@ucsd.edu>
Date: Mon, 1 Jul 2019 14:02:35 -0700
Subject: [PATCH] Pass item index in proxy builder Build() methods.

---
 .../eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx |  4 ++--
 .../ROOT/REveDataSimpleProxyBuilderTemplate.hxx  | 16 ++++++++--------
 graf3d/eve7/src/REveDataClasses.cxx              |  2 +-
 graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx   |  6 +++---
 tutorials/eve7/collection_proxies.C              |  7 ++-----
 5 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx b/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx
index 213192b8675..d6426b95cdd 100644
--- a/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx
+++ b/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilder.hxx
@@ -33,8 +33,8 @@ protected:
 
    //called once for each collection in collection, the void* points to the
    // object properly offset in memory
-   virtual void Build(const void* data, REveElement* iCollectionHolder, const REveViewContext*) = 0;
-   virtual void BuildViewType(const void* data, REveElement* iCollectionHolder, std::string viewType, const REveViewContext*) = 0;
+   virtual void Build(const void* data, unsigned int index, REveElement* iCollectionHolder, const REveViewContext*) = 0;
+   virtual void BuildViewType(const void* data, unsigned int index, REveElement* iCollectionHolder, std::string viewType, const REveViewContext*) = 0;
 
    virtual void Clean();
 
diff --git a/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilderTemplate.hxx b/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilderTemplate.hxx
index 43eeb9b0037..4355967bb12 100644
--- a/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilderTemplate.hxx
+++ b/graf3d/eve7/inc/ROOT/REveDataSimpleProxyBuilderTemplate.hxx
@@ -18,29 +18,29 @@ public:
 
 protected:
    using REveDataSimpleProxyBuilder::Build;
-   virtual void Build(const void *iData, REveElement *itemHolder, const REveViewContext *context)
+   virtual void Build(const void *iData, unsigned int index, REveElement *itemHolder, const REveViewContext *context)
    {
       if(iData) {
-         Build(*reinterpret_cast<const T*> (iData), itemHolder, context);
+         Build(*reinterpret_cast<const T*> (iData), index, itemHolder, context);
       }
    }
 
    using REveDataSimpleProxyBuilder::BuildViewType;
-   virtual void BuildViewType(const void *iData, REveElement *itemHolder, std::string viewType, const REveViewContext *context)
+   virtual void BuildViewType(const void *iData, unsigned int index, REveElement *itemHolder, std::string viewType, const REveViewContext *context)
    {
       if(iData) {
-         BuildViewType(*reinterpret_cast<const T*> (iData), itemHolder, viewType, context);
+         BuildViewType(*reinterpret_cast<const T*> (iData), index, itemHolder, viewType, context);
       }
    }
 
-   virtual void Build(const T &/*iData*/, REveElement */*itemHolder*/, const REveViewContext */*context*/)
+   virtual void Build(const T &/*iData*/, unsigned int index, REveElement */*itemHolder*/, const REveViewContext */*context*/)
    {
-      throw std::runtime_error("virtual Build(const T&, unsigned int, TEveElement&, const FWViewContext*) not implemented by inherited class.");
+      throw std::runtime_error("virtual Build(const T&, unsigned int, REveElement&, const REveViewContext*) not implemented by inherited class.");
    }
 
-   virtual void BuildViewType(const T &/*iData*/, REveElement */*itemHolder*/, std::string /*viewType*/, const REveViewContext */*context*/)
+   virtual void BuildViewType(const T &/*iData*/, unsigned int index, REveElement */*itemHolder*/, std::string /*viewType*/, const REveViewContext */*context*/)
    {
-      throw std::runtime_error("virtual BuildViewType(const T&, unsigned int, TEveElement&, const FWViewContext*) not implemented by inherited class.");
+      throw std::runtime_error("virtual BuildViewType(const T&, unsigned int, REveElement&, const REveViewContext*) not implemented by inherited class.");
    }
 
 private:
diff --git a/graf3d/eve7/src/REveDataClasses.cxx b/graf3d/eve7/src/REveDataClasses.cxx
index a08f33a7776..998f45bba33 100644
--- a/graf3d/eve7/src/REveDataClasses.cxx
+++ b/graf3d/eve7/src/REveDataClasses.cxx
@@ -313,7 +313,7 @@ void REveDataColumn::SetExpressionAndType(const std::string& expr, FieldType_e t
      << ") = [](" << icls->GetName() << "* p){" << icls->GetName() << " &i=*p; return (" << fExpression.Data()
      << "); }";
 
-   // printf("%s\n", s.Data());
+   printf("%s\n", s.str().c_str());
    try {
       gROOT->ProcessLine(s.str().c_str());
    }
diff --git a/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx b/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx
index ccb59283ba6..c9bd5eb7cad 100644
--- a/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx
+++ b/graf3d/eve7/src/REveDataSimpleProxyBuilder.cxx
@@ -60,7 +60,7 @@ REveDataSimpleProxyBuilder::Build(const REveDataCollection *collection,
       auto di = Collection()->GetDataItem(index);
       if (di->GetRnrSelf() && !di->GetFiltered())
       {
-         Build(collection->GetDataPtr(index), itemHolder, vc);
+         Build(collection->GetDataPtr(index), index, itemHolder, vc);
       }
    }
 }
@@ -91,7 +91,7 @@ REveDataSimpleProxyBuilder::BuildViewType(const REveDataCollection* collection,
       auto di = Collection()->GetDataItem(index);
       if (di->GetRnrSelf() && !di->GetFiltered())
       {
-         BuildViewType(collection->GetDataPtr(index), itemHolder, viewType, vc);
+         BuildViewType(collection->GetDataPtr(index), index, itemHolder, viewType, vc);
       }
    }
 }
@@ -106,7 +106,7 @@ REveDataSimpleProxyBuilder::VisibilityModelChanges(int idx, REveElement* iCompou
    if (item->GetRnrSelf() && iCompound->NumChildren()==0)
    {
       printf("REveDataSimpleProxyBuilder::VisibilityModelChanges BUILD %d \n", idx);
-      Build(Collection()->GetDataPtr(idx), iCompound, vc);
+      Build(Collection()->GetDataPtr(idx), idx, iCompound, vc);
       returnValue=true;
    }
    return returnValue;
diff --git a/tutorials/eve7/collection_proxies.C b/tutorials/eve7/collection_proxies.C
index 90bb75f1efb..3b46da4c019 100644
--- a/tutorials/eve7/collection_proxies.C
+++ b/tutorials/eve7/collection_proxies.C
@@ -148,7 +148,7 @@ class XYJetProxyBuilder: public REX::REveDataSimpleProxyBuilderTemplate<XYJet>
    virtual bool HaveSingleProduct() const { return false; }
 
    using REveDataSimpleProxyBuilderTemplate<XYJet>::BuildViewType;
-   virtual void BuildViewType(const XYJet& dj, REX::REveElement* iItemHolder, std::string viewType, const REX::REveViewContext* context)
+   virtual void BuildViewType(const XYJet& dj, unsigned int /*idx*/, REX::REveElement* iItemHolder, std::string viewType, const REX::REveViewContext* context)
    {
       auto jet = new REX::REveJetCone();
       jet->SetCylinder(context->GetMaxR(), context->GetMaxZ());
@@ -206,7 +206,7 @@ class XYJetProxyBuilder: public REX::REveDataSimpleProxyBuilderTemplate<XYJet>
 class TrackProxyBuilder : public REX::REveDataSimpleProxyBuilderTemplate<TParticle>
 {
    using REveDataSimpleProxyBuilderTemplate<TParticle>::Build;
-   virtual void Build(const TParticle& p, REX::REveElement* iItemHolder, const REX::REveViewContext* context)
+   virtual void Build(const TParticle& p, unsigned int /*idx*/, REX::REveElement* iItemHolder, const REX::REveViewContext* context)
    {
       const TParticle *x = &p;
       // printf("==============  BUILD track %s (pt=%f, eta=%f) \n", iItemHolder->GetCName(), p.Pt(), p.Eta());
@@ -466,7 +466,6 @@ public:
    }
 };
 
-//______________________________________________________________________________
 
 
 void collection_proxies(bool proj=true)
@@ -475,8 +474,6 @@ void collection_proxies(bool proj=true)
 
    auto event = new Event();
    event->Create();
-   event->N_tracks = 10;
-   event->N_jets = 4;
 
    gRhoZView = true;
 
-- 
GitLab