Rivet analyses referenceBESIII_2018_I1623555Kinematic distributions in the decay $\eta^\prime\to\eta\pi^0\pi^0$ and $\pi^+\pi^-\pi^0$Experiment: BESIII (BEPC) Inspire ID: 1623555 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of kinematic distributions in the decay $\eta^\prime\to\eta\pi^0\pi^0$ and $\pi^+\pi^-\pi^0$. Source code: BESIII_2018_I1623555.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' -> eta pi0 pi0 or eta pi+ pi-
10 class BESIII_2018_I1623555 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2018_I1623555);
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==PID::ETAPRIME);
24 declare(ufs, "UFS");
25 DecayedParticles ETA(ufs);
26 ETA.addStable(PID::PI0);
27 ETA.addStable(PID::K0S);
28 ETA.addStable(PID::ETA);
29 declare(ETA, "ETA");
30 // histograms
31 for(unsigned int ix=0;ix<4;++ix) {
32 for(unsigned int iy=0;iy<2;++iy) {
33 if(ix<2)
34 book(_h[ix][iy],1+ix,1,1+iy);
35 else
36 book(_h[ix][iy],"TMP/h_"+toString(ix+1)+"_"+toString(iy+1),refData(1+ix,1,1+iy));
37 }
38 }
39 }
40
41
42 /// Perform the per-event analysis
43 void analyze(const Event& event) {
44 static const map<PdgId,unsigned int> & mode1 = { {221,1}, { 111,2} };
45 static const map<PdgId,unsigned int> & mode2 = { {221,1}, { 211,1}, {-211,1} };
46 DecayedParticles ETA = apply<DecayedParticles>(event, "ETA");
47 // loop over particles
48 for(unsigned int ix=0;ix<ETA.decaying().size();++ix) {
49 // eta' -> 2pi0 eta
50 if ( ETA.modeMatches(ix,3,mode1) ) {
51 const Particle & eta = ETA.decayProducts()[ix].at(221)[0];
52 const Particles & pi0 = ETA.decayProducts()[ix].at(111);
53 double s1 = (eta .momentum()+pi0[0].momentum()).mass2();
54 double s2 = (eta .momentum()+pi0[1].momentum()).mass2();
55 double s3 = (pi0[0].momentum()+pi0[1].momentum()).mass2();
56 double mOut = eta.mass()+pi0[0].mass()+pi0[1].mass();
57 double Q = ETA.decaying()[ix].mass()-mOut;
58 double X = sqrt(3.)/2./ETA.decaying()[ix].mass()/Q*fabs(s1-s2);
59 double Y = mOut/2./Q/pi0[0].mass()/ETA.decaying()[ix].mass()*
60 (sqr(ETA.decaying()[ix].mass()-eta.mass())-s3)-1.;
61 _h[1][0]->fill(X);
62 _h[1][1]->fill(Y);
63 _h[2][0]->fill(sqrt(s3));
64 _h[3][0]->fill(sqrt(s1));
65 _h[3][0]->fill(sqrt(s2));
66 }
67 // eta' -> pi+ pi- eta
68 else if ( ETA.modeMatches(ix,3,mode2) ) {
69 const Particle & eta = ETA.decayProducts()[ix].at( 221)[0];
70 const Particle & pip = ETA.decayProducts()[ix].at( 211)[0];
71 const Particle & pim = ETA.decayProducts()[ix].at(-211)[0];
72 double s1 = (eta.momentum()+pim.momentum()).mass2();
73 double s2 = (eta.momentum()+pip.momentum()).mass2();
74 double s3 = (pim.momentum()+pip.momentum()).mass2();
75 double mOut = eta.mass()+pip.mass()+pim.mass();
76 double Q = ETA.decaying()[ix].mass()-mOut;
77 double X = sqrt(3.)/2./ETA.decaying()[ix].mass()/Q*(s1-s2);
78 double Y = mOut/2./Q/pip.mass()/ETA.decaying()[ix].mass()*
79 (sqr(ETA.decaying()[ix].mass()-eta.mass())-s3)-1.;
80 _h[0][0]->fill(X);
81 _h[0][1]->fill(Y);
82 _h[2][1]->fill(sqrt(s3));
83 _h[3][1]->fill(sqrt(s1));
84 _h[3][1]->fill(sqrt(s2));
85 }
86 }
87 }
88
89
90 /// Normalise histograms etc., after the run
91 void finalize() {
92 vector<double> phsp[2][2] = {{{0.4958173595002211,1.9619294234849218,2.769343347436134,3.3754760296363586,3.878496706355459,4.314870895705234,4.70312212702334,
93 5.054215323586935,5.375279853746009,5.671257584168677,5.9457370820689865,6.201417631268466,6.44038618211146,6.664291971724481,
94 6.874461576204892,7.071977500668689,7.257733504274686,7.432474552616055,7.596826304190006,7.751317284426186,7.896395833035851,
95 8.032443239272407,8.15978404588282,8.278694215122778,8.389407655537537,8.492121473687217,8.587000220318588,8.674179332711457,
96 8.753767925627045,8.825851046861633,8.89049148607537,8.947731204719013,8.997592438695575,9.040078512568408,9.075174393713954,
97 9.102847006109055,9.123045315893089,9.135700194014767,9.140724054787638,9.13801026269368,9.127432292951557,9.108842623839646,
98 9.082071330112504,9.046924336557808,9.003181278149844,8.950592897494763,8.888877890152871,8.81771908233236,8.73675879108212,
99 8.645593171181584,8.543765290652805,8.430756591127544,8.305976269528442,8.168747947286356,8.018292746910289,7.853707531862115,
100 7.673936516314864,7.477733601051388,7.26361143821108,7.029771003081123,6.774001658321787,6.493534946280308,6.184822709548511,
101 5.843185002115959,5.462219359013247,5.03273598213602,4.540644424927434,3.962141200519649,3.2500824294265236,2.274198460941213},
102 {1.3100886831082426,2.59729040074684,3.381299983575231,4.000787719010948,4.524937634762839,4.983978373623454,5.3944278031342705,
103 5.7664948628407044,6.107010795600696,6.4208084604346265,6.711450584339649,6.981647651964704,7.233513384923498,7.468728930123908,
104 7.688652731356644,7.894396548261923,8.08687954469034,8.266867695860503,8.435003085521664,8.591826066910466,8.737792275150909,
105 8.87328585137746,8.998629828980688,9.114094358145204,9.219903257387287,9.31623925009379,9.403248151226878,9.481042202232233,
106 9.549702702777214,9.609282050887044,9.65980527467064,9.701271116566254,9.733652713050626,9.756897897684288,9.770929142161672,
107 9.775643137844083,9.770910008327416,9.756572131216842,9.732442533692973,9.698302810793034,9.653900496532554,9.598945794679436,
108 9.533107546305716,9.456008272606084,9.367218080231398,9.266247147243595,9.152536412939227,9.025445962449908,8.884240409151237,
109 8.728070306173185,8.555948217222312,8.366717471550364,8.15901069111041,7.931193686998973,7.681287872309445,7.4068601618098855,
110 7.10486189676173,6.771384421838216,6.40127126802985,5.987467571923839,5.519847572730394,4.982887990977129,4.3503709370253265,
111 3.5703872094268094,2.4995596481282525}},
112 {{0.629013798471671,2.1866118268994468,3.0368605864518217,3.6771490374606355,4.207007718753613,4.66452836989242,5.069326043954977,
113 5.433115314702656,5.763565023040947,6.066021922820969,6.344389357111023,6.601618652129766,6.8400036740352945,7.061367217314588,
114 7.26718418933565,7.458665984819544,7.636820030022579,7.8024928814423395,7.95640210521801,8.099160303672743,8.231293520219943,
115 8.353255538761486,8.46543913064336,8.568184994935699,8.661788929350681,8.74650762487693,8.82256337558689,8.890147922266685,
116 8.949425595529279,9.000535884920497,9.043595531165272,9.078700216339863,9.105925909443517,9.12532991118698,9.136951630805799,
117 9.14081311859039,9.13691937002785,9.125258410513581,9.105801163130566,9.078501095666466,9.043293636510745,9.000095341996824,
118 8.94880278973171,8.889291163010668,8.821412479942126,8.744993406613599,8.659832575438015,8.565697306248044,8.462319596663876,
119 8.34939120675572,8.226557606697057,8.093410478498992,7.949478354280492,7.794214818859097,7.626983480150643,7.4470385789742775,
120 7.253499607649825,7.045317527593014,6.821228932575126,6.5796924547567555,6.318798205008482,6.036134778147875,5.728586585466067,
121 5.392010752627947,5.020692096532121,4.606354301328156,4.136181095725286,3.5882580110647293,2.918423656686351,1.9999831254556695},
122 { 0.23873578916690366,2.0500489551803267,3.1201857892092946,3.8789686604099263,4.493437017697335,5.017527030470675,5.477296385866756,
123 5.887761534500594,6.258527506968923,6.596182009973793,6.905475510266001,7.189965315739698,7.452394570462295,7.694928593219781,
124 7.919309232207209,8.126959552432252,8.319057099733737,8.496586547202293,8.660378387673369,8.811137925405763,8.949467363242505,
125 9.075882871818438,9.190827942723814,9.294683942100447,9.387778521184131,9.470392361301753,9.542764605201127,9.605097236829916,
126 9.657558606430447,9.70028624956067,9.733389112310816,9.756949267063849,9.771023181187681,9.775642583275978,9.770814956656556,
127 9.756523676842061,9.732727797572638,9.699361478358194,9.65633303426016,9.603523575310243,9.540785187582555,9.467938589449417,
128 9.384770173568707,9.29102831578889,9.186418793789159,9.070599107145938,8.943171421166314,8.803673761129039,8.651568949209869,
129 8.48623058428439,8.306925084850821,8.11278839862622,7.902795347561311,7.6757185844345175,7.4300725389000055,7.16403506942705,
130 6.875334930613836,6.561084820602421,6.217523820876327,5.839600487397429,5.420255818696847,4.949088517083736,4.409586318075515,
131 3.772390577191644,2.973878032379262,1.7830364647510994,0.05380912975709777}}};
132
133 // normalize histograms
134 for(unsigned int ix=0;ix<4;++ix) {
135 for(unsigned int iy=0;iy<2;++iy) {
136 normalize(_h[ix][iy]);
137 }
138 }
139 // last two plots convert to scatter and normalize to phase space volume in bin
140 double step = 0.002;
141 for(unsigned int ix=0;ix<2;++ix) {
142 for(unsigned int iy=0;iy<2;++iy) {
143 // convert to scatter
144 Estimate1DPtr tmp;
145 book(tmp,3+ix,1,1+iy);
146 barchart(_h[ix+2][iy],tmp);
147 // divide by phase space volume
148 for (auto& b : tmp->bins()) {
149 b.scale(1./phsp[ix][iy][b.index()-1]/step);
150 }
151 }
152 }
153 }
154
155 /// @}
156
157
158 /// @name Histograms
159 /// @{
160 Histo1DPtr _h[4][2];
161 /// @}
162
163
164 };
165
166
167 RIVET_DECLARE_PLUGIN(BESIII_2018_I1623555);
168
169}
|