diff --git a/moore_options/get_calo_data.py b/moore_options/get_calo_data.py new file mode 100644 index 0000000..acb9a2a --- /dev/null +++ b/moore_options/get_calo_data.py @@ -0,0 +1,119 @@ +# flake8: noqa +from Moore import options, run_reconstruction +from RecoConf.hlt2_tracking import ( + make_hlt2_tracks, + get_default_out_track_types_for_light_reco, + convert_tracks_to_v3_from_v1, + get_global_ut_hits_tool, +) +from RecoConf.hlt1_tracking import make_all_pvs +from RecoConf.event_filters import require_gec +from RecoConf.mc_checking import get_track_checkers, get_fitted_tracks_checkers +from RecoConf.calorimeter_reconstruction import ( + make_photons_and_electrons, + make_clusters, + make_acceptance, + make_track_cluster_matching, + make_digits, + make_track_electron_and_brem_matching, + make_trackbased_eshower, +) +from Moore.config import Reconstruction +from PyConf.Algorithms import ( + PrFilterTracks2CaloClusters, + PrMatchNNv3, + PrFilterTracks2ElectronMatch, + PrFilterTracks2ElectronShower, +) +import Functors as F +import glob + + +decay = "test" + +options.evt_max = -1 + +options.ntuple_file = f"data/calo_data_{decay}.root" + + +if decay == "B": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") +elif decay == "BJpsi": + options.input_files = glob.glob("/auto/data/guenther/Bd_JpsiKst_ee/*.xdigi") +elif decay == "D": + options.input_files = glob.glob("/auto/data/guenther/Dst_D0ee/*.xdigi") +elif decay == "test": + options.input_files = ["/auto/data/guenther/Bd_Kstee/00151673_00000002_1.xdigi"] + +options.input_type = "ROOT" + +options.dddb_tag = "dddb-20210617" +options.conddb_tag = "sim-20210617-vc-md100" +options.simulation = True + + +def standalone_hlt2_fastest_reco(): + hlt2_tracks = make_hlt2_tracks(light_reco=True, fast_reco=False, use_pr_kf=True) + + digisEcal = make_digits(calo_raw_bank=False)["digitsEcal"] + ecalClusters = make_clusters(digisEcal) + tracks_v3, trackrels = convert_tracks_to_v3_from_v1( + hlt2_tracks["Seed"]["v1"], + track_types=["Ttrack"], + ) + # track acceptances + tracks_incalo = make_acceptance(tracks_v3) + tcmatches = make_track_cluster_matching(ecalClusters, tracks_incalo) + PhElOutput = make_photons_and_electrons( + ecalClusters, tcmatches["combined"], make_all_pvs()["v3"] + ) + photons = PhElOutput["photons"] + electrons = PhElOutput["electrons"] + + eshower = make_trackbased_eshower(tracks_incalo, digisEcal) + + tcmatches_e = make_track_electron_and_brem_matching( + tracks_incalo, tcmatches, digisEcal, electrons, photons + ) + + # filter with calo clusters + calo_matched_seeds = PrFilterTracks2CaloClusters( + Relation=tcmatches["Ttrack"], + Cut=F.FILTER((F.MIN_ELEMENT_NOTZERO @ F.GET(0) @ F.WEIGHT) < 20), + ).Output + # corrections on track (bit better for elec?) + # Cut=F.FILTER(F.ALL) ).Output + electron_matched_seeds = PrFilterTracks2ElectronMatch( + Relation=tcmatches_e["Ttrack"]["ElectronMatch"], + Cut=F.FILTER(F.MIN_ELEMENT_NOTZERO @ F.GET(0) @ F.WEIGHT < 20), + ).Output + # should be best; shape of shower etc; E/p statt chi2; DLL even better? GET(1) + # Cut=F.FILTER(F.ALL)).Output + shower_matched_seeds = PrFilterTracks2ElectronShower( + Relation=eshower["Ttrack"], Cut=F.FILTER((F.GET(0) @ F.WEIGHT) > 0.7) + ).Output + + calo_long = PrMatchNNv3( + VeloInput=hlt2_tracks["Velo"]["Pr"], + SeedInput=calo_matched_seeds, + AddUTHitsToolName=get_global_ut_hits_tool(), + ).MatchOutput + + out_track_types = get_default_out_track_types_for_light_reco() + best_tracks = { + track_type: hlt2_tracks[track_type] for track_type in out_track_types["Best"] + } + + data = [calo_long, electron_matched_seeds, shower_matched_seeds] + types_and_locations_for_checkers = { + "Forward": hlt2_tracks["Forward"], + "Seed": hlt2_tracks["Seed"], + "Match": hlt2_tracks["Match"], + } + data += get_track_checkers(types_and_locations_for_checkers) + data += get_fitted_tracks_checkers(best_tracks) + + return Reconstruction("hlt2_reco", data, [require_gec()]) + + +run_reconstruction(options, standalone_hlt2_fastest_reco) diff --git a/moore_options/get_parameterisation_data.py b/moore_options/get_parameterisation_data.py index bc90cd8..c0ab0f6 100644 --- a/moore_options/get_parameterisation_data.py +++ b/moore_options/get_parameterisation_data.py @@ -1,3 +1,4 @@ +# flake8: noqa from Moore import options, run_reconstruction from Moore.config import Reconstruction from PyConf.Algorithms import PrParameterisationData