{
  "id": 381702,
  "title": "Sensor IDs For 3 Sections of the IceCube Detector",
  "url": "/competitions/icecube-neutrinos-in-deep-ice/discussion/381702",
  "author_name": "",
  "post_date": "2023-01-27T21:44:10.025510Z",
  "votes": 9,
  "comment_count": 5,
  "views": 0,
  "content": "<p><a href=\"https://www.kaggle.com/pellerphys\" target=\"_blank\">@pellerphys</a></p>\n<p>One thing I have observed is that the detector is often logically split into 3 pieces (for downstream modelling):</p>\n<ul>\n<li>The main IceCube array (Referred to as IC78)</li>\n<li>The upper DeepCore array</li>\n<li>The lower DeepCore array</li>\n</ul>\n<p>As our sensor array data is listed 0 through 5159 (with xyz coordinates), <strong>it would be helpful to be able to map the provided sensor IDs directly into the 3 sections of the IceCube Detector. Is this something you can provide?</strong></p>\n<p><br></p>\n<p>The below images/pages are from the <strong>Deep Learning in Physics exemplified by the Reconstruction of Muon-Neutrino Events in IceCube</strong> paper and the <strong>Deep Learning in Physics exemplified by the Reconstruction of Muon-Neutrino Events in IceCube</strong> paper respectively and illustrate both the geometries and the transformation.</p>\n<p><img src=\"https://i.ibb.co/W0cVVFT/Screenshot-2023-01-27-at-4-28-29-PM.png\" alt=\"\"></p>\n<p><img src=\"https://i.ibb.co/yS4M8j1/Screenshot-2023-01-27-at-4-30-44-PM.png\" alt=\"\"></p>",
  "messages": [
    {
      "id": "2118255",
      "postDate": "01/27/2023 21:44:10",
      "content": "<p><a href=\"https://www.kaggle.com/pellerphys\" target=\"_blank\">@pellerphys</a></p>\n<p>One thing I have observed is that the detector is often logically split into 3 pieces (for downstream modelling):</p>\n<ul>\n<li>The main IceCube array (Referred to as IC78)</li>\n<li>The upper DeepCore array</li>\n<li>The lower DeepCore array</li>\n</ul>\n<p>As our sensor array data is listed 0 through 5159 (with xyz coordinates), <strong>it would be helpful to be able to map the provided sensor IDs directly into the 3 sections of the IceCube Detector. Is this something you can provide?</strong></p>\n<p><br></p>\n<p>The below images/pages are from the <strong>Deep Learning in Physics exemplified by the Reconstruction of Muon-Neutrino Events in IceCube</strong> paper and the <strong>Deep Learning in Physics exemplified by the Reconstruction of Muon-Neutrino Events in IceCube</strong> paper respectively and illustrate both the geometries and the transformation.</p>\n<p><img src=\"https://i.ibb.co/W0cVVFT/Screenshot-2023-01-27-at-4-28-29-PM.png\" alt=\"\"></p>\n<p><img src=\"https://i.ibb.co/yS4M8j1/Screenshot-2023-01-27-at-4-30-44-PM.png\" alt=\"\"></p>",
      "rawMarkdown": "pellerphys\n\nOne thing I have observed is that the detector is often logically split into 3 pieces (for downstream modelling):\n* The main IceCube array (Referred to as IC78)\n* The upper DeepCore array\n* The lower DeepCore array\n\nAs our sensor array data is listed 0 through 5159 (with xyz coordinates), **it would be helpful to be able to map the provided sensor IDs directly into the 3 sections of the IceCube Detector. Is this something you can provide?**\n\n<br>\n\nThe below images/pages are from the **Deep Learning in Physics exemplified by the Reconstruction of Muon-Neutrino Events in IceCube** paper and the **Deep Learning in Physics exemplified by the Reconstruction of Muon-Neutrino Events in IceCube** paper respectively and illustrate both the geometries and the transformation.\n\n![](https://i.ibb.co/W0cVVFT/Screenshot-2023-01-27-at-4-28-29-PM.png)\n\n![](https://i.ibb.co/yS4M8j1/Screenshot-2023-01-27-at-4-30-44-PM.png)",
      "votes": null
    },
    {
      "id": "2118287",
      "postDate": "01/27/2023 22:31:26",
      "content": "<p>You can get the 3 groups (IC78, Veto, DeepCore) from the sensor geometry CSV. I used this:</p>\n<pre><code>sensors = pd.read_csv(INPUT_PATH / )\nsensors[] = \n\n i  ((sensors) // ):\n    start, end = i * , (i * ) + \n    sensors.loc[start:end, ] = i\n\n     i  (, ):\n        start_veto, end_veto = i * , (i * ) + \n        start_core, end_core = end_veto + , (i * ) + \n</code></pre>\n<p>Veto Cap/DeepCore is strings 78-86. The top 10 DOMs are the Veto cap, and the lower 50 DOMs are DeepCore</p>",
      "rawMarkdown": "You can get the 3 groups (IC78, Veto, DeepCore) from the sensor geometry CSV. I used this:\n\n```python\nsensors = pd.read_csv(INPUT_PATH / \"sensor_geometry.csv\")\nsensors[\"string\"] = 0\n\nfor i in range(len(sensors) // 60):\n    start, end = i * 60, (i * 60) + 60\n    sensors.loc[start:end, \"string\"] = i\n\n    if i in range(78, 86):\n        start_veto, end_veto = i * 60, (i * 60) + 10\n        start_core, end_core = end_veto + 1, (i * 60) + 60\n```\nVeto Cap/DeepCore is strings 78-86. The top 10 DOMs are the Veto cap, and the lower 50 DOMs are DeepCore",
      "votes": null
    },
    {
      "id": "2118297",
      "postDate": "01/27/2023 22:54:44",
      "content": "<p>Wonderful! Thank you so much.</p>",
      "rawMarkdown": "Wonderful! Thank you so much.",
      "votes": null
    },
    {
      "id": "2119450",
      "postDate": "01/28/2023 19:14:39",
      "content": "<p>Wow, I totally missed that the deep core strings have a huge gap!</p>\n<p>But yes, I highly recommend using something like:</p>\n<pre><code>string_id = sensor_id // \ndepth_id = sensor_id % \n</code></pre>\n<p>Then you can get deep strings with your preference of sensor_id &gt;= 78*60, or string_id &gt;= 78. And NOW I know to check like so:</p>\n<pre><code>main_sensor = (string_id &lt; )\ndeep_veto = (string_id &gt;= ) &amp; (depth_id &lt; )\ndeep_core = (string_id &gt;= ) &amp; (depth_id &gt;= )\n</code></pre>",
      "rawMarkdown": "Wow, I totally missed that the deep core strings have a huge gap!\n\nBut yes, I highly recommend using something like:\n```python\nstring_id = sensor_id // 60\ndepth_id = sensor_id % 60\n```\n\nThen you can get deep strings with your preference of sensor_id >= 78*60, or string_id >= 78. And NOW I know to check like so:\n```python\nmain_sensor = (string_id < 78)\ndeep_veto = (string_id >= 78) & (depth_id < 10)\ndeep_core = (string_id >= 78) & (depth_id >= 10)\n```",
      "votes": null
    },
    {
      "id": "2119738",
      "postDate": "01/29/2023 04:16:11",
      "content": "<p>I found one set of data on the ice cube site containing data for an event.  That data does not contain sensor string 0 - if you happen to find and use actual data you need to add +1 to get the sensor string id I saw in that real data set.</p>",
      "rawMarkdown": "I found one set of data on the ice cube site containing data for an event.  That data does not contain sensor string 0 - if you happen to find and use actual data you need to add +1 to get the sensor string id I saw in that real data set.",
      "votes": null
    },
    {
      "id": "2119764",
      "postDate": "01/29/2023 04:48:06",
      "content": "<p>Good to know. I did notice there was quite a bit of public IceCube data and even a library to interact with it.</p>\n<p>I’m on my phone RN, but I’ll try to post links here tomorrow.</p>",
      "rawMarkdown": "Good to know. I did notice there was quite a bit of public IceCube data and even a library to interact with it.\n\nI’m on my phone RN, but I’ll try to post links here tomorrow.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 2118287,
      "author_name": "anjum48",
      "author_url": "",
      "post_date": "01/27/2023 22:31:26",
      "content": "<p>You can get the 3 groups (IC78, Veto, DeepCore) from the sensor geometry CSV. I used this:</p>\n<pre><code>sensors = pd.read_csv(INPUT_PATH / )\nsensors[] = \n\n i  ((sensors) // ):\n    start, end = i * , (i * ) + \n    sensors.loc[start:end, ] = i\n\n     i  (, ):\n        start_veto, end_veto = i * , (i * ) + \n        start_core, end_core = end_veto + , (i * ) + \n</code></pre>\n<p>Veto Cap/DeepCore is strings 78-86. The top 10 DOMs are the Veto cap, and the lower 50 DOMs are DeepCore</p>",
      "votes": null,
      "replies": [
        {
          "id": 2118297,
          "author_name": "dschettler8845",
          "author_url": "",
          "post_date": "01/27/2023 22:54:44",
          "content": "<p>Wonderful! Thank you so much.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 2119450,
          "author_name": "roberthatch",
          "author_url": "",
          "post_date": "01/28/2023 19:14:39",
          "content": "<p>Wow, I totally missed that the deep core strings have a huge gap!</p>\n<p>But yes, I highly recommend using something like:</p>\n<pre><code>string_id = sensor_id // \ndepth_id = sensor_id % \n</code></pre>\n<p>Then you can get deep strings with your preference of sensor_id &gt;= 78*60, or string_id &gt;= 78. And NOW I know to check like so:</p>\n<pre><code>main_sensor = (string_id &lt; )\ndeep_veto = (string_id &gt;= ) &amp; (depth_id &lt; )\ndeep_core = (string_id &gt;= ) &amp; (depth_id &gt;= )\n</code></pre>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 2119738,
      "author_name": "pcjimmmy",
      "author_url": "",
      "post_date": "01/29/2023 04:16:11",
      "content": "<p>I found one set of data on the ice cube site containing data for an event.  That data does not contain sensor string 0 - if you happen to find and use actual data you need to add +1 to get the sensor string id I saw in that real data set.</p>",
      "votes": null,
      "replies": [
        {
          "id": 2119764,
          "author_name": "dschettler8845",
          "author_url": "",
          "post_date": "01/29/2023 04:48:06",
          "content": "<p>Good to know. I did notice there was quite a bit of public IceCube data and even a library to interact with it.</p>\n<p>I’m on my phone RN, but I’ll try to post links here tomorrow.</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "2118255": "pellerphys\n\nOne thing I have observed is that the detector is often logically split into 3 pieces (for downstream modelling):\n* The main IceCube array (Referred to as IC78)\n* The upper DeepCore array\n* The lower DeepCore array\n\nAs our sensor array data is listed 0 through 5159 (with xyz coordinates), **it would be helpful to be able to map the provided sensor IDs directly into the 3 sections of the IceCube Detector. Is this something you can provide?**\n\n<br>\n\nThe below images/pages are from the **Deep Learning in Physics exemplified by the Reconstruction of Muon-Neutrino Events in IceCube** paper and the **Deep Learning in Physics exemplified by the Reconstruction of Muon-Neutrino Events in IceCube** paper respectively and illustrate both the geometries and the transformation.\n\n![](https://i.ibb.co/W0cVVFT/Screenshot-2023-01-27-at-4-28-29-PM.png)\n\n![](https://i.ibb.co/yS4M8j1/Screenshot-2023-01-27-at-4-30-44-PM.png)",
    "2118287": "You can get the 3 groups (IC78, Veto, DeepCore) from the sensor geometry CSV. I used this:\n\n```python\nsensors = pd.read_csv(INPUT_PATH / \"sensor_geometry.csv\")\nsensors[\"string\"] = 0\n\nfor i in range(len(sensors) // 60):\n    start, end = i * 60, (i * 60) + 60\n    sensors.loc[start:end, \"string\"] = i\n\n    if i in range(78, 86):\n        start_veto, end_veto = i * 60, (i * 60) + 10\n        start_core, end_core = end_veto + 1, (i * 60) + 60\n```\nVeto Cap/DeepCore is strings 78-86. The top 10 DOMs are the Veto cap, and the lower 50 DOMs are DeepCore",
    "2118297": "Wonderful! Thank you so much.",
    "2119450": "Wow, I totally missed that the deep core strings have a huge gap!\n\nBut yes, I highly recommend using something like:\n```python\nstring_id = sensor_id // 60\ndepth_id = sensor_id % 60\n```\n\nThen you can get deep strings with your preference of sensor_id >= 78*60, or string_id >= 78. And NOW I know to check like so:\n```python\nmain_sensor = (string_id < 78)\ndeep_veto = (string_id >= 78) & (depth_id < 10)\ndeep_core = (string_id >= 78) & (depth_id >= 10)\n```",
    "2119738": "I found one set of data on the ice cube site containing data for an event.  That data does not contain sensor string 0 - if you happen to find and use actual data you need to add +1 to get the sensor string id I saw in that real data set.",
    "2119764": "Good to know. I did notice there was quite a bit of public IceCube data and even a library to interact with it.\n\nI’m on my phone RN, but I’ll try to post links here tomorrow."
  },
  "source": "meta"
}