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