40 const G4int G4CollisionComposite::nPoints = 32;
42 const G4double G4CollisionComposite::theT[nPoints] =
43 {.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};
54 std::for_each(components.begin(), components.end(),
G4Delete());
74 crossSect = BufferedCrossSection(trk1,trk2);
83 std::vector<G4double> cxCache;
87 for (i=0; i<components.size(); i++)
93 partialCx = components[i]->CrossSection(trk1,trk2);
100 partialCxSum += partialCx;
101 cxCache.push_back(partialCx);
106 for (i=0; i<cxCache.size(); i++)
108 running += cxCache[i];
109 if (running > random)
111 return components[i]->FinalState(trk1, trk2);
125 G4bool isInCharge =
false;
132 G4CollisionVector::const_iterator iter;
133 for (iter = comps->begin(); iter != comps->end(); ++iter)
135 if ( ((*iter))->IsInCharge(trk1,trk2) ) isInCharge =
true;
142 void G4CollisionComposite::
147 for(i=0; i<theBuffer.size(); i++)
149 if(theBuffer[i].InCharge(aP, bP))
return;
156 for(
size_t tt=0; tt<maxE; tt++)
187 for (i=0; i<components.size(); i++)
191 crossSect += components[i]->CrossSection(
a,
b);
194 G4double sqrts = (a4Momentum+b4Momentum).mag();
195 aNewBuff.push_back(sqrts, crossSect);
197 theBuffer.push_back(aNewBuff);
205 for(
size_t i=0; i<theBuffer.size(); i++)
209 return theBuffer[i].CrossSection(trk1, trk2);
212 throw G4HadronicException(__FILE__, __LINE__,
"G4CollisionComposite::BufferedCrossSection - Blitz !!");
virtual const G4CollisionVector * GetComponents() const
CLHEP::Hep3Vector G4ThreeVector
std::vector< ExP01TrackerHit * > a
virtual const G4VCrossSectionSource * GetCrossSectionSource() const
#define G4MUTEXINIT(mutex)
virtual ~G4CollisionComposite()
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
std::vector< G4VCollision * > G4CollisionVector
virtual G4KineticTrackVector * FinalState(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
G4double GetPDGMass() const
static constexpr double GeV
virtual G4bool IsInCharge(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
const G4ParticleDefinition * GetDefinition() const
#define G4MUTEXDESTROY(mutex)
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const =0