CGEM BOSS 6.6.5.i
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtJscont.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtJscont.cc
12//
13// Description: Routine to generate e+e- --> q\barq via Jetset
14//
15// Modification history:
16//
17// PCK August 4, 1997 Module created
18//
19//------------------------------------------------------------------------
20//
22#include <stdlib.h>
23#include <stdio.h>
24#include <string.h>
27#include "EvtGenBase/EvtPDL.hh"
30#include "EvtGenBase/EvtId.hh"
32#include <string>
33#include <strstream>
34using std::strstream;
35
36extern "C" {
37 extern void continuum_(double *,int *,int *,int *,
38 double *,double *,double *,double *);
39}
40
41extern "C" {
42 extern void lugive_(const char *cnfgstr,int length);
43}
44
45
47
48void EvtJscont::getName(std::string& model_name){
49
50 model_name="JSCONT";
51
52}
53
55
56 return new EvtJscont;
57
58}
59
61
62 // check that there are 1 argument
63
64 checkNArg(1,2);
65
66}
67
68
70
71 noProbMax();
72
73}
74
75
77
79 static int first=1;
80
81 if (first){
82 first=0;
83
84 float val=0.6;
85 if ( getNArg()>1) {
86 val=getArg(1);
87 }
88 char vak[20];
89 sprintf(vak,"PARJ(13)=%f",val);
90 std::string temp(vak);
91 lugive_(temp.c_str(),strlen(temp.c_str()));
92 }
93 EvtVector4R p4[100];
94
95 double energy=p->mass();
96
97 int flavor;
98
99 int i,more;
100 int ndaugjs;
101 int kf[100];
102 EvtId id[100];
103 int type[MAX_DAUG];
104
105 flavor=(int)getArg(0);
106
107 double px[100],py[100],pz[100],e[100];
108
109 if ( p->getNDaug() != 0 ) { return;}
110 do{
111
112 continuum_(&energy,&flavor,&ndaugjs,kf,px,py,pz,e);
113
114 for(i=0;i<ndaugjs;i++){
115
116 id[i]=EvtPDL::evtIdFromStdHep(kf[i]);
117
118 type[i]=EvtPDL::getSpinType(id[i]);
119
120 // have to protect against negative mass^2 for massless particles
121 // i.e. neutrinos and photons.
122 // this is uggly but I need to fix it right now....
123
124 if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i]){
125
126 e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000000001;
127
128 }
129
130 p4[i].set(e[i],px[i],py[i],pz[i]);
131
132 }
133
134 int channel=EvtDecayTable::inChannelList(p->getId(),ndaugjs,id);
135
136 more=((channel!=-1)&&(channel!=p->getChannel()));
137
138
139 }while(more);
140
141 p->makeDaughters(ndaugjs,id);
142
143 for(i=0;i<ndaugjs;i++){
144 p->getDaug(i)->init( id[i], p4[i] );
145 }
146 return ;
147}
148
149
150
151
double length
void lugive_(const char *cnfgstr, int length)
void lugive_(const char *cnfgstr, int length)
void continuum_(double *, int *, int *, int *, double *, double *, double *, double *)
const int MAX_DAUG
************Class m_ypar INTEGER m_KeyWgt INTEGER m_nphot INTEGER m_KeyGPS INTEGER m_IsBeamPolarized INTEGER m_EvtGenInterface DOUBLE PRECISION m_Emin DOUBLE PRECISION m_sphot DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_q2 DOUBLE PRECISION m_PolBeam2 DOUBLE PRECISION m_xErrPb *COMMON c_KK2f $ !CMS energy average $ !Spin Polarization vector first beam $ !Spin Polarization vector second beam $ !Beam energy spread[GeV] $ !minimum hadronization energy[GeV] $ !input READ never touch them !$ !debug facility $ !maximum weight $ !inverse alfaQED $ !minimum real photon energy
Definition KK2f.h:50
double getArg(int j)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
static int inChannelList(EvtId parent, int ndaug, EvtId *daugs)
Definition EvtId.hh:27
static void jetSetInit()
Definition EvtJetSet.cc:785
void init()
Definition EvtJscont.cc:60
void getName(std::string &name)
Definition EvtJscont.cc:48
void initProbMax()
Definition EvtJscont.cc:69
void decay(EvtParticle *p)
Definition EvtJscont.cc:76
EvtDecayBase * clone()
Definition EvtJscont.cc:54
virtual ~EvtJscont()
Definition EvtJscont.cc:46
static EvtId evtIdFromStdHep(int stdhep)
Definition EvtPDL.cc:244
static EvtSpinType::spintype getSpinType(EvtId i)
Definition EvtPDL.hh:61
void makeDaughters(int ndaug, EvtId *id)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtId getId() const
int getNDaug() const
EvtParticle * getDaug(int i)
double mass() const
int getChannel() const
void set(int i, double d)