Belle II Software development
run_validation.py
1
8"""
9Entry point for alignment validation.
10
11Usage:
12 python -m alignment_validation cosmics FILE [FILE ...] [--output-dir DIR] [--format FMT]
13 python -m alignment_validation dimuon FILE [FILE ...] [--output-dir DIR] [--format FMT]
14 [--ip-correction {run_by_run,per_event}]
15"""
16
17import argparse
18
19from alignment_validation import cosmics
20from alignment_validation import dimuon
21
22
23def main():
24 """Parse command-line arguments and run the requested validation.
25
26 Subcommands
27 -----------
28 cosmics
29 Run cosmic-track validation via :func:`alignment_validation.cosmics.run_validation`.
30 dimuon
31 Run di-muon validation via :func:`alignment_validation.dimuon.run_validation`.
32 """
33 parser = argparse.ArgumentParser(
34 description="Alignment validation for Belle II track reconstruction."
35 )
36 sub = parser.add_subparsers(dest="command", required=True)
37
38 for name, default_out in [("cosmics", "cosmics_plots"), ("dimuon", "dimuon_plots")]:
39 p = sub.add_parser(name, help=f"Run {name} validation.")
40 p.add_argument("files", nargs="+", help="Input ROOT file(s).")
41 p.add_argument("--output-dir", default=default_out, help="Output directory for plots.")
42 p.add_argument("--format", default="pdf", dest="file_format", help="Plot image format.")
43 if name == "dimuon":
44 p.add_argument(
45 "--ip-correction",
46 default="run_by_run",
47 dest="ip_correction",
48 choices=["run_by_run", "per_event"],
49 help=(
50 "IP correction strategy: 'run_by_run' (default) averages the IP over each "
51 "(experiment, run) pair; 'per_event' uses the per-event IP directly."
52 ),
53 )
54
55 args = parser.parse_args()
56
57 if args.command == "cosmics":
58 cosmics.run_validation(args.files, args.output_dir, args.file_format)
59 elif args.command == "dimuon":
60 dimuon.run_validation(args.files, args.output_dir, args.file_format, args.ip_correction)
61
62
63if __name__ == "__main__":
64 main()
Definition main.py:1