4 from ROOT
import Belle2
6 import generators
as gen
7 import simulation
as sim
9 import reconstruction
as reco
10 import modularAnalysis
as ana
18 import millepede_calibration
as mpc
19 from caf.framework
import CAF
20 from caf
import backends
24 main = basf2.create_path()
26 main.add_module(
"EventInfoSetter", evtNumList=[200])
28 main.add_module(
'Gearbox')
29 main.add_module(
'Geometry')
31 gen.add_kkmc_generator(main,
'mu-mu+')
33 sim.add_simulation(main)
35 main.add_module(
"RootOutput", outputFileName=filename)
36 main.add_module(
"Progress")
39 print(basf2.statistics)
40 return os.path.abspath(filename)
43 def diMuonCollection(name="diMuonCollection", add_unpackers=True):
44 path = basf2.create_path()
46 path.add_module(
'Progress')
48 path.add_module(
'RootInput')
49 path.add_module(
'Gearbox')
50 path.add_module(
'Geometry')
53 raw.add_unpackers(path)
55 reco.add_reconstruction(path, pruneTracks=
False)
57 tmp = basf2.create_path()
58 for m
in path.modules():
59 if m.name() ==
"PXDPostErrorChecker":
60 m.param(
'CriticalErrorMask', 0)
61 if m.name()
in [
"PXDUnpacker",
"CDCHitBasedT0Extraction",
"TFCDC_WireHitPreparer"]:
62 m.set_log_level(basf2.LogLevel.ERROR)
63 if m.name() ==
"SVDSpacePointCreator":
64 m.param(
"MinClusterTime", -999)
67 path.add_module(
'DAFRecoFitter')
69 ana.fillParticleList(
'mu+:mu_dimuon',
'abs(formula(z0)) < 0.5 and abs(d0) < 0.5 and nTracks == 2', writeOut=
True, path=path)
70 ana.reconstructDecay(
'Z0:mumu -> mu-:mu_dimuon mu+:mu_dimuon',
'', writeOut=
True, path=path)
71 vtx.raveFit(
'Z0:mumu', 0.001, daughtersUpdate=
True, silence_warning=
True, path=path)
73 return mpc.make_collection(name, path=path, primaryVertices=[
'Z0:mumu'])
76 def get_calibration(files, tags):
80 dbobjects=[
'VXDAlignment',
'BeamSpot'],
82 diMuonCollection(name=
"dimuon_skim", add_unpackers=
False)
89 'method diagonalization 3 0.1',
98 timedep=[([], [(0, 0, 0)])],
99 params=dict(minPValue=0.001, externalIterations=0))
104 if __name__ ==
'__main__':
107 if not len(input_files):
110 outfile =
'cafBeamSpotVXDHalfShells_TestData.root'
111 print(
"No input file provided. This will now generate test data into {} and run over it.".format(outfile))
112 print(
"It will take couple of minutes.")
113 print(
"You can set this file as input next time using -i option of basf2")
117 cal = get_calibration(
118 files={
'dimuon_skim': input_files},
119 tags=[tag
for tag
in basf2.conditions.default_globaltags])
121 cal.max_iterations = 0
124 cal_fw.add_calibration(cal)