Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
KFPartEfficiencies.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file KFPartEfficiencies.h
1 /*
2  * This file is part of KFParticle package
3  * Copyright (C) 2007-2019 FIAS Frankfurt Institute for Advanced Studies
4  * 2007-2019 Goethe University of Frankfurt
5  * 2007-2019 Ivan Kisel <I.Kisel@compeng.uni-frankfurt.de>
6  * 2007-2019 Maksym Zyzak
7  *
8  * KFParticle is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * KFParticle is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20  */
21 
22 #ifndef KFPartEfficiencies_H
23 #define KFPartEfficiencies_H
24 
25 #include <map>
26 #include <iomanip>
27 #include "KFMCCounter.h"
28 
29 #ifdef HLTCA_STANDALONE
30 #include "RootTypesDef.h"
31 #else
32 #include "TObject.h"
33 #endif
34 
43 {
44  public:
45  KFEfficiencyParticleInfo():fName("null"),fTitle("null"),fPDG(0),fHistoMin(0.f),fHistoMax(0.f),fMass(0.f),fLifeTime(0.f),fCharge(0), fMassSigma(0.001) {};
47  KFEfficiencyParticleInfo(std::string name, std::string title, int pdg, float histoMin, float histoMax, float mass, float lifeTime, int charge, float massSigma ):
48  fName(name), fTitle(title), fPDG(pdg), fHistoMin(histoMin), fHistoMax(histoMax), fMass(mass), fLifeTime(lifeTime), fCharge(charge), fMassSigma(massSigma) {};
50 
51  //accessors
52  std::string Name() const { return fName; }
53  std::string Title() const { return fTitle; }
54  int PDG() const { return fPDG; }
55  float HistoMin() const { return fHistoMin; }
56  float HistoMax() const { return fHistoMax; }
57  float Mass() const { return fMass; }
58  float LifeTime() const { return fLifeTime; }
59  int Charge() const { return fCharge; }
60  float MassSigma() const { return fMassSigma; }
61 
62  private:
65  int fPDG;
66  float fHistoMin;
67  float fHistoMax;
68  float fMass;
69  float fLifeTime;
70  int fCharge;
71  float fMassSigma;
72 };
73 
93 class KFPartEfficiencies :public TObject
94 {
95  public:
96 
99  partDaughterPdg(0),
100  names(),
101  indices(),
102  fPdgToIndex(),
103  ratio_reco1(),
104  ratio_reco2(),
105  ratio_reco3(),
106  mc1(),
107  mc2(),
108  mc3(),
109  reco(),
110  ratio_ghost(),
111  ratio_bg(),
112  ratio_clone(),
113  ghost(),
114  bg(),
115  clone()
116  {
117  KFEfficiencyParticleInfo particleInfo[nParticles] =
118  {
119  // name title PDG code min max mass lifetime Q
120 #ifdef CBM
121  KFEfficiencyParticleInfo("Ks", "KShort ", 310, 0.3f, 1.3f, 0.497614 , 8.954e-11, 0, 0.0045), //0
122 #else
123  KFEfficiencyParticleInfo("Ks", "KShort ", 310, 0.3f, 1.3f, 0.497614 , 8.954e-11, 0, 0.0057), //0
124 #endif
125  KFEfficiencyParticleInfo("Lambda", "Lambda ", 3122, 1.0f, 2.0f, 1.115683 , 2.632e-10, 0, 0.0020), //1
126  KFEfficiencyParticleInfo("Lambdab", "Lambda b ", -3122, 1.0f, 2.0f, 1.115683 , 2.632e-10, 0, 0.0020), //2
127  KFEfficiencyParticleInfo("Xi-", "Xi- ", 3312, 1.0f, 3.0f, 1.32171 , 1.639e-10, -1, 0.0022), //3
128  KFEfficiencyParticleInfo("Xi+", "Xi+ ", -3312, 1.0f, 3.0f, 1.32171 , 1.639e-10, 1, 0.0022), //4
129  KFEfficiencyParticleInfo("Xi0", "Xi0 ", 3322, 1.0f, 3.0f, 1.31486 , 2.9e-10, 0, 0.0030), //5
130  KFEfficiencyParticleInfo("Xi0b", "Xi0 b ", -3322, 1.0f, 3.0f, 1.31486 , 2.9e-10, 0, 0.0030), //6
131  KFEfficiencyParticleInfo("Omega-", "Omega- ", 3334, 1.0f, 3.0f, 1.67245 , 0.821e-10, -1, 0.0022), //7
132  KFEfficiencyParticleInfo("Omega+", "Omega+ ", -3334, 1.0f, 3.0f, 1.67245 , 0.821e-10, 1, 0.0022), //8
133  KFEfficiencyParticleInfo("Sigma^0", "Sigma0 ", 3212, 1.0f, 3.0f, 1.192642 , 7.4e-20, 0, 0.0030), //9
134  KFEfficiencyParticleInfo("Sigma^0b", "Sigma0 b ", -3212, 1.0f, 3.0f, 1.192642 , 7.4e-20, 0, 0.0030), //10
135  KFEfficiencyParticleInfo("Sigma^+", "Sigma+ ", 3222, 1.0f, 3.0f, 1.18937 , 0.8018e-10, 1, 0.0030), //11
136  KFEfficiencyParticleInfo("Sigma^-b", "Sigma- b ", -3222, 1.0f, 3.0f, 1.18937 , 0.8018e-10,-1, 0.0030), //12
137  KFEfficiencyParticleInfo("K*0", "K*0 ", 313, 0.6f, 2.6f, 0.8958 , 1.38e-23, 0, 0.0300), //13
138  KFEfficiencyParticleInfo("K*0b", "K*0 b ", -313, 0.6f, 2.6f, 0.8958 , 1.38e-23, 0, 0.0300), //14
139  KFEfficiencyParticleInfo("K*+", "K*+ ", 323, 0.6f, 2.6f, 0.89166 , 1.30e-23, 1, 0.0300), //15
140  KFEfficiencyParticleInfo("K*-", "K*- ", -323, 0.6f, 2.6f, 0.89166 , 1.30e-23, -1, 0.0300), //16
141  KFEfficiencyParticleInfo("K*0_K0,pi0", "K*0_K0pi0 ", 100313, 0.6f, 2.6f, 0.8958 , 1.38e-23, 0, 0.0030), //17
142  KFEfficiencyParticleInfo("K*+_K+,pi0", "K*+_K+pi0 ", 100323, 0.6f, 2.6f, 0.89166 , 1.30e-23, 1, 0.0030), //18
143  KFEfficiencyParticleInfo("K*-_K-,pi0", "K*-_K-pi0 ", -100323, 0.6f, 2.6f, 0.89166 , 1.30e-23, -1, 0.0030), //19
144  KFEfficiencyParticleInfo("Sigma*+", "Sigma*+ ", 3224, 1.0f, 3.0f, 1.3828 , 1.83e-23, 1, 0.0100), //20
145  KFEfficiencyParticleInfo("Sigma*-", "Sigma*- ", 3114, 1.0f, 3.0f, 1.3872 , 1.67e-23, -1, 0.0100), //21
146  KFEfficiencyParticleInfo("Sigma*+b", "Sigma*+ b ", -3114, 1.0f, 3.0f, 1.3828 , 1.83e-23, -1, 0.0100), //22
147  KFEfficiencyParticleInfo("Sigma*-b", "Sigma*- b ", -3224, 1.0f, 3.0f, 1.3872 , 1.67e-23, 1, 0.0100), //23
148  KFEfficiencyParticleInfo("Sigma*0", "Sigma*0 ", 3214, 1.0f, 3.0f, 1.3837 , 1.83e-23, 0, 0.0030), //24
149  KFEfficiencyParticleInfo("Sigma*0b", "Sigma*0 b ", -3214, 1.0f, 3.0f, 1.3837 , 1.83e-23, 0, 0.0030), //25
150  KFEfficiencyParticleInfo("Lambda*", "Lambda* ", 3124, 1.4f, 3.4f, 1.5195 , 4.22e-23, 0, 0.0100), //26
151  KFEfficiencyParticleInfo("Lambda*b", "Lambda* b ", -3124, 1.4f, 3.4f, 1.5195 , 4.22e-23, 0, 0.0100), //27
152  KFEfficiencyParticleInfo("Xi*0", "Xi*0 ", 3324, 1.4f, 3.4f, 1.53180 , 7.23e-23, 0, 0.0100), //28
153  KFEfficiencyParticleInfo("Xi*0b", "Xi*0 b ", -3324, 1.4f, 3.4f, 1.53180 , 7.23e-23, 0, 0.0100), //29
154  KFEfficiencyParticleInfo("Xi*-_LK", "Xi*-_lk ", 1003314, 1.4f, 3.4f, 1.823 , 2.74e-23, -1, 0.0030), //30
155  KFEfficiencyParticleInfo("Xi*+_LK", "Xi*+_lk ", -1003314, 1.4f, 3.4f, 1.823 , 2.74e-23, 1, 0.0030), //31
156  KFEfficiencyParticleInfo("Xi*-_xi-,pi0", "Xi*-_XiPi ", 3314, 1.4f, 3.4f, 1.535 , 6.65e-23, -1, 0.0030), //32
157  KFEfficiencyParticleInfo("Xi*+_xi+,pi0", "Xi*+_XiPi ", -3314, 1.4f, 3.4f, 1.535 , 6.65e-23, 1, 0.0030), //33
158  KFEfficiencyParticleInfo("Omega*-", "Omega*- ", 1003334, 1.8f, 3.8f, 2.252 , 1.2e-23, -1, 0.0030), //34
159  KFEfficiencyParticleInfo("Omega*+", "Omega*+ ", -1003334, 1.8f, 3.8f, 2.252 , 1.2e-23, 1, 0.0030), //35
160  KFEfficiencyParticleInfo("H0_LL", "H0_LL ", 3000, 1.5f, 3.5f, 2.21 , 1.32e-10, 0, 0.0030), //36
161  KFEfficiencyParticleInfo("phi_KK", "phi_KK ", 333, 0.8f, 2.8f, 1.019455 , 1.55e-22, 0, 0.0030), //37
162  KFEfficiencyParticleInfo("rho_pipi", "rho_pipi ", 113, 0.0f, 2.0f, 0.77526 , 4.45e-24, 0, 0.0030), //38
163  KFEfficiencyParticleInfo("rho_ee", "rho_ee ", 100113, 0.0f, 2.0f, 0.77526 , 4.45e-24, 0, 0.0030), //39
164  KFEfficiencyParticleInfo("rho_mm", "rho_mm ", 200113, 0.0f, 2.0f, 0.77526 , 4.45e-24, 0, 0.0030), //40
165  KFEfficiencyParticleInfo("gamma", "gamma ", 22, 0.0f, 3.0f, 0. , 1.e20, 0, 0.0030), //41
166  KFEfficiencyParticleInfo("pi0", "pi0 ", 111, 0.0f, 3.0f, 0.1349766 , 8.52e-17, 0, 0.0030), //42
167  KFEfficiencyParticleInfo("eta", "eta ", 221, 0.0f, 3.0f, 0.547862 , 5.0e-19, 0, 0.0030), //43
168 //Delta and N resonances
169  KFEfficiencyParticleInfo("Delta0", "Delta0 ", 2114, 1.0f, 3.0f, 1.232 , 5.63e-24, 0, 0.0030), //44
170  KFEfficiencyParticleInfo("Delta0 b", "Delta0 b ", -2114, 1.0f, 3.0f, 1.232 , 5.63e-24, 0, 0.0030), //45
171  KFEfficiencyParticleInfo("Delta++", "Delta++ ", 2224, 1.0f, 3.0f, 1.232 , 5.63e-24, 2, 0.0030), //46
172  KFEfficiencyParticleInfo("Delta-- b", "Delta-- b ", -2224, 1.0f, 3.0f, 1.232 , 5.63e-24, -2, 0.0030), //47
173 //charmonium
174  KFEfficiencyParticleInfo("JPsi_ee", "JPsi_ee ", 443, 1.0f, 4.0f, 3.096916 , 7.1e-21, 0, 0.0030), //48
175  KFEfficiencyParticleInfo("JPsi_mumu", "JPsi_mm ", 100443, 1.0f, 4.0f, 3.096916 , 7.1e-21, 0, 0.0030), //49
176  KFEfficiencyParticleInfo("JPsi_pp", "JPsi_pp ", 200443, 1.0f, 4.0f, 3.096916 , 7.1e-21, 0, 0.0030), //50
177  KFEfficiencyParticleInfo("JPsi_LL", "JPsi_LL ", 300443, 2.0f, 5.0f, 3.096916 , 7.1e-21, 0, 0.0030), //51
178  KFEfficiencyParticleInfo("JPsi_XiXi", "JPsi_XiXi ", 400443, 2.0f, 5.0f, 3.096916 , 7.1e-21, 0, 0.0030), //52
179  KFEfficiencyParticleInfo("Psi_OO", "Psi_OO ", 500443, 3.0f, 6.0f, 3.686109 , 2.1e-22, 0, 0.0030), //53
180 //open charm
181  KFEfficiencyParticleInfo("D0", "D0 ", 421, 0.6f, 3.6f, 1.86486 , 4.1e-13, 0, 0.0154), //54
182  KFEfficiencyParticleInfo("D0b", "D0b ", -421, 0.6f, 3.6f, 1.86486 , 4.1e-13, 0, 0.0154), //55
183  KFEfficiencyParticleInfo("D0_4", "D0_4 ", 429, 0.6f, 3.6f, 1.86486 , 4.1e-13, 0, 0.0100), //56
184  KFEfficiencyParticleInfo("D0b_4", "D0b_4 ", -429, 0.6f, 3.6f, 1.86486 , 4.1e-13, 0, 0.0100), //57
185  KFEfficiencyParticleInfo("D0_pipi", "D0_pipi ", 420, 0.6f, 3.6f, 1.86486 , 4.1e-13, 0, 0.0154), //58
186  KFEfficiencyParticleInfo("D0_2pi2pi", "D0_2pi2pi ", 470, 0.6f, 3.6f, 1.86486 , 4.1e-13, 0, 0.0154), //59
187  KFEfficiencyParticleInfo("D0_K0pipi", "D0_K0pipi ", 425, 0.6f, 3.6f, 1.86486 , 4.1e-13, 0, 0.0150), //60
188  KFEfficiencyParticleInfo("D0_KK", "D0_KK ", 426, 0.6f, 3.6f, 1.86486 , 4.1e-13, 0, 0.0130), //61
189  KFEfficiencyParticleInfo("D0_KKK0", "D0_KKK0 ", 427, 0.6f, 3.6f, 1.86486 , 4.1e-13, 0, 0.0154), //62
190  KFEfficiencyParticleInfo("D0_pi0", "D0_#pi0 ", 428, 1.0f, 3.0f, 1.86486 , 4.1e-13, 0, 0.0030), //63
191  KFEfficiencyParticleInfo("D+", "D+ ", 411, 1.0f, 3.0f, 1.86962 , 1.04e-13, 1, 0.0114), //64
192  KFEfficiencyParticleInfo("D-", "D- ", -411, 1.0f, 3.0f, 1.86962 , 1.04e-13, -1, 0.0114), //65
193  KFEfficiencyParticleInfo("D+_K0pi+", "D+_K0pi+ ", 100411, 0.6f, 4.6f, 1.86962 , 1.04e-13, 1, 0.0030), //66
194  KFEfficiencyParticleInfo("D-_K0pi-", "D-_K0pi- ", -100411, 0.6f, 4.6f, 1.86962 , 1.04e-13, -1, 0.0030), //67
195  KFEfficiencyParticleInfo("D+_K03pi", "D+_K03pi ", 200411, 0.6f, 4.6f, 1.86962 , 1.04e-13, 1, 0.0030), //68
196  KFEfficiencyParticleInfo("D-_K03pi", "D-_K03pi ", -200411, 0.6f, 4.6f, 1.86962 , 1.04e-13, -1, 0.0030), //69
197  KFEfficiencyParticleInfo("D+_3pi", "D+_3pi ", 300411, 0.6f, 4.6f, 1.86962 , 1.04e-13, 1, 0.0030), //70
198  KFEfficiencyParticleInfo("D-_3pi", "D-_3pi ", -300411, 0.6f, 4.6f, 1.86962 , 1.04e-13, -1, 0.0030), //71
199  KFEfficiencyParticleInfo("Ds+", "Ds+ ", 431, 1.0f, 3.0f, 1.96850 , 5.0e-13, 1, 0.0110), //72
200  KFEfficiencyParticleInfo("Ds-", "Ds- ", -431, 1.0f, 3.0f, 1.96850 , 5.0e-13, -1, 0.0110), //73
201  KFEfficiencyParticleInfo("Ds+_K0K+", "Ds+_K0K+ ", 100431, 1.0f, 3.0f, 1.96850 , 5.0e-13, 1, 0.0030), //74
202  KFEfficiencyParticleInfo("Ds-_K0K-", "Ds-_K0K- ", -100431, 1.0f, 3.0f, 1.96850 , 5.0e-13, -1, 0.0030), //75
203  KFEfficiencyParticleInfo("Ds+_K0K0pi+", "Ds+_K0K0pi+ ", 200431, 1.0f, 3.0f, 1.96850 , 5.0e-13, 1, 0.0030), //76
204  KFEfficiencyParticleInfo("Ds-_K0K0pi-", "Ds-_K0K0pi- ", -200431, 1.0f, 3.0f, 1.96850 , 5.0e-13, -1, 0.0030), //77
205  KFEfficiencyParticleInfo("Ds+_K0K+pipi", "Ds+_K0K+pipi ", 300431, 1.0f, 3.0f, 1.96850 , 5.0e-13, 1, 0.0030), //78
206  KFEfficiencyParticleInfo("Ds-_K0K-pipi", "Ds-_K0K-pipi ", -300431, 1.0f, 3.0f, 1.96850 , 5.0e-13, -1, 0.0030), //79
207  KFEfficiencyParticleInfo("Ds+_K+pipi", "Ds+_K+pipi ", 400431, 1.0f, 3.0f, 1.96850 , 5.0e-13, 1, 0.0030), //80
208  KFEfficiencyParticleInfo("Ds-_K-pipi", "Ds-_K-pipi ", -400431, 1.0f, 3.0f, 1.96850 , 5.0e-13, -1, 0.0030), //81
209  KFEfficiencyParticleInfo("Lc", "Lambdac ", 4122, 1.8f, 3.8f, 2.28646 , 2.0e-13, 1, 0.0110), //82
210  KFEfficiencyParticleInfo("Lcb", "Lambdac b ", -4122, 1.8f, 3.8f, 2.28646 , 2.0e-13, -1, 0.0110), //83
211  KFEfficiencyParticleInfo("Lc_{pK0}", "Lc {pK0} ", 104122, 1.8f, 3.8f, 2.28646 , 2.0e-13, 1, 0.0030), //84
212  KFEfficiencyParticleInfo("Lcb_{pK0}", "Lc b {pK0} ", -104122, 1.8f, 3.8f, 2.28646 , 2.0e-13, -1, 0.0030), //85
213  KFEfficiencyParticleInfo("Lc_{pK02pi}", "Lc {pK02pi} ", 204122, 1.8f, 3.8f, 2.28646 , 2.0e-13, 1, 0.0030), //86
214  KFEfficiencyParticleInfo("Lcb_{pK02pi}", "Lc b {pK02pi} ", -204122, 1.8f, 3.8f, 2.28646 , 2.0e-13, -1, 0.0030), //87
215  KFEfficiencyParticleInfo("Lc_{Lpi}", "Lc {Lpi} ", 304122, 1.8f, 3.8f, 2.28646 , 2.0e-13, 1, 0.0030), //88
216  KFEfficiencyParticleInfo("Lcb_{Lpi}", "Lc b {Lpi} ", -304122, 1.8f, 3.8f, 2.28646 , 2.0e-13, -1, 0.0030), //89
217  KFEfficiencyParticleInfo("Lc_{L3pi}", "Lc {L3pi} ", 404122, 1.8f, 3.8f, 2.28646 , 2.0e-13, 1, 0.0030), //90
218  KFEfficiencyParticleInfo("Lcb_{L3pi}", "Lc b {L3pi} ", -404122, 1.8f, 3.8f, 2.28646 , 2.0e-13, -1, 0.0030), //91
219  KFEfficiencyParticleInfo("Lc_{p2pi}", "Lc {p2pi} ", 504122, 1.8f, 3.8f, 2.28646 , 2.0e-13, 1, 0.0030), //92
220  KFEfficiencyParticleInfo("Lcb_{p2pi}", "Lc b {p2pi} ", -504122, 1.8f, 3.8f, 2.28646 , 2.0e-13, -1, 0.0030), //93
221  KFEfficiencyParticleInfo("Xic0", "Xic0 ", 4132, 2.1f, 4.1f, 2.47087 , 1.0e-13, 0, 0.0030), //94
222  KFEfficiencyParticleInfo("Xic0b", "Xic0b ", -4132, 2.1f, 4.1f, 2.47087 , 1.0e-13, 0, 0.0030), //95
223  KFEfficiencyParticleInfo("D*0", "D*0 ", 10421, 1.8f, 3.8f, 2.00699 , 3.0e-22, 0, 0.0030), //96
224  KFEfficiencyParticleInfo("D*0b", "D*0 b ", -10421, 1.8f, 3.8f, 2.00699 , 3.0e-22, 0, 0.0030), //97
225  KFEfficiencyParticleInfo("D*+", "D*+ ", 10411, 1.8f, 3.8f, 2.01029 , 6.86e-21, 1, 0.0030), //98
226  KFEfficiencyParticleInfo("D*-", "D*- ", -10411, 1.8f, 3.8f, 2.01029 , 6.86e-21, -1, 0.0030), //99
227  KFEfficiencyParticleInfo("D*+_4", "D*+_4 ", 20411, 1.8f, 3.8f, 2.01029 , 6.86e-21, 1, 0.0030), //100
228  KFEfficiencyParticleInfo("D*-_4", "D*-_4 ", -20411, 1.8f, 3.8f, 2.01029 , 6.86e-21, -1, 0.0030), //101
229  KFEfficiencyParticleInfo("D0*_pi0", "D0*_#pi0 ", 10428, 1.8f, 3.8f, 2.00699 , 6.86e-21, 0, 0.0030), //102
230 //B mesons
231  KFEfficiencyParticleInfo("B_Jpsi_ee", "B_Jpsi_ee ", 500, 1.0f, 4.0f, 3.096916 , 7.1e-21, 0, 0.0030), //103
232  KFEfficiencyParticleInfo("B_Jpsi_mm", "B_Jpsi_mm ", 501, 1.0f, 4.0f, 3.096916 , 7.1e-21, 0, 0.0030), //104
233  KFEfficiencyParticleInfo("B+_D0bPi+", "B+ {D0bPi+} ", 521, 3.0f, 7.0f, 5.27931 , 1.638e-12, 0, 0.0030), //105
234  KFEfficiencyParticleInfo("B-_D0Pi-", "B- {D0Pi-} ", -521, 3.0f, 7.0f, 5.27931 , 1.638e-12, 0, 0.0030), //106
235  KFEfficiencyParticleInfo("B+_D0bK+", "B+ {D0bK+} ", 529, 3.0f, 7.0f, 5.27931 , 1.638e-12, 0, 0.0030), //107
236  KFEfficiencyParticleInfo("B-_D0K-", "B- {D0K+} ", -529, 3.0f, 7.0f, 5.27931 , 1.638e-12, 0, 0.0030), //108
237  KFEfficiencyParticleInfo("B0_D-Pi+", "B0 {D-Pi+} ", 511, 3.0f, 7.0f, 5.27962 , 1.520e-12, 0, 0.0030), //109
238  KFEfficiencyParticleInfo("B0b_D+Pi-", "B0b {D+Pi-} ", -511, 3.0f, 7.0f, 5.27962 , 1.520e-12, 0, 0.0030), //110
239  KFEfficiencyParticleInfo("B0_D-K+", "B0 {D-K+} ", 519, 3.0f, 7.0f, 5.27962 , 1.520e-12, 0, 0.0030), //111
240  KFEfficiencyParticleInfo("B0b_D+K-", "B0b {D+K-} ", -519, 3.0f, 7.0f, 5.27962 , 1.520e-12, 0, 0.0030), //112
241  KFEfficiencyParticleInfo("H0_{Lppi}", "H0 ", 3001, 2.0f, 4.0f, 2.21 , 1.32e-10, 0, 0.0030), //113
242 //hypernuclei
243  KFEfficiencyParticleInfo("LambdaN", "LambdaN ", 3003, 1.0f, 3.0f, 2.05395 , 1.00e-10, 0, 0.0030), //114
244  KFEfficiencyParticleInfo("LambdaNb", "LambdaN b ", -3003, 1.0f, 3.0f, 2.05395 , 1.00e-10, 0, 0.0030), //115
245  KFEfficiencyParticleInfo("LambdaNN", "LambdaNN ", 3103, 2.0f, 4.0f, 2.99352 , 1.00e-10, 0, 0.0030), //116
246  KFEfficiencyParticleInfo("LambdaNNb", "LambdaNN b ", -3103, 2.0f, 4.0f, 2.99352 , 1.00e-10, 0, 0.0030), //117
247  KFEfficiencyParticleInfo("H3L", "H3L ", 3004, 2.0f, 4.0f, 2.99339 , 1.85e-10, 1, 0.0030), //118
248  KFEfficiencyParticleInfo("H3Lb", "H3L b ", -3004, 2.0f, 4.0f, 2.99339 , 1.85e-10, -1, 0.0030), //119
249  KFEfficiencyParticleInfo("H4L", "H4L ", 3005, 3.0f, 5.0f, 3.92975 , 1.80e-10, 1, 0.0030), //120
250  KFEfficiencyParticleInfo("H4Lb", "H4L b ", -3005, 3.0f, 5.0f, 3.92975 , 1.80e-10, -1, 0.0030), //121
251  KFEfficiencyParticleInfo("He4L", "He4L ", 3006, 3.0f, 5.0f, 3.93070 , 1.50e-10, 2, 0.0030), //122
252  KFEfficiencyParticleInfo("He4Lb", "He4L b ", -3006, 3.0f, 5.0f, 3.93070 , 1.50e-10, -2, 0.0030), //123
253  KFEfficiencyParticleInfo("He5L", "He5L ", 3007, 4.0f, 6.0f, 4.86824 , 1.40e-10, 2, 0.0030), //124
254  KFEfficiencyParticleInfo("He5Lb", "He5L b ", -3007, 4.0f, 6.0f, 4.86824 , 1.40e-10, -2, 0.0030), //125
255  KFEfficiencyParticleInfo("LLn", "LLn ", 3203, 3.0f, 5.0f, 3.16964 , 1.00e-10, 0, 0.0030), //126
256  KFEfficiencyParticleInfo("H4LL_{He4Lpi-}", "H4LL_{He4Lpi-}", 3008, 3.0f, 5.0f, 4.10791 , 1.0e-10, 1, 0.0030), //127
257  KFEfficiencyParticleInfo("H4LL_{H3Lppi-}", "H4LL_{H3Lppi-}", 3009, 3.0f, 5.0f, 4.10791 , 1.0e-10, 1, 0.0030), //128
258  KFEfficiencyParticleInfo("H5LL_{He5Lpi-}", "H5LL_{He5Lpi-}", 3010, 4.0f, 6.0f, 5.04748 , 1.0e-10, 1, 0.0030), //129
259  KFEfficiencyParticleInfo("He6LL", "He6LL ", 3011, 5.0f, 7.0f, 5.98575 , 1.0e-10, 2, 0.0030), //130
260 //missing mass method
261  KFEfficiencyParticleInfo("pi-_{mu,nu}", "pi-_{mnu} ", -7000211,-1.0f, 1.0f, 0.139570 , 2.6e-8, -1, 0.0030), //131
262  KFEfficiencyParticleInfo("nu_{pi-}", "nu_{mupi-} b ", -7000014,-1.0f, 1.0f, 0. , 1.0e20, 0, 0.0030), //132
263  KFEfficiencyParticleInfo("pi+_{mu,nu}", "pi+_{mnu} ", 7000211,-1.0f, 1.0f, 0.139570 , 2.6e-8, 1, 0.0030), //133
264  KFEfficiencyParticleInfo("nu_{pi+}", "nu_{mupi+} ", 7000014,-1.0f, 1.0f, 0. , 1.0e20, 0, 0.0030), //134
265  KFEfficiencyParticleInfo("K-_{mu,nu}", "K-_{mnu} ", -7000321,-1.0f, 1.0f, 0.493677 , 1.238e-8, -1, 0.0030), //135
266  KFEfficiencyParticleInfo("nu_{K-}", "nu_{K-} b ", -8000014,-1.0f, 1.0f, 0. , 1.0e20, 0, 0.0030), //136
267  KFEfficiencyParticleInfo("K+_{mu,nu}", "K+_{mnu} ", 7000321,-1.0f, 1.0f, 0.493677 , 1.238e-8, 1, 0.0030), //137
268  KFEfficiencyParticleInfo("nu_{K+}", "nu_{K+} ", 8000014,-1.0f, 1.0f, 0. , 1.0e20, 0, 0.0030), //138
269  KFEfficiencyParticleInfo("Sigma-_{pi-,n}", "Sigma-_{pi-n} ", 7003112, 0.0f, 3.0f, 1.192642 , 1.479e-10, -1, 0.0100), //139
270  KFEfficiencyParticleInfo("n_{Sigma-}", "n_{Sigma-} ", 7002112, 0.0f, 1.5f, 0.9395654 , 880, 0, 0.0030), //140
271  KFEfficiencyParticleInfo("Sigma+_{pi+n}b", "Sigma+{pi+n} b", -7003112, 0.0f, 3.0f, 1.192642 , 1.479e-10, -1, 0.0030), //141
272  KFEfficiencyParticleInfo("n_{Sigma+} b", "n_{Sigma+b} b ", -7002112, 0.0f, 1.5f, 0.9395654 , 880, 0, 0.0030), //142
273  KFEfficiencyParticleInfo("Sigma-_{pi-n}b", "Sigma+{pi-n} b", -7003222, 0.0f, 3.0f, 1.18937 , 0.8018e-10, 1, 0.0030), //143
274  KFEfficiencyParticleInfo("n_{Sigma-} b", "n_{Sigma-_b} b", -8002112, 0.0f, 1.5f, 0.9395654 , 0.93956541, 0, 0.0030), //144
275  KFEfficiencyParticleInfo("Sigma+_{pi+n}", "Sigma+_{pi+n} ", 7003222, 0.0f, 3.0f, 1.18937 , 0.8018e-10, 1, 0.0100), //145
276  KFEfficiencyParticleInfo("n_{Sigma+}", "n_{Sigma+} ", 8002112, 0.0f, 1.5f, 0.9395654 , 880, 0, 0.0030), //146
277  KFEfficiencyParticleInfo("Xi-_{pi-L}", "Xi-_{pi-L} ", 7003312, 0.0f, 3.0f, 1.32171 , 1.639e-10, -1, 0.0030), //147
278  KFEfficiencyParticleInfo("Lambda_{Xi-}", "Lambda_{Xi-} ", 7003122, 0.0f, 2.0f, 1.115683 , 2.632e-10, 0, 0.0030), //148
279  KFEfficiencyParticleInfo("Xi+_{pi+L_b}", "Xi+_{pi+L_b} ", -7003312, 0.0f, 3.0f, 1.32171 , 1.639e-10, 1, 0.0030), //149
280  KFEfficiencyParticleInfo("Lambda_{Xi+} b", "Lambda_{Xi+} b", -7003122, 0.0f, 2.0f, 1.115683 , 2.632e-10, 0, 0.0030), //150
281  KFEfficiencyParticleInfo("Omega-_{Xi-pi0}", "Omega-{pi-Xi0}", 7003334, 0.0f, 3.0f, 1.67245 , 0.821e-10, -1, 0.0030), //151
282  KFEfficiencyParticleInfo("Xi0_{Omega-}", "Xi0_{Omega-} ", 7003322, 0.0f, 3.0f, 1.31486 , 2.9e-10, 0, 0.0030), //152
283  KFEfficiencyParticleInfo("Omega+_{Xi+pi0}", "Omega+_{Xipi0}", -7003334, 0.0f, 3.0f, 1.67245 , 0.821e-10, 1, 0.0030), //153
284  KFEfficiencyParticleInfo("Xi0_{Omega+} b", "Xi0_{Omega+} b", -7003322, 0.0f, 3.0f, 1.31486 , 2.9e-10, 0, 0.0030), //154
285  KFEfficiencyParticleInfo("K-_{pi-pi0}", "K-_{pi-pi0} ", -9000321, 0.0f, 3.0f, 0.493677 , 1.24e-8, -1, 0.0030), //155
286  KFEfficiencyParticleInfo("pi0_{K-}", "pi0_{K-} ", -9000111, 0.0f, 3.0f, 0.1349766 , 8.52e-17, 0, 0.0030), //156
287  KFEfficiencyParticleInfo("K+_{pi+pi0}", "K+_{pi+pi0} ", 9000321, 0.0f, 3.0f, 0.493677 , 1.24e-8, 1, 0.0030), //157
288  KFEfficiencyParticleInfo("pi0_{K+}", "pi0_{K+} ", 9000111, 0.0f, 3.0f, 0.1349766 , 8.52e-17, 0, 0.0030), //158
289  KFEfficiencyParticleInfo("Omega-{K-L}", "Omega-_{K-L} ", 8003334, 0.0f, 3.0f, 1.67245 , 0.821e-10, -1, 0.0030), //159
290  KFEfficiencyParticleInfo("Lambda_{Omega-}", "Lambda_{O-} ", 8003122, 0.0f, 3.0f, 1.115683 , 2.632e-10, 0, 0.0030), //160
291  KFEfficiencyParticleInfo("Omega+_{K+L_b}", "Omega+_{K+Lb} ", -8003334, 0.0f, 3.0f, 1.67245 , 0.821e-10, 1, 0.0030), //161
292  KFEfficiencyParticleInfo("Lamda_{Omega+} b", "Lambda_{O+} b ", -8003122, 0.0f, 3.0f, 1.115683 , 2.632e-10, 0, 0.0030), //162
293  KFEfficiencyParticleInfo("Sigma-{p_b pi0} b","Sigma-{ppi0} b", -8003222, 0.0f, 3.0f, 1.18937 , 0.8018e-10, 1, 0.0030), //163
294  KFEfficiencyParticleInfo("pi0_{Sigma-b}", "pi0_{Sigma-_b}", -8000111, 0.0f, 3.0f, 0.1349766 , 8.52e-17, 0, 0.0030), //164
295  KFEfficiencyParticleInfo("Sigma+_{p pi0}", "Sigma+_{ppi0} ", 8003222, 0.0f, 3.0f, 1.18937 , 0.8018e-10, 1, 0.0250), //165
296  KFEfficiencyParticleInfo("pi0_{Sigma+}", "pi0_{Sigma+} ", 8000111, 0.0f, 3.0f, 0.1349766 , 8.52e-17, 0, 0.0030), //166
297 //tracks
298  KFEfficiencyParticleInfo("e-", "e- ", 11, 0.0f,0.01f, 5.485799e-4, 1.0e20, -1, 0.0030), //167
299  KFEfficiencyParticleInfo("e+", "e+ ", -11, 0.0f,0.01f, 5.485799e-4, 1.0e20, 1, 0.0030), //168
300  KFEfficiencyParticleInfo("mu-", "mu- ", 13, 0.0f, 1.0f, 0.105658 , 2.2e-6, -1, 0.0030), //169
301  KFEfficiencyParticleInfo("mu+", "mu+ ", -13, 0.0f, 1.0f, 0.105658 , 2.2e-6, 1, 0.0030), //170
302  KFEfficiencyParticleInfo("pi+", "pi+ ", 211, 0.0f, 1.0f, 0.139570 , 2.6e-8, 1, 0.0030), //171
303  KFEfficiencyParticleInfo("pi-", "pi- ", -211, 0.0f, 1.0f, 0.139570 , 2.6e-8, -1, 0.0030), //172
304  KFEfficiencyParticleInfo("K+", "K+ ", 321, 0.0f, 1.0f, 0.493677 , 1.238e-8, 1, 0.0030), //173
305  KFEfficiencyParticleInfo("K-", "K- ", -321, 0.0f, 1.0f, 0.493677 , 1.238e-8, -1, 0.0030), //174
306  KFEfficiencyParticleInfo("p+", "p+ ", 2212, 0.0f, 1.5f, 0.938272 , 1.0e20, 1, 0.0030), //175
307  KFEfficiencyParticleInfo("p-", "p- ", -2212, 0.0f, 1.5f, 0.938272 , 1.0e20, -1, 0.0030), //176
308  KFEfficiencyParticleInfo("d+", "d+ ", 1000010020, 0.0f, 2.5f, 1.876124 , 1.0e20, 1, 0.0030), //177
309  KFEfficiencyParticleInfo("d-", "d- ",-1000010020, 0.0f, 2.5f, 1.876124 , 1.0e20, -1, 0.0030), //178
310  KFEfficiencyParticleInfo("t+", "t+ ", 1000010030, 0.0f, 3.5f, 2.809432 , 1.0e20, 1, 0.0030), //179
311  KFEfficiencyParticleInfo("t-", "t- ",-1000010030, 0.0f, 3.5f, 2.809432 , 1.0e20, -1, 0.0030), //180
312  KFEfficiencyParticleInfo("He3+", "He3+ ", 1000020030, 0.0f, 3.5f, 2.809413 , 1.0e20, 2, 0.0030), //181
313  KFEfficiencyParticleInfo("He3-", "He3- ",-1000020030, 0.0f, 3.5f, 2.809413 , 1.0e20, -2, 0.0030), //182
314  KFEfficiencyParticleInfo("He4+", "He4+ ", 1000020040, 0.0f, 4.5f, 3.728400 , 1.0e20, 2, 0.0030), //183
315  KFEfficiencyParticleInfo("He4-", "He4- ",-1000020040, 0.0f, 4.5f, 3.728400 , 1.0e20, -2, 0.0030), //184
316 //background for subtraction
317  KFEfficiencyParticleInfo("pi+pi+", "pi+pi+ ", 9001, 0.0f, 2.0f, 0 , 1.0e20, 0, 0.0030), //185
318  KFEfficiencyParticleInfo("pi+K+", "pi+K+ ", 9002, 0.6f, 5.6f, 0 , 1.0e20, 0, 0.0030), //186
319  KFEfficiencyParticleInfo("K+K+", "K+K+ ", 9003, 0.8f, 3.8f, 0 , 1.0e20, 0, 0.0030), //187
320  KFEfficiencyParticleInfo("K+p+", "K+p+ ", 9004, 1.4f, 5.4f, 0 , 1.0e20, 0, 0.0030), //188
321  KFEfficiencyParticleInfo("pi-pi-", "pi-pi- ", -9001, 0.0f, 2.0f, 0 , 1.0e20, 0, 0.0030), //189
322  KFEfficiencyParticleInfo("pi-K-", "pi-K- ", -9002, 0.6f, 5.6f, 0 , 1.0e20, 0, 0.0030), //190
323  KFEfficiencyParticleInfo("K-K-", "K-K- ", -9003, 0.8f, 3.8f, 0 , 1.0e20, 0, 0.0030), //191
324  KFEfficiencyParticleInfo("K-p-", "K-p- ", -9004, 1.4f, 5.4f, 0 , 1.0e20, 0, 0.0030), //192
325 //V0
326  KFEfficiencyParticleInfo("V0", "V0 ", 123456789, 0.3f, 1.3f, 0 , 0, 0, 0.0030) //193
327  };
328 
329  int mPartMaxMult[nParticles];
330  for(int i=0; i<nParticles; i++)
331  mPartMaxMult[i] = 20;
332  mPartMaxMult[fFirstStableParticleIndex + 4] = 500;
333  mPartMaxMult[fFirstStableParticleIndex + 5] = 500;
334  mPartMaxMult[fFirstStableParticleIndex + 6] = 50;
335  mPartMaxMult[fFirstStableParticleIndex + 7] = 50;
336  mPartMaxMult[fFirstStableParticleIndex + 8] = 500;
337 
338  //set decay mode
339  partDaughterPdg.resize(nParticles);
340 
341  int curPart = 0;
342 
343  partDaughterPdg[curPart].push_back( 211); //K0s -> pi+ pi-
344  partDaughterPdg[curPart].push_back( -211);
345  curPart++;
346 
347  partDaughterPdg[curPart].push_back( 2212); //Lambda -> p pi-
348  partDaughterPdg[curPart].push_back( -211);
349  curPart++;
350 
351  partDaughterPdg[curPart].push_back(-2212); //Lambda_bar -> p- pi+
352  partDaughterPdg[curPart].push_back( 211);
353  curPart++;
354 
355  partDaughterPdg[curPart].push_back( 3122); //Xi- -> Lambda pi-
356  partDaughterPdg[curPart].push_back( -211);
357  curPart++;
358 
359  partDaughterPdg[curPart].push_back(-3122); //Xi+ -> Lambda_bar pi+
360  partDaughterPdg[curPart].push_back( 211);
361  curPart++;
362 
363  partDaughterPdg[curPart].push_back( 3122); //Xi0 -> Lambda Pi0
364  partDaughterPdg[curPart].push_back( 111);
365  curPart++;
366 
367  partDaughterPdg[curPart].push_back(-3122); //Xi0_bar -> Lambda_bar Pi0
368  partDaughterPdg[curPart].push_back( 111);
369  curPart++;
370 
371  partDaughterPdg[curPart].push_back( 3122); //Omega- -> Lambda K-
372  partDaughterPdg[curPart].push_back( -321);
373  curPart++;
374 
375  partDaughterPdg[curPart].push_back(-3122); //Omega+ -> Lambda_bar K+
376  partDaughterPdg[curPart].push_back( 321);
377  curPart++;
378 
379  partDaughterPdg[curPart].push_back( 22); //Sigma0 -> Lambda Gamma
380  partDaughterPdg[curPart].push_back( 3122);
381  curPart++;
382 
383  partDaughterPdg[curPart].push_back( 22); //Sigma0_bar -> Lambda_bar Gamma
384  partDaughterPdg[curPart].push_back(-3122);
385  curPart++;
386 
387  partDaughterPdg[curPart].push_back( 111); //Sigma+ -> p Pi0
388  partDaughterPdg[curPart].push_back( 2212);
389  curPart++;
390 
391  partDaughterPdg[curPart].push_back( 111); //Sigma+_bar -> p- Pi0
392  partDaughterPdg[curPart].push_back(-2212);
393  curPart++;
394 
395  partDaughterPdg[curPart].push_back( 321); //K*0 -> K+ pi-
396  partDaughterPdg[curPart].push_back( -211);
397  curPart++;
398 
399  partDaughterPdg[curPart].push_back( -321); //K*0_bar -> K- pi+
400  partDaughterPdg[curPart].push_back( 211);
401  curPart++;
402 
403  partDaughterPdg[curPart].push_back( 310); //K*+ -> K0s pi+
404  partDaughterPdg[curPart].push_back( 211);
405  curPart++;
406 
407  partDaughterPdg[curPart].push_back( 310); //K*- -> K0s pi-
408  partDaughterPdg[curPart].push_back( -211);
409  curPart++;
410 
411  partDaughterPdg[curPart].push_back( 310); //K*0 -> K0 pi0
412  partDaughterPdg[curPart].push_back( 111);
413  curPart++;
414 
415  partDaughterPdg[curPart].push_back( 111); //K*+ -> K+ pi0
416  partDaughterPdg[curPart].push_back( 321);
417  curPart++;
418 
419  partDaughterPdg[curPart].push_back( 111); //K*- -> K- pi0
420  partDaughterPdg[curPart].push_back( -321);
421  curPart++;
422 
423  partDaughterPdg[curPart].push_back( 3122); //Sigma+ -> Lambda pi+
424  partDaughterPdg[curPart].push_back( 211);
425  curPart++;
426 
427  partDaughterPdg[curPart].push_back( 3122); //Sigma- -> Lambda pi-
428  partDaughterPdg[curPart].push_back( -211);
429  curPart++;
430 
431  partDaughterPdg[curPart].push_back(-3122); //Sigma+_bar -> Lambda_bar pi+
432  partDaughterPdg[curPart].push_back( 211);
433  curPart++;
434 
435  partDaughterPdg[curPart].push_back(-3122); //Sigma-_bar -> Lambda_bar pi-
436  partDaughterPdg[curPart].push_back( -211);
437  curPart++;
438 
439  partDaughterPdg[curPart].push_back( 3122); //Sigma*0 -> Lambda pi0
440  partDaughterPdg[curPart].push_back( 111);
441  curPart++;
442 
443  partDaughterPdg[curPart].push_back(-3122); //Sigma*0_bar -> Lambda_bar pi0
444  partDaughterPdg[curPart].push_back( 111);
445  curPart++;
446 
447  partDaughterPdg[curPart].push_back( 2212); //Lambda* -> p K-
448  partDaughterPdg[curPart].push_back( -321);
449  curPart++;
450 
451  partDaughterPdg[curPart].push_back(-2212); //Lambda*_bar -> p- K+
452  partDaughterPdg[curPart].push_back( 321);
453  curPart++;
454 
455  partDaughterPdg[curPart].push_back( 3312); //Xi*0 -> Xi- pi+
456  partDaughterPdg[curPart].push_back( 211);
457  curPart++;
458 
459  partDaughterPdg[curPart].push_back(-3312); //Xi*0_bar -> Xi+ pi-
460  partDaughterPdg[curPart].push_back( -211);
461  curPart++;
462 
463  partDaughterPdg[curPart].push_back( 3122); //Xi*- -> Lambda K-
464  partDaughterPdg[curPart].push_back( -321);
465  curPart++;
466 
467  partDaughterPdg[curPart].push_back(-3122); //Xi*+ -> Lambda_bar K+
468  partDaughterPdg[curPart].push_back( 321);
469  curPart++;
470 
471  partDaughterPdg[curPart].push_back( 3312); //Xi*- -> Xi- pi0
472  partDaughterPdg[curPart].push_back( 111);
473  curPart++;
474 
475  partDaughterPdg[curPart].push_back(-3312); //Xi*+ -> Xi+ pi0
476  partDaughterPdg[curPart].push_back( 111);
477  curPart++;
478 
479  partDaughterPdg[curPart].push_back( 3312); //Omega*- -> Xi- pi+ K-
480  partDaughterPdg[curPart].push_back( 211);
481  partDaughterPdg[curPart].push_back( -321);
482  curPart++;
483 
484  partDaughterPdg[curPart].push_back(-3312); //Omega*- -> Xi+ pi- K+
485  partDaughterPdg[curPart].push_back( -211);
486  partDaughterPdg[curPart].push_back( 321);
487  curPart++;
488 
489  partDaughterPdg[curPart].push_back( 3122); //H-dibar -> Lambda Lambda
490  partDaughterPdg[curPart].push_back( 3122);
491  curPart++;
492 
493  partDaughterPdg[curPart].push_back( 321); //phi -> K+ K-
494  partDaughterPdg[curPart].push_back( -321);
495  curPart++;
496 
497  partDaughterPdg[curPart].push_back( 211); //rho, omega, phi -> pi+ pi-
498  partDaughterPdg[curPart].push_back( -211);
499  curPart++;
500 
501  partDaughterPdg[curPart].push_back( 11); //rho, omega, phi -> e+ e-
502  partDaughterPdg[curPart].push_back( -11);
503  curPart++;
504 
505  partDaughterPdg[curPart].push_back( 13); //rho, omega, phi -> mu+ mu-
506  partDaughterPdg[curPart].push_back( -13);
507  curPart++;
508 
509  partDaughterPdg[curPart].push_back( 11); //gamma -> e+ e-
510  partDaughterPdg[curPart].push_back( -11);
511  curPart++;
512 
513  partDaughterPdg[curPart].push_back( 22); //pi0 -> gamma gamma
514  partDaughterPdg[curPart].push_back( 22);
515  curPart++;
516 
517  partDaughterPdg[curPart].push_back( 111); //eta -> pi0 pi0
518  partDaughterPdg[curPart].push_back( 111);
519  partDaughterPdg[curPart].push_back( 111);
520  curPart++;
521 
522  partDaughterPdg[curPart].push_back( 2212); //Delta0 -> p pi-
523  partDaughterPdg[curPart].push_back( -211);
524  curPart++;
525 
526  partDaughterPdg[curPart].push_back(-2212); //Delta0_bar -> p- pi+
527  partDaughterPdg[curPart].push_back( 211);
528  curPart++;
529 
530  partDaughterPdg[curPart].push_back( 2212); //Delta++ -> p pi+
531  partDaughterPdg[curPart].push_back( 211);
532  curPart++;
533 
534  partDaughterPdg[curPart].push_back(-2212); //Delta--_bar -> p- pi-
535  partDaughterPdg[curPart].push_back( -211);
536  curPart++;
537 
538  partDaughterPdg[curPart].push_back( 11); //JPsi -> e+ e-
539  partDaughterPdg[curPart].push_back( -11);
540  curPart++;
541 
542  partDaughterPdg[curPart].push_back( 13); //JPsi -> mu+ mu-
543  partDaughterPdg[curPart].push_back( -13);
544  curPart++;
545 
546  partDaughterPdg[curPart].push_back( 2212); //JPsi -> p p-
547  partDaughterPdg[curPart].push_back( -2212);
548  curPart++;
549 
550  partDaughterPdg[curPart].push_back( 3122); //JPsi -> Lambda Lambda_bar
551  partDaughterPdg[curPart].push_back( -3122);
552  curPart++;
553 
554  partDaughterPdg[curPart].push_back( 3312); //JPsi -> Xi- Xi+
555  partDaughterPdg[curPart].push_back( -3312);
556  curPart++;
557 
558  partDaughterPdg[curPart].push_back( 3334); //Psi -> Omega- Omega+
559  partDaughterPdg[curPart].push_back( -3334);
560  curPart++;
561 
562  partDaughterPdg[curPart].push_back( 211); //D0 -> pi+ K-
563  partDaughterPdg[curPart].push_back( -321);
564  curPart++;
565 
566  partDaughterPdg[curPart].push_back( -211); //D0_bar -> K+ pi-
567  partDaughterPdg[curPart].push_back( 321);
568  curPart++;
569 
570  partDaughterPdg[curPart].push_back( 211); //D0 -> pi+ pi+ pi- K-
571  partDaughterPdg[curPart].push_back( 211);
572  partDaughterPdg[curPart].push_back( -211);
573  partDaughterPdg[curPart].push_back( -321);
574  curPart++;
575 
576  partDaughterPdg[curPart].push_back( -211); //D0_bar -> pi- pi- pi+ K+
577  partDaughterPdg[curPart].push_back( -211);
578  partDaughterPdg[curPart].push_back( 211);
579  partDaughterPdg[curPart].push_back( 321);
580  curPart++;
581 
582  partDaughterPdg[curPart].push_back( 211); //D0 -> pi+ pi-
583  partDaughterPdg[curPart].push_back( -211);
584  curPart++;
585 
586  partDaughterPdg[curPart].push_back( 211); //D0 -> 2pi+ 2pi-
587  partDaughterPdg[curPart].push_back( 211);
588  partDaughterPdg[curPart].push_back( -211);
589  partDaughterPdg[curPart].push_back( -211);
590  curPart++;
591 
592  partDaughterPdg[curPart].push_back( 310); //D0_bar -> K0 pi+ pi-
593  partDaughterPdg[curPart].push_back( 211);
594  partDaughterPdg[curPart].push_back( -211);
595  curPart++;
596 
597  partDaughterPdg[curPart].push_back( 321); //D0_bar -> K+ K-
598  partDaughterPdg[curPart].push_back( -321);
599  curPart++;
600 
601  partDaughterPdg[curPart].push_back( 321); //D0_bar -> K+ K- K0
602  partDaughterPdg[curPart].push_back( -321);
603  partDaughterPdg[curPart].push_back( 310);
604  curPart++;
605 
606  partDaughterPdg[curPart].push_back( 310); //D0_bar -> K0 pi+ pi- pi0
607  partDaughterPdg[curPart].push_back( 211);
608  partDaughterPdg[curPart].push_back( -211);
609  partDaughterPdg[curPart].push_back( 111);
610  curPart++;
611 
612  partDaughterPdg[curPart].push_back( -321); //D+ -> K- pi+ pi+
613  partDaughterPdg[curPart].push_back( 211);
614  partDaughterPdg[curPart].push_back( 211);
615  curPart++;
616 
617  partDaughterPdg[curPart].push_back( 321); //D- -> K+ pi- pi-
618  partDaughterPdg[curPart].push_back( -211);
619  partDaughterPdg[curPart].push_back( -211);
620  curPart++;
621 
622  partDaughterPdg[curPart].push_back( 310); //D+ -> K0 pi+
623  partDaughterPdg[curPart].push_back( 211);
624  curPart++;
625 
626  partDaughterPdg[curPart].push_back( 310); //D- -> K0 pi-
627  partDaughterPdg[curPart].push_back( -211);
628  curPart++;
629 
630  partDaughterPdg[curPart].push_back( 310); //D+ -> K0 pi+ pi+ pi-
631  partDaughterPdg[curPart].push_back( 211);
632  partDaughterPdg[curPart].push_back( 211);
633  partDaughterPdg[curPart].push_back( -211);
634  curPart++;
635 
636  partDaughterPdg[curPart].push_back( 310); //D- -> K0 pi+ pi- pi-
637  partDaughterPdg[curPart].push_back( 211);
638  partDaughterPdg[curPart].push_back( -211);
639  partDaughterPdg[curPart].push_back( -211);
640  curPart++;
641 
642  partDaughterPdg[curPart].push_back( 211); //D+ -> pi+ pi+ pi-
643  partDaughterPdg[curPart].push_back( 211);
644  partDaughterPdg[curPart].push_back( -211);
645  curPart++;
646 
647  partDaughterPdg[curPart].push_back( 211); //D- -> pi+ pi- pi-
648  partDaughterPdg[curPart].push_back( -211);
649  partDaughterPdg[curPart].push_back( -211);
650  curPart++;
651 
652  partDaughterPdg[curPart].push_back( -321); //Ds+ -> K- K+ pi+
653  partDaughterPdg[curPart].push_back( 321);
654  partDaughterPdg[curPart].push_back( 211);
655  curPart++;
656 
657  partDaughterPdg[curPart].push_back( 321); //Ds- -> K+ K- pi-
658  partDaughterPdg[curPart].push_back( -321);
659  partDaughterPdg[curPart].push_back( -211);
660  curPart++;
661 
662  partDaughterPdg[curPart].push_back( 310); //Ds+ -> K0 K+
663  partDaughterPdg[curPart].push_back( 321);
664  curPart++;
665 
666  partDaughterPdg[curPart].push_back( 310); //Ds- -> K0 K-
667  partDaughterPdg[curPart].push_back( -321);
668  curPart++;
669 
670  partDaughterPdg[curPart].push_back( 310); //Ds+ -> K0 K0 pi+
671  partDaughterPdg[curPart].push_back( 310);
672  partDaughterPdg[curPart].push_back( 211);
673  curPart++;
674 
675  partDaughterPdg[curPart].push_back( 310); //Ds- -> K0 K0 pi-
676  partDaughterPdg[curPart].push_back( 310);
677  partDaughterPdg[curPart].push_back( -211);
678  curPart++;
679 
680  partDaughterPdg[curPart].push_back( 310); //Ds+ -> K0 K+ pi+ pi-
681  partDaughterPdg[curPart].push_back( 321);
682  partDaughterPdg[curPart].push_back( 211);
683  partDaughterPdg[curPart].push_back( -211);
684  curPart++;
685 
686  partDaughterPdg[curPart].push_back( 310); //Ds- -> K0 K- pi+ pi-
687  partDaughterPdg[curPart].push_back( -321);
688  partDaughterPdg[curPart].push_back( 211);
689  partDaughterPdg[curPart].push_back( -211);
690  curPart++;
691 
692  partDaughterPdg[curPart].push_back( 321); //Ds+ -> K+ pi+ pi-
693  partDaughterPdg[curPart].push_back( 211);
694  partDaughterPdg[curPart].push_back( -211);
695  curPart++;
696 
697  partDaughterPdg[curPart].push_back( -321); //Ds- -> K- pi+ pi-
698  partDaughterPdg[curPart].push_back( 211);
699  partDaughterPdg[curPart].push_back( -211);
700  curPart++;
701 
702 
703  partDaughterPdg[curPart].push_back( 211); //Lambdac -> pi+ K- p
704  partDaughterPdg[curPart].push_back( -321);
705  partDaughterPdg[curPart].push_back( 2212);
706  curPart++;
707 
708  partDaughterPdg[curPart].push_back( -211); //Lambdac_bar -> pi- K+ p-
709  partDaughterPdg[curPart].push_back( 321);
710  partDaughterPdg[curPart].push_back(-2212);
711  curPart++;
712 
713  partDaughterPdg[curPart].push_back( 2212); //Lambdac -> p K0s
714  partDaughterPdg[curPart].push_back( 310);
715  curPart++;
716 
717  partDaughterPdg[curPart].push_back(-2212); //Lambdac_bar -> p_bar K0s
718  partDaughterPdg[curPart].push_back( 310);
719  curPart++;
720 
721  partDaughterPdg[curPart].push_back( 2212); //Lambdac -> p K0s pi+ pi-
722  partDaughterPdg[curPart].push_back( 310);
723  partDaughterPdg[curPart].push_back( 211);
724  partDaughterPdg[curPart].push_back( -211);
725  curPart++;
726 
727  partDaughterPdg[curPart].push_back(-2212); //Lambdac_bar -> p_bar K0s pi+ pi-
728  partDaughterPdg[curPart].push_back( 310);
729  partDaughterPdg[curPart].push_back( 211);
730  partDaughterPdg[curPart].push_back( -211);
731  curPart++;
732 
733  partDaughterPdg[curPart].push_back( 3122); //Lambdac -> Lambda pi+
734  partDaughterPdg[curPart].push_back( 211);
735  curPart++;
736 
737  partDaughterPdg[curPart].push_back(-3122); //Lambdac_bar -> Lambda_bar pi-
738  partDaughterPdg[curPart].push_back( -211);
739  curPart++;
740 
741  partDaughterPdg[curPart].push_back( 3122); //Lambdac -> Lambda 2pi+ pi-
742  partDaughterPdg[curPart].push_back( 211);
743  partDaughterPdg[curPart].push_back( 211);
744  partDaughterPdg[curPart].push_back( -211);
745  curPart++;
746 
747  partDaughterPdg[curPart].push_back(-3122); //Lambdac_bar -> Lambda_bar 2pi- pi+
748  partDaughterPdg[curPart].push_back( -211);
749  partDaughterPdg[curPart].push_back( 211);
750  partDaughterPdg[curPart].push_back( -211);
751  curPart++;
752 
753  partDaughterPdg[curPart].push_back( 3312); //Xic0 -> Xi- 2pi+ pi-
754  partDaughterPdg[curPart].push_back( 211);
755  partDaughterPdg[curPart].push_back( 211);
756  partDaughterPdg[curPart].push_back( -211);
757  curPart++;
758 
759  partDaughterPdg[curPart].push_back(-3312); //Xic0_bar -> Xi+ 2pi- pi+
760  partDaughterPdg[curPart].push_back( 211);
761  partDaughterPdg[curPart].push_back( -211);
762  partDaughterPdg[curPart].push_back( -211);
763  curPart++;
764 
765  partDaughterPdg[curPart].push_back( 2212); //Lambdac -> p pi+ pi-
766  partDaughterPdg[curPart].push_back( 211);
767  partDaughterPdg[curPart].push_back( -211);
768  curPart++;
769 
770  partDaughterPdg[curPart].push_back(-2212); //Lambdac_bar -> p_bar pi+ pi-
771  partDaughterPdg[curPart].push_back( 211);
772  partDaughterPdg[curPart].push_back( -211);
773  curPart++;
774 
775 
776  partDaughterPdg[curPart].push_back( 411); //D*0 -> D+ pi-
777  partDaughterPdg[curPart].push_back( -211);
778  curPart++;
779 
780  partDaughterPdg[curPart].push_back( -411); //D*0_bar -> D- pi+
781  partDaughterPdg[curPart].push_back( 211);
782  curPart++;
783 
784  partDaughterPdg[curPart].push_back( 421); //D*+ -> D0 pi+
785  partDaughterPdg[curPart].push_back( 211);
786  curPart++;
787 
788  partDaughterPdg[curPart].push_back( -421); //D*- -> D0_bar pi-
789  partDaughterPdg[curPart].push_back( -211);
790  curPart++;
791 
792  partDaughterPdg[curPart].push_back( 429); //D*+ -> D04 pi+
793  partDaughterPdg[curPart].push_back( 211);
794  curPart++;
795 
796  partDaughterPdg[curPart].push_back( -429); //D*- -> D04_bar pi-
797  partDaughterPdg[curPart].push_back( -211);
798  curPart++;
799 
800  partDaughterPdg[curPart].push_back( 428); //D*0 -> D04 pi0
801  partDaughterPdg[curPart].push_back( 111);
802  curPart++;
803 
804  partDaughterPdg[curPart].push_back( 11); //B -> e+ e-
805  partDaughterPdg[curPart].push_back( -11);
806  curPart++;
807 
808  partDaughterPdg[curPart].push_back( 13); //B -> mu+ mu-
809  partDaughterPdg[curPart].push_back( -13);
810  curPart++;
811 
812  partDaughterPdg[curPart].push_back( -421); //B+ -> D0_bar pi+
813  partDaughterPdg[curPart].push_back( 211);
814  curPart++;
815 
816  partDaughterPdg[curPart].push_back( 421); //B- -> D0 pi-
817  partDaughterPdg[curPart].push_back( -211);
818  curPart++;
819 
820  partDaughterPdg[curPart].push_back( -421); //B+ -> D0_bar K+
821  partDaughterPdg[curPart].push_back( 321);
822  curPart++;
823 
824  partDaughterPdg[curPart].push_back( 421); //B- -> D0 K-
825  partDaughterPdg[curPart].push_back( -321);
826  curPart++;
827 
828  partDaughterPdg[curPart].push_back( -411); //B0 -> D- pi+
829  partDaughterPdg[curPart].push_back( 211);
830  curPart++;
831 
832  partDaughterPdg[curPart].push_back( 411); //B0_bar -> D+ pi-
833  partDaughterPdg[curPart].push_back( -211);
834  curPart++;
835 
836  partDaughterPdg[curPart].push_back( -411); //B0 -> D0_bar K+
837  partDaughterPdg[curPart].push_back( 321);
838  curPart++;
839 
840  partDaughterPdg[curPart].push_back( 411); //B0_bar -> D0 K-
841  partDaughterPdg[curPart].push_back( -321);
842  curPart++;
843 
844  partDaughterPdg[curPart].push_back( 3122); //H0-> Lambda pi- p
845  partDaughterPdg[curPart].push_back( -211);
846  partDaughterPdg[curPart].push_back( 2212);
847  curPart++;
848 
849  partDaughterPdg[curPart].push_back( 1000010020); //LambdaN -> d+ pi-
850  partDaughterPdg[curPart].push_back( -211);
851  curPart++;
852 
853  partDaughterPdg[curPart].push_back(-1000010020); //LambdaN_bar-> d- pi+
854  partDaughterPdg[curPart].push_back( 211);
855  curPart++;
856 
857  partDaughterPdg[curPart].push_back( 1000010030); //LambdaNN -> t+ pi-
858  partDaughterPdg[curPart].push_back( -211);
859  curPart++;
860 
861  partDaughterPdg[curPart].push_back(-1000010030); //LambdaNN_bar -> t- pi+
862  partDaughterPdg[curPart].push_back( 211);
863  curPart++;
864 
865  partDaughterPdg[curPart].push_back( 1000020030); //H3Lambda -> He3+ pi-
866  partDaughterPdg[curPart].push_back( -211);
867  curPart++;
868 
869  partDaughterPdg[curPart].push_back(-1000020030); //H3Lambda_bar -> He3- pi+
870  partDaughterPdg[curPart].push_back( 211);
871  curPart++;
872 
873  partDaughterPdg[curPart].push_back( 1000020040); //H4Lambda -> He4+ pi-
874  partDaughterPdg[curPart].push_back( -211);
875  curPart++;
876 
877  partDaughterPdg[curPart].push_back(-1000020040); //H4Lambda_bar -> He4- pi+
878  partDaughterPdg[curPart].push_back( 211);
879  curPart++;
880 
881  partDaughterPdg[curPart].push_back( 1000020030); //He4Lambda -> He3+ p+ pi-
882  partDaughterPdg[curPart].push_back( 2212);
883  partDaughterPdg[curPart].push_back( -211);
884  curPart++;
885 
886  partDaughterPdg[curPart].push_back(-1000020030); //He4Lambda_bar -> He3- p- pi+
887  partDaughterPdg[curPart].push_back(-2212);
888  partDaughterPdg[curPart].push_back( 211);
889  curPart++;
890 
891  partDaughterPdg[curPart].push_back( 1000020040); //He5Lambda -> He4+ p+ pi-
892  partDaughterPdg[curPart].push_back( 2212);
893  partDaughterPdg[curPart].push_back( -211);
894  curPart++;
895 
896  partDaughterPdg[curPart].push_back(-1000020040); //He5Lambda_bar -> He4- p- pi+
897  partDaughterPdg[curPart].push_back(-2212);
898  partDaughterPdg[curPart].push_back( 211);
899  curPart++;
900 
901  partDaughterPdg[curPart].push_back( 3004); //LLn -> H3Lambda pi-
902  partDaughterPdg[curPart].push_back( -211);
903  curPart++;
904 
905  partDaughterPdg[curPart].push_back( 3006); //H4LL -> He4Lambda pi-
906  partDaughterPdg[curPart].push_back( -211);
907  curPart++;
908 
909  partDaughterPdg[curPart].push_back( 3004); //H4LL -> H3Lambda p pi-
910  partDaughterPdg[curPart].push_back( 2212);
911  partDaughterPdg[curPart].push_back( -211);
912  curPart++;
913 
914  partDaughterPdg[curPart].push_back( 3007); //H5LL -> He5Lambda pi-
915  partDaughterPdg[curPart].push_back( -211);
916  curPart++;
917 
918  partDaughterPdg[curPart].push_back( 3007); //He6LL -> He5Lambda p pi-
919  partDaughterPdg[curPart].push_back( 2212);
920  partDaughterPdg[curPart].push_back( -211);
921  curPart++;
922 
923  partDaughterPdg[curPart].push_back( 13); // pi- -> mu- + nu_mu_bar
924  partDaughterPdg[curPart].push_back(-7000014); //
925  curPart++;
926 
927  partDaughterPdg[curPart].push_back( -211); // nu_mu_bar <- pi- - mu-
928  partDaughterPdg[curPart].push_back( 13); //
929  curPart++;
930 
931  partDaughterPdg[curPart].push_back( -13); // pi+ -> mu+ + nu_mu
932  partDaughterPdg[curPart].push_back( 7000014); //
933  curPart++;
934 
935  partDaughterPdg[curPart].push_back( 211); // nu_mu <- pi+ - mu+
936  partDaughterPdg[curPart].push_back( -13); //
937  curPart++;
938 
939  partDaughterPdg[curPart].push_back( 13); // K- -> mu- + nu_mu_bar
940  partDaughterPdg[curPart].push_back(-8000014); //
941  curPart++;
942 
943  partDaughterPdg[curPart].push_back( -321); // nu_mu_bar <- K- - mu-
944  partDaughterPdg[curPart].push_back( 13); //
945  curPart++;
946 
947  partDaughterPdg[curPart].push_back( -13); // K+ -> mu+ + nu_mu
948  partDaughterPdg[curPart].push_back( 8000014); //
949  curPart++;
950 
951  partDaughterPdg[curPart].push_back( 321); // nu_mu <- K+ - mu+
952  partDaughterPdg[curPart].push_back( -13); //
953  curPart++;
954 
955  partDaughterPdg[curPart].push_back( -211); // Sigma- -> pi- + n
956  partDaughterPdg[curPart].push_back( 7002112); //
957  curPart++;
958 
959  partDaughterPdg[curPart].push_back( 3112); // n <- Sigma- - pi-
960  partDaughterPdg[curPart].push_back( -211); //
961  curPart++;
962 
963  partDaughterPdg[curPart].push_back( 211); // Sigma-b -> pi+ + nb
964  partDaughterPdg[curPart].push_back( -7002112); //
965  curPart++;
966 
967  partDaughterPdg[curPart].push_back( -3112); // nb <- Sigma-b - pi+
968  partDaughterPdg[curPart].push_back( 211); //
969  curPart++;
970 
971  partDaughterPdg[curPart].push_back( -211); // Sigma+b -> pi- + nb
972  partDaughterPdg[curPart].push_back( -8002112); //
973  curPart++;
974 
975  partDaughterPdg[curPart].push_back( -3222); // nb <- Sigma+b - pi-
976  partDaughterPdg[curPart].push_back( -211); //
977  curPart++;
978 
979  partDaughterPdg[curPart].push_back( 211); // Sigma+ -> pi+ + n
980  partDaughterPdg[curPart].push_back( 8002112); //
981  curPart++;
982 
983  partDaughterPdg[curPart].push_back( 3222); // n <- Sigma+ - pi+
984  partDaughterPdg[curPart].push_back( 211); //
985  curPart++;
986 
987  partDaughterPdg[curPart].push_back( -211); // Xi- -> pi- + lam
988  partDaughterPdg[curPart].push_back( 7003122); //
989  curPart++;
990 
991  partDaughterPdg[curPart].push_back( 3312); // lam <- Xi- - pi-
992  partDaughterPdg[curPart].push_back( -211); //
993  curPart++;
994 
995  partDaughterPdg[curPart].push_back( 211); // Xi-b -> pi+ + lam_b
996  partDaughterPdg[curPart].push_back( -7003122); //
997  curPart++;
998 
999  partDaughterPdg[curPart].push_back( -3312); // lam_b <- Xi-b - pi+
1000  partDaughterPdg[curPart].push_back( 211); //
1001  curPart++;
1002 
1003  partDaughterPdg[curPart].push_back( -211); // Om- -> pi- + Xi0
1004  partDaughterPdg[curPart].push_back( 7003322); //
1005  curPart++;
1006 
1007  partDaughterPdg[curPart].push_back( 3334); // Xi0 <- Om- - pi-
1008  partDaughterPdg[curPart].push_back( -211); //
1009  curPart++;
1010 
1011  partDaughterPdg[curPart].push_back( 211); // Om-b -> pi+ + Xi0_b
1012  partDaughterPdg[curPart].push_back( -7003322); //
1013  curPart++;
1014 
1015  partDaughterPdg[curPart].push_back( -3334); // Xi0_b <- Om-b - pi+
1016  partDaughterPdg[curPart].push_back( 211); //
1017  curPart++;
1018 
1019  partDaughterPdg[curPart].push_back( -211); // K- -> pi- + Pi0_b
1020  partDaughterPdg[curPart].push_back( -9000111); //
1021  curPart++;
1022 
1023  partDaughterPdg[curPart].push_back( -321); // Pi0_b <- K- - pi-
1024  partDaughterPdg[curPart].push_back( -211); //
1025  curPart++;
1026 
1027  partDaughterPdg[curPart].push_back( 211); // K+ -> pi+ + Pi0
1028  partDaughterPdg[curPart].push_back( 9000111); //
1029  curPart++;
1030 
1031  partDaughterPdg[curPart].push_back( 321); // Pi0 <- K+ - pi+
1032  partDaughterPdg[curPart].push_back( 211); //
1033  curPart++;
1034 
1035  partDaughterPdg[curPart].push_back( -321); // Om- -> K- + Lam
1036  partDaughterPdg[curPart].push_back( 8003122); //
1037  curPart++;
1038 
1039  partDaughterPdg[curPart].push_back( 3334); // Lam <- Om- - K-
1040  partDaughterPdg[curPart].push_back( -321); //
1041  curPart++;
1042 
1043  partDaughterPdg[curPart].push_back( 321); // Om+ -> K+ + Lam_b
1044  partDaughterPdg[curPart].push_back( -8003122); //
1045  curPart++;
1046 
1047  partDaughterPdg[curPart].push_back( -3334); // Lam_b <- Om+ - K+
1048  partDaughterPdg[curPart].push_back( 321); //
1049  curPart++;
1050 
1051  partDaughterPdg[curPart].push_back( -2212); // Si+b -> p_b + Pi0
1052  partDaughterPdg[curPart].push_back( -8000111); //
1053  curPart++;
1054 
1055  partDaughterPdg[curPart].push_back( -3222); // Pi0 <- Si+b - p_b
1056  partDaughterPdg[curPart].push_back( -2212); //
1057  curPart++;
1058 
1059  partDaughterPdg[curPart].push_back( 2212); // Si+ -> p + Pi0
1060  partDaughterPdg[curPart].push_back( 8000111); //
1061  curPart++;
1062 
1063  partDaughterPdg[curPart].push_back( 3222); // Pi0 <- Si+ - p
1064  partDaughterPdg[curPart].push_back( 2212); //
1065  curPart++;
1066 
1067  for(int iP=0; iP<nParticles; iP++)
1068  {
1069  partPDG[iP] = particleInfo[iP].PDG();
1070  partName[iP] = particleInfo[iP].Name();
1071  partTitle[iP] = particleInfo[iP].Title();
1072  partMHistoMin[iP] = particleInfo[iP].HistoMin();
1073  partMHistoMax[iP] = particleInfo[iP].HistoMax();
1074  partMaxMult[iP] = mPartMaxMult[iP];
1075  partMass[iP] = particleInfo[iP].Mass();
1076  partLifeTime[iP] = particleInfo[iP].LifeTime();
1077  partCharge[iP] = particleInfo[iP].Charge();
1078  partMassSigma[iP] = particleInfo[iP].MassSigma();
1079  }
1080 
1081  for(int iP=0; iP<nParticles; iP++)
1082  {
1083  AddCounter(partName[iP], partTitle[iP] + " ");
1084  AddCounter(partName[iP] + "_prim", partTitle[iP] + " Prim");
1085  AddCounter(partName[iP] + "_sec", partTitle[iP] + " Sec ");
1086  }
1087 
1088  for(int iP=0; iP<nParticles; iP++)
1089  fPdgToIndex[particleInfo[iP].PDG()] = iP;
1090  }
1091 
1092  virtual ~KFPartEfficiencies(){};
1093 
1096  {
1097  std::map<int, int>::iterator it;
1098  it=fPdgToIndex.find(pdg);
1099  if(it != fPdgToIndex.end()) return it->second;
1100  else return -1;
1101  }
1102 
1104  std::map<int,int> GetPdgToIndexMap() const { return fPdgToIndex; }
1105 
1106  virtual void AddCounter(std::string shortname, std::string name)
1107  {
1114  indices[shortname] = names.size();
1115  names.push_back(name);
1116 
1120 
1121  mc1.AddCounter();
1122  mc2.AddCounter();
1123  mc3.AddCounter();
1124 
1125  reco.AddCounter();
1126 
1128  ratio_bg.AddCounter();
1130  ghost.AddCounter();
1131  bg.AddCounter();
1132  clone.AddCounter();
1133  };
1134 
1137  mc1 += a.mc1; mc2 += a.mc2; mc3 += a.mc3; reco += a.reco;
1138  ghost += a.ghost; bg += a.bg; clone += a.clone;
1139  return *this;
1140  };
1141 
1143  void CalcEff(){
1144  ratio_reco1 = reco/mc1;
1145  ratio_reco2 = reco/mc2;
1146  ratio_reco3 = reco/mc3;
1147 
1148  KFMCCounter<int> allReco = reco + ghost + bg;
1149  ratio_ghost = ghost/allReco;
1150  ratio_bg = bg/allReco;
1151  ratio_clone = clone/allReco;
1152  };
1153 
1154  void Inc(bool isReco, int nClones, bool isMC1, bool isMC2, bool isMC3, std::string name)
1155  {
1165  const int index = indices[name];
1166 
1167  if(isMC1) mc1.counters[index]++;
1168  if(isMC2) mc2.counters[index]++;
1169  if(isMC3) mc3.counters[index]++;
1170 
1171  if(isReco) reco.counters[index]++;
1172  if(nClones > 0)
1173  clone.counters[index] += nClones;
1174  };
1175 
1176  void IncReco(bool isGhost, bool isBg, std::string name)
1177  {
1183  const int index = indices[name];
1184 
1185  if (isGhost) ghost. counters[index]++;
1186  if (isBg) bg.counters[index]++;
1187  };
1188 
1190  void PrintEff(){
1191  std::ios_base::fmtflags original_flags = std::cout.flags();
1192  std::cout.setf(std::ios::fixed);
1193  std::cout.setf(std::ios::showpoint);
1194  std::cout.precision(3);
1195  std::cout << "Particle : "
1196  << " Eff 4pi "
1197  <<" / "<< " Eff accept"
1198  <<" / "<< " Eff KFPF "
1199  <<" / "<< " Ghost "
1200  <<" / "<< " BackGr "
1201  <<" / "<< " N Ghost "
1202  <<" / "<< " N BackGr "
1203  <<" / "<< " N Reco "
1204  <<" / "<< " N Clone "
1205  <<" | "<< " N MC 4pi "
1206  <<" | "<< "N MC accept"
1207  <<" | "<< " N MC KFPF " << std::endl;
1208 
1209  int NCounters = mc1.NCounters;
1210  for (int iC = 0; iC < NCounters; iC++){
1211  std::cout << names[iC]
1212  << " : " << std::setw(10) << ratio_reco1.counters[iC]
1213  << " / " << std::setw(10) << ratio_reco2.counters[iC]
1214  << " / " << std::setw(10) << ratio_reco3.counters[iC]
1215  << " / " << std::setw(10) << ratio_ghost.counters[iC] // particles w\o MCParticle
1216  << " / " << std::setw(10) << ratio_bg.counters[iC] // particles with incorrect MCParticle
1217  << " / " << std::setw(10) << ghost.counters[iC]
1218  << " / " << std::setw(10) << bg.counters[iC]
1219  << " / " << std::setw(10) << reco.counters[iC]
1220  << " / " << std::setw(10) << clone.counters[iC]
1221  << " | " << std::setw(10) << mc1.counters[iC]
1222  << " | " << std::setw(10) << mc2.counters[iC]
1223  << " | " << std::setw(10) << mc3.counters[iC] << std::endl;
1224  }
1225  std::cout.flags(original_flags);
1226  };
1227 
1228  float GetTotal4piEfficiency(int iDecay) { return ratio_reco1.counters[3*iDecay]; }
1229  float GetTotalKFPEfficiency(int iDecay) { return ratio_reco3.counters[3*iDecay]; }
1230  float GetPrimary4piEfficiency(int iDecay) { return ratio_reco1.counters[3*iDecay+1]; }
1231  float GetPrimaryKFPEfficiency(int iDecay) { return ratio_reco3.counters[3*iDecay+1]; }
1232  float GetSecondary4piEfficiency(int iDecay) { return ratio_reco1.counters[3*iDecay+2]; }
1233  float GetSecondaryKFPEfficiency(int iDecay) { return ratio_reco3.counters[3*iDecay+2]; }
1234 
1236  friend std::fstream & operator<<(std::fstream &strm, KFPartEfficiencies &a)
1237  {
1238  strm << a.ratio_reco1;
1239  strm << a.ratio_reco2;
1240  strm << a.ratio_reco3;
1241  strm << a.mc1;
1242  strm << a.mc2;
1243  strm << a.mc3;
1244  strm << a.reco;
1245  strm << a.ratio_ghost;
1246  strm << a.ratio_bg;
1247  strm << a.ratio_clone;
1248  strm << a.ghost;
1249  strm << a.bg;
1250  strm << a.clone;
1251 
1252  return strm;
1253  }
1255  friend std::fstream & operator>>(std::fstream &strm, KFPartEfficiencies &a)
1256  {
1257  strm >> a.ratio_reco1;
1258  strm >> a.ratio_reco2;
1259  strm >> a.ratio_reco3;
1260  strm >> a.mc1;
1261  strm >> a.mc2;
1262  strm >> a.mc3;
1263  strm >> a.reco;
1264  strm >> a.ratio_ghost;
1265  strm >> a.ratio_bg;
1266  strm >> a.ratio_clone;
1267  strm >> a.ghost;
1268  strm >> a.bg;
1269  strm >> a.clone;
1270 
1271  return strm;
1272  }
1274  void AddFromFile(std::string fileName)
1275  {
1276  std::fstream file(fileName.data(),std::fstream::in);
1277  file >> *this;
1278  }
1279 
1280  int GetNDaughters(int iParticle) const { return partDaughterPdg[iParticle].size(); }
1281 
1282  int GetDaughterPDG(int iParticle, int iDaughter) const { return partDaughterPdg[iParticle][iDaughter]; }
1283 
1284  float GetMass(int iParticle) const { return partMass[iParticle]; }
1285  float GetMassSigma(int iParticle) const { return partMassSigma[iParticle]; }
1286 
1287  static const int nParticles = 194;
1288  static const int fFirstHypernucleusIndex = 114;
1289  static const int fLastHypernucleusIndex = 130;
1290  static const int fFirstMissingMassParticleIndex = 131;
1291  static const int fLastMissingMassParticleIndex = 166;
1292  static const int fFirstStableParticleIndex = 167;
1293  static const int fLastStableParticleIndex = 184;
1294 
1298  std::vector<std::vector<int> > partDaughterPdg;
1306 
1307 
1308  private:
1309  std::vector<std::string> names;
1310  std::map<std::string, int> indices;
1311 
1312  std::map<int, int> fPdgToIndex;
1313 
1317 
1321 
1323 
1327 
1331 
1332 #ifndef KFParticleStandalone
1333  ClassDef( KFPartEfficiencies, 1 )
1334 #endif
1335 };
1336 
1337 #endif