Coverage for src/km3pipe/tests/test_mc.py: 100%

36 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-03-29 03:15 +0000

1# Filename: test_mc.py 

2# pylint: disable=locally-disabled,C0111,R0904,C0103 

3import numpy as np 

4 

5from km3pipe import Table, Blob 

6from km3pipe.testing import TestCase 

7from km3pipe.mc import geant2pdg, pdg2name, convert_mc_times_to_jte_times 

8 

9__author__ = "Tamas Gal" 

10__copyright__ = "Copyright 2016, Tamas Gal and the KM3NeT collaboration." 

11__credits__ = [] 

12__license__ = "MIT" 

13__maintainer__ = "Tamas Gal" 

14__email__ = "tgal@km3net.de" 

15__status__ = "Development" 

16 

17 

18class TestMc(TestCase): 

19 def test_geant2pdg(self): 

20 self.assertEqual(22, geant2pdg(1)) 

21 self.assertEqual(-13, geant2pdg(5)) 

22 

23 def test_geant2pdg_returns_0_for_unknown_particle_id(self): 

24 self.assertEqual(0, geant2pdg(-999)) 

25 

26 def test_pdg2name(self): 

27 self.assertEqual("mu-", pdg2name(13)) 

28 self.assertEqual("nu(tau)~", pdg2name(-16)) 

29 

30 def test_pdg2name_returns_NA_for_unknown_particle(self): 

31 self.assertEqual("N/A", pdg2name(0)) 

32 

33 

34class TestMCConvert(TestCase): 

35 def setUp(self): 

36 self.event_info = Table( 

37 { 

38 "timestamp": 1, 

39 "nanoseconds": 700000000, 

40 "mc_time": 1.74999978e9, 

41 } 

42 ) 

43 

44 self.mc_tracks = Table( 

45 { 

46 "time": 1, 

47 } 

48 ) 

49 

50 self.mc_hits = Table( 

51 { 

52 "time": 30.79, 

53 } 

54 ) 

55 

56 self.blob = Blob( 

57 { 

58 "event_info": self.event_info, 

59 "mc_hits": self.mc_hits, 

60 "mc_tracks": self.mc_tracks, 

61 } 

62 ) 

63 

64 def test_convert_mc_times_to_jte_times(self): 

65 times_mc_tracks = convert_mc_times_to_jte_times( 

66 self.mc_tracks.time, 

67 self.event_info.timestamp * 1e9 + self.event_info.nanoseconds, 

68 self.event_info.mc_time, 

69 ) 

70 times_mc_hits = convert_mc_times_to_jte_times( 

71 self.mc_hits.time, 

72 self.event_info.timestamp * 1e9 + self.event_info.nanoseconds, 

73 self.event_info.mc_time, 

74 ) 

75 

76 assert times_mc_tracks is not None 

77 assert times_mc_hits is not None 

78 print(times_mc_tracks, times_mc_hits) 

79 assert np.allclose(times_mc_tracks, 49999781) 

80 assert np.allclose(times_mc_hits, 49999810.79)