Belle II Software  release-05-01-25
HoughPlaneMulti2.cc
1 //-----------------------------------------------------------------------------
2 // $Id$
3 //-----------------------------------------------------------------------------
4 // Filename : HoughPlaneMulti2.cc
5 // Section : TRG CDC
6 // Owner : Yoshihito Iwasaki
7 // Email : yoshihito.iwasaki@kek.jp
8 //-----------------------------------------------------------------------------
9 // Description : A class to represent multi Hough parameter planes (version 2)
10 //-----------------------------------------------------------------------------
11 // $Log$
12 //-----------------------------------------------------------------------------
13 
14 #define TRG_SHORT_NAMES
15 #define TRGCDC_SHORT_NAMES
16 
17 #include "trg/trg/Utilities.h"
18 #include "trg/cdc/HoughPlaneMulti2.h"
19 
20 namespace Belle2 {
27  const TCHTransformation& trans,
28  unsigned nX,
29  float xMin,
30  float xMax,
31  unsigned nY,
32  float yMin,
33  float yMax,
34  unsigned nLayers)
35  : TRGCDCHoughPlane(name, trans, nX, xMin, xMax, nY, yMin, yMax),
36  _nLayers(nLayers),
37  _reverse{} // 2019/07/31 by ytlai
38  {
39 
40  for (unsigned i = 0; i < N_LAYERS; i++)
41  _usage[i] = false;
42  for (unsigned i = 0; i < _nLayers; i++)
43  _layers[i] = new TCHPlaneBoolean(name +
44  ":layer" +
45  TRGUtil::itostring(i),
46  trans,
47  nX,
48  xMin,
49  xMax,
50  nY,
51  yMin,
52  yMax);
53  if (nLayers > N_LAYERS)
54  std::cout
55  << "Too many layers requested(" << _nLayers << ") : "
56  << "max #layers = " << N_LAYERS << std::endl;
57  }
58 
60  {
61  for (unsigned i = 0; i < _nLayers; i++)
62  delete _layers[i];
63  }
64 
65  void
67  {
68  const unsigned n = _layers[0]->_n;
69  for (unsigned i = 0; i < _nLayers; i++) {
70 
71  //...Use _usage here...
72  if (! _usage[i]) continue;
73 
74  for (unsigned j = 0; j < n; j++) {
75  if (! _layers[i]->_cell[j]) continue;
76  for (unsigned k = 0; k < 32; k++) {
77  if ((_layers[i]->_cell[j] >> k) & 1) {
78  add(j * 32 + k, 1);
79  }
80  }
81  }
82  }
83  }
84 
85  void
87  {
88  const unsigned n = _layers[0]->_n;
89  for (unsigned i = 1; i < _nLayers; i++) {
90 
91  //...Use _usage here...
92  if (! _usage[i]) continue;
93 
94  for (unsigned j = 0; j < n; j++) {
95  if (! _layers[i]->_cell[j]) continue;
96  for (unsigned k = 0; k < 32; k++) {
97  if ((_layers[i]->_cell[j] >> k) & 1) {
98  add(j * 32 + k, 1);
99  }
100  }
101  }
102  }
103  }
104 
106 } // namespace Belle2
Belle2::TRGCDCHoughPlaneMulti2::~TRGCDCHoughPlaneMulti2
virtual ~TRGCDCHoughPlaneMulti2()
Destructor.
Definition: HoughPlaneMulti2.cc:59
Belle2::TRGCDCHoughPlaneBoolean::_n
unsigned _n
nX * nY / 32 + 1
Definition: HoughPlaneBoolean.h:102
Belle2::TRGCDCHoughPlane
A class to represent a Hough parameter plane.
Definition: HoughPlane.h:31
Belle2::TRGCDCHoughPlane::add
void add(unsigned cellId, int weight) override
Add to a cell.
Definition: HoughPlane.h:160
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TRGCDCHoughPlaneMulti2::_nLayers
unsigned _nLayers
# of layers.
Definition: HoughPlaneMulti2.h:128
Belle2::TRGCDCHoughPlaneMulti2::merge
void merge(void)
Merge layers into one.
Definition: HoughPlaneMulti2.cc:66
N_LAYERS
#define N_LAYERS
number of layers
Definition: HoughPlaneMulti.h:31
Belle2::TRGCDCHoughPlaneMulti2::_layers
TRGCDCHoughPlaneBoolean * _layers[N_LAYERS]
Hough plane for each layer.
Definition: HoughPlaneMulti2.h:131
Belle2::TRGCDCHoughPlaneMulti2::_usage
bool _usage[N_LAYERS]
Used or not.
Definition: HoughPlaneMulti2.h:134
Belle2::TRGCDCHoughPlaneMulti2::mergeOuters
void mergeOuters(void)
Merge outer layers into one.
Definition: HoughPlaneMulti2.cc:86
Belle2::TRGCDCHoughPlane::_cell
int *const _cell
Counters.
Definition: HoughPlane.h:87
Belle2::TRGCDCHoughPlaneMulti2::TRGCDCHoughPlaneMulti2
TRGCDCHoughPlaneMulti2(const std::string &name, const TRGCDCHoughTransformation &transformation, unsigned nX, float xMin, float xMax, unsigned nY, float yMin, float yMax, unsigned nLayers)
Contructor.
Definition: HoughPlaneMulti2.cc:26