13 #include <thrust/count.h> 23 int main(
int argc,
char **argv) {
36 Variable RhoMass(
"rho_mass", 0.77526, 0.01, 0.7, 0.8);
37 Variable RhoWidth(
"rho_width", 0.1478, 0.01, 0.1, 0.2);
38 Variable KstarM(
"KstarM", 0.89581, 0.01, 0.9, 0.1);
39 Variable KstarW(
"KstarW", 0.0474, 0.01, 0.1, 0.2);
40 Variable f600M(
"f600M", 0.519, 0.01, 0.75, 0.85);
41 Variable f600W(
"f600W", 0.454, 0.01, 0.75, 0.85);
42 Variable a1M(
"a1M", 1.23, 0.01, 1.2, 1.3);
43 Variable a1W(
"a1W", 0.42, 0.01, 0.37, 0.47);
44 Variable K1M(
"K1M", 1.272, 0.01, 1.2, 1.3);
45 Variable K1W(
"K1W", 0.09, 0.01, 0.08, 0.1);
46 Variable K1430M(
"K1430M", 1.414, 0.01, 1.4, 1.5);
47 Variable K1430W(
"K1430W", .29, 0.01, 0.25, 0.35);
50 std::vector<SpinFactor *> SFKRS;
51 SFKRS.push_back(
new SpinFactor(
"SF", SF_4Body::DtoV1V2_V1toP1P2_V2toP3P4_S, 0, 1, 2, 3));
52 SFKRS.push_back(
new SpinFactor(
"SF", SF_4Body::DtoV1V2_V1toP1P2_V2toP3P4_S, 3, 1, 2, 0));
54 std::vector<SpinFactor *> SFKRP;
55 SFKRP.push_back(
new SpinFactor(
"SF", SF_4Body::DtoV1V2_V1toP1P2_V2toP3P4_P, 0, 1, 2, 3));
56 SFKRP.push_back(
new SpinFactor(
"SF", SF_4Body::DtoV1V2_V1toP1P2_V2toP3P4_P, 3, 1, 2, 0));
58 std::vector<SpinFactor *> SFKRD;
59 SFKRD.push_back(
new SpinFactor(
"SF", SF_4Body::DtoV1V2_V1toP1P2_V2toP3P4_D, 0, 1, 2, 3));
60 SFKRD.push_back(
new SpinFactor(
"SF", SF_4Body::DtoV1V2_V1toP1P2_V2toP3P4_D, 3, 1, 2, 0));
62 std::vector<SpinFactor *> SFKF;
63 SFKF.push_back(
new SpinFactor(
"SF", SF_4Body::DtoVS_VtoP1P2_StoP3P4, 2, 3, 0, 1));
64 SFKF.push_back(
new SpinFactor(
"SF", SF_4Body::DtoVS_VtoP1P2_StoP3P4, 2, 0, 3, 1));
66 std::vector<SpinFactor *> SFKK;
67 SFKK.push_back(
new SpinFactor(
"SF", SF_4Body::DtoAP1_AtoSP2_StoP3P4, 0, 1, 3, 2));
68 SFKK.push_back(
new SpinFactor(
"SF", SF_4Body::DtoAP1_AtoSP2_StoP3P4, 3, 1, 0, 2));
70 std::vector<SpinFactor *> SFK1R;
71 SFK1R.push_back(
new SpinFactor(
"SF", SF_4Body::DtoAP1_AtoVP2_VtoP3P4, 3, 2, 0, 1));
72 SFK1R.push_back(
new SpinFactor(
"SF", SF_4Body::DtoAP1_AtoVP2_VtoP3P4, 0, 2, 3, 1));
74 std::vector<SpinFactor *> SFA1R;
75 SFA1R.push_back(
new SpinFactor(
"SF", SF_4Body::DtoAP1_AtoVP2_VtoP3P4, 2, 3, 0, 1));
76 SFA1R.push_back(
new SpinFactor(
"SF", SF_4Body::DtoAP1_AtoVP2_VtoP3P4, 2, 0, 3, 1));
78 std::vector<SpinFactor *> SFA1RD;
79 SFA1RD.push_back(
new SpinFactor(
"SF", SF_4Body::DtoAP1_AtoVP2Dwave_VtoP3P4, 2, 3, 0, 1));
80 SFA1RD.push_back(
new SpinFactor(
"SF", SF_4Body::DtoAP1_AtoVP2Dwave_VtoP3P4, 2, 0, 3, 1));
83 std::vector<Lineshape *> LSKRS;
89 std::vector<Lineshape *> LSKRP;
95 std::vector<Lineshape *> LSKRD;
101 std::vector<Lineshape *> LSKF;
107 std::vector<Lineshape *> LSKK;
113 std::vector<Lineshape *> LSK1R;
119 std::vector<Lineshape *> LSA1R;
125 std::vector<Lineshape *> LSA1RD;
136 "K*(892)rho(770)_S",
Variable(
"amp_real1", -0.115177),
Variable(
"amp_imag1", 0.153976), LSKRS, SFKRS, 2);
138 "K*(892)rho(770)_P",
Variable(
"amp_real2", -0.0298697),
Variable(
"amp_imag2", -0.0722874), LSKRP, SFKRP, 2);
140 "K*(892)rho(770)_D",
Variable(
"amp_real3", -0.452212),
Variable(
"amp_imag3", 0.426521), LSKRD, SFKRD, 2);
153 DK3P_DI.
amplitudes.push_back(Bose_symmetrized_KF);
154 DK3P_DI.
amplitudes.push_back(Bose_symmetrized_AMP_S);
155 DK3P_DI.
amplitudes.push_back(Bose_symmetrized_AMP_P);
156 DK3P_DI.
amplitudes.push_back(Bose_symmetrized_AMP_D);
157 DK3P_DI.
amplitudes.push_back(Bose_symmetrized_KK);
158 DK3P_DI.
amplitudes.push_back(Bose_symmetrized_K1R);
159 DK3P_DI.
amplitudes.push_back(Bose_symmetrized_A1R);
160 DK3P_DI.
amplitudes.push_back(Bose_symmetrized_A1RD);
171 vector<Observable> observables;
172 vector<Variable> coefficients;
173 vector<Variable> offsets;
175 observables.push_back(m12);
176 observables.push_back(m34);
177 observables.push_back(cos12);
178 observables.push_back(cos34);
179 observables.push_back(phi);
180 observables.push_back(eventNumber);
181 offsets.push_back(constantZero);
182 offsets.push_back(constantZero);
183 coefficients.push_back(constantOne);
186 DPPdf *dp =
new DPPdf(
"test", observables, DK3P_DI, eff, 5);
188 TFile *file =
new TFile(
"SigGen.root",
"RECREATE");
189 TTree *tree =
new TTree(
"events",
"events");
191 double tm12, tm34, tc12, tc34, tphi;
192 tree->Branch(
"m12", &tm12,
"m12/D");
193 tree->Branch(
"m34", &tm34,
"m34/D");
194 tree->Branch(
"c12", &tc12,
"c12/D");
195 tree->Branch(
"c34", &tc34,
"c34/D");
196 tree->Branch(
"phi", &tphi,
"phi/D");
198 for(
int k = 0; k < 4; ++k) {
203 auto particles = std::get<0>(tuple);
204 auto variables = std::get<1>(tuple);
205 auto weights = std::get<2>(tuple);
206 auto flags = std::get<3>(tuple);
207 long accepted = thrust::count_if(flags.begin(), flags.end(), thrust::identity<bool>());
209 stderr,
"Using accept-reject method would leave you with {} out of {} events\n", accepted, numEvents);
211 for(
int i = 0; i < weights.size(); ++i) {
215 tm12 = (*(variables[0]))[i];
216 tm34 = (*(variables[1]))[i];
217 tc12 = (*(variables[2]))[i];
218 tc34 = (*(variables[3]))[i];
219 tphi = (*(variables[4]))[i];
std::vector< Variable > weights
Variable constantZero("constantZero", 0)
__host__ void setGenerationOffset(int off)
int main(int argc, char **argv)
Special class for observables. Used in DataSets.
__host__ std::tuple< mcbooster::ParticlesSet_h, mcbooster::VariableSet_h, mcbooster::RealVector_h, mcbooster::RealVector_h > GenerateSig(unsigned int numEvents)
Variable constantOne("constantOne", 1)
EventNumber * eventNumber
std::vector< fptype > particle_masses
#define GOOFIT_PARSE(app,...)
std::vector< Amplitude * > amplitudes