Source code for vibe.analysis_validation_modes.pid.muonID_validation_mode

from typing import List
import basf2 as b2
import modularAnalysis as ma
import variables.collections as vc
import variables.utils as vu
import numpy as np

from vibe.core.utils.misc import fancy_validation_mode_header
from vibe.core.validation_mode import ValidationModeBaseClass
from vibe.core.helper.histogram_tools import HistVariable, Histogram, Histogram2D, HistComponent


[docs] @fancy_validation_mode_header class MuonIDValidationMode(ValidationModeBaseClass): name = "MuonIDValidationMode" @property def plotting_strategies(self): return [ "per_dataset", "overlay_datasets", "overlay_datasets_per_component", "chunked_per_dataset_component", "data_mc_comparison", "normalised_data_mc_comparison", "data_mc_ratio_2d", ]
[docs] def create_basf2_path(self): main = b2.Path() ma.fillParticleList( "mu+:reco", cut="[muonID > 0.5] and [abs(dz) < 2.0] and [dr < 0.5] and [thetaInKLMAcceptance]", path=main, ) ma.reconstructDecay( decayString="Upsilon(4S):reco -> mu+:reco mu-:reco", cut="10.0 < M < 11.0", path=main, ) variables = vu.create_aliases_for_selected( list( vc.kinematics + vc.track + vc.pid + vc.vertex + vc.mc_truth + ["thetaInKLMAcceptance", "cosTheta", "phi"] ), "Upsilon(4S):reco -> ^mu+:reco ^mu-:reco", ["mup", "mum"], ) self.variables_to_validation_ntuple( decay_str="Upsilon(4S):reco", variables=variables, path=main, ) return main
@property def analysis_validation_histograms(self) -> List[Histogram]: # Define histogram specifications as tuples: # (name, title, df_label, hist_label, component_label, unit, bins, scope, additional_cut_str) specs = [ ("phi_mup", r"$\mu\mu$", "mup_phi", r"$\phi$", r"$\mu^+$", "rad", 200, (-np.pi, np.pi), None), ("phi_mum", r"$\mu\mu$", "mum_phi", r"$\phi$", r"$\mu^-$", "rad", 200, (-np.pi, np.pi), None), ( "phi_mup_forwardKLM", r"Forward KLM Endcap", "mup_phi", r"$\phi$", r"$\mu^+$", "rad", 200, (-np.pi, np.pi), "mup_thetaInKLMAcceptance == 1", ), ( "phi_mum_forwardKLM", r"Forward KLM Endcap", "mum_phi", r"$\phi$", r"$\mu^-$", "rad", 200, (-np.pi, np.pi), "mum_thetaInKLMAcceptance == 1", ), ( "phi_mup_forwardKLMoverlap", r"Forward KLM Overlap", "mup_phi", r"$\phi$", r"$\mu^+$", "rad", 200, (-np.pi, np.pi), "mup_thetaInKLMAcceptance == 2", ), ( "phi_mum_forwardKLMoverlap", r"Forward KLM Overlap", "mum_phi", r"$\phi$", r"$\mu^-$", "rad", 200, (-np.pi, np.pi), "mum_thetaInKLMAcceptance == 2", ), ( "phi_mup_barrelKLM", r"Barrel KLM", "mup_phi", r"$\phi$", r"$\mu^+$", "rad", 200, (-np.pi, np.pi), "mup_thetaInKLMAcceptance == 3", ), ( "phi_mum_barrelKLM", r"Barrel KLM", "mum_phi", r"$\phi$", r"$\mu^-$", "rad", 200, (-np.pi, np.pi), "mum_thetaInKLMAcceptance == 3", ), ( "phi_mup_backwardKLMoverlap", r"Backward KLM Overlap", "mup_phi", r"$\phi$", r"$\mu^+$", "rad", 200, (-np.pi, np.pi), "mup_thetaInKLMAcceptance == 4", ), ( "phi_mum_backwardKLMoverlap", r"Backward KLM Overlap", "mum_phi", r"$\phi$", r"$\mu^-$", "rad", 200, (-np.pi, np.pi), "mum_thetaInKLMAcceptance == 4", ), ( "phi_mup_backwardKLM", r"Backward KLM Endcap", "mup_phi", r"$\phi$", r"$\mu^+$", "rad", 200, (-np.pi, np.pi), "mup_thetaInKLMAcceptance == 5", ), ( "phi_mum_backwardKLM", r"Backward KLM Endcap", "mum_phi", r"$\phi$", r"$\mu^-$", "rad", 200, (-np.pi, np.pi), "mum_thetaInKLMAcceptance == 5", ), ] # Build Histogram objects from specs return [ Histogram( name=name, title=title, hist_variable=HistVariable( df_label=df_label, label=hist_label, unit=unit, bins=bins, scope=scope, ), hist_components=[ HistComponent( label=component_label, additional_cut_str=additional_cut_str, ) ], ) for ( name, title, df_label, hist_label, component_label, unit, bins, scope, additional_cut_str, ) in specs ] @property def analysis_validation_histograms_2d(self) -> List[Histogram2D]: return [ Histogram2D( name="phi_vs_cosTheta_mup", title=r"$\mu^+$: $\phi$ vs $cos\theta$", x_variable=HistVariable( df_label="mup_phi", label=r"$\phi$", unit="rad", bins=200, scope=(-np.pi, np.pi), ), y_variable=HistVariable( df_label="mup_cosTheta", label=r"$cos\theta$", bins=100, scope=(-1, 1), ), hist_components=[ HistComponent( label=r"$\mu^+$", ) ], ) ]