Belle II Software  release-08-01-10
SVDHotStripsCalibrationsCAF.py
1 
8 
9 
13 
14 import basf2 as b2
15 
16 import os
17 import sys
18 import multiprocessing
19 
20 from ROOT.Belle2 import SVDHotStripsCalibrationsAlgorithm
21 
22 from caf.framework import CAF, Calibration, CentralDatabase
23 from caf import backends
24 from caf import strategies
25 
26 import rawdata as raw
27 # import vertex as vx
28 
29 b2.set_log_level(b2.LogLevel.INFO)
30 
31 input_branches = [
32  'RawSVDs'
33 ]
34 
35 # set_log_level(LogLevel.WARNING)
36 
37 
38 def SVDHotStripsCalibrations(files, tags):
39 
40  # Set-up re-processing path
41  path = b2.create_path()
42 
43  # logging.log_level = LogLevel.WARNING
44 
45  path.add_module('Progress')
46  # Remove all non-raw data to run the full reco again
47  path.add_module('RootInput', branchNames=input_branches)
48 
49  path.add_module("Gearbox")
50  path.add_module("Geometry", useDB=True)
51 
52  # fil = register_module('SVDShaperDigitsFromTracks')
53  # fil.param('outputINArrayName', 'SVDShaperDigitsFromTracks')
54  # main.add_module(fil)
55 
56  # Not needed for di-muon skim cdst or mdst, but needed to re-run reconstruction
57  # with possibly changed global tags
58  raw.add_unpackers(path, components=['SVD'])
59 
60  collector = b2.register_module('SVDOccupancyCalibrationsCollector')
61  collector.param("SVDShaperDigitsName", "SVDShaperDigits")
62  algorithm = SVDHotStripsCalibrationsAlgorithm("SVDHotStripsCAF")
63 
64  calibration = Calibration('SVDHotStrips',
65  collector=collector,
66  algorithms=algorithm,
67  input_files=files,
68  pre_collector_path=path,
69  database_chain=[CentralDatabase(tag) for tag in tags],
70  output_patterns=None,
71  max_files_per_collector_job=1,
72  backend_args=None
73  )
74 
75  calibration.strategies = strategies.SequentialRunByRun
76 
77  return calibration
78 
79 
80 if __name__ == "__main__":
81  # use by default raw data from cdst of exp8, run1309 (shaperDigits need to be unpacked, not available in cdst format)
82  input_files = [os.path.abspath(file) for file in [
83  "/group/belle2/dataprod/Data/Raw/e0008/r01309/sub00/physics.0008.01309.HLT5.f00098.root"]]
84  # "/group/belle2/dataprod/Data/Raw/e0008/r01309/sub00/physics.0008.01309.HLT5*"]]
85 # "/group/belle2/dataprod/Data/release-03-02-02/DB00000635/proc00000009/\
86 # e0008/4S/r01309/skim/hlt_bhabha/cdst/sub00/cdst.physics.0008.01309.HLT*"]]
87 
88  if not len(input_files):
89  print("You have to specify some input file(s)\n"
90  "using the standard basf2 command line option - i")
91  print("See: basf2 -h")
92  sys.exit(1)
93 
94  svdOccupCAF = SVDHotStripsCalibrations(input_files,
95  ['giulia_CDCEDepToADCConversions_rel4_patch',
96  'data_reprocessing_prompt_rel4_patch'])
97  # beamspot.max_iterations = 0
98 
99  cal_fw = CAF()
100  cal_fw.add_calibration(svdOccupCAF)
101  cal_fw.backend = backends.LSF()
102 
103  # Try to guess if we are at KEKCC and change the backend to Local if not
104  if multiprocessing.cpu_count() < 10:
105  cal_fw.backend = backends.Local(8)
106 
107  cal_fw.run()