Belle II Software  release-05-01-25
ECLPureCsIStudy.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
12 
13 import os
14 from basf2 import *
15 from simulation import add_simulation
16 from reconstruction import add_reconstruction, add_mdst_output
17 from beamparameters import add_beamparameters
18 
19 import sys
20 import glob
21 
22 par = sys.argv
23 argc = len(par)
24 
25 pdg = int(par[1])
26 momentum = float(par[2])
27 filenameprefix = par[3]
28 elenoise = float(par[4])
29 photo = float(par[5])
30 
31 withbg = 0
32 if (argc == 7):
33  isbg = par[6]
34  withbg = 1
35 mdstfile = par[3]
36 mdstfile += '-mdst.root'
37 digistudyfile = par[3]
38 digistudyfile += '-digi'
39 
40 generator = 0
41 if (pdg == 0):
42  generator = 1
43 
44 main = create_path()
45 
46 eventinfosetter = register_module('EventInfoSetter')
47 main.add_module(eventinfosetter)
48 
49 if (generator == 0):
50  # single particle generator settings
51  pGun = register_module('ParticleGun')
52  param_pGun = {
53  'pdgCodes': [pdg],
54  'nTracks': 1,
55  'momentumGeneration': 'fixed',
56  'momentumParams': [momentum],
57  'thetaGeneration': 'uniform',
58  'thetaParams': [13.0, 30.0],
59  'phiGeneration': 'uniform',
60  'phiParams': [0., 360.],
61  'vertexGeneration': 'uniform',
62  'xVertexParams': [0.0, 0.0],
63  'yVertexParams': [0.0, 0.0],
64  'zVertexParams': [0.0, 0.0],
65  }
66 
67  pGun.param(param_pGun)
68  main.add_module(pGun)
69 else:
70  # beam parameters
71  beamparameters = add_beamparameters(main, "Y4S")
72  evtgeninput = register_module('EvtGenInput')
73  main.add_module(evtgeninput)
74 
75 
76 if (withbg == 1):
77  bg = glob.glob(isbg + '/*.root')
78  add_simulation(main, bkgfiles=bg)
79 else:
80  add_simulation(main)
81 
82 add_reconstruction(main, components='ECL')
83 
84 ecl_digitizerPureCsI = register_module('ECLDigitizerPureCsI')
85 ecl_digitizerPureCsI.param('adcTickFactor', 8)
86 ecl_digitizerPureCsI.param('sigmaTrigger', 0.)
87 ecl_digitizerPureCsI.param('elecNoise', elenoise)
88 ecl_digitizerPureCsI.param('photostatresolution', photo)
89 ecl_digitizerPureCsI.param('sigmaTrigger', 0)
90 ecl_digitizerPureCsI.param('LastRing', 12)
91 ecl_digitizerPureCsI.param('NoCovMatrix', 1)
92 
93 if (withbg == 1):
94  ecl_digitizerPureCsI.param('Background', 1)
95 
96 main.add_module(ecl_digitizerPureCsI)
97 
98 ecl_calibrator_PureCsI = register_module('ECLDigitCalibratorPureCsI')
99 main.add_module(ecl_calibrator_PureCsI)
100 ecl_shower_rec_PureCsI = register_module('ECLReconstructorPureCsI')
101 main.add_module(ecl_shower_rec_PureCsI)
102 
103 ecl_digistudy = register_module('ECLDigiStudy')
104 ecl_digistudy.param('outputFileName', digistudyfile)
105 main.add_module(ecl_digistudy)
106 
107 # display = register_module('Display')
108 # main.add_module(display)
109 
110 add_mdst_output(
111  main,
112  mc=True,
113  filename=mdstfile,
114  additionalBranches=[
115  'ECLHits',
116  'ECLClustersPureCsI',
117  'ECLDsps',
118  'ECLDspsPureCsI',
119  'ECLDigits',
120  'ECLCalDigits',
121  'ECLDigitsPureCsI',
122  'ECLCalDigitsPureCsI',
123  'ECLDigitsPureCsIToECLDspsPureCsI',
124  'ECLDigitsPureCsIToECLHits'])
125 
126 # Show progress of processing
127 progress = register_module('ProgressBar')
128 main.add_module(progress)
129 
130 process(main)
131 print(statistics)