317{
319 G4double trMass = 900.*CLHEP::MeV, Tkin;
320 G4double sl, sh, ds, rAl, rAh, drA, rBl, rBh, drB, bql, bqh, dbq, bQl, bQh, dbQ, cIl, cIh, dcI;
321
322 Tkin = std::sqrt(fMassProj*fMassProj + plab*plab) - fMassProj;
323
326 Tkin);
328
329 delete theDynamicParticle;
330
331 fSpp = fMassProj*fMassProj + fMassTarg*fMassTarg + 2.*fMassTarg*std::sqrt(plab*plab + fMassProj*fMassProj);
332 fPcms = std::sqrt( (fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp);
333
335
336 if( fMassProj > trMass )
337 {
340 fGamma = 1./3.;
341 fDelta = 1. - fGamma;
342
343 if( sCMS <= theNuclNuclData[0][0]*CLHEP::GeV )
344 {
345 this->
SetRA(theNuclNuclData[0][1]/CLHEP::GeV,0.173,0.316);
346 this->
SetRB(theNuclNuclData[0][2]/CLHEP::GeV,0.173,0.316);
347
348 this->
SetBq(theNuclNuclData[0][3]);
349 this->
SetBQ(theNuclNuclData[0][4]);
350 this->
SetImCof(theNuclNuclData[0][5]);
351
354 }
355 else if( sCMS >= theNuclNuclData[17][0]*CLHEP::GeV )
356 {
357 this->
SetRA(theNuclNuclData[17][1]/CLHEP::GeV,0.173,0.316);
358 this->
SetRB(theNuclNuclData[17][2]/CLHEP::GeV,0.173,0.316);
359
360 this->
SetBq(theNuclNuclData[17][3]);
361 this->
SetBQ(theNuclNuclData[17][4]);
362 this->
SetImCof(theNuclNuclData[17][5]);
363
366 }
367 else
368 {
369 for( i = 0; i < 19; i++ ) if( sCMS <= theNuclNuclData[i][0]*CLHEP::GeV ) break;
370 if( i == 0 ) i++;
371 if( i == 19 ) i--;
372
373 sl = theNuclNuclData[i-1][0]*CLHEP::GeV;
374 sh = theNuclNuclData[i][0]*CLHEP::GeV;
375 ds = (sCMS - sl)/(sh - sl);
376
377 rAl = theNuclNuclData[i-1][1]/CLHEP::GeV;
378 rAh = theNuclNuclData[i][1]/CLHEP::GeV;
379 drA = rAh - rAl;
380
381 rBl = theNuclNuclData[i-1][2]/CLHEP::GeV;
382 rBh = theNuclNuclData[i][2]/CLHEP::GeV;
383 drB = rBh - rBl;
384
385 bql = theNuclNuclData[i-1][3];
386 bqh = theNuclNuclData[i][3];
387 dbq = bqh - bql;
388
389 bQl = theNuclNuclData[i-1][4];
390 bQh = theNuclNuclData[i][4];
391 dbQ = bQh - bQl;
392
393 cIl = theNuclNuclData[i-1][5];
394 cIh = theNuclNuclData[i][5];
395 dcI = cIh - cIl;
396
397 this->
SetRA(rAl+drA*ds,0.173,0.316);
398 this->
SetRB(rBl+drB*ds,0.173,0.316);
399
400 this->
SetBq(bql+dbq*ds);
401 this->
SetBQ(bQl+dbQ*ds);
403
406 }
407 }
408 else
409 {
412 fGamma = 1./2.;
413 fDelta = 1. - fGamma;
414
415 if( sCMS <= thePiKaNuclData[0][0]*CLHEP::GeV )
416 {
417 this->
SetRA(thePiKaNuclData[0][1]/CLHEP::GeV,0.173,0.316);
418 this->
SetRB(thePiKaNuclData[0][2]/CLHEP::GeV,0.173,0.173);
419
420 this->
SetBq(thePiKaNuclData[0][3]);
421 this->
SetBQ(thePiKaNuclData[0][4]);
422 this->
SetImCof(thePiKaNuclData[0][5]);
423
426 }
427 else if( sCMS >= thePiKaNuclData[7][0]*CLHEP::GeV )
428 {
429 this->
SetRA(thePiKaNuclData[7][1]/CLHEP::GeV,0.173,0.316);
430 this->
SetRB(thePiKaNuclData[7][2]/CLHEP::GeV,0.173,0.173);
431
432 this->
SetBq(thePiKaNuclData[7][3]);
433 this->
SetBQ(thePiKaNuclData[7][4]);
434 this->
SetImCof(thePiKaNuclData[7][5]);
435
438 }
439 else
440 {
441 for( i = 0; i < 8; i++ ) if( sCMS <= thePiKaNuclData[i][0]*CLHEP::GeV ) break;
442 if( i == 0 ) i++;
443 if( i == 8 ) i--;
444
445 sl = thePiKaNuclData[i-1][0]*CLHEP::GeV;
446 sh = thePiKaNuclData[i][0]*CLHEP::GeV;
447 ds = (sCMS - sl)/(sh - sl);
448
449 rAl = thePiKaNuclData[i-1][1]/CLHEP::GeV;
450 rAh = thePiKaNuclData[i][1]/CLHEP::GeV;
451 drA = rAh - rAl;
452
453 rBl = thePiKaNuclData[i-1][2]/CLHEP::GeV;
454 rBh = thePiKaNuclData[i][2]/CLHEP::GeV;
455 drB = rBh - rBl;
456
457 bql = thePiKaNuclData[i-1][3];
458 bqh = thePiKaNuclData[i][3];
459 dbq = bqh - bql;
460
461 bQl = thePiKaNuclData[i-1][4];
462 bQh = thePiKaNuclData[i][4];
463 dbQ = bQh - bQl;
464
465 cIl = thePiKaNuclData[i-1][5];
466 cIh = thePiKaNuclData[i][5];
467 dcI = cIh - cIl;
468
469 this->
SetRA(rAl+drA*ds,0.173,0.316);
470 this->
SetRB(rBl+drB*ds,0.173,0.173);
471
472 this->
SetBq(bql+dbq*ds);
473 this->
SetBQ(bQl+dbQ*ds);
475
478 }
479 }
480 return;
481}
G4ThreeVector G4ParticleMomentum
G4double GetHadronNucleonXscNS(const G4DynamicParticle *dp, const G4ParticleDefinition *p)
void SetImCof(G4double a)
void SetRA(G4double rn, G4double pq, G4double pQ)
void SetCofF2(G4double f)
void SetLambda(G4double L)
void SetRB(G4double rn, G4double pq, G4double pQ)
void SetCofF3(G4double f)