|
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) |
|
Base class for FEI skims. Applies event-level pre-cuts and applies the FEI.
Definition at line 93 of file fei.py.
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.
226 This function passes `FEIChannelArgs` to the cached function `run_fei_for_skims`
227 to avoid applying the FEI twice.
230 `fei_precuts` for event-level cut definitions.
232 self.setup_fei_aliases(self.FEIChannelArgs)
233 path = self.fei_precuts(path)
236 self._ConditionalPath = path
238 self.run_fei_for_skims(self.FEIChannelArgs, self.FEIPrefix, path=path)
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.
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.
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.
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.
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.