Belle II Software  release-05-01-25
run_pulseHeight_calibration_rawdata.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 # ---------------------------------------------------------------------------------------
5 # CAF calibration script: pulse height distributions and threshold efficiencies
6 # data type: raw data
7 #
8 # usage: basf2 run_pulseHeight_calibration_rawdata.py expNo runFirst runLast
9 #
10 # author: M. Staric
11 # ---------------------------------------------------------------------------------------
12 
13 import sys
14 import os
15 import glob
16 from caf import backends
17 from caf.framework import CAF
18 from basf2 import B2ERROR
19 from top_calibration import pulseHeight_calibration_rawdata
20 
21 # ----- those parameters need to be adjusted before running -----------------------
22 #
23 globalTags = ['Reco_master_patch', 'data_reprocessing_proc10'] # highest priority first
24 localDBs = [] # highest priority first, local DB's have higher priority than global tags
25 data_dir = '/group/belle2/dataprod/Data/Raw'
26 main_output_dir = 'top_calibration'
27 #
28 # ---------------------------------------------------------------------------------------
29 
30 # Argument parsing
31 argvs = sys.argv
32 if len(argvs) < 4:
33  print("usage: basf2", argvs[0], "experiment runFirst runLast")
34  sys.exit()
35 experiment = int(argvs[1])
36 run_first = int(argvs[2])
37 run_last = int(argvs[3])
38 
39 # Make list of files
40 inputFiles = []
41 expNo = 'e' + '{:0=4d}'.format(experiment)
42 for run in range(run_first, run_last + 1):
43  runNo = 'r' + '{:0=5d}'.format(run)
44  filename = f"{data_dir}/{expNo}/{runNo}/sub00/physics.*.root"
45  inputFiles += glob.glob(filename)
46 
47 if len(inputFiles) == 0:
48  B2ERROR('No rawdata files found in ' + data_dir + ' for exp=' + str(experiment) +
49  ' runFirst=' + str(run_first) + ' runLast=' + str(run_last))
50  sys.exit()
51 
52 # Output folder name
53 run_range = 'r' + '{:0=5d}'.format(run_first) + '-' + '{:0=5d}'.format(run_last)
54 output_dir = f"{main_output_dir}/pulseHeight-rawdata-{expNo}-{run_range}"
55 
56 # Define calibration
57 cal = pulseHeight_calibration_rawdata(inputFiles, globalTags, localDBs)
58 cal.backend_args = {"queue": "s"}
59 
60 # Add calibration to CAF
61 cal_fw = CAF()
62 cal_fw.add_calibration(cal)
63 cal_fw.output_dir = output_dir
64 cal_fw.backend = backends.LSF()
65 
66 # Run calibration
67 cal_fw.run()
backends.LSF
Definition: backends.py:1567