code: def _send_gh(self, ctx: Context, grad_and_hess: DataFrame):
      en_grad_hess = self._g_h_process(grad_and_hess)
      ctx.hosts.put("en_gh", en_grad_hess)
      ctx.hosts.put("en_kit", [self._pk, self._evaluator])
  
imports: from fate.ml.ensemble.learner.decision_tree.tree_core.decision_tree import DecisionTree, Node, _update_sample_pos_on_local_nodes, _merge_sample_pos
  from fate.ml.ensemble.learner.decision_tree.tree_core.hist import SBTHistogramBuilder
  from fate.ml.ensemble.learner.decision_tree.tree_core.splitter import SBTSplitter
  from fate.ml.ensemble.learner.decision_tree.tree_core.loss import get_task_info
  from fate.ml.ensemble.learner.decision_tree.tree_core.decision_tree import ALL_FEAT, GUEST_FEAT_ONLY
  from fate.ml.utils.predict_tools import BINARY, MULTI, REGRESSION
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  from typing import List
  import functools
  import logging
  import pandas
  import torch
  import math
label_desc: Use image node_id 7 for calling the HeteroDecisionTreeGuest obj's underlying member method code with example usage: obj._send_gh(ctx, grad_and_hess) without return types