Belle II Software development
Segment.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9//-----------------------------------------------------------------------------
10// Description : A class to represent a wire in CDC.
11//-----------------------------------------------------------------------------
12
13#ifndef TRGCDCSegment_FLAG_
14#define TRGCDCSegment_FLAG_
15
16#include <vector>
17#include "trg/cdc/LUT.h"
18#include "trg/cdc/Cell.h"
19
20#ifdef TRGCDC_SHORT_NAMES
21#define TCSegment TRGCDCSegment
22#endif
23
24namespace Belle2 {
29
30 class TRGSignal;
31 class TRGCDCWire;
32 class TRGCDCLayer;
33 class TRGCDCLUT;
34 class TRGCDCWireHit;
35 class TRGCDCSegmentHit;
37
39 class TRGCDCSegment : public TRGCDCCell {
40
41 public:
42
44 TRGCDCSegment(unsigned id,
45 const TRGCDCLayer& layer,
46 const TRGCDCWire& w,
47 const TRGClock& clock,
48 const std::string& TSLUTFile,
49 const std::vector<const TRGCDCWire*>& wires);
50
52 virtual ~TRGCDCSegment();
53
54 public:// Selectors
55
57 const std::vector<const TRGCDCWire*>& wires(void) const;
58
60 std::string name(void) const override;
61
63 const TRGCDCWire* operator[](unsigned id) const;
64
66 const TRGCDCWire& center(void) const;
67
69 const TRGCDCWire& priority(void) const;
70
72 const TRGSignal& signal(void) const override;
73
75 const TRGSignal& signal_adc(void) const override;
76
78 const TRGCDCSegmentHit* hit(void) const;
79
81 const std::vector<const CDCTriggerSegmentHit*> storeHits(void) const;
82
84 unsigned hitPattern(void) const;
86 unsigned hitPattern_adc(void) const;
88 unsigned hitPattern(int clk0, int clk1) const;
90 std::vector<float> hitPatternTime(void) const;
92 unsigned lutPattern(void) const;
94 unsigned lutPattern(int clk0, int clk1) const;
95
97 float fastestTime(void) const;
99 float fastestTime(int clk0) const;
100
102 float foundTime(void)const;
103
105 float priorityTime(void) const;
106
108 int priorityPosition(void)const;
110 int priorityPosition(int clk0, int clk1)const;
111
113 const TRGCDCLUT* LUT(void) const;
114
116 void dump(const std::string& message = std::string(""),
117 const std::string& prefix = std::string("")) const override;
118
119
121 void initialize(void);
123 void initialize(bool fevtTime);
124
125 public:// Utility functions
126
128 /* static const std::vector<const TRGCDCSegment *> */
129 /* axial(const std::vector<const TRGCDCSegment *> & list); */
130
132 static unsigned
133 nStereo(const std::vector<const TRGCDCSegment*>& list);
134
136 virtual bool hasMember(const std::string& a) const override;
137
138 public:// Modifiers
139
141 void clear(void) override;
142
144 void simulate(bool clockSimulation, bool logicLUTFlag,
145 const std::string& cdcCollectionName = std::string(""),
146 const std::string& tsCollectionName = std::string(""));
147
150
153
154 public:
155
157 void simulateWithoutClock(bool logicLUTFlag);
158
160 void simulateWithClock(std::string cdcCollectionName,
161 std::string tsCollectionName);
162
163 private:
164
166 TRGCDCLUT* m_TSLUT = nullptr;
167
169// const TRGCDCLUT * const _lut; //Will be Removed.
170
172 std::vector<const TRGCDCWire*> _wires;
173
176
179
182
184 std::vector<const TRGCDCWireHit*> _hits;
185
187 std::vector<const CDCTriggerSegmentHit*> _storeHits;
188
190 std::string m_TSLUTFileName;
191
192 // Friends
193 friend class TRGCDC;
194 };
195
196//-----------------------------------------------------------------------------
197
198 inline
199 const std::vector<const TRGCDCWire*>&
201 {
202 return _wires;
203 }
204
205 inline
206 const TRGCDCWire*
207 TRGCDCSegment::operator[](unsigned id) const
208 {
209 if (id < _wires.size())
210 return _wires[id];
211 return 0;
212 }
213
214 inline
215 const TRGSignal&
217 {
218 return _signal;
219 }
220
221 inline
222 const TRGSignal&
224 {
225 return _signal_adc;
226 }
227
228 inline
229 const TRGCDCSegmentHit*
231 {
232 //TODO only this strong retyping work, is it OK?
233 return reinterpret_cast<const TRGCDCSegmentHit*>(TRGCDCCell::hit(reinterpret_cast<const TRGCDCCellHit*>(h)));
234 }
235
236 inline
237 const TRGCDCSegmentHit*
239 {
240 //TODO only this strong retyping work, is it OK?
241 return reinterpret_cast<const TRGCDCSegmentHit*>(TRGCDCCell::hit());
242 }
243
244 inline
245 void
247 {
248 _storeHits.push_back(h);
249 }
250
251 inline
252 const std::vector<const CDCTriggerSegmentHit*>
254 {
255 return _storeHits;
256 }
257
258 inline
259 const TRGCDCLUT*
261 {
262 return m_TSLUT;
263 }
264
265 inline
266 const TRGCDCWire&
268 {
269 if (_wires.size() == 15)
270 return * _wires[0];
271 return * _wires[5];
272 }
273
275} // namespace Belle2
276
277#endif /* TRGCDCSegment_FLAG_ */
Combination of several CDCHits to a track segment hit for the trigger.
A class to represent a wire hit in CDC.
Definition CellHit.h:74
A class to use LUTs for TRGCDC.
Definition LUT.h:39
A class to represent a cell layer.
Definition Layer.h:33
A class to represent a track segment hit in CDC.
Definition SegmentHit.h:31
std::vector< const TRGCDCWire * > _wires
LookUp Table.
Definition Segment.h:172
std::vector< const CDCTriggerSegmentHit * > _storeHits
list of DataStore hits.
Definition Segment.h:187
TRGSignal _signal
Trigger signal.
Definition Segment.h:178
void initialize(bool fevtTime)
initialize variables.
std::vector< const TRGCDCWireHit * > _hits
Wire hits.
Definition Segment.h:184
std::string m_TSLUTFileName
TS LUT file name.
Definition Segment.h:190
TRGCDCLUT * m_TSLUT
LookUp Table. 0: no hit, 1: right, 2: left, 3: not determined.
Definition Segment.h:166
static unsigned nStereo(const std::vector< const TRGCDCSegment * > &list)
returns axial segments.
TRGSignal _signal_adc
Trigger signal.
Definition Segment.h:181
const TRGCDCWire * _center
Center wire.
Definition Segment.h:175
A class to represent a wire hit in CDC.
Definition WireHit.h:33
A class to represent a wire in CDC.
Definition Wire.h:56
A class to represent a digitized signal. Unit is nano second.
Definition Clock.h:38
A class to represent a digitized signal. Unit is nano second.
Definition Signal.h:23
virtual bool hasMember(const std::string &a) const override
returns true this has member named a.
Definition Segment.cc:604
const TRGCDCWire & center(void) const
returns a center wire.
Definition Segment.h:267
int priorityPosition(void) const
return priority cell position in TSHit. 0: no hit, 3: 1st priority, 1: 2nd right, 2: 2nd left
Definition Segment.cc:473
float fastestTime(void) const
return fastest time in TSHit.
Definition Segment.cc:387
unsigned id(void) const
returns id.
Definition Cell.h:200
void addStoreHit(const CDCTriggerSegmentHit *)
sets a pointer to a CDCTriggerSegmentHit.
Definition Segment.h:246
virtual ~TRGCDCSegment()
Destructor.
Definition Segment.cc:60
void simulateWithoutClock(bool logicLUTFlag)
simulates time-indegrated TF hit
Definition Segment.cc:176
void simulateWithClock(std::string cdcCollectionName, std::string tsCollectionName)
simulates TF hit time-dependently
Definition Segment.cc:291
unsigned hitPattern(void) const
returns hit pattern.
Definition Segment.cc:535
const TRGCDCCellHit * hit(void) const
returns a pointer to a TRGCDCCellHit.
Definition Cell.h:365
const TRGSignal & signal(void) const override
returns trigger output. Null will returned if no signal.
Definition Segment.h:216
const TRGCDCWire & priority(void) const
returns priority wire.
Definition Segment.cc:525
std::vector< float > hitPatternTime(void) const
returns hit pattern with hit time
Definition Segment.cc:546
TRGCDCSegment(unsigned id, const TRGCDCLayer &layer, const TRGCDCWire &w, const TRGClock &clock, const std::string &TSLUTFile, const std::vector< const TRGCDCWire * > &wires)
Constructor.
Definition Segment.cc:40
void initialize(void)
initialize variables.
Definition Segment.cc:65
std::string name(void) const override
returns name.
Definition Segment.cc:141
unsigned lutPattern(void) const
hit pattern containing bit for priority position
Definition Segment.cc:584
void simulate(bool clockSimulation, bool logicLUTFlag, const std::string &cdcCollectionName=std::string(""), const std::string &tsCollectionName=std::string(""))
simulates TF hit using wire information.
Definition Segment.cc:154
const TRGCDCWire * operator[](unsigned id) const
returns a wire.
Definition Segment.h:207
const TRGCDCLUT * LUT(void) const
returns LUT
Definition Segment.h:260
void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const override
dumps debug information.
Definition Segment.cc:71
void clear(void) override
clears information.
Definition Segment.cc:132
TRGCDCCell(unsigned id, unsigned localId, const TRGCDCLayer &layer, const HepGeom::Point3D< double > &forwardPosition, const HepGeom::Point3D< double > &backwardPosition)
Constructor.
Definition Cell.cc:30
const std::vector< const CDCTriggerSegmentHit * > storeHits(void) const
returns a pointer to a CDCTriggerSegmentHit.
Definition Segment.h:253
const TRGCDCLayer & layer(void) const
returns a pointer to a layer.
Definition Cell.h:235
const std::vector< const TRGCDCWire * > & wires(void) const
returns a vector containing pointers to a wire.
Definition Segment.h:200
float priorityTime(void) const
return priority time in TSHit.
Definition Segment.cc:463
unsigned hitPattern_adc(void) const
returns hit pattern with adc cut.
Definition Segment.cc:560
float foundTime(void) const
return found time in TSHit.
Definition Segment.cc:423
const TRGSignal & signal_adc(void) const override
returns trigger output. Null will returned if no signal.
Definition Segment.h:223
const TRGCDCSegmentHit * hit(void) const
returns a pointer to a TRGCDCSegmentHit.
Definition Segment.h:238
Abstract base class for different kinds of events.