gnn-tracking / gnn_tracking

Reconstruct billions of particle trajectories with graph neural networks
https://gnn-tracking.rtfd.io/
MIT License
31 stars 16 forks source link

Critical fix: Layer numbering in GC #432

Closed klieret closed 11 months ago

klieret commented 11 months ago

This is the correct numbering:

image

klieret commented 11 months ago

This numbering is determined in the PC builder:

    def restrict_to_subdetectors(self, hits: DF, cells: DF) -> tuple[DF, DF]:
        """Rename (volume, layer) pairs with an integer label."""
        pixel_barrel = [(8, 2), (8, 4), (8, 6), (8, 8)]
        pixel_LEC = [(7, 14), (7, 12), (7, 10), (7, 8), (7, 6), (7, 4), (7, 2)]
        pixel_REC = [(9, 2), (9, 4), (9, 6), (9, 8), (9, 10), (9, 12), (9, 14)]
        allowed_layers = None
        if self.pixel_only:
            allowed_layers = pixel_barrel + pixel_REC + pixel_LEC

        hit_layer_groups = hits.groupby(["volume_id", "layer_id"])
        if allowed_layers is not None:
            available_allowed_layers = sorted(
                set(hit_layer_groups.groups.keys()) & set(allowed_layers)
            )
        else:
            available_allowed_layers = sorted(hit_layer_groups.groups.keys())
        hits = pd.concat(
            [
                hit_layer_groups.get_group(layer).assign(layer=i)
                for i, layer in enumerate(available_allowed_layers)
            ]
        )