BOSS 7.1.1
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//------------------------------------------------------------------------
21#include "EvtGenBase/EvtPDL.hh"
25#include <stdlib.h>
26#include <string>
27
28#include "TFile.h"
29#include "TApplication.h"
30#include "TROOT.h"
31#include "TH1.h"
32#include "TH2.h"
33#include "TAxis.h"
34using std::endl;
35
37
38void EvtD0toKSpi0omegaPlot::getName(std::string& model_name){
39 model_name="D0toKSpi0omegaPlot";
40}
41
45
47
48 checkNArg(0);
49
50 bool idN = getDaugs()[0]==EvtPDL::getId(std::string("K_S0"))|| getDaugs()[0]==EvtPDL::getId(std::string("K_L0"));
51 bool idKs = getDaugs()[1]==EvtPDL::getId(std::string("pi0")) ;
52 bool idPi = getDaugs()[2]==EvtPDL::getId(std::string("omega"));
53 if(!(idN && idKs && idPi ) ){std::cout<<"EvtD0toKSpi0omegaPlot: the daughter sequence should be K_S0/K_L0 pi0 omega"<<std::endl;abort();}
54
56
57Xmin = 0.400689;
58Xmax = 1.17072;
59Xwid = 0.0962544;
60Ymin = 0.842724;
61Ymax = 1.86869;
62Ywid = 0.128246;
63avm1 = 0.55;
64double HisPDFtmp[10][10] =
65{
66{0, 0, 0, -0.045, 0, 0, 0, 0, 0, 0},
67{0, 0, 0.00833333, 0.00315657, 0.0461656, 0.0871429, 0, 0, 0, 0},
68{-0.225, 0, 0.032197, 0.0104286, 0.0537143, 0.105189, 0.0856757, 0.0108333, 0.00384615, 0},
69{-0.075, 0.0677734, 0.0462291, 0.0108333, 0.10436, 0.15014, 0.125556, 0.0151667, 0.047, 0},
70{0, 0.0615854, 0.0972857, 0.0986446, 0.135901, 0.10452, 0.147305, 0.161376, 0.117778, 0.065},
71{0, 0.245879, 0.13997, 0.173571, 0.101585, 0.061244, 0.158564, 0.182229, 0.170783, 0.55},
72{0, 0.0411458, 0.0598214, 0.043099, 0.0399235, 0.131534, 0.107424, 0.107069, 0.087931, 0},
73{0, 0, 0.00392157, 0.09375, 0.123066, 0.145382, 0.0534591, 0.0191176, 0, 0},
74{0, 0, 0.0458333, 0.0330556, 0.101357, 0.0558559, 0.0989362, 0.5, 0, 0},
75{0, 0, 0, -0.3375, 0.025, -0.045, 0, 0, 0, 0}
76};
77
78for(int i=0;i<10;i++){
79 for (int j=0; j<10; j++) {
80 HisPDF[i][j] = HisPDFtmp[i][j];
81 }
82}
83
84}
85
89
91
92loop:
94
95 EvtParticle *id1,*id2,*id3;
96 EvtVector4R pd1,pd2,pd3;
97 double xmass13,xmass12, xmass23;
98
99 id1 =p->getDaug(0);
100 id2 =p->getDaug(1);
101 id3 =p->getDaug(2);
102
103 pd1 =id1->getP4Lab();
104 pd2 =id2->getP4Lab();
105 pd3 =id3->getP4Lab();
106
107 xmass12=(pd1+pd2).mass()*(pd1+pd2).mass(); // M_ksopi0
108// xmass13=(pd1+pd3).mass()*(pd1+pd3).mass(); // M_ksow
109 xmass23=(pd2+pd3).mass()*(pd2+pd3).mass(); // M_pi0w
110
111 int xbin = FindXBin(xmass12);
112 int ybin = FindYBin(xmass23);
113 double xratio12=HisPDF[xbin][ybin]/avm1;
114
115 if(xratio12 <=0) goto loop;
116
117 double rd12=EvtRandom::Flat(0.0, 1.0);
118 if(rd12>xratio12) goto loop;
119
120 return ;
121}
122
124 if (mass2 < Xmin) { return 0; }
125 else if (mass2>=Xmax) { return 9; }
126 else { return int((mass2-Xmin)/Xwid)+1; }
127}
128
130 if (mass2 < Ymin) { return 0; }
131 else if (mass2>=Ymax) { return 9; }
132 else { return int((mass2-Ymin)/Ywid)+1; }
133}
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:61
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:287
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:74