summaryrefslogtreecommitdiff
path: root/tests/test_pdf.py
blob: 9a08b537d191022d632a65d66bdf250f5f8ca4c4 (plain)
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())