1181 G4int absPDGcode = std::abs(PDGcode);
1192 G4double sqrLogPlab = LogPlab * LogPlab;
1198 G4double NumberOfTargetNeutrons = NumberOfTargetNucleons - NumberOfTargetProtons;
1200 if(NumberOfTargetNeutrons < 0.0) NumberOfTargetNeutrons = 0.0;
1202 G4double Xtotal, Xelastic, Xinelastic;
1204 if( absPDGcode > 1000 )
1207 0.522*sqrLogPlab - 4.51*LogPlab;
1210 0.513*sqrLogPlab - 4.27*LogPlab;
1213 0.169*sqrLogPlab - 1.85*LogPlab;
1216 0.169*sqrLogPlab - 1.85*LogPlab;
1218 Xtotal = (NumberOfTargetProtons * XtotPP +
1219 NumberOfTargetNeutrons * XtotPN);
1221 Xelastic = (NumberOfTargetProtons * XelPP +
1222 NumberOfTargetNeutrons * XelPN);
1224 else if( PDGcode == 211 )
1227 0.19 *sqrLogPlab - 0.0 *LogPlab;
1230 0.456*sqrLogPlab - 4.03*LogPlab;
1233 0.079*sqrLogPlab - 0.0 *LogPlab;
1236 0.043*sqrLogPlab - 0.0 *LogPlab;
1238 Xtotal = ( NumberOfTargetProtons * XtotPiP +
1239 NumberOfTargetNeutrons * XtotPiN );
1241 Xelastic = ( NumberOfTargetProtons * XelPiP +
1242 NumberOfTargetNeutrons * XelPiN );
1244 else if( PDGcode == -211 )
1247 0.456*sqrLogPlab - 4.03*LogPlab;
1250 0.19 *sqrLogPlab - 0.0 *LogPlab;
1253 0.043*sqrLogPlab - 0.0 *LogPlab;
1256 0.079*sqrLogPlab - 0.0 *LogPlab;
1258 Xtotal = ( NumberOfTargetProtons * XtotPiP +
1259 NumberOfTargetNeutrons * XtotPiN );
1261 Xelastic = ( NumberOfTargetProtons * XelPiP +
1262 NumberOfTargetNeutrons * XelPiN );
1264 else if( PDGcode == 111 )
1267 0.19 *sqrLogPlab - 0.0 *LogPlab +
1269 0.456*sqrLogPlab - 4.03*LogPlab)/2;
1272 0.456*sqrLogPlab - 4.03*LogPlab +
1274 0.19 *sqrLogPlab - 0.0 *LogPlab)/2;
1277 0.079*sqrLogPlab - 0.0 *LogPlab +
1279 0.043*sqrLogPlab - 0.0 *LogPlab)/2;
1282 0.043*sqrLogPlab - 0.0 *LogPlab +
1284 0.079*sqrLogPlab - 0.0 *LogPlab)/2;
1286 Xtotal = ( NumberOfTargetProtons * XtotPiP +
1287 NumberOfTargetNeutrons * XtotPiN );
1289 Xelastic = ( NumberOfTargetProtons * XelPiP +
1290 NumberOfTargetNeutrons * XelPiN );
1292 else if( PDGcode == 321 )
1295 0.26 *sqrLogPlab - 1.0 *LogPlab;
1297 0.21 *sqrLogPlab - 0.89*LogPlab;
1300 0.16 *sqrLogPlab - 1.3 *LogPlab;
1303 0.29 *sqrLogPlab - 2.4 *LogPlab;
1305 Xtotal = ( NumberOfTargetProtons * XtotKP +
1306 NumberOfTargetNeutrons * XtotKN );
1308 Xelastic = ( NumberOfTargetProtons * XelKP +
1309 NumberOfTargetNeutrons * XelKN );
1311 else if( PDGcode ==-321 )
1314 0.66 *sqrLogPlab - 5.6 *LogPlab;
1316 0.38 *sqrLogPlab - 2.9 *LogPlab;
1319 0.29 *sqrLogPlab - 2.4 *LogPlab;
1322 0.16 *sqrLogPlab - 1.3 *LogPlab;
1324 Xtotal = ( NumberOfTargetProtons * XtotKP +
1325 NumberOfTargetNeutrons * XtotKN );
1327 Xelastic = ( NumberOfTargetProtons * XelKP +
1328 NumberOfTargetNeutrons * XelKN );
1330 else if( PDGcode == 311 )
1333 0.26 *sqrLogPlab - 1.0 *LogPlab +
1335 0.66 *sqrLogPlab - 5.6 *LogPlab)/2;
1338 0.21 *sqrLogPlab - 0.89*LogPlab +
1340 0.38 *sqrLogPlab - 2.9 *LogPlab)/2;
1343 + 0.16 *sqrLogPlab - 1.3 *LogPlab +
1345 0.29 *sqrLogPlab - 2.4 *LogPlab)/2;
1348 0.29 *sqrLogPlab - 2.4 *LogPlab +
1350 0.16 *sqrLogPlab - 1.3 *LogPlab)/2;
1352 Xtotal = ( NumberOfTargetProtons * XtotKP +
1353 NumberOfTargetNeutrons * XtotKN );
1355 Xelastic = ( NumberOfTargetProtons * XelKP +
1356 NumberOfTargetNeutrons * XelKN );
1361 0.522*sqrLogPlab - 4.51*LogPlab;
1364 0.513*sqrLogPlab - 4.27*LogPlab;
1367 0.169*sqrLogPlab - 1.85*LogPlab;
1369 0.169*sqrLogPlab - 1.85*LogPlab;
1371 Xtotal = ( NumberOfTargetProtons * XtotPP +
1372 NumberOfTargetNeutrons * XtotPN );
1374 Xelastic = ( NumberOfTargetProtons * XelPP +
1375 NumberOfTargetNeutrons * XelPN );
1377 Xinelastic = Xtotal - Xelastic;
1379 if( Xinelastic < 0.) Xinelastic = 0.;
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
G4double GetTotalEnergy() const
G4int GetPDGEncoding() const
G4ParticleDefinition * GetDefinition() const
G4double G4Log(G4double x)
static constexpr double GeV
static constexpr double millibarn
G4ThreeVector GetMomentum() const