42 {.01, .03, .05, .1, .15, .2, .3, .4, .5, .6, .7, .8, .9, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.5, 3.0, 3.5, 4.0, 5.0, 6.0, 8.0, 10., 15, 20, 50, 100};
79 std::vector<G4double> cxCache;
89 partialCx =
components[i]->CrossSection(trk1,trk2);
96 partialCxSum += partialCx;
97 cxCache.push_back(partialCx);
102 for (i=0; i<cxCache.size(); i++)
104 running += cxCache[i];
105 if (running > random)
121 G4bool isInCharge =
false;
128 G4CollisionVector::const_iterator iter;
129 for (iter = comps->begin(); iter != comps->end(); ++iter)
131 if ( ((*iter))->IsInCharge(trk1,trk2) ) isInCharge =
true;
145 if(
theBuffer[i].InCharge(aP, bP))
return;
152 for(
size_t tt=0; tt<maxE; tt++)
180 G4KineticTrack a(const_cast<G4ParticleDefinition *>(aP), atime, aPosition, a4Momentum);
181 G4KineticTrack b(const_cast<G4ParticleDefinition *>(bP), btime, bPosition, b4Momentum);
187 crossSect +=
components[i]->CrossSection(a,b);
190 G4double sqrts = (a4Momentum+b4Momentum).mag();
205 return theBuffer[i].CrossSection(trk1, trk2);
208 throw G4HadronicException(__FILE__, __LINE__,
"G4CollisionComposite::BufferedCrossSection - Blitz !!");
virtual const G4CollisionVector * GetComponents() const
std::vector< G4CrossSectionBuffer > theBuffer
CLHEP::Hep3Vector G4ThreeVector
virtual const G4VCrossSectionSource * GetCrossSectionSource() const
static const G4int nPoints
G4CollisionVector components
virtual ~G4CollisionComposite()
G4double BufferedCrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
void BufferCrossSection(const G4ParticleDefinition *aP, const G4ParticleDefinition *bP)
G4ParticleDefinition * GetDefinition() const
std::vector< G4VCollision * > G4CollisionVector
virtual G4KineticTrackVector * FinalState(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
G4double GetPDGMass() const
virtual G4bool IsInCharge(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
void push_back(G4double S, G4double x)
static const G4double theT[]
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0
CLHEP::HepLorentzVector G4LorentzVector