@@ -82,28 +82,39 @@ def __call__(self, frame: "icetray.I3Frame") -> Dict[str, Any]:
82
82
self .highest_energy_primary ,
83
83
)
84
84
85
- MMCTrackList = frame [self .mmctracklist ]
86
- # Filter tracks that are not daughters of the desired
87
- if self .daughters :
88
- MMCTrackList = [
89
- track
90
- for track in MMCTrackList
91
- if frame [self .mctree ].get_primary (track .GetI3Particle ())
92
- in primaries
93
- ]
94
-
95
- # Create a lookup dict for the tracks
96
- track_lookup = {}
97
- for track in MuonGun .Track .harvest (
98
- frame [self .mctree ], MMCTrackList
99
- ):
100
- track_lookup [track .id ] = track
85
+ if not len (primaries ) == 0 :
86
+
87
+ MMCTrackList = frame [self .mmctracklist ]
88
+ # Filter tracks that are not daughters of the desired
89
+ if self .daughters :
90
+ temp_MMCTrackList = []
91
+ for track in MMCTrackList :
92
+ for p in primaries :
93
+ if frame [self .mctree ].is_in_subtree (
94
+ p .id , track .GetI3Particle ().id
95
+ ):
96
+ temp_MMCTrackList .append (track )
97
+ break
98
+ MMCTrackList = temp_MMCTrackList
99
+
100
+ # Create a lookup dict for the tracks
101
+ track_lookup = {}
102
+ for track in MuonGun .Track .harvest (
103
+ frame [self .mctree ], MMCTrackList
104
+ ):
105
+ track_lookup [track .id ] = track
106
+
107
+ e_dep_cascade , e_dep_track , e_ent_track = self .get_energies (
108
+ frame , primaries , track_lookup
109
+ )
101
110
102
- e_dep_cascade , e_dep_track , e_ent_track = self .get_energies (
103
- frame , primaries , track_lookup
104
- )
111
+ primary_energy = sum ([p .energy for p in primaries ])
112
+ else :
113
+ e_ent_track = np .nan
114
+ e_dep_track = np .nan
115
+ e_dep_cascade = np .nan
116
+ primary_energy = np .nan
105
117
106
- primary_energy = sum ([p .energy for p in primaries ])
107
118
e_total = e_ent_track + e_dep_cascade
108
119
109
120
# In case all particles are considered and
@@ -117,55 +128,52 @@ def __call__(self, frame: "icetray.I3Frame") -> Dict[str, Any]:
117
128
)
118
129
):
119
130
self .warning (
120
- "No energy deposited in the hull, \
121
- Think about in creasing the padding. \
122
- \n Current padding: {}\
131
+ "No energy deposited in the hull,"
132
+ "Think about in creasing the padding."
133
+ f"\n Current padding: { self .hull .padding } "
134
+ f"\n Total energy: { e_total } "
135
+ f"\n Track energy: { e_ent_track } "
136
+ f"\n Cascade energy: { e_dep_cascade } "
137
+ f"\n Event header: { frame ['I3EventHeader' ]} "
138
+ )
139
+
140
+ # Check only in the case that there were primaries
141
+ if not len (primaries ) == 0 :
142
+
143
+ # total energy should always be less than the primary energy
144
+ assert e_total <= (
145
+ primary_energy * (1 + 1e-6 )
146
+ ), "Total energy on entrance is greater than primary energy\
123
147
\n Total energy: {}\
148
+ \n Primary energy: {}\
124
149
\n Track energy: {}\
125
- \n Cascade energy: {} \
126
- \n Event header: {}\
127
- " .format (
128
- self .hull .padding ,
129
- e_total ,
130
- e_ent_track ,
131
- e_dep_cascade ,
132
- frame ["I3EventHeader" ],
133
- )
150
+ \n Cascade energy: {}\
151
+ {}" .format (
152
+ e_total ,
153
+ primary_energy ,
154
+ e_ent_track ,
155
+ e_dep_cascade ,
156
+ frame ["I3EventHeader" ],
134
157
)
135
158
136
- # total energy should always be less than the primary energy
137
- assert e_total <= (
138
- primary_energy * (1 + 1e-6 )
139
- ), "Total energy on entrance is greater than primary energy\
140
- \n Total energy: {}\
141
- \n Primary energy: {}\
142
- \n Track energy: {}\
143
- \n Cascade energy: {}\
144
- {}" .format (
145
- e_total ,
146
- primary_energy ,
147
- e_ent_track ,
148
- e_dep_cascade ,
149
- frame ["I3EventHeader" ],
150
- )
159
+ assert (
160
+ primary_energy > 0
161
+ ), "Primary energy is 0, this should not happen.\
162
+ \n Total energy: {}\
163
+ \n Track energy: {}\
164
+ \n Cascade energy: {}\
165
+ {}" .format (
166
+ e_total ,
167
+ e_ent_track ,
168
+ e_dep_cascade ,
169
+ frame ["I3EventHeader" ],
170
+ )
171
+ fraction_primary = e_total / primary_energy
151
172
152
173
cascade_fraction = None
153
174
if e_total > 0 :
154
175
cascade_fraction = e_dep_cascade / e_total
155
176
156
- assert (
157
- primary_energy > 0
158
- ), "Primary energy is 0, this should not happen.\
159
- \n Total energy: {}\
160
- \n Track energy: {}\
161
- \n Cascade energy: {}\
162
- {}" .format (
163
- e_total ,
164
- e_ent_track ,
165
- e_dep_cascade ,
166
- frame ["I3EventHeader" ],
167
- )
168
- fraction_primary = e_total / primary_energy
169
177
output .update (
170
178
{
171
179
"e_entrance_track_" + self ._extractor_name : e_ent_track ,
0 commit comments