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)
88if scifiDet.GetConfParF(
"Scifi/signalSpeed")==0:
89 scifiDet.SetConfPar(
"Scifi/signalSpeed", 15*u.cm/u.nanosecond)
93if options.FairTask_digi:
94 run = ROOT.FairRunAna()
95 ioman = ROOT.FairRootManager.Instance()
96 ioman.RegisterInputObject(
'Scifi', snd_geo.modules[
'Scifi'])
97 ioman.RegisterInputObject(
'MuFilter', snd_geo.modules[
'MuFilter'])
99 run.SetEventHeaderPersistence(
False)
102 fileSource = ROOT.FairFileSource(options.inputFile)
103 run.SetSource(fileSource)
105 outfile = ROOT.FairRootFileSink(outFile.replace(
'.root',
'CPP.root'))
109 inRootFile = ROOT.TFile.Open(options.inputFile)
110 inTree = inRootFile.Get(
'cbmsim')
111 nEventsInFile = inTree.GetEntries()
112 nEvents = min(nEventsInFile, options.nEvents)
114 rtdb = run.GetRuntimeDb()
115 DigiTask = ROOT.DigiTaskSND()
116 DigiTask.withScifiClusters(makeClusterScifi)
117 DigiTask.set_copy_emulsion_points(options.copy_emulsion_points)
118 run.AddTask(DigiTask)
120 run.Run(firstEvent, nEvents)
124 if options.copy_emulsion_points:
125 print(
"ERROR: copying of emulsion points only configurable when using DigiTask")
130 nEvents = min(Sndlhc.sTree.GetEntries(),options.nEvents)
132 for iEvent
in range(firstEvent, nEvents):
133 if iEvent % 50000 == 0
or options.debug:
134 print(
'event ', iEvent, nEvents - firstEvent)
135 Sndlhc.iEvent = iEvent
136 rc = Sndlhc.sTree.GetEvent(iEvent)
139 Sndlhc.clusterScifi()
147rtime = timer.RealTime()
148ctime = timer.CpuTime()
150print(
"Real time ",rtime,
" s, CPU time ",ctime,
"s")
configure(darkphoton=None)