Belle II Software  release-05-01-25
SVDDefaultClusterCalibrationImporter.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 """
5 SVD Default Cluster Calibration importer.
6 t_min = -80,
7 """
8 import basf2
9 from basf2 import *
10 from svd import *
11 import ROOT
12 from ROOT import Belle2
13 from ROOT.Belle2 import SVDClusterCuts
14 from ROOT.Belle2 import SVDHitTimeSelectionFunction
15 from basf2 import conditions as b2conditions
16 import datetime
17 import os
18 
19 # import sys
20 
21 # default values
22 # cls hit time
23 clsTimeMin = -999
24 clsTimeFunctionID = 0 # default, t > clsTimeMin
25 clsTimeDeltaT = 30 # NOT USED
26 clsTimeNSigma = 10 # NOT USED
27 
28 # time difference U-V
29 clsTimeDiff = 999 # default for DATA and exp 1003, 1002
30 # clsTimeDiff = 10 # default for exp 0
31 
32 # cls cuts
33 clsSeedSNR = 5
34 clsAdjSNR = 3
35 clsMinSNR = 0
36 clsScaleErrSize1 = 1
37 clsScaleErrSize2 = 1
38 clsScaleErrSize3 = 1
39 now = datetime.datetime.now()
40 
41 
43  """
44  Defining the python module to do the import.
45  """
46 
47  def beginRun(self):
48  """
49  call the functions to import the cluster parameters
50  """
52 
53  # SpacePoint time
54  hitTimeSelection = SVDHitTimeSelectionFunction()
55  # set default version = 0
56  hitTimeSelection.setFunctionID(clsTimeFunctionID)
57  # version 0: t > tMin
58  hitTimeSelection.setMinTime(clsTimeMin)
59  # version 1: |t-t0|<deltaT - NOT USED
60  hitTimeSelection.setDeltaTime(clsTimeDeltaT)
61  # version 2: |t-t0|<nSgma*tErrTOT - NOT USED
62  hitTimeSelection.setNsigma(clsTimeNSigma)
63  # cluster time difference
64  hitTimeSelection.setMaxUVTimeDifference(clsTimeDiff)
66  hitTimeSelection, "HitTimeSelection_default_" + str(now.isoformat()) +
67  "_INFO:_tmin="+str(clsTimeMin)+"_tDiff="+str(clsTimeDiff))
68 
69  # cluster reconstruction & position error
70  clsParam = SVDClusterCuts()
71  clsParam.minSeedSNR = clsSeedSNR
72  clsParam.minAdjSNR = clsAdjSNR
73  clsParam.minClusterSNR = clsMinSNR
74  clsParam.scaleError_clSize1 = clsScaleErrSize1
75  clsParam.scaleError_clSize2 = clsScaleErrSize2
76  clsParam.scaleError_clSize3 = clsScaleErrSize3
77 
79  clsParam,
80  "ClusterCalibrations_default_" +
81  str(
82  now.isoformat()) +
83  "_INFO:_seed=" +
84  str(clsSeedSNR) +
85  "_adj=" +
86  str(clsAdjSNR) +
87  "_cls=" +
88  str(clsMinSNR) +
89  "_scaleFactors=fromSimulation")
90 
92 
93  for layer in geoCache.getLayers(Belle2.VXD.SensorInfoBase.SVD):
94  layerNumber = layer.getLayerNumber()
95  for ladder in geoCache.getLadders(layer):
96  ladderNumber = ladder.getLadderNumber()
97  for sensor in geoCache.getSensors(ladder):
98  sensorNumber = sensor.getSensorNumber()
99  for side in (0, 1):
100  print("setting SVDCluster calibrations for " +
101  str(layerNumber) + "." + str(ladderNumber) + "." + str(sensorNumber) + "." + str(side))
102 
103  if side == 0: # V
104  if layerNumber == 3: # L3 V
105  clsParam.scaleError_clSize1 = 1.638
106  clsParam.scaleError_clSize2 = 1.168
107  clsParam.scaleError_clSize3 = 0.430
108  else:
109  if sensorNumber == 1: # FW V
110  clsParam.scaleError_clSize1 = 1.766
111  clsParam.scaleError_clSize2 = 1.481
112  clsParam.scaleError_clSize3 = 0.433
113  else: # BARREL V
114  clsParam.scaleError_clSize1 = 2.338
115  clsParam.scaleError_clSize2 = 1.418
116  clsParam.scaleError_clSize3 = 0.468
117  if side == 1: # U
118  if layerNumber == 3: # L3 U
119  clsParam.scaleError_clSize1 = 1.352
120  clsParam.scaleError_clSize2 = 1.137
121  clsParam.scaleError_clSize3 = 0.559
122  else:
123  if sensorNumber == 1: # FW U
124  clsParam.scaleError_clSize1 = 1.728
125  clsParam.scaleError_clSize2 = 1.209
126  clsParam.scaleError_clSize3 = 0.662
127  else: # BARREL U
128  clsParam.scaleError_clSize1 = 1.312
129  clsParam.scaleError_clSize2 = 0.871
130  clsParam.scaleError_clSize3 = 0.538
131  print(" size 1 = " + str(clsParam.scaleError_clSize1) + ", size 2 = " +
132  str(clsParam.scaleError_clSize2) + ", size >2 = " + str(clsParam.scaleError_clSize3))
133 
134  cls_payload.set(layerNumber, ladderNumber, sensorNumber, bool(side), 1, clsParam)
135 
136  Belle2.Database.Instance().storeData(Belle2.SVDClusterCalibrations.name, cls_payload, iov)
137  Belle2.Database.Instance().storeData(Belle2.SVDClusterCalibrations.time_name, time_payload, iov)
138 
139 
140 b2conditions.prepend_globaltag('svd_onlySVDinGeoConfiguration')
141 
142 main = create_path()
143 
144 # Event info setter - execute single event
145 eventinfosetter = register_module('EventInfoSetter')
146 eventinfosetter.param({'evtNumList': [1], 'expList': 0, 'runList': 0})
147 main.add_module(eventinfosetter)
148 
149 main.add_module("Gearbox")
150 main.add_module("Geometry")
151 
152 main.add_module(defaultSVDClusterCalibrationImporter())
153 
154 # Show progress of processing
155 progress = register_module('Progress')
156 main.add_module(progress)
157 
158 # Process events
159 process(main)
Belle2::IntervalOfValidity::always
static IntervalOfValidity always()
Function that returns an interval of validity that is always valid, c.f.
Definition: IntervalOfValidity.h:72
SVDDefaultClusterCalibrationImporter.defaultSVDClusterCalibrationImporter
Definition: SVDDefaultClusterCalibrationImporter.py:42
Belle2::VXD::GeoCache::getInstance
static GeoCache & getInstance()
Return a reference to the singleton instance.
Definition: GeoCache.cc:215
SVDDefaultClusterCalibrationImporter.defaultSVDClusterCalibrationImporter.beginRun
def beginRun(self)
Definition: SVDDefaultClusterCalibrationImporter.py:47
Belle2::Database::Instance
static Database & Instance()
Instance of a singleton Database.
Definition: Database.cc:54
Belle2::SVDCalibrationsBase
base class for calibrations classes
Definition: SVDCalibrationsBase.h:36