gnn_tracking.analysis.efficiencies
==================================

.. py:module:: gnn_tracking.analysis.efficiencies


Classes
-------

.. autoapisummary::

   gnn_tracking.analysis.efficiencies.TracksVsDBSCANPlot
   gnn_tracking.analysis.efficiencies.PerformancePlot
   gnn_tracking.analysis.efficiencies.PerformanceComparisonPlot


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

.. py:class:: TracksVsDBSCANPlot(mean_df: pandas.DataFrame, **kwargs)

   Bases: :py:obj:`gnn_tracking.analysis.plotutils.Plot`


   Plot tracking efficiencies vs DBSCAN epsilon

   .. code-block:: python

       tvdp = TracksVsDBSCANPlot(
           mean_df=tcmodule.cluster_scanner.get_results().df_mean,
       )
       secondary_k = 4
       tvdp.plot_var("double_majority_pt0.9", secondary_k=secondary_k)
       tvdp.plot_var("lhc_pt0.9", secondary_k=secondary_k)
       tvdp.plot_var("perfect_pt0.9", secondary_k=secondary_k)


   .. py:attribute:: df


   .. py:method:: plot_var(var: str, *, secondary_k: int = 4, **kwargs)

      Plot an efficiency.

      :param var: Name of the variable to plot
      :param secondary_k: Plot a second line with this value of k
      :param \*\*kwargs: Passed to plot function



.. py:class:: PerformancePlot(xs: numpy.ndarray, df: pandas.DataFrame, *, df_ul: pandas.DataFrame | None = None, x_label: str = '$p_T$ [GeV]', y_label: str = 'Efficiency', **kwargs)

   Bases: :py:obj:`gnn_tracking.analysis.plotutils.Plot`


   Plot efficiencies vs some variable (pt, eta, etc.)

   :param xs: x values (e.g., pt or eta). Length must be one longer than the dataframe
              to account for bin edges.
   :type xs: np.ndarray
   :param df: Dataframe with values. Errors should be in columns named with suffix ``_err``.
   :type df: pd.DataFrame
   :param df_ul: Dataframe with values for upper limit. Defaults to None.
   :type df_ul: _type_, optional
   :param x_label: x label
   :type x_label: regexp, optional
   :param y_label: y label
   :type y_label: str, optional
   :param \*\*kwargs: Passed to `Plot`


   .. py:attribute:: df


   .. py:attribute:: df_ul
      :value: None



   .. py:attribute:: xs


   .. py:attribute:: _legend_items
      :value: []



   .. py:method:: plot_var(var: str, color: str, *, label: str | None = None, plot_ul=True) -> None

      Plot variable

      :param var: Name of variable
      :type var: str
      :param color: Color
      :type color: str
      :param label: Label for legend
      :type label: str | None, optional
      :param plot_ul: Plot upper limit if available
      :type plot_ul: bool, optional



   .. py:method:: add_blocked(a: float, b: float, label='Not trained for') -> None

      Used to mark low pt as "not trained for".



   .. py:method:: add_legend(**kwargs) -> None


.. py:class:: PerformanceComparisonPlot(xs: numpy.ndarray, var: str, x_label: str, ylabel: str = 'Efficiency', **kwargs)

   Bases: :py:obj:`gnn_tracking.analysis.plotutils.Plot`


   Similar to `PerforamncePlot`, except that we use the same x axis for
   plots of different models (and supply the dataframes directly to `plot_var`).

   :param xs: x values (e.g., pt or eta). Length must be one longer than the dataframe
              to account for bin edges.
   :type xs: np.ndarray
   :param var: Name of variable
   :type var: str
   :param x_label: x label
   :type x_label: regexp, optional
   :param y_label: y label
   :type y_label: str, optional
   :param \*\*kwargs: Passed to `Plot`


   .. py:attribute:: xs


   .. py:attribute:: var


   .. py:attribute:: _legend_items
      :value: []



   .. py:method:: plot_var(df: pandas.DataFrame, label: str, color: str) -> None


   .. py:method:: add_legend(**kwargs) -> None


   .. py:method:: add_blocked(a, b, label='Not trained for') -> None

      Used to mark low pt as "not trained for".



