Working with Instrumental Descriptions

the instrumental description is loaded by the event source, and consists of a hierarchy of classes in the ctapipe.instrument module, the base of which is the SubarrayDescription

[1]:
from ctapipe.utils.datasets import get_dataset_path
from ctapipe.io import EventSource
import numpy as np

filename = get_dataset_path("gamma_prod5.simtel.zst")

with EventSource(filename, max_events=1) as source:
    subarray = source.subarray

the SubarrayDescription:

[2]:
subarray.info()
Subarray : MonteCarloArray
Num Tels : 180
Footprint: 4.92 km2

       Type       Count     Tel IDs
----------------- ----- ---------------
   SST_ASTRI_CHEC   120 30-99,131-180
   LST_LST_LSTCam     4 1-4
 MST_MST_FlashCam    28 5-29,125-127
MST_MST_NectarCam    28 100-124,128-130
[3]:
subarray.to_table()
[3]:
Table length=180
tel_idnametypepos_xpos_ypos_zcamera_nameoptics_namecamera_indexoptics_indextel_description
mmm
int16str5str3float32float32float32str9str5int64int64str17
1LSTLST-20.643-64.81734.3LSTCamLST21LST_LST_LSTCam
2LSTLST79.993996-0.76829.4LSTCamLST21LST_LST_LSTCam
3LSTLST-19.39665.231.0LSTCamLST21LST_LST_LSTCam
4LSTLST-120.0331.15133.1LSTCamLST21LST_LST_LSTCam
5MSTMST-0.017-0.00124.35FlashCamMST12MST_MST_FlashCam
6MSTMST-1.468-151.22131.0FlashCamMST12MST_MST_FlashCam
7MSTMST-3.1379998-325.24539.0FlashCamMST12MST_MST_FlashCam
8MSTMST1.4339999151.2225.0FlashCamMST12MST_MST_FlashCam
9MSTMST3.1039999325.24323.5FlashCamMST12MST_MST_FlashCam
.................................
171ASTRISST260.0920.045.0CHECASTRI00SST_ASTRI_CHEC
172ASTRISST260.0-920.065.0CHECASTRI00SST_ASTRI_CHEC
173ASTRISST-500.0815.015.0CHECASTRI00SST_ASTRI_CHEC
174ASTRISST-500.0-815.075.0CHECASTRI00SST_ASTRI_CHEC
175ASTRISST500.0815.045.0CHECASTRI00SST_ASTRI_CHEC
176ASTRISST500.0-815.053.0CHECASTRI00SST_ASTRI_CHEC
177ASTRISST-810.0655.012.0CHECASTRI00SST_ASTRI_CHEC
178ASTRISST-810.0-655.068.0CHECASTRI00SST_ASTRI_CHEC
179ASTRISST810.0655.020.0CHECASTRI00SST_ASTRI_CHEC
180ASTRISST810.0-655.041.0CHECASTRI00SST_ASTRI_CHEC
[ ]:

You can also get a table of just the OpticsDescriptions (CameraGeometry is more complex and can’t be stored on a single table row, so each one can be converted to a table separately)

[4]:
subarray.to_table(kind="optics")
[4]:
Table length=3
optics_namesize_typereflector_shapemirror_arean_mirrorsn_mirror_tilesequivalent_focal_lengtheffective_focal_length
m2mm
str5str3str20float64int64int64float64float64
ASTRISSTSCHWARZSCHILD_COUDER14.126235008239746222.15000009536743162.1519100666046143
LSTLSTPARABOLIC386.7332458496094119828.029.30565071105957
MSTMSTHYBRID106.241355895996118616.016.445049285888672

Make a sub-array with only SC-type telescopes:

[5]:
sc_tels = [tel_id for tel_id, tel in subarray.tel.items() if tel.optics.n_mirrors == 2]
newsub = subarray.select_subarray(sc_tels, name="SCTels")
newsub.info()
Subarray : SCTels
Num Tels : 120
Footprint: 4.92 km2

     Type      Count    Tel IDs
-------------- ----- -------------
SST_ASTRI_CHEC   120 30-99,131-180

can also do this by using Table.group_by

Explore some of the details of the telescopes

[6]:
tel = subarray.tel[1]
tel
[6]:
TelescopeDescription(type='LST', optics_name='LST', camera_name='LSTCam')
[7]:
tel.optics.mirror_area
[7]:
$386.73325 \; \mathrm{m^{2}}$
[8]:
tel.optics.n_mirror_tiles
[8]:
198
[9]:
tel.optics.equivalent_focal_length
[9]:
$28 \; \mathrm{m}$
[10]:
tel.camera
[10]:
CameraDescription(name=LSTCam, geometry=LSTCam, readout=LSTCam)
[11]:
tel.camera.geometry.pix_x
[11]:
$[0,~-0.037796701,~-0.047245475,~\dots,~0.67088033,~-0.45356484,~-0.50081024] \; \mathrm{m}$
[12]:
%matplotlib inline
from ctapipe.visualization import CameraDisplay

CameraDisplay(tel.camera.geometry)
[12]:
<ctapipe.visualization.mpl_camera.CameraDisplay at 0x7ff756c23040>
../_images/examples_InstrumentDescription_18_1.png
[13]:
CameraDisplay(subarray.tel[98].camera.geometry)
[13]:
<ctapipe.visualization.mpl_camera.CameraDisplay at 0x7ff754e0b040>
../_images/examples_InstrumentDescription_19_1.png

Plot the subarray

We’ll make a subarray by telescope type and plot each separately, so they appear in different colors. We also calculate the radius using the mirror area (and exagerate it a bit).

This is just for debugging and info, for any “real” use, a visualization.ArrayDisplay should be used

[14]:
subarray.peek()
../_images/examples_InstrumentDescription_21_0.png
[15]:
subarray.footprint
[15]:
$4.9234632 \; \mathrm{km^{2}}$

Get info about the subarray in general

[16]:
subarray.telescope_types
[16]:
(TelescopeDescription(type='SST', optics_name='ASTRI', camera_name='CHEC'),
 TelescopeDescription(type='LST', optics_name='LST', camera_name='LSTCam'),
 TelescopeDescription(type='MST', optics_name='MST', camera_name='FlashCam'),
 TelescopeDescription(type='MST', optics_name='MST', camera_name='NectarCam'))
[17]:
subarray.camera_types
[17]:
(CameraDescription(name=CHEC, geometry=CHEC, readout=CHEC),
 CameraDescription(name=FlashCam, geometry=FlashCam, readout=FlashCam),
 CameraDescription(name=LSTCam, geometry=LSTCam, readout=LSTCam),
 CameraDescription(name=NectarCam, geometry=NectarCam, readout=NectarCam))
[18]:
subarray.optics_types
[18]:
(OpticsDescription(name=ASTRI, size_type=SST, reflector_shape=SCHWARZSCHILD_COUDER, equivalent_focal_length=2.15 m, effective_focal_length=2.15 m, n_mirrors=2, mirror_area=14.13 m2),
 OpticsDescription(name=LST, size_type=LST, reflector_shape=PARABOLIC, equivalent_focal_length=28.00 m, effective_focal_length=29.31 m, n_mirrors=1, mirror_area=386.73 m2),
 OpticsDescription(name=MST, size_type=MST, reflector_shape=HYBRID, equivalent_focal_length=16.00 m, effective_focal_length=16.45 m, n_mirrors=1, mirror_area=106.24 m2))
[19]:
from astropy.coordinates import SkyCoord
from ctapipe.coordinates import GroundFrame

center = SkyCoord("10.0 m", "2.0 m", "0.0 m", frame="groundframe")
coords = subarray.tel_coords  # a flat list of coordinates by tel_index
coords.separation(center)
[19]:
[$115^\circ37{}^\prime48.53728809{}^{\prime\prime}$ $23^\circ16{}^\prime48.71368376{}^{\prime\prime}$ $94^\circ46{}^\prime57.06512996{}^{\prime\prime}$ $160^\circ38{}^\prime17.99179741{}^{\prime\prime}$ $90^\circ02{}^\prime22.86896225{}^{\prime\prime}$ $101^\circ37{}^\prime15.59471603{}^{\prime\prime}$ $101^\circ46{}^\prime37.67470941{}^{\prime\prime}$ $78^\circ18{}^\prime27.84261148{}^{\prime\prime}$ $78^\circ10{}^\prime28.36657617{}^{\prime\prime}$ $45^\circ27{}^\prime35.97543537{}^{\prime\prime}$ $16^\circ59{}^\prime24.86749269{}^{\prime\prime}$ $39^\circ58{}^\prime36.5305221{}^{\prime\prime}$ $69^\circ06{}^\prime00.41200774{}^{\prime\prime}$ $110^\circ55{}^\prime43.84261342{}^{\prime\prime}$ $139^\circ53{}^\prime52.10746639{}^{\prime\prime}$ $161^\circ53{}^\prime57.44575812{}^{\prime\prime}$ $134^\circ14{}^\prime04.61794311{}^{\prime\prime}$ $45^\circ19{}^\prime31.8677554{}^{\prime\prime}$ $15^\circ41{}^\prime09.62278432{}^{\prime\prime}$ $12^\circ23{}^\prime30.02446134{}^{\prime\prime}$ $39^\circ16{}^\prime01.93418447{}^{\prime\prime}$ $69^\circ02{}^\prime23.91555142{}^{\prime\prime}$ $111^\circ01{}^\prime02.98397763{}^{\prime\prime}$ $140^\circ35{}^\prime18.81775813{}^{\prime\prime}$ $166^\circ57{}^\prime33.12823197{}^{\prime\prime}$ $163^\circ35{}^\prime33.54325283{}^{\prime\prime}$ $134^\circ29{}^\prime00.15614806{}^{\prime\prime}$ $11^\circ55{}^\prime58.302677{}^{\prime\prime}$ $167^\circ37{}^\prime52.38371474{}^{\prime\prime}$ $26^\circ01{}^\prime54.63781737{}^{\prime\prime}$ $49^\circ42{}^\prime53.3573094{}^{\prime\prime}$ $130^\circ15{}^\prime08.98906098{}^{\prime\prime}$ $153^\circ27{}^\prime53.98923833{}^{\prime\prime}$ $56^\circ58{}^\prime06.54760364{}^{\prime\prime}$ $80^\circ40{}^\prime58.98009562{}^{\prime\prime}$ $99^\circ20{}^\prime36.68467668{}^{\prime\prime}$ $122^\circ54{}^\prime22.08156543{}^{\prime\prime}$ $78^\circ08{}^\prime42.65380699{}^{\prime\prime}$ $101^\circ49{}^\prime26.16909516{}^{\prime\prime}$ $34^\circ01{}^\prime48.4871336{}^{\prime\prime}$ $57^\circ46{}^\prime41.25947597{}^{\prime\prime}$ $122^\circ15{}^\prime35.5320416{}^{\prime\prime}$ $145^\circ39{}^\prime14.42191405{}^{\prime\prime}$ $1^\circ14{}^\prime54.5162229{}^{\prime\prime}$ $24^\circ26{}^\prime06.70955766{}^{\prime\prime}$ $155^\circ24{}^\prime16.53048746{}^{\prime\prime}$ $176^\circ30{}^\prime58.85678108{}^{\prime\prime}$ $78^\circ08{}^\prime35.43447641{}^{\prime\prime}$ $101^\circ49{}^\prime13.04461153{}^{\prime\prime}$ $15^\circ25{}^\prime15.9893754{}^{\prime\prime}$ $39^\circ07{}^\prime10.57205245{}^{\prime\prime}$ $140^\circ50{}^\prime37.19773001{}^{\prime\prime}$ $164^\circ04{}^\prime49.92718766{}^{\prime\prime}$ $45^\circ17{}^\prime39.84001018{}^{\prime\prime}$ $69^\circ00{}^\prime41.87664707{}^{\prime\prime}$ $111^\circ01{}^\prime39.52843975{}^{\prime\prime}$ $134^\circ31{}^\prime54.15211982{}^{\prime\prime}$ $11^\circ51{}^\prime48.04299327{}^{\prime\prime}$ $167^\circ57{}^\prime00.7607586{}^{\prime\prime}$ $62^\circ40{}^\prime06.90027025{}^{\prime\prime}$ $86^\circ22{}^\prime57.30949883{}^{\prime\prime}$ $93^\circ37{}^\prime39.95895171{}^{\prime\prime}$ $117^\circ14{}^\prime49.7522144{}^{\prime\prime}$ $78^\circ08{}^\prime46.65029204{}^{\prime\prime}$ $101^\circ49{}^\prime21.94647892{}^{\prime\prime}$ $28^\circ49{}^\prime16.21053425{}^{\prime\prime}$ $52^\circ34{}^\prime56.22025098{}^{\prime\prime}$ $127^\circ28{}^\prime14.89982613{}^{\prime\prime}$ $150^\circ53{}^\prime43.36851833{}^{\prime\prime}$ $2^\circ37{}^\prime25.28096743{}^{\prime\prime}$ $26^\circ19{}^\prime10.19296874{}^{\prime\prime}$ $153^\circ38{}^\prime45.55173649{}^{\prime\prime}$ $176^\circ17{}^\prime30.67883187{}^{\prime\prime}$ $15^\circ25{}^\prime49.43804438{}^{\prime\prime}$ $39^\circ09{}^\prime24.17330046{}^{\prime\prime}$ $140^\circ51{}^\prime45.78771005{}^{\prime\prime}$ $164^\circ14{}^\prime51.16830131{}^{\prime\prime}$ $52^\circ19{}^\prime45.41515578{}^{\prime\prime}$ $76^\circ00{}^\prime54.35432629{}^{\prime\prime}$ $104^\circ00{}^\prime40.3191603{}^{\prime\prime}$ $127^\circ35{}^\prime18.49132396{}^{\prime\prime}$ $38^\circ28{}^\prime24.20830686{}^{\prime\prime}$ $62^\circ09{}^\prime24.90488478{}^{\prime\prime}$ $117^\circ52{}^\prime38.73247866{}^{\prime\prime}$ $141^\circ23{}^\prime18.86339205{}^{\prime\prime}$ $11^\circ51{}^\prime40.55787668{}^{\prime\prime}$ $168^\circ03{}^\prime13.67455894{}^{\prime\prime}$ $66^\circ00{}^\prime25.50011034{}^{\prime\prime}$ $89^\circ41{}^\prime49.40711649{}^{\prime\prime}$ $90^\circ14{}^\prime45.66080857{}^{\prime\prime}$ $113^\circ56{}^\prime46.48499003{}^{\prime\prime}$ $25^\circ52{}^\prime55.46889846{}^{\prime\prime}$ $49^\circ36{}^\prime25.53139002{}^{\prime\prime}$ $130^\circ25{}^\prime28.16246205{}^{\prime\prime}$ $153^\circ52{}^\prime16.80179427{}^{\prime\prime}$ $5^\circ18{}^\prime28.02210585{}^{\prime\prime}$ $29^\circ01{}^\prime06.88086914{}^{\prime\prime}$ $150^\circ59{}^\prime18.82490611{}^{\prime\prime}$ $174^\circ17{}^\prime23.56686487{}^{\prime\prime}$ $90^\circ02{}^\prime22.86896225{}^{\prime\prime}$ $101^\circ37{}^\prime15.59471603{}^{\prime\prime}$ $101^\circ46{}^\prime37.67470941{}^{\prime\prime}$ $78^\circ18{}^\prime27.84261148{}^{\prime\prime}$ $78^\circ10{}^\prime28.36657617{}^{\prime\prime}$ $45^\circ27{}^\prime35.97543537{}^{\prime\prime}$ $16^\circ59{}^\prime24.86749269{}^{\prime\prime}$ $39^\circ58{}^\prime36.5305221{}^{\prime\prime}$ $69^\circ06{}^\prime00.41200774{}^{\prime\prime}$ $110^\circ55{}^\prime43.84261342{}^{\prime\prime}$ $139^\circ53{}^\prime52.10746639{}^{\prime\prime}$ $161^\circ53{}^\prime57.44575812{}^{\prime\prime}$ $134^\circ14{}^\prime04.61794311{}^{\prime\prime}$ $45^\circ19{}^\prime31.8677554{}^{\prime\prime}$ $15^\circ41{}^\prime09.62278432{}^{\prime\prime}$ $12^\circ23{}^\prime30.02446134{}^{\prime\prime}$ $39^\circ16{}^\prime01.93418447{}^{\prime\prime}$ $69^\circ02{}^\prime23.91555142{}^{\prime\prime}$ $111^\circ01{}^\prime02.98397763{}^{\prime\prime}$ $140^\circ35{}^\prime18.81775813{}^{\prime\prime}$ $166^\circ57{}^\prime33.12823197{}^{\prime\prime}$ $163^\circ35{}^\prime33.54325283{}^{\prime\prime}$ $134^\circ29{}^\prime00.15614806{}^{\prime\prime}$ $11^\circ55{}^\prime58.302677{}^{\prime\prime}$ $167^\circ37{}^\prime52.38371474{}^{\prime\prime}$ $136^\circ57{}^\prime45.95755748{}^{\prime\prime}$ $135^\circ07{}^\prime08.42537213{}^{\prime\prime}$ $144^\circ03{}^\prime07.34583759{}^{\prime\prime}$ $136^\circ57{}^\prime45.95755748{}^{\prime\prime}$ $135^\circ07{}^\prime08.42537213{}^{\prime\prime}$ $144^\circ03{}^\prime07.34583759{}^{\prime\prime}$ $12^\circ21{}^\prime10.63672941{}^{\prime\prime}$ $11^\circ49{}^\prime31.42733953{}^{\prime\prime}$ $14^\circ26{}^\prime28.56626411{}^{\prime\prime}$ $117^\circ32{}^\prime31.4678604{}^{\prime\prime}$ $16^\circ04{}^\prime14.73718876{}^{\prime\prime}$ $62^\circ57{}^\prime07.77000849{}^{\prime\prime}$ $78^\circ42{}^\prime38.29587693{}^{\prime\prime}$ $101^\circ14{}^\prime22.04343375{}^{\prime\prime}$ $118^\circ48{}^\prime09.35939992{}^{\prime\prime}$ $141^\circ08{}^\prime27.59692398{}^{\prime\prime}$ $38^\circ36{}^\prime57.36221721{}^{\prime\prime}$ $61^\circ14{}^\prime04.57040488{}^{\prime\prime}$ $104^\circ39{}^\prime08.29781247{}^{\prime\prime}$ $127^\circ08{}^\prime29.11683192{}^{\prime\prime}$ $52^\circ44{}^\prime50.28926073{}^{\prime\prime}$ $75^\circ22{}^\prime30.28675274{}^{\prime\prime}$ $154^\circ17{}^\prime04.33890125{}^{\prime\prime}$ $175^\circ51{}^\prime30.60324792{}^{\prime\prime}$ $3^\circ07{}^\prime40.20738999{}^{\prime\prime}$ $25^\circ40{}^\prime46.72611271{}^{\prime\prime}$ $155^\circ31{}^\prime05.76852749{}^{\prime\prime}$ $177^\circ07{}^\prime48.37033358{}^{\prime\prime}$ $1^\circ51{}^\prime33.76315166{}^{\prime\prime}$ $24^\circ28{}^\prime05.09034799{}^{\prime\prime}$ $168^\circ33{}^\prime14.25941047{}^{\prime\prime}$ $11^\circ18{}^\prime49.45565605{}^{\prime\prime}$ $89^\circ48{}^\prime50.06947064{}^{\prime\prime}$ $112^\circ43{}^\prime37.64931806{}^{\prime\prime}$ $67^\circ11{}^\prime56.82656885{}^{\prime\prime}$ $90^\circ11{}^\prime11.75785172{}^{\prime\prime}$ $125^\circ45{}^\prime46.14049369{}^{\prime\prime}$ $148^\circ07{}^\prime09.66819251{}^{\prime\prime}$ $31^\circ38{}^\prime07.22086606{}^{\prime\prime}$ $54^\circ16{}^\prime21.09751607{}^{\prime\prime}$ $143^\circ36{}^\prime39.3424254{}^{\prime\prime}$ $165^\circ48{}^\prime19.81864969{}^{\prime\prime}$ $13^\circ45{}^\prime49.96366223{}^{\prime\prime}$ $36^\circ22{}^\prime59.16585{}^{\prime\prime}$ $94^\circ28{}^\prime09.44371894{}^{\prime\prime}$ $117^\circ00{}^\prime03.42456501{}^{\prime\prime}$ $62^\circ56{}^\prime30.19964872{}^{\prime\prime}$ $85^\circ32{}^\prime22.19145376{}^{\prime\prime}$ $110^\circ12{}^\prime59.25351694{}^{\prime\prime}$ $132^\circ40{}^\prime35.18429669{}^{\prime\prime}$ $47^\circ13{}^\prime11.25823017{}^{\prime\prime}$ $69^\circ48{}^\prime47.82814446{}^{\prime\prime}$ $129^\circ43{}^\prime35.22132347{}^{\prime\prime}$ $152^\circ07{}^\prime05.15361244{}^{\prime\prime}$ $27^\circ40{}^\prime14.4110196{}^{\prime\prime}$ $50^\circ18{}^\prime25.99569671{}^{\prime\prime}$]

Telescope IDs vs Indices

Note that subarray.tel is a dict mapped by tel_id (the indentifying number of a telescope). It is possible to have telescope IDs that do not start at 0, are not contiguouous (e.g. if a subarray is selected). Some functions and properties like tel_coords are numpy arrays (not dicts) so they are not mapped to the telescope ID, but rather the index within this SubarrayDescription. To convert between the two concepts you can do:

[20]:
subarray.tel_ids_to_indices([1, 5, 23])
[20]:
array([ 0,  4, 22])

or you can get the indexing array directly in numpy or dict form:

[21]:
subarray.tel_index_array
[21]:
array([ -1,   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,
        12,  13,  14,  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,
        25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,
        38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,
        51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,
        77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
        90,  91,  92,  93,  94,  95,  96,  97,  98,  99, 100, 101, 102,
       103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
       116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
       129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
       142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
       155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
       168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179])
[22]:
subarray.tel_index_array[[1, 5, 23]]
[22]:
array([ 0,  4, 22])
[23]:
subarray.tel_indices[
    1
]  # this is a dict of tel_id -> tel_index, so we can only do one at once
[23]:
0
[24]:
ids = subarray.get_tel_ids_for_type(subarray.telescope_types[0])
ids
[24]:
(30,
 31,
 32,
 33,
 34,
 35,
 36,
 37,
 38,
 39,
 40,
 41,
 42,
 43,
 44,
 45,
 46,
 47,
 48,
 49,
 50,
 51,
 52,
 53,
 54,
 55,
 56,
 57,
 58,
 59,
 60,
 61,
 62,
 63,
 64,
 65,
 66,
 67,
 68,
 69,
 70,
 71,
 72,
 73,
 74,
 75,
 76,
 77,
 78,
 79,
 80,
 81,
 82,
 83,
 84,
 85,
 86,
 87,
 88,
 89,
 90,
 91,
 92,
 93,
 94,
 95,
 96,
 97,
 98,
 99,
 131,
 132,
 133,
 134,
 135,
 136,
 137,
 138,
 139,
 140,
 141,
 142,
 143,
 144,
 145,
 146,
 147,
 148,
 149,
 150,
 151,
 152,
 153,
 154,
 155,
 156,
 157,
 158,
 159,
 160,
 161,
 162,
 163,
 164,
 165,
 166,
 167,
 168,
 169,
 170,
 171,
 172,
 173,
 174,
 175,
 176,
 177,
 178,
 179,
 180)
[25]:
idx = subarray.tel_ids_to_indices(ids)
idx
[25]:
array([ 29,  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,
        42,  43,  44,  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,
        55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,
        68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,
        81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,
        94,  95,  96,  97,  98, 130, 131, 132, 133, 134, 135, 136, 137,
       138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
       151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
       164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
       177, 178, 179])
[26]:
subarray.tel_coords[idx]
[26]:
<SkyCoord (GroundFrame): (x, y, z) in m
    [(  207.036  ,   156.949    , 14.25),
     (  203.986  ,  -160.894    , 19.75),
     ( -204.02   ,   160.893    , 22.25),
     ( -207.07   ,  -156.95     , 28.25),
     (  168.88199,   423.275    , 18.25),
     (  160.729  ,  -426.44     , 33.25),
     ( -160.76201,   426.43802  , 10.25),
     ( -168.916  ,  -423.27698  , 42.25),
     (    4.972  ,   519.86896  , 11.75),
     (   -5.006  ,  -519.87103  , 41.25),
     (  395.51   ,   399.996    , 11.25),
     (  387.762  ,  -407.513    , 28.25),
     ( -387.795  ,   407.512    , 13.25),
     ( -395.545  ,  -399.99698  , 50.25),
     (  495.605  ,   105.269005 ,  9.25),
     (  493.494  ,  -114.760994 , 11.75),
     ( -493.528  ,   114.76     , 28.25),
     ( -495.64   ,  -105.269005 , 30.25),
     (    6.927  ,   723.596    , 11.75),
     (   -6.961  ,  -723.599    , 59.75),
     (  621.223  ,   312.711    ,  7.25),
     (  615.114  ,  -324.075    , 19.25),
     ( -615.14197,   324.575    , 19.75),
     ( -621.259  ,  -312.711    , 49.25),
     (  441.802  ,   669.11206  , 30.25),
     (  428.882  ,  -677.47     , 47.25),
     ( -428.91397,   677.46704  ,  7.25),
     ( -441.838  ,  -669.114    , 70.25),
     (  820.094  ,    -7.8690004,  4.25),
     ( -820.128  ,     7.87     , 30.75),
     (  228.46   ,   794.887    , 25.25),
     (  213.165  ,  -799.128    , 56.25),
     ( -213.19801,   799.125    , 10.25),
     ( -228.495  ,  -794.89     , 68.25),
     (    9.046  ,   944.425    , 27.25),
     (   -9.08   ,  -944.43     , 75.25),
     (  668.034  ,   562.918    , 13.25),
     (  657.111  ,  -575.635    , 43.25),
     ( -657.142  ,   575.635    ,  8.25),
     ( -668.07   ,  -562.919    , 66.25),
     (  885.687  ,   219.253    ,  6.25),
     (  881.318  ,  -236.20801  ,  9.25),
     ( -881.35   ,   236.21     , 24.25),
     ( -885.72205,  -219.252    , 42.25),
     (  920.53705,   463.474    , 12.75),
     (  911.476  ,  -481.054    , 26.25),
     ( -911.507  ,   481.054    , 11.25),
     ( -920.574  ,  -463.47302  , 59.25),
     (  480.36603,   966.80896  , 56.25),
     (  461.727  ,  -975.85297  , 65.75),
     ( -461.758  ,   975.849    , 16.75),
     ( -480.403  ,  -966.813    , 87.25),
     (  714.73206,   843.133    , 49.25),
     (  698.425  ,  -856.69604  , 53.75),
     ( -698.455  ,   856.694    , 14.75),
     ( -714.77   ,  -843.135    , 84.75),
     ( 1100.131  ,   -10.556    ,  3.75),
     (-1100.165  ,    10.558001 , 27.75),
     (  249.865  ,  1107.552    , 55.25),
     (  228.566  , -1112.148    , 77.75),
     ( -227.39801,  1112.131    , 25.25),
     ( -249.9    , -1107.557    , 89.25),
     (  964.01   ,   730.71704  , 27.25),
     (  949.81396,  -749.08295  , 46.25),
     ( -949.844  ,   749.08203  , 17.25),
     ( -964.048  ,  -730.71704  , 83.25),
     ( 1199.684  ,   357.573    , 10.25),
     ( 1192.605  ,  -380.52698  , 19.25),
     (-1192.635  ,   380.53     , 12.75),
     (-1199.7211 ,  -357.57     , 47.25),
     ( 1100.131  ,   -20.       ,  3.75),
     (  880.094  ,    -7.8690004,  4.25),
     (  785.     ,   -42.9      ,  4.25),
     ( -228.495  ,  -779.49896  , 68.25),
     (  910.     ,   471.       , 12.75),
     (  228.46   ,   810.       , 25.25),
     (   -0.     ,   350.       , 21.  ),
     (    0.     ,  -350.       , 39.  ),
     ( -270.     ,   320.       , 22.  ),
     ( -270.     ,  -320.       , 40.  ),
     (  270.     ,   320.       , 20.  ),
     (  270.     ,  -320.       , 30.  ),
     ( -280.     ,   575.       , 10.  ),
     ( -280.     ,  -575.00104  , 50.  ),
     (  280.     ,   575.       , 20.  ),
     (  280.     ,  -575.       , 40.  ),
     ( -685.     ,   175.       , 25.  ),
     ( -685.     ,  -175.       , 35.  ),
     (  685.     ,   175.       , 10.  ),
     (  685.     ,  -175.       , 18.  ),
     (-1070.     ,   250.       , 20.  ),
     (-1070.     ,  -250.       , 42.25),
     ( 1070.     ,   250.       ,  5.  ),
     ( 1070.     ,  -250.       , 11.75),
     ( -970.     ,    -0.       , 30.  ),
     (  970.     ,    -0.       ,  5.  ),
     (  120.     ,  -590.00104  , 45.  ),
     ( -120.     ,  -590.       , 49.  ),
     (  120.     ,   590.       , 13.  ),
     ( -120.     ,   590.       , 11.  ),
     ( -500.     ,   465.       , 10.  ),
     ( -500.     ,  -465.       , 52.  ),
     (  500.     ,   465.       , 15.  ),
     (  500.     ,  -465.       , 30.  ),
     ( -770.     ,   360.       , 20.  ),
     ( -770.     ,  -360.       , 53.  ),
     (  770.     ,   360.       , 10.  ),
     (  770.     ,  -360.       , 17.  ),
     ( -260.     ,   920.       , 25.  ),
     ( -260.     ,  -920.       , 75.  ),
     (  260.     ,   920.       , 45.  ),
     (  260.     ,  -920.       , 65.  ),
     ( -500.     ,   815.       , 15.  ),
     ( -500.     ,  -815.       , 75.  ),
     (  500.     ,   815.       , 45.  ),
     (  500.     ,  -815.       , 53.  ),
     ( -810.     ,   655.       , 12.  ),
     ( -810.     ,  -655.       , 68.  ),
     (  810.     ,   655.       , 20.  ),
     (  810.     ,  -655.       , 41.  )]>

so, with that method you can quickly get many telescope positions at once (the alternative is to use the dict positions which maps tel_id to a position on the ground

[27]:
subarray.positions[1]
[27]:
$[-20.643,~-64.817001,~34.299999] \; \mathrm{m}$