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