class_docstr: Tracker for OC-SORT.
  
  Args:
      motion (dict): Configuration of motion. Defaults to None.
      obj_score_thrs (float): Detection score threshold for matching objects.
          Defaults to 0.3.
      init_track_thr (float): Detection score threshold for initializing a
          new tracklet. Defaults to 0.7.
      weight_iou_with_det_scores (bool): Whether using detection scores to
          weight IOU which is used for matching. Defaults to True.
      match_iou_thr (float): IOU distance threshold for matching between two
          frames. Defaults to 0.3.
      num_tentatives (int, optional): Number of continuous frames to confirm
          a track. Defaults to 3.
      vel_consist_weight (float): Weight of the velocity consistency term in
          association (OCM term in the paper).
      vel_delta_t (int): The difference of time step for calculating of the
          velocity direction of tracklets.
      init_cfg (dict or list[dict], optional): Initialization config dict.
          Defaults to None.
docstr: Update a track.
docstr_tok: ["Update","a","track","."]
code: def update_track(self, id: int, obj: Tuple[torch.Tensor]):
      """Update a track."""
      super().update_track(id, obj)
      if self.tracks[id].tentative:
          if len(self.tracks[id]["bboxes"]) >= self.num_tentatives:
              self.tracks[id].tentative = False
      bbox = bbox_xyxy_to_cxcyah(
          self.tracks[id].bboxes[-1]
      )  # size = (1, 4)
      assert bbox.ndim == 2 and bbox.shape[0] == 1
      bbox = bbox.squeeze(0).cpu().numpy()
      self.tracks[id].mean, self.tracks[id].covariance = self.kf.update(
          self.tracks[id].mean, self.tracks[id].covariance, bbox
      )
      self.tracks[id].tracked = True
      bbox_id = self.memo_items.index("bboxes")
      self.tracks[id].obs.append(obj[bbox_id])
  
      bbox1 = self.k_step_observation(self.tracks[id])
      bbox2 = obj[bbox_id]
      self.tracks[id].velocity = self.vel_direction(bbox1, bbox2).to(
          obj[bbox_id].device
      )
  
imports: from typing import List, Optional, Tuple
  import numpy
  import torch
  from addict import Dict
  from mmengine.structures import InstanceData
  from mmdet.registry import MODELS
  from mmdet.structures import DetDataSample
  from mmdet.structures.bbox import bbox_cxcyah_to_xyxy, bbox_overlaps, bbox_xyxy_to_cxcyah
  from .sort_tracker import SORTTracker
label_desc: Use image node_id 4 for calling the OCSORTTracker obj's underlying member method code with example usage: obj.update_track(id, obj) without return types