rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

MC_DALITZ_ETAC

MC analysis of Dalitz plots in three-body $\eta_c$ decays
Experiment: ()
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
No references listed
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing eta_c mesons

Monte Carlo analysis of common three-body decays of $eta_c$ mesons. The $\pi^+\pi^-\eta$, $\pi^0\pi^0\eta$, $\pi^+\pi^-\eta^\prime$, $\pi^0\pi^0\eta^\prime$, $K^+K^-\eta$, $K^0_{S,L}K^0_{S,L}\eta$, $K^+K^-\eta^\prime$, $K^0_{S,L}K^0_{S,L}\eta^\prime$, $K^+K^-\pi^0$, $K^0_{S,L}K^0_{S,L}\pi^0$, $K^0_{S,L}K^+\pi^-$, $K^0_{S,L}K^-\pi^+$ modes are included.

Source code: MC_DALITZ_ETAC.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4#include "Rivet/Projections/DecayedParticles.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief eta_c Dalitz plots
 10  class MC_DALITZ_ETAC : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(MC_DALITZ_ETAC);
 15
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22      // Initialise and register projections
 23      UnstableParticles ufs = UnstableParticles(Cuts::pid== 441);
 24      declare(ufs, "UFS");
 25      DecayedParticles ETAC(ufs);
 26      ETAC.addStable(PID::PI0);
 27      ETAC.addStable(PID::K0S);
 28      ETAC.addStable(PID::ETA);
 29      ETAC.addStable(PID::ETAPRIME);
 30      declare(ETAC,"ETAC");
 31      // histos
 32      // pi+pi- eta
 33      book(_h1_pippim,"h01_pippim",100,0.2,2.5);
 34      book(_h1_pipeta,"h01_pipeta",100,0.5,3.0);
 35      book(_h1_pimeta,"h01_pimeta",100,0.5,3.0);
 36      book(_dalitz[0], "dalitz01",50,0.,9.,50,0.,9.);
 37      // pi0 pi0 eta
 38      book(_h2_pi0pi0,"h02_pi0pi0",100,0.2,2.5);
 39      book(_h2_pi0eta,"h02_pi0eta",100,0.5,3.0);
 40      book(_dalitz[1], "dalitz02",50,0.,9.,50,0.,9.);
 41      // pi+pi- eta'
 42      book(_h3_pippim,"h03_pippim",100,0.2,2.2);
 43      book(_h3_pipeta,"h03_pipeta",100,1.0,3.0);
 44      book(_h3_pimeta,"h03_pimeta",100,1.0,3.0);
 45      book(_dalitz[2], "dalitz03",50,0.,9.,50,0.,9.);
 46      // pi0 pi0 eta'
 47      book(_h4_pi0pi0,"h04_pi0pi0",100,0.2,2.2);
 48      book(_h4_pi0eta,"h04_pi0eta",100,1.0,3.0);
 49      book(_dalitz[3], "dalitz04",50,0.,9.,50,0.,9.);
 50      // K+K- eta
 51      book(_h5_KpKm ,"h05_KpKm" ,100,0.5,2.5);
 52      book(_h5_Kpeta,"h05_Kpeta",100,1.0,3.0);
 53      book(_h5_Kmeta,"h05_Kmeta",100,1.0,3.0);
 54      book(_dalitz[4], "dalitz05",50,1.,7.,50,1.,7.);
 55      // KS0 KS0 eta
 56      book(_h6_KS0KS0,"h06_KS0KS0",100,0.5,2.5);
 57      book(_h6_KS0eta,"h06_KS0eta",100,1.0,3.0);
 58      book(_dalitz[5], "dalitz06",50,1.,7.,50,1.,7.);
 59      // KL0 KL0 eta
 60      book(_h7_KL0KL0,"h07_KL0KL0",100,0.5,2.5);
 61      book(_h7_KL0eta,"h07_KL0eta",100,1.0,3.0);
 62      book(_dalitz[6], "dalitz07",50,1.,7.,50,1.,7.);
 63      // K+K- eta'
 64      book(_h8_KpKm ,"h08_KpKm" ,100,0.9,2.2);
 65      book(_h8_Kpeta,"h08_Kpeta",100,1.3,2.7);
 66      book(_h8_Kmeta,"h08_Kmeta",100,1.3,2.7);
 67      book(_dalitz[7], "dalitz08",50,1.5,6.5,50,1.5,6.5);
 68      // KS0 KS0 eta'
 69      book(_h9_KS0KS0,"h09_KS0KS0",100,0.9,2.2);
 70      book(_h9_KS0eta,"h09_KS0eta",100,1.3,2.7);
 71      book(_dalitz[8], "dalitz09",50,1.5,6.5,50,1.5,6.5);
 72      // KL0 KL0 eta'
 73      book(_h10_KL0KL0,"h10_KL0KL0",100,0.9,2.2);
 74      book(_h10_KL0eta,"h10_KL0eta",100,1.3,2.7);
 75      book(_dalitz[9] ,  "dalitz10",50,1.5,6.5,50,1.5,6.5);
 76      // K+K- pi0
 77      book(_h11_KpKm ,"h11_KpKm" ,100,0.9,2.8);
 78      book(_h11_Kppi0,"h11_Kppi0",100,0.6,2.8);
 79      book(_h11_Kmpi0,"h11_Kmpi0",100,0.6,2.8);
 80      book(_dalitz[10],"dalitz11",50,0.3,6.5,50,0.3,6.5);
 81      // KS0 KS0 pi0
 82      book(_h12_KS0KS0,"h12_KS0KS0",100,0.9,2.8);
 83      book(_h12_KS0pi0,"h12_KS0pi0",100,0.6,2.8);
 84      book(_dalitz[11] ,"dalitz12",50,0.3,6.5,50,0.3,6.5);
 85      // KL0 KL0 pi0
 86      book(_h13_KL0KL0,"h13_KL0KL0",100,0.9,2.8);
 87      book(_h13_KL0pi0,"h13_KL0pi0",100,0.6,2.8);
 88      book(_dalitz[12] ,  "dalitz13",50,0.3,6.5,50,0.3,6.5);
 89      // KS0 K+ pi-
 90      book(_h14_KpKS0 ,"h14_KpKS0" ,100,0.9,2.8);
 91      book(_h14_Kppim ,"h14_Kppim" ,100,0.6,2.8);
 92      book(_h14_KS0pim,"h14_KS0pim",100,0.6,2.8);
 93      book(_dalitz[13] ,"dalitz14",50,0.3,6.5,50,0.3,6.5);
 94      // KS0 K- pi+
 95      book(_h15_KmKS0 ,"h15_KmKS0" ,100,0.9,2.8);
 96      book(_h15_Kmpip ,"h15_Kmpip" ,100,0.6,2.8);
 97      book(_h15_KS0pip,"h15_KS0pip",100,0.6,2.8);
 98      book(_dalitz[14] ,  "dalitz15",50,0.3,6.5,50,0.3,6.5);
 99      // KL0 K+ pi-
100      book(_h16_KpKL0 ,"h16_KpKL0" ,100,0.9,2.8);
101      book(_h16_Kppim ,"h16_Kppim" ,100,0.6,2.8);
102      book(_h16_KL0pim,"h16_KL0pim",100,0.6,2.8);
103      book(_dalitz[15] ,"dalitz16",50,0.3,6.5,50,0.3,6.5);
104      // KL0 K- pi+
105      book(_h17_KmKL0 ,"h17_KmKL0" ,100,0.9,2.8);
106      book(_h17_Kmpip ,"h17_Kmpip" ,100,0.6,2.8);
107      book(_h17_KL0pip,"h17_KL0pip",100,0.6,2.8);
108      book(_dalitz[16] ,"dalitz17",50,0.3,6.5,50,0.3,6.5);
109    }
110
111    /// Perform the per-event analysis
112    void analyze(const Event& event) {
113      static const map<PdgId,unsigned int> & mode1  = { { 211,1}, {-211,1}, { 221,1}};
114      static const map<PdgId,unsigned int> & mode2  = { { 111,2}, { 221,1}};
115      static const map<PdgId,unsigned int> & mode3  = { { 211,1}, {-211,1}, { 331,1}};
116      static const map<PdgId,unsigned int> & mode4  = { { 111,2}, { 331,1}};
117      static const map<PdgId,unsigned int> & mode5  = { { 321,1}, {-321,1}, { 221,1}};
118      static const map<PdgId,unsigned int> & mode6  = { { 310,2}, { 221,1}};
119      static const map<PdgId,unsigned int> & mode7  = { { 130,2}, { 221,1}};
120      static const map<PdgId,unsigned int> & mode8  = { { 321,1}, {-321,1}, { 331,1}};
121      static const map<PdgId,unsigned int> & mode9  = { { 310,2}, { 331,1}};
122      static const map<PdgId,unsigned int> & mode10 = { { 130,2}, { 331,1}};
123      static const map<PdgId,unsigned int> & mode11 = { { 321,1}, {-321,1}, { 111,1}};
124      static const map<PdgId,unsigned int> & mode12 = { { 310,2}, { 111,1}};
125      static const map<PdgId,unsigned int> & mode13 = { { 130,2}, { 111,1}};
126      static const map<PdgId,unsigned int> & mode14 = { { 321,1}, {-211,1}, { 310,1}};
127      static const map<PdgId,unsigned int> & mode15 = { {-321,1}, { 211,1}, { 310,1}};
128      static const map<PdgId,unsigned int> & mode16 = { { 321,1}, {-211,1}, { 130,1}};
129      static const map<PdgId,unsigned int> & mode17 = { {-321,1}, { 211,1}, { 130,1}};
130      DecayedParticles ETAC = apply<DecayedParticles>(event, "ETAC");
131      // loop over particles
132      for(unsigned int ix=0;ix<ETAC.decaying().size();++ix) {
133	if(ETAC.decaying()[ix].mass()<2.93 || ETAC.decaying()[ix].mass()>3.03) continue;
134	// pi+ pi- eta
135	if (ETAC.modeMatches(ix,3,mode1)) {
136	  const Particle & pip = ETAC.decayProducts()[ix].at( 211)[0];
137	  const Particle & pim = ETAC.decayProducts()[ix].at(-211)[0];
138	  const Particle & eta = ETAC.decayProducts()[ix].at( 221)[0];
139	  double mplus  = (pip.momentum()+eta.momentum()).mass2();
140	  double mminus = (pim.momentum()+eta.momentum()).mass2();
141	  double mpipi  = (pip.momentum()+pim.momentum()).mass2();
142       	  _h1_pippim->fill(sqrt(mpipi));
143       	  _h1_pipeta->fill(sqrt(mplus));
144       	  _h1_pimeta->fill(sqrt(mminus));
145       	  _dalitz[0]->fill(mplus,mminus);
146	}
147      	// pi0 pi0 eta
148	else if (ETAC.modeMatches(ix,3,mode2)) {
149	  const Particles & pi0 = ETAC.decayProducts()[ix].at( 111);
150	  const Particle  & eta = ETAC.decayProducts()[ix].at( 221)[0];
151	  double m1    = (pi0[0].momentum()+eta.momentum()).mass2();
152	  double m2    = (pi0[1].momentum()+eta.momentum()).mass2();
153	  double mpipi = (pi0[0].momentum()+pi0[1].momentum()).mass2();
154	  _h2_pi0pi0->fill(sqrt(mpipi));
155	  _h2_pi0eta->fill(sqrt(m1));
156	  _h2_pi0eta->fill(sqrt(m2));
157	  _dalitz[1]->fill(m1,m2);
158	  _dalitz[1]->fill(m2,m1);
159	}
160	// pi+ pi- eta'
161	else if (ETAC.modeMatches(ix,3,mode3)) {
162	  const Particle & pip  = ETAC.decayProducts()[ix].at( 211)[0];
163	  const Particle & pim  = ETAC.decayProducts()[ix].at(-211)[0];
164	  const Particle & etaP = ETAC.decayProducts()[ix].at( 331)[0];
165      	  double mplus  = (pip.momentum()+etaP.momentum()).mass2();
166      	  double mminus = (pim.momentum()+etaP.momentum()).mass2();
167      	  double mpipi  = (pip.momentum()+pim.momentum()).mass2();
168      	  _h3_pippim->fill(sqrt(mpipi));
169      	  _h3_pipeta->fill(sqrt(mplus));
170      	  _h3_pimeta->fill(sqrt(mminus));
171      	  _dalitz[2]->fill(mplus,mminus);
172      	}
173     	// pi0 pi0 eta'
174	else if (ETAC.modeMatches(ix,3,mode4)) {
175	  const Particles & pi0  = ETAC.decayProducts()[ix].at( 111);
176	  const Particle  & etaP = ETAC.decayProducts()[ix].at( 331)[0];
177       	  double m1    = (pi0[0].momentum()+etaP.momentum()).mass2();
178       	  double m2    = (pi0[1].momentum()+etaP.momentum()).mass2();
179       	  double mpipi = (pi0[0].momentum()+pi0[1].momentum()).mass2();
180       	  _h4_pi0pi0->fill(sqrt(mpipi));
181       	  _h4_pi0eta->fill(sqrt(m1));
182       	  _h4_pi0eta->fill(sqrt(m2));
183       	  _dalitz[3]->fill(m1,m2);
184       	  _dalitz[3]->fill(m2,m1);
185       	}
186      	// K+K- eta
187	else if (ETAC.modeMatches(ix,3,mode5)) {
188	  const Particle & Kp  = ETAC.decayProducts()[ix].at( 321)[0];
189	  const Particle & Km  = ETAC.decayProducts()[ix].at(-321)[0];
190	  const Particle & eta = ETAC.decayProducts()[ix].at( 221)[0];
191	  double mplus  = (Kp.momentum()+eta.momentum()).mass2();
192	  double mminus = (Km.momentum()+eta.momentum()).mass2();
193	  double mKK    = (Kp.momentum()+Km .momentum()).mass2();
194	  _h5_KpKm->fill(sqrt(mKK));
195	  _h5_Kpeta->fill(sqrt(mplus));
196	  _h5_Kmeta->fill(sqrt(mminus));
197	  _dalitz[4]->fill(mplus,mminus);
198	}
199      	// KS0 KS0 eta
200	else if (ETAC.modeMatches(ix,3,mode6)) {
201	  const Particles & KS0 = ETAC.decayProducts()[ix].at( 310);
202	  const Particle  & eta = ETAC.decayProducts()[ix].at( 221)[0];
203	  double m1    = (KS0[0].momentum()+eta.momentum()).mass2();
204	  double m2    = (KS0[1].momentum()+eta.momentum()).mass2();
205	  double mKSKS = (KS0[0].momentum()+KS0[1].momentum()).mass2();
206	  _h6_KS0KS0->fill(sqrt(mKSKS));
207	  _h6_KS0eta->fill(sqrt(m1));
208	  _h6_KS0eta->fill(sqrt(m2));
209	  _dalitz[5]->fill(m1,m2);
210	  _dalitz[5]->fill(m2,m1);
211	}
212	// KL0 KL0 eta
213	else if (ETAC.modeMatches(ix,3,mode7)) {
214	  const Particles & KL0 = ETAC.decayProducts()[ix].at( 130);
215	  const Particle  & eta = ETAC.decayProducts()[ix].at( 221)[0];
216      	  double m1    = (KL0[0].momentum()+eta.momentum()).mass2();
217      	  double m2    = (KL0[1].momentum()+eta.momentum()).mass2();
218      	  double mKLKL = (KL0[0].momentum()+KL0[1].momentum()).mass2();
219      	  _h7_KL0KL0->fill(sqrt(mKLKL));
220      	  _h7_KL0eta->fill(sqrt(m1));
221      	  _h7_KL0eta->fill(sqrt(m2));
222      	  _dalitz[6]->fill(m1,m2);
223      	  _dalitz[6]->fill(m2,m1);
224      	}
225 	// K+K- eta'
226	else if (ETAC.modeMatches(ix,3,mode8)) {
227	  const Particle & Kp   = ETAC.decayProducts()[ix].at( 321)[0];
228	  const Particle & Km   = ETAC.decayProducts()[ix].at(-321)[0];
229	  const Particle & etaP = ETAC.decayProducts()[ix].at( 331)[0];
230     	  double mplus  = (Kp.momentum()+etaP.momentum()).mass2();
231     	  double mminus = (Km.momentum()+etaP.momentum()).mass2();
232     	  double mKK    = (Kp.momentum()+Km .momentum()).mass2();
233     	  _h8_KpKm->fill(sqrt(mKK));
234     	  _h8_Kpeta->fill(sqrt(mplus));
235     	  _h8_Kmeta->fill(sqrt(mminus));
236     	  _dalitz[7]->fill(mplus,mminus);
237      	}
238	// KS0 KS0 eta'
239	else if (ETAC.modeMatches(ix,3,mode9)) {
240	  const Particles & KS0  = ETAC.decayProducts()[ix].at( 310);
241	  const Particle  & etaP = ETAC.decayProducts()[ix].at( 331)[0];
242	  double m1    = (KS0[0].momentum()+etaP.momentum()).mass2();
243	  double m2    = (KS0[1].momentum()+etaP.momentum()).mass2();
244	  double mKSKS = (KS0[0].momentum()+KS0[1].momentum()).mass2();
245	  _h9_KS0KS0->fill(sqrt(mKSKS));
246	  _h9_KS0eta->fill(sqrt(m1));
247	  _h9_KS0eta->fill(sqrt(m2));
248	  _dalitz[8]->fill(m1,m2);
249	  _dalitz[8]->fill(m2,m1);
250       	}
251  	// KL0 KL0 eta'
252	else if (ETAC.modeMatches(ix,3,mode10)) {
253	  const Particles & KL0  = ETAC.decayProducts()[ix].at( 130);
254	  const Particle  & etaP = ETAC.decayProducts()[ix].at( 331)[0];
255	  double m1    = (KL0[0].momentum()+etaP.momentum()).mass2();
256	  double m2    = (KL0[1].momentum()+etaP.momentum()).mass2();
257	  double mKLKL = (KL0[0].momentum()+KL0[1].momentum()).mass2();
258	  _h10_KL0KL0->fill(sqrt(mKLKL));
259	  _h10_KL0eta->fill(sqrt(m1));
260	  _h10_KL0eta->fill(sqrt(m2));
261	  _dalitz[9]->fill(m1,m2);
262	  _dalitz[9]->fill(m2,m1);
263	}
264       	// K+ K- pi0
265	else if (ETAC.modeMatches(ix,3,mode11)) {
266	  const Particle & Kp  = ETAC.decayProducts()[ix].at( 321)[0];
267	  const Particle & Km  = ETAC.decayProducts()[ix].at(-321)[0];
268	  const Particle & pi0 = ETAC.decayProducts()[ix].at( 111)[0];
269	  double mplus  = (Kp.momentum()+pi0.momentum()).mass2();
270	  double mminus = (Km.momentum()+pi0.momentum()).mass2();
271	  double mKK    = (Kp.momentum()+Km .momentum()).mass2();
272	  _h11_KpKm->fill(sqrt(mKK));
273	  _h11_Kppi0->fill(sqrt(mplus));
274	  _h11_Kmpi0->fill(sqrt(mminus));
275	  _dalitz[10]->fill(mplus,mminus);
276       	}
277      	// KS0 KS0 pi0
278	else if (ETAC.modeMatches(ix,3,mode12)) {
279	  const Particles & KS0 = ETAC.decayProducts()[ix].at( 310);
280	  const Particle  & pi0 = ETAC.decayProducts()[ix].at( 111)[0];
281	  double mplus  = (KS0[0].momentum()+pi0.momentum()).mass2();
282	  double mminus = (KS0[1].momentum()+pi0.momentum()).mass2();
283	  double mKK    = (KS0[0].momentum()+KS0[1].momentum()).mass2();
284	  _h12_KS0KS0->fill(sqrt(mKK));
285	  _h12_KS0pi0->fill(sqrt(mplus));
286	  _h12_KS0pi0->fill(sqrt(mminus));
287	  _dalitz[11]->fill(mplus,mminus);
288	}
289       	// KL0 KL0 pi0
290	else if (ETAC.modeMatches(ix,3,mode13)) {
291	  const Particles & KL0 = ETAC.decayProducts()[ix].at( 130);
292	  const Particle  & pi0 = ETAC.decayProducts()[ix].at( 111)[0];
293	  double mplus  = (KL0[0].momentum()+pi0.momentum()).mass2();
294	  double mminus = (KL0[1].momentum()+pi0.momentum()).mass2();
295	  double mKK    = (KL0[0].momentum()+KL0[1].momentum()).mass2();
296	  _h13_KL0KL0->fill(sqrt(mKK));
297	  _h13_KL0pi0->fill(sqrt(mplus));
298	  _h13_KL0pi0->fill(sqrt(mminus));
299	  _dalitz[12]->fill(mplus,mminus);
300      	}
301       	// KS0 K+ pi-
302	else if (ETAC.modeMatches(ix,3,mode14)) {
303	  const Particle & KS0 = ETAC.decayProducts()[ix].at( 310)[0];
304	  const Particle & Kp  = ETAC.decayProducts()[ix].at( 321)[0];
305	  const Particle & pim = ETAC.decayProducts()[ix].at(-211)[0];
306	  double mplus  = (Kp.momentum()+pim.momentum()).mass2();
307	  double mminus = (KS0.momentum()+pim.momentum()).mass2();
308	  double mKK    = (KS0.momentum()+Kp.momentum()).mass2();
309	  _h14_KpKS0->fill(sqrt(mKK));
310	  _h14_Kppim->fill(sqrt(mplus));
311	  _h14_KS0pim->fill(sqrt(mminus));
312	  _dalitz[13]->fill(mplus,mminus);
313	}
314	// KS0 K- pi+
315	else if (ETAC.modeMatches(ix,3,mode15)) {
316	  const Particle & KS0 = ETAC.decayProducts()[ix].at( 310)[0];
317	  const Particle & Km  = ETAC.decayProducts()[ix].at(-321)[0];
318	  const Particle & pip = ETAC.decayProducts()[ix].at( 211)[0];
319       	  double mplus  = (Km.momentum()+pip.momentum()).mass2();
320       	  double mminus = (KS0.momentum()+pip.momentum()).mass2();
321       	  double mKK    = (KS0.momentum()+Km.momentum()).mass2();
322       	  _h15_KmKS0->fill(sqrt(mKK));
323       	  _h15_Kmpip->fill(sqrt(mplus));
324       	  _h15_KS0pip->fill(sqrt(mminus));
325       	  _dalitz[14]->fill(mplus,mminus);
326       	}
327       	// KL0 K+ pi-
328	else if (ETAC.modeMatches(ix,3,mode16)) {
329	  const Particle & KL0 = ETAC.decayProducts()[ix].at( 130)[0];
330	  const Particle & Kp  = ETAC.decayProducts()[ix].at( 321)[0];
331	  const Particle & pim = ETAC.decayProducts()[ix].at(-211)[0];
332	  double mplus  = (Kp.momentum()+pim.momentum()).mass2();
333	  double mminus = (KL0.momentum()+pim.momentum()).mass2();
334	  double mKK    = (KL0.momentum()+Kp.momentum()).mass2();
335	  _h16_KpKL0->fill(sqrt(mKK));
336	  _h16_Kppim->fill(sqrt(mplus));
337	  _h16_KL0pim->fill(sqrt(mminus));
338	  _dalitz[15]->fill(mplus,mminus);
339      	}
340      	// KL0 K- pip
341	else if (ETAC.modeMatches(ix,3,mode17)) {
342	  const Particle & KL0 = ETAC.decayProducts()[ix].at( 130)[0];
343	  const Particle & Km  = ETAC.decayProducts()[ix].at(-321)[0];
344	  const Particle & pip = ETAC.decayProducts()[ix].at( 211)[0];
345	  double mplus  = (Km.momentum()+pip.momentum()).mass2();
346	  double mminus = (KL0.momentum()+pip.momentum()).mass2();
347	  double mKK    = (KL0.momentum()+Km.momentum()).mass2();
348	  _h17_KmKL0->fill(sqrt(mKK));
349	  _h17_Kmpip->fill(sqrt(mplus));
350	  _h17_KL0pip->fill(sqrt(mminus));
351	  _dalitz[16]->fill(mplus,mminus);
352	}
353      }
354    }
355
356
357    /// Normalise histograms etc., after the run
358    void finalize() {
359      normalize(_h1_pippim);
360      normalize(_h1_pipeta);
361      normalize(_h1_pimeta);
362      normalize(_h2_pi0pi0);
363      normalize(_h2_pi0eta);
364      normalize(_h3_pippim);
365      normalize(_h3_pipeta);
366      normalize(_h3_pimeta);
367      normalize(_h4_pi0pi0);
368      normalize(_h4_pi0eta);
369      normalize(_h5_KpKm);
370      normalize(_h5_Kpeta);
371      normalize(_h5_Kmeta);
372      normalize(_h6_KS0KS0);
373      normalize(_h6_KS0eta);
374      normalize(_h7_KL0KL0);
375      normalize(_h7_KL0eta);
376      normalize(_h8_KpKm);
377      normalize(_h8_Kpeta);
378      normalize(_h8_Kmeta);
379      normalize(_h9_KS0KS0);
380      normalize(_h9_KS0eta);
381      normalize(_h10_KL0KL0);
382      normalize(_h10_KL0eta);
383      normalize(_h11_KpKm );
384      normalize(_h11_Kppi0);
385      normalize(_h11_Kmpi0);
386      normalize(_h12_KS0KS0);
387      normalize(_h12_KS0pi0);
388      normalize(_h13_KL0KL0);
389      normalize(_h13_KL0pi0);
390      normalize(_h14_KpKS0);
391      normalize(_h14_Kppim);
392      normalize(_h14_KS0pim);
393      normalize(_h15_KmKS0);
394      normalize(_h15_Kmpip);
395      normalize(_h15_KS0pip);
396      normalize(_h16_KpKL0);
397      normalize(_h16_Kppim);
398      normalize(_h16_KL0pim);
399      normalize(_h17_KmKL0);
400      normalize(_h17_Kmpip);
401      normalize(_h17_KL0pip);
402      for(unsigned int ix=0;ix<17;++ix)
403	normalize(_dalitz[ix]);
404    }
405
406    /// @}
407
408
409    /// @name Histograms
410    /// @{
411    Histo1DPtr _h1_pippim,_h1_pipeta,_h1_pimeta;
412    Histo1DPtr _h2_pi0pi0,_h2_pi0eta;
413    Histo1DPtr _h3_pippim,_h3_pipeta,_h3_pimeta;
414    Histo1DPtr _h4_pi0pi0,_h4_pi0eta;
415    Histo1DPtr _h5_KpKm,_h5_Kpeta,_h5_Kmeta;
416    Histo1DPtr _h6_KS0KS0,_h6_KS0eta;
417    Histo1DPtr _h7_KL0KL0,_h7_KL0eta;
418    Histo1DPtr _h8_KpKm,_h8_Kpeta,_h8_Kmeta;
419    Histo1DPtr _h9_KS0KS0,_h9_KS0eta;
420    Histo1DPtr _h10_KL0KL0,_h10_KL0eta;
421    Histo1DPtr _h11_KpKm,_h11_Kppi0,_h11_Kmpi0;
422    Histo1DPtr _h12_KS0KS0,_h12_KS0pi0;
423    Histo1DPtr _h13_KL0KL0,_h13_KL0pi0;
424    Histo1DPtr _h14_KpKS0,_h14_Kppim,_h14_KS0pim;
425    Histo1DPtr _h15_KmKS0,_h15_Kmpip,_h15_KS0pip;
426    Histo1DPtr _h16_KpKL0,_h16_Kppim,_h16_KL0pim;
427    Histo1DPtr _h17_KmKL0,_h17_Kmpip,_h17_KL0pip;
428    Histo2DPtr _dalitz[17];
429    /// @}
430
431  };
432
433
434  RIVET_DECLARE_PLUGIN(MC_DALITZ_ETAC);
435
436}