1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import unittest
import numpy as np
import chroma.detectors
from chroma.generator.photon import G4ParallelGenerator
from chroma.generator.vertex import constant_particle_gun
from chroma.optics import water_wcsim
from chroma.gpu import GPU
from chroma.sim import Simulation
class TestPDF(unittest.TestCase):
def setUp(self):
self.detector = chroma.detectors.find("microlbne")
self.detector.build()
self.vertex_gen = constant_particle_gun('e-', (0,0,0), (1,0,0), 10)
def testGPUPDF(self):
'''Create a hit count and (q,t) PDF for 10 MeV events in MicroLBNE'''
g4generator = G4ParallelGenerator(1, water_wcsim)
gpu = GPU(0)
gpu.load_geometry(self.detector)
gpu.setup_propagate()
gpu.setup_daq(max(self.detector.pmtids))
gpu.setup_pdf(max(self.detector.pmtids), 100, (-0.5, 999.5), 10, (-0.5, 9.5))
gpu.clear_pdf()
for ev in g4generator.generate_events(10, self.vertex_gen):
gpu.load_photons(ev.photon_start)
gpu.propagate()
gpu.run_daq()
gpu.add_hits_to_pdf()
hitcount, pdf = gpu.get_pdfs()
self.assertTrue( (hitcount > 0).any() )
self.assertTrue( (pdf > 0).any() )
# Consistency checks
for i, nhits in enumerate(hitcount):
self.assertEqual(nhits, pdf[i].sum())
def testSimPDF(self):
sim = Simulation(self.detector, water_wcsim)
hitcount, pdf = sim.create_pdf(100, self.vertex_gen,
100, (-0.5, 999.5), 10, (-0.5, 9.5))
self.assertTrue( (hitcount > 0).any() )
self.assertTrue( (pdf > 0).any() )
# Consistency checks
for i, nhits in enumerate(hitcount):
self.assertEqual(nhits, pdf[i].sum())
|