BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MucMark Class Reference

#include <MucMark.h>

Public Member Functions

 MucMark ()
 MucMark (int part, int segment, int layer, int strip)
 ~MucMark ()
bool operator== (MucMark &other)
bool SetPart (int part)
bool SetSegment (int segment)
bool SetLayer (int layer)
bool SetStrip (int strip)
int Part ()
int Segment ()
int Layer ()
int Strip ()
int NumInCol (mark_col &aCol)
int IsInCol (int part, int segment, int layer, int strip, mark_col &aCol)
int IsInCol (mark_col &aCol)
int IsInCol (vector< mark_col > &aClusterCol)
bool IsInSegWith (MucMark &other)
bool IsInBoxWith (MucMark &other)
bool IsNeighborWith (MucMark &other)
bool IsNeighborWith (mark_col &aCol)
vector< mark_colCreateClusterCol (int buildMode, mark_col &aMarkCol)
vector< mark_colCreateClusterCol_A (mark_col &aMarkCol)
vector< mark_colCreateClusterCol_B (mark_col &aMarkCol)
vector< mark_colCreateClusterCol_C (mark_col &aMarkCol)
vector< mark_colCreateClusterCol_D (mark_col &aMarkCol)
void Print ()
void Print (mark_col &aMarkCol)
void Print (vector< mark_col > &aClusterCol)
 MucMark ()
 MucMark (int part, int segment, int layer, int strip)
 ~MucMark ()
bool operator== (MucMark &other)
bool SetPart (int part)
bool SetSegment (int segment)
bool SetLayer (int layer)
bool SetStrip (int strip)
int Part ()
int Segment ()
int Layer ()
int Strip ()
int NumInCol (mark_col &aCol)
int IsInCol (int part, int segment, int layer, int strip, mark_col &aCol)
int IsInCol (mark_col &aCol)
int IsInCol (vector< mark_col > &aClusterCol)
bool IsInSegWith (MucMark &other)
bool IsInBoxWith (MucMark &other)
bool IsNeighborWith (MucMark &other)
bool IsNeighborWith (mark_col &aCol)
vector< mark_colCreateClusterCol (int buildMode, mark_col &aMarkCol)
vector< mark_colCreateClusterCol_A (mark_col &aMarkCol)
vector< mark_colCreateClusterCol_B (mark_col &aMarkCol)
vector< mark_colCreateClusterCol_C (mark_col &aMarkCol)
vector< mark_colCreateClusterCol_D (mark_col &aMarkCol)
void Print ()
void Print (mark_col &aMarkCol)
void Print (vector< mark_col > &aClusterCol)
 MucMark ()
 MucMark (int part, int segment, int layer, int strip)
 ~MucMark ()
bool operator== (MucMark &other)
bool SetPart (int part)
bool SetSegment (int segment)
bool SetLayer (int layer)
bool SetStrip (int strip)
int Part ()
int Segment ()
int Layer ()
int Strip ()
int NumInCol (mark_col &aCol)
int IsInCol (int part, int segment, int layer, int strip, mark_col &aCol)
int IsInCol (mark_col &aCol)
int IsInCol (vector< mark_col > &aClusterCol)
bool IsInSegWith (MucMark &other)
bool IsInBoxWith (MucMark &other)
bool IsNeighborWith (MucMark &other)
bool IsNeighborWith (mark_col &aCol)
vector< mark_colCreateClusterCol (int buildMode, mark_col &aMarkCol)
vector< mark_colCreateClusterCol_A (mark_col &aMarkCol)
vector< mark_colCreateClusterCol_B (mark_col &aMarkCol)
vector< mark_colCreateClusterCol_C (mark_col &aMarkCol)
vector< mark_colCreateClusterCol_D (mark_col &aMarkCol)
void Print ()
void Print (mark_col &aMarkCol)
void Print (vector< mark_col > &aClusterCol)

Detailed Description

Constructor & Destructor Documentation

◆ MucMark() [1/6]

MucMark::MucMark ( )
inline

◆ MucMark() [2/6]

MucMark::MucMark ( int part,
int segment,
int layer,
int strip )

Definition at line 18 of file MucMark.cxx.

18 {
19 m_Part = part;
20 m_Segment = segment;
21 m_Layer = layer;
22 m_Strip = strip;
23}

◆ ~MucMark() [1/3]

MucMark::~MucMark ( )

Definition at line 26 of file MucMark.cxx.

26{ ; }

◆ MucMark() [3/6]

MucMark::MucMark ( )
inline

◆ MucMark() [4/6]

MucMark::MucMark ( int part,
int segment,
int layer,
int strip )

◆ ~MucMark() [2/3]

MucMark::~MucMark ( )

◆ MucMark() [5/6]

MucMark::MucMark ( )
inline

Definition at line 21 of file Muc/MucCalib/include/MucCalib/MucMark.h.

21{};

◆ MucMark() [6/6]

MucMark::MucMark ( int part,
int segment,
int layer,
int strip )

◆ ~MucMark() [3/3]

MucMark::~MucMark ( )

Member Function Documentation

◆ CreateClusterCol() [1/3]

vector< mark_col > MucMark::CreateClusterCol ( int buildMode,
mark_col & aMarkCol )

Definition at line 339 of file MucMark.cxx.

339 {
340 vector<mark_col> aClusterCol;
341 switch ( buildMode )
342 {
343 case 1: return CreateClusterCol_A( aMarkCol ); break;
344 case 2: return CreateClusterCol_B( aMarkCol ); break;
345 case 3: return CreateClusterCol_C( aMarkCol ); break;
346 case 4: return CreateClusterCol_D( aMarkCol ); break;
347 default: return ( aClusterCol );
348 }
349}
vector< mark_col > CreateClusterCol_A(mark_col &aMarkCol)
Definition MucMark.cxx:173
vector< mark_col > CreateClusterCol_C(mark_col &aMarkCol)
Definition MucMark.cxx:252
vector< mark_col > CreateClusterCol_D(mark_col &aMarkCol)
Definition MucMark.cxx:293
vector< mark_col > CreateClusterCol_B(mark_col &aMarkCol)
Definition MucMark.cxx:220

◆ CreateClusterCol() [2/3]

vector< mark_col > MucMark::CreateClusterCol ( int buildMode,
mark_col & aMarkCol )

◆ CreateClusterCol() [3/3]

vector< mark_col > MucMark::CreateClusterCol ( int buildMode,
mark_col & aMarkCol )

◆ CreateClusterCol_A() [1/3]

vector< mark_col > MucMark::CreateClusterCol_A ( mark_col & aMarkCol)

Definition at line 173 of file MucMark.cxx.

173 {
174 vector<mark_col> aClusterCol;
175 mark_col checkedMarkCol;
176
177 int recordFlag = 0;
178 unsigned int circle = 0;
179
180 for ( unsigned int i = 0; i < aMarkCol.size(); i++ )
181 {
182 recordFlag = 0;
183 for ( unsigned int j = 0; j < aClusterCol.size(); j++ )
184 {
185 if ( ( *aMarkCol[i] ).IsInCol( aClusterCol[j] ) != -1 )
186 {
187 recordFlag = 1;
188 break;
189 }
190 else if ( ( *aMarkCol[i] ).IsNeighborWith( aClusterCol[j] ) )
191 {
192 aClusterCol[j].push_back( aMarkCol[i] );
193 recordFlag = 1;
194 break;
195 }
196 }
197
198 if ( recordFlag == 0 )
199 {
200 mark_col aCluster;
201 aCluster.push_back( aMarkCol[i] );
202 aClusterCol.push_back( aCluster );
203
204 circle = 0;
205 do {
206 circle++;
207 for ( unsigned int j = i + 1; j < aMarkCol.size(); j++ )
208 {
209 if ( ( *aMarkCol[j] ).IsInCol( aClusterCol.back() ) != -1 ) continue;
210 else if ( ( *aMarkCol[j] ).IsNeighborWith( aClusterCol.back() ) )
211 aClusterCol.back().push_back( aMarkCol[j] );
212 }
213 } while ( circle < aMarkCol.size() - i - 1 );
214 }
215 }
216
217 return aClusterCol;
218}
vector< MucMark * > mark_col
bool IsNeighborWith(MucMark &other)
Definition MucMark.cxx:155
int IsInCol(int part, int segment, int layer, int strip, mark_col &aCol)
Definition MucMark.cxx:98

Referenced by CreateClusterCol().

◆ CreateClusterCol_A() [2/3]

vector< mark_col > MucMark::CreateClusterCol_A ( mark_col & aMarkCol)

◆ CreateClusterCol_A() [3/3]

vector< mark_col > MucMark::CreateClusterCol_A ( mark_col & aMarkCol)

◆ CreateClusterCol_B() [1/3]

vector< mark_col > MucMark::CreateClusterCol_B ( mark_col & aMarkCol)

Definition at line 220 of file MucMark.cxx.

220 {
221 vector<mark_col> aClusterCol;
222 mark_col checkedMarkCol;
223
224 unsigned int circle = 0;
225 for ( unsigned int i = 0; i < aMarkCol.size(); i++ )
226 {
227 if ( ( *aMarkCol[i] ).IsInCol( checkedMarkCol ) != -1 ) continue;
228
229 mark_col aCluster;
230 aCluster.push_back( aMarkCol[i] );
231 aClusterCol.push_back( aCluster );
232 checkedMarkCol.push_back( aMarkCol[i] );
233
234 circle = 0;
235 do {
236 for ( unsigned int j = i + 1; j < aMarkCol.size(); j++ )
237 {
238 if ( ( *aMarkCol[j] ).IsInCol( checkedMarkCol ) != -1 ) continue;
239 else if ( ( *aMarkCol[j] ).IsNeighborWith( aClusterCol.back() ) )
240 {
241 aClusterCol.back().push_back( aMarkCol[j] );
242 checkedMarkCol.push_back( aMarkCol[j] );
243 }
244 }
245 circle++;
246 } while ( circle < aMarkCol.size() - i - 1 );
247 }
248
249 return aClusterCol;
250}

Referenced by CreateClusterCol().

◆ CreateClusterCol_B() [2/3]

vector< mark_col > MucMark::CreateClusterCol_B ( mark_col & aMarkCol)

◆ CreateClusterCol_B() [3/3]

vector< mark_col > MucMark::CreateClusterCol_B ( mark_col & aMarkCol)

◆ CreateClusterCol_C() [1/3]

vector< mark_col > MucMark::CreateClusterCol_C ( mark_col & aMarkCol)

Definition at line 252 of file MucMark.cxx.

252 {
253 MucMark tmpMark;
254 vector<mark_col> aClusterCol;
255 mark_col copyMarkCol;
256 copyMarkCol = aMarkCol;
257
258 mark_col::iterator it1;
259 while ( copyMarkCol.size() != 0 ) // while 1
260 {
261 it1 = copyMarkCol.begin();
262 mark_col aCluster;
263 aCluster.push_back( copyMarkCol[0] );
264 aClusterCol.push_back( aCluster );
265
266 copyMarkCol.erase( it1 );
267 unsigned int circle = 0;
268 unsigned int size = 0;
269 unsigned int beginsize = copyMarkCol.size();
270 while ( circle < beginsize ) // while 2
271 {
272 mark_col::iterator it2;
273 size = copyMarkCol.size();
274 for ( unsigned int j = 0, headNum = 0; j < size; j++ )
275 {
276 it2 = copyMarkCol.begin() + headNum;
277 if ( ( copyMarkCol[headNum] )->IsNeighborWith( aClusterCol.back() ) )
278 {
279 aClusterCol.back().push_back( ( copyMarkCol[headNum] ) );
280 copyMarkCol.erase( it2 );
281 }
282 else headNum++;
283 } // end for
284
285 circle++;
286 }; // End while 2
287
288 }; // End while 1
289
290 return aClusterCol;
291}

Referenced by CreateClusterCol().

◆ CreateClusterCol_C() [2/3]

vector< mark_col > MucMark::CreateClusterCol_C ( mark_col & aMarkCol)

◆ CreateClusterCol_C() [3/3]

vector< mark_col > MucMark::CreateClusterCol_C ( mark_col & aMarkCol)

◆ CreateClusterCol_D() [1/3]

vector< mark_col > MucMark::CreateClusterCol_D ( mark_col & aMarkCol)

Definition at line 293 of file MucMark.cxx.

293 {
294 vector<mark_col> aClusterCol;
295
296 bool recordFlag = false;
297 unsigned int circle = 0;
298
299 for ( unsigned int i = 0; i < aMarkCol.size(); i++ )
300 {
301 recordFlag = false;
302 for ( int j = aClusterCol.size() - 1; j > -1; j-- )
303 {
304 if ( ( *aMarkCol[i] ).IsInCol( aClusterCol[j] ) != -1 )
305 {
306 recordFlag = true;
307 break;
308 }
309 else if ( ( *aMarkCol[i] ).IsNeighborWith( aClusterCol[j] ) )
310 {
311 aClusterCol[j].push_back( aMarkCol[i] );
312 recordFlag = true;
313 break;
314 }
315 }
316
317 if ( recordFlag == false )
318 {
319 mark_col aCluster;
320 aCluster.push_back( aMarkCol[i] );
321 aClusterCol.push_back( aCluster );
322
323 circle = 0;
324 do {
325 circle++;
326 for ( unsigned int j = i + 1; j < aMarkCol.size(); j++ )
327 {
328 if ( ( *aMarkCol[j] ).IsInCol( aClusterCol.back() ) != -1 ) continue;
329 else if ( ( *aMarkCol[j] ).IsNeighborWith( aClusterCol.back() ) )
330 aClusterCol.back().push_back( aMarkCol[j] );
331 }
332 } while ( circle < aMarkCol.size() - i - 1 );
333 } // End if recordflag
334 } // End fist for
335
336 return aClusterCol;
337}

Referenced by CreateClusterCol().

◆ CreateClusterCol_D() [2/3]

vector< mark_col > MucMark::CreateClusterCol_D ( mark_col & aMarkCol)

◆ CreateClusterCol_D() [3/3]

vector< mark_col > MucMark::CreateClusterCol_D ( mark_col & aMarkCol)

◆ IsInBoxWith() [1/3]

bool MucMark::IsInBoxWith ( MucMark & other)

Definition at line 147 of file MucMark.cxx.

147 {
148 if ( ( *this ).Part() == other.Part() && ( *this ).Segment() == other.Segment() &&
149 ( *this ).Layer() == other.Layer() )
150 return true;
151 else return false;
152}
Index other(Index i, Index j)

◆ IsInBoxWith() [2/3]

bool MucMark::IsInBoxWith ( MucMark & other)

◆ IsInBoxWith() [3/3]

bool MucMark::IsInBoxWith ( MucMark & other)

◆ IsInCol() [1/9]

int MucMark::IsInCol ( int part,
int segment,
int layer,
int strip,
mark_col & aCol )

Definition at line 98 of file MucMark.cxx.

98 {
99 for ( unsigned int i = 0; i < aCol.size(); i++ )
100 {
101 if ( part == aCol[i]->Part() && segment == aCol[i]->Segment() &&
102 layer == aCol[i]->Layer() && strip == aCol[i]->Strip() )
103 return i;
104 }
105
106 return -1;
107}
int Part()
Definition MucMark.cxx:92
int Segment()
Definition MucMark.cxx:93
int Strip()
Definition MucMark.cxx:95
int Layer()
Definition MucMark.cxx:94

Referenced by CreateClusterCol_A(), CreateClusterCol_B(), CreateClusterCol_D(), DQA_MUC::execute(), and MucCalibMgr::ReadEvent().

◆ IsInCol() [2/9]

int MucMark::IsInCol ( int part,
int segment,
int layer,
int strip,
mark_col & aCol )

◆ IsInCol() [3/9]

int MucMark::IsInCol ( int part,
int segment,
int layer,
int strip,
mark_col & aCol )

◆ IsInCol() [4/9]

int MucMark::IsInCol ( mark_col & aCol)

Definition at line 109 of file MucMark.cxx.

109 {
110 for ( unsigned int i = 0; i < aCol.size(); i++ )
111 {
112 if ( ( *this ) == ( *aCol[i] ) ) return i;
113 }
114
115 return -1;
116}

◆ IsInCol() [5/9]

int MucMark::IsInCol ( mark_col & aCol)

◆ IsInCol() [6/9]

int MucMark::IsInCol ( mark_col & aCol)

◆ IsInCol() [7/9]

int MucMark::IsInCol ( vector< mark_col > & aClusterCol)

Definition at line 118 of file MucMark.cxx.

118 {
119 for ( unsigned int i = 0; i < aClusterCol.size(); i++ )
120 {
121 if ( ( *this ).IsInCol( aClusterCol[i] ) ) return i;
122 }
123
124 return -1;
125}

◆ IsInCol() [8/9]

int MucMark::IsInCol ( vector< mark_col > & aClusterCol)

◆ IsInCol() [9/9]

int MucMark::IsInCol ( vector< mark_col > & aClusterCol)

◆ IsInSegWith() [1/3]

bool MucMark::IsInSegWith ( MucMark & other)

Definition at line 140 of file MucMark.cxx.

140 {
141 if ( ( *this ).Part() == other.Part() && ( *this ).Segment() == other.Segment() )
142 return true;
143 else return false;
144}

Referenced by MucCalibMgr::ReadEvent().

◆ IsInSegWith() [2/3]

bool MucMark::IsInSegWith ( MucMark & other)

◆ IsInSegWith() [3/3]

bool MucMark::IsInSegWith ( MucMark & other)

◆ IsNeighborWith() [1/6]

bool MucMark::IsNeighborWith ( mark_col & aCol)

Definition at line 163 of file MucMark.cxx.

163 {
164 for ( unsigned int i = 0; i < aCluster.size(); i++ )
165 {
166 if ( ( *this ).IsNeighborWith( ( *aCluster[i] ) ) ) return true;
167 }
168
169 return false;
170}

◆ IsNeighborWith() [2/6]

bool MucMark::IsNeighborWith ( mark_col & aCol)

◆ IsNeighborWith() [3/6]

bool MucMark::IsNeighborWith ( mark_col & aCol)

◆ IsNeighborWith() [4/6]

bool MucMark::IsNeighborWith ( MucMark & other)

Definition at line 155 of file MucMark.cxx.

155 {
156 if ( ( *this ).Part() == other.Part() && ( *this ).Segment() == other.Segment() &&
157 ( *this ).Layer() == other.Layer() && fabs( ( *this ).Strip() - other.Strip() ) == 1 )
158 return true;
159 else return false;
160}

Referenced by CreateClusterCol_A(), CreateClusterCol_B(), CreateClusterCol_C(), and CreateClusterCol_D().

◆ IsNeighborWith() [5/6]

bool MucMark::IsNeighborWith ( MucMark & other)

◆ IsNeighborWith() [6/6]

bool MucMark::IsNeighborWith ( MucMark & other)

◆ Layer() [1/3]

int MucMark::Layer ( )

Definition at line 94 of file MucMark.cxx.

94{ return m_Layer; }

Referenced by IsInCol().

◆ Layer() [2/3]

int MucMark::Layer ( )

◆ Layer() [3/3]

int MucMark::Layer ( )

◆ NumInCol() [1/3]

int MucMark::NumInCol ( mark_col & aCol)

Definition at line 128 of file MucMark.cxx.

128 {
129 int num = 0;
130
131 for ( unsigned int i = 0; i < aCol.size(); i++ )
132 {
133 if ( ( *this ) == ( *aCol[i] ) ) num++;
134 }
135
136 return num;
137}

◆ NumInCol() [2/3]

int MucMark::NumInCol ( mark_col & aCol)

◆ NumInCol() [3/3]

int MucMark::NumInCol ( mark_col & aCol)

◆ operator==() [1/3]

bool MucMark::operator== ( MucMark & other)

Definition at line 29 of file MucMark.cxx.

29 {
30 if ( this == &other ) return true;
31
32 if ( ( *this ).Part() == other.Part() && ( *this ).Segment() == other.Segment() &&
33 ( *this ).Layer() == other.Layer() && ( *this ).Strip() == other.Strip() )
34 return true;
35 else return false;
36}

◆ operator==() [2/3]

bool MucMark::operator== ( MucMark & other)

◆ operator==() [3/3]

bool MucMark::operator== ( MucMark & other)

◆ Part() [1/3]

int MucMark::Part ( )

Definition at line 92 of file MucMark.cxx.

92{ return m_Part; }

Referenced by IsInCol().

◆ Part() [2/3]

int MucMark::Part ( )

◆ Part() [3/3]

int MucMark::Part ( )

◆ Print() [1/9]

void MucMark::Print ( )

Definition at line 352 of file MucMark.cxx.

352 {
353 cout << "prt: " << m_Part << "\tseg: " << m_Segment << "\tlay: " << m_Layer
354 << "\tstr: " << m_Strip << endl;
355}

Referenced by Print().

◆ Print() [2/9]

void MucMark::Print ( )

◆ Print() [3/9]

void MucMark::Print ( )

◆ Print() [4/9]

void MucMark::Print ( mark_col & aMarkCol)

Definition at line 357 of file MucMark.cxx.

357 {
358 for ( unsigned int i = 0; i < aMarkCol.size(); i++ ) aMarkCol[i]->Print();
359}
void Print()
Definition MucMark.cxx:352

◆ Print() [5/9]

void MucMark::Print ( mark_col & aMarkCol)

◆ Print() [6/9]

void MucMark::Print ( mark_col & aMarkCol)

◆ Print() [7/9]

void MucMark::Print ( vector< mark_col > & aClusterCol)

Definition at line 361 of file MucMark.cxx.

361 {
362 for ( unsigned int i = 0; i < aClusterCol.size(); i++ )
363 for ( unsigned int j = 0; j < aClusterCol[i].size(); j++ ) { aClusterCol[i][j]->Print(); }
364}

◆ Print() [8/9]

void MucMark::Print ( vector< mark_col > & aClusterCol)

◆ Print() [9/9]

void MucMark::Print ( vector< mark_col > & aClusterCol)

◆ Segment() [1/3]

int MucMark::Segment ( )

Definition at line 93 of file MucMark.cxx.

93{ return m_Segment; }

Referenced by IsInCol().

◆ Segment() [2/3]

int MucMark::Segment ( )

◆ Segment() [3/3]

int MucMark::Segment ( )

◆ SetLayer() [1/3]

bool MucMark::SetLayer ( int layer)

Definition at line 65 of file MucMark.cxx.

65 {
66 if ( layer > ( ( m_Part == BRID ) ? B_LAY_NUM : E_LAY_NUM ) || layer < 0 )
67 {
68 cout << "layer overflow:\t" << layer << endl;
69 return false;
70 }
71 else
72 {
73 m_Layer = layer;
74 return true;
75 }
76}

◆ SetLayer() [2/3]

bool MucMark::SetLayer ( int layer)

◆ SetLayer() [3/3]

bool MucMark::SetLayer ( int layer)

◆ SetPart() [1/3]

bool MucMark::SetPart ( int part)

Definition at line 39 of file MucMark.cxx.

39 {
40 if ( part > PART_MAX || part < 0 )
41 {
42 cout << "part overflow:\t" << part << endl;
43 return false;
44 }
45 else
46 {
47 m_Part = part;
48 return true;
49 }
50}

◆ SetPart() [2/3]

bool MucMark::SetPart ( int part)

◆ SetPart() [3/3]

bool MucMark::SetPart ( int part)

◆ SetSegment() [1/3]

bool MucMark::SetSegment ( int segment)

Definition at line 52 of file MucMark.cxx.

52 {
53 if ( segment > ( ( m_Part == BRID ) ? B_SEG_NUM : E_SEG_NUM ) || segment < 0 )
54 {
55 cout << "segment overflow:\t" << segment << endl;
56 return false;
57 }
58 else
59 {
60 m_Segment = segment;
61 return true;
62 }
63}

◆ SetSegment() [2/3]

bool MucMark::SetSegment ( int segment)

◆ SetSegment() [3/3]

bool MucMark::SetSegment ( int segment)

◆ SetStrip() [1/3]

bool MucMark::SetStrip ( int strip)

Definition at line 78 of file MucMark.cxx.

78 {
79 if ( strip > STRIP_INBOX_MAX || strip < 0 )
80 {
81 cout << "strip overflow:\t" << strip << endl;
82 return false;
83 }
84 else
85 {
86 m_Strip = strip;
87 return true;
88 }
89}

◆ SetStrip() [2/3]

bool MucMark::SetStrip ( int strip)

◆ SetStrip() [3/3]

bool MucMark::SetStrip ( int strip)

◆ Strip() [1/3]

int MucMark::Strip ( )

Definition at line 95 of file MucMark.cxx.

95{ return m_Strip; }

Referenced by IsInCol().

◆ Strip() [2/3]

int MucMark::Strip ( )

◆ Strip() [3/3]

int MucMark::Strip ( )

The documentation for this class was generated from the following files: