Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:52

0001 #include "MbdGeomV2.h"
0002 
0003 #include <cmath>
0004 
0005 // kludge where we have the hardcoded positions of the tubes
0006 // Should really be put in a database
0007 // These are the x,y for the south MBD (in cm).
0008 // The north inverts the x coordinate (x -> -x)
0009 static const float PmtLoc[64][2] = {
0010     {-12.2976, 4.26},
0011     {-12.2976, 1.42},
0012     {-9.83805, 8.52},
0013     {-9.83805, 5.68},
0014     {-9.83805, 2.84},
0015     {-7.37854, 9.94},
0016     {-7.37854, 7.1},
0017     {-7.37854, 4.26},
0018     {-7.37854, 1.42},
0019     {-4.91902, 11.36},
0020     {-4.91902, 8.52},
0021     {-4.91902, 5.68},
0022     {-2.45951, 12.78},
0023     {-2.45951, 9.94},
0024     {-2.45951, 7.1},
0025     {0, 11.36},
0026     {0, 8.52},
0027     {2.45951, 12.78},
0028     {2.45951, 9.94},
0029     {2.45951, 7.1},
0030     {4.91902, 11.36},
0031     {4.91902, 8.52},
0032     {4.91902, 5.68},
0033     {7.37854, 9.94},
0034     {7.37854, 7.1},
0035     {7.37854, 4.26},
0036     {7.37854, 1.42},
0037     {9.83805, 8.52},
0038     {9.83805, 5.68},
0039     {9.83805, 2.84},
0040     {12.2976, 4.26},
0041     {12.2976, 1.42},
0042     {12.2976, -4.26},
0043     {12.2976, -1.42},
0044     {9.83805, -8.52},
0045     {9.83805, -5.68},
0046     {9.83805, -2.84},
0047     {7.37854, -9.94},
0048     {7.37854, -7.1},
0049     {7.37854, -4.26},
0050     {7.37854, -1.42},
0051     {4.91902, -11.36},
0052     {4.91902, -8.52},
0053     {4.91902, -5.68},
0054     {2.45951, -12.78},
0055     {2.45951, -9.94},
0056     {2.45951, -7.1},
0057     {0, -11.36},
0058     {0, -8.52},
0059     {-2.45951, -12.78},
0060     {-2.45951, -9.94},
0061     {-2.45951, -7.1},
0062     {-4.91902, -11.36},
0063     {-4.91902, -8.52},
0064     {-4.91902, -5.68},
0065     {-7.37854, -9.94},
0066     {-7.37854, -7.1},
0067     {-7.37854, -4.26},
0068     {-7.37854, -1.42},
0069     {-9.83805, -8.52},
0070     {-9.83805, -5.68},
0071     {-9.83805, -2.84},
0072     {-12.2976, -4.26},
0073     {-12.2976, -1.42}};
0074 
0075 MbdGeomV2::MbdGeomV2()
0076 {
0077   // Set the pmt locations
0078   for (unsigned int ipmt = 0; ipmt < 128; ipmt++)
0079   {
0080     int arm = ipmt / 64;
0081 
0082     float xsign = 1.;
0083     float zsign = -1.;
0084     if (arm == 1)  // north
0085     {
0086       xsign = -1.;
0087       zsign = 1.;
0088     }
0089 
0090     float tube_x = xsign * PmtLoc[ipmt % 64][0];
0091     float tube_y = PmtLoc[ipmt % 64][1];
0092     float tube_z = zsign * 253.;
0093 
0094     MbdGeomV2::set_xyz(ipmt, tube_x, tube_y, tube_z);
0095   }
0096 
0097 }
0098 
0099 void MbdGeomV2::set_xyz(const unsigned int ipmt, const float x, const float y, const float z)
0100 {
0101   pmt_x[ipmt] = x;
0102   pmt_y[ipmt] = y;
0103   pmt_z[ipmt] = z;
0104   pmt_r[ipmt] = std::sqrt((x * x) + (y * y));
0105   pmt_phi[ipmt] = std::atan2(y, x);
0106 }
0107 
0108 const std::multimap<int,int>& MbdGeomV2::get_hvmap()
0109 {
0110   if ( pmt_hv.empty() )
0111   {
0112     download_hv();
0113   }
0114   return pmt_hv;
0115 }
0116 
0117 void MbdGeomV2::download_hv()
0118 {
0119   // South HV Map
0120   pmt_hv.insert(std::pair<int, int>( 0, 0 ));
0121   pmt_hv.insert(std::pair<int, int>( 0, 1 ));
0122   pmt_hv.insert(std::pair<int, int>( 0, 2 ));
0123   pmt_hv.insert(std::pair<int, int>( 0, 3 ));
0124   pmt_hv.insert(std::pair<int, int>( 0, 4 ));
0125   pmt_hv.insert(std::pair<int, int>( 0, 5 ));
0126   pmt_hv.insert(std::pair<int, int>( 0, 6 ));
0127   pmt_hv.insert(std::pair<int, int>( 0, 10 ));
0128   pmt_hv.insert(std::pair<int, int>( 1, 9 ));
0129   pmt_hv.insert(std::pair<int, int>( 1, 12 ));
0130   pmt_hv.insert(std::pair<int, int>( 1, 13 ));
0131   pmt_hv.insert(std::pair<int, int>( 1, 15 ));
0132   pmt_hv.insert(std::pair<int, int>( 1, 17 ));
0133   pmt_hv.insert(std::pair<int, int>( 1, 18 ));
0134   pmt_hv.insert(std::pair<int, int>( 1, 20 ));
0135   pmt_hv.insert(std::pair<int, int>( 1, 23 ));
0136   pmt_hv.insert(std::pair<int, int>( 2, 7 ));
0137   pmt_hv.insert(std::pair<int, int>( 2, 8 ));
0138   pmt_hv.insert(std::pair<int, int>( 2, 11 ));
0139   pmt_hv.insert(std::pair<int, int>( 2, 14 ));
0140   pmt_hv.insert(std::pair<int, int>( 2, 16 ));
0141   pmt_hv.insert(std::pair<int, int>( 2, 19 ));
0142   pmt_hv.insert(std::pair<int, int>( 2, 22 ));
0143   pmt_hv.insert(std::pair<int, int>( 2, 25 ));
0144   pmt_hv.insert(std::pair<int, int>( 2, 26 ));
0145   pmt_hv.insert(std::pair<int, int>( 3, 21 ));
0146   pmt_hv.insert(std::pair<int, int>( 3, 24 ));
0147   pmt_hv.insert(std::pair<int, int>( 3, 27 ));
0148   pmt_hv.insert(std::pair<int, int>( 3, 28 ));
0149   pmt_hv.insert(std::pair<int, int>( 3, 29 ));
0150   pmt_hv.insert(std::pair<int, int>( 3, 30 ));
0151   pmt_hv.insert(std::pair<int, int>( 3, 31 ));
0152   pmt_hv.insert(std::pair<int, int>( 4, 32 ));
0153   pmt_hv.insert(std::pair<int, int>( 4, 33 ));
0154   pmt_hv.insert(std::pair<int, int>( 4, 34 ));
0155   pmt_hv.insert(std::pair<int, int>( 4, 35 ));
0156   pmt_hv.insert(std::pair<int, int>( 4, 36 ));
0157   pmt_hv.insert(std::pair<int, int>( 4, 37 ));
0158   pmt_hv.insert(std::pair<int, int>( 4, 38 ));
0159   pmt_hv.insert(std::pair<int, int>( 4, 42 ));
0160   pmt_hv.insert(std::pair<int, int>( 5, 41 ));
0161   pmt_hv.insert(std::pair<int, int>( 5, 44 ));
0162   pmt_hv.insert(std::pair<int, int>( 5, 45 ));
0163   pmt_hv.insert(std::pair<int, int>( 5, 47 ));
0164   pmt_hv.insert(std::pair<int, int>( 5, 49 ));
0165   pmt_hv.insert(std::pair<int, int>( 5, 50 ));
0166   pmt_hv.insert(std::pair<int, int>( 5, 52 ));
0167   pmt_hv.insert(std::pair<int, int>( 6, 39 ));
0168   pmt_hv.insert(std::pair<int, int>( 6, 40 ));
0169   pmt_hv.insert(std::pair<int, int>( 6, 43 ));
0170   pmt_hv.insert(std::pair<int, int>( 6, 46 ));
0171   pmt_hv.insert(std::pair<int, int>( 6, 48 ));
0172   pmt_hv.insert(std::pair<int, int>( 6, 51 ));
0173   pmt_hv.insert(std::pair<int, int>( 6, 54 ));
0174   pmt_hv.insert(std::pair<int, int>( 6, 57 ));
0175   pmt_hv.insert(std::pair<int, int>( 6, 58 ));
0176   pmt_hv.insert(std::pair<int, int>( 6, 60 ));
0177   pmt_hv.insert(std::pair<int, int>( 7, 53 ));
0178   pmt_hv.insert(std::pair<int, int>( 7, 55 ));
0179   pmt_hv.insert(std::pair<int, int>( 7, 56 ));
0180   pmt_hv.insert(std::pair<int, int>( 7, 59 ));
0181   pmt_hv.insert(std::pair<int, int>( 7, 61 ));
0182   pmt_hv.insert(std::pair<int, int>( 7, 62 ));
0183   pmt_hv.insert(std::pair<int, int>( 7, 63 ));
0184 
0185   // North HV Map
0186   pmt_hv.insert(std::pair<int, int>( 8, 64 ));
0187   pmt_hv.insert(std::pair<int, int>( 8, 65 ));
0188   pmt_hv.insert(std::pair<int, int>( 8, 66 ));
0189   pmt_hv.insert(std::pair<int, int>( 8, 67 ));
0190   pmt_hv.insert(std::pair<int, int>( 8, 68 ));
0191   pmt_hv.insert(std::pair<int, int>( 8, 70 ));
0192   pmt_hv.insert(std::pair<int, int>( 8, 74 ));
0193   pmt_hv.insert(std::pair<int, int>( 8, 77 ));
0194   pmt_hv.insert(std::pair<int, int>( 9, 76 ));
0195   pmt_hv.insert(std::pair<int, int>( 9, 81 ));
0196   pmt_hv.insert(std::pair<int, int>( 9, 84 ));
0197   pmt_hv.insert(std::pair<int, int>( 9, 87 ));
0198   pmt_hv.insert(std::pair<int, int>( 9, 91 ));
0199   pmt_hv.insert(std::pair<int, int>( 9, 94 ));
0200   pmt_hv.insert(std::pair<int, int>( 9, 95 ));
0201   pmt_hv.insert(std::pair<int, int>( 10, 71 ));
0202   pmt_hv.insert(std::pair<int, int>( 10, 72 ));
0203   pmt_hv.insert(std::pair<int, int>( 10, 75 ));
0204   pmt_hv.insert(std::pair<int, int>( 10, 78 ));
0205   pmt_hv.insert(std::pair<int, int>( 10, 80 ));
0206   pmt_hv.insert(std::pair<int, int>( 10, 83 ));
0207   pmt_hv.insert(std::pair<int, int>( 10, 86 ));
0208   pmt_hv.insert(std::pair<int, int>( 10, 89 ));
0209   pmt_hv.insert(std::pair<int, int>( 10, 90 ));
0210   pmt_hv.insert(std::pair<int, int>( 11, 69 ));
0211   pmt_hv.insert(std::pair<int, int>( 11, 73 ));
0212   pmt_hv.insert(std::pair<int, int>( 11, 79 ));
0213   pmt_hv.insert(std::pair<int, int>( 11, 82 ));
0214   pmt_hv.insert(std::pair<int, int>( 11, 85 ));
0215   pmt_hv.insert(std::pair<int, int>( 11, 88 ));
0216   pmt_hv.insert(std::pair<int, int>( 11, 92 ));
0217   pmt_hv.insert(std::pair<int, int>( 11, 93 ));
0218   pmt_hv.insert(std::pair<int, int>( 12, 96 ));
0219   pmt_hv.insert(std::pair<int, int>( 12, 97 ));
0220   pmt_hv.insert(std::pair<int, int>( 12, 98 ));
0221   pmt_hv.insert(std::pair<int, int>( 12, 99 ));
0222   pmt_hv.insert(std::pair<int, int>( 12, 100 ));
0223   pmt_hv.insert(std::pair<int, int>( 12, 102 ));
0224   pmt_hv.insert(std::pair<int, int>( 12, 106 ));
0225   pmt_hv.insert(std::pair<int, int>( 12, 108 ));
0226   pmt_hv.insert(std::pair<int, int>( 12, 109 ));
0227   pmt_hv.insert(std::pair<int, int>( 13, 101 ));
0228   pmt_hv.insert(std::pair<int, int>( 13, 105 ));
0229   pmt_hv.insert(std::pair<int, int>( 13, 111 ));
0230   pmt_hv.insert(std::pair<int, int>( 13, 119 ));
0231   pmt_hv.insert(std::pair<int, int>( 14, 103 ));
0232   pmt_hv.insert(std::pair<int, int>( 14, 104 ));
0233   pmt_hv.insert(std::pair<int, int>( 14, 107 ));
0234   pmt_hv.insert(std::pair<int, int>( 14, 110 ));
0235   pmt_hv.insert(std::pair<int, int>( 14, 112 ));
0236   pmt_hv.insert(std::pair<int, int>( 14, 115 ));
0237   pmt_hv.insert(std::pair<int, int>( 14, 116 ));
0238   pmt_hv.insert(std::pair<int, int>( 14, 118 ));
0239   pmt_hv.insert(std::pair<int, int>( 14, 121 ));
0240   pmt_hv.insert(std::pair<int, int>( 14, 122 ));
0241   pmt_hv.insert(std::pair<int, int>( 15, 113 ));
0242   pmt_hv.insert(std::pair<int, int>( 15, 114 ));
0243   pmt_hv.insert(std::pair<int, int>( 15, 117 ));
0244   pmt_hv.insert(std::pair<int, int>( 15, 120 ));
0245   pmt_hv.insert(std::pair<int, int>( 15, 123 ));
0246   pmt_hv.insert(std::pair<int, int>( 15, 124 ));
0247   pmt_hv.insert(std::pair<int, int>( 15, 125 ));
0248   pmt_hv.insert(std::pair<int, int>( 15, 126 ));
0249   pmt_hv.insert(std::pair<int, int>( 15, 127 ));
0250 
0251 }
0252