Belle II Software  release-05-01-25
cosmicsCAF.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
19 
20 from basf2 import *
21 import os
22 import sys
23 import ROOT
24 from ROOT.Belle2 import CDCDedxMomentumAlgorithm, CDCDedxCosineAlgorithm
25 from ROOT.Belle2 import CDCDedxWireGainAlgorithm, CDCDedxRunGainAlgorithm
26 from ROOT.Belle2 import CDCDedx2DCorrectionAlgorithm, CDCDedx1DCleanupAlgorithm
27 from caf.framework import Calibration, CAF
28 
29 ROOT.gROOT.SetBatch(True)
30 
31 # Specify the input file(s)
32 input_files = [os.path.abspath(
33  '/group/belle2/users/jbennett/GCR2/release-01-02-01/DB00000359/r00282/dst.cosmic.0002.0282.f00000.root')]
34 
35 # Modify the collector to apply other calibration constants
36 momentum_col = register_module('CDCDedxElectronCollector')
37 momentum_col_params = {'cleanupCuts': False,
38  'scaleCor': False,
39  'momentumCor': False,
40  'momentumCorFromDB': False,
41  'cosineCor': False,
42  }
43 momentum_col.param(momentum_col_params)
44 
45 mod_col = register_module('CDCDedxElectronCollector')
46 mod_col_params = {'cleanupCuts': True,
47  'scaleCor': False,
48  'momentumCor': False,
49  'momentumCorFromDB': False,
50  'cosineCor': False,
51  }
52 mod_col.param(mod_col_params)
53 
54 # Define the calibration algorithms
55 momentum_alg = CDCDedxMomentumAlgorithm()
56 cosine_alg = CDCDedxCosineAlgorithm()
57 run_gain_alg = CDCDedxRunGainAlgorithm()
58 wire_gain_alg = CDCDedxWireGainAlgorithm()
59 twod_alg = CDCDedx2DCorrectionAlgorithm()
60 oned_alg = CDCDedx1DCleanupAlgorithm()
61 
62 # Create Calibration objects from Collector, Algorithm(s), and input files
63 momentum_cal = Calibration(
64  name='MomentumCalibration',
65  collector=momentum_col,
66  algorithms=[momentum_alg],
67  input_files=input_files)
68 
69 cosine_cal = Calibration(
70  name='CosineCalibration',
71  collector=mod_col,
72  algorithms=[cosine_alg],
73  input_files=input_files)
74 
75 wire_gain_cal = Calibration(
76  name='WireGainCalibration',
77  collector=mod_col,
78  algorithms=[wire_gain_alg],
79  input_files=input_files)
80 
81 run_gain_cal = Calibration(
82  name='RunGainCalibration',
83  collector=mod_col,
84  algorithms=[run_gain_alg],
85  input_files=input_files)
86 
87 other_cal = Calibration(
88  name='OtherDedxCalibrations',
89  collector=mod_col,
90  algorithms=[twod_alg, oned_alg],
91  input_files=input_files)
92 
93 # Use the constants in the local databases
94 momdb = 'calibration_results/MomentumCalibration/outputdb'
95 cosdb = 'calibration_results/CosineCalibration/outputdb'
96 wgdb = 'calibration_results/WireGainCalibration/outputdb'
97 rgdb = 'calibration_results/RunGainCalibration/outputdb'
98 localdb = '/home/belle2/jbennett/CRDATA/release-00-09-01/DB00000266/r03118/calib/localdb/database.txt'
99 
100 momentum_cal.use_local_database(localdb)
101 
102 cosine_cal.use_local_database(localdb)
103 cosine_cal.use_local_database(momdb)
104 
105 wire_gain_cal.use_local_database(localdb)
106 wire_gain_cal.use_local_database(momdb)
107 wire_gain_cal.use_local_database(cosdb)
108 
109 run_gain_cal.use_local_database(localdb)
110 run_gain_cal.use_local_database(momdb)
111 run_gain_cal.use_local_database(cosdb)
112 run_gain_cal.use_local_database(wgdb)
113 
114 other_cal.use_local_database(localdb)
115 other_cal.use_local_database(momdb)
116 other_cal.use_local_database(cosdb)
117 other_cal.use_local_database(wgdb)
118 other_cal.use_local_database(rgdb)
119 
120 # Add a pre-collector path to apply old calibration constants
121 correct_for_mom = create_path()
122 correct_for_mom.add_module('CDCDedxCorrection', scaleCor=False, momentumCor=False,
123  momentumCorFromDB=False, cosineCor=True,
124  runGain=True, wireGain=True)
125 momentum_cal.pre_collector_path = correct_for_mom
126 
127 correct_for_cos = create_path()
128 correct_for_cos.add_module('CDCDedxCorrection', scaleCor=False, momentumCor=True,
129  momentumCorFromDB=True, cosineCor=False,
130  runGain=True, wireGain=True)
131 cosine_cal.pre_collector_path = correct_for_cos
132 cosine_cal.depends_on(momentum_cal)
133 
134 correct_for_wire_gain = create_path()
135 correct_for_wire_gain.add_module('CDCDedxCorrection', scaleCor=False, momentumCor=True,
136  momentumCorFromDB=True, cosineCor=True,
137  runGain=True, wireGain=False)
138 wire_gain_cal.pre_collector_path = correct_for_wire_gain
139 wire_gain_cal.depends_on(momentum_cal)
140 wire_gain_cal.depends_on(cosine_cal)
141 
142 correct_for_run_gain = create_path()
143 correct_for_run_gain.add_module('CDCDedxCorrection', scaleCor=False, momentumCor=True,
144  momentumCorFromDB=True, cosineCor=True,
145  runGain=False, wireGain=True)
146 run_gain_cal.pre_collector_path = correct_for_run_gain
147 run_gain_cal.depends_on(momentum_cal)
148 run_gain_cal.depends_on(cosine_cal)
149 run_gain_cal.depends_on(wire_gain_cal)
150 
151 correct_for_others = create_path()
152 correct_for_others.add_module('CDCDedxCorrection', scaleCor=False, momentumCor=True,
153  momentumCorFromDB=True, cosineCor=True,
154  runGain=True, wireGain=True)
155 other_cal.pre_collector_path = correct_for_others
156 other_cal.depends_on(momentum_cal)
157 other_cal.depends_on(cosine_cal)
158 other_cal.depends_on(wire_gain_cal)
159 other_cal.depends_on(run_gain_cal)
160 
161 
162 # Create a CAF instance and add calibrations
163 caf_fw = CAF()
164 caf_fw.add_calibration(momentum_cal)
165 caf_fw.add_calibration(cosine_cal)
166 caf_fw.add_calibration(wire_gain_cal)
167 caf_fw.add_calibration(run_gain_cal)
168 caf_fw.add_calibration(other_cal)
169 
170 # Run the calibration
171 caf_fw.run() # Creates local database files when finished (no auto upload)
Calibration
Definition: Calibration.py:1