Belle II Software development
eclCrystalCalibPayload.py
1#!/usr/bin/env python
2
3
10
11# eclCrystalCalibPayload.py creates an ECLCrystalCalib payload
12# (analysis/dbobjects/include/ECLCrystalCalib.h) from a histogram
13# read from disk.
14#
15# usage:
16# basf2 eclCrystalCalibPayload.py
17
18from ROOT import Belle2 # noqa: make Belle2 namespace available
19from ROOT.Belle2 import ECLCrystalCalib, Database, IntervalOfValidity
20from ROOT import TFile
21
22# ..Job parameters: input file and histogram names, and output payload name
23inputName = "ECLRefAmplNom_36_2290.root"
24histName = "newPayload"
25payloadName = "ECLRefAmplNom"
26
27# ..Preliminaries
28inputFile = TFile(inputName, "READ")
29parameters = ECLCrystalCalib()
30nCrystals = 8736
31
32
33# --------------------------------------------------
34# ..Read in histogram of payload values and convert into a vector
35payloadHist = inputFile.Get(histName)
36payloadVector = [0.] * nCrystals
37payloadUncVector = [0.] * nCrystals
38for cellID in range(1, nCrystals + 1):
39 payloadVector[cellID-1] = payloadHist.GetBinContent(cellID)
40 payloadUncVector[cellID-1] = payloadHist.GetBinError(cellID)
41
42print(payloadVector)
43print(payloadUncVector)
44parameters.setCalibVector(payloadVector, payloadUncVector)
45
46
47# --------------------------------------------------
48# ..Create the payload
49inputFile.Close()
50database = Database.Instance()
51
52iov = IntervalOfValidity(0, 0, -1, -1)
53database.storeData(payloadName, parameters, iov)
54print(f'Created ECLCrystalCalib payload with name {payloadName}')