62 G4cout<<
"G4QAtomicElectronScattering::Constructor is called"<<
G4endl;
72G4bool G4QAtomicElectronScattering::manualFlag=
false;
73G4double G4QAtomicElectronScattering::Temperature=180.;
74G4double G4QAtomicElectronScattering::SSin2Gluons=0.3;
75G4double G4QAtomicElectronScattering::EtaEtaprime=0.3;
76G4double G4QAtomicElectronScattering::freeNuc=0.5;
77G4double G4QAtomicElectronScattering::freeDib=0.05;
78G4double G4QAtomicElectronScattering::clustProb=5.;
79G4double G4QAtomicElectronScattering::mediRatio=10.;
82G4int G4QAtomicElectronScattering::nPartCWorld=85;
83G4double G4QAtomicElectronScattering::SolidAngle=0.5;
84G4bool G4QAtomicElectronScattering::EnergyFlux=
false;
85G4double G4QAtomicElectronScattering::PiPrThresh=141.4;
86G4double G4QAtomicElectronScattering::M2ShiftVir=20000.;
87G4double G4QAtomicElectronScattering::DiNuclMass=1880.;
107 nPartCWorld = nParCW;
126 return EnMomConservation;
141 G4cout<<
"-Wa-G4QAtElScat::GetMeanFreePath called for not implemented particle"<<
G4endl;
149 G4cout<<
"G4QAtomElectScattering::GetMeanFreePath:"<<nE<<
" Elem's in theMaterial"<<
G4endl;
158 else G4cout<<
"G4QAtomEScattering::GetMeanFreePath:Particle isn't known in CHIPS"<<
G4endl;
162 for(
G4int i=0; i<nE; ++i)
164 G4int Z =
static_cast<G4int>((*theElementVector)[i]->GetZ());
165 std::vector<std::pair<G4int,G4double>*>* cs= Isotopes->
GetCSVector(Z);
166 G4int nIs=cs->size();
167 if(nIs)
for(
G4int j=0; j<nIs; j++)
169 std::pair<G4int,G4double>* curIs=(*cs)[j];
170 G4int N=curIs->first;
177 if(sigma > 0.)
return 1./sigma;
222 static const G4double dM=mProt+mNeut;
235 if(std::fabs(Momentum-momentum)>.001)
G4cerr<<
"G4QAtElScat::PSDI P="<<Momentum<<
"="
239 G4cout<<
"G4QAtomElScattering::PostStepDoIt called, P="<<Momentum<<
"="<<momentum<<
G4endl;
243 G4cerr<<
"G4QAtomElectScat::PostStepDoIt:Only gam,e+,e-,mu+,mu-,t+,t-,p are implemented"
254 G4cout<<
"G4QAtomElectronScat::PostStepDoIt: "<<nE<<
" elements in the material."<<
G4endl;
284 G4cout<<
"G4QAtomElScat::PostStepRestDoIt: projPDG="<<projPDG<<
",stPDG="<<prPDG<<
G4endl;
288 G4cerr<<
"-Warning-G4QAtomElScattering::PostStepDoIt:Undefined captured hadron"<<
G4endl;
292 std::vector<G4double> sumfra;
297 sumfra.push_back(sum);
300 for(i=0; i<nE; ++i)
if (rnd<sumfra[i])
break;
301 G4Element* pElement=(*theElementVector)[i];
305 G4cerr<<
"-Warning-G4QAtomicElectronScattering::PostStepDoIt: Element's Z="<<Z<<
G4endl;
311 if(isoVector) isoSize=isoVector->size();
313 G4cout<<
"G4QAtomicElectronScattering::PostStepDoIt: isovectorLength="<<isoSize<<
G4endl;
321 std::vector<std::pair<G4int,G4double>*>* newAbund =
322 new std::vector<std::pair<G4int,G4double>*>;
324 for(
G4int j=0; j<isoSize; j++)
330 std::pair<G4int,G4double>* pr=
new std::pair<G4int,G4double>(N,abund);
332 G4cout<<
"G4QAtomElScat::PostStepDoIt:pair#="<<j<<
", N="<<N<<
",ab="<<abund<<
G4endl;
334 newAbund->push_back(pr);
337 G4cout<<
"G4QAtomElectScat::PostStepDoIt:pairVectorLength="<<newAbund->size()<<
G4endl;
340 for(
G4int k=0; k<isoSize; k++)
delete (*newAbund)[k];
351 G4double dsr=0.01*(value_sr+value_sr);
357 G4cout<<
"G4QAtomElectScattering::PostStepDoIt: N="<<N<<
" for element with Z="<<Z<<
G4endl;
361 G4cerr<<
"---Warning---G4QAtomElectScat::PostStepDoIt:Element with N="<<N<<
G4endl;
364 if(projPDG==11||projPDG==-11||projPDG==13||projPDG==-13||projPDG==15||projPDG==-15)
369 G4int aProjPDG=std::abs(projPDG);
383 if( kinEnergy < photonEnergy )
386 G4cerr<<
"G4QAtomElectScat::PSDoIt: phE="<<photonEnergy<<
">leptE="<<kinEnergy<<
G4endl;
393 G4double W=photonEnergy-photonQ2/dM;
397 G4cout<<
"G4QAtomElScat::PostStepDoIt:(lN) negative equivalent energy W="<<W<<
G4endl;
411 G4cout<<
"G4QAtomElectScat::PostStepDoIt: probability correction - DoNothing"<<
G4endl;
427 G4double iniP=std::sqrt(iniE*iniE-mu2);
428 G4double finP=std::sqrt(finE*finE-mu2);
429 G4double cost=(EEm+EEm-photonQ2)/iniP/finP;
432 if(cost<-1.) cost=-1.;
442 G4double sint=std::sqrt(1.-cost*cost);
452 G4int targPDG=90000000+Z*1000+N;
462 G4cout<<
"G4QAtomElScat::PostStepDoIt: projPDG="<<projPDG<<
", targPDG="<<targPDG<<
G4endl;
468 projHV.push_back(pH);
470 std::for_each(projHV.begin(), projHV.end(),
DeleteQHadron());
473 G4cout<<
"G4QAtomElectScat::PostStepDoIt: pPDG="<<projPDG<<
", mp="<<mp<<
G4endl;
483 G4cerr<<
"**G4QAtomElectScat::PostStepDoIt:G4QE Exception is catched"<<
G4endl;
486 G4Exception(
"G4QAtomElScat::PostStepDoIt()",
"HAD_CHPS_0027",
532 G4int tNH = output->size();
536 G4cout<<
"G4QAtomElectronScat::PostStepDoIt: "<<tNH<<
" particles are generated"<<
G4endl;
538 G4int nOut=output->size();
540 if(tNH==2&&2!=nOut)
G4cout<<
"--Warning--G4QAtomElScat::PostStepDoIt: 2 # "<<nOut<<
G4endl;
543 if(tNH)
for(i=0; i<tNH; i++)
552 G4cout<<
"G4QAtomElectScat::AtRestDoIt: H#"<<i<<
",PDG="<<PDGCode<<
",nF="<<nFrag<<
G4endl;
557 G4cout<<
"G4QAtomElScat::PostStepDoIt: Intermediate particle is found i="<<i<<
G4endl;
567 else if(PDGCode==311 || PDGCode==-311)
577 else if(PDGCode >80000000)
582 G4cout<<
"G4QAtomicElectronScattering::AtRestDoIt:Ion Z="<<aZ<<
", A="<<aA<<
G4endl;
590 G4cout<<
"G4QAtomElectScat::PostStepDoIt:Define particle with PDG="<<PDGCode<<
G4endl;
594 G4cout<<
"G4QAtomElScat::PostStepDoIt:AfterParticleDefinition PDG="<<PDGCode<<
G4endl;
599 G4cout<<
"---Warning---G4QAtomElScattering::PostStepDoIt: drop PDG="<<PDGCode<<
G4endl;
608 EnMomConservation-=h4M;
610 G4cout<<
"G4QCollis::PSDI:"<<i<<
","<<PDGCode<<h4M<<h4M.
m()<<EnMomConservation<<
G4endl;
613 G4cout<<
"G4QAtomElectScat::PostStepDoIt:#"<<i<<
",PDG="<<PDGCode<<
",4M="<<h4M<<
G4endl;
621 G4cout<<
"G4QCollis::PSDoIt:p="<<curD<<curD.
mag()<<
",e="<<curE<<
",m="<<curM<<
G4endl;
627 G4cout<<
"G4QAtomicElectronScattering::PostStepDoIt:#"<<i<<
" is done."<<
G4endl;
634 G4cout<<
"G4QAtomicElectronScattering::PostStepDoIt:****PostStepDoIt done****"<<
G4endl;
std::vector< G4Element * > G4ElementVector
#define G4HadronicDeprecate(name)
std::vector< G4Isotope * > G4IsotopeVector
CLHEP::HepLorentzVector G4LorentzVector
std::vector< G4QHadron * > G4QHadronVector
G4DLLIMPORT std::ostream G4cerr
G4DLLIMPORT std::ostream G4cout
Hep3Vector orthogonal() const
Hep3Vector cross(const Hep3Vector &) const
static G4AntiNeutron * AntiNeutron()
static G4AntiProton * AntiProton()
const G4ThreeVector & GetMomentumDirection() const
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
G4ParticleDefinition * GetDefinition() const
G4LorentzVector Get4Momentum() const
G4double GetKineticEnergy() const
void Set4Momentum(const G4LorentzVector &momentum)
G4double GetTotalMomentum() const
static G4Electron * Electron()
G4double * GetRelativeAbundanceVector() const
const G4Isotope * GetIsotope(G4int iso) const
G4IsotopeVector * GetIsotopeVector() const
static G4KaonMinus * KaonMinus()
static G4KaonPlus * KaonPlus()
static G4KaonZeroLong * KaonZeroLong()
static G4KaonZeroShort * KaonZeroShort()
static G4Lambda * Lambda()
const G4ElementVector * GetElementVector() const
const G4double * GetFractionVector() const
size_t GetNumberOfElements() const
const G4double * GetVecNbOfAtomsPerVolume() const
static G4MuonMinus * MuonMinus()
static G4MuonPlus * MuonPlus()
static G4Neutron * Neutron()
static G4OmegaMinus * OmegaMinus()
void AddSecondary(G4Track *aSecondary)
void ProposeEnergy(G4double finalEnergy)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
virtual void Initialize(const G4Track &)
G4double GetPDGMass() const
G4int GetPDGEncoding() const
const G4String & GetParticleName() const
G4ParticleDefinition * FindIon(G4int atomicNumber, G4int atomicMass, G4double excitationEnergy)
static G4ParticleTable * GetParticleTable()
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
static G4Positron * Positron()
static G4Proton * Proton()
static void SetParameters(G4double temper=180., G4double ssin2g=.1, G4double etaetap=.3, G4double fN=0., G4double fD=0., G4double cP=1., G4double mR=1., G4int npCHIPSWorld=234, G4double solAn=.5, G4bool efFlag=false, G4double piTh=141.4, G4double mpi2=20000., G4double dinum=1880.)
G4QAtomicElectronScattering(const G4String &processName="CHIPSNuclearCollision")
G4LorentzVector GetEnegryMomentumConservation()
~G4QAtomicElectronScattering()
G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep)
G4int GetNumberOfNeutronsInTarget()
static void SetStandard()
G4bool IsApplicable(const G4ParticleDefinition &particle)
static G4QCHIPSWorld * Get()
G4QParticleVector * GetParticles(G4int nOfParts=0)
static G4VQCrossSection * GetPointer()
static void SetParameters(G4double solAn=0.4, G4bool efFlag=false, G4double piThresh=141.4, G4double mpisq=20000., G4double dinum=1880.)
G4QHadronVector * Fragment()
G4LorentzVector Get4Momentum() const
G4int GetBaryonNumber() const
G4int GetNFragments() const
G4int GetLastIndex(G4int Z)
G4int GetNeutrons(G4int Z, G4int index=0)
std::vector< std::pair< G4int, G4double > * > * GetCSVector(G4int Z, G4int index=0)
G4double GetMeanCrossSection(G4int Z, G4int index=0)
static G4QIsotope * Get()
G4int InitElement(G4int Z, G4int index, std::vector< std::pair< G4int, G4double > * > *abund)
static G4VQCrossSection * GetPointer()
static void SetParameters(G4double fN=.1, G4double fD=.05, G4double cP=4., G4double mR=1., G4double nD=.8 *CLHEP::fermi)
G4ParticleDefinition * GetParticleDefinition(G4int PDGCode)
static G4QPDGToG4Particle * Get()
static G4VQCrossSection * GetPointer()
static G4VQCrossSection * GetPointer()
static void SetParameters(G4double temper=180., G4double ssin2g=.3, G4double etaetap=.3)
static G4SigmaMinus * SigmaMinus()
static G4SigmaPlus * SigmaPlus()
static G4SigmaZero * SigmaZero()
static G4TauMinus * TauMinus()
static G4TauPlus * TauPlus()
const G4ThreeVector & GetPosition() const
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4double GetGlobalTime() const
G4Material * GetMaterial() const
const G4DynamicParticle * GetDynamicParticle() const
const G4TouchableHandle & GetTouchableHandle() const
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
void ProposeTrackStatus(G4TrackStatus status)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetNumberOfSecondaries(G4int totSecondaries)
G4ParticleChange aParticleChange
const G4String & GetProcessName() const
virtual G4double GetExchangeEnergy()
virtual G4double GetVirtualFactor(G4double nu, G4double Q2)
virtual G4double GetCrossSection(G4bool, G4double, G4int, G4int, G4int pPDG=0)
virtual G4double GetExchangeQ2(G4double nu=0)
static G4XiMinus * XiMinus()
static G4XiZero * XiZero()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)