Belle II Software  release-08-01-10
GenDTag.cc
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 #include <analysis/utility/GenDTag.h>
10 #include <analysis/utility/CheckDecayUtils.h>
11 
12 using namespace Belle2;
13 
14 GenDTag::GenDTag() = default;
15 
16 bool GenDTag::PcheckDecay(std::vector<int> gp, int da1, int da2)
17 {
18  int ndau = gp.size();
19  if (ndau == 2) { m_nPhotos = 0; return CheckDecay::CheckDecay(gp, da1, da2);}
20  else if (ndau == 3) { m_nPhotos = 1; return CheckDecay::CheckDecay(gp, da1, da2, 22);}
21  else if (ndau == 4) { m_nPhotos = 2; return CheckDecay::CheckDecay(gp, da1, da2, 22, 22);}
22  else if (ndau == 5) { m_nPhotos = 3; return CheckDecay::CheckDecay(gp, da1, da2, 22, 22, 22);}
23  else if (ndau == 6) { m_nPhotos = 4; return CheckDecay::CheckDecay(gp, da1, da2, 22, 22, 22, 22);}
24  else return false;
25 }
26 
27 bool GenDTag::PcheckDecay(std::vector<int> gp, int da1, int da2, int da3)
28 {
29  int ndau = gp.size();
30  if (ndau == 3) { m_nPhotos = 0; return CheckDecay::CheckDecay(gp, da1, da2, da3);}
31  else if (ndau == 4) { m_nPhotos = 1; return CheckDecay::CheckDecay(gp, da1, da2, da3, 22);}
32  else if (ndau == 5) { m_nPhotos = 2; return CheckDecay::CheckDecay(gp, da1, da2, da3, 22, 22);}
33  else if (ndau == 6) { m_nPhotos = 3; return CheckDecay::CheckDecay(gp, da1, da2, da3, 22, 22, 22);}
34  else if (ndau == 7) { m_nPhotos = 4; return CheckDecay::CheckDecay(gp, da1, da2, da3, 22, 22, 22, 22);}
35  else return false;
36 }
37 
38 bool GenDTag::PcheckDecay(std::vector<int> gp, int da1, int da2, int da3, int da4)
39 {
40  int ndau = gp.size();
41  if (ndau == 4) { m_nPhotos = 0; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4);}
42  else if (ndau == 5) { m_nPhotos = 1; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, 22);}
43  else if (ndau == 6) { m_nPhotos = 2; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, 22, 22);}
44  else if (ndau == 7) { m_nPhotos = 3; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, 22, 22, 22);}
45  else if (ndau == 8) { m_nPhotos = 4; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, 22, 22, 22, 22);}
46  else return false;
47 }
48 
49 bool GenDTag::PcheckDecay(std::vector<int> gp, int da1, int da2, int da3, int da4, int da5)
50 {
51  int ndau = gp.size();
52  if (ndau == 5) { m_nPhotos = 0; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5);}
53  else if (ndau == 6) { m_nPhotos = 1; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, 22);}
54  else if (ndau == 7) { m_nPhotos = 2; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, 22, 22);}
55  else if (ndau == 8) { m_nPhotos = 3; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, 22, 22, 22);}
56  else if (ndau == 9) { m_nPhotos = 4; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, 22, 22, 22, 22);}
57  else return false;
58 }
59 
60 bool GenDTag::PcheckDecay(std::vector<int> gp, int da1, int da2, int da3, int da4, int da5, int da6)
61 {
62  int ndau = gp.size();
63  if (ndau == 6) { m_nPhotos = 0; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6);}
64  else if (ndau == 7) { m_nPhotos = 1; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, 22);}
65  else if (ndau == 8) { m_nPhotos = 2; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, 22, 22);}
66  else if (ndau == 9) { m_nPhotos = 3; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, 22, 22, 22);}
67  else if (ndau == 10) { m_nPhotos = 4; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, 22, 22, 22, 22);}
68  else return false;
69 }
70 
71 bool GenDTag::PcheckDecay(std::vector<int> gp, int da1, int da2, int da3, int da4, int da5, int da6, int da7)
72 {
73  int ndau = gp.size();
74  if (ndau == 7) { m_nPhotos = 0; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7);}
75  else if (ndau == 8) { m_nPhotos = 1; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7, 22);}
76  else if (ndau == 9) { m_nPhotos = 2; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7, 22, 22);}
77  else if (ndau == 10) { m_nPhotos = 3; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7, 22, 22, 22);}
78  else if (ndau == 11) { m_nPhotos = 4; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7, 22, 22, 22, 22);}
79  else return false;
80 }
81 
82 bool GenDTag::PcheckDecay(std::vector<int> gp, int da1, int da2, int da3, int da4, int da5, int da6, int da7, int da8)
83 {
84  int ndau = gp.size();
85  if (ndau == 8) { m_nPhotos = 0; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7, da8);}
86  else if (ndau == 9) { m_nPhotos = 1; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7, da8, 22);}
87  else if (ndau == 10) { m_nPhotos = 2; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7, da8, 22, 22);}
88  else if (ndau == 11) { m_nPhotos = 3; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7, da8, 22, 22, 22);}
89  else if (ndau == 12) { m_nPhotos = 4; return CheckDecay::CheckDecay(gp, da1, da2, da3, da4, da5, da6, da7, da8, 22, 22, 22, 22);}
90  else return false;
91 }
92 
93 //All the tag number for various decay mode is defined here
94 
95 int GenDTag::Mode_Dst_plus(std::vector<int> genpart)
96 {
97  if (GenDTag::PcheckDecay(genpart, 421, 211)) {
98  return +1 * (100000 * m_nPhotos + 1001);
99  }//D*+ decays to D0 pi+
100  if (GenDTag::PcheckDecay(genpart, 411, 111)) {
101  return +1 * (100000 * m_nPhotos + 1002);
102  }//D*+ decays to D+ pi0
103  if (GenDTag::PcheckDecay(genpart, 411, 22)) {
104  return +1 * (100000 * m_nPhotos + 1003);
105  }//D*+ decays to D+ gamma
106  return +1 * genpart.size();
107 }// Rest of the D*+ decays
108 
109 
110 int GenDTag::Mode_Dst_minus(std::vector<int> genpart)
111 {
112  if (GenDTag::PcheckDecay(genpart, -421, -211)) {
113  return -1 * (100000 * m_nPhotos + 1001);
114  }//D*- decays to anti-D0 pi-
115  if (GenDTag::PcheckDecay(genpart, -411, 111)) {
116  return -1 * (100000 * m_nPhotos + 1002);
117  }//D*- decays to D- pi0
118  if (GenDTag::PcheckDecay(genpart, -411, 22)) {
119  return -1 * (100000 * m_nPhotos + 1003);
120  }//D*- decays to D- gamma
121  return -1 * (int)genpart.size();
122 }// Rest of the D*- decays
123 
124 
125 int GenDTag::Mode_Ds_plus(std::vector<int> genpart)
126 {
127  if (GenDTag::PcheckDecay(genpart, 333, -11, 12)) {
128  return +1 * (100000 * m_nPhotos + 1001);
129  }//D_s+ decays to phi e+ nu_e
130  if (GenDTag::PcheckDecay(genpart, 221, -11, 12)) {
131  return +1 * (100000 * m_nPhotos + 1002);
132  }//D_s+ decays to eta e+ nu_e
133  if (GenDTag::PcheckDecay(genpart, 331, -11, 12)) {
134  return +1 * (100000 * m_nPhotos + 1003);
135  }//D_s+ decays to eta' e+ nu_e
136  if (GenDTag::PcheckDecay(genpart, -311, -11, 12)) {
137  return +1 * (100000 * m_nPhotos + 1004);
138  }//D_s+ decays to anti-K0 e+ nu_e
139  if (GenDTag::PcheckDecay(genpart, -313, -11, 12)) {
140  return +1 * (100000 * m_nPhotos + 1005);
141  }//D_s+ decays to anti-K*0 e+ nu_e
142  if (GenDTag::PcheckDecay(genpart, 333, -13, 14)) {
143  return +1 * (100000 * m_nPhotos + 1006);
144  }//D_s+ decays to phi mu+ nu_mu
145  if (GenDTag::PcheckDecay(genpart, 221, -13, 14)) {
146  return +1 * (100000 * m_nPhotos + 1007);
147  }//D_s+ decays to eta mu+ nu_mu
148  if (GenDTag::PcheckDecay(genpart, 331, -13, 14)) {
149  return +1 * (100000 * m_nPhotos + 1008);
150  }//D_s+ decays to eta' mu+ nu_mu
151  if (GenDTag::PcheckDecay(genpart, -311, -13, 14)) {
152  return +1 * (100000 * m_nPhotos + 1009);
153  }//D_s+ decays to anti-K0 mu+ nu_mu
154  if (GenDTag::PcheckDecay(genpart, -313, -13, 14)) {
155  return +1 * (100000 * m_nPhotos + 1010);
156  }//D_s+ decays to anti-K*0 mu+ nu_mu
157  if (GenDTag::PcheckDecay(genpart, -13, 14)) {
158  return +1 * (100000 * m_nPhotos + 1011);
159  }//D_s+ decays to mu+ nu_mu
160  if (GenDTag::PcheckDecay(genpart, -15, 16)) {
161  return +1 * (100000 * m_nPhotos + 1012);
162  }//D_s+ decays to tau+ nu_tau
163  if (GenDTag::PcheckDecay(genpart, 333, 211)) {
164  return +1 * (100000 * m_nPhotos + 1013);
165  }//D_s+ decays to phi pi+
166  if (GenDTag::PcheckDecay(genpart, 221, 211)) {
167  return +1 * (100000 * m_nPhotos + 1014);
168  }//D_s+ decays to eta pi+
169  if (GenDTag::PcheckDecay(genpart, 331, 211)) {
170  return +1 * (100000 * m_nPhotos + 1015);
171  }//D_s+ decays to eta' pi+
172  if (GenDTag::PcheckDecay(genpart, 223, 211)) {
173  return +1 * (100000 * m_nPhotos + 1016);
174  }//D_s+ decays to omega pi+
175  if (GenDTag::PcheckDecay(genpart, 113, 211)) {
176  return +1 * (100000 * m_nPhotos + 1017);
177  }//D_s+ decays to rho0 pi+
178  if (GenDTag::PcheckDecay(genpart, 213, 111)) {
179  return +1 * (100000 * m_nPhotos + 1018);
180  }//D_s+ decays to rho+ pi0
181  if (GenDTag::PcheckDecay(genpart, 211, 111)) {
182  return +1 * (100000 * m_nPhotos + 1019);
183  }//D_s+ decays to pi+ pi0
184  if (GenDTag::PcheckDecay(genpart, 10221, 211)) {
185  return +1 * (100000 * m_nPhotos + 1020);
186  }//D_s+ decays to f_0 pi+
187  if (GenDTag::PcheckDecay(genpart, 225, 211)) {
188  return +1 * (100000 * m_nPhotos + 1021);
189  }//D_s+ decays to f_2 pi+
190  if (GenDTag::PcheckDecay(genpart, 333, 213)) {
191  return +1 * (100000 * m_nPhotos + 1022);
192  }//D_s+ decays to phi rho+
193  if (GenDTag::PcheckDecay(genpart, 213, 221)) {
194  return +1 * (100000 * m_nPhotos + 1023);
195  }//D_s+ decays to rho+ eta
196  if (GenDTag::PcheckDecay(genpart, 213, 331)) {
197  return +1 * (100000 * m_nPhotos + 1024);
198  }//D_s+ decays to rho+ eta'
199  if (GenDTag::PcheckDecay(genpart, 211, -211, 211)) {
200  return +1 * (100000 * m_nPhotos + 1025);
201  }//D_s+ decays to pi+ pi- pi+
202  if (GenDTag::PcheckDecay(genpart, 211, 111, 111)) {
203  return +1 * (100000 * m_nPhotos + 1026);
204  }//D_s+ decays to pi+ pi0 pi0
205  if (GenDTag::PcheckDecay(genpart, 333, 211, 111)) {
206  return +1 * (100000 * m_nPhotos + 1027);
207  }//D_s+ decays to phi pi+ pi0
208  if (GenDTag::PcheckDecay(genpart, 221, 211, 111)) {
209  return +1 * (100000 * m_nPhotos + 1028);
210  }//D_s+ decays to eta pi+ pi0
211  if (GenDTag::PcheckDecay(genpart, 331, 211, 111)) {
212  return +1 * (100000 * m_nPhotos + 1029);
213  }//D_s+ decays to eta' pi+ pi0
214  if (GenDTag::PcheckDecay(genpart, 333, 211, -211, 211)) {
215  return +1 * (100000 * m_nPhotos + 1030);
216  }//D_s+ decays to phi pi+ pi- pi+
217  if (GenDTag::PcheckDecay(genpart, 333, 211, 111, 111)) {
218  return +1 * (100000 * m_nPhotos + 1031);
219  }//D_s+ decays to phi pi+ pi0 pi0
220  if (GenDTag::PcheckDecay(genpart, 221, 211, -211, 211)) {
221  return +1 * (100000 * m_nPhotos + 1032);
222  }//D_s+ decays to eta pi+ pi- pi+
223  if (GenDTag::PcheckDecay(genpart, 221, 211, 111, 111)) {
224  return +1 * (100000 * m_nPhotos + 1033);
225  }//D_s+ decays to eta pi+ pi0 pi0
226  if (GenDTag::PcheckDecay(genpart, 310, 321)) {
227  return +1 * (100000 * m_nPhotos + 1034);
228  }//D_s+ decays to K_S0 K+
229  if (GenDTag::PcheckDecay(genpart, 130, 321)) {
230  return +1 * (100000 * m_nPhotos + 1035);
231  }//D_s+ decays to K_L0 K+
232  if (GenDTag::PcheckDecay(genpart, -311, 321)) {
233  return +1 * (100000 * m_nPhotos + 1036);
234  }//D_s+ decays to anti-K0 K+
235  if (GenDTag::PcheckDecay(genpart, -313, 321)) {
236  return +1 * (100000 * m_nPhotos + 1037);
237  }//D_s+ decays to anti-K*0 K+
238  if (GenDTag::PcheckDecay(genpart, 323, -311)) {
239  return +1 * (100000 * m_nPhotos + 1038);
240  }//D_s+ decays to K*+ anti-K0
241  if (GenDTag::PcheckDecay(genpart, -313, 323)) {
242  return +1 * (100000 * m_nPhotos + 1039);
243  }//D_s+ decays to anti-K*0 K*+
244  if (GenDTag::PcheckDecay(genpart, -311, 321, 111)) {
245  return +1 * (100000 * m_nPhotos + 1040);
246  }//D_s+ decays to anti-K0 K+ pi0
247  if (GenDTag::PcheckDecay(genpart, -313, 321, 111)) {
248  return +1 * (100000 * m_nPhotos + 1041);
249  }//D_s+ decays to anti-K*0 K+ pi0
250  if (GenDTag::PcheckDecay(genpart, 323, -311, 111)) {
251  return +1 * (100000 * m_nPhotos + 1042);
252  }//D_s+ decays to K*+ anti-K0 pi0
253  if (GenDTag::PcheckDecay(genpart, -313, 323, 111)) {
254  return +1 * (100000 * m_nPhotos + 1043);
255  }//D_s+ decays to anti-K*0 K*+ pi0
256  if (GenDTag::PcheckDecay(genpart, 321, -321, 211)) {
257  return +1 * (100000 * m_nPhotos + 1044);
258  }//D_s+ decays to K+ K- pi+
259  if (GenDTag::PcheckDecay(genpart, 310, 321, 211, -211)) {
260  return +1 * (100000 * m_nPhotos + 1045);
261  }//D_s+ decays to K_S0 K+ pi+ pi-
262  if (GenDTag::PcheckDecay(genpart, 130, 321, 211, -211)) {
263  return +1 * (100000 * m_nPhotos + 1046);
264  }//D_s+ decays to K_L0 K+ pi+ pi-
265  if (GenDTag::PcheckDecay(genpart, -311, 321, 211, -211)) {
266  return +1 * (100000 * m_nPhotos + 1047);
267  }//D_s+ decays to anti-K0 K+ pi+ pi-
268  if (GenDTag::PcheckDecay(genpart, -311, 321, 111, 111)) {
269  return +1 * (100000 * m_nPhotos + 1048);
270  }//D_s+ decays to anti-K0 K+ pi0 pi0
271  if (GenDTag::PcheckDecay(genpart, 321, -321, 211, -211, 211)) {
272  return +1 * (100000 * m_nPhotos + 1049);
273  }//D_s+ decays to K+ K- pi+ pi- pi+
274  if (GenDTag::PcheckDecay(genpart, 333, 321)) {
275  return +1 * (100000 * m_nPhotos + 1050);
276  }//D_s+ decays to phi K+
277  if (GenDTag::PcheckDecay(genpart, 221, 321)) {
278  return +1 * (100000 * m_nPhotos + 1051);
279  }//D_s+ decays to eta K+
280  if (GenDTag::PcheckDecay(genpart, 331, 321)) {
281  return +1 * (100000 * m_nPhotos + 1052);
282  }//D_s+ decays to eta' K+
283  if (GenDTag::PcheckDecay(genpart, 221, 321, 111)) {
284  return +1 * (100000 * m_nPhotos + 1053);
285  }//D_s+ decays to eta K+ pi0
286  if (GenDTag::PcheckDecay(genpart, 221, 321, 211, -211)) {
287  return +1 * (100000 * m_nPhotos + 1054);
288  }//D_s+ decays to eta K+ pi+ pi-
289  if (GenDTag::PcheckDecay(genpart, 331, 321, 111)) {
290  return +1 * (100000 * m_nPhotos + 1055);
291  }//D_s+ decays to eta' K+ pi0
292  if (GenDTag::PcheckDecay(genpart, 331, 321, 211, -211)) {
293  return +1 * (100000 * m_nPhotos + 1056);
294  }//D_s+ decays to eta' K+ pi+ pi-
295  if (GenDTag::PcheckDecay(genpart, 321, -321, 321)) {
296  return +1 * (100000 * m_nPhotos + 1057);
297  }//D_s+ decays to K+ K- K+
298  if (GenDTag::PcheckDecay(genpart, 310, 211)) {
299  return +1 * (100000 * m_nPhotos + 1058);
300  }//D_s+ decays to K_S0 pi+
301  if (GenDTag::PcheckDecay(genpart, 130, 211)) {
302  return +1 * (100000 * m_nPhotos + 1059);
303  }//D_s+ decays to K_L0 pi+
304  if (GenDTag::PcheckDecay(genpart, 311, 211)) {
305  return +1 * (100000 * m_nPhotos + 1060);
306  }//D_s+ decays to K0 pi+
307  if (GenDTag::PcheckDecay(genpart, 213, 311)) {
308  return +1 * (100000 * m_nPhotos + 1061);
309  }//D_s+ decays to rho+ K0
310  if (GenDTag::PcheckDecay(genpart, 113, 321)) {
311  return +1 * (100000 * m_nPhotos + 1062);
312  }//D_s+ decays to rho0 K+
313  if (GenDTag::PcheckDecay(genpart, 311, 211, 111)) {
314  return +1 * (100000 * m_nPhotos + 1063);
315  }//D_s+ decays to K0 pi+ pi0
316  if (GenDTag::PcheckDecay(genpart, 20213, 311)) {
317  return +1 * (100000 * m_nPhotos + 1064);
318  }//D_s+ decays to a_1+ K0
319  if (GenDTag::PcheckDecay(genpart, 313, 211)) {
320  return +1 * (100000 * m_nPhotos + 1065);
321  }//D_s+ decays to K*0 pi+
322  if (GenDTag::PcheckDecay(genpart, 313, 213)) {
323  return +1 * (100000 * m_nPhotos + 1066);
324  }//D_s+ decays to K*0 rho+
325  if (GenDTag::PcheckDecay(genpart, 313, 211, 111)) {
326  return +1 * (100000 * m_nPhotos + 1067);
327  }//D_s+ decays to K*0 pi+ pi0
328  if (GenDTag::PcheckDecay(genpart, 321, 111)) {
329  return +1 * (100000 * m_nPhotos + 1068);
330  }//D_s+ decays to K+ pi0
331  if (GenDTag::PcheckDecay(genpart, 321, 211, -211)) {
332  return +1 * (100000 * m_nPhotos + 1069);
333  }//D_s+ decays to K+ pi+ pi-
334  if (GenDTag::PcheckDecay(genpart, 211, 211, 211, -211, -211)) {
335  return +1 * (100000 * m_nPhotos + 1070);
336  }//D_s+ decays to pi+ pi+ pi+ pi- pi-
337  if (GenDTag::PcheckDecay(genpart, 211, 211, 211, -211, -211, 111)) {
338  return +1 * (100000 * m_nPhotos + 1071);
339  }//D_s+ decays to pi+ pi+ pi+ pi- pi- pi0
340  if (GenDTag::PcheckDecay(genpart, 2212, -2112)) {
341  return +1 * (100000 * m_nPhotos + 1072);
342  }//D_s+ decays to p+ anti-n0
343  if (GenDTag::PcheckDecay(genpart, 310, 310, 211, 211, -211)) {
344  return +1 * (100000 * m_nPhotos + 1073);
345  }//D_s+ decays to K_S0 K_S0 pi+ pi+ pi-
346  if (GenDTag::PcheckDecay(genpart, 130, 130, 211, 211, -211)) {
347  return +1 * (100000 * m_nPhotos + 1074);
348  }//D_s+ decays to K_L0 K_L0 pi+ pi+ pi-
349  if (GenDTag::PcheckDecay(genpart, -311, 311, 211, 211, -211)) {
350  return +1 * (100000 * m_nPhotos + 1075);
351  }//D_s+ decays to anti-K0 K0 pi+ pi+ pi-
352  if (GenDTag::PcheckDecay(genpart, 310, 211, 211, -211)) {
353  return +1 * (100000 * m_nPhotos + 1076);
354  }//D_s+ decays to K_S0 pi+ pi+ pi-
355  if (GenDTag::PcheckDecay(genpart, 130, 211, 211, -211)) {
356  return +1 * (100000 * m_nPhotos + 1077);
357  }//D_s+ decays to K_L0 pi+ pi+ pi-
358  if (GenDTag::PcheckDecay(genpart, -311, 211, 211, -211)) {
359  return +1 * (100000 * m_nPhotos + 1078);
360  }//D_s+ decays to anti-K0 pi+ pi+ pi-
361  if (GenDTag::PcheckDecay(genpart, 321, 321, -211)) {
362  return +1 * (100000 * m_nPhotos + 1079);
363  }//D_s+ decays to K+ K+ pi-
364  if (GenDTag::PcheckDecay(genpart, 311, -11, 12)) {
365  return +1 * (100000 * m_nPhotos + 1080);
366  }//D_s+ decays to K0 e+ nu_e
367  if (GenDTag::PcheckDecay(genpart, 313, -11, 12)) {
368  return +1 * (100000 * m_nPhotos + 1081);
369  }//D_s+ decays to K*0 e+ nu_e
370  if (GenDTag::PcheckDecay(genpart, 321, -321, 211, 111)) {
371  return +1 * (100000 * m_nPhotos + 1082);
372  }//D_s+ decays to K+ K- pi+ pi0
373  if (GenDTag::PcheckDecay(genpart, 223, 211, 111)) {
374  return +1 * (100000 * m_nPhotos + 1083);
375  }//D_s+ decays to omega pi+ pi0
376  if (GenDTag::PcheckDecay(genpart, 223, 211, 211, -211)) {
377  return +1 * (100000 * m_nPhotos + 1084);
378  }//D_s+ decays to omega pi+ pi+ pi-
379  return +1 * genpart.size();
380 }// Rest of the D_s+ decays
381 
382 
383 int GenDTag::Mode_Ds_minus(std::vector<int> genpart)
384 {
385  if (GenDTag::PcheckDecay(genpart, 333, 11, -12)) {
386  return -1 * (100000 * m_nPhotos + 1001);
387  }//D_s- decays to phi e- anti-nu_e
388  if (GenDTag::PcheckDecay(genpart, 221, 11, -12)) {
389  return -1 * (100000 * m_nPhotos + 1002);
390  }//D_s- decays to eta e- anti-nu_e
391  if (GenDTag::PcheckDecay(genpart, 331, 11, -12)) {
392  return -1 * (100000 * m_nPhotos + 1003);
393  }//D_s- decays to eta' e- anti-nu_e
394  if (GenDTag::PcheckDecay(genpart, 311, 11, -12)) {
395  return -1 * (100000 * m_nPhotos + 1004);
396  }//D_s- decays to K0 e- anti-nu_e
397  if (GenDTag::PcheckDecay(genpart, 313, 11, -12)) {
398  return -1 * (100000 * m_nPhotos + 1005);
399  }//D_s- decays to K*0 e- anti-nu_e
400  if (GenDTag::PcheckDecay(genpart, 333, 13, -14)) {
401  return -1 * (100000 * m_nPhotos + 1006);
402  }//D_s- decays to phi mu- anti-nu_mu
403  if (GenDTag::PcheckDecay(genpart, 221, 13, -14)) {
404  return -1 * (100000 * m_nPhotos + 1007);
405  }//D_s- decays to eta mu- anti-nu_mu
406  if (GenDTag::PcheckDecay(genpart, 331, 13, -14)) {
407  return -1 * (100000 * m_nPhotos + 1008);
408  }//D_s- decays to eta' mu- anti-nu_mu
409  if (GenDTag::PcheckDecay(genpart, 311, 13, -14)) {
410  return -1 * (100000 * m_nPhotos + 1009);
411  }//D_s- decays to K0 mu- anti-nu_mu
412  if (GenDTag::PcheckDecay(genpart, 313, 13, -14)) {
413  return -1 * (100000 * m_nPhotos + 1010);
414  }//D_s- decays to K*0 mu- anti-nu_mu
415  if (GenDTag::PcheckDecay(genpart, 13, -14)) {
416  return -1 * (100000 * m_nPhotos + 1011);
417  }//D_s- decays to mu- anti-nu_mu
418  if (GenDTag::PcheckDecay(genpart, 15, -16)) {
419  return -1 * (100000 * m_nPhotos + 1012);
420  }//D_s- decays to tau- anti-nu_tau
421  if (GenDTag::PcheckDecay(genpart, 333, -211)) {
422  return -1 * (100000 * m_nPhotos + 1013);
423  }//D_s- decays to phi pi-
424  if (GenDTag::PcheckDecay(genpart, 221, -211)) {
425  return -1 * (100000 * m_nPhotos + 1014);
426  }//D_s- decays to eta pi-
427  if (GenDTag::PcheckDecay(genpart, 331, -211)) {
428  return -1 * (100000 * m_nPhotos + 1015);
429  }//D_s- decays to eta' pi-
430  if (GenDTag::PcheckDecay(genpart, 223, -211)) {
431  return -1 * (100000 * m_nPhotos + 1016);
432  }//D_s- decays to omega pi-
433  if (GenDTag::PcheckDecay(genpart, 113, -211)) {
434  return -1 * (100000 * m_nPhotos + 1017);
435  }//D_s- decays to rho0 pi-
436  if (GenDTag::PcheckDecay(genpart, -213, 111)) {
437  return -1 * (100000 * m_nPhotos + 1018);
438  }//D_s- decays to rho- pi0
439  if (GenDTag::PcheckDecay(genpart, -211, 111)) {
440  return -1 * (100000 * m_nPhotos + 1019);
441  }//D_s- decays to pi- pi0
442  if (GenDTag::PcheckDecay(genpart, 10221, -211)) {
443  return -1 * (100000 * m_nPhotos + 1020);
444  }//D_s- decays to f_0 pi-
445  if (GenDTag::PcheckDecay(genpart, 225, -211)) {
446  return -1 * (100000 * m_nPhotos + 1021);
447  }//D_s- decays to f_2 pi-
448  if (GenDTag::PcheckDecay(genpart, 333, -213)) {
449  return -1 * (100000 * m_nPhotos + 1022);
450  }//D_s- decays to phi rho-
451  if (GenDTag::PcheckDecay(genpart, -213, 221)) {
452  return -1 * (100000 * m_nPhotos + 1023);
453  }//D_s- decays to rho- eta
454  if (GenDTag::PcheckDecay(genpart, -213, 331)) {
455  return -1 * (100000 * m_nPhotos + 1024);
456  }//D_s- decays to rho- eta'
457  if (GenDTag::PcheckDecay(genpart, -211, -211, 211)) {
458  return -1 * (100000 * m_nPhotos + 1025);
459  }//D_s- decays to pi- pi- pi+
460  if (GenDTag::PcheckDecay(genpart, -211, 111, 111)) {
461  return -1 * (100000 * m_nPhotos + 1026);
462  }//D_s- decays to pi- pi0 pi0
463  if (GenDTag::PcheckDecay(genpart, 333, -211, 111)) {
464  return -1 * (100000 * m_nPhotos + 1027);
465  }//D_s- decays to phi pi- pi0
466  if (GenDTag::PcheckDecay(genpart, 221, -211, 111)) {
467  return -1 * (100000 * m_nPhotos + 1028);
468  }//D_s- decays to eta pi- pi0
469  if (GenDTag::PcheckDecay(genpart, 331, -211, 111)) {
470  return -1 * (100000 * m_nPhotos + 1029);
471  }//D_s- decays to eta' pi- pi0
472  if (GenDTag::PcheckDecay(genpart, 333, -211, -211, 211)) {
473  return -1 * (100000 * m_nPhotos + 1030);
474  }//D_s- decays to phi pi- pi- pi+
475  if (GenDTag::PcheckDecay(genpart, 333, -211, 111, 111)) {
476  return -1 * (100000 * m_nPhotos + 1031);
477  }//D_s- decays to phi pi- pi0 pi0
478  if (GenDTag::PcheckDecay(genpart, 221, -211, -211, 211)) {
479  return -1 * (100000 * m_nPhotos + 1032);
480  }//D_s- decays to eta pi- pi- pi+
481  if (GenDTag::PcheckDecay(genpart, 221, -211, 111, 111)) {
482  return -1 * (100000 * m_nPhotos + 1033);
483  }//D_s- decays to eta pi- pi0 pi0
484  if (GenDTag::PcheckDecay(genpart, 310, -321)) {
485  return -1 * (100000 * m_nPhotos + 1034);
486  }//D_s- decays to K_S0 K-
487  if (GenDTag::PcheckDecay(genpart, 130, -321)) {
488  return -1 * (100000 * m_nPhotos + 1035);
489  }//D_s- decays to K_L0 K-
490  if (GenDTag::PcheckDecay(genpart, 311, -321)) {
491  return -1 * (100000 * m_nPhotos + 1036);
492  }//D_s- decays to K0 K-
493  if (GenDTag::PcheckDecay(genpart, 313, -321)) {
494  return -1 * (100000 * m_nPhotos + 1037);
495  }//D_s- decays to K*0 K-
496  if (GenDTag::PcheckDecay(genpart, -323, 311)) {
497  return -1 * (100000 * m_nPhotos + 1038);
498  }//D_s- decays to K*- K0
499  if (GenDTag::PcheckDecay(genpart, 313, -323)) {
500  return -1 * (100000 * m_nPhotos + 1039);
501  }//D_s- decays to K*0 K*-
502  if (GenDTag::PcheckDecay(genpart, 311, -321, 111)) {
503  return -1 * (100000 * m_nPhotos + 1040);
504  }//D_s- decays to K0 K- pi0
505  if (GenDTag::PcheckDecay(genpart, 313, -321, 111)) {
506  return -1 * (100000 * m_nPhotos + 1041);
507  }//D_s- decays to K*0 K- pi0
508  if (GenDTag::PcheckDecay(genpart, -323, 311, 111)) {
509  return -1 * (100000 * m_nPhotos + 1042);
510  }//D_s- decays to K*- K0 pi0
511  if (GenDTag::PcheckDecay(genpart, 313, -323, 111)) {
512  return -1 * (100000 * m_nPhotos + 1043);
513  }//D_s- decays to K*0 K*- pi0
514  if (GenDTag::PcheckDecay(genpart, 321, -321, -211)) {
515  return -1 * (100000 * m_nPhotos + 1044);
516  }//D_s- decays to K+ K- pi-
517  if (GenDTag::PcheckDecay(genpart, 310, -321, 211, -211)) {
518  return -1 * (100000 * m_nPhotos + 1045);
519  }//D_s- decays to K_S0 K- pi+ pi-
520  if (GenDTag::PcheckDecay(genpart, 130, -321, 211, -211)) {
521  return -1 * (100000 * m_nPhotos + 1046);
522  }//D_s- decays to K_L0 K- pi+ pi-
523  if (GenDTag::PcheckDecay(genpart, 311, -321, 211, -211)) {
524  return -1 * (100000 * m_nPhotos + 1047);
525  }//D_s- decays to K0 K- pi+ pi-
526  if (GenDTag::PcheckDecay(genpart, 311, -321, 111, 111)) {
527  return -1 * (100000 * m_nPhotos + 1048);
528  }//D_s- decays to K0 K- pi0 pi0
529  if (GenDTag::PcheckDecay(genpart, -321, 321, -211, 211, -211)) {
530  return -1 * (100000 * m_nPhotos + 1049);
531  }//D_s- decays to K- K+ pi- pi+ pi-
532  if (GenDTag::PcheckDecay(genpart, 333, -321)) {
533  return -1 * (100000 * m_nPhotos + 1050);
534  }//D_s- decays to phi K-
535  if (GenDTag::PcheckDecay(genpart, 221, -321)) {
536  return -1 * (100000 * m_nPhotos + 1051);
537  }//D_s- decays to eta K-
538  if (GenDTag::PcheckDecay(genpart, 331, -321)) {
539  return -1 * (100000 * m_nPhotos + 1052);
540  }//D_s- decays to eta' K-
541  if (GenDTag::PcheckDecay(genpart, 221, -321, 111)) {
542  return -1 * (100000 * m_nPhotos + 1053);
543  }//D_s- decays to eta K- pi0
544  if (GenDTag::PcheckDecay(genpart, 221, -321, 211, -211)) {
545  return -1 * (100000 * m_nPhotos + 1054);
546  }//D_s- decays to eta K- pi+ pi-
547  if (GenDTag::PcheckDecay(genpart, 331, -321, 111)) {
548  return -1 * (100000 * m_nPhotos + 1055);
549  }//D_s- decays to eta' K- pi0
550  if (GenDTag::PcheckDecay(genpart, 331, -321, 211, -211)) {
551  return -1 * (100000 * m_nPhotos + 1056);
552  }//D_s- decays to eta' K- pi+ pi-
553  if (GenDTag::PcheckDecay(genpart, -321, -321, 321)) {
554  return -1 * (100000 * m_nPhotos + 1057);
555  }//D_s- decays to K- K- K+
556  if (GenDTag::PcheckDecay(genpart, 310, -211)) {
557  return -1 * (100000 * m_nPhotos + 1058);
558  }//D_s- decays to K_S0 pi-
559  if (GenDTag::PcheckDecay(genpart, 130, -211)) {
560  return -1 * (100000 * m_nPhotos + 1059);
561  }//D_s- decays to K_L0 pi-
562  if (GenDTag::PcheckDecay(genpart, -311, -211)) {
563  return -1 * (100000 * m_nPhotos + 1060);
564  }//D_s- decays to anti-K0 pi-
565  if (GenDTag::PcheckDecay(genpart, -213, -311)) {
566  return -1 * (100000 * m_nPhotos + 1061);
567  }//D_s- decays to rho- anti-K0
568  if (GenDTag::PcheckDecay(genpart, 113, -321)) {
569  return -1 * (100000 * m_nPhotos + 1062);
570  }//D_s- decays to rho0 K-
571  if (GenDTag::PcheckDecay(genpart, -311, -211, 111)) {
572  return -1 * (100000 * m_nPhotos + 1063);
573  }//D_s- decays to anti-K0 pi- pi0
574  if (GenDTag::PcheckDecay(genpart, -20213, -311)) {
575  return -1 * (100000 * m_nPhotos + 1064);
576  }//D_s- decays to a_1- anti-K0
577  if (GenDTag::PcheckDecay(genpart, -313, -211)) {
578  return -1 * (100000 * m_nPhotos + 1065);
579  }//D_s- decays to anti-K*0 pi-
580  if (GenDTag::PcheckDecay(genpart, -313, -213)) {
581  return -1 * (100000 * m_nPhotos + 1066);
582  }//D_s- decays to anti-K*0 rho-
583  if (GenDTag::PcheckDecay(genpart, -313, -211, 111)) {
584  return -1 * (100000 * m_nPhotos + 1067);
585  }//D_s- decays to anti-K*0 pi- pi0
586  if (GenDTag::PcheckDecay(genpart, -321, 111)) {
587  return -1 * (100000 * m_nPhotos + 1068);
588  }//D_s- decays to K- pi0
589  if (GenDTag::PcheckDecay(genpart, -321, 211, -211)) {
590  return -1 * (100000 * m_nPhotos + 1069);
591  }//D_s- decays to K- pi+ pi-
592  if (GenDTag::PcheckDecay(genpart, 211, 211, -211, -211, -211)) {
593  return -1 * (100000 * m_nPhotos + 1070);
594  }//D_s- decays to pi+ pi+ pi- pi- pi-
595  if (GenDTag::PcheckDecay(genpart, 211, 211, -211, -211, -211, 111)) {
596  return -1 * (100000 * m_nPhotos + 1071);
597  }//D_s- decays to pi+ pi+ pi- pi- pi- pi0
598  if (GenDTag::PcheckDecay(genpart, -2212, 2112)) {
599  return -1 * (100000 * m_nPhotos + 1072);
600  }//D_s- decays to anti-p- n0
601  if (GenDTag::PcheckDecay(genpart, 310, 310, 211, -211, -211)) {
602  return -1 * (100000 * m_nPhotos + 1073);
603  }//D_s- decays to K_S0 K_S0 pi+ pi- pi-
604  if (GenDTag::PcheckDecay(genpart, 130, 130, 211, -211, -211)) {
605  return -1 * (100000 * m_nPhotos + 1074);
606  }//D_s- decays to K_L0 K_L0 pi+ pi- pi-
607  if (GenDTag::PcheckDecay(genpart, -311, 311, 211, -211, -211)) {
608  return -1 * (100000 * m_nPhotos + 1075);
609  }//D_s- decays to anti-K0 K0 pi+ pi- pi-
610  if (GenDTag::PcheckDecay(genpart, 310, 211, -211, -211)) {
611  return -1 * (100000 * m_nPhotos + 1076);
612  }//D_s- decays to K_S0 pi+ pi- pi-
613  if (GenDTag::PcheckDecay(genpart, 130, 211, -211, -211)) {
614  return -1 * (100000 * m_nPhotos + 1077);
615  }//D_s- decays to K_L0 pi+ pi- pi-
616  if (GenDTag::PcheckDecay(genpart, 311, 211, -211, -211)) {
617  return -1 * (100000 * m_nPhotos + 1078);
618  }//D_s- decays to K0 pi+ pi- pi-
619  if (GenDTag::PcheckDecay(genpart, -321, -321, 211)) {
620  return -1 * (100000 * m_nPhotos + 1079);
621  }//D_s- decays to K- K- pi+
622  if (GenDTag::PcheckDecay(genpart, -311, 11, -12)) {
623  return -1 * (100000 * m_nPhotos + 1080);
624  }//D_s- decays to anti-K0 e- anti-nu_e
625  if (GenDTag::PcheckDecay(genpart, -313, 11, -12)) {
626  return -1 * (100000 * m_nPhotos + 1081);
627  }//D_s- decays to anti-K*0 e- anti-nu_e
628  if (GenDTag::PcheckDecay(genpart, -321, 321, -211, 111)) {
629  return -1 * (100000 * m_nPhotos + 1082);
630  }//D_s- decays to K- K+ pi- pi0
631  if (GenDTag::PcheckDecay(genpart, 223, -211, 111)) {
632  return -1 * (100000 * m_nPhotos + 1083);
633  }//D_s- decays to omega pi- pi0
634  if (GenDTag::PcheckDecay(genpart, 223, -211, -211, 211)) {
635  return -1 * (100000 * m_nPhotos + 1084);
636  }//D_s- decays to omega pi- pi- pi+
637  return -1 * (int)genpart.size();
638 }// Rest of the D_s- decays
639 
640 
641 int GenDTag::Mode_D_plus(std::vector<int> genpart)
642 {
643  if (GenDTag::PcheckDecay(genpart, -313, -11, 12)) {
644  return +1 * (100000 * m_nPhotos + 1001);
645  }//D+ decays to anti-K*0 e+ nu_e
646  if (GenDTag::PcheckDecay(genpart, -311, -11, 12)) {
647  return +1 * (100000 * m_nPhotos + 1002);
648  }//D+ decays to anti-K0 e+ nu_e
649  if (GenDTag::PcheckDecay(genpart, -10313, -11, 12)) {
650  return +1 * (100000 * m_nPhotos + 1003);
651  }//D+ decays to anti-K_10 e+ nu_e
652  if (GenDTag::PcheckDecay(genpart, -315, -11, 12)) {
653  return +1 * (100000 * m_nPhotos + 1004);
654  }//D+ decays to anti-K_2*0 e+ nu_e
655  if (GenDTag::PcheckDecay(genpart, 111, -11, 12)) {
656  return +1 * (100000 * m_nPhotos + 1005);
657  }//D+ decays to pi0 e+ nu_e
658  if (GenDTag::PcheckDecay(genpart, 221, -11, 12)) {
659  return +1 * (100000 * m_nPhotos + 1006);
660  }//D+ decays to eta e+ nu_e
661  if (GenDTag::PcheckDecay(genpart, 331, -11, 12)) {
662  return +1 * (100000 * m_nPhotos + 1007);
663  }//D+ decays to eta' e+ nu_e
664  if (GenDTag::PcheckDecay(genpart, 113, -11, 12)) {
665  return +1 * (100000 * m_nPhotos + 1008);
666  }//D+ decays to rho0 e+ nu_e
667  if (GenDTag::PcheckDecay(genpart, 223, -11, 12)) {
668  return +1 * (100000 * m_nPhotos + 1009);
669  }//D+ decays to omega e+ nu_e
670  if (GenDTag::PcheckDecay(genpart, -321, 211, -11, 12)) {
671  return +1 * (100000 * m_nPhotos + 1010);
672  }//D+ decays to K- pi+ e+ nu_e
673  if (GenDTag::PcheckDecay(genpart, -311, 111, -11, 12)) {
674  return +1 * (100000 * m_nPhotos + 1011);
675  }//D+ decays to anti-K0 pi0 e+ nu_e
676  if (GenDTag::PcheckDecay(genpart, -313, -13, 14)) {
677  return +1 * (100000 * m_nPhotos + 1012);
678  }//D+ decays to anti-K*0 mu+ nu_mu
679  if (GenDTag::PcheckDecay(genpart, -311, -13, 14)) {
680  return +1 * (100000 * m_nPhotos + 1013);
681  }//D+ decays to anti-K0 mu+ nu_mu
682  if (GenDTag::PcheckDecay(genpart, -10313, -13, 14)) {
683  return +1 * (100000 * m_nPhotos + 1014);
684  }//D+ decays to anti-K_10 mu+ nu_mu
685  if (GenDTag::PcheckDecay(genpart, -315, -13, 14)) {
686  return +1 * (100000 * m_nPhotos + 1015);
687  }//D+ decays to anti-K_2*0 mu+ nu_mu
688  if (GenDTag::PcheckDecay(genpart, 111, -13, 14)) {
689  return +1 * (100000 * m_nPhotos + 1016);
690  }//D+ decays to pi0 mu+ nu_mu
691  if (GenDTag::PcheckDecay(genpart, 221, -13, 14)) {
692  return +1 * (100000 * m_nPhotos + 1017);
693  }//D+ decays to eta mu+ nu_mu
694  if (GenDTag::PcheckDecay(genpart, 331, -13, 14)) {
695  return +1 * (100000 * m_nPhotos + 1018);
696  }//D+ decays to eta' mu+ nu_mu
697  if (GenDTag::PcheckDecay(genpart, 113, -13, 14)) {
698  return +1 * (100000 * m_nPhotos + 1019);
699  }//D+ decays to rho0 mu+ nu_mu
700  if (GenDTag::PcheckDecay(genpart, 223, -13, 14)) {
701  return +1 * (100000 * m_nPhotos + 1020);
702  }//D+ decays to omega mu+ nu_mu
703  if (GenDTag::PcheckDecay(genpart, -321, 211, -13, 14)) {
704  return +1 * (100000 * m_nPhotos + 1021);
705  }//D+ decays to K- pi+ mu+ nu_mu
706  if (GenDTag::PcheckDecay(genpart, -311, 111, -13, 14)) {
707  return +1 * (100000 * m_nPhotos + 1022);
708  }//D+ decays to anti-K0 pi0 mu+ nu_mu
709  if (GenDTag::PcheckDecay(genpart, -13, 14)) {
710  return +1 * (100000 * m_nPhotos + 1023);
711  }//D+ decays to mu+ nu_mu
712  if (GenDTag::PcheckDecay(genpart, -15, 16)) {
713  return +1 * (100000 * m_nPhotos + 1024);
714  }//D+ decays to tau+ nu_tau
715  if (GenDTag::PcheckDecay(genpart, 310, 211)) {
716  return +1 * (100000 * m_nPhotos + 1025);
717  }//D+ decays to K_S0 pi+
718  if (GenDTag::PcheckDecay(genpart, 130, 211)) {
719  return +1 * (100000 * m_nPhotos + 1026);
720  }//D+ decays to K_L0 pi+
721  if (GenDTag::PcheckDecay(genpart, -311, 211)) {
722  return +1 * (100000 * m_nPhotos + 1027);
723  }//D+ decays to anti-K0 pi+
724  if (GenDTag::PcheckDecay(genpart, 20213, 310)) {
725  return +1 * (100000 * m_nPhotos + 1028);
726  }//D+ decays to a_1+ K_S0
727  if (GenDTag::PcheckDecay(genpart, 20213, 130)) {
728  return +1 * (100000 * m_nPhotos + 1029);
729  }//D+ decays to a_1+ K_L0
730  if (GenDTag::PcheckDecay(genpart, 20213, -311)) {
731  return +1 * (100000 * m_nPhotos + 1030);
732  }//D+ decays to a_1+ anti-K0
733  if (GenDTag::PcheckDecay(genpart, -20313, 211)) {
734  return +1 * (100000 * m_nPhotos + 1031);
735  }//D+ decays to anti-K'_10 pi+
736  if (GenDTag::PcheckDecay(genpart, -313, 213)) {
737  return +1 * (100000 * m_nPhotos + 1032);
738  }//D+ decays to anti-K*0 rho+
739  if (GenDTag::PcheckDecay(genpart, -321, 211, 211)) {
740  return +1 * (100000 * m_nPhotos + 1033);
741  }//D+ decays to K- pi+ pi+
742  if (GenDTag::PcheckDecay(genpart, 310, 211, 111)) {
743  return +1 * (100000 * m_nPhotos + 1034);
744  }//D+ decays to K_S0 pi+ pi0
745  if (GenDTag::PcheckDecay(genpart, 130, 211, 111)) {
746  return +1 * (100000 * m_nPhotos + 1035);
747  }//D+ decays to K_L0 pi+ pi0
748  if (GenDTag::PcheckDecay(genpart, -311, 211, 111)) {
749  return +1 * (100000 * m_nPhotos + 1036);
750  }//D+ decays to anti-K0 pi+ pi0
751  if (GenDTag::PcheckDecay(genpart, 310, 113, 211)) {
752  return +1 * (100000 * m_nPhotos + 1037);
753  }//D+ decays to K_S0 rho0 pi+
754  if (GenDTag::PcheckDecay(genpart, 130, 113, 211)) {
755  return +1 * (100000 * m_nPhotos + 1038);
756  }//D+ decays to K_L0 rho0 pi+
757  if (GenDTag::PcheckDecay(genpart, -311, 113, 211)) {
758  return +1 * (100000 * m_nPhotos + 1039);
759  }//D+ decays to anti-K0 rho0 pi+
760  if (GenDTag::PcheckDecay(genpart, -311, 223, 211)) {
761  return +1 * (100000 * m_nPhotos + 1040);
762  }//D+ decays to anti-K0 omega pi+
763  if (GenDTag::PcheckDecay(genpart, -321, 213, 211)) {
764  return +1 * (100000 * m_nPhotos + 1041);
765  }//D+ decays to K- rho+ pi+
766  if (GenDTag::PcheckDecay(genpart, -323, 211, 211)) {
767  return +1 * (100000 * m_nPhotos + 1042);
768  }//D+ decays to K*- pi+ pi+
769  if (GenDTag::PcheckDecay(genpart, -313, 111, 211)) {
770  return +1 * (100000 * m_nPhotos + 1043);
771  }//D+ decays to anti-K*0 pi0 pi+
772  if (GenDTag::PcheckDecay(genpart, -313, 113, 211)) {
773  return +1 * (100000 * m_nPhotos + 1044);
774  }//D+ decays to anti-K*0 rho0 pi+
775  if (GenDTag::PcheckDecay(genpart, -313, 223, 211)) {
776  return +1 * (100000 * m_nPhotos + 1045);
777  }//D+ decays to anti-K*0 omega pi+
778  if (GenDTag::PcheckDecay(genpart, -321, 211, 211, 111)) {
779  return +1 * (100000 * m_nPhotos + 1046);
780  }//D+ decays to K- pi+ pi+ pi0
781  if (GenDTag::PcheckDecay(genpart, 310, 211, 211, -211)) {
782  return +1 * (100000 * m_nPhotos + 1047);
783  }//D+ decays to K_S0 pi+ pi+ pi-
784  if (GenDTag::PcheckDecay(genpart, 130, 211, 211, -211)) {
785  return +1 * (100000 * m_nPhotos + 1048);
786  }//D+ decays to K_L0 pi+ pi+ pi-
787  if (GenDTag::PcheckDecay(genpart, -311, 211, 211, -211)) {
788  return +1 * (100000 * m_nPhotos + 1049);
789  }//D+ decays to anti-K0 pi+ pi+ pi-
790  if (GenDTag::PcheckDecay(genpart, -321, 211, 211, 211, -211)) {
791  return +1 * (100000 * m_nPhotos + 1050);
792  }//D+ decays to K- pi+ pi+ pi+ pi-
793  if (GenDTag::PcheckDecay(genpart, -321, 211, 211, 111, 111)) {
794  return +1 * (100000 * m_nPhotos + 1051);
795  }//D+ decays to K- pi+ pi+ pi0 pi0
796  if (GenDTag::PcheckDecay(genpart, -311, 211, 211, -211, 111)) {
797  return +1 * (100000 * m_nPhotos + 1052);
798  }//D+ decays to anti-K0 pi+ pi+ pi- pi0
799  if (GenDTag::PcheckDecay(genpart, -311, 211, 111, 111, 111)) {
800  return +1 * (100000 * m_nPhotos + 1053);
801  }//D+ decays to anti-K0 pi+ pi0 pi0 pi0
802  if (GenDTag::PcheckDecay(genpart, 310, 310, 321)) {
803  return +1 * (100000 * m_nPhotos + 1054);
804  }//D+ decays to K_S0 K_S0 K+
805  if (GenDTag::PcheckDecay(genpart, 130, 130, 321)) {
806  return +1 * (100000 * m_nPhotos + 1055);
807  }//D+ decays to K_L0 K_L0 K+
808  if (GenDTag::PcheckDecay(genpart, -311, -311, 321)) {
809  return +1 * (100000 * m_nPhotos + 1056);
810  }//D+ decays to anti-K0 anti-K0 K+
811  if (GenDTag::PcheckDecay(genpart, 333, 211)) {
812  return +1 * (100000 * m_nPhotos + 1057);
813  }//D+ decays to phi pi+
814  if (GenDTag::PcheckDecay(genpart, 333, 211, 111)) {
815  return +1 * (100000 * m_nPhotos + 1058);
816  }//D+ decays to phi pi+ pi0
817  if (GenDTag::PcheckDecay(genpart, 310, 321)) {
818  return +1 * (100000 * m_nPhotos + 1059);
819  }//D+ decays to K_S0 K+
820  if (GenDTag::PcheckDecay(genpart, 130, 321)) {
821  return +1 * (100000 * m_nPhotos + 1060);
822  }//D+ decays to K_L0 K+
823  if (GenDTag::PcheckDecay(genpart, -311, 321)) {
824  return +1 * (100000 * m_nPhotos + 1061);
825  }//D+ decays to anti-K0 K+
826  if (GenDTag::PcheckDecay(genpart, -313, 321)) {
827  return +1 * (100000 * m_nPhotos + 1062);
828  }//D+ decays to anti-K*0 K+
829  if (GenDTag::PcheckDecay(genpart, 323, 310)) {
830  return +1 * (100000 * m_nPhotos + 1063);
831  }//D+ decays to K*+ K_S0
832  if (GenDTag::PcheckDecay(genpart, 323, 130)) {
833  return +1 * (100000 * m_nPhotos + 1064);
834  }//D+ decays to K*+ K_L0
835  if (GenDTag::PcheckDecay(genpart, 323, -311)) {
836  return +1 * (100000 * m_nPhotos + 1065);
837  }//D+ decays to K*+ anti-K0
838  if (GenDTag::PcheckDecay(genpart, 321, -321, 211)) {
839  return +1 * (100000 * m_nPhotos + 1066);
840  }//D+ decays to K+ K- pi+
841  if (GenDTag::PcheckDecay(genpart, 321, -311, 111)) {
842  return +1 * (100000 * m_nPhotos + 1067);
843  }//D+ decays to K+ anti-K0 pi0
844  if (GenDTag::PcheckDecay(genpart, -311, 311, 211)) {
845  return +1 * (100000 * m_nPhotos + 1068);
846  }//D+ decays to anti-K0 K0 pi+
847  if (GenDTag::PcheckDecay(genpart, 323, -321, 211)) {
848  return +1 * (100000 * m_nPhotos + 1069);
849  }//D+ decays to K*+ K- pi+
850  if (GenDTag::PcheckDecay(genpart, 321, -323, 211)) {
851  return +1 * (100000 * m_nPhotos + 1070);
852  }//D+ decays to K+ K*- pi+
853  if (GenDTag::PcheckDecay(genpart, 323, -311, 111)) {
854  return +1 * (100000 * m_nPhotos + 1071);
855  }//D+ decays to K*+ anti-K0 pi0
856  if (GenDTag::PcheckDecay(genpart, 321, -313, 111)) {
857  return +1 * (100000 * m_nPhotos + 1072);
858  }//D+ decays to K+ anti-K*0 pi0
859  if (GenDTag::PcheckDecay(genpart, -313, 311, 211)) {
860  return +1 * (100000 * m_nPhotos + 1073);
861  }//D+ decays to anti-K*0 K0 pi+
862  if (GenDTag::PcheckDecay(genpart, -311, 313, 211)) {
863  return +1 * (100000 * m_nPhotos + 1074);
864  }//D+ decays to anti-K0 K*0 pi+
865  if (GenDTag::PcheckDecay(genpart, 111, 211)) {
866  return +1 * (100000 * m_nPhotos + 1075);
867  }//D+ decays to pi0 pi+
868  if (GenDTag::PcheckDecay(genpart, 113, 211)) {
869  return +1 * (100000 * m_nPhotos + 1076);
870  }//D+ decays to rho0 pi+
871  if (GenDTag::PcheckDecay(genpart, 211, 211, -211)) {
872  return +1 * (100000 * m_nPhotos + 1077);
873  }//D+ decays to pi+ pi+ pi-
874  if (GenDTag::PcheckDecay(genpart, 211, 111, 111)) {
875  return +1 * (100000 * m_nPhotos + 1078);
876  }//D+ decays to pi+ pi0 pi0
877  if (GenDTag::PcheckDecay(genpart, 211, 211, -211, 111)) {
878  return +1 * (100000 * m_nPhotos + 1079);
879  }//D+ decays to pi+ pi+ pi- pi0
880  if (GenDTag::PcheckDecay(genpart, 211, 111, 111, 111)) {
881  return +1 * (100000 * m_nPhotos + 1080);
882  }//D+ decays to pi+ pi0 pi0 pi0
883  if (GenDTag::PcheckDecay(genpart, 221, 211)) {
884  return +1 * (100000 * m_nPhotos + 1081);
885  }//D+ decays to eta pi+
886  if (GenDTag::PcheckDecay(genpart, 331, 211)) {
887  return +1 * (100000 * m_nPhotos + 1082);
888  }//D+ decays to eta' pi+
889  if (GenDTag::PcheckDecay(genpart, 221, 211, 111)) {
890  return +1 * (100000 * m_nPhotos + 1083);
891  }//D+ decays to eta pi+ pi0
892  if (GenDTag::PcheckDecay(genpart, 221, 211, 211, -211)) {
893  return +1 * (100000 * m_nPhotos + 1084);
894  }//D+ decays to eta pi+ pi+ pi-
895  if (GenDTag::PcheckDecay(genpart, 221, 211, 111, 111)) {
896  return +1 * (100000 * m_nPhotos + 1085);
897  }//D+ decays to eta pi+ pi0 pi0
898  if (GenDTag::PcheckDecay(genpart, 211, 211, 211, -211, -211)) {
899  return +1 * (100000 * m_nPhotos + 1086);
900  }//D+ decays to pi+ pi+ pi+ pi- pi-
901  if (GenDTag::PcheckDecay(genpart, 321, -321, 211, 111)) {
902  return +1 * (100000 * m_nPhotos + 1087);
903  }//D+ decays to K+ K- pi+ pi0
904  if (GenDTag::PcheckDecay(genpart, 321, 310, 211, -211)) {
905  return +1 * (100000 * m_nPhotos + 1088);
906  }//D+ decays to K+ K_S0 pi+ pi-
907  if (GenDTag::PcheckDecay(genpart, 321, 130, 211, -211)) {
908  return +1 * (100000 * m_nPhotos + 1089);
909  }//D+ decays to K+ K_L0 pi+ pi-
910  if (GenDTag::PcheckDecay(genpart, 321, -311, 211, -211)) {
911  return +1 * (100000 * m_nPhotos + 1090);
912  }//D+ decays to K+ anti-K0 pi+ pi-
913  if (GenDTag::PcheckDecay(genpart, 310, -321, 211, 211)) {
914  return +1 * (100000 * m_nPhotos + 1091);
915  }//D+ decays to K_S0 K- pi+ pi+
916  if (GenDTag::PcheckDecay(genpart, 130, -321, 211, 211)) {
917  return +1 * (100000 * m_nPhotos + 1092);
918  }//D+ decays to K_L0 K- pi+ pi+
919  if (GenDTag::PcheckDecay(genpart, 311, -321, 211, 211)) {
920  return +1 * (100000 * m_nPhotos + 1093);
921  }//D+ decays to K0 K- pi+ pi+
922  if (GenDTag::PcheckDecay(genpart, 321, -321, 211, 211, -211)) {
923  return +1 * (100000 * m_nPhotos + 1094);
924  }//D+ decays to K+ K- pi+ pi+ pi-
925  if (GenDTag::PcheckDecay(genpart, 321, -321, 310, 211)) {
926  return +1 * (100000 * m_nPhotos + 1095);
927  }//D+ decays to K+ K- K_S0 pi+
928  if (GenDTag::PcheckDecay(genpart, 321, -321, 130, 211)) {
929  return +1 * (100000 * m_nPhotos + 1096);
930  }//D+ decays to K+ K- K_L0 pi+
931  if (GenDTag::PcheckDecay(genpart, 321, -321, -311, 211)) {
932  return +1 * (100000 * m_nPhotos + 1097);
933  }//D+ decays to K+ K- anti-K0 pi+
934  if (GenDTag::PcheckDecay(genpart, -313, 20213)) {
935  return +1 * (100000 * m_nPhotos + 1098);
936  }//D+ decays to anti-K*0 a_1+
937  if (GenDTag::PcheckDecay(genpart, 321, 111)) {
938  return +1 * (100000 * m_nPhotos + 1099);
939  }//D+ decays to K+ pi0
940  if (GenDTag::PcheckDecay(genpart, 321, 211, -211)) {
941  return +1 * (100000 * m_nPhotos + 1100);
942  }//D+ decays to K+ pi+ pi-
943  if (GenDTag::PcheckDecay(genpart, 321, 321, -321)) {
944  return +1 * (100000 * m_nPhotos + 1101);
945  }//D+ decays to K+ K+ K-
946  if (GenDTag::PcheckDecay(genpart, -321, 113, 211, 211)) {
947  return +1 * (100000 * m_nPhotos + 1102);
948  }//D+ decays to K- rho0 pi+ pi+
949  if (GenDTag::PcheckDecay(genpart, 331, 211, 111)) {
950  return +1 * (100000 * m_nPhotos + 1103);
951  }//D+ decays to eta' pi+ pi0
952  if (GenDTag::PcheckDecay(genpart, 321, 113)) {
953  return +1 * (100000 * m_nPhotos + 1104);
954  }//D+ decays to K+ rho0
955  return +1 * genpart.size();
956 }// Rest of the D+ decays
957 
958 
959 int GenDTag::Mode_D_minus(std::vector<int> genpart)
960 {
961  if (GenDTag::PcheckDecay(genpart, 313, 11, -12)) {
962  return -1 * (100000 * m_nPhotos + 1001);
963  }//D- decays to K*0 e- anti-nu_e
964  if (GenDTag::PcheckDecay(genpart, 311, 11, -12)) {
965  return -1 * (100000 * m_nPhotos + 1002);
966  }//D- decays to K0 e- anti-nu_e
967  if (GenDTag::PcheckDecay(genpart, 10313, 11, -12)) {
968  return -1 * (100000 * m_nPhotos + 1003);
969  }//D- decays to K_10 e- anti-nu_e
970  if (GenDTag::PcheckDecay(genpart, 315, 11, -12)) {
971  return -1 * (100000 * m_nPhotos + 1004);
972  }//D- decays to K_2*0 e- anti-nu_e
973  if (GenDTag::PcheckDecay(genpart, 111, 11, -12)) {
974  return -1 * (100000 * m_nPhotos + 1005);
975  }//D- decays to pi0 e- anti-nu_e
976  if (GenDTag::PcheckDecay(genpart, 221, 11, -12)) {
977  return -1 * (100000 * m_nPhotos + 1006);
978  }//D- decays to eta e- anti-nu_e
979  if (GenDTag::PcheckDecay(genpart, 331, 11, -12)) {
980  return -1 * (100000 * m_nPhotos + 1007);
981  }//D- decays to eta' e- anti-nu_e
982  if (GenDTag::PcheckDecay(genpart, 113, 11, -12)) {
983  return -1 * (100000 * m_nPhotos + 1008);
984  }//D- decays to rho0 e- anti-nu_e
985  if (GenDTag::PcheckDecay(genpart, 223, 11, -12)) {
986  return -1 * (100000 * m_nPhotos + 1009);
987  }//D- decays to omega e- anti-nu_e
988  if (GenDTag::PcheckDecay(genpart, 321, -211, 11, -12)) {
989  return -1 * (100000 * m_nPhotos + 1010);
990  }//D- decays to K+ pi- e- anti-nu_e
991  if (GenDTag::PcheckDecay(genpart, 311, 111, 11, -12)) {
992  return -1 * (100000 * m_nPhotos + 1011);
993  }//D- decays to K0 pi0 e- anti-nu_e
994  if (GenDTag::PcheckDecay(genpart, 313, 13, -14)) {
995  return -1 * (100000 * m_nPhotos + 1012);
996  }//D- decays to K*0 mu- anti-nu_mu
997  if (GenDTag::PcheckDecay(genpart, 311, 13, -14)) {
998  return -1 * (100000 * m_nPhotos + 1013);
999  }//D- decays to K0 mu- anti-nu_mu
1000  if (GenDTag::PcheckDecay(genpart, 10313, 13, -14)) {
1001  return -1 * (100000 * m_nPhotos + 1014);
1002  }//D- decays to K_10 mu- anti-nu_mu
1003  if (GenDTag::PcheckDecay(genpart, 315, 13, -14)) {
1004  return -1 * (100000 * m_nPhotos + 1015);
1005  }//D- decays to K_2*0 mu- anti-nu_mu
1006  if (GenDTag::PcheckDecay(genpart, 111, 13, -14)) {
1007  return -1 * (100000 * m_nPhotos + 1016);
1008  }//D- decays to pi0 mu- anti-nu_mu
1009  if (GenDTag::PcheckDecay(genpart, 221, 13, -14)) {
1010  return -1 * (100000 * m_nPhotos + 1017);
1011  }//D- decays to eta mu- anti-nu_mu
1012  if (GenDTag::PcheckDecay(genpart, 331, 13, -14)) {
1013  return -1 * (100000 * m_nPhotos + 1018);
1014  }//D- decays to eta' mu- anti-nu_mu
1015  if (GenDTag::PcheckDecay(genpart, 113, 13, -14)) {
1016  return -1 * (100000 * m_nPhotos + 1019);
1017  }//D- decays to rho0 mu- anti-nu_mu
1018  if (GenDTag::PcheckDecay(genpart, 223, 13, -14)) {
1019  return -1 * (100000 * m_nPhotos + 1020);
1020  }//D- decays to omega mu- anti-nu_mu
1021  if (GenDTag::PcheckDecay(genpart, 321, -211, 13, -14)) {
1022  return -1 * (100000 * m_nPhotos + 1021);
1023  }//D- decays to K+ pi- mu- anti-nu_mu
1024  if (GenDTag::PcheckDecay(genpart, 311, 111, 13, -14)) {
1025  return -1 * (100000 * m_nPhotos + 1022);
1026  }//D- decays to K0 pi0 mu- anti-nu_mu
1027  if (GenDTag::PcheckDecay(genpart, 13, -14)) {
1028  return -1 * (100000 * m_nPhotos + 1023);
1029  }//D- decays to mu- anti-nu_mu
1030  if (GenDTag::PcheckDecay(genpart, 15, -16)) {
1031  return -1 * (100000 * m_nPhotos + 1024);
1032  }//D- decays to tau- anti-nu_tau
1033  if (GenDTag::PcheckDecay(genpart, 310, -211)) {
1034  return -1 * (100000 * m_nPhotos + 1025);
1035  }//D- decays to K_S0 pi-
1036  if (GenDTag::PcheckDecay(genpart, 130, -211)) {
1037  return -1 * (100000 * m_nPhotos + 1026);
1038  }//D- decays to K_L0 pi-
1039  if (GenDTag::PcheckDecay(genpart, 311, -211)) {
1040  return -1 * (100000 * m_nPhotos + 1027);
1041  }//D- decays to K0 pi-
1042  if (GenDTag::PcheckDecay(genpart, -20213, 310)) {
1043  return -1 * (100000 * m_nPhotos + 1028);
1044  }//D- decays to a_1- K_S0
1045  if (GenDTag::PcheckDecay(genpart, -20213, 130)) {
1046  return -1 * (100000 * m_nPhotos + 1029);
1047  }//D- decays to a_1- K_L0
1048  if (GenDTag::PcheckDecay(genpart, -20213, 311)) {
1049  return -1 * (100000 * m_nPhotos + 1030);
1050  }//D- decays to a_1- K0
1051  if (GenDTag::PcheckDecay(genpart, 20313, -211)) {
1052  return -1 * (100000 * m_nPhotos + 1031);
1053  }//D- decays to K'_10 pi-
1054  if (GenDTag::PcheckDecay(genpart, 313, -213)) {
1055  return -1 * (100000 * m_nPhotos + 1032);
1056  }//D- decays to K*0 rho-
1057  if (GenDTag::PcheckDecay(genpart, 321, -211, -211)) {
1058  return -1 * (100000 * m_nPhotos + 1033);
1059  }//D- decays to K+ pi- pi-
1060  if (GenDTag::PcheckDecay(genpart, 310, -211, 111)) {
1061  return -1 * (100000 * m_nPhotos + 1034);
1062  }//D- decays to K_S0 pi- pi0
1063  if (GenDTag::PcheckDecay(genpart, 130, -211, 111)) {
1064  return -1 * (100000 * m_nPhotos + 1035);
1065  }//D- decays to K_L0 pi- pi0
1066  if (GenDTag::PcheckDecay(genpart, 311, -211, 111)) {
1067  return -1 * (100000 * m_nPhotos + 1036);
1068  }//D- decays to K0 pi- pi0
1069  if (GenDTag::PcheckDecay(genpart, 310, 113, -211)) {
1070  return -1 * (100000 * m_nPhotos + 1037);
1071  }//D- decays to K_S0 rho0 pi-
1072  if (GenDTag::PcheckDecay(genpart, 130, 113, -211)) {
1073  return -1 * (100000 * m_nPhotos + 1038);
1074  }//D- decays to K_L0 rho0 pi-
1075  if (GenDTag::PcheckDecay(genpart, 311, 113, -211)) {
1076  return -1 * (100000 * m_nPhotos + 1039);
1077  }//D- decays to K0 rho0 pi-
1078  if (GenDTag::PcheckDecay(genpart, 311, 223, -211)) {
1079  return -1 * (100000 * m_nPhotos + 1040);
1080  }//D- decays to K0 omega pi-
1081  if (GenDTag::PcheckDecay(genpart, 321, -213, -211)) {
1082  return -1 * (100000 * m_nPhotos + 1041);
1083  }//D- decays to K+ rho- pi-
1084  if (GenDTag::PcheckDecay(genpart, 323, -211, -211)) {
1085  return -1 * (100000 * m_nPhotos + 1042);
1086  }//D- decays to K*+ pi- pi-
1087  if (GenDTag::PcheckDecay(genpart, 313, 111, -211)) {
1088  return -1 * (100000 * m_nPhotos + 1043);
1089  }//D- decays to K*0 pi0 pi-
1090  if (GenDTag::PcheckDecay(genpart, 313, 113, -211)) {
1091  return -1 * (100000 * m_nPhotos + 1044);
1092  }//D- decays to K*0 rho0 pi-
1093  if (GenDTag::PcheckDecay(genpart, 313, 223, -211)) {
1094  return -1 * (100000 * m_nPhotos + 1045);
1095  }//D- decays to K*0 omega pi-
1096  if (GenDTag::PcheckDecay(genpart, 321, -211, -211, 111)) {
1097  return -1 * (100000 * m_nPhotos + 1046);
1098  }//D- decays to K+ pi- pi- pi0
1099  if (GenDTag::PcheckDecay(genpart, 310, -211, -211, 211)) {
1100  return -1 * (100000 * m_nPhotos + 1047);
1101  }//D- decays to K_S0 pi- pi- pi+
1102  if (GenDTag::PcheckDecay(genpart, 130, -211, -211, 211)) {
1103  return -1 * (100000 * m_nPhotos + 1048);
1104  }//D- decays to K_L0 pi- pi- pi+
1105  if (GenDTag::PcheckDecay(genpart, 311, -211, -211, 211)) {
1106  return -1 * (100000 * m_nPhotos + 1049);
1107  }//D- decays to K0 pi- pi- pi+
1108  if (GenDTag::PcheckDecay(genpart, 321, -211, -211, -211, 211)) {
1109  return -1 * (100000 * m_nPhotos + 1050);
1110  }//D- decays to K+ pi- pi- pi- pi+
1111  if (GenDTag::PcheckDecay(genpart, 321, -211, -211, 111, 111)) {
1112  return -1 * (100000 * m_nPhotos + 1051);
1113  }//D- decays to K+ pi- pi- pi0 pi0
1114  if (GenDTag::PcheckDecay(genpart, 311, -211, -211, 211, 111)) {
1115  return -1 * (100000 * m_nPhotos + 1052);
1116  }//D- decays to K0 pi- pi- pi+ pi0
1117  if (GenDTag::PcheckDecay(genpart, 311, -211, 111, 111, 111)) {
1118  return -1 * (100000 * m_nPhotos + 1053);
1119  }//D- decays to K0 pi- pi0 pi0 pi0
1120  if (GenDTag::PcheckDecay(genpart, 310, 310, -321)) {
1121  return -1 * (100000 * m_nPhotos + 1054);
1122  }//D- decays to K_S0 K_S0 K-
1123  if (GenDTag::PcheckDecay(genpart, 130, 130, -321)) {
1124  return -1 * (100000 * m_nPhotos + 1055);
1125  }//D- decays to K_L0 K_L0 K-
1126  if (GenDTag::PcheckDecay(genpart, 311, 311, -321)) {
1127  return -1 * (100000 * m_nPhotos + 1056);
1128  }//D- decays to K0 K0 K-
1129  if (GenDTag::PcheckDecay(genpart, 333, -211)) {
1130  return -1 * (100000 * m_nPhotos + 1057);
1131  }//D- decays to phi pi-
1132  if (GenDTag::PcheckDecay(genpart, 333, -211, 111)) {
1133  return -1 * (100000 * m_nPhotos + 1058);
1134  }//D- decays to phi pi- pi0
1135  if (GenDTag::PcheckDecay(genpart, 310, -321)) {
1136  return -1 * (100000 * m_nPhotos + 1059);
1137  }//D- decays to K_S0 K-
1138  if (GenDTag::PcheckDecay(genpart, 130, -321)) {
1139  return -1 * (100000 * m_nPhotos + 1060);
1140  }//D- decays to K_L0 K-
1141  if (GenDTag::PcheckDecay(genpart, 311, -321)) {
1142  return -1 * (100000 * m_nPhotos + 1061);
1143  }//D- decays to K0 K-
1144  if (GenDTag::PcheckDecay(genpart, 313, -321)) {
1145  return -1 * (100000 * m_nPhotos + 1062);
1146  }//D- decays to K*0 K-
1147  if (GenDTag::PcheckDecay(genpart, -323, 310)) {
1148  return -1 * (100000 * m_nPhotos + 1063);
1149  }//D- decays to K*- K_S0
1150  if (GenDTag::PcheckDecay(genpart, -323, 130)) {
1151  return -1 * (100000 * m_nPhotos + 1064);
1152  }//D- decays to K*- K_L0
1153  if (GenDTag::PcheckDecay(genpart, -323, 311)) {
1154  return -1 * (100000 * m_nPhotos + 1065);
1155  }//D- decays to K*- K0
1156  if (GenDTag::PcheckDecay(genpart, -321, 321, -211)) {
1157  return -1 * (100000 * m_nPhotos + 1066);
1158  }//D- decays to K- K+ pi-
1159  if (GenDTag::PcheckDecay(genpart, -321, 311, 111)) {
1160  return -1 * (100000 * m_nPhotos + 1067);
1161  }//D- decays to K- K0 pi0
1162  if (GenDTag::PcheckDecay(genpart, -311, 311, -211)) {
1163  return -1 * (100000 * m_nPhotos + 1068);
1164  }//D- decays to anti-K0 K0 pi-
1165  if (GenDTag::PcheckDecay(genpart, -323, 321, -211)) {
1166  return -1 * (100000 * m_nPhotos + 1069);
1167  }//D- decays to K*- K+ pi-
1168  if (GenDTag::PcheckDecay(genpart, -321, 323, -211)) {
1169  return -1 * (100000 * m_nPhotos + 1070);
1170  }//D- decays to K- K*+ pi-
1171  if (GenDTag::PcheckDecay(genpart, -323, 311, 111)) {
1172  return -1 * (100000 * m_nPhotos + 1071);
1173  }//D- decays to K*- K0 pi0
1174  if (GenDTag::PcheckDecay(genpart, -321, 313, 111)) {
1175  return -1 * (100000 * m_nPhotos + 1072);
1176  }//D- decays to K- K*0 pi0
1177  if (GenDTag::PcheckDecay(genpart, 313, -311, -211)) {
1178  return -1 * (100000 * m_nPhotos + 1073);
1179  }//D- decays to K*0 anti-K0 pi-
1180  if (GenDTag::PcheckDecay(genpart, 311, -313, -211)) {
1181  return -1 * (100000 * m_nPhotos + 1074);
1182  }//D- decays to K0 anti-K*0 pi-
1183  if (GenDTag::PcheckDecay(genpart, 111, -211)) {
1184  return -1 * (100000 * m_nPhotos + 1075);
1185  }//D- decays to pi0 pi-
1186  if (GenDTag::PcheckDecay(genpart, 113, -211)) {
1187  return -1 * (100000 * m_nPhotos + 1076);
1188  }//D- decays to rho0 pi-
1189  if (GenDTag::PcheckDecay(genpart, -211, 211, -211)) {
1190  return -1 * (100000 * m_nPhotos + 1077);
1191  }//D- decays to pi- pi+ pi-
1192  if (GenDTag::PcheckDecay(genpart, -211, 111, 111)) {
1193  return -1 * (100000 * m_nPhotos + 1078);
1194  }//D- decays to pi- pi0 pi0
1195  if (GenDTag::PcheckDecay(genpart, -211, 211, -211, 111)) {
1196  return -1 * (100000 * m_nPhotos + 1079);
1197  }//D- decays to pi- pi+ pi- pi0
1198  if (GenDTag::PcheckDecay(genpart, -211, 111, 111, 111)) {
1199  return -1 * (100000 * m_nPhotos + 1080);
1200  }//D- decays to pi- pi0 pi0 pi0
1201  if (GenDTag::PcheckDecay(genpart, 221, -211)) {
1202  return -1 * (100000 * m_nPhotos + 1081);
1203  }//D- decays to eta pi-
1204  if (GenDTag::PcheckDecay(genpart, 331, -211)) {
1205  return -1 * (100000 * m_nPhotos + 1082);
1206  }//D- decays to eta' pi-
1207  if (GenDTag::PcheckDecay(genpart, 221, -211, 111)) {
1208  return -1 * (100000 * m_nPhotos + 1083);
1209  }//D- decays to eta pi- pi0
1210  if (GenDTag::PcheckDecay(genpart, 221, -211, 211, -211)) {
1211  return -1 * (100000 * m_nPhotos + 1084);
1212  }//D- decays to eta pi- pi+ pi-
1213  if (GenDTag::PcheckDecay(genpart, 221, -211, 111, 111)) {
1214  return -1 * (100000 * m_nPhotos + 1085);
1215  }//D- decays to eta pi- pi0 pi0
1216  if (GenDTag::PcheckDecay(genpart, 211, -211, 211, -211, -211)) {
1217  return -1 * (100000 * m_nPhotos + 1086);
1218  }//D- decays to pi+ pi- pi+ pi- pi-
1219  if (GenDTag::PcheckDecay(genpart, 313, -20213)) {
1220  return -1 * (100000 * m_nPhotos + 1087);
1221  }//D- decays to K*0 a_1-
1222  if (GenDTag::PcheckDecay(genpart, 321, -321, -211, 111)) {
1223  return -1 * (100000 * m_nPhotos + 1088);
1224  }//D- decays to K+ K- pi- pi0
1225  if (GenDTag::PcheckDecay(genpart, -321, 310, 211, -211)) {
1226  return -1 * (100000 * m_nPhotos + 1089);
1227  }//D- decays to K- K_S0 pi+ pi-
1228  if (GenDTag::PcheckDecay(genpart, -321, 130, 211, -211)) {
1229  return -1 * (100000 * m_nPhotos + 1090);
1230  }//D- decays to K- K_L0 pi+ pi-
1231  if (GenDTag::PcheckDecay(genpart, -321, 311, 211, -211)) {
1232  return -1 * (100000 * m_nPhotos + 1091);
1233  }//D- decays to K- K0 pi+ pi-
1234  if (GenDTag::PcheckDecay(genpart, 310, 321, -211, -211)) {
1235  return -1 * (100000 * m_nPhotos + 1092);
1236  }//D- decays to K_S0 K+ pi- pi-
1237  if (GenDTag::PcheckDecay(genpart, 130, 321, -211, -211)) {
1238  return -1 * (100000 * m_nPhotos + 1093);
1239  }//D- decays to K_L0 K+ pi- pi-
1240  if (GenDTag::PcheckDecay(genpart, -311, 321, -211, -211)) {
1241  return -1 * (100000 * m_nPhotos + 1094);
1242  }//D- decays to anti-K0 K+ pi- pi-
1243  if (GenDTag::PcheckDecay(genpart, 321, -321, 211, -211, -211)) {
1244  return -1 * (100000 * m_nPhotos + 1095);
1245  }//D- decays to K+ K- pi+ pi- pi-
1246  if (GenDTag::PcheckDecay(genpart, 321, -321, 310, -211)) {
1247  return -1 * (100000 * m_nPhotos + 1096);
1248  }//D- decays to K+ K- K_S0 pi-
1249  if (GenDTag::PcheckDecay(genpart, 321, -321, 130, -211)) {
1250  return -1 * (100000 * m_nPhotos + 1097);
1251  }//D- decays to K+ K- K_L0 pi-
1252  if (GenDTag::PcheckDecay(genpart, 321, -321, 311, -211)) {
1253  return -1 * (100000 * m_nPhotos + 1098);
1254  }//D- decays to K+ K- K0 pi-
1255  if (GenDTag::PcheckDecay(genpart, -321, 111)) {
1256  return -1 * (100000 * m_nPhotos + 1099);
1257  }//D- decays to K- pi0
1258  if (GenDTag::PcheckDecay(genpart, -321, 211, -211)) {
1259  return -1 * (100000 * m_nPhotos + 1100);
1260  }//D- decays to K- pi+ pi-
1261  if (GenDTag::PcheckDecay(genpart, -321, 321, -321)) {
1262  return -1 * (100000 * m_nPhotos + 1101);
1263  }//D- decays to K- K+ K-
1264  if (GenDTag::PcheckDecay(genpart, 321, 113, -211, -211)) {
1265  return -1 * (100000 * m_nPhotos + 1102);
1266  }//D- decays to K+ rho0 pi- pi-
1267  if (GenDTag::PcheckDecay(genpart, 331, -211, 111)) {
1268  return -1 * (100000 * m_nPhotos + 1103);
1269  }//D- decays to eta' pi- pi0
1270  if (GenDTag::PcheckDecay(genpart, -321, 113)) {
1271  return -1 * (100000 * m_nPhotos + 1104);
1272  }//D- decays to K- rho0
1273  return -1 * (int)genpart.size();
1274 }// Rest of the D- decays
1275 
1276 
1277 int GenDTag::Mode_D0(std::vector<int> genpart)
1278 {
1279  if (GenDTag::PcheckDecay(genpart, -323, -11, 12)) {
1280  return +1 * (100000 * m_nPhotos + 1001);
1281  }//D0 decays to K*- e+ nu_e
1282  if (GenDTag::PcheckDecay(genpart, -321, -11, 12)) {
1283  return +1 * (100000 * m_nPhotos + 1002);
1284  }//D0 decays to K- e+ nu_e
1285  if (GenDTag::PcheckDecay(genpart, -10323, -11, 12)) {
1286  return +1 * (100000 * m_nPhotos + 1003);
1287  }//D0 decays to K_1- e+ nu_e
1288  if (GenDTag::PcheckDecay(genpart, -325, -11, 12)) {
1289  return +1 * (100000 * m_nPhotos + 1004);
1290  }//D0 decays to K_2*- e+ nu_e
1291  if (GenDTag::PcheckDecay(genpart, -211, -11, 12)) {
1292  return +1 * (100000 * m_nPhotos + 1005);
1293  }//D0 decays to pi- e+ nu_e
1294  if (GenDTag::PcheckDecay(genpart, -213, -11, 12)) {
1295  return +1 * (100000 * m_nPhotos + 1006);
1296  }//D0 decays to rho- e+ nu_e
1297  if (GenDTag::PcheckDecay(genpart, -311, -211, -11, 12)) {
1298  return +1 * (100000 * m_nPhotos + 1007);
1299  }//D0 decays to anti-K0 pi- e+ nu_e
1300  if (GenDTag::PcheckDecay(genpart, -321, 111, -11, 12)) {
1301  return +1 * (100000 * m_nPhotos + 1008);
1302  }//D0 decays to K- pi0 e+ nu_e
1303  if (GenDTag::PcheckDecay(genpart, -323, -13, 14)) {
1304  return +1 * (100000 * m_nPhotos + 1009);
1305  }//D0 decays to K*- mu+ nu_mu
1306  if (GenDTag::PcheckDecay(genpart, -321, -13, 14)) {
1307  return +1 * (100000 * m_nPhotos + 1010);
1308  }//D0 decays to K- mu+ nu_mu
1309  if (GenDTag::PcheckDecay(genpart, -10323, -13, 14)) {
1310  return +1 * (100000 * m_nPhotos + 1011);
1311  }//D0 decays to K_1- mu+ nu_mu
1312  if (GenDTag::PcheckDecay(genpart, -325, -13, 14)) {
1313  return +1 * (100000 * m_nPhotos + 1012);
1314  }//D0 decays to K_2*- mu+ nu_mu
1315  if (GenDTag::PcheckDecay(genpart, -211, -13, 14)) {
1316  return +1 * (100000 * m_nPhotos + 1013);
1317  }//D0 decays to pi- mu+ nu_mu
1318  if (GenDTag::PcheckDecay(genpart, -213, -13, 14)) {
1319  return +1 * (100000 * m_nPhotos + 1014);
1320  }//D0 decays to rho- mu+ nu_mu
1321  if (GenDTag::PcheckDecay(genpart, -311, -211, -13, 14)) {
1322  return +1 * (100000 * m_nPhotos + 1015);
1323  }//D0 decays to anti-K0 pi- mu+ nu_mu
1324  if (GenDTag::PcheckDecay(genpart, -321, 111, -13, 14)) {
1325  return +1 * (100000 * m_nPhotos + 1016);
1326  }//D0 decays to K- pi0 mu+ nu_mu
1327  if (GenDTag::PcheckDecay(genpart, -321, 211)) {
1328  return +1 * (100000 * m_nPhotos + 1017);
1329  }//D0 decays to K- pi+
1330  if (GenDTag::PcheckDecay(genpart, 310, 111)) {
1331  return +1 * (100000 * m_nPhotos + 1018);
1332  }//D0 decays to K_S0 pi0
1333  if (GenDTag::PcheckDecay(genpart, 130, 111)) {
1334  return +1 * (100000 * m_nPhotos + 1019);
1335  }//D0 decays to K_L0 pi0
1336  if (GenDTag::PcheckDecay(genpart, -311, 111)) {
1337  return +1 * (100000 * m_nPhotos + 1020);
1338  }//D0 decays to anti-K0 pi0
1339  if (GenDTag::PcheckDecay(genpart, 310, 221)) {
1340  return +1 * (100000 * m_nPhotos + 1021);
1341  }//D0 decays to K_S0 eta
1342  if (GenDTag::PcheckDecay(genpart, 130, 221)) {
1343  return +1 * (100000 * m_nPhotos + 1022);
1344  }//D0 decays to K_L0 eta
1345  if (GenDTag::PcheckDecay(genpart, -311, 221)) {
1346  return +1 * (100000 * m_nPhotos + 1023);
1347  }//D0 decays to anti-K0 eta
1348  if (GenDTag::PcheckDecay(genpart, 310, 331)) {
1349  return +1 * (100000 * m_nPhotos + 1024);
1350  }//D0 decays to K_S0 eta'
1351  if (GenDTag::PcheckDecay(genpart, 130, 331)) {
1352  return +1 * (100000 * m_nPhotos + 1025);
1353  }//D0 decays to K_L0 eta'
1354  if (GenDTag::PcheckDecay(genpart, -311, 331)) {
1355  return +1 * (100000 * m_nPhotos + 1026);
1356  }//D0 decays to anti-K0 eta'
1357  if (GenDTag::PcheckDecay(genpart, 223, 310)) {
1358  return +1 * (100000 * m_nPhotos + 1027);
1359  }//D0 decays to omega K_S0
1360  if (GenDTag::PcheckDecay(genpart, 223, 130)) {
1361  return +1 * (100000 * m_nPhotos + 1028);
1362  }//D0 decays to omega K_L0
1363  if (GenDTag::PcheckDecay(genpart, 223, -311)) {
1364  return +1 * (100000 * m_nPhotos + 1029);
1365  }//D0 decays to omega anti-K0
1366  if (GenDTag::PcheckDecay(genpart, -313, 221)) {
1367  return +1 * (100000 * m_nPhotos + 1030);
1368  }//D0 decays to anti-K*0 eta
1369  if (GenDTag::PcheckDecay(genpart, -313, 331)) {
1370  return +1 * (100000 * m_nPhotos + 1031);
1371  }//D0 decays to anti-K*0 eta'
1372  if (GenDTag::PcheckDecay(genpart, 20213, -321)) {
1373  return +1 * (100000 * m_nPhotos + 1032);
1374  }//D0 decays to a_1+ K-
1375  if (GenDTag::PcheckDecay(genpart, -323, 213)) {
1376  return +1 * (100000 * m_nPhotos + 1033);
1377  }//D0 decays to K*- rho+
1378  if (GenDTag::PcheckDecay(genpart, -313, 113)) {
1379  return +1 * (100000 * m_nPhotos + 1034);
1380  }//D0 decays to anti-K*0 rho0
1381  if (GenDTag::PcheckDecay(genpart, -313, 223)) {
1382  return +1 * (100000 * m_nPhotos + 1035);
1383  }//D0 decays to anti-K*0 omega
1384  if (GenDTag::PcheckDecay(genpart, -321, 211, 111)) {
1385  return +1 * (100000 * m_nPhotos + 1036);
1386  }//D0 decays to K- pi+ pi0
1387  if (GenDTag::PcheckDecay(genpart, -313, 111)) {
1388  return +1 * (100000 * m_nPhotos + 1037);
1389  }//D0 decays to K*BR pi0
1390  if (GenDTag::PcheckDecay(genpart, -10323, 211)) {
1391  return +1 * (100000 * m_nPhotos + 1038);
1392  }//D0 decays to K_1- pi+
1393  if (GenDTag::PcheckDecay(genpart, -10313, 111)) {
1394  return +1 * (100000 * m_nPhotos + 1039);
1395  }//D0 decays to anti-K_10 pi0
1396  if (GenDTag::PcheckDecay(genpart, 310, 211, -211)) {
1397  return +1 * (100000 * m_nPhotos + 1040);
1398  }//D0 decays to K_S0 pi+ pi-
1399  if (GenDTag::PcheckDecay(genpart, 130, 211, -211)) {
1400  return +1 * (100000 * m_nPhotos + 1041);
1401  }//D0 decays to K_L0 pi+ pi-
1402  if (GenDTag::PcheckDecay(genpart, -311, 211, -211)) {
1403  return +1 * (100000 * m_nPhotos + 1042);
1404  }//D0 decays to anti-K0 pi+ pi-
1405  if (GenDTag::PcheckDecay(genpart, 310, 111, 111)) {
1406  return +1 * (100000 * m_nPhotos + 1043);
1407  }//D0 decays to K_S0 pi0 pi0
1408  if (GenDTag::PcheckDecay(genpart, 130, 111, 111)) {
1409  return +1 * (100000 * m_nPhotos + 1044);
1410  }//D0 decays to K_L0 pi0 pi0
1411  if (GenDTag::PcheckDecay(genpart, -311, 111, 111)) {
1412  return +1 * (100000 * m_nPhotos + 1045);
1413  }//D0 decays to anti-K0 pi0 pi0
1414  if (GenDTag::PcheckDecay(genpart, -313, 211, -211)) {
1415  return +1 * (100000 * m_nPhotos + 1046);
1416  }//D0 decays to anti-K*0 pi+ pi-
1417  if (GenDTag::PcheckDecay(genpart, -313, 111, 111)) {
1418  return +1 * (100000 * m_nPhotos + 1047);
1419  }//D0 decays to anti-K*0 pi0 pi0
1420  if (GenDTag::PcheckDecay(genpart, -323, 211, 111)) {
1421  return +1 * (100000 * m_nPhotos + 1048);
1422  }//D0 decays to K*- pi+ pi0
1423  if (GenDTag::PcheckDecay(genpart, -321, 213, 111)) {
1424  return +1 * (100000 * m_nPhotos + 1049);
1425  }//D0 decays to K- rho+ pi0
1426  if (GenDTag::PcheckDecay(genpart, -321, 211, 113)) {
1427  return +1 * (100000 * m_nPhotos + 1050);
1428  }//D0 decays to K- pi+ rho0
1429  if (GenDTag::PcheckDecay(genpart, -321, 211, 223)) {
1430  return +1 * (100000 * m_nPhotos + 1051);
1431  }//D0 decays to K- pi+ omega
1432  if (GenDTag::PcheckDecay(genpart, -321, 211, 221)) {
1433  return +1 * (100000 * m_nPhotos + 1052);
1434  }//D0 decays to K- pi+ eta
1435  if (GenDTag::PcheckDecay(genpart, -321, 211, 331)) {
1436  return +1 * (100000 * m_nPhotos + 1053);
1437  }//D0 decays to K- pi+ eta'
1438  if (GenDTag::PcheckDecay(genpart, -321, 211, 211, -211)) {
1439  return +1 * (100000 * m_nPhotos + 1054);
1440  }//D0 decays to K- pi+ pi+ pi-
1441  if (GenDTag::PcheckDecay(genpart, 310, 211, -211, 111)) {
1442  return +1 * (100000 * m_nPhotos + 1055);
1443  }//D0 decays to K_S0 pi+ pi- pi0
1444  if (GenDTag::PcheckDecay(genpart, 130, 211, -211, 111)) {
1445  return +1 * (100000 * m_nPhotos + 1056);
1446  }//D0 decays to K_L0 pi+ pi- pi0
1447  if (GenDTag::PcheckDecay(genpart, -311, 211, -211, 111)) {
1448  return +1 * (100000 * m_nPhotos + 1057);
1449  }//D0 decays to anti-K0 pi+ pi- pi0
1450  if (GenDTag::PcheckDecay(genpart, -321, 211, 211, -211, 111)) {
1451  return +1 * (100000 * m_nPhotos + 1058);
1452  }//D0 decays to K- pi+ pi+ pi- pi0
1453  if (GenDTag::PcheckDecay(genpart, -321, 211, 111, 111, 111)) {
1454  return +1 * (100000 * m_nPhotos + 1059);
1455  }//D0 decays to K- pi+ pi0 pi0 pi0
1456  if (GenDTag::PcheckDecay(genpart, 310, 211, -211, 211, -211)) {
1457  return +1 * (100000 * m_nPhotos + 1060);
1458  }//D0 decays to K_S0 pi+ pi- pi+ pi-
1459  if (GenDTag::PcheckDecay(genpart, 130, 211, -211, 211, -211)) {
1460  return +1 * (100000 * m_nPhotos + 1061);
1461  }//D0 decays to K_L0 pi+ pi- pi+ pi-
1462  if (GenDTag::PcheckDecay(genpart, -311, 211, -211, 211, -211)) {
1463  return +1 * (100000 * m_nPhotos + 1062);
1464  }//D0 decays to anti-K0 pi+ pi- pi+ pi-
1465  if (GenDTag::PcheckDecay(genpart, 333, 310)) {
1466  return +1 * (100000 * m_nPhotos + 1063);
1467  }//D0 decays to phi K_S0
1468  if (GenDTag::PcheckDecay(genpart, 333, 130)) {
1469  return +1 * (100000 * m_nPhotos + 1064);
1470  }//D0 decays to phi K_L0
1471  if (GenDTag::PcheckDecay(genpart, 333, -311)) {
1472  return +1 * (100000 * m_nPhotos + 1065);
1473  }//D0 decays to phi anti-K0
1474  if (GenDTag::PcheckDecay(genpart, 310, 321, -321)) {
1475  return +1 * (100000 * m_nPhotos + 1066);
1476  }//D0 decays to K_S0 K+ K-
1477  if (GenDTag::PcheckDecay(genpart, 130, 321, -321)) {
1478  return +1 * (100000 * m_nPhotos + 1067);
1479  }//D0 decays to K_L0 K+ K-
1480  if (GenDTag::PcheckDecay(genpart, -311, 321, -321)) {
1481  return +1 * (100000 * m_nPhotos + 1068);
1482  }//D0 decays to anti-K0 K+ K-
1483  if (GenDTag::PcheckDecay(genpart, 310, 310, 310)) {
1484  return +1 * (100000 * m_nPhotos + 1069);
1485  }//D0 decays to K_S0 K_S0 K_S0
1486  if (GenDTag::PcheckDecay(genpart, 321, -321)) {
1487  return +1 * (100000 * m_nPhotos + 1070);
1488  }//D0 decays to K+ K-
1489  if (GenDTag::PcheckDecay(genpart, 310, 310)) {
1490  return +1 * (100000 * m_nPhotos + 1071);
1491  }//D0 decays to K_S0 K_S0
1492  if (GenDTag::PcheckDecay(genpart, 130, 130)) {
1493  return +1 * (100000 * m_nPhotos + 1072);
1494  }//D0 decays to K_L0 K_L0
1495  if (GenDTag::PcheckDecay(genpart, 313, -311)) {
1496  return +1 * (100000 * m_nPhotos + 1073);
1497  }//D0 decays to K*0 anti-K0
1498  if (GenDTag::PcheckDecay(genpart, -313, 310)) {
1499  return +1 * (100000 * m_nPhotos + 1074);
1500  }//D0 decays to anti-K*0 K_S0
1501  if (GenDTag::PcheckDecay(genpart, -313, 130)) {
1502  return +1 * (100000 * m_nPhotos + 1075);
1503  }//D0 decays to anti-K*0 K_L0
1504  if (GenDTag::PcheckDecay(genpart, -313, 311)) {
1505  return +1 * (100000 * m_nPhotos + 1076);
1506  }//D0 decays to anti-K*0 K0
1507  if (GenDTag::PcheckDecay(genpart, -323, 321)) {
1508  return +1 * (100000 * m_nPhotos + 1077);
1509  }//D0 decays to K*- K+
1510  if (GenDTag::PcheckDecay(genpart, 323, -321)) {
1511  return +1 * (100000 * m_nPhotos + 1078);
1512  }//D0 decays to K*+ K-
1513  if (GenDTag::PcheckDecay(genpart, -313, 313)) {
1514  return +1 * (100000 * m_nPhotos + 1079);
1515  }//D0 decays to anti-K*0 K*0
1516  if (GenDTag::PcheckDecay(genpart, 333, 111)) {
1517  return +1 * (100000 * m_nPhotos + 1080);
1518  }//D0 decays to phi pi0
1519  if (GenDTag::PcheckDecay(genpart, 333, 211, -211)) {
1520  return +1 * (100000 * m_nPhotos + 1081);
1521  }//D0 decays to phi pi+ pi-
1522  if (GenDTag::PcheckDecay(genpart, 321, -321, 211, -211)) {
1523  return +1 * (100000 * m_nPhotos + 1082);
1524  }//D0 decays to K+ K- pi+ pi-
1525  if (GenDTag::PcheckDecay(genpart, 321, -321, 111, 111)) {
1526  return +1 * (100000 * m_nPhotos + 1083);
1527  }//D0 decays to K+ K- pi0 pi0
1528  if (GenDTag::PcheckDecay(genpart, 310, 310, 211, -211)) {
1529  return +1 * (100000 * m_nPhotos + 1084);
1530  }//D0 decays to K_S0 K_S0 pi+ pi-
1531  if (GenDTag::PcheckDecay(genpart, 130, 130, 211, -211)) {
1532  return +1 * (100000 * m_nPhotos + 1085);
1533  }//D0 decays to K_L0 K_L0 pi+ pi-
1534  if (GenDTag::PcheckDecay(genpart, -311, 311, 211, -211)) {
1535  return +1 * (100000 * m_nPhotos + 1086);
1536  }//D0 decays to anti-K0 K0 pi+ pi-
1537  if (GenDTag::PcheckDecay(genpart, -311, 311, 111, 111)) {
1538  return +1 * (100000 * m_nPhotos + 1087);
1539  }//D0 decays to anti-K0 K0 pi0 pi0
1540  if (GenDTag::PcheckDecay(genpart, 211, -211)) {
1541  return +1 * (100000 * m_nPhotos + 1088);
1542  }//D0 decays to pi+ pi-
1543  if (GenDTag::PcheckDecay(genpart, 111, 111)) {
1544  return +1 * (100000 * m_nPhotos + 1089);
1545  }//D0 decays to pi0 pi0
1546  if (GenDTag::PcheckDecay(genpart, 221, 111)) {
1547  return +1 * (100000 * m_nPhotos + 1090);
1548  }//D0 decays to eta pi0
1549  if (GenDTag::PcheckDecay(genpart, 331, 111)) {
1550  return +1 * (100000 * m_nPhotos + 1091);
1551  }//D0 decays to eta' pi0
1552  if (GenDTag::PcheckDecay(genpart, 221, 221)) {
1553  return +1 * (100000 * m_nPhotos + 1092);
1554  }//D0 decays to eta eta
1555  if (GenDTag::PcheckDecay(genpart, 213, -211)) {
1556  return +1 * (100000 * m_nPhotos + 1093);
1557  }//D0 decays to rho+ pi-
1558  if (GenDTag::PcheckDecay(genpart, -213, 211)) {
1559  return +1 * (100000 * m_nPhotos + 1094);
1560  }//D0 decays to rho- pi+
1561  if (GenDTag::PcheckDecay(genpart, 113, 111)) {
1562  return +1 * (100000 * m_nPhotos + 1095);
1563  }//D0 decays to rho0 pi0
1564  if (GenDTag::PcheckDecay(genpart, 211, -211, 111)) {
1565  return +1 * (100000 * m_nPhotos + 1096);
1566  }//D0 decays to pi+ pi- pi0
1567  if (GenDTag::PcheckDecay(genpart, 111, 111, 111)) {
1568  return +1 * (100000 * m_nPhotos + 1097);
1569  }//D0 decays to pi0 pi0 pi0
1570  if (GenDTag::PcheckDecay(genpart, 211, 211, -211, -211)) {
1571  return +1 * (100000 * m_nPhotos + 1098);
1572  }//D0 decays to pi+ pi+ pi- pi-
1573  if (GenDTag::PcheckDecay(genpart, 211, -211, 111, 111)) {
1574  return +1 * (100000 * m_nPhotos + 1099);
1575  }//D0 decays to pi+ pi- pi0 pi0
1576  if (GenDTag::PcheckDecay(genpart, 211, -211, 211, -211, 111)) {
1577  return +1 * (100000 * m_nPhotos + 1100);
1578  }//D0 decays to pi+ pi- pi+ pi- pi0
1579  if (GenDTag::PcheckDecay(genpart, 211, -211, 111, 111, 111)) {
1580  return +1 * (100000 * m_nPhotos + 1101);
1581  }//D0 decays to pi+ pi- pi0 pi0 pi0
1582  if (GenDTag::PcheckDecay(genpart, 211, -211, 211, -211, 211, -211)) {
1583  return +1 * (100000 * m_nPhotos + 1102);
1584  }//D0 decays to pi+ pi- pi+ pi- pi+ pi-
1585  if (GenDTag::PcheckDecay(genpart, -211, 321)) {
1586  return +1 * (100000 * m_nPhotos + 1103);
1587  }//D0 decays to pi- K+
1588  if (GenDTag::PcheckDecay(genpart, -211, 323)) {
1589  return +1 * (100000 * m_nPhotos + 1104);
1590  }//D0 decays to pi- K*+
1591  if (GenDTag::PcheckDecay(genpart, -211, 321, 111)) {
1592  return +1 * (100000 * m_nPhotos + 1105);
1593  }//D0 decays to pi- K+ pi0
1594  if (GenDTag::PcheckDecay(genpart, 321, -211, 211, -211)) {
1595  return +1 * (100000 * m_nPhotos + 1106);
1596  }//D0 decays to K+ pi- pi+ pi-
1597  if (GenDTag::PcheckDecay(genpart, -13, 13)) {
1598  return +1 * (100000 * m_nPhotos + 1107);
1599  }//D0 decays to mu+ mu-
1600  if (GenDTag::PcheckDecay(genpart, 333, 221)) {
1601  return +1 * (100000 * m_nPhotos + 1108);
1602  }//D0 decays to phi eta
1603  if (GenDTag::PcheckDecay(genpart, -313, 211, -211, 111)) {
1604  return +1 * (100000 * m_nPhotos + 1109);
1605  }//D0 decays to anti-K*0 pi+ pi- pi0
1606  if (GenDTag::PcheckDecay(genpart, -321, 211, -211, 211, -211, 211)) {
1607  return +1 * (100000 * m_nPhotos + 1110);
1608  }//D0 decays to K- pi+ pi- pi+ pi- pi+
1609  if (GenDTag::PcheckDecay(genpart, 321, -321, 111)) {
1610  return +1 * (100000 * m_nPhotos + 1111);
1611  }//D0 decays to K+ K- pi0
1612  if (GenDTag::PcheckDecay(genpart, 321, -321, 211, -211, 111)) {
1613  return +1 * (100000 * m_nPhotos + 1112);
1614  }//D0 decays to K+ K- pi+ pi- pi0
1615  if (GenDTag::PcheckDecay(genpart, 321, -321, -321, 211)) {
1616  return +1 * (100000 * m_nPhotos + 1113);
1617  }//D0 decays to K+ K- K- pi+
1618  if (GenDTag::PcheckDecay(genpart, 310, 221, 111)) {
1619  return +1 * (100000 * m_nPhotos + 1114);
1620  }//D0 decays to K_S0 eta pi0
1621  if (GenDTag::PcheckDecay(genpart, 130, 221, 111)) {
1622  return +1 * (100000 * m_nPhotos + 1115);
1623  }//D0 decays to K_L0 eta pi0
1624  if (GenDTag::PcheckDecay(genpart, -311, 221, 111)) {
1625  return +1 * (100000 * m_nPhotos + 1116);
1626  }//D0 decays to anti-K0 eta pi0
1627  if (GenDTag::PcheckDecay(genpart, 310, 321, -211)) {
1628  return +1 * (100000 * m_nPhotos + 1117);
1629  }//D0 decays to K_S0 K+ pi-
1630  if (GenDTag::PcheckDecay(genpart, 130, 321, -211)) {
1631  return +1 * (100000 * m_nPhotos + 1118);
1632  }//D0 decays to K_L0 K+ pi-
1633  if (GenDTag::PcheckDecay(genpart, -311, 321, -211)) {
1634  return +1 * (100000 * m_nPhotos + 1119);
1635  }//D0 decays to anti-K0 K+ pi-
1636  if (GenDTag::PcheckDecay(genpart, 310, -321, 211)) {
1637  return +1 * (100000 * m_nPhotos + 1120);
1638  }//D0 decays to K_S0 K- pi+
1639  if (GenDTag::PcheckDecay(genpart, 130, -321, 211)) {
1640  return +1 * (100000 * m_nPhotos + 1121);
1641  }//D0 decays to K_L0 K- pi+
1642  if (GenDTag::PcheckDecay(genpart, 311, -321, 211)) {
1643  return +1 * (100000 * m_nPhotos + 1122);
1644  }//D0 decays to K0 K- pi+
1645  if (GenDTag::PcheckDecay(genpart, 310, 310, 321, -211)) {
1646  return +1 * (100000 * m_nPhotos + 1123);
1647  }//D0 decays to K_S0 K_S0 K+ pi-
1648  if (GenDTag::PcheckDecay(genpart, 130, 130, 321, -211)) {
1649  return +1 * (100000 * m_nPhotos + 1124);
1650  }//D0 decays to K_L0 K_L0 K+ pi-
1651  if (GenDTag::PcheckDecay(genpart, -311, 311, 321, -211)) {
1652  return +1 * (100000 * m_nPhotos + 1125);
1653  }//D0 decays to anti-K0 K0 K+ pi-
1654  if (GenDTag::PcheckDecay(genpart, 310, 310, -321, 211)) {
1655  return +1 * (100000 * m_nPhotos + 1126);
1656  }//D0 decays to K_S0 K_S0 K- pi+
1657  if (GenDTag::PcheckDecay(genpart, 130, 130, -321, 211)) {
1658  return +1 * (100000 * m_nPhotos + 1127);
1659  }//D0 decays to K_L0 K_L0 K- pi+
1660  if (GenDTag::PcheckDecay(genpart, -311, 311, -321, 211)) {
1661  return +1 * (100000 * m_nPhotos + 1128);
1662  }//D0 decays to anti-K0 K0 K- pi+
1663  if (GenDTag::PcheckDecay(genpart, -321, 211, -211, -11, 12)) {
1664  return +1 * (100000 * m_nPhotos + 1129);
1665  }//D0 decays to K- pi+ pi- e+ nu_e
1666  if (GenDTag::PcheckDecay(genpart, 113, 113)) {
1667  return +1 * (100000 * m_nPhotos + 1130);
1668  }//D0 decays to rho0 rho0
1669  if (GenDTag::PcheckDecay(genpart, 221, 211, -211)) {
1670  return +1 * (100000 * m_nPhotos + 1131);
1671  }//D0 decays to eta pi+ pi-
1672  if (GenDTag::PcheckDecay(genpart, 223, 211, -211)) {
1673  return +1 * (100000 * m_nPhotos + 1132);
1674  }//D0 decays to omega pi+ pi-
1675  if (GenDTag::PcheckDecay(genpart, 331, 211, -211)) {
1676  return +1 * (100000 * m_nPhotos + 1133);
1677  }//D0 decays to eta' pi+ pi-
1678  if (GenDTag::PcheckDecay(genpart, 221, 331)) {
1679  return +1 * (100000 * m_nPhotos + 1134);
1680  }//D0 decays to eta eta'
1681  if (GenDTag::PcheckDecay(genpart, 333, 22)) {
1682  return +1 * (100000 * m_nPhotos + 1135);
1683  }//D0 decays to phi gamma
1684  if (GenDTag::PcheckDecay(genpart, -313, 22)) {
1685  return +1 * (100000 * m_nPhotos + 1136);
1686  }//D0 decays to anti-K*0 gamma
1687  return +1 * genpart.size();
1688 }// Rest of the D0 decays
1689 
1690 
1691 int GenDTag::Mode_anti_D0(std::vector<int> genpart)
1692 {
1693  if (GenDTag::PcheckDecay(genpart, 323, 11, -12)) {
1694  return -1 * (100000 * m_nPhotos + 1001);
1695  }//anti-D0 decays to K*+ e- anti-nu_e
1696  if (GenDTag::PcheckDecay(genpart, 321, 11, -12)) {
1697  return -1 * (100000 * m_nPhotos + 1002);
1698  }//anti-D0 decays to K+ e- anti-nu_e
1699  if (GenDTag::PcheckDecay(genpart, 10323, 11, -12)) {
1700  return -1 * (100000 * m_nPhotos + 1003);
1701  }//anti-D0 decays to K_1+ e- anti-nu_e
1702  if (GenDTag::PcheckDecay(genpart, 325, 11, -12)) {
1703  return -1 * (100000 * m_nPhotos + 1004);
1704  }//anti-D0 decays to K_2*+ e- anti-nu_e
1705  if (GenDTag::PcheckDecay(genpart, 211, 11, -12)) {
1706  return -1 * (100000 * m_nPhotos + 1005);
1707  }//anti-D0 decays to pi+ e- anti-nu_e
1708  if (GenDTag::PcheckDecay(genpart, 213, 11, -12)) {
1709  return -1 * (100000 * m_nPhotos + 1006);
1710  }//anti-D0 decays to rho+ e- anti-nu_e
1711  if (GenDTag::PcheckDecay(genpart, 311, 211, 11, -12)) {
1712  return -1 * (100000 * m_nPhotos + 1007);
1713  }//anti-D0 decays to K0 pi+ e- anti-nu_e
1714  if (GenDTag::PcheckDecay(genpart, 321, 111, 11, -12)) {
1715  return -1 * (100000 * m_nPhotos + 1008);
1716  }//anti-D0 decays to K+ pi0 e- anti-nu_e
1717  if (GenDTag::PcheckDecay(genpart, 323, 13, -14)) {
1718  return -1 * (100000 * m_nPhotos + 1009);
1719  }//anti-D0 decays to K*+ mu- anti-nu_mu
1720  if (GenDTag::PcheckDecay(genpart, 321, 13, -14)) {
1721  return -1 * (100000 * m_nPhotos + 1010);
1722  }//anti-D0 decays to K+ mu- anti-nu_mu
1723  if (GenDTag::PcheckDecay(genpart, 10323, 13, -14)) {
1724  return -1 * (100000 * m_nPhotos + 1011);
1725  }//anti-D0 decays to K_1+ mu- anti-nu_mu
1726  if (GenDTag::PcheckDecay(genpart, 325, 13, -14)) {
1727  return -1 * (100000 * m_nPhotos + 1012);
1728  }//anti-D0 decays to K_2*+ mu- anti-nu_mu
1729  if (GenDTag::PcheckDecay(genpart, 211, 13, -14)) {
1730  return -1 * (100000 * m_nPhotos + 1013);
1731  }//anti-D0 decays to pi+ mu- anti-nu_mu
1732  if (GenDTag::PcheckDecay(genpart, 213, 13, -14)) {
1733  return -1 * (100000 * m_nPhotos + 1014);
1734  }//anti-D0 decays to rho+ mu- anti-nu_mu
1735  if (GenDTag::PcheckDecay(genpart, 311, 211, 13, -14)) {
1736  return -1 * (100000 * m_nPhotos + 1015);
1737  }//anti-D0 decays to K0 pi+ mu- anti-nu_mu
1738  if (GenDTag::PcheckDecay(genpart, 321, 111, 13, -14)) {
1739  return -1 * (100000 * m_nPhotos + 1016);
1740  }//anti-D0 decays to K+ pi0 mu- anti-nu_mu
1741  if (GenDTag::PcheckDecay(genpart, 321, -211)) {
1742  return -1 * (100000 * m_nPhotos + 1017);
1743  }//anti-D0 decays to K+ pi-
1744  if (GenDTag::PcheckDecay(genpart, 310, 111)) {
1745  return -1 * (100000 * m_nPhotos + 1018);
1746  }//anti-D0 decays to K_S0 pi0
1747  if (GenDTag::PcheckDecay(genpart, 130, 111)) {
1748  return -1 * (100000 * m_nPhotos + 1019);
1749  }//anti-D0 decays to K_L0 pi0
1750  if (GenDTag::PcheckDecay(genpart, 311, 111)) {
1751  return -1 * (100000 * m_nPhotos + 1020);
1752  }//anti-D0 decays to K0 pi0
1753  if (GenDTag::PcheckDecay(genpart, 310, 221)) {
1754  return -1 * (100000 * m_nPhotos + 1021);
1755  }//anti-D0 decays to K_S0 eta
1756  if (GenDTag::PcheckDecay(genpart, 130, 221)) {
1757  return -1 * (100000 * m_nPhotos + 1022);
1758  }//anti-D0 decays to K_L0 eta
1759  if (GenDTag::PcheckDecay(genpart, 311, 221)) {
1760  return -1 * (100000 * m_nPhotos + 1023);
1761  }//anti-D0 decays to K0 eta
1762  if (GenDTag::PcheckDecay(genpart, 310, 331)) {
1763  return -1 * (100000 * m_nPhotos + 1024);
1764  }//anti-D0 decays to K_S0 eta'
1765  if (GenDTag::PcheckDecay(genpart, 130, 331)) {
1766  return -1 * (100000 * m_nPhotos + 1025);
1767  }//anti-D0 decays to K_L0 eta'
1768  if (GenDTag::PcheckDecay(genpart, 311, 331)) {
1769  return -1 * (100000 * m_nPhotos + 1026);
1770  }//anti-D0 decays to K0 eta'
1771  if (GenDTag::PcheckDecay(genpart, 223, 310)) {
1772  return -1 * (100000 * m_nPhotos + 1027);
1773  }//anti-D0 decays to omega K_S0
1774  if (GenDTag::PcheckDecay(genpart, 223, 130)) {
1775  return -1 * (100000 * m_nPhotos + 1028);
1776  }//anti-D0 decays to omega K_L0
1777  if (GenDTag::PcheckDecay(genpart, 223, 311)) {
1778  return -1 * (100000 * m_nPhotos + 1029);
1779  }//anti-D0 decays to omega K0
1780  if (GenDTag::PcheckDecay(genpart, 313, 221)) {
1781  return -1 * (100000 * m_nPhotos + 1030);
1782  }//anti-D0 decays to K*0 eta
1783  if (GenDTag::PcheckDecay(genpart, 313, 331)) {
1784  return -1 * (100000 * m_nPhotos + 1031);
1785  }//anti-D0 decays to K*0 eta'
1786  if (GenDTag::PcheckDecay(genpart, -20213, 321)) {
1787  return -1 * (100000 * m_nPhotos + 1032);
1788  }//anti-D0 decays to a_1- K+
1789  if (GenDTag::PcheckDecay(genpart, 323, -213)) {
1790  return -1 * (100000 * m_nPhotos + 1033);
1791  }//anti-D0 decays to K*+ rho-
1792  if (GenDTag::PcheckDecay(genpart, 313, 113)) {
1793  return -1 * (100000 * m_nPhotos + 1034);
1794  }//anti-D0 decays to K*0 rho0
1795  if (GenDTag::PcheckDecay(genpart, 313, 223)) {
1796  return -1 * (100000 * m_nPhotos + 1035);
1797  }//anti-D0 decays to K*0 omega
1798  if (GenDTag::PcheckDecay(genpart, 321, -211, 111)) {
1799  return -1 * (100000 * m_nPhotos + 1036);
1800  }//anti-D0 decays to K+ pi- pi0
1801  if (GenDTag::PcheckDecay(genpart, 313, 111)) {
1802  return -1 * (100000 * m_nPhotos + 1037);
1803  }//anti-D0 decays to K*0R pi0
1804  if (GenDTag::PcheckDecay(genpart, 10323, -211)) {
1805  return -1 * (100000 * m_nPhotos + 1038);
1806  }//anti-D0 decays to K_1+ pi-
1807  if (GenDTag::PcheckDecay(genpart, 10313, 111)) {
1808  return -1 * (100000 * m_nPhotos + 1039);
1809  }//anti-D0 decays to K_10 pi0
1810  if (GenDTag::PcheckDecay(genpart, 311, 211, -211)) {
1811  return -1 * (100000 * m_nPhotos + 1040);
1812  }//anti-D0 decays to K0 pi+ pi-
1813  if (GenDTag::PcheckDecay(genpart, 310, 211, -211)) {
1814  return -1 * (100000 * m_nPhotos + 1041);
1815  }//anti-D0 decays to K_S0 pi+ pi-
1816  if (GenDTag::PcheckDecay(genpart, 130, 211, -211)) {
1817  return -1 * (100000 * m_nPhotos + 1042);
1818  }//anti-D0 decays to K_L0 pi+ pi-
1819  if (GenDTag::PcheckDecay(genpart, 310, 111, 111)) {
1820  return -1 * (100000 * m_nPhotos + 1043);
1821  }//anti-D0 decays to K_S0 pi0 pi0
1822  if (GenDTag::PcheckDecay(genpart, 130, 111, 111)) {
1823  return -1 * (100000 * m_nPhotos + 1044);
1824  }//anti-D0 decays to K_L0 pi0 pi0
1825  if (GenDTag::PcheckDecay(genpart, 311, 111, 111)) {
1826  return -1 * (100000 * m_nPhotos + 1045);
1827  }//anti-D0 decays to K0 pi0 pi0
1828  if (GenDTag::PcheckDecay(genpart, 313, 211, -211)) {
1829  return -1 * (100000 * m_nPhotos + 1046);
1830  }//anti-D0 decays to K*0 pi+ pi-
1831  if (GenDTag::PcheckDecay(genpart, 313, 111, 111)) {
1832  return -1 * (100000 * m_nPhotos + 1047);
1833  }//anti-D0 decays to K*0 pi0 pi0
1834  if (GenDTag::PcheckDecay(genpart, 323, -211, 111)) {
1835  return -1 * (100000 * m_nPhotos + 1048);
1836  }//anti-D0 decays to K*+ pi- pi0
1837  if (GenDTag::PcheckDecay(genpart, 321, -213, 111)) {
1838  return -1 * (100000 * m_nPhotos + 1049);
1839  }//anti-D0 decays to K+ rho- pi0
1840  if (GenDTag::PcheckDecay(genpart, 321, -211, 113)) {
1841  return -1 * (100000 * m_nPhotos + 1050);
1842  }//anti-D0 decays to K+ pi- rho0
1843  if (GenDTag::PcheckDecay(genpart, 321, -211, 223)) {
1844  return -1 * (100000 * m_nPhotos + 1051);
1845  }//anti-D0 decays to K+ pi- omega
1846  if (GenDTag::PcheckDecay(genpart, 321, -211, 221)) {
1847  return -1 * (100000 * m_nPhotos + 1052);
1848  }//anti-D0 decays to K+ pi- eta
1849  if (GenDTag::PcheckDecay(genpart, 321, -211, 331)) {
1850  return -1 * (100000 * m_nPhotos + 1053);
1851  }//anti-D0 decays to K+ pi- eta'
1852  if (GenDTag::PcheckDecay(genpart, 321, -211, 211, -211)) {
1853  return -1 * (100000 * m_nPhotos + 1054);
1854  }//anti-D0 decays to K+ pi- pi+ pi-
1855  if (GenDTag::PcheckDecay(genpart, 310, 211, -211, 111)) {
1856  return -1 * (100000 * m_nPhotos + 1055);
1857  }//anti-D0 decays to K_S0 pi+ pi- pi0
1858  if (GenDTag::PcheckDecay(genpart, 130, 211, -211, 111)) {
1859  return -1 * (100000 * m_nPhotos + 1056);
1860  }//anti-D0 decays to K_L0 pi+ pi- pi0
1861  if (GenDTag::PcheckDecay(genpart, 311, 211, -211, 111)) {
1862  return -1 * (100000 * m_nPhotos + 1057);
1863  }//anti-D0 decays to K0 pi+ pi- pi0
1864  if (GenDTag::PcheckDecay(genpart, 321, -211, 211, -211, 111)) {
1865  return -1 * (100000 * m_nPhotos + 1058);
1866  }//anti-D0 decays to K+ pi- pi+ pi- pi0
1867  if (GenDTag::PcheckDecay(genpart, 321, -211, 111, 111, 111)) {
1868  return -1 * (100000 * m_nPhotos + 1059);
1869  }//anti-D0 decays to K+ pi- pi0 pi0 pi0
1870  if (GenDTag::PcheckDecay(genpart, 310, 211, -211, 211, -211)) {
1871  return -1 * (100000 * m_nPhotos + 1060);
1872  }//anti-D0 decays to K_S0 pi+ pi- pi+ pi-
1873  if (GenDTag::PcheckDecay(genpart, 130, 211, -211, 211, -211)) {
1874  return -1 * (100000 * m_nPhotos + 1061);
1875  }//anti-D0 decays to K_L0 pi+ pi- pi+ pi-
1876  if (GenDTag::PcheckDecay(genpart, 311, 211, -211, 211, -211)) {
1877  return -1 * (100000 * m_nPhotos + 1062);
1878  }//anti-D0 decays to K0 pi+ pi- pi+ pi-
1879  if (GenDTag::PcheckDecay(genpart, 333, 310)) {
1880  return -1 * (100000 * m_nPhotos + 1063);
1881  }//anti-D0 decays to phi K_S0
1882  if (GenDTag::PcheckDecay(genpart, 333, 130)) {
1883  return -1 * (100000 * m_nPhotos + 1064);
1884  }//anti-D0 decays to phi K_L0
1885  if (GenDTag::PcheckDecay(genpart, 333, 311)) {
1886  return -1 * (100000 * m_nPhotos + 1065);
1887  }//anti-D0 decays to phi K0
1888  if (GenDTag::PcheckDecay(genpart, 310, 321, -321)) {
1889  return -1 * (100000 * m_nPhotos + 1066);
1890  }//anti-D0 decays to K_S0 K+ K-
1891  if (GenDTag::PcheckDecay(genpart, 130, 321, -321)) {
1892  return -1 * (100000 * m_nPhotos + 1067);
1893  }//anti-D0 decays to K_L0 K+ K-
1894  if (GenDTag::PcheckDecay(genpart, 311, 321, -321)) {
1895  return -1 * (100000 * m_nPhotos + 1068);
1896  }//anti-D0 decays to K0 K+ K-
1897  if (GenDTag::PcheckDecay(genpart, 310, 310, 310)) {
1898  return -1 * (100000 * m_nPhotos + 1069);
1899  }//anti-D0 decays to K_S0 K_S0 K_S0
1900  if (GenDTag::PcheckDecay(genpart, 321, -321)) {
1901  return -1 * (100000 * m_nPhotos + 1070);
1902  }//anti-D0 decays to K+ K-
1903  if (GenDTag::PcheckDecay(genpart, 310, 310)) {
1904  return -1 * (100000 * m_nPhotos + 1071);
1905  }//anti-D0 decays to K_S0 K_S0
1906  if (GenDTag::PcheckDecay(genpart, 130, 130)) {
1907  return -1 * (100000 * m_nPhotos + 1072);
1908  }//anti-D0 decays to K_L0 K_L0
1909  if (GenDTag::PcheckDecay(genpart, -313, 311)) {
1910  return -1 * (100000 * m_nPhotos + 1073);
1911  }//anti-D0 decays to anti-K*0 K0
1912  if (GenDTag::PcheckDecay(genpart, 313, 310)) {
1913  return -1 * (100000 * m_nPhotos + 1074);
1914  }//anti-D0 decays to K*0 K_S0
1915  if (GenDTag::PcheckDecay(genpart, 313, 130)) {
1916  return -1 * (100000 * m_nPhotos + 1075);
1917  }//anti-D0 decays to K*0 K_L0
1918  if (GenDTag::PcheckDecay(genpart, 313, -311)) {
1919  return -1 * (100000 * m_nPhotos + 1076);
1920  }//anti-D0 decays to K*0 anti-K0
1921  if (GenDTag::PcheckDecay(genpart, 323, -321)) {
1922  return -1 * (100000 * m_nPhotos + 1077);
1923  }//anti-D0 decays to K*+ K-
1924  if (GenDTag::PcheckDecay(genpart, -323, 321)) {
1925  return -1 * (100000 * m_nPhotos + 1078);
1926  }//anti-D0 decays to K*- K+
1927  if (GenDTag::PcheckDecay(genpart, 313, -313)) {
1928  return -1 * (100000 * m_nPhotos + 1079);
1929  }//anti-D0 decays to K*0 anti-K*0
1930  if (GenDTag::PcheckDecay(genpart, 333, 111)) {
1931  return -1 * (100000 * m_nPhotos + 1080);
1932  }//anti-D0 decays to phi pi0
1933  if (GenDTag::PcheckDecay(genpart, 333, 211, -211)) {
1934  return -1 * (100000 * m_nPhotos + 1081);
1935  }//anti-D0 decays to phi pi+ pi-
1936  if (GenDTag::PcheckDecay(genpart, 321, -321, 211, -211)) {
1937  return -1 * (100000 * m_nPhotos + 1082);
1938  }//anti-D0 decays to K+ K- pi+ pi-
1939  if (GenDTag::PcheckDecay(genpart, 321, -321, 111, 111)) {
1940  return -1 * (100000 * m_nPhotos + 1083);
1941  }//anti-D0 decays to K+ K- pi0 pi0
1942  if (GenDTag::PcheckDecay(genpart, 310, 310, 211, -211)) {
1943  return -1 * (100000 * m_nPhotos + 1084);
1944  }//anti-D0 decays to K_S0 K_S0 pi+ pi-
1945  if (GenDTag::PcheckDecay(genpart, 130, 130, 211, -211)) {
1946  return -1 * (100000 * m_nPhotos + 1085);
1947  }//anti-D0 decays to K_L0 K_L0 pi+ pi-
1948  if (GenDTag::PcheckDecay(genpart, -311, 311, 211, -211)) {
1949  return -1 * (100000 * m_nPhotos + 1086);
1950  }//anti-D0 decays to anti-K0 K0 pi+ pi-
1951  if (GenDTag::PcheckDecay(genpart, -311, 311, 111, 111)) {
1952  return -1 * (100000 * m_nPhotos + 1087);
1953  }//anti-D0 decays to anti-K0 K0 pi0 pi0
1954  if (GenDTag::PcheckDecay(genpart, 211, -211)) {
1955  return -1 * (100000 * m_nPhotos + 1088);
1956  }//anti-D0 decays to pi+ pi-
1957  if (GenDTag::PcheckDecay(genpart, 111, 111)) {
1958  return -1 * (100000 * m_nPhotos + 1089);
1959  }//anti-D0 decays to pi0 pi0
1960  if (GenDTag::PcheckDecay(genpart, 221, 111)) {
1961  return -1 * (100000 * m_nPhotos + 1090);
1962  }//anti-D0 decays to eta pi0
1963  if (GenDTag::PcheckDecay(genpart, 331, 111)) {
1964  return -1 * (100000 * m_nPhotos + 1091);
1965  }//anti-D0 decays to eta' pi0
1966  if (GenDTag::PcheckDecay(genpart, 221, 221)) {
1967  return -1 * (100000 * m_nPhotos + 1092);
1968  }//anti-D0 decays to eta eta
1969  if (GenDTag::PcheckDecay(genpart, 213, -211)) {
1970  return -1 * (100000 * m_nPhotos + 1093);
1971  }//anti-D0 decays to rho+ pi-
1972  if (GenDTag::PcheckDecay(genpart, -213, 211)) {
1973  return -1 * (100000 * m_nPhotos + 1094);
1974  }//anti-D0 decays to rho- pi+
1975  if (GenDTag::PcheckDecay(genpart, 113, 111)) {
1976  return -1 * (100000 * m_nPhotos + 1095);
1977  }//anti-D0 decays to rho0 pi0
1978  if (GenDTag::PcheckDecay(genpart, 211, -211, 111)) {
1979  return -1 * (100000 * m_nPhotos + 1096);
1980  }//anti-D0 decays to pi+ pi- pi0
1981  if (GenDTag::PcheckDecay(genpart, 111, 111, 111)) {
1982  return -1 * (100000 * m_nPhotos + 1097);
1983  }//anti-D0 decays to pi0 pi0 pi0
1984  if (GenDTag::PcheckDecay(genpart, 211, 211, -211, -211)) {
1985  return -1 * (100000 * m_nPhotos + 1098);
1986  }//anti-D0 decays to pi+ pi+ pi- pi-
1987  if (GenDTag::PcheckDecay(genpart, 211, -211, 111, 111)) {
1988  return -1 * (100000 * m_nPhotos + 1099);
1989  }//anti-D0 decays to pi+ pi- pi0 pi0
1990  if (GenDTag::PcheckDecay(genpart, 211, -211, 211, -211, 111)) {
1991  return -1 * (100000 * m_nPhotos + 1100);
1992  }//anti-D0 decays to pi+ pi- pi+ pi- pi0
1993  if (GenDTag::PcheckDecay(genpart, 211, -211, 111, 111, 111)) {
1994  return -1 * (100000 * m_nPhotos + 1101);
1995  }//anti-D0 decays to pi+ pi- pi0 pi0 pi0
1996  if (GenDTag::PcheckDecay(genpart, 211, -211, 211, -211, 211, -211)) {
1997  return -1 * (100000 * m_nPhotos + 1102);
1998  }//anti-D0 decays to pi+ pi- pi+ pi- pi+ pi-
1999  if (GenDTag::PcheckDecay(genpart, 211, -321)) {
2000  return -1 * (100000 * m_nPhotos + 1103);
2001  }//anti-D0 decays to pi+ K-
2002  if (GenDTag::PcheckDecay(genpart, 211, -323)) {
2003  return -1 * (100000 * m_nPhotos + 1104);
2004  }//anti-D0 decays to pi+ K*-
2005  if (GenDTag::PcheckDecay(genpart, 211, -321, 111)) {
2006  return -1 * (100000 * m_nPhotos + 1105);
2007  }//anti-D0 decays to pi+ K- pi0
2008  if (GenDTag::PcheckDecay(genpart, -321, 211, 211, -211)) {
2009  return -1 * (100000 * m_nPhotos + 1106);
2010  }//anti-D0 decays to K- pi+ pi+ pi-
2011  if (GenDTag::PcheckDecay(genpart, 13, -13)) {
2012  return -1 * (100000 * m_nPhotos + 1107);
2013  }//anti-D0 decays to mu- mu+
2014  if (GenDTag::PcheckDecay(genpart, 333, 221)) {
2015  return -1 * (100000 * m_nPhotos + 1108);
2016  }//anti-D0 decays to phi eta
2017  if (GenDTag::PcheckDecay(genpart, 313, 211, -211, 111)) {
2018  return -1 * (100000 * m_nPhotos + 1109);
2019  }//anti-D0 decays to K*0 pi+ pi- pi0
2020  if (GenDTag::PcheckDecay(genpart, 321, -211, -211, 211, -211, 211)) {
2021  return -1 * (100000 * m_nPhotos + 1110);
2022  }//anti-D0 decays to K+ pi- pi- pi+ pi- pi+
2023  if (GenDTag::PcheckDecay(genpart, 321, -321, 111)) {
2024  return -1 * (100000 * m_nPhotos + 1111);
2025  }//anti-D0 decays to K+ K- pi0
2026  if (GenDTag::PcheckDecay(genpart, 321, -321, 211, -211, 111)) {
2027  return -1 * (100000 * m_nPhotos + 1112);
2028  }//anti-D0 decays to K+ K- pi+ pi- pi0
2029  if (GenDTag::PcheckDecay(genpart, 321, 321, -321, -211)) {
2030  return -1 * (100000 * m_nPhotos + 1113);
2031  }//anti-D0 decays to K+ K+ K- pi-
2032  if (GenDTag::PcheckDecay(genpart, 310, 221, 111)) {
2033  return -1 * (100000 * m_nPhotos + 1114);
2034  }//anti-D0 decays to K_S0 eta pi0
2035  if (GenDTag::PcheckDecay(genpart, 130, 221, 111)) {
2036  return -1 * (100000 * m_nPhotos + 1115);
2037  }//anti-D0 decays to K_L0 eta pi0
2038  if (GenDTag::PcheckDecay(genpart, 311, 221, 111)) {
2039  return -1 * (100000 * m_nPhotos + 1116);
2040  }//anti-D0 decays to K0 eta pi0
2041  if (GenDTag::PcheckDecay(genpart, 310, -321, 211)) {
2042  return -1 * (100000 * m_nPhotos + 1117);
2043  }//anti-D0 decays to K_S0 K- pi+
2044  if (GenDTag::PcheckDecay(genpart, 130, -321, 211)) {
2045  return -1 * (100000 * m_nPhotos + 1118);
2046  }//anti-D0 decays to K_L0 K- pi+
2047  if (GenDTag::PcheckDecay(genpart, 311, -321, 211)) {
2048  return -1 * (100000 * m_nPhotos + 1119);
2049  }//anti-D0 decays to K0 K- pi+
2050  if (GenDTag::PcheckDecay(genpart, 310, 321, -211)) {
2051  return -1 * (100000 * m_nPhotos + 1120);
2052  }//anti-D0 decays to K_S0 K+ pi-
2053  if (GenDTag::PcheckDecay(genpart, 130, 321, -211)) {
2054  return -1 * (100000 * m_nPhotos + 1121);
2055  }//anti-D0 decays to K_L0 K+ pi-
2056  if (GenDTag::PcheckDecay(genpart, -311, 321, -211)) {
2057  return -1 * (100000 * m_nPhotos + 1122);
2058  }//anti-D0 decays to anti-K0 K+ pi-
2059  if (GenDTag::PcheckDecay(genpart, 310, 310, 321, -211)) {
2060  return -1 * (100000 * m_nPhotos + 1123);
2061  }//anti-D0 decays to K_S0 K_S0 K+ pi-
2062  if (GenDTag::PcheckDecay(genpart, 130, 130, 321, -211)) {
2063  return -1 * (100000 * m_nPhotos + 1124);
2064  }//anti-D0 decays to K_L0 K_L0 K+ pi-
2065  if (GenDTag::PcheckDecay(genpart, -311, 311, 321, -211)) {
2066  return -1 * (100000 * m_nPhotos + 1125);
2067  }//anti-D0 decays to anti-K0 K0 K+ pi-
2068  if (GenDTag::PcheckDecay(genpart, 310, 310, -321, 211)) {
2069  return -1 * (100000 * m_nPhotos + 1126);
2070  }//anti-D0 decays to K_S0 K_S0 K- pi+
2071  if (GenDTag::PcheckDecay(genpart, 130, 130, -321, 211)) {
2072  return -1 * (100000 * m_nPhotos + 1127);
2073  }//anti-D0 decays to K_L0 K_L0 K- pi+
2074  if (GenDTag::PcheckDecay(genpart, -311, 311, -321, 211)) {
2075  return -1 * (100000 * m_nPhotos + 1128);
2076  }//anti-D0 decays to anti-K0 K0 K- pi+
2077  if (GenDTag::PcheckDecay(genpart, 321, -211, 211, 11, -12)) {
2078  return -1 * (100000 * m_nPhotos + 1129);
2079  }//anti-D0 decays to K+ pi- pi+ e- anti-nu_e
2080  if (GenDTag::PcheckDecay(genpart, 113, 113)) {
2081  return -1 * (100000 * m_nPhotos + 1130);
2082  }//anti-D0 decays to rho0 rho0
2083  if (GenDTag::PcheckDecay(genpart, 221, -211, 211)) {
2084  return -1 * (100000 * m_nPhotos + 1131);
2085  }//anti-D0 decays to eta pi- pi+
2086  if (GenDTag::PcheckDecay(genpart, 223, -211, 211)) {
2087  return -1 * (100000 * m_nPhotos + 1132);
2088  }//anti-D0 decays to omega pi- pi+
2089  if (GenDTag::PcheckDecay(genpart, 331, -211, 211)) {
2090  return -1 * (100000 * m_nPhotos + 1133);
2091  }//anti-D0 decays to eta' pi- pi+
2092  if (GenDTag::PcheckDecay(genpart, 221, 331)) {
2093  return -1 * (100000 * m_nPhotos + 1134);
2094  }//anti-D0 decays to eta eta'
2095  if (GenDTag::PcheckDecay(genpart, 333, 22)) {
2096  return -1 * (100000 * m_nPhotos + 1135);
2097  }//anti-D0 decays to phi gamma
2098  if (GenDTag::PcheckDecay(genpart, 313, 22)) {
2099  return -1 * (100000 * m_nPhotos + 1136);
2100  }//anti-D0 decays to K*0 gamma
2101  return -1 * (int)genpart.size();
2102 }// Rest of the anti-D0 decays
int Mode_Ds_minus(std::vector< int > genDAU)
returns Ds- mode identifier
Definition: GenDTag.cc:383
int Mode_Dst_plus(std::vector< int > genDAU)
returns D*+ mode identifier
Definition: GenDTag.cc:95
int Mode_anti_D0(std::vector< int > genDAU)
returns D0bar mode identifier
Definition: GenDTag.cc:1691
int Mode_D0(std::vector< int > genDAU)
returns D0 mode identifier
Definition: GenDTag.cc:1277
int Mode_Ds_plus(std::vector< int > genDAU)
returns Ds+ mode identifier
Definition: GenDTag.cc:125
int m_nPhotos
number of photons
Definition: GenDTag.h:41
int Mode_D_minus(std::vector< int > genDAU)
returns D- mode identifier
Definition: GenDTag.cc:959
bool PcheckDecay(std::vector< int > gp, int da1, int da2)
check decay with two daughters
Definition: GenDTag.cc:16
int Mode_Dst_minus(std::vector< int > genDAU)
returns D*- mode identifier
Definition: GenDTag.cc:110
int Mode_D_plus(std::vector< int > genDAU)
returns D+ mode identifier
Definition: GenDTag.cc:641
GenDTag()
Constructor.
Abstract base class for different kinds of events.