Belle II Software  release-05-01-25
SegmentHit.cc
1 //-----------------------------------------------------------------------------
2 // $Id$
3 //-----------------------------------------------------------------------------
4 // Filename : SegmentHit.cc
5 // Section : TRG CDC
6 // Owner : Yoshihito Iwasaki
7 // Email : yoshihito.iwasaki@kek.jp
8 //-----------------------------------------------------------------------------
9 // Description : A class to represent a track segment hit in CDC.
10 //-----------------------------------------------------------------------------
11 // $Log$
12 //-----------------------------------------------------------------------------
13 
14 #define TRG_SHORT_NAMES
15 #define TRGCDC_SHORT_NAMES
16 
17 #include <stdlib.h>
18 #include "trg/cdc/Segment.h"
19 #include "trg/cdc/SegmentHit.h"
20 #include "trg/cdc/Wire.h"
21 #include "trg/cdc/WireHit.h"
22 
23 using namespace std;
24 
25 namespace Belle2 {
31  vector<TRGCDCSegmentHit*> TRGCDCSegmentHit::_all;
32 
33  TRGCDCSegmentHit::TRGCDCSegmentHit(const TCSegment& w)
34 // : TCCHit((TCCHit &) * w.center().hit()) {
35  : TCCHit(w,
36  //w.center().hit()->iCDCHit(),
37  //w.center().hit()->iCDCSimHit(),
38  //w.center().hit()->iMCParticle(),
39  //w.center().hit()->drift(0),
40  //w.center().hit()->dDrift(0),
41  //w.center().hit()->drift(1),
42  //w.center().hit()->dDrift(1),
43  //w.center().hit()->mcLR()) {
44  w.priority().hit()->iCDCHit(),
45  w.priority().hit()->iCDCSimHit(),
46  w.priority().hit()->iMCParticle(),
47  w.priority().hit()->drift(0),
48  w.priority().hit()->dDrift(0),
49  w.priority().hit()->drift(1),
50  w.priority().hit()->dDrift(1),
51  w.priority().hit()->mcLR())
52  {
53  }
54 
56  {
57  }
58 
59  int
61  const TRGCDCSegmentHit** b)
62  {
63  if ((* a)->cell().id() > (* b)->cell().id())
64  return 1;
65  else if ((* a)->cell().id() == (* b)->cell().id())
66  return 0;
67  else
68  return -1;
69  }
70 
71  void
72  TRGCDCSegmentHit::dump(const std::string& message,
73  const std::string& prefix) const
74  {
75  TCCHit::dump(message, prefix);
76  }
77 
78  const TRGCDCSegment&
80  {
81  return dynamic_cast<const TRGCDCSegment&>(cell());
82  }
83 
84  void
86  {
87  while (_all.size())
88  delete _all.back();
89  }
90 
91  void*
92  TRGCDCSegmentHit::operator new(size_t size)
93  {
94  void* p = malloc(size);
95  _all.push_back((TRGCDCSegmentHit*) p);
96 
97 // cout << ">---------------------" << endl;
98 // for (unsigned i = 0; i < _all.size(); i++)
99 // cout << "> " << i << " " << _all[i] << endl;
100 
101  return p;
102  }
103 
104  void
105  TRGCDCSegmentHit::operator delete(void* t)
106  {
107  for (vector<TRGCDCSegmentHit*>::iterator it = _all.begin();
108  it != _all.end();
109  ++it) {
110  if ((* it) == (TRGCDCSegmentHit*) t) {
111  _all.erase(it);
112  break;
113  }
114  }
115  free(t);
116 
117 // cout << "<---------------------" << endl;
118 // cout << "==> " << t << " erased" << endl;
119 // for (unsigned i = 0; i < _all.size(); i++)
120 // cout << "< " << i << " " << _all[i] << endl;
121  }
122 
124 } // namespace Belle2
Belle2::TRGCDCSegmentHit::sortById
static int sortById(const TRGCDCSegmentHit **a, const TRGCDCSegmentHit **b)
Sorting funnction.
Definition: SegmentHit.cc:60
Belle2::TRGCDCSegmentHit::~TRGCDCSegmentHit
virtual ~TRGCDCSegmentHit()
Destructor.
Definition: SegmentHit.cc:55
Belle2::TRGCDCSegmentHit::segment
const TRGCDCSegment & segment(void) const
returns a pointer to a track segment.
Definition: SegmentHit.cc:79
Belle2::TRGCDCSegmentHit::dump
virtual void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const override
dumps debug information.
Definition: SegmentHit.cc:72
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TRGCDCSegmentHit
A class to represent a track segment hit in CDC.
Definition: SegmentHit.h:32
Belle2::TRGCDCSegment
A class to represent a wire in CDC.
Definition: Segment.h:40
Belle2::TRGCDCCellHit::cell
virtual const TRGCDCCell & cell(void) const
returns a pointer to a TRGCDCWire.
Definition: CellHit.h:253
Belle2::TRGCDCSegmentHit::_all
static std::vector< TRGCDCSegmentHit * > _all
Keeps all TRGCDCSegmentHit created by new().
Definition: SegmentHit.h:74
Belle2::TRGCDCSegmentHit::removeAll
static void removeAll(void)
destructs all TRGCDCCellHit objects. (Called by TRGCDC)
Definition: SegmentHit.cc:85