13 from ROOT
import Belle2
15 import generators
as gen
16 import simulation
as sim
18 import reconstruction
as reco
19 import modularAnalysis
as ana
27 import millepede_calibration
as mpc
28 from caf.framework
import CAF
29 from caf
import backends
33 main = basf2.create_path()
35 main.add_module(
"EventInfoSetter", evtNumList=[200])
37 main.add_module(
'Gearbox')
38 main.add_module(
'Geometry')
40 gen.add_kkmc_generator(main,
'mu-mu+')
42 sim.add_simulation(main)
44 main.add_module(
"RootOutput", outputFileName=filename)
45 main.add_module(
"Progress")
48 print(basf2.statistics)
49 return os.path.abspath(filename)
52 def diMuonCollection(name="diMuonCollection", add_unpackers=True):
53 path = basf2.create_path()
55 path.add_module(
'Progress')
57 path.add_module(
'RootInput')
58 path.add_module(
'Gearbox')
59 path.add_module(
'Geometry')
62 raw.add_unpackers(path)
64 reco.add_reconstruction(path, pruneTracks=
False)
66 tmp = basf2.create_path()
67 for m
in path.modules():
68 if m.name() ==
"PXDPostErrorChecker":
69 m.param(
'CriticalErrorMask', 0)
70 if m.name()
in [
"PXDUnpacker",
"CDCHitBasedT0Extraction",
"TFCDC_WireHitPreparer"]:
71 m.set_log_level(basf2.LogLevel.ERROR)
72 if m.name() ==
"SVDSpacePointCreator":
73 m.param(
"MinClusterTime", -999)
76 path.add_module(
'DAFRecoFitter')
78 ana.fillParticleList(
'mu+:mu_dimuon',
'abs(formula(z0)) < 0.5 and abs(d0) < 0.5 and nTracks == 2', writeOut=
True, path=path)
79 ana.reconstructDecay(
'Z0:mumu -> mu-:mu_dimuon mu+:mu_dimuon',
'', writeOut=
True, path=path)
80 vtx.raveFit(
'Z0:mumu', 0.001, daughtersUpdate=
True, silence_warning=
True, path=path)
82 return mpc.make_collection(name, path=path, primaryVertices=[
'Z0:mumu'])
85 def get_calibration(files, tags):
89 dbobjects=[
'VXDAlignment',
'BeamSpot'],
91 diMuonCollection(name=
"dimuon_skim", add_unpackers=
False)
98 'method diagonalization 3 0.1',
100 (
'printcounts',
None)
107 timedep=[([], [(0, 0, 0)])],
108 params=dict(minPValue=0.001, externalIterations=0))
113 if __name__ ==
'__main__':
116 if not len(input_files):
119 outfile =
'cafBeamSpotVXDHalfShells_TestData.root'
120 print(
"No input file provided. This will now generate test data into {} and run over it.".format(outfile))
121 print(
"It will take couple of minutes.")
122 print(
"You can set this file as input next time using -i option of basf2")
126 cal = get_calibration(
127 files={
'dimuon_skim': input_files},
128 tags=[tag
for tag
in basf2.conditions.default_globaltags])
130 cal.max_iterations = 0
133 cal_fw.add_calibration(cal)
def vxd_ladders(layers=None, parameters=None)
def vxd_sensors(layers=None, rigid=True, surface=True, surface2=True, surface3=True, surface4=True, parameters=None)
static Environment & Instance()
Static method to get a reference to the Environment instance.