@@ -22,16 +22,31 @@ function(params, anode, field, n, rms_cuts=[])
2222 // coherent noise filtering.
2323 // 5638 is the number of channels in a single APA, (1984*2 + 1670),
2424 // including the 6 channel gap.
25- // The induction planes have to types of ch grouping (due to FEMB),
26- // one where the grouping is 32 channels wide and one where it is 128 channels wide.
27- // The collection planes are grouped by 64.
25+ // The induction planes have two types of ch grouping (due to FEMB installation)
26+ // one where the grouping is 32 channels wide and one where it is 128
27+ // (but split into 2 groups of 64) channels wide.
28+ // This grouping is flipped for the same plane in the second APA.
29+ // The collection planes are grouped by 64.
30+ // Due to a group of dead 32 channels in collection plane in APA0,
31+ // we specify separate groups of 32 (dead) and 32 (alive) within that group of 64
32+ // so that coherent noise filtering is applied properly to the alive channels.
2833
29- groups: [std.range ( 0 + n * 5638 + g*32 , 0 + n * 5638 + (g+1 )*32 - 1 ) for g in std.range (0 ,26 )] + # first section of u
30- [std.range ( 832 + n * 5638 + g*128 , 832 + n * 5638 + (g+1 )*128 - 1 ) for g in std.range (0 ,9 )] + # second section of u
31- [std.range (1984 + n * 5638 + g*128 , 1984 + n * 5638 + (g+1 )*128 - 1 ) for g in std.range (0 ,9 )] + # first section of v
32- [std.range (3136 + n * 5638 + g*32 , 3136 + n * 5638 + (g+1 )*32 - 1 ) for g in std.range (0 ,26 )] + # second section of v
33- [std.range (3974 + n * 5638 + g*64 , 3974 + n * 5638 + (g+1 )*64 - 1 ) for g in std.range (0 ,13 )] + # first half of w
34- [std.range (4806 + n * 5638 + g*64 , 4806 + n * 5638 + (g+1 )*64 - 1 ) for g in std.range (0 ,13 )] , # second half of w
34+ groups: [std.range ( 0 + g*32 , 0 + (g+1 )*32 - 1 ) for g in std.range (0 ,25 )] + # first section of u0
35+ [std.range ( 832 + g*64 , 832 + (g+1 )*64 - 1 ) for g in std.range (0 ,17 )] + # second section of u0
36+ [std.range (1984 + g*64 , 1984 + (g+1 )*64 - 1 ) for g in std.range (0 ,17 )] + # first section of v0
37+ [std.range (3136 + g*32 , 3136 + (g+1 )*32 - 1 ) for g in std.range (0 ,25 )] + # second section of v0
38+
39+ [std.range (5638 + g*64 , 5638 + (g+1 )*64 - 1 ) for g in std.range (0 ,17 )] + # first section of u1
40+ [std.range (6790 + g*32 , 6790 + (g+1 )*32 - 1 ) for g in std.range (0 ,25 )] + # second section of u1
41+ [std.range (7622 + g*32 , 7622 + (g+1 )*32 - 1 ) for g in std.range (0 ,25 )] + # first section of v1
42+ [std.range (8454 + g*64 , 8454 + (g+1 )*64 - 1 ) for g in std.range (0 ,17 )] + # second section of v1
43+
44+ [std.range (3968 + n * 5638 + g*64 , 3968 + n * 5638 + (g+1 )*64 - 1 ) for g in std.range (0 ,2 )] + # first three groups of w
45+ [std.range (4160 , 4192 - 1 )] + # w apa0 4th group, first 32 dead wire (for completeness)
46+ [std.range (4192 , 4224 - 1 )] + # w apa0 4th group, remaining 32 alive wire (next to dead wire)
47+ [std.range (9798 , 9862 - 1 )] + # w apa1 4th group of 64 (alive)
48+ [std.range (4224 + n * 5638 + g*64 , 4224 + n * 5638 + (g+1 )*64 - 1 ) for g in std.range (0 ,8 )] + # first half of w (excluding first 4 groups)
49+ [std.range (4806 + n * 5638 + g*64 , 4806 + n * 5638 + (g+1 )*64 - 1 ) for g in std.range (0 ,12 )] , # second half of w
3550
3651 // Externally determined "bad" channels.
3752 //
0 commit comments