9 os.system(
'kill '+str(os.getpid()))
10atexit.register(pyExit)
16 with open(os.path.join(
"/proc", str(pid),
"status"))
as f:
18 _vmsize = [l
for l
in lines
if l.startswith(
"VmSize")][0]
19 vmsize =
int(_vmsize.split()[1])
21 pmsize = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
22 print(
"memory: virtuell = %5.2F MB physical = %5.2F MB"%(vmsize/1.0E3,pmsize/1.0E3))
30from argparse
import ArgumentParser
31parser = ArgumentParser()
32parser.add_argument(
"-f",
"--inputFile", dest=
"inputFile", help=
"single input file", required=
True)
33parser.add_argument(
"-g",
"--geoFile", dest=
"geoFile", help=
"geofile", required=
True)
34parser.add_argument(
"-n",
"--nEvents", dest=
"nEvents", type=int, help=
"number of events to process", default=100000)
35parser.add_argument(
"-ts",
"--thresholdScifi", dest=
"ts", type=float, help=
"threshold energy for Scifi [p.e.]", default=3.5)
36parser.add_argument(
"-ss",
"--saturationScifi", dest=
"ss", type=float, help=
"saturation energy for Scifi [p.e.]", default=104.)
37parser.add_argument(
"-tML",
"--thresholdMufiL", dest=
"tml", type=float, help=
"threshold energy for Mufi large [p.e.]", default=0.0)
38parser.add_argument(
"-tMS",
"--thresholdMufiS", dest=
"tms", type=float, help=
"threshold energy for Mufi small [p.e.]", default=0.0)
39parser.add_argument(
"-no-cls",
"--noClusterScifi", action=
'store_true', help=
"do not make Scifi clusters")
40parser.add_argument(
"-cpp",
"--digiCPP", action=
'store_true', dest=
"FairTask_digi", help=
"perform digitization using DigiTaskSND")
41parser.add_argument(
"-d",
"--Debug", dest=
"debug", help=
"debug", default=
False)
42parser.add_argument(
"--copy-emulsion-points", action=
'store_true', help=
"Copy emulsion points from input file (potentially large file size!).")
44options = parser.parse_args()
46makeClusterScifi =
not options.noClusterScifi
48timer = ROOT.TStopwatch()
52tmp = options.inputFile.split(
'/')
53outFile = tmp[len(tmp)-1].replace(
'.root',
'_dig.root')
54if options.inputFile.find(
'/eos')==0:
55 if options.FairTask_digi:
56 options.inputFile = os.environ[
'EOSSHIP']+options.inputFile
58 os.system(
'xrdcp '+os.environ[
'EOSSHIP']+options.inputFile+
' '+outFile)
60 if not options.FairTask_digi:
61 os.system(
'cp '+options.inputFile+
' '+outFile)
64import shipLHC_conf
as sndDet_conf
66if options.geoFile.find(
'/eos')==0:
67 options.geoFile = os.environ[
'EOSSHIP']+options.geoFile
72lsOfGlobals = ROOT.gROOT.GetListOfGlobals()
73scifiDet = lsOfGlobals.FindObject(
'Scifi')
74mufiDet = lsOfGlobals.FindObject(
'MuFilter')
75mufiDet.SetConfPar(
"MuFilter/DsAttenuationLength",350 * u.cm)
76mufiDet.SetConfPar(
"MuFilter/DsTAttenuationLength",700 * u.cm)
77mufiDet.SetConfPar(
"MuFilter/VandUpAttenuationLength",999 * u.cm)
78mufiDet.SetConfPar(
"MuFilter/DsSiPMcalibrationS",25.*1000.)
79mufiDet.SetConfPar(
"MuFilter/VandUpSiPMcalibration",25.*1000.);
80mufiDet.SetConfPar(
"MuFilter/VandUpSiPMcalibrationS",25.*1000.);
81mufiDet.SetConfPar(
"MuFilter/VandUpPropSpeed",12.5*u.cm/u.nanosecond);
82mufiDet.SetConfPar(
"MuFilter/DsPropSpeed",14.3*u.cm/u.nanosecond);
83scifiDet.SetConfPar(
"Scifi/nphe_min",options.ts)
84scifiDet.SetConfPar(
"Scifi/nphe_max",options.ss)
85scifiDet.SetConfPar(
"Scifi/timeResol",150.*u.picosecond)
86scifiDet.SetConfPar(
"MuFilter/timeResol",150.*u.picosecond)
90if options.FairTask_digi:
91 run = ROOT.FairRunAna()
92 ioman = ROOT.FairRootManager.Instance()
93 ioman.RegisterInputObject(
'Scifi', snd_geo.modules[
'Scifi'])
94 ioman.RegisterInputObject(
'MuFilter', snd_geo.modules[
'MuFilter'])
96 run.SetEventHeaderPersistence(
False)
99 fileSource = ROOT.FairFileSource(options.inputFile)
100 run.SetSource(fileSource)
102 outfile = ROOT.FairRootFileSink(outFile.replace(
'.root',
'CPP.root'))
106 inRootFile = ROOT.TFile.Open(options.inputFile)
107 inTree = inRootFile.Get(
'cbmsim')
108 nEventsInFile = inTree.GetEntries()
109 nEvents = min(nEventsInFile, options.nEvents)
111 rtdb = run.GetRuntimeDb()
112 DigiTask = ROOT.DigiTaskSND()
113 DigiTask.withScifiClusters(makeClusterScifi)
114 DigiTask.set_copy_emulsion_points(options.copy_emulsion_points)
115 run.AddTask(DigiTask)
117 run.Run(firstEvent, nEvents)
121 if options.copy_emulsion_points:
122 print(
"ERROR: copying of emulsion points only configurable when using DigiTask")
127 nEvents = min(Sndlhc.sTree.GetEntries(),options.nEvents)
129 for iEvent
in range(firstEvent, nEvents):
130 if iEvent % 50000 == 0
or options.debug:
131 print(
'event ', iEvent, nEvents - firstEvent)
132 Sndlhc.iEvent = iEvent
133 rc = Sndlhc.sTree.GetEvent(iEvent)
136 Sndlhc.clusterScifi()
144rtime = timer.RealTime()
145ctime = timer.CpuTime()
147print(
"Real time ",rtime,
" s, CPU time ",ctime,
"s")
configure(darkphoton=None)