Belle II Software  release-05-02-19
BaseFEISkim Class Reference
Inheritance diagram for BaseFEISkim:
Collaboration diagram for BaseFEISkim:

Public Member Functions

def additional_setup (self, path)
 
def __description__ (self)
 
def __category__ (self)
 
def __authors__ (self)
 
def __contact__ (self)
 
def code (self)
 
def load_standard_lists (self, path)
 
def build_lists (self, path)
 
def validation_histograms (self, path)
 
def __call__ (self, path, *udstOutput=None, validation=None)
 
def postskim_path (self)
 
def skim_event_cuts (self, cut, *path)
 
def flag (self)
 
def initialise_skim_flag (self, path)
 
def update_skim_flag (self, path)
 
def get_skim_list_names (self)
 
def __str__ (self)
 
def __name__ (self)
 
def set_skim_logging (self)
 
def output_udst (self, path)
 
def apply_hlt_hadron_cut_if_required (self, path)
 

Static Public Member Functions

def fei_precuts (path)
 
def run_fei_for_skims (FEIChannelArgs, FEIPrefix, *path)
 
def setup_fei_aliases (FEIChannelArgs)
 

Public Attributes

 name
 
 OutputFileName
 
 additionalDataDescription
 
 SkimLists
 

Static Public Attributes

string FEIPrefix = "FEIv4_2021_MC14_release_05_01_12"
 
dictionary FEIChannelArgs = {}
 
dictionary MergeDataStructures = {"FEIChannelArgs": _merge_boolean_dicts}
 
list NoisyModules = ["ParticleCombiner"]
 
bool ApplyHLTHadronCut = True
 
bool produce_on_tau_samples = False
 
list TestFiles = [get_test_file("MC13_mixedBGx1")]
 

Private Member Functions

def _method_unchanged (self, method)
 

Private Attributes

 _ConditionalPath
 
 _udstOutput
 
 _validation
 

Static Private Attributes

list __authors__ = ["Racha Cheaib", "Hannah Wakeling", "Phil Grace"]
 
 __contact__ = __liaison__
 
string __category__ = "physics, Full Event Interpretation"
 
 _MainPath = None
 

Detailed Description

Base class for FEI skims. Applies event-level pre-cuts and applies the FEI.

Definition at line 93 of file fei.py.

Member Function Documentation

◆ __call__()

def __call__ (   self,
  path,
udstOutput = None,
  validation = None 
)
inherited
Produce the skim particle lists and write uDST file.

Parameters:
    path (basf2.Path): Skim path to be processed.
    udstOutput (bool): [DEPRECATED ARGUMENT] If True, add uDST output to the path.
    validation (bool): [DEPRECATED ARGUMENT] If True, build lists and write
validation histograms instead of writing uDSTs.

Definition at line 648 of file skimExpertFunctions.py.

◆ _method_unchanged()

def _method_unchanged (   self,
  method 
)
privateinherited
Check if the method of the class is the same as in its parent class, or if it has
been overridden.

Useful for determining if *e.g.* `validation_histograms` has been defined for a
particular skim.

Definition at line 810 of file skimExpertFunctions.py.

◆ additional_setup()

def additional_setup (   self,
  path 
)
Apply pre-FEI event-level cuts and apply the FEI. This setup function is run
by all FEI skims, so they all have the save event-level pre-cuts.

This function passes `FEIChannelArgs` to the cached function `run_fei_for_skims`
to avoid applying the FEI twice.

See also:
    `fei_precuts` for event-level cut definitions.

Reimplemented from BaseSkim.

Definition at line 222 of file fei.py.

222  def additional_setup(self, path):
223  """Apply pre-FEI event-level cuts and apply the FEI. This setup function is run
224  by all FEI skims, so they all have the save event-level pre-cuts.
225 
226  This function passes `FEIChannelArgs` to the cached function `run_fei_for_skims`
227  to avoid applying the FEI twice.
228 
229  See also:
230  `fei_precuts` for event-level cut definitions.
231  """
232  self.setup_fei_aliases(self.FEIChannelArgs)
233  path = self.fei_precuts(path)
234  # The FEI skims require some manual handling of paths that is not necessary in
235  # any other skim.
236  self._ConditionalPath = path
237 
238  self.run_fei_for_skims(self.FEIChannelArgs, self.FEIPrefix, path=path)
239 
240 

◆ apply_hlt_hadron_cut_if_required()

def apply_hlt_hadron_cut_if_required (   self,
  path 
)
inherited
Apply the ``hlt_hadron`` selection if the property ``ApplyHLTHadronCut`` is True.

Parameters:
    path (basf2.Path): Skim path to be processed.

Reimplemented in CombinedSkim.

Definition at line 883 of file skimExpertFunctions.py.

◆ build_lists()

def build_lists (   self,
  path 
)
inherited
Create the skim lists to be saved in the output uDST. This function is where
the main skim cuts should be applied. At the end of this method, the attribute
``SkimLists`` must be set so it can be used by `output_udst`.

Parameters:
    path (basf2.Path): Skim path to be processed.

Reimplemented in EarlyData_DstToD0Pi_D0ToHpHmPi0, CombinedSkim, EarlyData_DstToD0Pi_D0ToHpJmPi0, B0toD0Kpipi0_pi0, DstToD0Pi_D0ToHpJmKs, B0toDstarD, DstToD0Pi_D0ToNeutrals, B0toDD_Kpipi_Kspi, DstToD0Pi_D0ToHpJmEta, BtoD0rho_Kpipipi_Kpipi0, DstToD0Pi_D0ToHpHmHpJm, BtoD0rho_Kpi, SystematicsBhabha, DstToD0Pi_D0ToKsOmega, SystematicsKshort, BtoD0h_Kshh, DstToD0Pi_D0ToHpHmPi0, feiSL, DstToD0Pi_D0ToHpJmPi0, SystematicsJpsi, BtoD0h_Kpipipi_Kpipi0, feiHadronic, SystematicsRadMuMuFromHLTFlag, SystematicsFourLeptonFromHLTFlag, BtoD0h_Kpi, BtoKplusLLP, Random, DstToD0Pi_D0ToHpJm, feiSLBplus, SystematicsPhiGamma, InelasticDarkMatter, BtoD0h_hh, DstToDpPi0_DpToHpPi0, SystematicsLambda, RadBhabhaV0Control, B0toDstarRho_D0pi_Kpipipi_Kpipi0, feiSLB0, DielectronPlusMissingEnergy, LambdacTopHpJm, SystematicsRadEE, B0toDstarRho_D0pi_Kpi, TauThrust, B0toDrho_Kspi, feiHadronicBplus, SystematicsEELL, GammaGammaControlKLMDark, XToDp_DpToHpHmJp, B0toDrho_Kpipi, SystematicsRadMuMu, B0toDstarl_Kpi_Kpipi0_Kpipipi, feiHadronicB0, XToDp_DpToKsHp, EGammaControlDark, B0toDstarPi_D0pi_Kpipipi_Kpipi0, inclusiveBplusToKplusNuNu, TauGeneric, BtoRhopRhom, B0toDstarPi_D0pi_Kpi, TDCPV_ccs, LFVZpVisible, BtoHad3Tracks1Pi0, InclusiveLambda, DstToD0Pi_D0ToRare, B0toDpi_Kspi, ElectronMuonPlusMissingEnergy, BtoXll_LFV, SLUntagged, SingleTagPseudoScalar, B0toDpi_Kpipi, BtoHad1Pi0, Resonance, XToD0_D0ToNeutrals, DimuonPlusMissingEnergy, CharmoniumPsi, ALP3Gamma, BtoD0h_Kspipipi0, dilepton, LowMassTwoTrack, BtoXll, TDCPV_qqs, BtoHadTracks, BottomoniumUpsilon, XToD0_D0ToHpJm, SystematicsTracking, BtoD0h_Kspi0, PRsemileptonicUntagged, TauLFV, BtoXgamma, BtoPi0Pi0, LeptonicUntagged, SystematicsDstar, SinglePhotonDark, BottomoniumEtabExclusive, and TwoTrackLeptonsForLuminosity.

Definition at line 631 of file skimExpertFunctions.py.

◆ code()

def code (   self)
inherited
Eight-digit code assigned to this skim in the registry.

Definition at line 574 of file skimExpertFunctions.py.

◆ fei_precuts()

def fei_precuts (   path)
static
Skim pre-cuts are applied before running the FEI, to reduce computation time.
This setup function is run by all FEI skims, so they all have the save
event-level pre-cuts:

* :math:`n_{\\text{cleaned tracks}} \\geq 3`
* :math:`n_{\\text{cleaned ECL clusters}} \\geq 3`
* :math:`\\text{Visible energy of event (CMS frame)}>4~{\\rm GeV}`
* :math:`2~{\\rm GeV}<E_{\\text{cleaned tracks & clusters in
  ECL}}<7~{\\rm GeV}`

We define "cleaned" tracks and clusters as:

* Cleaned tracks (``pi+:FEI_cleaned``): :math:`d_0 < 0.5~{\\rm cm}`,
  :math:`|z_0| < 2~{\\rm cm}`, and :math:`p_T > 0.1~{\\rm GeV}` * Cleaned ECL
  clusters (``gamma:FEI_cleaned``): :math:`0.296706 < \\theta < 2.61799`, and
  :math:`E>0.1~{\\rm GeV}`

Definition at line 117 of file fei.py.

◆ flag()

def flag (   self)
inherited
Event-level variable indicating whether an event passes the skim or not. To use
the skim flag without writing uDST output, use the argument ``udstOutput=False``
when instantiating the skim class.

Reimplemented in CombinedSkim.

Definition at line 768 of file skimExpertFunctions.py.

◆ get_skim_list_names()

def get_skim_list_names (   self)
inherited
Get the list of skim particle list names, without creating the particle lists on
the current path.

Definition at line 796 of file skimExpertFunctions.py.

◆ initialise_skim_flag()

def initialise_skim_flag (   self,
  path 
)
inherited
Add the module `skimExpertFunctions.InitialiseSkimFlag` to the path, which
initialises flag for this skim to zero.

Reimplemented in CombinedSkim.

Definition at line 776 of file skimExpertFunctions.py.

◆ load_standard_lists()

def load_standard_lists (   self,
  path 
)
inherited
Load any standard lists. This code will be run before any
`BaseSkim.additional_setup` and `BaseSkim.build_lists`.

Note:
    This is separated into its own function so that when skims are combined, any
    standard lists used by two skims can be loaded just once.

Parameters:
    path (basf2.Path): Skim path to be processed.

Reimplemented in EarlyData_DstToD0Pi_D0ToHpHmPi0, EarlyData_DstToD0Pi_D0ToHpJmPi0, B0toD0Kpipi0_pi0, CombinedSkim, DstToD0Pi_D0ToHpJmKs, B0toDstarD, DstToD0Pi_D0ToNeutrals, B0toDD_Kpipi_Kspi, DstToD0Pi_D0ToHpJmEta, BtoD0rho_Kpipipi_Kpipi0, DstToD0Pi_D0ToHpHmHpJm, BtoD0rho_Kpi, SystematicsBhabha, DstToD0Pi_D0ToKsOmega, SystematicsKshort, BtoD0h_Kshh, DstToD0Pi_D0ToHpHmPi0, DstToD0Pi_D0ToHpJmPi0, SystematicsJpsi, BtoD0h_Kpipipi_Kpipi0, SystematicsRadMuMuFromHLTFlag, SystematicsFourLeptonFromHLTFlag, BtoD0h_Kpi, BtoKplusLLP, Random, DstToD0Pi_D0ToHpJm, InelasticDarkMatter, SystematicsPhiGamma, BtoD0h_hh, DstToDpPi0_DpToHpPi0, SystematicsLambda, RadBhabhaV0Control, B0toDstarRho_D0pi_Kpipipi_Kpipi0, DielectronPlusMissingEnergy, LambdacTopHpJm, B0toDstarRho_D0pi_Kpi, SystematicsRadEE, SystematicsEELL, B0toDrho_Kspi, XToDp_DpToHpHmJp, GammaGammaControlKLMDark, TauThrust, SystematicsRadMuMu, B0toDrho_Kpipi, B0toDstarl_Kpi_Kpipi0_Kpipipi, XToDp_DpToKsHp, EGammaControlDark, B0toDstarPi_D0pi_Kpipipi_Kpipi0, BtoRhopRhom, B0toDstarPi_D0pi_Kpi, LFVZpVisible, TDCPV_ccs, TauGeneric, InclusiveLambda, BtoHad3Tracks1Pi0, DstToD0Pi_D0ToRare, B0toDpi_Kspi, ElectronMuonPlusMissingEnergy, BtoXll_LFV, SingleTagPseudoScalar, B0toDpi_Kpipi, Resonance, BtoHad1Pi0, SLUntagged, DimuonPlusMissingEnergy, CharmoniumPsi, XToD0_D0ToNeutrals, BtoD0h_Kspipipi0, dilepton, BtoXll, BtoHadTracks, BottomoniumUpsilon, TDCPV_qqs, SystematicsTracking, PRsemileptonicUntagged, BtoD0h_Kspi0, BtoPi0Pi0, BtoXgamma, LeptonicUntagged, TauLFV, SinglePhotonDark, BottomoniumEtabExclusive, and SystematicsDstar.

Definition at line 599 of file skimExpertFunctions.py.

◆ output_udst()

def output_udst (   self,
  path 
)
inherited
Write the skim particle lists to an output uDST and print a summary of the
skim list statistics.

Parameters:
    path (basf2.Path): Skim path to be processed.

Reimplemented in CombinedSkim.

Definition at line 860 of file skimExpertFunctions.py.

◆ postskim_path()

def postskim_path (   self)
inherited
Return the skim path.

* If `BaseSkim.skim_event_cuts` has been run, then the skim lists will only be
  created on a conditional path, so subsequent modules should be added to the
  conditional path.

* If `BaseSkim.skim_event_cuts` has not been run, then the main analysis path is
  returned.

Definition at line 694 of file skimExpertFunctions.py.

◆ run_fei_for_skims()

def run_fei_for_skims (   FEIChannelArgs,
  FEIPrefix,
path 
)
static
Reconstruct hadronic and semileptonic :math:`B^0` and :math:`B^+` tags using
the generically trained FEI.

Parameters:
    FEIChannelArgs (dict(str, bool)): A dict of keyword-boolean pairs to be
passed to `fei.get_default_channels`.
    FEIPrefix (str): Prefix label for the FEI training used in the FEI skims.
    path (`basf2.Path`): The skim path to be processed.

Definition at line 175 of file fei.py.

◆ set_skim_logging()

def set_skim_logging (   self)
inherited
Turns the log level to ERROR for selected modules to decrease the total size
of the skim log files. Additional modules can be silenced by setting the attribute
`NoisyModules` for an individual skim.

Parameters:
    path (basf2.Path): Skim path to be processed.

.. warning::

    This method works by inspecting the modules added to the path, and setting
    the log level to ERROR. This method should be called *after* all
    skim-related modules are added to the path.

Reimplemented in CombinedSkim.

Definition at line 834 of file skimExpertFunctions.py.

◆ skim_event_cuts()

def skim_event_cuts (   self,
  cut,
path 
)
inherited
Apply event-level cuts in a skim-safe way.

Parameters:
    cut (str): Event-level cut to be applied.
    path (basf2.Path): Skim path to be processed.

Returns:
    ConditionalPath (basf2.Path): Path on which the rest of this skim should be
processed. On this path, only events which passed the event-level cut
will be processed further.

.. Tip::
    If running this function in `BaseSkim.additional_setup` or
    `BaseSkim.build_lists`, redefine the ``path`` to the path returned by
    `BaseSkim.skim_event_cuts`, *e.g.*

    .. code-block:: python

def build_lists(self, path):
    path = self.skim_event_cuts("nTracks>4", path=path)
    # rest of skim list building...

.. Note::
    The motivation for using this function over `applyEventCuts` is that
    `applyEventCuts` completely removes events from processing. If we combine
    multiple skims in a single steering file (which is done in production), and
    the first has a set of event-level cuts, then all the remaining skims will
    never even see those events.

    Internally, this function creates a new path, which is only processed for
    events passing the event-level cut. To avoid issues around particles not
    being available on the main path (leading to noisy error logs), we need to
    add the rest of the skim to this path. So this new path is assigned to the
    attribute ``BaseSkim._ConditionalPath``, and ``BaseSkim.__call__`` will run
    all remaining methods on this path.

Definition at line 716 of file skimExpertFunctions.py.

◆ update_skim_flag()

def update_skim_flag (   self,
  path 
)
inherited
Add the module `skimExpertFunctions.InitialiseSkimFlag` to the path, which
initialises flag for this skim to zero.

.. Warning::

    If a conditional path has been created before this, then this function
    *must* run on the conditional path, since the skim lists are not guaranteed
    to exist for all events on the main path.

Reimplemented in CombinedSkim.

Definition at line 783 of file skimExpertFunctions.py.

◆ validation_histograms()

def validation_histograms (   self,
  path 
)
inherited

The documentation for this class was generated from the following file: