cetin
8 months ago
2 changed files with 120 additions and 0 deletions
@ -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) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue