1#include "TrkReco/TSegmentCurl.h"
6 : m_MaxLocalLayerId(
max ), m_superLayerId(
superLayerId ), m_flagOfUpdate( true ) {
8 for (
unsigned i = 0; i < 4; ++i )
10 m_seqOfLayer[i] = m_sizeOfLayer[i] = 0;
11 m_layer[i].removeAll();
16 : m_flagOfUpdate(
s.m_flagOfUpdate )
18 , m_MaxLocalLayerId(
s.m_MaxLocalLayerId )
19 , m_superLayerId(
s.m_superLayerId )
20 , m_maxSeq(
s.m_maxSeq )
21 , m_layerIdOfMaxSeq(
s.m_layerIdOfMaxSeq )
22 , m_numOfSeqOneLayer(
s.m_numOfSeqOneLayer )
23 , m_numOfLargeSeqLayer(
s.m_numOfLargeSeqLayer ) {
24 for (
unsigned i = 0; i < 4; ++i )
26 m_seqOfLayer[i] =
s.m_seqOfLayer[i];
27 m_sizeOfLayer[i] =
s.m_sizeOfLayer[i];
28 m_layer[i] =
s.m_layer[i];
33 : m_flagOfUpdate(
s->m_flagOfUpdate )
35 , m_MaxLocalLayerId(
s->m_MaxLocalLayerId )
36 , m_superLayerId(
s->m_superLayerId )
37 , m_maxSeq(
s->m_maxSeq )
38 , m_layerIdOfMaxSeq(
s->m_layerIdOfMaxSeq )
39 , m_numOfSeqOneLayer(
s->m_numOfSeqOneLayer )
40 , m_numOfLargeSeqLayer(
s->m_numOfLargeSeqLayer ) {
41 for (
unsigned i = 0; i < 4; ++i )
43 m_seqOfLayer[i] =
s->m_seqOfLayer[i];
44 m_sizeOfLayer[i] =
s->m_sizeOfLayer[i];
45 m_layer[i] =
s->m_layer[i];
51 for (
unsigned i = 0; i < 4; ++i ) { m_layer[i].removeAll(); }
59 if ( m_flagOfUpdate )
update();
60 return m_seqOfLayer[i];
64 if ( m_flagOfUpdate )
update();
65 return m_sizeOfLayer[i];
69 m_MaxLocalLayerId = i;
70 return m_MaxLocalLayerId;
75 return m_superLayerId;
79 m_flagOfUpdate =
true;
85 m_flagOfUpdate =
true;
91 m_flagOfUpdate =
true;
92 for (
unsigned i = 0; i < e.length(); ++i )
93 m_layer[e[i]->hit()->wire()->localLayerId()].append( e[i] );
98 m_flagOfUpdate =
true;
104 m_flagOfUpdate =
true;
110 m_flagOfUpdate =
true;
111 for (
unsigned i = 0; i < e.length(); ++i )
112 m_layer[e[i]->hit()->wire()->localLayerId()].remove( e[i] );
117 m_flagOfUpdate =
true;
119 for (
unsigned i = 0; i < 4; ++i ) { m_layer[i].removeAll(); }
126 if ( m_flagOfUpdate ) localThis->
update();
131 if ( m_flagOfUpdate )
update();
132 return m_layerIdOfMaxSeq;
136 if ( m_flagOfUpdate )
update();
137 return m_numOfSeqOneLayer;
141 if ( m_flagOfUpdate )
update();
142 return m_numOfLargeSeqLayer;
146 if ( m_list.length() == 0 )
148 m_flagOfUpdate =
false;
151 m_maxSeq = m_layerIdOfMaxSeq = 0;
152 m_numOfSeqOneLayer = m_numOfLargeSeqLayer = 0;
153 for (
unsigned i = 0; i <= m_MaxLocalLayerId; ++i )
155 m_sizeOfLayer[i] = m_layer[i].length();
157 if ( m_seqOfLayer[i] >= m_maxSeq )
159 m_maxSeq = m_seqOfLayer[i];
160 m_layerIdOfMaxSeq = i;
162 if ( m_seqOfLayer[i] == 1 ) ++m_numOfSeqOneLayer;
166 m_flagOfUpdate =
false;
170 if (
this == &
s )
return *
this;
172 m_flagOfUpdate =
s.m_flagOfUpdate;
174 m_MaxLocalLayerId =
s.m_MaxLocalLayerId;
175 m_superLayerId =
s.m_superLayerId;
177 m_maxSeq =
s.m_maxSeq;
178 m_layerIdOfMaxSeq =
s.m_layerIdOfMaxSeq;
179 m_numOfSeqOneLayer =
s.m_numOfSeqOneLayer;
180 m_numOfLargeSeqLayer =
s.m_numOfLargeSeqLayer;
182 for (
unsigned i = 0; i < 4; ++i )
184 m_seqOfLayer[i] =
s.m_seqOfLayer[i];
185 m_sizeOfLayer[i] =
s.m_sizeOfLayer[i];
186 m_layer[i] =
s.m_layer[i];
192#if defined( __GNUG__ )
194 if ( ( *a )->hit()->wire()->id() < ( *b )->hit()->wire()->id() ) {
return 1; }
195 else if ( ( *a )->hit()->wire()->id() == ( *b )->hit()->wire()->id() ) {
return 0; }
202 if ( ( *a )->hit()->wire()->id() < ( *b )->hit()->wire()->id() ) {
return 1; }
203 else if ( ( *a )->hit()->wire()->id() == ( *b )->hit()->wire()->id() ) {
return 0; }
208void TSegmentCurl::calcuSeq(
unsigned i ) {
210 if ( i > m_MaxLocalLayerId )
215 unsigned size = m_layer[i].length();
231 unsigned layerIdForWires = m_layer[i][0]->hit()->wire()->layerId();
236 if ( m_layer[i][0]->hit()->wire()->localId() ==
237 static_cast<unsigned>(
wires( layerIdForWires ) - 1 ) &&
238 m_layer[i][
size - 1]->hit()->wire()->localId() == 0 )
240 for (
unsigned j = 0; j <
size - 1; ++j )
242 if ( m_layer[i][j]->hit()->wire()->localIdForMinus() - 1 ==
243 m_layer[i][j + 1]->hit()->wire()->localId() )
246 if ( j ==
size - 2 )
goto loop;
249 for (
unsigned j =
size - 1; j > 0; --j )
251 if ( m_layer[i][j]->hit()->wire()->localIdForPlus() + 1 ==
252 m_layer[i][j - 1]->hit()->wire()->localId() )
260 for (
unsigned j = 0; j <
size - 1; ++j )
262 if ( m_layer[i][j]->hit()->wire()->localIdForMinus() - 1 ==
263 m_layer[i][j + 1]->hit()->wire()->localId() )
301 if ( LayerId == 0 )
return 40;
302 if ( LayerId == 1 )
return 44;
303 if ( LayerId == 2 )
return 48;
304 if ( LayerId == 3 )
return 56;
305 if ( LayerId == 4 )
return 64;
306 if ( LayerId == 5 )
return 72;
307 if ( LayerId == 6 || LayerId == 7 )
return 80;
308 if ( LayerId == 8 || LayerId == 9 )
return 76;
309 if ( LayerId == 10 || LayerId == 11 )
return 88;
310 if ( LayerId == 12 || LayerId == 13 )
return 100;
311 if ( LayerId == 14 || LayerId == 15 )
return 112;
312 if ( LayerId == 16 || LayerId == 17 )
return 128;
313 if ( LayerId == 18 || LayerId == 19 )
return 140;
314 if ( LayerId < 24 )
return 160;
315 if ( LayerId < 28 )
return 176;
316 if ( LayerId < 32 )
return 208;
317 if ( LayerId < 36 )
return 240;
318 if ( LayerId < 40 )
return 256;
319 if ( LayerId < 43 )
return 288;
321 std::cerr <<
"Error in the SegmentCurl(wires)." << std::endl;
330 std::cout <<
"=====Segment for Curling Track Finder=====" << std::endl;
331 std::cout <<
"List Size = " << m_list.length() << std::endl;
332 std::cout <<
"Flag of Update = " << m_flagOfUpdate
333 <<
", Max Local Layer ID = " << m_MaxLocalLayerId
334 <<
", Super Layer ID = " << m_superLayerId << std::endl;
335 std::cout <<
"Max Seq. = " << m_maxSeq <<
", Its Layer ID = " << m_layerIdOfMaxSeq
337 std::cout <<
"# of Seq = 1 Layer = " << m_numOfSeqOneLayer
338 <<
", # of Large Seq. Layer = " << m_numOfLargeSeqLayer << std::endl;
340 std::cout <<
"ID | Seq. of Layer | Size of Layer | Local ID List" << std::endl;
341 for (
unsigned i = 0; i < 4; ++i )
345 std::cout << i <<
" | " << m_seqOfLayer[i] <<
" | " << m_sizeOfLayer[i] <<
" | ";
346 for (
unsigned j = 0,
size = m_layer[i].length(); j <
size; ++j )
347 std::cout << m_layer[i][j]->hit()->wire()->localId() <<
", ";
348 std::cout << std::endl;
const unsigned TCURL_LARGE_SEQUENCE
int sortByWireSerialNumber(const void *av, const void *bv)
const TMDCWire *const wire(void) const
returns a pointer to a TMDCWire.
unsigned localLayerId(void) const
returns local layer id in a super layer.
A class to relate TMDCWireHit and TTrack objects.
const TMDCWireHit * hit(void) const
returns a pointer to a hit.
const unsigned numOfLargeSeqLayer(void)
const unsigned numOfSeqOneLayer(void)
const unsigned layerIdOfMaxSeq(void)
const unsigned sizeOfLayer(const unsigned)
TSegmentCurl(const unsigned superLayerId=9999, const unsigned max=9999)
unsigned wires(const unsigned) const
const unsigned size(void)
const unsigned maxSeq(void) const
const unsigned superLayerId(void) const
const unsigned maxLocalLayerId(void) const
const unsigned seqOfLayer(const unsigned)
TSegmentCurl & operator=(const TSegmentCurl &)