57 {
63 } else {
66 }
67
69
70 if (iso == 1) {
72 }
73 else if (iso == -1) {
75 }
77
78
79 nucleon->setParentResonancePDGCode(0);
80 nucleon->setParentResonanceID(0);
81 pion->setParentResonancePDGCode(0);
82 pion->setParentResonanceID(0);
83
87 G4double en=(sh*sh+mn*mn-me*me)/(2*sh);
89 G4double ee=std::sqrt(en*en-mn*mn+me*me);
92
93
94
95
97
104
105 if (ECM < 1650.) {
106
107
108 G4double f1= -0.0000288627*ECM*ECM+0.09155289*ECM-72.25436;
109 G4double b1=(f1-(f1/(1.5-0.5*std::pow((ECM-1580.)/95.,2))))/2.;
112
114
116 while (passe1==0) {
117
120
121
123 fteta=(a1*x1*x1+b1*x1+c1)/interg1;
124
125 if (u1*f1/interg1 < fteta) {
126 teta=std::acos(x1);
127 passe1=1;
128 }
129 }
130 }
131 else {
132
133
139
140 G4double interg2=0.1716182902205207;
142
144 while (passe2==0) {
145
148
149
151 fteta=((a2*x1*x1+b2*x1+c2)*(0.5+(std::atan(10*(x1+dev)))/
pi) + vert)/interg2;
152
153 if (u1*f2 < fteta) {
154 teta=std::acos(x1);
155 passe2=1;
156 }
157 }
158 }
159
161
162 ThreeVector mom_nucleon(
163 pn*std::sin(teta)*std::cos(fi),
164 pn*std::sin(teta)*std::sin(fi),
165 pn*std::cos(teta)
166 );
167
168
169 nucleon->setMomentum(-mom_nucleon);
170 pion->setMomentum(mom_nucleon);
171
172 fs->addModifiedParticle(nucleon);
173 fs->addModifiedParticle(pion);
174 }
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
G4bool nucleon(G4int ityp)