Belle II Software  release-05-01-25
SVDPar.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Katsuro Nakamura *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #ifndef SVD_PAR_H_
12 #define SVD_PAR_H_
13 
14 #include <vxd/dataobjects/VxdID.h>
15 
16 namespace Belle2 {
21  /* This namespace provides basic parameters in SVD setup.
22  */
23 
24  namespace SVDPar {
25 
26  const unsigned short maxLayer = 5;
27  const unsigned short minLayer = 2;
28  const unsigned short nLayer = maxLayer - minLayer + 1;
29  const unsigned short nLadder_L3 = 7;
30  const unsigned short nLadder_L4 = 10;
31  const unsigned short nLadder_L5 = 12;
32  const unsigned short nLadder_L6 = 16;
33  const unsigned short nLadder[nLayer] =
34  {nLadder_L3, nLadder_L4, nLadder_L5, nLadder_L6};
35  const unsigned short nSensor_L3 = 2;
36  const unsigned short nSensor_L4 = 3;
37  const unsigned short nSensor_L5 = 4;
38  const unsigned short nSensor_L6 = 5;
39  const unsigned short nSensor[nLayer] =
40  {nSensor_L3, nSensor_L4, nSensor_L5, nSensor_L6};
41  //const unsigned short nSegment = 2;
42  const unsigned short nPN = 2;
43  const unsigned short maxStrip = 768;
44 
45  const unsigned short maxSample = 6;
46 
47  const unsigned short NApvPerHybrid = 6;
48 
49  const unsigned short nSensorID =
50  (unsigned short)(nSensor_L3 * nLadder_L3 +
51  nSensor_L4 * nLadder_L4 +
52  nSensor_L5 * nLadder_L5 +
53  nSensor_L6* nLadder_L6) * nPN;
54 
55 
56  short getSVDSensorID(const unsigned short layer,
57  const unsigned short ladder,
58  const unsigned short sensor,
59  const unsigned short pn)
60  {
61 
62  if (layer < minLayer || maxLayer < layer || 2 <= pn) {
63  return -1;
64  }
65 
66  short sensor_id_base = 0;
67 
68  if (layer == 2) {
69  if (nLadder[0] <= ladder || nSensor[0] <= sensor) return -2;
70  return nPN * nSensor[0] * ladder + nPN * sensor + pn;
71  }
72 
73  sensor_id_base += nPN * nSensor[0] * nLadder[0];
74  if (layer == 3) {
75  if (nLadder[1] <= ladder || nSensor[1] <= sensor) return -3;
76  return sensor_id_base + nPN * nSensor[1] * ladder + nPN * sensor + pn;
77  }
78 
79  sensor_id_base += nPN * nSensor[1] * nLadder[1];
80  if (layer == 4) {
81  if (nLadder[2] <= ladder || nSensor[2] <= sensor) return -4;
82  return sensor_id_base + nPN * nSensor[2] * ladder + nPN * sensor + pn;
83  }
84 
85  sensor_id_base += nPN * nSensor[2] * nLadder[2];
86  if (layer == 5) {
87  if (nLadder[3] <= ladder || nSensor[3] <= sensor) return -5;
88  return sensor_id_base + nPN * nSensor[3] * ladder + nPN * sensor + pn;
89  }
90 
91  return -9;
92  }
93 
94  short getSVDSensorID(VxdID id, bool is_u)
95  {
96  unsigned short layer = id.getLayerNumber() - 1;
97  unsigned short ladder = id.getLadderNumber();
98  //unsigned short sensor = id.getSensorNumber();
99  unsigned short sensor = 0; // workround solution for DESY beam data
100  //unsigned short segment = id.getSegmentNumber();
101 
102  unsigned short pn = (is_u) ? 0 : 1; // 0: p-side, 1: n-side
103 
104  //std::cout << "VxdID: " << id.getID() << " = layer: " << layer << ", ladder: " << ladder << ", sensor: " << sensor << ", segment: " << segment << std::endl;
105 
106  return getSVDSensorID(layer, ladder, sensor, pn);
107  }
108 
109  } // namespace SVDPar
110 
112 } // namespace Belle2
113 
114 #endif
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19