| 1 | /* ======================================================================== *\
 | 
|---|
| 2 | !
 | 
|---|
| 3 | ! *
 | 
|---|
| 4 | ! * This file is part of MARS, the MAGIC Analysis and Reconstruction
 | 
|---|
| 5 | ! * Software. It is distributed to you in the hope that it can be a useful
 | 
|---|
| 6 | ! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
 | 
|---|
| 7 | ! * It is distributed WITHOUT ANY WARRANTY.
 | 
|---|
| 8 | ! *
 | 
|---|
| 9 | ! * Permission to use, copy, modify and distribute this software and its
 | 
|---|
| 10 | ! * documentation for any purpose is hereby granted without fee,
 | 
|---|
| 11 | ! * provided that the above copyright notice appear in all copies and
 | 
|---|
| 12 | ! * that both that copyright notice and this permission notice appear
 | 
|---|
| 13 | ! * in supporting documentation. It is provided "as is" without express
 | 
|---|
| 14 | ! * or implied warranty.
 | 
|---|
| 15 | ! *
 | 
|---|
| 16 | !
 | 
|---|
| 17 | !
 | 
|---|
| 18 | !   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@astro.uni-wuerzburg.de>
 | 
|---|
| 19 | !   Author(s): Harald Kornmayer 1/2001
 | 
|---|
| 20 | !
 | 
|---|
| 21 | !   Copyright: MAGIC Software Development, 2000-2008
 | 
|---|
| 22 | !
 | 
|---|
| 23 | !
 | 
|---|
| 24 | \* ======================================================================== */
 | 
|---|
| 25 | 
 | 
|---|
| 26 | /////////////////////////////////////////////////////////////////////////////
 | 
|---|
| 27 | //
 | 
|---|
| 28 | // MGeomCamMagic
 | 
|---|
| 29 | //
 | 
|---|
| 30 | // This class stores the geometry information of the Magic camera.
 | 
|---|
| 31 | // All information are copied from tables, see source code.
 | 
|---|
| 32 | //
 | 
|---|
| 33 | ////////////////////////////////////////////////////////////////////////////
 | 
|---|
| 34 | #include "MGeomCamMagic.h"
 | 
|---|
| 35 | 
 | 
|---|
| 36 | #include <TMath.h>
 | 
|---|
| 37 | 
 | 
|---|
| 38 | #include "MGeomPix.h"
 | 
|---|
| 39 | 
 | 
|---|
| 40 | ClassImp(MGeomCamMagic);
 | 
|---|
| 41 | 
 | 
|---|
| 42 | // --------------------------------------------------------------------------
 | 
|---|
| 43 | //
 | 
|---|
| 44 | //  Magic camera has 577 pixels. For geometry and Next Neighbor info see
 | 
|---|
| 45 | //  CreateCam and CreateNN
 | 
|---|
| 46 | //
 | 
|---|
| 47 | MGeomCamMagic::MGeomCamMagic(const char *name)
 | 
|---|
| 48 |     : MGeomCam(577, 17, name, "Geometry information of Magic Camera")
 | 
|---|
| 49 | {
 | 
|---|
| 50 |     CreateCam();
 | 
|---|
| 51 |     InitGeometry();
 | 
|---|
| 52 | }
 | 
|---|
| 53 | 
 | 
|---|
| 54 | // --------------------------------------------------------------------------
 | 
|---|
| 55 | //
 | 
|---|
| 56 | //  Magic camera has 577 pixels. For geometry and Next Neighbor info see
 | 
|---|
| 57 | //  CreateCam and CreateNN. You can give the distance dist from
 | 
|---|
| 58 | //  the mirror center to the focal plane.
 | 
|---|
| 59 | //
 | 
|---|
| 60 | MGeomCamMagic::MGeomCamMagic(Double_t dist, const char *name)
 | 
|---|
| 61 |     : MGeomCam(577, dist, name, "Geometry information of Magic Camera")
 | 
|---|
| 62 | {
 | 
|---|
| 63 |     CreateCam();
 | 
|---|
| 64 |     InitGeometry();
 | 
|---|
| 65 | }
 | 
|---|
| 66 | 
 | 
|---|
| 67 | // --------------------------------------------------------------------------
 | 
|---|
| 68 | //
 | 
|---|
| 69 | // Check if the photon which is flying along the trajectory u has passed
 | 
|---|
| 70 | // (or will pass) the frame of the camera (and consequently get
 | 
|---|
| 71 | // absorbed). The position p and direction u must be in the
 | 
|---|
| 72 | // telescope coordinate frame, which is z parallel to the focal plane,
 | 
|---|
| 73 | // x to the right and y upwards, looking from the mirror towards the camera.
 | 
|---|
| 74 | //
 | 
|---|
| 75 | Bool_t MGeomCamMagic::HitFrame(MQuaternion p, const MQuaternion &u) const
 | 
|---|
| 76 | {
 | 
|---|
| 77 |     // z is defined from the mirror (0) to the camera (z>0).
 | 
|---|
| 78 |     // Thus we just propagate to the focal plane (z=fDist)
 | 
|---|
| 79 |     p.PropagateZ(u, GetCameraDist()*100);
 | 
|---|
| 80 | 
 | 
|---|
| 81 |     return TMath::Abs(p.X())<65 && TMath::Abs(p.Y())<65;
 | 
|---|
| 82 | }
 | 
|---|
| 83 | 
 | 
|---|
| 84 | // --------------------------------------------------------------------------
 | 
|---|
| 85 | //
 | 
|---|
| 86 | //  This fills the geometry information from a table into the pixel objects.
 | 
|---|
| 87 | //
 | 
|---|
| 88 | void MGeomCamMagic::CreateCam()
 | 
|---|
| 89 | {
 | 
|---|
| 90 |     //
 | 
|---|
| 91 |     //   fill the geometry class with the coordinates of the MAGIC camera
 | 
|---|
| 92 |     //
 | 
|---|
| 93 |     //*fLog << inf << " Creating Magic geometry " << endl ;
 | 
|---|
| 94 | 
 | 
|---|
| 95 |     //
 | 
|---|
| 96 |     //   here define the hardwire things of the magic telescope
 | 
|---|
| 97 |     //
 | 
|---|
| 98 |     const Float_t xtemp[577] = {
 | 
|---|
| 99 |         +000.000,   30.000,   15.000,  -15.000,  -30.000,  -15.000,   15.000,   60.000,  //   0
 | 
|---|
| 100 |         +045.000,   30.000,    0.000,  -30.000,  -45.000,  -60.000,  -45.000,  -30.000,  //   8
 | 
|---|
| 101 |         +000.000,   30.000,   45.000,   90.000,   75.000,   60.000,   45.000,   15.000,  //  16
 | 
|---|
| 102 |         -015.000,  -45.000,  -60.000,  -75.000,  -90.000,  -75.000,  -60.000,  -45.000,  //  24
 | 
|---|
| 103 |         -015.000,   15.000,   45.000,   60.000,   75.000,  120.000,  105.000,   90.000,  //  32
 | 
|---|
| 104 |         +075.000,   60.000,   30.000,    0.000,  -30.000,  -60.000,  -75.000,  -90.000,  //  40
 | 
|---|
| 105 |         -105.000, -120.000, -105.000,  -90.000,  -75.000,  -60.000,  -30.000,    0.000,  //  48
 | 
|---|
| 106 |         +030.000,   60.000,   75.000,   90.000,  105.000,  150.000,  135.000,  120.000,  //  56
 | 
|---|
| 107 |         +105.000,   90.000,   75.000,   45.000,   15.000,  -15.000,  -45.000,  -75.000,  //  64
 | 
|---|
| 108 |         -090.000, -105.000, -120.000, -135.000, -150.000, -135.000, -120.000, -105.000,  //  72
 | 
|---|
| 109 |         -090.000,  -75.000,  -45.000,  -15.000,   15.000,   45.000,   75.000,   90.000,  //  80
 | 
|---|
| 110 |         +105.000,  120.000,  135.000,  180.000,  165.000,  150.000,  135.000,  120.000,  //  88
 | 
|---|
| 111 |         +105.000,   90.000,   60.000,   30.000,    0.000,  -30.000,  -60.000,  -90.000,  //  96
 | 
|---|
| 112 |         -105.000, -120.000, -135.000, -150.000, -165.000, -180.000, -165.000, -150.000,  // 104
 | 
|---|
| 113 |         -135.000, -120.000, -105.000,  -90.000,  -60.000,  -30.000,    0.000,   30.000,  // 112
 | 
|---|
| 114 |         +060.000,   90.000,  105.000,  120.000,  135.000,  150.000,  165.000,  210.000,  // 120
 | 
|---|
| 115 |         +195.000,  180.000,  165.000,  150.000,  135.000,  120.000,  105.000,   75.000,  // 128
 | 
|---|
| 116 |         +045.000,   15.000,  -15.000,  -45.000,  -75.000, -105.000, -120.000, -135.000,  // 136
 | 
|---|
| 117 |         -150.000, -165.000, -180.000, -195.000, -210.000, -195.000, -180.000, -165.000,  // 144
 | 
|---|
| 118 |         -150.000, -135.000, -120.000, -105.000,  -75.000,  -45.000,  -15.000,   15.000,  // 152
 | 
|---|
| 119 |         +045.000,   75.000,  105.000,  120.000,  135.000,  150.000,  165.000,  180.000,  // 160
 | 
|---|
| 120 |         +195.000,  240.000,  225.000,  210.000,  195.000,  180.000,  165.000,  150.000,  // 168
 | 
|---|
| 121 |         +135.000,  120.000,   90.000,   60.000,   30.000,    0.000,  -30.000,  -60.000,  // 176
 | 
|---|
| 122 |         -090.000, -120.000, -135.000, -150.000, -165.000, -180.000, -195.000, -210.000,  // 184
 | 
|---|
| 123 |         -225.000, -240.000, -225.000, -210.000, -195.000, -180.000, -165.000, -150.000,  // 192
 | 
|---|
| 124 |         -135.000, -120.000,  -90.000,  -60.000,  -30.000,    0.000,   30.000,   60.000,  // 200
 | 
|---|
| 125 |         +090.000,  120.000,  135.000,  150.000,  165.000,  180.000,  195.000,  210.000,  // 208
 | 
|---|
| 126 |         +225.000,  270.000,  255.000,  240.000,  225.000,  210.000,  195.000,  180.000,  // 216
 | 
|---|
| 127 |         +165.000,  150.000,  135.000,  105.000,   75.000,   45.000,   15.000,  -15.000,  // 224
 | 
|---|
| 128 |         -045.000,  -75.000, -105.000, -135.000, -150.000, -165.000, -180.000, -195.000,  // 232
 | 
|---|
| 129 |         -210.000, -225.000, -240.000, -255.000, -270.000, -255.000, -240.000, -225.000,  // 240
 | 
|---|
| 130 |         -210.000, -195.000, -180.000, -165.000, -150.000, -135.000, -105.000,  -75.000,  // 248
 | 
|---|
| 131 |         -045.000,  -15.000,   15.000,   45.000,   75.000,  105.000,  135.000,  150.000,  // 256
 | 
|---|
| 132 |         +165.000,  180.000,  195.000,  210.000,  225.000,  240.000,  255.000,  300.000,  // 264
 | 
|---|
| 133 |         +285.000,  270.000,  255.000,  240.000,  225.000,  210.000,  195.000,  180.000,  // 272
 | 
|---|
| 134 |         +165.000,  150.000,  120.000,   90.000,   60.000,   30.000,    0.000,  -30.000,  // 280
 | 
|---|
| 135 |         -060.000,  -90.000, -120.000, -150.000, -165.000, -180.000, -195.000, -210.000,  // 288
 | 
|---|
| 136 |         -225.000, -240.000, -255.000, -270.000, -285.000, -300.000, -285.000, -270.000,  // 296
 | 
|---|
| 137 |         -255.000, -240.000, -225.000, -210.000, -195.000, -180.000, -165.000, -150.000,  // 304
 | 
|---|
| 138 |         -120.000,  -90.000,  -60.000,  -30.000,    0.000,   30.000,   60.000,   90.000,  // 312
 | 
|---|
| 139 |         +120.000,  150.000,  165.000,  180.000,  195.000,  210.000,  225.000,  240.000,  // 320
 | 
|---|
| 140 |         +255.000,  270.000,  285.000,  330.000,  315.000,  300.000,  285.000,  270.000,  // 328
 | 
|---|
| 141 |         +255.000,  240.000,  225.000,  210.000,  195.000,  180.000,  165.000,  135.000,  // 336
 | 
|---|
| 142 |         +105.000,   75.000,   45.000,   15.000,  -15.000,  -45.000,  -75.000, -105.000,  // 344
 | 
|---|
| 143 |         -135.000, -165.000, -180.000, -195.000, -210.000, -225.000, -240.000, -255.000,  // 352
 | 
|---|
| 144 |         -270.000, -285.000, -300.000, -315.000, -330.000, -315.000, -300.000, -285.000,  // 360
 | 
|---|
| 145 |         -270.000, -255.000, -240.000, -225.000, -210.000, -195.000, -180.000, -165.000,  // 368
 | 
|---|
| 146 |         -135.000, -105.000,  -75.000,  -45.000,  -15.000,   15.000,   45.000,   75.000,  // 376
 | 
|---|
| 147 |         +105.000,  135.000,  165.000,  180.000,  195.000,  210.000,  225.000,  240.000,  // 384
 | 
|---|
| 148 |         +255.000,  270.000,  285.000,  300.000,  315.000,  360.000,  330.000,  300.000,  // 392
 | 
|---|
| 149 |         +270.000,  240.000,  210.000,  150.000,   90.000,   30.000,  -30.000,  -90.000,  // 400
 | 
|---|
| 150 |         -150.000, -210.000, -240.000, -270.000, -300.000, -330.000, -360.000, -360.000,  // 408
 | 
|---|
| 151 |         -330.000, -300.000, -270.000, -240.000, -210.000, -150.000,  -90.000,  -30.000,  // 416
 | 
|---|
| 152 |         +030.000,   90.000,  150.000,  210.000,  240.000,  270.000,  300.000,  330.000,  // 424
 | 
|---|
| 153 |         +360.000,  420.000,  390.000,  360.000,  330.000,  300.000,  270.000,  240.000,  // 432
 | 
|---|
| 154 |         +180.000,  120.000,   60.000,    0.000,  -60.000, -120.000, -180.000, -240.000,  // 440
 | 
|---|
| 155 |         -270.000, -300.000, -330.000, -360.000, -390.000, -420.000, -420.000, -390.000,  // 448
 | 
|---|
| 156 |         -360.000, -330.000, -300.000, -270.000, -240.000, -180.000, -120.000,  -60.000,  // 456
 | 
|---|
| 157 |         +000.000,   60.000,  120.000,  180.000,  240.000,  270.000,  300.000,  330.000,  // 464
 | 
|---|
| 158 |         +360.000,  390.000,  420.000,  480.000,  450.000,  420.000,  390.000,  360.000,  // 472
 | 
|---|
| 159 |         +330.000,  300.000,  270.000,  210.000,  150.000,   90.000,   30.000,  -30.000,  // 480
 | 
|---|
| 160 |         -090.000, -150.000, -210.000, -270.000, -300.000, -330.000, -360.000, -390.000,  // 488
 | 
|---|
| 161 |         -420.000, -450.000, -480.000, -480.000, -450.000, -420.000, -390.000, -360.000,  // 496
 | 
|---|
| 162 |         -330.000, -300.000, -270.000, -210.000, -150.000,  -90.000,  -30.000,   30.000,  // 504
 | 
|---|
| 163 |         +090.000,  150.000,  210.000,  270.000,  300.000,  330.000,  360.000,  390.000,  // 512
 | 
|---|
| 164 |         +420.000,  450.000,  480.000,  540.000,  510.000,  480.000,  450.000,  420.000,  // 520
 | 
|---|
| 165 |         +390.000,  360.000,  330.000,  300.000,  240.000,  180.000,  120.000,   60.000,  // 528
 | 
|---|
| 166 |         +000.000,  -60.000, -120.000, -180.000, -240.000, -300.000, -330.000, -360.000,  // 536
 | 
|---|
| 167 |         -390.000, -420.000, -450.000, -480.000, -510.000, -540.000, -540.000, -510.000,  // 544
 | 
|---|
| 168 |         -480.000, -450.000, -420.000, -390.000, -360.000, -330.000, -300.000, -240.000,  // 552
 | 
|---|
| 169 |         -180.000, -120.000,  -60.000,    0.000,   60.000,  120.000,  180.000,  240.000,  // 560
 | 
|---|
| 170 |         +300.000,  330.000,  360.000,  390.000,  420.000,  450.000,  480.000,  510.000,  // 568
 | 
|---|
| 171 |         +540.000                                                                         // 576
 | 
|---|
| 172 |     };
 | 
|---|
| 173 | 
 | 
|---|
| 174 |     const Float_t ytemp[577] = {
 | 
|---|
| 175 |         +000.000,    0.000,   25.981,   25.981,    0.000,  -25.981,  -25.981,    0.000,  //   0
 | 
|---|
| 176 |         +025.981,   51.961,   51.961,   51.961,   25.981,    0.000,  -25.981,  -51.961,  //   8
 | 
|---|
| 177 |         -051.961,  -51.961,  -25.981,    0.000,   25.981,   51.961,   77.942,   77.942,  //  16
 | 
|---|
| 178 |         +077.942,   77.942,   51.961,   25.981,    0.000,  -25.981,  -51.961,  -77.942,  //  24
 | 
|---|
| 179 |         -077.942,  -77.942,  -77.942,  -51.961,  -25.981,    0.000,   25.981,   51.961,  //  32
 | 
|---|
| 180 |         +077.942,  103.923,  103.923,  103.923,  103.923,  103.923,   77.942,   51.961,  //  40
 | 
|---|
| 181 |         +025.981,    0.000,  -25.981,  -51.961,  -77.942, -103.923, -103.923, -103.923,  //  48
 | 
|---|
| 182 |         -103.923, -103.923,  -77.942,  -51.961,  -25.981,    0.000,   25.981,   51.961,  //  56
 | 
|---|
| 183 |         +077.942,  103.923,  129.904,  129.904,  129.904,  129.904,  129.904,  129.904,  //  64
 | 
|---|
| 184 |         +103.923,   77.942,   51.961,   25.981,    0.000,  -25.981,  -51.961,  -77.942,  //  72
 | 
|---|
| 185 |         -103.923, -129.904, -129.904, -129.904, -129.904, -129.904, -129.904, -103.923,  //  80
 | 
|---|
| 186 |         -077.942,  -51.961,  -25.981,    0.000,   25.981,   51.961,   77.942,  103.923,  //  88
 | 
|---|
| 187 |         +129.904,  155.885,  155.885,  155.885,  155.885,  155.885,  155.885,  155.885,  //  96
 | 
|---|
| 188 |         +129.904,  103.923,   77.942,   51.961,   25.981,    0.000,  -25.981,  -51.961,  // 104
 | 
|---|
| 189 |         -077.942, -103.923, -129.904, -155.885, -155.885, -155.885, -155.885, -155.885,  // 112
 | 
|---|
| 190 |         -155.885, -155.885, -129.904, -103.923,  -77.942,  -51.961,  -25.981,    0.000,  // 120
 | 
|---|
| 191 |         +025.981,   51.961,   77.942,  103.923,  129.904,  155.885,  181.865,  181.865,  // 128
 | 
|---|
| 192 |         +181.865,  181.865,  181.865,  181.865,  181.865,  181.865,  155.885,  129.904,  // 136
 | 
|---|
| 193 |         +103.923,   77.942,   51.961,   25.981,    0.000,  -25.981,  -51.961,  -77.942,  // 144
 | 
|---|
| 194 |         -103.923, -129.904, -155.885, -181.865, -181.865, -181.865, -181.865, -181.865,  // 152
 | 
|---|
| 195 |         -181.865, -181.865, -181.865, -155.885, -129.904, -103.923,  -77.942,  -51.961,  // 160
 | 
|---|
| 196 |         -025.981,    0.000,   25.981,   51.961,   77.942,  103.923,  129.904,  155.885,  // 168
 | 
|---|
| 197 |         +181.865,  207.846,  207.846,  207.846,  207.846,  207.846,  207.846,  207.846,  // 176
 | 
|---|
| 198 |         +207.846,  207.846,  181.865,  155.885,  129.904,  103.923,   77.942,   51.961,  // 184
 | 
|---|
| 199 |         +025.981,    0.000,  -25.981,  -51.961,  -77.942, -103.923, -129.904, -155.885,  // 192
 | 
|---|
| 200 |         -181.865, -207.846, -207.846, -207.846, -207.846, -207.846, -207.846, -207.846,  // 200
 | 
|---|
| 201 |         -207.846, -207.846, -181.865, -155.885, -129.904, -103.923,  -77.942,  -51.961,  // 208
 | 
|---|
| 202 |         -025.981,    0.000,   25.981,   51.961,   77.942,  103.923,  129.904,  155.885,  // 216
 | 
|---|
| 203 |         +181.865,  207.846,  233.827,  233.827,  233.827,  233.827,  233.827,  233.827,  // 224
 | 
|---|
| 204 |         +233.827,  233.827,  233.827,  233.827,  207.846,  181.865,  155.885,  129.904,  // 232
 | 
|---|
| 205 |         +103.923,   77.942,   51.961,   25.981,    0.000,  -25.981,  -51.961,  -77.942,  // 240
 | 
|---|
| 206 |         -103.923, -129.904, -155.885, -181.865, -207.846, -233.827, -233.827, -233.827,  // 248
 | 
|---|
| 207 |         -233.827, -233.827, -233.827, -233.827, -233.827, -233.827, -233.827, -207.846,  // 256
 | 
|---|
| 208 |         -181.865, -155.885, -129.904, -103.923,  -77.942,  -51.961,  -25.981,    0.000,  // 264
 | 
|---|
| 209 |         +025.981,   51.961,   77.942,  103.923,  129.904,  155.885,  181.865,  207.846,  // 272
 | 
|---|
| 210 |         +233.827,  259.808,  259.808,  259.808,  259.808,  259.808,  259.808,  259.808,  // 280
 | 
|---|
| 211 |         +259.808,  259.808,  259.808,  259.808,  233.827,  207.846,  181.865,  155.885,  // 288
 | 
|---|
| 212 |         +129.904,  103.923,   77.942,   51.961,   25.981,    0.000,  -25.981,  -51.961,  // 296
 | 
|---|
| 213 |         -077.942, -103.923, -129.904, -155.885, -181.865, -207.846, -233.827, -259.808,  // 304
 | 
|---|
| 214 |         -259.808, -259.808, -259.808, -259.808, -259.808, -259.808, -259.808, -259.808,  // 312
 | 
|---|
| 215 |         -259.808, -259.808, -233.827, -207.846, -181.865, -155.885, -129.904, -103.923,  // 320
 | 
|---|
| 216 |         -077.942,  -51.961,  -25.981,    0.000,   25.981,   51.961,   77.942,  103.923,  // 328
 | 
|---|
| 217 |         +129.904,  155.885,  181.865,  207.846,  233.827,  259.808,  285.788,  285.788,  // 336
 | 
|---|
| 218 |         +285.788,  285.788,  285.788,  285.788,  285.788,  285.788,  285.788,  285.788,  // 344
 | 
|---|
| 219 |         +285.788,  285.788,  259.808,  233.827,  207.846,  181.865,  155.885,  129.904,  // 352
 | 
|---|
| 220 |         +103.923,   77.942,   51.961,   25.981,    0.000,  -25.981,  -51.961,  -77.942,  // 360
 | 
|---|
| 221 |         -103.923, -129.904, -155.885, -181.865, -207.846, -233.827, -259.808, -285.788,  // 368
 | 
|---|
| 222 |         -285.788, -285.788, -285.788, -285.788, -285.788, -285.788, -285.788, -285.788,  // 376
 | 
|---|
| 223 |         -285.788, -285.788, -285.788, -259.808, -233.827, -207.846, -181.865, -155.885,  // 384
 | 
|---|
| 224 |         -129.904, -103.923,  -77.942,  -51.961,  -25.981,   34.641,   86.603,  138.564,  // 392
 | 
|---|
| 225 |         +190.526,  242.487,  294.449,  329.090,  329.090,  329.090,  329.090,  329.090,  // 400
 | 
|---|
| 226 |         +329.090,  294.449,  242.487,  190.526,  138.564,   86.603,   34.641,  -34.641,  // 408
 | 
|---|
| 227 |         -086.603, -138.564, -190.526, -242.487, -294.449, -329.090, -329.090, -329.090,  // 416
 | 
|---|
| 228 |         -329.090, -329.090, -329.090, -294.449, -242.487, -190.526, -138.564,  -86.603,  // 424
 | 
|---|
| 229 |         -034.641,   34.641,   86.603,  138.564,  190.526,  242.487,  294.449,  346.410,  // 432
 | 
|---|
| 230 |         +381.051,  381.051,  381.051,  381.051,  381.051,  381.051,  381.051,  346.410,  // 440
 | 
|---|
| 231 |         +294.449,  242.487,  190.526,  138.564,   86.603,   34.641,  -34.641,  -86.603,  // 448
 | 
|---|
| 232 |         -138.564, -190.526, -242.487, -294.449, -346.410, -381.051, -381.051, -381.051,  // 456
 | 
|---|
| 233 |         -381.051, -381.051, -381.051, -381.051, -346.410, -294.449, -242.487, -190.526,  // 464
 | 
|---|
| 234 |         -138.564,  -86.603,  -34.641,   34.641,   86.603,  138.564,  190.526,  242.487,  // 472
 | 
|---|
| 235 |         +294.449,  346.410,  398.372,  433.013,  433.013,  433.013,  433.013,  433.013,  // 480
 | 
|---|
| 236 |         +433.013,  433.013,  433.013,  398.372,  346.410,  294.449,  242.487,  190.526,  // 488
 | 
|---|
| 237 |         +138.564,   86.603,   34.641,  -34.641,  -86.603, -138.564, -190.526, -242.487,  // 496
 | 
|---|
| 238 |         -294.449, -346.410, -398.372, -433.013, -433.013, -433.013, -433.013, -433.013,  // 504
 | 
|---|
| 239 |         -433.013, -433.013, -433.013, -398.372, -346.410, -294.449, -242.487, -190.526,  // 512
 | 
|---|
| 240 |         -138.564,  -86.603,  -34.641,   34.641,   86.603,  138.564,  190.526,  242.487,  // 520
 | 
|---|
| 241 |         +294.449,  346.410,  398.372,  450.333,  484.974,  484.974,  484.974,  484.974,  // 528
 | 
|---|
| 242 |         +484.974,  484.974,  484.974,  484.974,  484.974,  450.333,  398.372,  346.410,  // 536
 | 
|---|
| 243 |         +294.449,  242.487,  190.526,  138.564,   86.603,   34.641,  -34.641,  -86.603,  // 544
 | 
|---|
| 244 |         -138.564, -190.526, -242.487, -294.449, -346.410, -398.372, -450.333, -484.974,  // 552
 | 
|---|
| 245 |         -484.974, -484.974, -484.974, -484.974, -484.974, -484.974, -484.974, -484.974,  // 560
 | 
|---|
| 246 |         -450.333, -398.372, -346.410, -294.449, -242.487, -190.526, -138.564,  -86.603,  // 568
 | 
|---|
| 247 |         -034.641                                                                         // 576
 | 
|---|
| 248 |     };
 | 
|---|
| 249 | 
 | 
|---|
| 250 |     const Byte_t sector[577] = {
 | 
|---|
| 251 |         0, 1, 2, 3, 4, 5, 6, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
 | 
|---|
| 252 |         1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 1,
 | 
|---|
| 253 |         1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5,
 | 
|---|
| 254 |         6, 6, 6, 6, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
 | 
|---|
| 255 |         4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 1, 1, 1, 1,
 | 
|---|
| 256 |         1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
 | 
|---|
| 257 |         4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1,
 | 
|---|
| 258 |         1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
 | 
|---|
| 259 |         4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 1, 1,
 | 
|---|
| 260 |         1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
 | 
|---|
| 261 |         3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,
 | 
|---|
| 262 |         6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
 | 
|---|
| 263 |         2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
 | 
|---|
| 264 |         4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,
 | 
|---|
| 265 |         6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
 | 
|---|
| 266 |         2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
 | 
|---|
| 267 |         4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6,
 | 
|---|
| 268 |         6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 | 
|---|
| 269 |         2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
 | 
|---|
| 270 |         3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5,
 | 
|---|
| 271 |         5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1,
 | 
|---|
| 272 |         1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4,
 | 
|---|
| 273 |         4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1,
 | 
|---|
| 274 |         1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4,
 | 
|---|
| 275 |         4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
 | 
|---|
| 276 |         1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3,
 | 
|---|
| 277 |         3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5,
 | 
|---|
| 278 |         5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 | 
|---|
| 279 |         2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
 | 
|---|
| 280 |         4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6,
 | 
|---|
| 281 |         6, 6, 6, 6, 6, 6, 6 };
 | 
|---|
| 282 | 
 | 
|---|
| 283 |     //
 | 
|---|
| 284 |     //   fill the pixels list with this data
 | 
|---|
| 285 |     //
 | 
|---|
| 286 |     for (UInt_t i=0; i<GetNumPixels(); i++)
 | 
|---|
| 287 |         SetAt(i, MGeomPix(xtemp[i], ytemp[i], i>396?60:30, sector[i], i>396?1:0));
 | 
|---|
| 288 |     // (*this)[i].Set(xtemp[i], ytemp[i], i>396?60:30, i>396?sector[i]+6:sector[i]);
 | 
|---|
| 289 | }
 | 
|---|
| 290 | 
 | 
|---|
| 291 | // --------------------------------------------------------------------------
 | 
|---|
| 292 | //
 | 
|---|
| 293 | //  This fills the next neighbor information from a table into the pixel
 | 
|---|
| 294 | //  objects.
 | 
|---|
| 295 | //
 | 
|---|
| 296 | void MGeomCamMagic::CreateNN()
 | 
|---|
| 297 | {
 | 
|---|
| 298 |     const Short_t nn[577][6] = {         // Neighbors of #
 | 
|---|
| 299 |         {   1,   2,   3,   4,   5,   6}, // 0
 | 
|---|
| 300 |         {   0,   2,   6,   7,   8,  18},
 | 
|---|
| 301 |         {   0,   1,   3,   8,   9,  10},
 | 
|---|
| 302 |         {   0,   2,   4,  10,  11,  12},
 | 
|---|
| 303 |         {   0,   3,   5,  12,  13,  14},
 | 
|---|
| 304 |         {   0,   4,   6,  14,  15,  16},
 | 
|---|
| 305 |         {   0,   1,   5,  16,  17,  18},
 | 
|---|
| 306 |         {   1,   8,  18,  19,  20,  36},
 | 
|---|
| 307 |         {   1,   2,   7,   9,  20,  21},
 | 
|---|
| 308 |         {   2,   8,  10,  21,  22,  23},
 | 
|---|
| 309 |         {   2,   3,   9,  11,  23,  24},
 | 
|---|
| 310 |         {   3,  10,  12,  24,  25,  26},
 | 
|---|
| 311 |         {   3,   4,  11,  13,  26,  27},
 | 
|---|
| 312 |         {   4,  12,  14,  27,  28,  29},
 | 
|---|
| 313 |         {   4,   5,  13,  15,  29,  30},
 | 
|---|
| 314 |         {   5,  14,  16,  30,  31,  32},
 | 
|---|
| 315 |         {   5,   6,  15,  17,  32,  33},
 | 
|---|
| 316 |         {   6,  16,  18,  33,  34,  35},
 | 
|---|
| 317 |         {   1,   6,   7,  17,  35,  36},
 | 
|---|
| 318 |         {   7,  20,  36,  37,  38,  60},
 | 
|---|
| 319 |         {   7,   8,  19,  21,  38,  39}, // 20
 | 
|---|
| 320 |         {   8,   9,  20,  22,  39,  40},
 | 
|---|
| 321 |         {   9,  21,  23,  40,  41,  42},
 | 
|---|
| 322 |         {   9,  10,  22,  24,  42,  43},
 | 
|---|
| 323 |         {  10,  11,  23,  25,  43,  44},
 | 
|---|
| 324 |         {  11,  24,  26,  44,  45,  46},
 | 
|---|
| 325 |         {  11,  12,  25,  27,  46,  47},
 | 
|---|
| 326 |         {  12,  13,  26,  28,  47,  48},
 | 
|---|
| 327 |         {  13,  27,  29,  48,  49,  50},
 | 
|---|
| 328 |         {  13,  14,  28,  30,  50,  51},
 | 
|---|
| 329 |         {  14,  15,  29,  31,  51,  52},
 | 
|---|
| 330 |         {  15,  30,  32,  52,  53,  54},
 | 
|---|
| 331 |         {  15,  16,  31,  33,  54,  55},
 | 
|---|
| 332 |         {  16,  17,  32,  34,  55,  56},
 | 
|---|
| 333 |         {  17,  33,  35,  56,  57,  58},
 | 
|---|
| 334 |         {  17,  18,  34,  36,  58,  59},
 | 
|---|
| 335 |         {   7,  18,  19,  35,  59,  60},
 | 
|---|
| 336 |         {  19,  38,  60,  61,  62,  90},
 | 
|---|
| 337 |         {  19,  20,  37,  39,  62,  63},
 | 
|---|
| 338 |         {  20,  21,  38,  40,  63,  64},
 | 
|---|
| 339 |         {  21,  22,  39,  41,  64,  65}, // 40
 | 
|---|
| 340 |         {  22,  40,  42,  65,  66,  67},
 | 
|---|
| 341 |         {  22,  23,  41,  43,  67,  68},
 | 
|---|
| 342 |         {  23,  24,  42,  44,  68,  69},
 | 
|---|
| 343 |         {  24,  25,  43,  45,  69,  70},
 | 
|---|
| 344 |         {  25,  44,  46,  70,  71,  72},
 | 
|---|
| 345 |         {  25,  26,  45,  47,  72,  73},
 | 
|---|
| 346 |         {  26,  27,  46,  48,  73,  74},
 | 
|---|
| 347 |         {  27,  28,  47,  49,  74,  75},
 | 
|---|
| 348 |         {  28,  48,  50,  75,  76,  77},
 | 
|---|
| 349 |         {  28,  29,  49,  51,  77,  78},
 | 
|---|
| 350 |         {  29,  30,  50,  52,  78,  79},
 | 
|---|
| 351 |         {  30,  31,  51,  53,  79,  80},
 | 
|---|
| 352 |         {  31,  52,  54,  80,  81,  82},
 | 
|---|
| 353 |         {  31,  32,  53,  55,  82,  83},
 | 
|---|
| 354 |         {  32,  33,  54,  56,  83,  84},
 | 
|---|
| 355 |         {  33,  34,  55,  57,  84,  85},
 | 
|---|
| 356 |         {  34,  56,  58,  85,  86,  87},
 | 
|---|
| 357 |         {  34,  35,  57,  59,  87,  88},
 | 
|---|
| 358 |         {  35,  36,  58,  60,  88,  89},
 | 
|---|
| 359 |         {  19,  36,  37,  59,  89,  90}, // 60
 | 
|---|
| 360 |         {  37,  62,  90,  91,  92, 126},
 | 
|---|
| 361 |         {  37,  38,  61,  63,  92,  93},
 | 
|---|
| 362 |         {  38,  39,  62,  64,  93,  94},
 | 
|---|
| 363 |         {  39,  40,  63,  65,  94,  95},
 | 
|---|
| 364 |         {  40,  41,  64,  66,  95,  96},
 | 
|---|
| 365 |         {  41,  65,  67,  96,  97,  98},
 | 
|---|
| 366 |         {  41,  42,  66,  68,  98,  99},
 | 
|---|
| 367 |         {  42,  43,  67,  69,  99, 100},
 | 
|---|
| 368 |         {  43,  44,  68,  70, 100, 101},
 | 
|---|
| 369 |         {  44,  45,  69,  71, 101, 102},
 | 
|---|
| 370 |         {  45,  70,  72, 102, 103, 104},
 | 
|---|
| 371 |         {  45,  46,  71,  73, 104, 105},
 | 
|---|
| 372 |         {  46,  47,  72,  74, 105, 106},
 | 
|---|
| 373 |         {  47,  48,  73,  75, 106, 107},
 | 
|---|
| 374 |         {  48,  49,  74,  76, 107, 108},
 | 
|---|
| 375 |         {  49,  75,  77, 108, 109, 110},
 | 
|---|
| 376 |         {  49,  50,  76,  78, 110, 111},
 | 
|---|
| 377 |         {  50,  51,  77,  79, 111, 112},
 | 
|---|
| 378 |         {  51,  52,  78,  80, 112, 113},
 | 
|---|
| 379 |         {  52,  53,  79,  81, 113, 114}, // 80
 | 
|---|
| 380 |         {  53,  80,  82, 114, 115, 116},
 | 
|---|
| 381 |         {  53,  54,  81,  83, 116, 117},
 | 
|---|
| 382 |         {  54,  55,  82,  84, 117, 118},
 | 
|---|
| 383 |         {  55,  56,  83,  85, 118, 119},
 | 
|---|
| 384 |         {  56,  57,  84,  86, 119, 120},
 | 
|---|
| 385 |         {  57,  85,  87, 120, 121, 122},
 | 
|---|
| 386 |         {  57,  58,  86,  88, 122, 123},
 | 
|---|
| 387 |         {  58,  59,  87,  89, 123, 124},
 | 
|---|
| 388 |         {  59,  60,  88,  90, 124, 125},
 | 
|---|
| 389 |         {  37,  60,  61,  89, 125, 126},
 | 
|---|
| 390 |         {  61,  92, 126, 127, 128, 168},
 | 
|---|
| 391 |         {  61,  62,  91,  93, 128, 129},
 | 
|---|
| 392 |         {  62,  63,  92,  94, 129, 130},
 | 
|---|
| 393 |         {  63,  64,  93,  95, 130, 131},
 | 
|---|
| 394 |         {  64,  65,  94,  96, 131, 132},
 | 
|---|
| 395 |         {  65,  66,  95,  97, 132, 133},
 | 
|---|
| 396 |         {  66,  96,  98, 133, 134, 135},
 | 
|---|
| 397 |         {  66,  67,  97,  99, 135, 136},
 | 
|---|
| 398 |         {  67,  68,  98, 100, 136, 137},
 | 
|---|
| 399 |         {  68,  69,  99, 101, 137, 138}, // 100
 | 
|---|
| 400 |         {  69,  70, 100, 102, 138, 139},
 | 
|---|
| 401 |         {  70,  71, 101, 103, 139, 140},
 | 
|---|
| 402 |         {  71, 102, 104, 140, 141, 142},
 | 
|---|
| 403 |         {  71,  72, 103, 105, 142, 143},
 | 
|---|
| 404 |         {  72,  73, 104, 106, 143, 144},
 | 
|---|
| 405 |         {  73,  74, 105, 107, 144, 145},
 | 
|---|
| 406 |         {  74,  75, 106, 108, 145, 146},
 | 
|---|
| 407 |         {  75,  76, 107, 109, 146, 147},
 | 
|---|
| 408 |         {  76, 108, 110, 147, 148, 149},
 | 
|---|
| 409 |         {  76,  77, 109, 111, 149, 150},
 | 
|---|
| 410 |         {  77,  78, 110, 112, 150, 151},
 | 
|---|
| 411 |         {  78,  79, 111, 113, 151, 152},
 | 
|---|
| 412 |         {  79,  80, 112, 114, 152, 153},
 | 
|---|
| 413 |         {  80,  81, 113, 115, 153, 154},
 | 
|---|
| 414 |         {  81, 114, 116, 154, 155, 156},
 | 
|---|
| 415 |         {  81,  82, 115, 117, 156, 157},
 | 
|---|
| 416 |         {  82,  83, 116, 118, 157, 158},
 | 
|---|
| 417 |         {  83,  84, 117, 119, 158, 159},
 | 
|---|
| 418 |         {  84,  85, 118, 120, 159, 160},
 | 
|---|
| 419 |         {  85,  86, 119, 121, 160, 161}, // 120
 | 
|---|
| 420 |         {  86, 120, 122, 161, 162, 163},
 | 
|---|
| 421 |         {  86,  87, 121, 123, 163, 164},
 | 
|---|
| 422 |         {  87,  88, 122, 124, 164, 165},
 | 
|---|
| 423 |         {  88,  89, 123, 125, 165, 166},
 | 
|---|
| 424 |         {  89,  90, 124, 126, 166, 167},
 | 
|---|
| 425 |         {  61,  90,  91, 125, 167, 168},
 | 
|---|
| 426 |         {  91, 128, 168, 169, 170, 216},
 | 
|---|
| 427 |         {  91,  92, 127, 129, 170, 171},
 | 
|---|
| 428 |         {  92,  93, 128, 130, 171, 172},
 | 
|---|
| 429 |         {  93,  94, 129, 131, 172, 173},
 | 
|---|
| 430 |         {  94,  95, 130, 132, 173, 174},
 | 
|---|
| 431 |         {  95,  96, 131, 133, 174, 175},
 | 
|---|
| 432 |         {  96,  97, 132, 134, 175, 176},
 | 
|---|
| 433 |         {  97, 133, 135, 176, 177, 178},
 | 
|---|
| 434 |         {  97,  98, 134, 136, 178, 179},
 | 
|---|
| 435 |         {  98,  99, 135, 137, 179, 180},
 | 
|---|
| 436 |         {  99, 100, 136, 138, 180, 181},
 | 
|---|
| 437 |         { 100, 101, 137, 139, 181, 182},
 | 
|---|
| 438 |         { 101, 102, 138, 140, 182, 183},
 | 
|---|
| 439 |         { 102, 103, 139, 141, 183, 184}, // 140
 | 
|---|
| 440 |         { 103, 140, 142, 184, 185, 186},
 | 
|---|
| 441 |         { 103, 104, 141, 143, 186, 187},
 | 
|---|
| 442 |         { 104, 105, 142, 144, 187, 188},
 | 
|---|
| 443 |         { 105, 106, 143, 145, 188, 189},
 | 
|---|
| 444 |         { 106, 107, 144, 146, 189, 190},
 | 
|---|
| 445 |         { 107, 108, 145, 147, 190, 191},
 | 
|---|
| 446 |         { 108, 109, 146, 148, 191, 192},
 | 
|---|
| 447 |         { 109, 147, 149, 192, 193, 194},
 | 
|---|
| 448 |         { 109, 110, 148, 150, 194, 195},
 | 
|---|
| 449 |         { 110, 111, 149, 151, 195, 196},
 | 
|---|
| 450 |         { 111, 112, 150, 152, 196, 197},
 | 
|---|
| 451 |         { 112, 113, 151, 153, 197, 198},
 | 
|---|
| 452 |         { 113, 114, 152, 154, 198, 199},
 | 
|---|
| 453 |         { 114, 115, 153, 155, 199, 200},
 | 
|---|
| 454 |         { 115, 154, 156, 200, 201, 202},
 | 
|---|
| 455 |         { 115, 116, 155, 157, 202, 203},
 | 
|---|
| 456 |         { 116, 117, 156, 158, 203, 204},
 | 
|---|
| 457 |         { 117, 118, 157, 159, 204, 205},
 | 
|---|
| 458 |         { 118, 119, 158, 160, 205, 206},
 | 
|---|
| 459 |         { 119, 120, 159, 161, 206, 207}, // 160
 | 
|---|
| 460 |         { 120, 121, 160, 162, 207, 208},
 | 
|---|
| 461 |         { 121, 161, 163, 208, 209, 210},
 | 
|---|
| 462 |         { 121, 122, 162, 164, 210, 211},
 | 
|---|
| 463 |         { 122, 123, 163, 165, 211, 212},
 | 
|---|
| 464 |         { 123, 124, 164, 166, 212, 213},
 | 
|---|
| 465 |         { 124, 125, 165, 167, 213, 214},
 | 
|---|
| 466 |         { 125, 126, 166, 168, 214, 215},
 | 
|---|
| 467 |         {  91, 126, 127, 167, 215, 216},
 | 
|---|
| 468 |         { 127, 170, 216, 217, 218, 270},
 | 
|---|
| 469 |         { 127, 128, 169, 171, 218, 219},
 | 
|---|
| 470 |         { 128, 129, 170, 172, 219, 220},
 | 
|---|
| 471 |         { 129, 130, 171, 173, 220, 221},
 | 
|---|
| 472 |         { 130, 131, 172, 174, 221, 222},
 | 
|---|
| 473 |         { 131, 132, 173, 175, 222, 223},
 | 
|---|
| 474 |         { 132, 133, 174, 176, 223, 224},
 | 
|---|
| 475 |         { 133, 134, 175, 177, 224, 225},
 | 
|---|
| 476 |         { 134, 176, 178, 225, 226, 227},
 | 
|---|
| 477 |         { 134, 135, 177, 179, 227, 228},
 | 
|---|
| 478 |         { 135, 136, 178, 180, 228, 229},
 | 
|---|
| 479 |         { 136, 137, 179, 181, 229, 230}, // 180
 | 
|---|
| 480 |         { 137, 138, 180, 182, 230, 231},
 | 
|---|
| 481 |         { 138, 139, 181, 183, 231, 232},
 | 
|---|
| 482 |         { 139, 140, 182, 184, 232, 233},
 | 
|---|
| 483 |         { 140, 141, 183, 185, 233, 234},
 | 
|---|
| 484 |         { 141, 184, 186, 234, 235, 236},
 | 
|---|
| 485 |         { 141, 142, 185, 187, 236, 237},
 | 
|---|
| 486 |         { 142, 143, 186, 188, 237, 238},
 | 
|---|
| 487 |         { 143, 144, 187, 189, 238, 239},
 | 
|---|
| 488 |         { 144, 145, 188, 190, 239, 240},
 | 
|---|
| 489 |         { 145, 146, 189, 191, 240, 241},
 | 
|---|
| 490 |         { 146, 147, 190, 192, 241, 242},
 | 
|---|
| 491 |         { 147, 148, 191, 193, 242, 243},
 | 
|---|
| 492 |         { 148, 192, 194, 243, 244, 245},
 | 
|---|
| 493 |         { 148, 149, 193, 195, 245, 246},
 | 
|---|
| 494 |         { 149, 150, 194, 196, 246, 247},
 | 
|---|
| 495 |         { 150, 151, 195, 197, 247, 248},
 | 
|---|
| 496 |         { 151, 152, 196, 198, 248, 249},
 | 
|---|
| 497 |         { 152, 153, 197, 199, 249, 250},
 | 
|---|
| 498 |         { 153, 154, 198, 200, 250, 251},
 | 
|---|
| 499 |         { 154, 155, 199, 201, 251, 252}, // 200
 | 
|---|
| 500 |         { 155, 200, 202, 252, 253, 254},
 | 
|---|
| 501 |         { 155, 156, 201, 203, 254, 255},
 | 
|---|
| 502 |         { 156, 157, 202, 204, 255, 256},
 | 
|---|
| 503 |         { 157, 158, 203, 205, 256, 257},
 | 
|---|
| 504 |         { 158, 159, 204, 206, 257, 258},
 | 
|---|
| 505 |         { 159, 160, 205, 207, 258, 259},
 | 
|---|
| 506 |         { 160, 161, 206, 208, 259, 260},
 | 
|---|
| 507 |         { 161, 162, 207, 209, 260, 261},
 | 
|---|
| 508 |         { 162, 208, 210, 261, 262, 263},
 | 
|---|
| 509 |         { 162, 163, 209, 211, 263, 264},
 | 
|---|
| 510 |         { 163, 164, 210, 212, 264, 265},
 | 
|---|
| 511 |         { 164, 165, 211, 213, 265, 266},
 | 
|---|
| 512 |         { 165, 166, 212, 214, 266, 267},
 | 
|---|
| 513 |         { 166, 167, 213, 215, 267, 268},
 | 
|---|
| 514 |         { 167, 168, 214, 216, 268, 269},
 | 
|---|
| 515 |         { 127, 168, 169, 215, 269, 270},
 | 
|---|
| 516 |         { 169, 218, 270, 271, 272, 330},
 | 
|---|
| 517 |         { 169, 170, 217, 219, 272, 273},
 | 
|---|
| 518 |         { 170, 171, 218, 220, 273, 274},
 | 
|---|
| 519 |         { 171, 172, 219, 221, 274, 275}, // 220
 | 
|---|
| 520 |         { 172, 173, 220, 222, 275, 276},
 | 
|---|
| 521 |         { 173, 174, 221, 223, 276, 277},
 | 
|---|
| 522 |         { 174, 175, 222, 224, 277, 278},
 | 
|---|
| 523 |         { 175, 176, 223, 225, 278, 279},
 | 
|---|
| 524 |         { 176, 177, 224, 226, 279, 280},
 | 
|---|
| 525 |         { 177, 225, 227, 280, 281, 282},
 | 
|---|
| 526 |         { 177, 178, 226, 228, 282, 283},
 | 
|---|
| 527 |         { 178, 179, 227, 229, 283, 284},
 | 
|---|
| 528 |         { 179, 180, 228, 230, 284, 285},
 | 
|---|
| 529 |         { 180, 181, 229, 231, 285, 286},
 | 
|---|
| 530 |         { 181, 182, 230, 232, 286, 287},
 | 
|---|
| 531 |         { 182, 183, 231, 233, 287, 288},
 | 
|---|
| 532 |         { 183, 184, 232, 234, 288, 289},
 | 
|---|
| 533 |         { 184, 185, 233, 235, 289, 290},
 | 
|---|
| 534 |         { 185, 234, 236, 290, 291, 292},
 | 
|---|
| 535 |         { 185, 186, 235, 237, 292, 293},
 | 
|---|
| 536 |         { 186, 187, 236, 238, 293, 294},
 | 
|---|
| 537 |         { 187, 188, 237, 239, 294, 295},
 | 
|---|
| 538 |         { 188, 189, 238, 240, 295, 296},
 | 
|---|
| 539 |         { 189, 190, 239, 241, 296, 297}, // 240
 | 
|---|
| 540 |         { 190, 191, 240, 242, 297, 298},
 | 
|---|
| 541 |         { 191, 192, 241, 243, 298, 299},
 | 
|---|
| 542 |         { 192, 193, 242, 244, 299, 300},
 | 
|---|
| 543 |         { 193, 243, 245, 300, 301, 302},
 | 
|---|
| 544 |         { 193, 194, 244, 246, 302, 303},
 | 
|---|
| 545 |         { 194, 195, 245, 247, 303, 304},
 | 
|---|
| 546 |         { 195, 196, 246, 248, 304, 305},
 | 
|---|
| 547 |         { 196, 197, 247, 249, 305, 306},
 | 
|---|
| 548 |         { 197, 198, 248, 250, 306, 307},
 | 
|---|
| 549 |         { 198, 199, 249, 251, 307, 308},
 | 
|---|
| 550 |         { 199, 200, 250, 252, 308, 309},
 | 
|---|
| 551 |         { 200, 201, 251, 253, 309, 310},
 | 
|---|
| 552 |         { 201, 252, 254, 310, 311, 312},
 | 
|---|
| 553 |         { 201, 202, 253, 255, 312, 313},
 | 
|---|
| 554 |         { 202, 203, 254, 256, 313, 314},
 | 
|---|
| 555 |         { 203, 204, 255, 257, 314, 315},
 | 
|---|
| 556 |         { 204, 205, 256, 258, 315, 316},
 | 
|---|
| 557 |         { 205, 206, 257, 259, 316, 317},
 | 
|---|
| 558 |         { 206, 207, 258, 260, 317, 318},
 | 
|---|
| 559 |         { 207, 208, 259, 261, 318, 319}, // 260
 | 
|---|
| 560 |         { 208, 209, 260, 262, 319, 320},
 | 
|---|
| 561 |         { 209, 261, 263, 320, 321, 322},
 | 
|---|
| 562 |         { 209, 210, 262, 264, 322, 323},
 | 
|---|
| 563 |         { 210, 211, 263, 265, 323, 324},
 | 
|---|
| 564 |         { 211, 212, 264, 266, 324, 325},
 | 
|---|
| 565 |         { 212, 213, 265, 267, 325, 326},
 | 
|---|
| 566 |         { 213, 214, 266, 268, 326, 327},
 | 
|---|
| 567 |         { 214, 215, 267, 269, 327, 328},
 | 
|---|
| 568 |         { 215, 216, 268, 270, 328, 329},
 | 
|---|
| 569 |         { 169, 216, 217, 269, 329, 330},
 | 
|---|
| 570 |         { 217, 272, 330, 331, 332, 396},
 | 
|---|
| 571 |         { 217, 218, 271, 273, 332, 333},
 | 
|---|
| 572 |         { 218, 219, 272, 274, 333, 334},
 | 
|---|
| 573 |         { 219, 220, 273, 275, 334, 335},
 | 
|---|
| 574 |         { 220, 221, 274, 276, 335, 336},
 | 
|---|
| 575 |         { 221, 222, 275, 277, 336, 337},
 | 
|---|
| 576 |         { 222, 223, 276, 278, 337, 338},
 | 
|---|
| 577 |         { 223, 224, 277, 279, 338, 339},
 | 
|---|
| 578 |         { 224, 225, 278, 280, 339, 340},
 | 
|---|
| 579 |         { 225, 226, 279, 281, 340, 341}, // 280
 | 
|---|
| 580 |         { 226, 280, 282, 341, 342, 343},
 | 
|---|
| 581 |         { 226, 227, 281, 283, 343, 344},
 | 
|---|
| 582 |         { 227, 228, 282, 284, 344, 345},
 | 
|---|
| 583 |         { 228, 229, 283, 285, 345, 346},
 | 
|---|
| 584 |         { 229, 230, 284, 286, 346, 347},
 | 
|---|
| 585 |         { 230, 231, 285, 287, 347, 348},
 | 
|---|
| 586 |         { 231, 232, 286, 288, 348, 349},
 | 
|---|
| 587 |         { 232, 233, 287, 289, 349, 350},
 | 
|---|
| 588 |         { 233, 234, 288, 290, 350, 351},
 | 
|---|
| 589 |         { 234, 235, 289, 291, 351, 352},
 | 
|---|
| 590 |         { 235, 290, 292, 352, 353, 354},
 | 
|---|
| 591 |         { 235, 236, 291, 293, 354, 355},
 | 
|---|
| 592 |         { 236, 237, 292, 294, 355, 356},
 | 
|---|
| 593 |         { 237, 238, 293, 295, 356, 357},
 | 
|---|
| 594 |         { 238, 239, 294, 296, 357, 358},
 | 
|---|
| 595 |         { 239, 240, 295, 297, 358, 359},
 | 
|---|
| 596 |         { 240, 241, 296, 298, 359, 360},
 | 
|---|
| 597 |         { 241, 242, 297, 299, 360, 361},
 | 
|---|
| 598 |         { 242, 243, 298, 300, 361, 362},
 | 
|---|
| 599 |         { 243, 244, 299, 301, 362, 363}, // 300
 | 
|---|
| 600 |         { 244, 300, 302, 363, 364, 365},
 | 
|---|
| 601 |         { 244, 245, 301, 303, 365, 366},
 | 
|---|
| 602 |         { 245, 246, 302, 304, 366, 367},
 | 
|---|
| 603 |         { 246, 247, 303, 305, 367, 368},
 | 
|---|
| 604 |         { 247, 248, 304, 306, 368, 369},
 | 
|---|
| 605 |         { 248, 249, 305, 307, 369, 370},
 | 
|---|
| 606 |         { 249, 250, 306, 308, 370, 371},
 | 
|---|
| 607 |         { 250, 251, 307, 309, 371, 372},
 | 
|---|
| 608 |         { 251, 252, 308, 310, 372, 373},
 | 
|---|
| 609 |         { 252, 253, 309, 311, 373, 374},
 | 
|---|
| 610 |         { 253, 310, 312, 374, 375, 376},
 | 
|---|
| 611 |         { 253, 254, 311, 313, 376, 377},
 | 
|---|
| 612 |         { 254, 255, 312, 314, 377, 378},
 | 
|---|
| 613 |         { 255, 256, 313, 315, 378, 379},
 | 
|---|
| 614 |         { 256, 257, 314, 316, 379, 380},
 | 
|---|
| 615 |         { 257, 258, 315, 317, 380, 381},
 | 
|---|
| 616 |         { 258, 259, 316, 318, 381, 382},
 | 
|---|
| 617 |         { 259, 260, 317, 319, 382, 383},
 | 
|---|
| 618 |         { 260, 261, 318, 320, 383, 384},
 | 
|---|
| 619 |         { 261, 262, 319, 321, 384, 385}, // 320
 | 
|---|
| 620 |         { 262, 320, 322, 385, 386, 387},
 | 
|---|
| 621 |         { 262, 263, 321, 323, 387, 388},
 | 
|---|
| 622 |         { 263, 264, 322, 324, 388, 389},
 | 
|---|
| 623 |         { 264, 265, 323, 325, 389, 390},
 | 
|---|
| 624 |         { 265, 266, 324, 326, 390, 391},
 | 
|---|
| 625 |         { 266, 267, 325, 327, 391, 392},
 | 
|---|
| 626 |         { 267, 268, 326, 328, 392, 393},
 | 
|---|
| 627 |         { 268, 269, 327, 329, 393, 394},
 | 
|---|
| 628 |         { 269, 270, 328, 330, 394, 395},
 | 
|---|
| 629 |         { 217, 270, 271, 329, 395, 396},
 | 
|---|
| 630 |         { 271, 332, 396, 397, 432,  -1},
 | 
|---|
| 631 |         { 271, 272, 331, 333, 397,  -1},
 | 
|---|
| 632 |         { 272, 273, 332, 334, 398,  -1},
 | 
|---|
| 633 |         { 273, 274, 333, 335, 398,  -1},
 | 
|---|
| 634 |         { 274, 275, 334, 336, 399,  -1},
 | 
|---|
| 635 |         { 275, 276, 335, 337, 399,  -1},
 | 
|---|
| 636 |         { 276, 277, 336, 338, 400,  -1},
 | 
|---|
| 637 |         { 277, 278, 337, 339, 400,  -1},
 | 
|---|
| 638 |         { 278, 279, 338, 340, 401,  -1},
 | 
|---|
| 639 |         { 279, 280, 339, 341, 401,  -1}, // 340
 | 
|---|
| 640 |         { 280, 281, 340, 342, 402,  -1},
 | 
|---|
| 641 |         { 281, 341, 343, 402, 403,  -1},
 | 
|---|
| 642 |         { 281, 282, 342, 344, 403,  -1},
 | 
|---|
| 643 |         { 282, 283, 343, 345, 404,  -1},
 | 
|---|
| 644 |         { 283, 284, 344, 346, 404,  -1},
 | 
|---|
| 645 |         { 284, 285, 345, 347, 405,  -1},
 | 
|---|
| 646 |         { 285, 286, 346, 348, 405,  -1},
 | 
|---|
| 647 |         { 286, 287, 347, 349, 406,  -1},
 | 
|---|
| 648 |         { 287, 288, 348, 350, 406,  -1},
 | 
|---|
| 649 |         { 288, 289, 349, 351, 407,  -1},
 | 
|---|
| 650 |         { 289, 290, 350, 352, 407,  -1},
 | 
|---|
| 651 |         { 290, 291, 351, 353, 408,  -1},
 | 
|---|
| 652 |         { 291, 352, 354, 408, 409,  -1},
 | 
|---|
| 653 |         { 291, 292, 353, 355, 409,  -1},
 | 
|---|
| 654 |         { 292, 293, 354, 356, 410,  -1},
 | 
|---|
| 655 |         { 293, 294, 355, 357, 410,  -1},
 | 
|---|
| 656 |         { 294, 295, 356, 358, 411,  -1},
 | 
|---|
| 657 |         { 295, 296, 357, 359, 411,  -1},
 | 
|---|
| 658 |         { 296, 297, 358, 360, 412,  -1},
 | 
|---|
| 659 |         { 297, 298, 359, 361, 412,  -1}, // 360
 | 
|---|
| 660 |         { 298, 299, 360, 362, 413,  -1},
 | 
|---|
| 661 |         { 299, 300, 361, 363, 413,  -1},
 | 
|---|
| 662 |         { 300, 301, 362, 364, 414,  -1},
 | 
|---|
| 663 |         { 301, 363, 365, 414, 415,  -1},
 | 
|---|
| 664 |         { 301, 302, 364, 366, 415,  -1},
 | 
|---|
| 665 |         { 302, 303, 365, 367, 416,  -1},
 | 
|---|
| 666 |         { 303, 304, 366, 368, 416,  -1},
 | 
|---|
| 667 |         { 304, 305, 367, 369, 417,  -1},
 | 
|---|
| 668 |         { 305, 306, 368, 370, 417,  -1},
 | 
|---|
| 669 |         { 306, 307, 369, 371, 418,  -1},
 | 
|---|
| 670 |         { 307, 308, 370, 372, 418,  -1},
 | 
|---|
| 671 |         { 308, 309, 371, 373, 419,  -1},
 | 
|---|
| 672 |         { 309, 310, 372, 374, 419,  -1},
 | 
|---|
| 673 |         { 310, 311, 373, 375, 420,  -1},
 | 
|---|
| 674 |         { 311, 374, 376, 420, 421,  -1},
 | 
|---|
| 675 |         { 311, 312, 375, 377, 421,  -1},
 | 
|---|
| 676 |         { 312, 313, 376, 378, 422,  -1},
 | 
|---|
| 677 |         { 313, 314, 377, 379, 422,  -1},
 | 
|---|
| 678 |         { 314, 315, 378, 380, 423,  -1},
 | 
|---|
| 679 |         { 315, 316, 379, 381, 423,  -1}, // 380
 | 
|---|
| 680 |         { 316, 317, 380, 382, 424,  -1},
 | 
|---|
| 681 |         { 317, 318, 381, 383, 424,  -1},
 | 
|---|
| 682 |         { 318, 319, 382, 384, 425,  -1},
 | 
|---|
| 683 |         { 319, 320, 383, 385, 425,  -1},
 | 
|---|
| 684 |         { 320, 321, 384, 386, 426,  -1},
 | 
|---|
| 685 |         { 321, 385, 387, 426, 427,  -1},
 | 
|---|
| 686 |         { 321, 322, 386, 388, 427,  -1},
 | 
|---|
| 687 |         { 322, 323, 387, 389, 428,  -1},
 | 
|---|
| 688 |         { 323, 324, 388, 390, 428,  -1},
 | 
|---|
| 689 |         { 324, 325, 389, 391, 429,  -1},
 | 
|---|
| 690 |         { 325, 326, 390, 392, 429,  -1},
 | 
|---|
| 691 |         { 326, 327, 391, 393, 430,  -1},
 | 
|---|
| 692 |         { 327, 328, 392, 394, 430,  -1},
 | 
|---|
| 693 |         { 328, 329, 393, 395, 431,  -1},
 | 
|---|
| 694 |         { 329, 330, 394, 396, 431,  -1},
 | 
|---|
| 695 |         { 271, 330, 331, 395, 432,  -1},
 | 
|---|
| 696 |         { 331, 332, 398, 432, 433, 434},
 | 
|---|
| 697 |         { 333, 334, 397, 399, 434, 435},
 | 
|---|
| 698 |         { 335, 336, 398, 400, 435, 436},
 | 
|---|
| 699 |         { 337, 338, 399, 401, 436, 437}, // 400
 | 
|---|
| 700 |         { 339, 340, 400, 402, 437, 438},
 | 
|---|
| 701 |         { 341, 342, 401, 403, 438, 439},
 | 
|---|
| 702 |         { 342, 343, 402, 404, 440, 441},
 | 
|---|
| 703 |         { 344, 345, 403, 405, 441, 442},
 | 
|---|
| 704 |         { 346, 347, 404, 406, 442, 443},
 | 
|---|
| 705 |         { 348, 349, 405, 407, 443, 444},
 | 
|---|
| 706 |         { 350, 351, 406, 408, 444, 445},
 | 
|---|
| 707 |         { 352, 353, 407, 409, 445, 446},
 | 
|---|
| 708 |         { 353, 354, 408, 410, 447, 448},
 | 
|---|
| 709 |         { 355, 356, 409, 411, 448, 449},
 | 
|---|
| 710 |         { 357, 358, 410, 412, 449, 450},
 | 
|---|
| 711 |         { 359, 360, 411, 413, 450, 451},
 | 
|---|
| 712 |         { 361, 362, 412, 414, 451, 452},
 | 
|---|
| 713 |         { 363, 364, 413, 415, 452, 453},
 | 
|---|
| 714 |         { 364, 365, 414, 416, 454, 455},
 | 
|---|
| 715 |         { 366, 367, 415, 417, 455, 456},
 | 
|---|
| 716 |         { 368, 369, 416, 418, 456, 457},
 | 
|---|
| 717 |         { 370, 371, 417, 419, 457, 458},
 | 
|---|
| 718 |         { 372, 373, 418, 420, 458, 459},
 | 
|---|
| 719 |         { 374, 375, 419, 421, 459, 460}, // 420
 | 
|---|
| 720 |         { 375, 376, 420, 422, 461, 462},
 | 
|---|
| 721 |         { 377, 378, 421, 423, 462, 463},
 | 
|---|
| 722 |         { 379, 380, 422, 424, 463, 464},
 | 
|---|
| 723 |         { 381, 382, 423, 425, 464, 465},
 | 
|---|
| 724 |         { 383, 384, 424, 426, 465, 466},
 | 
|---|
| 725 |         { 385, 386, 425, 427, 466, 467},
 | 
|---|
| 726 |         { 386, 387, 426, 428, 468, 469},
 | 
|---|
| 727 |         { 388, 389, 427, 429, 469, 470},
 | 
|---|
| 728 |         { 390, 391, 428, 430, 470, 471},
 | 
|---|
| 729 |         { 392, 393, 429, 431, 471, 472},
 | 
|---|
| 730 |         { 394, 395, 430, 432, 472, 473},
 | 
|---|
| 731 |         { 331, 396, 397, 431, 473, 474},
 | 
|---|
| 732 |         { 397, 434, 474, 475, 476,  -1},
 | 
|---|
| 733 |         { 397, 398, 433, 435, 476, 477},
 | 
|---|
| 734 |         { 398, 399, 434, 436, 477, 478},
 | 
|---|
| 735 |         { 399, 400, 435, 437, 478, 479},
 | 
|---|
| 736 |         { 400, 401, 436, 438, 479, 480},
 | 
|---|
| 737 |         { 401, 402, 437, 439, 480, 481},
 | 
|---|
| 738 |         { 402, 438, 440, 481, 482,  -1},
 | 
|---|
| 739 |         { 403, 439, 441, 483, 484,  -1}, // 440
 | 
|---|
| 740 |         { 403, 404, 440, 442, 484, 485},
 | 
|---|
| 741 |         { 404, 405, 441, 443, 485, 486},
 | 
|---|
| 742 |         { 405, 406, 442, 444, 486, 487},
 | 
|---|
| 743 |         { 406, 407, 443, 445, 487, 488},
 | 
|---|
| 744 |         { 407, 408, 444, 446, 488, 489},
 | 
|---|
| 745 |         { 408, 445, 447, 489, 490,  -1},
 | 
|---|
| 746 |         { 409, 446, 448, 491, 492,  -1},
 | 
|---|
| 747 |         { 409, 410, 447, 449, 492, 493},
 | 
|---|
| 748 |         { 410, 411, 448, 450, 493, 494},
 | 
|---|
| 749 |         { 411, 412, 449, 451, 494, 495},
 | 
|---|
| 750 |         { 412, 413, 450, 452, 495, 496},
 | 
|---|
| 751 |         { 413, 414, 451, 453, 496, 497},
 | 
|---|
| 752 |         { 414, 452, 454, 497, 498,  -1},
 | 
|---|
| 753 |         { 415, 453, 455, 499, 500,  -1},
 | 
|---|
| 754 |         { 415, 416, 454, 456, 500, 501},
 | 
|---|
| 755 |         { 416, 417, 455, 457, 501, 502},
 | 
|---|
| 756 |         { 417, 418, 456, 458, 502, 503},
 | 
|---|
| 757 |         { 418, 419, 457, 459, 503, 504},
 | 
|---|
| 758 |         { 419, 420, 458, 460, 504, 505},
 | 
|---|
| 759 |         { 420, 459, 461, 505, 506,  -1}, // 460
 | 
|---|
| 760 |         { 421, 460, 462, 507, 508,  -1},
 | 
|---|
| 761 |         { 421, 422, 461, 463, 508, 509},
 | 
|---|
| 762 |         { 422, 423, 462, 464, 509, 510},
 | 
|---|
| 763 |         { 423, 424, 463, 465, 510, 511},
 | 
|---|
| 764 |         { 424, 425, 464, 466, 511, 512},
 | 
|---|
| 765 |         { 425, 426, 465, 467, 512, 513},
 | 
|---|
| 766 |         { 426, 466, 468, 513, 514,  -1},
 | 
|---|
| 767 |         { 427, 467, 469, 515, 516,  -1},
 | 
|---|
| 768 |         { 427, 428, 468, 470, 516, 517},
 | 
|---|
| 769 |         { 428, 429, 469, 471, 517, 518},
 | 
|---|
| 770 |         { 429, 430, 470, 472, 518, 519},
 | 
|---|
| 771 |         { 430, 431, 471, 473, 519, 520},
 | 
|---|
| 772 |         { 431, 432, 472, 474, 520, 521},
 | 
|---|
| 773 |         { 432, 433, 473, 521, 522,  -1},
 | 
|---|
| 774 |         { 433, 476, 522, 523, 524,  -1},
 | 
|---|
| 775 |         { 433, 434, 475, 477, 524, 525},
 | 
|---|
| 776 |         { 434, 435, 476, 478, 525, 526},
 | 
|---|
| 777 |         { 435, 436, 477, 479, 526, 527},
 | 
|---|
| 778 |         { 436, 437, 478, 480, 527, 528},
 | 
|---|
| 779 |         { 437, 438, 479, 481, 528, 529}, // 480
 | 
|---|
| 780 |         { 438, 439, 480, 482, 529, 530},
 | 
|---|
| 781 |         { 439, 481, 483, 530, 531,  -1},
 | 
|---|
| 782 |         { 440, 482, 484, 532, 533,  -1},
 | 
|---|
| 783 |         { 440, 441, 483, 485, 533, 534},
 | 
|---|
| 784 |         { 441, 442, 484, 486, 534, 535},
 | 
|---|
| 785 |         { 442, 443, 485, 487, 535, 536},
 | 
|---|
| 786 |         { 443, 444, 486, 488, 536, 537},
 | 
|---|
| 787 |         { 444, 445, 487, 489, 537, 538},
 | 
|---|
| 788 |         { 445, 446, 488, 490, 538, 539},
 | 
|---|
| 789 |         { 446, 489, 491, 539, 540,  -1},
 | 
|---|
| 790 |         { 447, 490, 492, 541, 542,  -1},
 | 
|---|
| 791 |         { 447, 448, 491, 493, 542, 543},
 | 
|---|
| 792 |         { 448, 449, 492, 494, 543, 544},
 | 
|---|
| 793 |         { 449, 450, 493, 495, 544, 545},
 | 
|---|
| 794 |         { 450, 451, 494, 496, 545, 546},
 | 
|---|
| 795 |         { 451, 452, 495, 497, 546, 547},
 | 
|---|
| 796 |         { 452, 453, 496, 498, 547, 548},
 | 
|---|
| 797 |         { 453, 497, 499, 548, 549,  -1},
 | 
|---|
| 798 |         { 454, 498, 500, 550, 551,  -1},
 | 
|---|
| 799 |         { 454, 455, 499, 501, 551, 552}, // 500
 | 
|---|
| 800 |         { 455, 456, 500, 502, 552, 553},
 | 
|---|
| 801 |         { 456, 457, 501, 503, 553, 554},
 | 
|---|
| 802 |         { 457, 458, 502, 504, 554, 555},
 | 
|---|
| 803 |         { 458, 459, 503, 505, 555, 556},
 | 
|---|
| 804 |         { 459, 460, 504, 506, 556, 557},
 | 
|---|
| 805 |         { 460, 505, 507, 557, 558,  -1},
 | 
|---|
| 806 |         { 461, 506, 508, 559, 560,  -1},
 | 
|---|
| 807 |         { 461, 462, 507, 509, 560, 561},
 | 
|---|
| 808 |         { 462, 463, 508, 510, 561, 562},
 | 
|---|
| 809 |         { 463, 464, 509, 511, 562, 563},
 | 
|---|
| 810 |         { 464, 465, 510, 512, 563, 564},
 | 
|---|
| 811 |         { 465, 466, 511, 513, 564, 565},
 | 
|---|
| 812 |         { 466, 467, 512, 514, 565, 566},
 | 
|---|
| 813 |         { 467, 513, 515, 566, 567,  -1},
 | 
|---|
| 814 |         { 468, 514, 516, 568, 569,  -1},
 | 
|---|
| 815 |         { 468, 469, 515, 517, 569, 570},
 | 
|---|
| 816 |         { 469, 470, 516, 518, 570, 571},
 | 
|---|
| 817 |         { 470, 471, 517, 519, 571, 572},
 | 
|---|
| 818 |         { 471, 472, 518, 520, 572, 573},
 | 
|---|
| 819 |         { 472, 473, 519, 521, 573, 574}, // 520
 | 
|---|
| 820 |         { 473, 474, 520, 522, 574, 575},
 | 
|---|
| 821 |         { 474, 475, 521, 575, 576,  -1},
 | 
|---|
| 822 |         { 475, 524, 576,  -1,  -1,  -1},
 | 
|---|
| 823 |         { 475, 476, 523, 525,  -1,  -1},
 | 
|---|
| 824 |         { 476, 477, 524, 526,  -1,  -1},
 | 
|---|
| 825 |         { 477, 478, 525, 527,  -1,  -1},
 | 
|---|
| 826 |         { 478, 479, 526, 528,  -1,  -1},
 | 
|---|
| 827 |         { 479, 480, 527, 529,  -1,  -1},
 | 
|---|
| 828 |         { 480, 481, 528, 530,  -1,  -1},
 | 
|---|
| 829 |         { 481, 482, 529, 531,  -1,  -1},
 | 
|---|
| 830 |         { 482, 530, 532,  -1,  -1,  -1},
 | 
|---|
| 831 |         { 483, 531, 533,  -1,  -1,  -1},
 | 
|---|
| 832 |         { 483, 484, 532, 534,  -1,  -1},
 | 
|---|
| 833 |         { 484, 485, 533, 535,  -1,  -1},
 | 
|---|
| 834 |         { 485, 486, 534, 536,  -1,  -1},
 | 
|---|
| 835 |         { 486, 487, 535, 537,  -1,  -1},
 | 
|---|
| 836 |         { 487, 488, 536, 538,  -1,  -1},
 | 
|---|
| 837 |         { 488, 489, 537, 539,  -1,  -1},
 | 
|---|
| 838 |         { 489, 490, 538, 540,  -1,  -1},
 | 
|---|
| 839 |         { 490, 539, 541,  -1,  -1,  -1}, // 540
 | 
|---|
| 840 |         { 491, 540, 542,  -1,  -1,  -1},
 | 
|---|
| 841 |         { 491, 492, 541, 543,  -1,  -1},
 | 
|---|
| 842 |         { 492, 493, 542, 544,  -1,  -1},
 | 
|---|
| 843 |         { 493, 494, 543, 545,  -1,  -1},
 | 
|---|
| 844 |         { 494, 495, 544, 546,  -1,  -1},
 | 
|---|
| 845 |         { 495, 496, 545, 547,  -1,  -1},
 | 
|---|
| 846 |         { 496, 497, 546, 548,  -1,  -1},
 | 
|---|
| 847 |         { 497, 498, 547, 549,  -1,  -1},
 | 
|---|
| 848 |         { 498, 548, 550,  -1,  -1,  -1},
 | 
|---|
| 849 |         { 499, 549, 551,  -1,  -1,  -1},
 | 
|---|
| 850 |         { 499, 500, 550, 552,  -1,  -1},
 | 
|---|
| 851 |         { 500, 501, 551, 553,  -1,  -1},
 | 
|---|
| 852 |         { 501, 502, 552, 554,  -1,  -1},
 | 
|---|
| 853 |         { 502, 503, 553, 555,  -1,  -1},
 | 
|---|
| 854 |         { 503, 504, 554, 556,  -1,  -1},
 | 
|---|
| 855 |         { 504, 505, 555, 557,  -1,  -1},
 | 
|---|
| 856 |         { 505, 506, 556, 558,  -1,  -1},
 | 
|---|
| 857 |         { 506, 557, 559,  -1,  -1,  -1},
 | 
|---|
| 858 |         { 507, 558, 560,  -1,  -1,  -1},
 | 
|---|
| 859 |         { 507, 508, 559, 561,  -1,  -1}, // 560
 | 
|---|
| 860 |         { 508, 509, 560, 562,  -1,  -1},
 | 
|---|
| 861 |         { 509, 510, 561, 563,  -1,  -1},
 | 
|---|
| 862 |         { 510, 511, 562, 564,  -1,  -1},
 | 
|---|
| 863 |         { 511, 512, 563, 565,  -1,  -1},
 | 
|---|
| 864 |         { 512, 513, 564, 566,  -1,  -1},
 | 
|---|
| 865 |         { 513, 514, 565, 567,  -1,  -1},
 | 
|---|
| 866 |         { 514, 566, 568,  -1,  -1,  -1},
 | 
|---|
| 867 |         { 515, 567, 569,  -1,  -1,  -1},
 | 
|---|
| 868 |         { 515, 516, 568, 570,  -1,  -1},
 | 
|---|
| 869 |         { 516, 517, 569, 571,  -1,  -1}, // 570
 | 
|---|
| 870 |         { 517, 518, 570, 572,  -1,  -1},
 | 
|---|
| 871 |         { 518, 519, 571, 573,  -1,  -1},
 | 
|---|
| 872 |         { 519, 520, 572, 574,  -1,  -1},
 | 
|---|
| 873 |         { 520, 521, 573, 575,  -1,  -1},
 | 
|---|
| 874 |         { 521, 522, 574, 576,  -1,  -1},
 | 
|---|
| 875 |         { 522, 523, 575,  -1,  -1,  -1}  // 576
 | 
|---|
| 876 |     };
 | 
|---|
| 877 | 
 | 
|---|
| 878 |     for (Int_t i=0; i<577; i++)
 | 
|---|
| 879 |         (*this)[i].SetNeighbors(nn[i][0], nn[i][1], nn[i][2],
 | 
|---|
| 880 |                                 nn[i][3], nn[i][4], nn[i][5]);
 | 
|---|
| 881 | 
 | 
|---|
| 882 |     SortNeighbors();
 | 
|---|
| 883 | }
 | 
|---|
| 884 | 
 | 
|---|
| 885 | // --------------------------------------------------------------------------
 | 
|---|
| 886 | //
 | 
|---|
| 887 | //  Magic camera has 913 pixels. For geometry and Next Neighbor info see
 | 
|---|
| 888 | //  CreateCam and CreateNN
 | 
|---|
| 889 | //
 | 
|---|
| 890 | MGeomCamMagicII::MGeomCamMagicII(const char *name)
 | 
|---|
| 891 |     : MGeomCamDwarf(505., 30, 17, name)
 | 
|---|
| 892 | {
 | 
|---|
| 893 |     SetTitle("Geometry information of Magic II Camera");
 | 
|---|
| 894 |     Rotate();
 | 
|---|
| 895 | }
 | 
|---|
| 896 | 
 | 
|---|
| 897 | // --------------------------------------------------------------------------
 | 
|---|
| 898 | //
 | 
|---|
| 899 | //  Magic II camera has 913 pixels. For geometry and Next Neighbor info see
 | 
|---|
| 900 | //  CreateCam and CreateNN. You can give the distance dist from
 | 
|---|
| 901 | //  the mirror center to the focal plane.
 | 
|---|
| 902 | //
 | 
|---|
| 903 | MGeomCamMagicII::MGeomCamMagicII(Double_t dist, const char *name)
 | 
|---|
| 904 |     : MGeomCamDwarf(505., 30, dist, name)
 | 
|---|
| 905 | {
 | 
|---|
| 906 |     SetTitle("Geometry information of Magic II Camera");
 | 
|---|
| 907 |     Rotate();
 | 
|---|
| 908 | }
 | 
|---|
| 909 | 
 | 
|---|
| 910 | // --------------------------------------------------------------------------
 | 
|---|
| 911 | //
 | 
|---|
| 912 | // Rotate all pixels by 30deg
 | 
|---|
| 913 | //
 | 
|---|
| 914 | void MGeomCamMagicII::Rotate()
 | 
|---|
| 915 | {
 | 
|---|
| 916 |     const Double_t phi = 30*TMath::DegToRad();
 | 
|---|
| 917 | 
 | 
|---|
| 918 |     const TVector2 v(TMath::Cos(phi), TMath::Sin(phi));
 | 
|---|
| 919 | 
 | 
|---|
| 920 |     for (UInt_t i=0; i<GetNumPixels(); i++)
 | 
|---|
| 921 |     {
 | 
|---|
| 922 |         MGeomPix &pix = static_cast<MGeomPix&>(operator[](i));
 | 
|---|
| 923 | 
 | 
|---|
| 924 |         pix.SetP(pix.GetP()*v, pix.GetP()^v);
 | 
|---|
| 925 |         pix.SetPhi(phi);
 | 
|---|
| 926 |     }
 | 
|---|
| 927 | }
 | 
|---|
| 928 | 
 | 
|---|
| 929 | // --------------------------------------------------------------------------
 | 
|---|
| 930 | //
 | 
|---|
| 931 | // Check if the photon which is flying along the trajectory u has passed
 | 
|---|
| 932 | // (or will pass) the frame of the camera (and consequently get
 | 
|---|
| 933 | // absorbed). The position p and direction u must be in the
 | 
|---|
| 934 | // telescope coordinate frame, which is z parallel to the focal plane,
 | 
|---|
| 935 | // x to the right and y upwards, looking from the mirror towards the camera.
 | 
|---|
| 936 | //
 | 
|---|
| 937 | Bool_t MGeomCamMagicII::HitFrame(MQuaternion p, const MQuaternion &u) const
 | 
|---|
| 938 | {
 | 
|---|
| 939 |     // z is defined from the mirror (0) to the camera (z>0).
 | 
|---|
| 940 |     // Thus we just propagate to the focal plane (z=fDist)
 | 
|---|
| 941 |     p.PropagateZ(u, GetCameraDist()*100);
 | 
|---|
| 942 | 
 | 
|---|
| 943 |     return TMath::Abs(p.X())<65 && TMath::Abs(p.Y())<65;
 | 
|---|
| 944 | }
 | 
|---|