Belle II Software development
setups.py
1#!/usr/bin/env python3
2
3
10
11import basf2 as b2
12from ROOT import Belle2
13from alignment import MillepedeCalibration
14from geometry import is_detector_present
15
16# Default configurations
17components = []
18tracks = ['CosmicRecoTracks']
19particles = ['mu+:bbmu']
20vertices = []
21primary_vertices = ['Z0:mumu']
22gearbox_file = ''
23geometry_components = []
24do_reconstruction = False
25do_cosmics_reconstruction = False
26do_analysis = False
27magnet_off = False
28
29dirty_data = False
30
31
32def get_path(
33 gearboxFile=None,
34 geometryComponents=None,
35 doReconstruction=None,
36 doAnalysis=None,
37 magnetOff=None,
38 doCosmicsReconstruction=None):
39 if gearboxFile is None:
40 gearboxFile = gearbox_file
41 if geometryComponents is None:
42 geometryComponents = geometry_components
43 if doReconstruction is None:
44 doReconstruction = do_reconstruction
45 if doAnalysis is None:
46 doAnalysis = do_analysis
47 if magnetOff is None:
48 magnetOff = magnet_off
49 if do_cosmics_reconstruction is None:
50 doCosmicsReconstruction = do_cosmics_reconstruction
51
52 import modularAnalysis as ana
53 import reconstruction as reco
54
55 path = b2.create_path()
56 path.add_module('Progress')
57
58 path.add_module('Gearbox', fileName=gearboxFile) if gearboxFile else path.add_module('Gearbox')
59
60 if geometryComponents:
61 path.add_module('Geometry', components=geometryComponents, excludedComponents=['MagneticField'] if magnetOff else [])
62 else:
63 path.add_module('Geometry', excludedComponents=['MagneticField'] if magnetOff else [])
64
65 if doReconstruction:
66 if geometryComponents:
67 reco.add_reconstruction(path, pruneTracks=False, components=geometryComponents)
68 else:
69 reco.add_reconstruction(path, pruneTracks=False)
70
71 if doCosmicsReconstruction:
72 import pxd
73 import svd
74
75 if is_detector_present("PXD", geometryComponents):
77 if is_detector_present("SVD", geometryComponents):
79
80 if geometryComponents:
81 reco.add_cosmics_reconstruction(
82 path,
83 pruneTracks=False,
84 components=geometryComponents,
85 merge_tracks=True)
86 else:
87 reco.add_cosmics_reconstruction(
88 path,
89 pruneTracks=False,
90 merge_tracks=True)
91
92 if 'SetupGenfitExtrapolation' not in path:
93 path.add_module('SetupGenfitExtrapolation', noiseBetheBloch=False, noiseCoulomb=False, noiseBrems=False)
94
95 if doAnalysis:
96 ana.fillParticleList('mu+:bbmu', 'muonID > 0.1 and useLabFrame(p) > 0.5', True, path)
97 ana.fillParticleList('mu+:qed', 'muonID > 0.1 and useLabFrame(p) > 2.', True, path)
98 ana.reconstructDecay('Z0:mumu -> mu-:qed mu+:qed', '', writeOut=True, path=path)
99 ana.vertexRaveDaughtersUpdate('Z0:mumu', 0.0, path=path, constraint='ipprofile')
100
101 return path
102
103
104def setup_none():
105 millepede = MillepedeCalibration()
106 return millepede
107
108
109def setup_default():
110 millepede = MillepedeCalibration(components,
111 tracks=tracks,
112 particles=particles,
113 vertices=vertices,
114 primary_vertices=primary_vertices,
115 path=get_path())
116
117 if dirty_data:
118 millepede.set_command('chiscut', None)
119 millepede.set_command('outlierdownweighting', None)
120 millepede.set_command('dwfractioncut', None)
121
122 millepede.algo.invertSign()
123
124 return millepede
125
126
127def setup_Global():
128 millepede = setup_default()
129 millepede.set_command('Fortranfiles')
130 millepede.set_command('constraints.txt')
131 return millepede
132
133
134def setup_BeamVertex():
135 millepede = setup_default()
136 millepede.set_components(['BeamSpot'])
137 return millepede
138
139
140def setup_VXDHalfShells():
141 millepede = setup_default()
142 millepede.set_components(['VXDAlignment'])
143 millepede.fixSVDPat()
144 for layer in range(1, 7):
145 for ladder in range(1, 17):
146 # Fix also all ladders
147 millepede.fixVXDid(layer, ladder, 0)
148 for sensor in range(1, 6):
149 # Fix all sensors
150 millepede.fixVXDid(layer, ladder, sensor)
151 return millepede
152
153
154def setup_VXDFullHierarchy():
155 millepede = setup_default()
156 millepede.set_components(['VXDAlignment'])
157 millepede.set_command('Fortranfiles')
158 millepede.set_command('constraints.txt')
159 return millepede
160
161
162def setup_VXDSensors():
163 millepede = setup_default()
164 millepede.set_components(['VXDAlignment'])
165 millepede.fixSVDPat()
166 millepede.fixSVDMat()
167 millepede.fixPXDYing()
168 millepede.fixPXDYang()
169 for layer in range(1, 7):
170 for ladder in range(1, 17):
171 # Fix also all ladders
172 millepede.fixVXDid(layer, ladder, 0)
173 for sensor in range(1, 6):
174 # Fix all sensors
175 # millepede.fixVXDid(layer, ladder, sensor)
176 pass
177 millepede.fixVXDid(1, 1, 1)
178 return millepede
179
180
181def setup_CDCLayers():
182 millepede = setup_default()
183 millepede.set_components(['CDCAlignment', 'CDCLayerAlignment'])
184 millepede.fixCDCLayerX(49)
185 millepede.fixCDCLayerY(49)
186 millepede.fixCDCLayerRot(49)
187 millepede.fixCDCLayerX(55)
188 millepede.fixCDCLayerY(55)
189 millepede.fixCDCLayerRot(55)
190 return millepede
191
192
193def setup_CDCTimeWalks():
194 millepede = setup_default()
195 millepede.set_components(['CDCTimeWalks'])
196 millepede.fixCDCTimeWalk(1)
197 return millepede
198
199
200def setup_BKLMAlignment():
201 millepede = setup_default()
202 millepede.set_components(['BKLMAlignment'])
203 millepede.fixGlobalParam(Belle2.BKLMAlignment.getGlobalUniqueID(), Belle2.BKLMElementID(0, 3, 15).getID(), 1)
204 millepede.fixGlobalParam(Belle2.BKLMAlignment.getGlobalUniqueID(), Belle2.BKLMElementID(0, 3, 15).getID(), 2)
205
206 for sector in range(1, 9):
207 for layer in range(1, 16):
208 for forward in [0, 1]:
209 millepede.fixBKLMModule(forward, sector, layer, [1, 2, 3, 4, 5, 6])
210 return millepede
211
212
213def setup_EKLMAlignment():
214 millepede = setup_default()
215 millepede.set_components(['EKLMAlignment'])
216 millepede.fixEKLMModule(1, 12, 2, 1, 1, [1, 2, 6])
217 return millepede
218
219
220def setup_CDCLayers_GCR_Karim():
221 geometry = '/alignment/examples/GCR_Summer2017.xml'
222 recotracks = ['RecoTracks']
223 global do_cosmics_reconstruction
224 do_cosmics_reconstruction = True
225
226 # Inherit settings
227 millepede = setup_CDCLayers()
228 millepede.algo.invertSign(False)
229
230 millepede.set_param(recotracks, 'tracks')
231 millepede.set_param(geometry, 'fileName', 'Gearbox')
232 millepede.set_param(1.e-20, 'minPValue')
233
234 return millepede
static unsigned short getGlobalUniqueID()
Get global unique identifier.
add_pxd_reconstruction(path, clusterName=None, digitsName=None, usePXDClusterShapes=False, spacePointsName='PXDSpacePoints')
Definition __init__.py:105
add_svd_reconstruction(path, isROIsimulation=False, createRecoDigits=False, applyMasking=False)
Definition __init__.py:14