BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtD0toKSpi0omegaPlot.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of models developed at BES collaboration
5// based on the EvtGen framework. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/BesCopyright
9// Copyright (A) 2006 Ping Rong-Gang @IHEP
10//
11// Module: EvtD0toKSpi0omegaPlot.cc
12//
13// Modification history:
14//
15// Liaoyuan Dong August, 2022 Module created
16//
17//------------------------------------------------------------------------
25#include <stdlib.h>
26#include <string>
27
28#include "TApplication.h"
29#include "TAxis.h"
30#include "TFile.h"
31#include "TH1.h"
32#include "TH2.h"
33#include "TROOT.h"
34using std::endl;
35
37
38void EvtD0toKSpi0omegaPlot::getName( std::string& model_name ) {
39 model_name = "D0toKSpi0omegaPlot";
40}
41
43
45
46 checkNArg( 0 );
47
48 bool idN = getDaugs()[0] == EvtPDL::getId( std::string( "K_S0" ) ) ||
49 getDaugs()[0] == EvtPDL::getId( std::string( "K_L0" ) );
50 bool idKs = getDaugs()[1] == EvtPDL::getId( std::string( "pi0" ) );
51 bool idPi = getDaugs()[2] == EvtPDL::getId( std::string( "omega" ) );
52 if ( !( idN && idKs && idPi ) )
53 {
54 std::cout << "EvtD0toKSpi0omegaPlot: the daughter sequence should be K_S0/K_L0 pi0 omega"
55 << std::endl;
56 abort();
57 }
58
60
61 Xmin = 0.400689;
62 Xmax = 1.17072;
63 Xwid = 0.0962544;
64 Ymin = 0.842724;
65 Ymax = 1.86869;
66 Ywid = 0.128246;
67 avm1 = 0.55;
68 double HisPDFtmp[10][10] = {
69 { 0, 0, 0, -0.045, 0, 0, 0, 0, 0, 0 },
70 { 0, 0, 0.00833333, 0.00315657, 0.0461656, 0.0871429, 0, 0, 0, 0 },
71 { -0.225, 0, 0.032197, 0.0104286, 0.0537143, 0.105189, 0.0856757, 0.0108333, 0.00384615,
72 0 },
73 { -0.075, 0.0677734, 0.0462291, 0.0108333, 0.10436, 0.15014, 0.125556, 0.0151667, 0.047,
74 0 },
75 { 0, 0.0615854, 0.0972857, 0.0986446, 0.135901, 0.10452, 0.147305, 0.161376, 0.117778,
76 0.065 },
77 { 0, 0.245879, 0.13997, 0.173571, 0.101585, 0.061244, 0.158564, 0.182229, 0.170783,
78 0.55 },
79 { 0, 0.0411458, 0.0598214, 0.043099, 0.0399235, 0.131534, 0.107424, 0.107069, 0.087931,
80 0 },
81 { 0, 0, 0.00392157, 0.09375, 0.123066, 0.145382, 0.0534591, 0.0191176, 0, 0 },
82 { 0, 0, 0.0458333, 0.0330556, 0.101357, 0.0558559, 0.0989362, 0.5, 0, 0 },
83 { 0, 0, 0, -0.3375, 0.025, -0.045, 0, 0, 0, 0 } };
84
85 for ( int i = 0; i < 10; i++ )
86 {
87 for ( int j = 0; j < 10; j++ ) { HisPDF[i][j] = HisPDFtmp[i][j]; }
88 }
89}
90
92
94
95loop:
97
98 EvtParticle *id1, *id2, *id3;
99 EvtVector4R pd1, pd2, pd3;
100 double xmass13, xmass12, xmass23;
101
102 id1 = p->getDaug( 0 );
103 id2 = p->getDaug( 1 );
104 id3 = p->getDaug( 2 );
105
106 pd1 = id1->getP4Lab();
107 pd2 = id2->getP4Lab();
108 pd3 = id3->getP4Lab();
109
110 xmass12 = ( pd1 + pd2 ).mass() * ( pd1 + pd2 ).mass(); // M_ksopi0
111 // xmass13=(pd1+pd3).mass()*(pd1+pd3).mass(); // M_ksow
112 xmass23 = ( pd2 + pd3 ).mass() * ( pd2 + pd3 ).mass(); // M_pi0w
113
114 int xbin = FindXBin( xmass12 );
115 int ybin = FindYBin( xmass23 );
116 double xratio12 = HisPDF[xbin][ybin] / avm1;
117
118 if ( xratio12 <= 0 ) goto loop;
119
120 double rd12 = EvtRandom::Flat( 0.0, 1.0 );
121 if ( rd12 > xratio12 ) goto loop;
122
123 return;
124}
125
127 if ( mass2 < Xmin ) { return 0; }
128 else if ( mass2 >= Xmax ) { return 9; }
129 else { return int( ( mass2 - Xmin ) / Xwid ) + 1; }
130}
131
133 if ( mass2 < Ymin ) { return 0; }
134 else if ( mass2 >= Ymax ) { return 9; }
135 else { return int( ( mass2 - Ymin ) / Ywid ) + 1; }
136}
double mass
void getName(std::string &name)
void decay(EvtParticle *p)
EvtId getParentId()
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
static EvtSpinType::spintype getSpinType(EvtId i)
Definition EvtPDL.hh:66
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
EvtVector4R getP4Lab()
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
static double Flat()
Definition EvtRandom.cc:69