evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtIdSet.cpp
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
21 #include "EvtGenBase/EvtIdSet.hh"
22 
23 #include "EvtGenBase/EvtPDL.hh"
24 #include "EvtGenBase/EvtPatches.hh"
25 
26 #include <iostream>
27 #include <string>
28 
29 EvtIdSet::EvtIdSet( const EvtId name1 )
30 {
31  _numInList = 1;
32  _list = new EvtId[_numInList];
33 
34  _list[0] = name1;
35 }
36 
37 EvtIdSet::EvtIdSet( const std::string name1 )
38 {
39  _numInList = 1;
40  _list = new EvtId[_numInList];
41 
42  _list[0] = EvtPDL::getId( name1 );
43 }
44 
45 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2 )
46 {
47  _numInList = 2;
48  _list = new EvtId[_numInList];
49 
50  _list[0] = name1;
51  _list[1] = name2;
52 }
53 
54 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2 )
55 {
56  _numInList = 2;
57  _list = new EvtId[_numInList];
58 
59  _list[0] = EvtPDL::getId( name1 );
60  _list[1] = EvtPDL::getId( name2 );
61 }
62 
63 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3 )
64 {
65  _numInList = 3;
66  _list = new EvtId[_numInList];
67 
68  _list[0] = name1;
69  _list[1] = name2;
70  _list[2] = name3;
71 }
72 
73 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
74  const std::string name3 )
75 {
76  _numInList = 3;
77  _list = new EvtId[_numInList];
78 
79  _list[0] = EvtPDL::getId( name1 );
80  _list[1] = EvtPDL::getId( name2 );
81  _list[2] = EvtPDL::getId( name3 );
82 }
83 
84 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
85  const EvtId name4 )
86 {
87  _numInList = 4;
88  _list = new EvtId[_numInList];
89 
90  _list[0] = name1;
91  _list[1] = name2;
92  _list[2] = name3;
93  _list[3] = name4;
94 }
95 
96 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
97  const std::string name3, const std::string name4 )
98 {
99  _numInList = 4;
100  _list = new EvtId[_numInList];
101 
102  _list[0] = EvtPDL::getId( name1 );
103  _list[1] = EvtPDL::getId( name2 );
104  _list[2] = EvtPDL::getId( name3 );
105  _list[3] = EvtPDL::getId( name4 );
106 }
107 
108 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
109  const EvtId name4, const EvtId name5 )
110 {
111  _numInList = 5;
112  _list = new EvtId[_numInList];
113 
114  _list[0] = name1;
115  _list[1] = name2;
116  _list[2] = name3;
117  _list[3] = name4;
118  _list[4] = name5;
119 }
120 
121 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
122  const std::string name3, const std::string name4,
123  const std::string name5 )
124 {
125  _numInList = 5;
126  _list = new EvtId[_numInList];
127 
128  _list[0] = EvtPDL::getId( name1 );
129  _list[1] = EvtPDL::getId( name2 );
130  _list[2] = EvtPDL::getId( name3 );
131  _list[3] = EvtPDL::getId( name4 );
132  _list[4] = EvtPDL::getId( name5 );
133 }
134 
135 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
136  const EvtId name4, const EvtId name5, const EvtId name6 )
137 {
138  _numInList = 6;
139  _list = new EvtId[_numInList];
140 
141  _list[0] = name1;
142  _list[1] = name2;
143  _list[2] = name3;
144  _list[3] = name4;
145  _list[4] = name5;
146  _list[5] = name6;
147 }
148 
149 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
150  const std::string name3, const std::string name4,
151  const std::string name5, const std::string name6 )
152 {
153  _numInList = 6;
154  _list = new EvtId[_numInList];
155 
156  _list[0] = EvtPDL::getId( name1 );
157  _list[1] = EvtPDL::getId( name2 );
158  _list[2] = EvtPDL::getId( name3 );
159  _list[3] = EvtPDL::getId( name4 );
160  _list[4] = EvtPDL::getId( name5 );
161  _list[5] = EvtPDL::getId( name6 );
162 }
163 
164 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
165  const EvtId name4, const EvtId name5, const EvtId name6,
166  const EvtId name7 )
167 {
168  _numInList = 7;
169  _list = new EvtId[_numInList];
170 
171  _list[0] = name1;
172  _list[1] = name2;
173  _list[2] = name3;
174  _list[3] = name4;
175  _list[4] = name5;
176  _list[5] = name6;
177  _list[6] = name7;
178 }
179 
180 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
181  const std::string name3, const std::string name4,
182  const std::string name5, const std::string name6,
183  const std::string name7 )
184 {
185  _numInList = 7;
186  _list = new EvtId[_numInList];
187 
188  _list[0] = EvtPDL::getId( name1 );
189  _list[1] = EvtPDL::getId( name2 );
190  _list[2] = EvtPDL::getId( name3 );
191  _list[3] = EvtPDL::getId( name4 );
192  _list[4] = EvtPDL::getId( name5 );
193  _list[5] = EvtPDL::getId( name6 );
194  _list[6] = EvtPDL::getId( name7 );
195 }
196 
197 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
198  const EvtId name4, const EvtId name5, const EvtId name6,
199  const EvtId name7, const EvtId name8 )
200 {
201  _numInList = 8;
202  _list = new EvtId[_numInList];
203 
204  _list[0] = name1;
205  _list[1] = name2;
206  _list[2] = name3;
207  _list[3] = name4;
208  _list[4] = name5;
209  _list[5] = name6;
210  _list[6] = name7;
211  _list[7] = name8;
212 }
213 
214 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
215  const std::string name3, const std::string name4,
216  const std::string name5, const std::string name6,
217  const std::string name7, const std::string name8 )
218 {
219  _numInList = 8;
220  _list = new EvtId[_numInList];
221 
222  _list[0] = EvtPDL::getId( name1 );
223  _list[1] = EvtPDL::getId( name2 );
224  _list[2] = EvtPDL::getId( name3 );
225  _list[3] = EvtPDL::getId( name4 );
226  _list[4] = EvtPDL::getId( name5 );
227  _list[5] = EvtPDL::getId( name6 );
228  _list[6] = EvtPDL::getId( name7 );
229  _list[7] = EvtPDL::getId( name8 );
230 }
231 
232 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
233  const EvtId name4, const EvtId name5, const EvtId name6,
234  const EvtId name7, const EvtId name8, const EvtId name9 )
235 {
236  _numInList = 9;
237  _list = new EvtId[_numInList];
238 
239  _list[0] = name1;
240  _list[1] = name2;
241  _list[2] = name3;
242  _list[3] = name4;
243  _list[4] = name5;
244  _list[5] = name6;
245  _list[6] = name7;
246  _list[7] = name8;
247  _list[8] = name9;
248 }
249 
250 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
251  const std::string name3, const std::string name4,
252  const std::string name5, const std::string name6,
253  const std::string name7, const std::string name8,
254  const std::string name9 )
255 {
256  _numInList = 9;
257  _list = new EvtId[_numInList];
258 
259  _list[0] = EvtPDL::getId( name1 );
260  _list[1] = EvtPDL::getId( name2 );
261  _list[2] = EvtPDL::getId( name3 );
262  _list[3] = EvtPDL::getId( name4 );
263  _list[4] = EvtPDL::getId( name5 );
264  _list[5] = EvtPDL::getId( name6 );
265  _list[6] = EvtPDL::getId( name7 );
266  _list[7] = EvtPDL::getId( name8 );
267  _list[8] = EvtPDL::getId( name9 );
268 }
269 
270 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
271  const EvtId name4, const EvtId name5, const EvtId name6,
272  const EvtId name7, const EvtId name8, const EvtId name9,
273  const EvtId name10 )
274 {
275  _numInList = 10;
276  _list = new EvtId[_numInList];
277 
278  _list[0] = name1;
279  _list[1] = name2;
280  _list[2] = name3;
281  _list[3] = name4;
282  _list[4] = name5;
283  _list[5] = name6;
284  _list[6] = name7;
285  _list[7] = name8;
286  _list[8] = name9;
287  _list[9] = name10;
288 }
289 
290 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
291  const std::string name3, const std::string name4,
292  const std::string name5, const std::string name6,
293  const std::string name7, const std::string name8,
294  const std::string name9, const std::string name10 )
295 {
296  _numInList = 10;
297  _list = new EvtId[_numInList];
298 
299  _list[0] = EvtPDL::getId( name1 );
300  _list[1] = EvtPDL::getId( name2 );
301  _list[2] = EvtPDL::getId( name3 );
302  _list[3] = EvtPDL::getId( name4 );
303  _list[4] = EvtPDL::getId( name5 );
304  _list[5] = EvtPDL::getId( name6 );
305  _list[6] = EvtPDL::getId( name7 );
306  _list[7] = EvtPDL::getId( name8 );
307  _list[8] = EvtPDL::getId( name9 );
308  _list[9] = EvtPDL::getId( name10 );
309 }
310 
311 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
312  const EvtId name4, const EvtId name5, const EvtId name6,
313  const EvtId name7, const EvtId name8, const EvtId name9,
314  const EvtId name10, const EvtId name11 )
315 {
316  _numInList = 11;
317  _list = new EvtId[_numInList];
318 
319  _list[0] = name1;
320  _list[1] = name2;
321  _list[2] = name3;
322  _list[3] = name4;
323  _list[4] = name5;
324  _list[5] = name6;
325  _list[6] = name7;
326  _list[7] = name8;
327  _list[8] = name9;
328  _list[9] = name10;
329  _list[10] = name11;
330 }
331 
332 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
333  const std::string name3, const std::string name4,
334  const std::string name5, const std::string name6,
335  const std::string name7, const std::string name8,
336  const std::string name9, const std::string name10,
337  const std::string name11 )
338 {
339  _numInList = 11;
340  _list = new EvtId[_numInList];
341 
342  _list[0] = EvtPDL::getId( name1 );
343  _list[1] = EvtPDL::getId( name2 );
344  _list[2] = EvtPDL::getId( name3 );
345  _list[3] = EvtPDL::getId( name4 );
346  _list[4] = EvtPDL::getId( name5 );
347  _list[5] = EvtPDL::getId( name6 );
348  _list[6] = EvtPDL::getId( name7 );
349  _list[7] = EvtPDL::getId( name8 );
350  _list[8] = EvtPDL::getId( name9 );
351  _list[9] = EvtPDL::getId( name10 );
352  _list[10] = EvtPDL::getId( name11 );
353 }
354 
355 EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
356  const EvtId name4, const EvtId name5, const EvtId name6,
357  const EvtId name7, const EvtId name8, const EvtId name9,
358  const EvtId name10, const EvtId name11, const EvtId name12 )
359 {
360  _numInList = 12;
361  _list = new EvtId[_numInList];
362 
363  _list[0] = name1;
364  _list[1] = name2;
365  _list[2] = name3;
366  _list[3] = name4;
367  _list[4] = name5;
368  _list[5] = name6;
369  _list[6] = name7;
370  _list[7] = name8;
371  _list[8] = name9;
372  _list[9] = name10;
373  _list[10] = name11;
374  _list[11] = name12;
375 }
376 
377 EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
378  const std::string name3, const std::string name4,
379  const std::string name5, const std::string name6,
380  const std::string name7, const std::string name8,
381  const std::string name9, const std::string name10,
382  const std::string name11, const std::string name12 )
383 {
384  _numInList = 12;
385  _list = new EvtId[_numInList];
386 
387  _list[0] = EvtPDL::getId( name1 );
388  _list[1] = EvtPDL::getId( name2 );
389  _list[2] = EvtPDL::getId( name3 );
390  _list[3] = EvtPDL::getId( name4 );
391  _list[4] = EvtPDL::getId( name5 );
392  _list[5] = EvtPDL::getId( name6 );
393  _list[6] = EvtPDL::getId( name7 );
394  _list[7] = EvtPDL::getId( name8 );
395  _list[8] = EvtPDL::getId( name9 );
396  _list[9] = EvtPDL::getId( name10 );
397  _list[10] = EvtPDL::getId( name11 );
398  _list[11] = EvtPDL::getId( name12 );
399 }
400 
402 {
403  _numInList = set1.sizeOfSet();
404  _list = new EvtId[_numInList];
405  int i;
406  for ( i = 0; i < _numInList; i++ ) {
407  _list[i] = set1.getElem( i );
408  }
409 }
410 EvtIdSet::EvtIdSet( const EvtIdSet& set1, const EvtIdSet& set2 )
411 {
412  _numInList = set1.sizeOfSet();
413  _list = new EvtId[_numInList];
414  int i;
415  for ( i = 0; i < _numInList; i++ ) {
416  _list[i] = set1.getElem( i );
417  }
418  //then just append the second list.
419  this->append( set2 );
420 }
421 
422 int EvtIdSet::contains( const EvtId id )
423 {
424  int i;
425  for ( i = 0; i < _numInList; i++ ) {
426  if ( _list[i] == id )
427  return 1;
428  }
429 
430  return 0;
431 }
432 
433 int EvtIdSet::contains( const std::string nm )
434 {
435  int i;
436  for ( i = 0; i < _numInList; i++ ) {
437  if ( _list[i] == EvtPDL::getId( nm ) )
438  return 1;
439  }
440 
441  return 0;
442 }
443 
444 void EvtIdSet::append( const EvtIdSet set1 )
445 {
446  int combLen = _numInList + set1.sizeOfSet();
447  int uniqueLen = 0;
448  EvtId* combSet;
449 
450  combSet = new EvtId[combLen];
451 
452  int i;
453  for ( i = 0; i < combLen; i++ ) {
454  if ( i >= _numInList ) {
455  //check that there are no overlaps between lists
456  int j;
457  int isUnique = 1;
458  for ( j = 0; j < _numInList; j++ ) {
459  if ( _list[j] == set1.getElem( i - _numInList ) ) {
460  isUnique = 0;
461  }
462  }
463  if ( isUnique == 1 ) {
464  combSet[uniqueLen] = set1.getElem( i - _numInList );
465  uniqueLen += 1;
466  }
467  } else {
468  combSet[uniqueLen] = _list[i];
469  uniqueLen += 1;
470  }
471 
472  delete _list;
473  _list = new EvtId[uniqueLen];
474 
475  _numInList = uniqueLen;
476  for ( i = 0; i < _numInList; i++ ) {
477  _list[i] = combSet[i];
478  }
479 
480  delete combSet;
481  }
482 }
483 
485 {
486  return _numInList;
487 }
488 
489 EvtId EvtIdSet::getElem( const int i ) const
490 {
491  return _list[i];
492 }
EvtId * _list
Definition: EvtIdSet.hh:143
void append(const EvtIdSet set1)
Definition: EvtIdSet.cpp:444
EvtId getElem(const int i) const
Definition: EvtIdSet.cpp:489
int sizeOfSet() const
Definition: EvtIdSet.cpp:484
int _numInList
Definition: EvtIdSet.hh:142
Definition: EvtId.hh:27
static EvtId getId(const std::string &name)
Definition: EvtPDL.cpp:287
EvtIdSet(const EvtId name1)
Definition: EvtIdSet.cpp:29
int contains(const EvtId id)
Definition: EvtIdSet.cpp:422