Source code for vibe.analysis_validation_modes.tracking.prompt_tracks_distributions

import basf2 as b2
import modularAnalysis as ma
import variables.collections as vc
from variables import variables as vm

from vibe.core.utils.misc import fancy_validation_mode_header
from vibe.core.validation_mode import ValidationModeBaseClass


[docs] @fancy_validation_mode_header class PromptTracksDistributions(ValidationModeBaseClass): name = "PromptTracksDistributions"
[docs] def create_basf2_path(self, fraction_to_process=0.3): main = b2.Path() ma.applyEventCuts( cut=f"eventRandom < {fraction_to_process}", path=main, ) # uncomment to print ERRORS only # b2.set_log_level(b2.LogLevel.ERROR) main.add_module("Progress") track_cuts = "dr < 1.0 and abs(dz) < 2.0" ma.fillParticleList("pi+:IP", track_cuts, path=main) vm.addAlias("nIPTracks", f"nCleanedTracks({track_cuts})") vm.addAlias("nIPTracks", f"nCleanedTracks({track_cuts})") # store if event passed HLT skim # dimuon event line_mumu_tight_or_highm = "SoftwareTriggerResult(software_trigger_cut&skim&accept_mumu_tight_or_highm)" line_mumutight = "SoftwareTriggerResult(software_trigger_cut&skim&accept_mumutight)" line_mumu_2trk = "SoftwareTriggerResult(software_trigger_cut&skim&accept_mumu_2trk)" dimuonEventCutString = f"[{line_mumu_tight_or_highm} == 1]" dimuonEventCutString += f" or [[isNAN({line_mumu_tight_or_highm}) == 1] and [{line_mumutight} == 1]]" dimuonEventCutString += f" or [[isNAN({line_mumutight}) == 1] and [{line_mumu_2trk} == 1]]" vm.addAlias("isDimuonEvent", f"passesEventCut({dimuonEventCutString})") # bhabha line_bhabha = "SoftwareTriggerResult(software_trigger_cut&skim&accept_bhabha)" bhabhaEventCutString = f"[{line_bhabha} == 1]" vm.addAlias("isBhabhaEvent", f"passesEventCut({bhabhaEventCutString})") # hadron line_hadron = "SoftwareTriggerResult(software_trigger_cut&skim&accept_hadron)" hadronEventCutString = f"[{line_hadron} == 1]" vm.addAlias("isHadronEvent", f"passesEventCut({hadronEventCutString})") vm.addAlias("cdcecl_veto", "L1Input(cdcecl_veto)") vm.addAlias("passive_veto", "L1Input(passive_veto)") VARS = ["IPX", "IPY", "IPZ", "nTracks", "nIPTracks"] VARS += vc.track + vc.kinematics + vc.track_hits + vc.trackfit_parameters VARS += ["cosTheta", "phi", "charge", "trackTime", "clusterE"] VARS += ["isTrackFlippedAndRefitted", "isDimuonEvent", "isBhabhaEvent", "isHadronEvent"] VARS += ["cdcecl_veto", "passive_veto"] VARS = sorted(list(set(VARS))) self.variables_to_validation_ntuple( decay_str="pi+:IP", variables=VARS, path=main, ) return main