:py:mod:`pytomography.projectors.CT.ct_gen3_system_matrix`
==========================================================

.. py:module:: pytomography.projectors.CT.ct_gen3_system_matrix


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   pytomography.projectors.CT.ct_gen3_system_matrix.CTGen3SystemMatrix




.. py:class:: CTGen3SystemMatrix(object_meta, proj_meta, N_splits = 1, device = pytomography.device)

   Bases: :py:obj:`pytomography.projectors.SystemMatrix`

   System matrix for 3rd generation clinical DICOM scanners with cylindrical detector panels. For more information, see the DICOM-CTPD user manual.

   :param object_meta: Metadata for object space
   :type object_meta: ObjectMeta
   :param proj_meta: Projection metadata for the CT system
   :type proj_meta: CTConeBeamFlatPanelProjMeta
   :param N_splits: Splits up computation of forward/back projection to save GPU memory. Defaults to 1.
   :type N_splits: int, optional
   :param device: Device on which projections are output. Defaults to pytomography.device.
   :type device: str, optional

   .. py:method:: get_weighting_subset(subset_idx)

      Computes the relative weighting of a given subset (given that the projection space is reduced). This is used for scaling parameters relative to :math:`\tilde{H}_m^T 1` in reconstruction algorithms, such as prior weighting :math:`\beta`

      :param subset_idx: Subset index
      :type subset_idx: int

      :returns: Weighting for the subset.
      :rtype: float


   .. py:method:: get_projection_subset(projections, subset_idx)

      Obtains subsampled projections :math:`g_m` corresponding to subset index :math:`m`. CT conebeam flat panel partitions projections based on angle.

      :param projections: total projections :math:`g`
      :type projections: torch.Tensor
      :param subset_idx: subset index :math:`m`
      :type subset_idx: int

      :returns: subsampled projections :math:`g_m`.
      :rtype: torch.Tensor


   .. py:method:: set_n_subsets(n_subsets)

      Returns a list where each element consists of an array of indices corresponding to a partitioned version of the projections.

      :param n_subsets: Number of subsets to partition the projections into
      :type n_subsets: int

      :returns: List of arrays where each array corresponds to the projection indices of a particular subset.
      :rtype: list


   .. py:method:: compute_normalization_factor(subset_idx)

      Computes the normalization factor :math:`H^T 1`

      :param subset_idx: Subset index for ths sinogram. If None, considers all elements. Defaults to None..
      :type subset_idx: int, optional

      :returns: Normalization factor.
      :rtype: torch.Tensor


   .. py:method:: forward(object, subset_idx=None, *args, **kwargs)

      Computes forward projection

      :param object: Object to be forward projected
      :type object: torch.Tensor
      :param subset_idx: Subset index :math:`m` of the projection. If None, then projects to entire projection space. Defaults to None.
      :type subset_idx: int | None, optional

      :returns: Projections corresponding to :math:`\int \mu dx` along all LORs.
      :rtype: torch.Tensor


   .. py:method:: backward(proj, subset_idx=None, *args, **kwargs)

      Computes back projection

      :param object: Object to be forward projected
      :type object: torch.Tensor
      :param subset_idx: Subset index :math:`m` of the projection. If None, then projects to entire projection space. Defaults to None.
      :type subset_idx: int | None, optional

      :returns: Projections corresponding to :math:`\int \mu dx` along all LORs.
      :rtype: torch.Tensor



