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