1189 G4int absPDGcode = std::abs(PDGcode);
1200 G4double sqrLogPlab = LogPlab * LogPlab;
1206 G4double NumberOfTargetNeutrons = NumberOfTargetNucleons - NumberOfTargetProtons;
1208 if(NumberOfTargetNeutrons < 0.0) NumberOfTargetNeutrons = 0.0;
1210 G4double Xtotal, Xelastic, Xinelastic;
1212 if( absPDGcode > 1000 )
1215 0.522*sqrLogPlab - 4.51*LogPlab;
1218 0.513*sqrLogPlab - 4.27*LogPlab;
1221 0.169*sqrLogPlab - 1.85*LogPlab;
1224 0.169*sqrLogPlab - 1.85*LogPlab;
1226 Xtotal = (NumberOfTargetProtons * XtotPP +
1227 NumberOfTargetNeutrons * XtotPN);
1229 Xelastic = (NumberOfTargetProtons * XelPP +
1230 NumberOfTargetNeutrons * XelPN);
1232 else if( PDGcode == 211 )
1235 0.19 *sqrLogPlab - 0.0 *LogPlab;
1238 0.456*sqrLogPlab - 4.03*LogPlab;
1241 0.079*sqrLogPlab - 0.0 *LogPlab;
1244 0.043*sqrLogPlab - 0.0 *LogPlab;
1246 Xtotal = ( NumberOfTargetProtons * XtotPiP +
1247 NumberOfTargetNeutrons * XtotPiN );
1249 Xelastic = ( NumberOfTargetProtons * XelPiP +
1250 NumberOfTargetNeutrons * XelPiN );
1252 else if( PDGcode == -211 )
1255 0.456*sqrLogPlab - 4.03*LogPlab;
1258 0.19 *sqrLogPlab - 0.0 *LogPlab;
1261 0.043*sqrLogPlab - 0.0 *LogPlab;
1264 0.079*sqrLogPlab - 0.0 *LogPlab;
1266 Xtotal = ( NumberOfTargetProtons * XtotPiP +
1267 NumberOfTargetNeutrons * XtotPiN );
1269 Xelastic = ( NumberOfTargetProtons * XelPiP +
1270 NumberOfTargetNeutrons * XelPiN );
1272 else if( PDGcode == 111 )
1275 0.19 *sqrLogPlab - 0.0 *LogPlab +
1277 0.456*sqrLogPlab - 4.03*LogPlab)/2;
1280 0.456*sqrLogPlab - 4.03*LogPlab +
1282 0.19 *sqrLogPlab - 0.0 *LogPlab)/2;
1285 0.079*sqrLogPlab - 0.0 *LogPlab +
1287 0.043*sqrLogPlab - 0.0 *LogPlab)/2;
1290 0.043*sqrLogPlab - 0.0 *LogPlab +
1292 0.079*sqrLogPlab - 0.0 *LogPlab)/2;
1294 Xtotal = ( NumberOfTargetProtons * XtotPiP +
1295 NumberOfTargetNeutrons * XtotPiN );
1297 Xelastic = ( NumberOfTargetProtons * XelPiP +
1298 NumberOfTargetNeutrons * XelPiN );
1300 else if( PDGcode == 321 )
1303 0.26 *sqrLogPlab - 1.0 *LogPlab;
1305 0.21 *sqrLogPlab - 0.89*LogPlab;
1308 0.16 *sqrLogPlab - 1.3 *LogPlab;
1311 0.29 *sqrLogPlab - 2.4 *LogPlab;
1313 Xtotal = ( NumberOfTargetProtons * XtotKP +
1314 NumberOfTargetNeutrons * XtotKN );
1316 Xelastic = ( NumberOfTargetProtons * XelKP +
1317 NumberOfTargetNeutrons * XelKN );
1319 else if( PDGcode ==-321 )
1322 0.66 *sqrLogPlab - 5.6 *LogPlab;
1324 0.38 *sqrLogPlab - 2.9 *LogPlab;
1327 0.29 *sqrLogPlab - 2.4 *LogPlab;
1330 0.16 *sqrLogPlab - 1.3 *LogPlab;
1332 Xtotal = ( NumberOfTargetProtons * XtotKP +
1333 NumberOfTargetNeutrons * XtotKN );
1335 Xelastic = ( NumberOfTargetProtons * XelKP +
1336 NumberOfTargetNeutrons * XelKN );
1338 else if( PDGcode == 311 )
1341 0.26 *sqrLogPlab - 1.0 *LogPlab +
1343 0.66 *sqrLogPlab - 5.6 *LogPlab)/2;
1346 0.21 *sqrLogPlab - 0.89*LogPlab +
1348 0.38 *sqrLogPlab - 2.9 *LogPlab)/2;
1351 + 0.16 *sqrLogPlab - 1.3 *LogPlab +
1353 0.29 *sqrLogPlab - 2.4 *LogPlab)/2;
1356 0.29 *sqrLogPlab - 2.4 *LogPlab +
1358 0.16 *sqrLogPlab - 1.3 *LogPlab)/2;
1360 Xtotal = ( NumberOfTargetProtons * XtotKP +
1361 NumberOfTargetNeutrons * XtotKN );
1363 Xelastic = ( NumberOfTargetProtons * XelKP +
1364 NumberOfTargetNeutrons * XelKN );
1369 0.522*sqrLogPlab - 4.51*LogPlab;
1372 0.513*sqrLogPlab - 4.27*LogPlab;
1375 0.169*sqrLogPlab - 1.85*LogPlab;
1377 0.169*sqrLogPlab - 1.85*LogPlab;
1379 Xtotal = ( NumberOfTargetProtons * XtotPP +
1380 NumberOfTargetNeutrons * XtotPN );
1382 Xelastic = ( NumberOfTargetProtons * XelPP +
1383 NumberOfTargetNeutrons * XelPN );
1385 Xinelastic = Xtotal - Xelastic;
1387 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