34#define INCLXX_IN_GEANT4_MODE 1
50#ifdef INCLXX_IN_GEANT4_MODE
112 emissionTime(0.0), outOfWell(false), theSrcPartner(false)
143 emissionTime(0.0), outOfWell(false), theSrcPartner(false)
150 INCL_ERROR(
"Cannot create resonance without specifying its momentum four-vector." <<
'\n');
177 (*i)->rotatePositionAndMomentum(angle,
axis);
183 (*i)->rotatePosition(angle,
axis);
189 (*i)->rotateMomentum(angle,
axis);
200 if(
G4int((*this).size())==0)
return 1.;
201 std::vector<G4int> MergedVector;
202 for(
ParticleIter i = (*this).begin(), e = (*this).end(); i!=e; ++i){
209 std::vector<G4int> MergedVector;
210 if(
G4int((*this).size())==0)
return MergedVector;
211 for(
ParticleIter i = (*this).begin(), e = (*this).end(); i!=e; ++i){
227 if(VectorBias.empty())
return 1.;
231 for(
G4int i=0; i<
G4int(VectorBias.size()); i++){
239 std::vector<G4int> MergedVectorBias;
244 if(VectorBias1.size()==0 && VectorBias2.size()==0)
return MergedVectorBias;
245 else if(VectorBias1.size()==0)
return VectorBias2;
246 else if(VectorBias2.size()==0)
return VectorBias1;
248 while(i <
G4int(VectorBias1.size()) || j <
G4int(VectorBias2.size())){
249 if(VectorBias1[i]==VectorBias2[j]){
250 MergedVectorBias.push_back(VectorBias1[i]);
253 if(i ==
G4int(VectorBias1.size())){
254 for(;j<
G4int(VectorBias2.size());j++) MergedVectorBias.push_back(VectorBias2[j]);
256 else if(j ==
G4int(VectorBias2.size())){
257 for(;i<
G4int(VectorBias1.size());i++) MergedVectorBias.push_back(VectorBias1[i]);
259 }
else if(VectorBias1[i]<VectorBias2[j]){
260 MergedVectorBias.push_back(VectorBias1[i]);
262 if(i ==
G4int(VectorBias1.size())){
263 for(;j<
G4int(VectorBias2.size());j++) MergedVectorBias.push_back(VectorBias2[j]);
267 MergedVectorBias.push_back(VectorBias2[j]);
269 if(j ==
G4int(VectorBias2.size())){
270 for(;i<
G4int(VectorBias1.size());i++) MergedVectorBias.push_back(VectorBias1[i]);
274 return MergedVectorBias;
278 std::vector<G4int> MergedVectorBias;
282 if(p1.size()==0 && VectorBias.size()==0)
return MergedVectorBias;
283 else if(p1.size()==0)
return VectorBias;
284 else if(VectorBias.size()==0)
return p1;
286 while(i <
G4int(p1.size()) || j <
G4int(VectorBias.size())){
287 if(p1[i]==VectorBias[j]){
288 MergedVectorBias.push_back(p1[i]);
291 if(i ==
G4int(p1.size())){
292 for(;j<
G4int(VectorBias.size());j++) MergedVectorBias.push_back(VectorBias[j]);
294 else if(j ==
G4int(VectorBias.size())){
295 for(;i<
G4int(p1.size());i++) MergedVectorBias.push_back(p1[i]);
297 }
else if(p1[i]<VectorBias[j]){
298 MergedVectorBias.push_back(p1[i]);
300 if(i ==
G4int(p1.size())){
301 for(;j<
G4int(VectorBias.size());j++) MergedVectorBias.push_back(VectorBias[j]);
305 MergedVectorBias.push_back(VectorBias[j]);
307 if(j ==
G4int(VectorBias.size())){
308 for(;i<
G4int(p1.size());i++) MergedVectorBias.push_back(p1[i]);
312 return MergedVectorBias;
#define INCLXX_IN_GEANT4_MODE
G4double getParticleListBias() const
std::vector< G4int > getParticleListBiasVector() const
void rotateMomentum(const G4double angle, const ThreeVector &axis) const
void boost(const ThreeVector &b) const
void rotatePosition(const G4double angle, const ThreeVector &axis) const
void rotatePositionAndMomentum(const G4double angle, const ThreeVector &axis) const
G4INCL::ThreeVector * thePropagationMomentum
G4INCL::ThreeVector theMomentum
G4int theParentResonancePDGCode
static std::vector< G4double > INCLBiasVector
Time ordered vector of all bias applied.
void setMass(G4double mass)
G4int theParentResonanceID
G4double thePotentialEnergy
ParticipantType theParticipantType
static void FillINCLBiasVector(G4double newBias)
G4INCL::ParticleType theType
static std::vector< G4int > MergeVectorBias(Particle const *const p1, Particle const *const p2)
G4int theNKaon
The number of Kaons inside the nucleus (update during the cascade).
std::vector< G4int > getBiasCollisionVector() const
Get the vector list of biased vertices on the particle path.
G4double adjustEnergyFromMomentum()
Recompute the energy to match the momentum.
static void setINCLBiasVector(std::vector< G4double > NewVector)
static G4double getTotalBias()
General bias vector function.
const ThreeVector & adjustMomentumFromEnergy()
Rescale the momentum to match the total energy.
G4double uncorrelatedMomentum
G4double getInvariantMass() const
Get the the particle invariant mass.
G4bool isResonance() const
Is it a resonance?
void setType(ParticleType t)
std::string print() const
static G4ThreadLocal G4int nextBiasedCollisionID
G4double * thePropagationEnergy
static G4double getBiasFromVector(std::vector< G4int > VectorBias)
G4INCL::ThreeVector thePosition
G4INCL::ThreeVector theFrozenMomentum
ParticleList::const_iterator ParticleIter
const axis_t axis_to_type< N >::axis