Import Geant4 5.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 10:28:22 +02:00
parent fbd4999cf7
commit 4aea781e80
5454 changed files with 223141 additions and 67347 deletions
@@ -31,7 +31,7 @@
#include "G4NuclWatcher.hh"
//#include "G4ExitonConfiguration.hh"
#include "g4std/vector"
#include <vector>
class G4Analyser {
@@ -40,7 +40,7 @@ public:
G4Analyser();
void setInelCsec(G4double csec,
G4bool withn);
void setWatchers(const G4std::vector<G4NuclWatcher>& watchers);
void setWatchers(const std::vector<G4NuclWatcher>& watchers);
void try_watchers(G4double a,
G4double z,
G4bool if_nucl);
@@ -70,7 +70,7 @@ private:
G4double averagePion0;
G4double averageA;
G4double averageZ;
G4std::vector<G4NuclWatcher> ana_watchers;
std::vector<G4NuclWatcher> ana_watchers;
G4double inel_csec;
G4bool withNuclei;
};
@@ -30,15 +30,15 @@
#include "G4CascadSpecialFunctions.hh"
#include "G4ElementaryParticleCollider.hh"
#include "g4std/vector"
#include <vector>
class G4InuclNuclei;
using namespace G4InuclSpecialFunctions;
using namespace G4CascadSpecialFunctions;
typedef G4std::pair<G4InuclElementaryParticle, G4double> partner;
typedef G4std::vector<partner> partners;
typedef std::pair<G4InuclElementaryParticle, G4double> partner;
typedef std::vector<partner> partners;
class G4BertiniNucleiModel {
@@ -135,7 +135,7 @@ public:
return izone < number_of_zones ? zone_potentials[ip0][izone] : 0.0;
};
G4std::vector<G4CascadParticle>
std::vector<G4CascadParticle>
generateParticleFate(G4CascadParticle& cparticle,
G4ElementaryParticleCollider* theElementaryParticleCollider);
@@ -161,16 +161,16 @@ public:
G4CascadParticle initializeCascad(G4InuclElementaryParticle* particle);
G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> > initializeCascad(G4InuclNuclei* bullet, G4InuclNuclei* target);
std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> > initializeCascad(G4InuclNuclei* bullet, G4InuclNuclei* target);
G4std::pair<G4int, G4int> getTypesOfNucleonsInvolved() const {
return G4std::pair<G4int, G4int>(current_nucl1, current_nucl2);
std::pair<G4int, G4int> getTypesOfNucleonsInvolved() const {
return std::pair<G4int, G4int>(current_nucl1, current_nucl2);
};
G4bool worthToPropagate(const G4CascadParticle& cparticle) const;
private:
G4int verboseLevel; /*!< Each class has a verbosity level of its own. */
G4bool passFermi(const G4std::vector<G4InuclElementaryParticle>& particles,
G4bool passFermi(const std::vector<G4InuclElementaryParticle>& particles,
G4int zone);
void boundaryTransition(G4CascadParticle& cparticle);
@@ -195,15 +195,15 @@ private:
G4double getRatio(G4int ip) const;
G4std::vector<G4std::vector<G4double> > nucleon_densities;
std::vector<std::vector<G4double> > nucleon_densities;
G4std::vector<G4std::vector<G4double> > zone_potentials;
std::vector<std::vector<G4double> > zone_potentials;
G4std::vector<G4std::vector<G4double> > fermi_momenta;
std::vector<std::vector<G4double> > fermi_momenta;
G4std::vector<G4double> zone_radii;
std::vector<G4double> zone_radii;
G4std::vector<G4double> binding_energies;
std::vector<G4double> binding_energies;
G4double nuclei_radius;
@@ -1,77 +0,0 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
#ifndef G4BERTINIREGIONMODEL
#define G4BERTINIREGIONMODEL
#include "G4ios.hh"
#include "g4std/vector"
#include <math.h>
#include "globals.hh"
#include "G4Proton.hh"
#include "G4Neutron.hh"
typedef G4std::vector<G4double>::const_iterator iterator;
class G4BertiniRegionModel /// :public G4VRegionModel
{
public:
G4BertiniRegionModel(const G4int numberOfLayers, const G4int A, const G4int Z);
~G4BertiniRegionModel();
/// instead of A and Z outer radius of the nucleus?
/// void Init(const G4int numberOfLayers, const G4int A, const G4int Z);
G4double GetDensity(G4double radius);
G4double GetPotentialEnergy(G4double r, G4int particle);
G4double GetMaximumNucleonMomentum(G4double radius, G4int nucleon);
/// G4double NumberOfRegions();
private:
G4int massNumber;
G4int protonNumber;
G4std::vector<G4double> radius; /// contains the outer radiuses of the shells
G4std::vector<G4double> density;
G4std::vector<G4double> protonFermiEnergy;
G4std::vector<G4double> neutronFermiEnergy;
G4std::vector<G4double> protonFermiMomentum;
G4std::vector<G4double> neutronFermiMomentum;
G4std::vector<G4double> protonPotentialEnergy;
G4std::vector<G4double> neutronPotentialEnergy;
static const G4double radius0;
static const G4double BE;
/// static const G4double pi = 3.141592;
G4double GetFermiMomentum(G4double density, G4double mass);
G4double GetFermiEnergy(G4double density, G4double mass);
};
#endif
@@ -41,13 +41,13 @@ public:
private:
G4int verboseLevel;
G4std::vector<G4InuclElementaryParticle> generateBangInSCM(G4double etot,
std::vector<G4InuclElementaryParticle> generateBangInSCM(G4double etot,
G4double a,
G4double z,
G4double mp,
G4double mn) const;
G4std::vector<G4double> generateMomentumModules(G4double etot,
std::vector<G4double> generateMomentumModules(G4double etot,
G4double a,
G4double z,
G4double mp,
@@ -31,7 +31,7 @@ public:
G4CascadParticle();
G4CascadParticle(const G4InuclElementaryParticle& particle,
const G4std::vector<G4double>& pos,
const std::vector<G4double>& pos,
G4int izone,
G4double cpath)
@@ -44,11 +44,11 @@ public:
reflectionCounter = 0;
};
void updateParticleMomentum(const G4std::vector<G4double>& mom) {
void updateParticleMomentum(const std::vector<G4double>& mom) {
theParticle.setMomentum(mom);
};
void updatePosition(const G4std::vector<G4double>& pos) {
void updatePosition(const std::vector<G4double>& pos) {
position = pos;
};
@@ -76,7 +76,7 @@ public:
G4double getPathToTheNextZone(G4double rz_in,
G4double rz_out);
G4std::vector<G4double> getMomentum() const {
std::vector<G4double> getMomentum() const {
return theParticle.getMomentum();
};
@@ -84,7 +84,7 @@ public:
return theParticle;
};
G4std::vector<G4double> getPosition() const {
std::vector<G4double> getPosition() const {
return position;
};
@@ -126,7 +126,7 @@ private:
G4int verboseLevel;
G4InuclElementaryParticle theParticle;
G4std::vector<G4double> position;
std::vector<G4double> position;
G4int current_zone;
G4double current_path;
G4bool movingIn;
@@ -25,14 +25,14 @@
#include "globals.hh"
#include <math.h>
#include "g4std/algorithm"
#include "g4std/vector"
#include <algorithm>
#include <vector>
namespace G4CascadSpecialFunctions {
G4std::pair<G4int, G4double> getPositionInEnergyScale2(G4double e);
std::pair<G4int, G4double> getPositionInEnergyScale2(G4double e);
G4std::pair<G4int, G4double> getPositionInEnergyScale1(G4double e);
std::pair<G4int, G4double> getPositionInEnergyScale1(G4double e);
G4double absorptionCrosSection(G4double e,
G4int type);
@@ -40,7 +40,7 @@ namespace G4CascadSpecialFunctions {
G4double crossSection(G4double e,
G4int is);
G4std::pair<G4int, G4double> getPositionInEnergyScaleEMS(G4double e);
std::pair<G4int, G4double> getPositionInEnergyScaleEMS(G4double e);
}
#endif
@@ -22,13 +22,13 @@
#ifndef G4COLLISION_OUTPUT_HH
#define G4COLLISION_OUTPUT_HH
#include "g4std/iostream"
#include <iostream>
#include "G4InuclElementaryParticle.hh"
#include "G4InuclNuclei.hh"
#include "g4std/algorithm"
#include "g4std/vector"
#include <algorithm>
#include <vector>
class G4CollisionOutput {
@@ -46,7 +46,7 @@ public:
outgoingParticles.push_back(particle);
};
void addOutgoingParticles(const G4std::vector<G4InuclElementaryParticle>& particles) {
void addOutgoingParticles(const std::vector<G4InuclElementaryParticle>& particles) {
for(G4int i = 0; i < G4int(particles.size()); i++)
outgoingParticles.push_back(particles[i]);
};
@@ -55,12 +55,12 @@ public:
nucleiFragments.push_back(nuclei);
};
void addTargetFragments(const G4std::vector<G4InuclNuclei>& nuclea) {
void addTargetFragments(const std::vector<G4InuclNuclei>& nuclea) {
for(G4int i = 0; i < G4int(nuclea.size()); i++)
nucleiFragments.push_back(nuclea[i]);
};
G4std::vector<G4InuclElementaryParticle> getOutgoingParticles() const {
std::vector<G4InuclElementaryParticle> getOutgoingParticles() const {
return outgoingParticles;
};
@@ -68,20 +68,20 @@ public:
return nucleiFragments.size();
};
G4std::vector<G4InuclNuclei> getNucleiFragments() const {
std::vector<G4InuclNuclei> getNucleiFragments() const {
return nucleiFragments;
};
G4std::vector<G4double> getTotalOutputMomentum() const {
G4std::vector<G4double> tot_mom(4, 0.0);
std::vector<G4double> getTotalOutputMomentum() const {
std::vector<G4double> tot_mom(4, 0.0);
double eex_r = 0.0;
G4int i(0);
for(i = 0; i < G4int(outgoingParticles.size()); i++) {
G4std::vector<G4double> mom = outgoingParticles[i].getMomentum();
std::vector<G4double> mom = outgoingParticles[i].getMomentum();
for(G4int j = 0; j < 4; j++) tot_mom[j] += mom[j];
};
for(i = 0; i < G4int(nucleiFragments.size()); i++) {
G4std::vector<G4double> mom = nucleiFragments[i].getMomentum();
std::vector<G4double> mom = nucleiFragments[i].getMomentum();
for(G4int j = 0; j < 4; j++) tot_mom[j] += mom[j];
eex_r += 0.001 * nucleiFragments[i].getExitationEnergy();
};
@@ -142,13 +142,13 @@ public:
private:
G4int verboseLevel;
G4std::vector<G4InuclElementaryParticle> outgoingParticles;
std::vector<G4InuclElementaryParticle> outgoingParticles;
G4std::vector<G4InuclNuclei> nucleiFragments;
std::vector<G4InuclNuclei> nucleiFragments;
G4double eex_rest;
G4std::pair<G4std::pair<G4int, G4int>, G4int> selectPairToTune(G4double de) const;
std::pair<std::pair<G4int, G4int>, G4int> selectPairToTune(G4double de) const;
G4bool on_shell;
@@ -45,13 +45,13 @@ private:
G4int generateMultiplicity(G4int is,
G4double ekin) const;
G4std::vector<G4InuclElementaryParticle> generateSCMfinalState(G4double ekin,
std::vector<G4InuclElementaryParticle> generateSCMfinalState(G4double ekin,
G4double etot_scm, G4double pscm,
G4InuclElementaryParticle* particle1,
G4InuclElementaryParticle* particle2,
G4LorentzConvertor* toSCM) const;
G4std::vector<G4double> generateMomModules(const G4std::vector<G4int>& kinds,
std::vector<G4double> generateMomModules(const std::vector<G4int>& kinds,
G4int mult,
G4int is,
G4double ekin,
@@ -60,7 +60,7 @@ private:
G4bool reChargering(G4double ekin,
G4int is) const;
G4std::vector<G4double> particleSCMmomentumFor2to2(G4int is,
std::vector<G4double> particleSCMmomentumFor2to2(G4int is,
G4int kw,
G4double ekin,
G4double pscm) const;
@@ -69,7 +69,7 @@ private:
G4int kw,
G4double ekin) const;
G4std::vector<G4int> generateOutgoingKindsFor2toMany(G4int is,
std::vector<G4int> generateOutgoingKindsFor2toMany(G4int is,
G4int mult,
G4double ekin) const;
@@ -78,9 +78,9 @@ private:
G4int knd,
G4double ekin) const;
G4bool satisfyTriangle(const G4std::vector<G4double>& modules) const;
G4bool satisfyTriangle(const std::vector<G4double>& modules) const;
G4std::vector<G4double> particleSCMmomentumFor2to3(G4int is,
std::vector<G4double> particleSCMmomentumFor2to3(G4int is,
G4int knd,
G4double ekin,
G4double pmod) const;
@@ -88,15 +88,15 @@ private:
G4int getIL(G4int is,
G4int mult) const;
G4std::pair<G4double, G4double> adjustIntervalForElastic(G4double ekin,
std::pair<G4double, G4double> adjustIntervalForElastic(G4double ekin,
G4double ak,
G4double ae,
G4int k,
G4int l,
const G4std::vector<G4double>& ssv,
const std::vector<G4double>& ssv,
G4double st) const;
G4std::vector<G4InuclElementaryParticle>
std::vector<G4InuclElementaryParticle>
generateSCMpionAbsorption(G4double etot_scm,
G4InuclElementaryParticle* particle1,
G4InuclElementaryParticle* particle2) const;
@@ -23,7 +23,7 @@
#define G4FISSION_CONFIGURATION_HH
#include "globals.hh"
#include "g4std/iostream"
#include <iostream>
class G4FissionConfiguration {
@@ -24,7 +24,7 @@
#include "G4FissionConfiguration.hh"
#include "g4std/vector"
#include <vector>
class G4FissionStore {
@@ -52,7 +52,7 @@ public:
private:
G4int verboseLevel;
G4std::vector<G4FissionConfiguration> configurations;
std::vector<G4FissionConfiguration> configurations;
};
@@ -52,14 +52,14 @@ G4int verboseLevel;
G4double R12) const;
void potentialMinimization(G4double& VP,
G4std::vector<G4double>& ED,
std::vector<G4double>& ED,
G4double& VC,
G4double AF,
G4double AS,
G4double ZF,
G4double ZS,
G4std::vector<G4double>& AL1,
G4std::vector<G4double>& BET1,
std::vector<G4double>& AL1,
std::vector<G4double>& BET1,
G4double& R12) const;
};
@@ -26,14 +26,14 @@
#include "G4InuclParticle.hh"
//#endif
#include "g4std/algorithm"
#include <algorithm>
class G4InteractionCase {
public:
G4InteractionCase() {
bultag = G4std::pair<G4InuclParticle*, G4InuclParticle*>(0, 0);
bultag = std::pair<G4InuclParticle*, G4InuclParticle*>(0, 0);
inter_case = 0;
};
@@ -46,7 +46,7 @@ public:
void setBulletTarget(G4InuclParticle* part1,
G4InuclParticle* part2) {
bultag = G4std::pair<G4InuclParticle*, G4InuclParticle*>(part1, part2);
bultag = std::pair<G4InuclParticle*, G4InuclParticle*>(part1, part2);
};
void setInterCase(G4int ic) {
@@ -67,7 +67,7 @@ public:
private:
G4std::pair<G4InuclParticle*, G4InuclParticle*> bultag;
std::pair<G4InuclParticle*, G4InuclParticle*> bultag;
G4int inter_case;
@@ -55,7 +55,7 @@ public:
valid_particle = false;
};
G4InuclElementaryParticle(const G4std::vector<G4double>& mom,
G4InuclElementaryParticle(const std::vector<G4double>& mom,
G4int type)
: G4InuclParticle(mom),
particleType(type) {
@@ -84,7 +84,7 @@ public:
particleMass = getParticleMass(ityp);
};
void setMomentum(const G4std::vector<G4double>& mom) {
void setMomentum(const std::vector<G4double>& mom) {
momentum = mom;
momentum[0] = sqrt(momentum[1] * momentum[1] + momentum[2] * momentum[2] +
@@ -45,7 +45,7 @@ public:
exitationEnergy = 0.0;
};
G4InuclNuclei(const G4std::vector<G4double>& mom,
G4InuclNuclei(const std::vector<G4double>& mom,
G4double a,
G4double z)
: G4InuclParticle(mom),
@@ -63,7 +63,7 @@ public:
Z(z) {
setNucleiMass();
G4std::vector<G4double> mom(4, 0.0);
std::vector<G4double> mom(4, 0.0);
mom[0] = ekin + nucleiMass;
mom[3] = sqrt(mom[0] * mom[0] - nucleiMass * nucleiMass);
G4InuclParticle::setMomentum(mom);
@@ -26,8 +26,8 @@
#include "globals.hh"
#endif
#include "g4std/iostream"
#include "g4std/vector"
#include <iostream>
#include <vector>
class G4InuclParticle {
@@ -37,17 +37,17 @@ public:
virtual ~G4InuclParticle() { };
G4InuclParticle(const G4std::vector<G4double>& mom) {
G4InuclParticle(const std::vector<G4double>& mom) {
setMomentum(mom);
};
void setMomentum(const G4std::vector<G4double>& mom) {
void setMomentum(const std::vector<G4double>& mom) {
momentum = mom;
};
G4std::vector<G4double> getMomentum() const {
std::vector<G4double> getMomentum() const {
return momentum;
};
@@ -71,7 +71,7 @@ public:
protected:
G4std::vector<G4double> momentum;
std::vector<G4double> momentum;
};
@@ -24,8 +24,8 @@
#include "globals.hh"
#include <math.h>
#include "g4std/algorithm"
#include "g4std/vector"
#include <algorithm>
#include <vector>
namespace G4InuclSpecialFunctions {
@@ -46,9 +46,9 @@ namespace G4InuclSpecialFunctions {
G4double Z,
G4int ntype);
G4std::pair<G4std::vector<G4double>, G4std::vector<G4double> > paraMaker(G4double Z);
std::pair<std::vector<G4double>, std::vector<G4double> > paraMaker(G4double Z);
G4std::pair<G4double, G4double> paraMakerTruncated(G4double Z);
std::pair<G4double, G4double> paraMakerTruncated(G4double Z);
G4double getAL(G4double A);
@@ -62,11 +62,11 @@ namespace G4InuclSpecialFunctions {
G4double randomPHI();
G4std::pair<G4double, G4double> randomCOS_SIN();
std::pair<G4double, G4double> randomCOS_SIN();
G4double nucleiLevelDensity(G4double a);
G4std::vector<G4double> generateWithFixedTheta(G4double ct,
std::vector<G4double> generateWithFixedTheta(G4double ct,
G4double p);
}
#endif
@@ -26,7 +26,7 @@
#include "globals.hh"
#endif
#include "g4std/vector"
#include <vector>
class G4LorentzConvertor {
@@ -34,9 +34,9 @@ public:
G4LorentzConvertor();
G4LorentzConvertor(const G4std::vector<G4double>& bmom,
G4LorentzConvertor(const std::vector<G4double>& bmom,
G4double bmass,
const G4std::vector<G4double>& tmom,
const std::vector<G4double>& tmom,
G4double tmass) {
setBullet(bmom, bmass);
@@ -44,7 +44,7 @@ public:
degenerated = false;
};
void setBullet(const G4std::vector<G4double>& bmom,
void setBullet(const std::vector<G4double>& bmom,
G4double bmass) {
bullet_mom = bmom;
@@ -52,7 +52,7 @@ public:
// G4cout << " bullet: e " << bmom[0] << " mass " << bmass << G4endl;
};
void setTarget(const G4std::vector<G4double>& tmom,
void setTarget(const std::vector<G4double>& tmom,
G4double tmass) {
target_mom = tmom;
@@ -64,7 +64,7 @@ public:
void toTheTargetRestFrame();
G4std::vector<G4double> backToTheLab(const G4std::vector<G4double>& mom) const;
std::vector<G4double> backToTheLab(const std::vector<G4double>& mom) const;
G4double getKinEnergyInTheTRS() const {
@@ -91,10 +91,10 @@ public:
return plab;
};
G4std::vector<G4double> rotate(const G4std::vector<G4double> mom) const;
std::vector<G4double> rotate(const std::vector<G4double> mom) const;
G4std::vector<G4double> rotate(const G4std::vector<G4double> mom1,
const G4std::vector<G4double> mom) const;
std::vector<G4double> rotate(const std::vector<G4double> mom1,
const std::vector<G4double> mom) const;
G4bool reflectionNeeded() const;
@@ -104,15 +104,15 @@ public:
private:
G4int verboseLevel;
G4std::vector<G4double> bullet_mom;
std::vector<G4double> bullet_mom;
G4double bullet_mass;
G4std::vector<G4double> target_mom;
std::vector<G4double> target_mom;
G4double target_mass;
G4std::vector<G4double> velocity;
std::vector<G4double> velocity;
G4std::vector<G4double> scm_momentum;
std::vector<G4double> scm_momentum;
G4double ecm_tot;
@@ -26,8 +26,8 @@
#include "globals.hh"
#endif
#include "g4std/algorithm"
#include "g4std/vector"
#include <algorithm>
#include <vector>
#include <math.h>
class G4NuclWatcher {
@@ -35,9 +35,9 @@ class G4NuclWatcher {
public:
G4NuclWatcher(G4double z,
G4std::vector<G4double> expa,
G4std::vector<G4double> expcs,
G4std::vector<G4double> experr,
std::vector<G4double> expa,
std::vector<G4double> expcs,
std::vector<G4double> experr,
G4bool check,
G4bool nucl)
: nuclz(z),
@@ -89,12 +89,12 @@ public:
return izotop_chsq;
};
G4std::pair<G4double, G4double> getAverageRatio() const {
std::pair<G4double, G4double> getAverageRatio() const {
return G4std::pair<G4double, G4double>(average_ratio, aver_rat_err);
return std::pair<G4double, G4double>(average_ratio, aver_rat_err);
};
G4std::pair<G4double, G4double> getExpCs() const {
std::pair<G4double, G4double> getExpCs() const {
G4double cs = 0.0;
G4double err = 0.0;
@@ -105,7 +105,7 @@ public:
err += exper_err[iz];
};
return G4std::pair<G4double, G4double>(cs, err);
return std::pair<G4double, G4double>(cs, err);
};
G4bool to_check() const {
@@ -118,7 +118,7 @@ public:
return nucleable;
};
G4std::pair<G4double, G4double> getInuclCs() const {
std::pair<G4double, G4double> getInuclCs() const {
G4double cs = 0.0;
G4double err = 0.0;
@@ -128,7 +128,7 @@ public:
err += simulated_errors[iz];
};
return G4std::pair<G4double, G4double>(cs, err);
return std::pair<G4double, G4double>(cs, err);
};
void print() {
@@ -146,7 +146,7 @@ public:
G4double exp_cs_err = 0.0;
G4double inucl_cs = 0.0;
G4double inucl_cs_err = 0.0;
G4std::vector<G4bool> not_used(simulated_cs.size(), true);
std::vector<G4bool> not_used(simulated_cs.size(), true);
G4int nmatched = exper_as.size();
G4int nused = simulated_cs.size();
G4double lhood = 0.0;
@@ -253,19 +253,19 @@ private:
G4double aver_matched;
G4std::vector<G4double> exper_as;
std::vector<G4double> exper_as;
G4std::vector<G4double> exper_cs;
std::vector<G4double> exper_cs;
G4std::vector<G4double> exper_err;
std::vector<G4double> exper_err;
G4std::vector<G4double> simulated_as;
std::vector<G4double> simulated_as;
G4std::vector<G4double> simulated_cs;
std::vector<G4double> simulated_cs;
G4std::vector<G4double> simulated_errors;
std::vector<G4double> simulated_errors;
G4std::vector<G4double> simulated_prob;
std::vector<G4double> simulated_prob;
G4bool checkable;
@@ -32,15 +32,15 @@
#include "G4CascadSpecialFunctions.hh"
#include "G4ElementaryParticleCollider.hh"
#include "g4std/vector"
#include <vector>
class G4InuclNuclei;
using namespace G4InuclSpecialFunctions;
using namespace G4CascadSpecialFunctions;
typedef G4std::pair<G4InuclElementaryParticle, G4double> partner;
typedef G4std::vector<partner> partners;
typedef std::pair<G4InuclElementaryParticle, G4double> partner;
typedef std::vector<partner> partners;
class G4NucleiModel {
@@ -99,7 +99,7 @@ public:
return izone < number_of_zones ? zone_potentials[ip0][izone] : 0.0;
};
G4std::vector<G4CascadParticle>
std::vector<G4CascadParticle>
generateParticleFate(G4CascadParticle& cparticle,
G4ElementaryParticleCollider* theElementaryParticleCollider);
@@ -125,10 +125,10 @@ public:
G4CascadParticle initializeCascad(G4InuclElementaryParticle* particle);
G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> > initializeCascad(G4InuclNuclei* bullet, G4InuclNuclei* target);
std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> > initializeCascad(G4InuclNuclei* bullet, G4InuclNuclei* target);
G4std::pair<G4int, G4int> getTypesOfNucleonsInvolved() const {
return G4std::pair<G4int, G4int>(current_nucl1, current_nucl2);
std::pair<G4int, G4int> getTypesOfNucleonsInvolved() const {
return std::pair<G4int, G4int>(current_nucl1, current_nucl2);
};
G4bool worthToPropagate(const G4CascadParticle& cparticle) const;
@@ -137,7 +137,7 @@ public:
private:
G4int verboseLevel;
G4bool passFermi(const G4std::vector<G4InuclElementaryParticle>& particles,
G4bool passFermi(const std::vector<G4InuclElementaryParticle>& particles,
G4int zone);
void boundaryTransition(G4CascadParticle& cparticle);
@@ -159,15 +159,15 @@ G4int verboseLevel;
G4double getRatio(G4int ip) const;
G4std::vector<G4std::vector<G4double> > nucleon_densities;
std::vector<std::vector<G4double> > nucleon_densities;
G4std::vector<G4std::vector<G4double> > zone_potentials;
std::vector<std::vector<G4double> > zone_potentials;
G4std::vector<G4std::vector<G4double> > fermi_momenta;
std::vector<std::vector<G4double> > fermi_momenta;
G4std::vector<G4double> zone_radii;
std::vector<G4double> zone_radii;
G4std::vector<G4double> binding_energies;
std::vector<G4double> binding_energies;
G4double nuclei_radius;
@@ -1,78 +0,0 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
#ifndef G4REGIONMODEL
#define G4REGIONMODEL
#include "G4ios.hh"
#include "g4std/vector"
#include <math.h>
#include "globals.hh"
#include "G4Proton.hh"
#include "G4Neutron.hh"
//#include "G4NucleusModel.hh"
typedef G4std::vector<G4double>::const_iterator iterator;
class G4RegionModel //:public G4VRegionModel
{
public:
G4RegionModel(const G4int numberOfLayers, const G4int A, const G4int Z);
~G4RegionModel();
//instead of A and Z outer radius of the nucleus?
//void Init(const G4int numberOfLayers, const G4int A, const G4int Z);
G4double GetDensity(G4double radius);
G4double GetPotentialEnergy(G4double r, G4int particle);
G4double GetMaximumNucleonMomentum(G4double radius, G4int nucleon);
// G4double NumberOfRegions();
private:
G4int massNumber;
G4int protonNumber;
G4std::vector<G4double> radius; //contains the outer radiuses of the shells
G4std::vector<G4double> density;
G4std::vector<G4double> protonFermiEnergy;
G4std::vector<G4double> neutronFermiEnergy;
G4std::vector<G4double> protonFermiMomentum;
G4std::vector<G4double> neutronFermiMomentum;
G4std::vector<G4double> protonPotentialEnergy;
G4std::vector<G4double> neutronPotentialEnergy;
static const G4double radius0;
static const G4double BE;
//static const G4double pi = 3.141592;
G4double GetFermiMomentum(G4double density, G4double mass);
G4double GetFermiEnergy(G4double density, G4double mass);
};
#endif
@@ -23,7 +23,7 @@
#define G4WATCHER_GUN_HH
#include "G4NuclWatcher.hh"
#include "g4std/vector"
#include <vector>
class G4WatcherGun {
@@ -32,14 +32,14 @@ public:
G4WatcherGun();
void setWatchers();
G4std::vector<G4NuclWatcher> getWatchers() const {
std::vector<G4NuclWatcher> getWatchers() const {
return watchers;
};
private:
G4int verboseLevel;
G4std::vector<G4NuclWatcher> watchers;
std::vector<G4NuclWatcher> watchers;
};
@@ -65,7 +65,7 @@ void G4Analyser::setInelCsec(G4double csec,
}
}
void G4Analyser::setWatchers(const G4std::vector<G4NuclWatcher>& watchers) {
void G4Analyser::setWatchers(const std::vector<G4NuclWatcher>& watchers) {
if (verboseLevel > 3) {
G4cout << " >>> G4Analyser::setWatchers" << G4endl;
@@ -106,7 +106,7 @@ void G4Analyser::analyse(const G4CollisionOutput& output) {
}
if (withNuclei) {
G4std::vector<G4InuclNuclei> nucleus = output.getNucleiFragments();
std::vector<G4InuclNuclei> nucleus = output.getNucleiFragments();
if (nucleus.size() >= 0) {
G4int nbig = 0;
@@ -129,7 +129,7 @@ void G4Analyser::analyse(const G4CollisionOutput& output) {
if (nbig > 1) fissy_prob += 1.0;
eventNumber += 1.0;
G4std::vector<G4InuclElementaryParticle> particles = output.getOutgoingParticles();
std::vector<G4InuclElementaryParticle> particles = output.getOutgoingParticles();
averageMultiplicity += particles.size();
for (G4int i = 0; i < G4int(particles.size()); i++) {
@@ -176,7 +176,7 @@ void G4Analyser::analyse(const G4CollisionOutput& output) {
} else {
eventNumber += 1.0;
G4std::vector<G4InuclElementaryParticle> particles = output.getOutgoingParticles();
std::vector<G4InuclElementaryParticle> particles = output.getOutgoingParticles();
averageMultiplicity += particles.size();
for (G4int i = 0; i < G4int(particles.size()); i++) {
@@ -294,14 +294,14 @@ void G4Analyser::handleWatcherStatistics() {
ana_watchers[iw].print();
if (ana_watchers[iw].to_check()) {
G4std::pair<G4double, G4double> rat_err = ana_watchers[iw].getAverageRatio();
std::pair<G4double, G4double> rat_err = ana_watchers[iw].getAverageRatio();
averat += rat_err.first;
ave_err += rat_err.second;
gl_chsq += ana_watchers[iw].getChsq();
G4std::pair<G4double, G4double> cs_err = ana_watchers[iw].getExpCs();
std::pair<G4double, G4double> cs_err = ana_watchers[iw].getExpCs();
tot_exper += cs_err.first;
tot_exper_err += cs_err.second;
G4std::pair<G4double, G4double> inucl_cs_err = ana_watchers[iw].getInuclCs();
std::pair<G4double, G4double> inucl_cs_err = ana_watchers[iw].getInuclCs();
tot_inucl += inucl_cs_err.first;
tot_inucl_err += inucl_cs_err.second;
G4double iz_checked = ana_watchers[iw].getNmatched();
@@ -24,7 +24,7 @@
#include "G4LorentzConvertor.hh"
#include "G4CollisionOutput.hh"
typedef G4std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
G4BertiniNucleiModel::G4BertiniNucleiModel()
: verboseLevel(2) {
@@ -75,7 +75,7 @@ void G4BertiniNucleiModel::generateModel(G4double a,
G4double CU2 = 0.0;
if (a > 3.5) { /// a > 3
G4std::vector<G4double> ur;
std::vector<G4double> ur;
G4int icase = 0;
if (a > 11.5) { /// a > 11
@@ -106,8 +106,8 @@ void G4BertiniNucleiModel::generateModel(G4double a,
};
G4double tot_vol = 0.0;
G4std::vector<G4double> v;
G4std::vector<G4double> v1;
std::vector<G4double> v;
std::vector<G4double> v1;
G4int i(0);
for (i = 0; i < number_of_zones; i++) {
@@ -130,9 +130,9 @@ void G4BertiniNucleiModel::generateModel(G4double a,
/// proton
G4double dd0 = 3.0 * z * oneBypiTimes4 / tot_vol;
G4std::vector<G4double> rod;
G4std::vector<G4double> pf;
G4std::vector<G4double> vz;
std::vector<G4double> rod;
std::vector<G4double> pf;
std::vector<G4double> vz;
for (i = 0; i < number_of_zones; i++) {
G4double rd = dd0 * v[i] / v1[i];
@@ -164,7 +164,7 @@ void G4BertiniNucleiModel::generateModel(G4double a,
zone_potentials.push_back(vz);
fermi_momenta.push_back(pf);
/// pion
G4std::vector<G4double> vp(number_of_zones, pion_vp);
std::vector<G4double> vp(number_of_zones, pion_vp);
zone_potentials.push_back(vp);
} else { /// a < 4
@@ -172,9 +172,9 @@ void G4BertiniNucleiModel::generateModel(G4double a,
number_of_zones = 1;
zone_radii.push_back(radForSmall);
G4double vol = 1.0 / piTimes4thirds / pow(zone_radii[0], 3);
G4std::vector<G4double> rod;
G4std::vector<G4double> pf;
G4std::vector<G4double> vz;
std::vector<G4double> rod;
std::vector<G4double> pf;
std::vector<G4double> vz;
G4int i(0);
for (i = 0; i < number_of_zones; i++) {
@@ -207,7 +207,7 @@ void G4BertiniNucleiModel::generateModel(G4double a,
fermi_momenta.push_back(pf);
/// pion
G4std::vector<G4double> vp(number_of_zones, pion_vp_small);
std::vector<G4double> vp(number_of_zones, pion_vp_small);
zone_potentials.push_back(vp);
};
@@ -355,8 +355,8 @@ G4InuclElementaryParticle G4BertiniNucleiModel::generateNucleon(G4int type,
const G4double one_third = 1.0 / 3.0;
///G4double pmod = getFermiMomentum(type, zone) * pow(inuclRndm(), one_third);
G4double pmod = fermi_momenta[type - 1][zone] * pow(inuclRndm(), one_third);
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double pt = pmod * COS_SIN.second;
mom[1] = pt * cos(FI);
@@ -374,11 +374,11 @@ G4InuclElementaryParticle G4BertiniNucleiModel::generateQuasiDeutron(G4int type1
G4cout << " >>> G4BertiniNucleiModel::generateQuasiDeutron" << G4endl;
}
G4std::vector<G4double> mom = generateNucleon(type1, zone).getMomentum();
std::vector<G4double> mom = generateNucleon(type1, zone).getMomentum();
G4std::vector<G4double> mom1 = generateNucleon(type2, zone).getMomentum();
std::vector<G4double> mom1 = generateNucleon(type2, zone).getMomentum();
G4std::vector<G4double> dmom(4);
std::vector<G4double> dmom(4);
for(G4int i = 1; i < 4; i++) dmom[i] = mom[i] + mom1[i];
@@ -422,7 +422,7 @@ partners G4BertiniNucleiModel::generateInteractionPartners(G4CascadParticle& cpa
G4int ptype = cparticle.getParticle().type();
G4int zone = cparticle.getCurrentZone();
G4double pmass = cparticle.getParticle().getMass();
G4std::vector<G4double> pmom = cparticle.getParticle().getMomentum();
std::vector<G4double> pmom = cparticle.getParticle().getMomentum();
G4double r_in;
G4double r_out;
@@ -460,7 +460,7 @@ partners G4BertiniNucleiModel::generateInteractionPartners(G4CascadParticle& cpa
} else { /// normal case
G4std::vector<G4InuclElementaryParticle> particles;
std::vector<G4InuclElementaryParticle> particles;
G4LorentzConvertor dummy_convertor;
dummy_convertor.setBullet(pmom, pmass);
@@ -509,8 +509,8 @@ partners G4BertiniNucleiModel::generateInteractionPartners(G4CascadParticle& cpa
}
if (cparticle.getParticle().pion()) { /// absorption possible
G4std::vector<G4InuclElementaryParticle> qdeutrons;
G4std::vector<G4double> acsecs;
std::vector<G4InuclElementaryParticle> qdeutrons;
std::vector<G4double> acsecs;
G4double tot_abs_csec = 0.0;
G4double abs_sec;
G4double vol = pow(zone_radii[zone], 3);
@@ -650,14 +650,14 @@ partners G4BertiniNucleiModel::generateInteractionPartners(G4CascadParticle& cpa
return thePartners;
}
G4std::vector<G4CascadParticle> G4BertiniNucleiModel::generateParticleFate(G4CascadParticle& cparticle,
std::vector<G4CascadParticle> G4BertiniNucleiModel::generateParticleFate(G4CascadParticle& cparticle,
G4ElementaryParticleCollider* theElementaryParticleCollider) {
if (verboseLevel > 3) {
G4cout << " >>> G4BertiniNucleiModel::generateParticleFate" << G4endl;
}
G4std::vector<G4CascadParticle> outgouing_cparticles;
std::vector<G4CascadParticle> outgouing_cparticles;
partners thePartners = generateInteractionPartners(cparticle);
@@ -682,7 +682,7 @@ G4std::vector<G4CascadParticle> G4BertiniNucleiModel::generateParticleFate(G4Cas
} else { /// there are possible interactions
G4std::vector<G4double> old_position = cparticle.getPosition();
std::vector<G4double> old_position = cparticle.getPosition();
G4InuclElementaryParticle bullet = cparticle.getParticle();
G4bool no_interaction = true;
G4int zone = cparticle.getCurrentZone();
@@ -705,13 +705,13 @@ G4std::vector<G4CascadParticle> G4BertiniNucleiModel::generateParticleFate(G4Cas
output.printCollisionOutput();
}
G4std::vector<G4InuclElementaryParticle> outgoing_particles =
std::vector<G4InuclElementaryParticle> outgoing_particles =
output.getOutgoingParticles();
if(passFermi(outgoing_particles, zone)) { /// interaction
cparticle.propagateAlongThePath(thePartners[i].second);
G4std::vector<G4double> new_position = cparticle.getPosition();
std::vector<G4double> new_position = cparticle.getPosition();
for (G4int ip = 0; ip < G4int(outgoing_particles.size()); ip++)
outgouing_cparticles.push_back(G4CascadParticle(outgoing_particles[ip],
@@ -783,7 +783,7 @@ G4std::vector<G4CascadParticle> G4BertiniNucleiModel::generateParticleFate(G4Cas
return outgouing_cparticles;
}
G4bool G4BertiniNucleiModel::passFermi(const G4std::vector<G4InuclElementaryParticle>& particles,
G4bool G4BertiniNucleiModel::passFermi(const std::vector<G4InuclElementaryParticle>& particles,
G4int zone) {
if (verboseLevel > 3) {
G4cout << " >>> G4BertiniNucleiModel::passFermi" << G4endl;
@@ -825,8 +825,8 @@ void G4BertiniNucleiModel::boundaryTransition(G4CascadParticle& cparticle) {
} else {
G4std::vector<G4double> mom = cparticle.getMomentum();
G4std::vector<G4double> pos = cparticle.getPosition();
std::vector<G4double> mom = cparticle.getMomentum();
std::vector<G4double> pos = cparticle.getPosition();
G4int type = cparticle.getParticle().type();
G4double pr = 0.0;
G4double r = 0.0;
@@ -926,7 +926,7 @@ G4CascadParticle G4BertiniNucleiModel::initializeCascad(G4InuclElementaryParticl
G4double s1 = sqrt(inuclRndm());
G4double phi = randomPHI();
G4double rz = nuclei_radius * s1;
G4std::vector<G4double> pos(3);
std::vector<G4double> pos(3);
pos[0] = rz * cos(phi);
pos[1] = rz * sin(phi);
pos[2] = -nuclei_radius * sqrt(1.0 - s1 * s1);
@@ -940,7 +940,7 @@ G4CascadParticle G4BertiniNucleiModel::initializeCascad(G4InuclElementaryParticl
return cpart;
}
G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> >
std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4InuclNuclei* target) {
@@ -960,8 +960,8 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
const G4double s4max = 7.0;
const G4int itry_max = 100;
G4std::vector<G4CascadParticle> casparticles;
G4std::vector<G4InuclElementaryParticle> particles;
std::vector<G4CascadParticle> casparticles;
std::vector<G4InuclElementaryParticle> particles;
G4double ab = bullet->getA();
@@ -983,14 +983,14 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
if (itryg > 0) particles.resize(0);
G4std::vector<G4std::vector<G4double> > coordinates; /// nucleons coordinates in nuclei rest frame
G4std::vector<G4std::vector<G4double> > momentums;
std::vector<std::vector<G4double> > coordinates; /// nucleons coordinates in nuclei rest frame
std::vector<std::vector<G4double> > momentums;
if (ab < 3.0) { /// deutron, simplest case
G4double r = 2.214 - 3.4208 * log(1.0 - 0.981 * inuclRndm());
G4double s = 2.0 * inuclRndm() - 1.0;
G4double r1 = r * sqrt(1.0 - s * s);
G4std::vector<G4double> coord1(3);
std::vector<G4double> coord1(3);
G4double phi = randomPHI();
coord1[0] = r1 * cos(phi);
coord1[1] = r1 * sin(phi);
@@ -1026,8 +1026,8 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4cout << " p nuc " << p << G4endl;
}
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double P1 = p * COS_SIN.second;
mom[1] = P1 * cos(FI);
@@ -1041,7 +1041,7 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
} else {
G4int ia = G4int(ab + 0.5);
G4std::vector<G4double> coord1(3);
std::vector<G4double> coord1(3);
G4bool badco = true;
G4int itry = 0;
@@ -1068,7 +1068,7 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
if (sqrt(s) * exp(-s) > u && s < s3max) {
s = r0forAeq3 * sqrt(s);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
u = s * COS_SIN.second;
G4double phi = randomPHI();
coord1[0] = u * cos(phi);
@@ -1156,7 +1156,7 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
if (sqrt(s) * exp(-s) * (1.0 + b * s) > u && s < s4max) {
s = r0forAeq4 * sqrt(s);
G4std::pair<double, double> COS_SIN = randomCOS_SIN();
std::pair<double, double> COS_SIN = randomCOS_SIN();
u = s * COS_SIN.second;
G4double phi = randomPHI();
coord1[0] = u * cos(phi);
@@ -1227,14 +1227,14 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4cout << " can not generate the nucleons coordinates for a " << ab <<
G4endl;
return G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> >
return std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
(casparticles, particles);
} else { /// momentums
G4double p;
G4double u;
G4double x;
G4std::vector<G4double> mom(4);
std::vector<G4double> mom(4);
/// G4bool badp = True;
G4int i(0);
@@ -1248,7 +1248,7 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
if (x > inuclRndm()) {
p = sqrt(0.01953 * u);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double pt = p * COS_SIN.second;
G4double phi = randomPHI();
mom[1] = pt * cos(phi);
@@ -1263,7 +1263,7 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
if (itry == itry_max) {
G4cout << " can not generate proper momentum for a " << ab << G4endl;
return G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> >
return std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
(casparticles, particles);
};
};
@@ -1292,7 +1292,7 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4double s1 = sqrt(inuclRndm());
G4double phi = randomPHI();
G4double rz = (nuclei_radius + rb) * s1;
G4std::vector<double> global_pos(3);
std::vector<double> global_pos(3);
global_pos[0] = rz * cos(phi);
global_pos[1] = rz * sin(phi);
global_pos[2] = -(nuclei_radius + rb) * sqrt(1.0 - s1 * s1);
@@ -1304,7 +1304,7 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
};
/// all nucleons at rest
G4std::vector<G4InuclElementaryParticle> raw_particles;
std::vector<G4InuclElementaryParticle> raw_particles;
G4int ia = G4int(ab + 0.5);
G4int iz = G4int(zb + 0.5);
@@ -1325,7 +1325,7 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
particleIterator ipart;
for (ipart = raw_particles.begin(); ipart != raw_particles.end(); ipart++) {
G4std::vector<G4double> mom =
std::vector<G4double> mom =
toTheBulletRestFrame.backToTheLab(ipart->getMomentum());
ipart->setMomentum(mom);
@@ -1333,7 +1333,7 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
/// fill cascad particles and outgoing particles
for (G4int ip = 0; ip < G4int(raw_particles.size()); ip++) {
G4std::vector<G4double> mom = raw_particles[ip].getMomentum();
std::vector<G4double> mom = raw_particles[ip].getMomentum();
G4double pmod = sqrt(mom[1] * mom[1] + mom[2] * mom[2] + mom[3] * mom[3]);
G4double t0 = -(mom[1] * coordinates[ip][0] + mom[2] * coordinates[ip][1] +
mom[3] * coordinates[ip][2]) / pmod;
@@ -1407,6 +1407,6 @@ G4BertiniNucleiModel::initializeCascad(G4InuclNuclei* bullet,
particles[ip].printParticle();
}
return G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> >
return std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
(casparticles, particles);
}
@@ -1,189 +0,0 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
#include "G4BertiniRegionModel.hh"
const G4double G4BertiniRegionModel::radius0 = 1.0E-15;
const G4double G4BertiniRegionModel::BE = 7;
G4BertiniRegionModel::G4BertiniRegionModel(const G4int numberOfLayers, const G4int A, const G4int Z)
{
//count the radiuses, densities and fermi momenta with A and Z
G4double r = radius0*pow(A, 1/3);
if(numberOfLayers==1){
radius.push_back(r);
G4double rho = A / (4/3*pi*pow(r,3));
density.push_back(rho);
G4double protonMass = G4Proton::Proton()->GetPDGMass();
G4double neutronMass = G4Neutron::Neutron()->GetPDGMass();
G4double protonDensity = Z / (4/3*pi*pow(r,3));
G4double neutronDensity = (A-Z) / (4/3*pi*pow(r,3));
protonFermiEnergy.push_back(GetFermiEnergy(protonDensity, protonMass));
neutronFermiEnergy.push_back(GetFermiEnergy(neutronDensity, neutronMass));
protonFermiMomentum.push_back(GetFermiMomentum(protonDensity, protonMass));
neutronFermiMomentum.push_back(GetFermiMomentum(neutronDensity, neutronMass));
G4double fermiEP = *protonFermiEnergy.begin();
G4double fermiEN = *neutronFermiEnergy.begin();
protonPotentialEnergy.push_back(-(fermiEP + BE));
neutronPotentialEnergy.push_back(-(fermiEN + BE));
}
else{
if(numberOfLayers==3){
radius.push_back(0.1*r);
radius.push_back(0.2*r);
radius.push_back(0.9*r);
}
}
}
G4BertiniRegionModel::~G4BertiniRegionModel(){}
/*
void G4BertiniRegionModel::Init(const G4int numberOfLayers, const G4int A, const G4int Z){
//count the radiuses, densities and fermi momenta with A and Z
G4double r = radius0*pow(A, 1/3);
if(numberOfLayers==1){
radius.push_back(r);
G4double rho = A / (4/3*pi*pow(r,3));
density.push_back(rho);
G4double protonMass = G4Proton::Proton()->GetPDGMass()/MeV;
G4double neutronMass = G4Neutron::Neutron()->GetPDGMass()/MeV ;
G4double protonDensity = Z / (4/3*pi*pow(r,3));
G4double neutronDensity = (A-Z) / (4/3*pi*pow(r,3));
protonFermiEnergy.push_back(GetFermiEnergy(protonDensity, protonMass));
neutronFermiEnergy.push_back(GetFermiEnergy(neutronDensity, neutronMass));
protonFermiMomentum.push_back(GetFermiMomentum(protonDensity, protonMass));
neutronFermiMomentum.push_back(GetFermiMomentum(neutronDensity, neutronMass));
G4double fermiEP = *protonFermiEnergy.begin();
G4double fermiEN = *neutronFermiEnergy.begin();
protonPotentialEnergy.push_back(-(fermiEP + BE));
neutronPotentialEnergy.push_back(-(fermiEN + BE));
}
else{
if(numberOfLayers==3){
radius.push_back(0.1*r);
radius.push_back(0.2*r);
radius.push_back(0.9*r);
}
}
}
*/
//--------------------------------------------------------------
G4double G4BertiniRegionModel::GetDensity(G4double r){
iterator j=density.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
return 0;
}
G4double G4BertiniRegionModel::GetPotentialEnergy(G4double r, G4int particle){
if(particle == 0){ //proton
iterator j=protonPotentialEnergy.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
return 0;
}
if(particle == 1){ //neutron
iterator j=neutronPotentialEnergy.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
return 0;
}
return 0;
}
G4double G4BertiniRegionModel::GetMaximumNucleonMomentum(G4double r,
G4int nucleon){
if(nucleon == 0){
iterator j=protonFermiMomentum.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
}
if(nucleon==1){
iterator j=neutronFermiMomentum.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
}
G4Exception("G4BertiniRegionModel::GetMaximumNucleonMomentum - return value undefined");
return 0;
}
G4double G4BertiniRegionModel::GetFermiMomentum(G4double aDensity,
G4double aMass){
return sqrt(2*aMass*GetFermiEnergy(aDensity, aMass));
}
G4double G4BertiniRegionModel::GetFermiEnergy(G4double aDensity,
G4double aMass){
//G4double hbar = 1.0E-6;
return (pow(hbar_Planck,2)/(2*aMass)*pow((3*pi2*aDensity),2/3));
}
@@ -24,9 +24,9 @@
#include "G4InuclNuclei.hh"
#include "G4ParticleLargerEkin.hh"
#include "G4LorentzConvertor.hh"
#include "g4std/algorithm"
#include <algorithm>
typedef G4std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
G4BigBanger::G4BigBanger()
: verboseLevel(1) {
@@ -47,14 +47,14 @@ G4CollisionOutput G4BigBanger::collide(G4InuclParticle* bullet,
const G4double small_ekin = 1.0e-6;
G4CollisionOutput output;
G4std::vector<G4double> totscm;
G4std::vector<G4double> totlab;
std::vector<G4double> totscm;
std::vector<G4double> totlab;
if(G4InuclNuclei* nuclei_target = dynamic_cast<G4InuclNuclei*>(target)) {
G4double A = nuclei_target->getA();
G4double Z = nuclei_target->getZ();
G4std::vector<G4double> PEX = nuclei_target->getMomentum();
std::vector<G4double> PEX = nuclei_target->getMomentum();
G4double EEXS = nuclei_target->getExitationEnergy();
G4InuclElementaryParticle dummy(small_ekin, 1);
G4LorentzConvertor toTheNucleiSystemRestFrame;
@@ -72,7 +72,7 @@ G4CollisionOutput G4BigBanger::collide(G4InuclParticle* bullet,
etot << " nm " << nuclei_target->getMass() << G4endl;
}
G4std::vector<G4InuclElementaryParticle> particles =
std::vector<G4InuclElementaryParticle> particles =
generateBangInSCM(etot, A, Z, dummy.getParticleMass(1), dummy.getParticleMass(2));
if (verboseLevel > 2) {
@@ -82,18 +82,18 @@ G4CollisionOutput G4BigBanger::collide(G4InuclParticle* bullet,
}
if(!particles.empty()) { // convert back to Lab
if (verboseLevel > 2) {
G4std::vector<G4double> totscm(4, 0.0);
G4std::vector<G4double> totlab(4, 0.0);
std::vector<G4double> totscm(4, 0.0);
std::vector<G4double> totlab(4, 0.0);
}
particleIterator ipart;
for(ipart = particles.begin(); ipart != particles.end(); ipart++) {
if (verboseLevel > 2) {
G4std::vector<G4double> mom_scm = ipart->getMomentum();
std::vector<G4double> mom_scm = ipart->getMomentum();
for(G4int i = 0; i < 4; i++) totscm[i] += mom_scm[i];
}
G4std::vector<G4double> mom =
std::vector<G4double> mom =
toTheNucleiSystemRestFrame.backToTheLab(ipart->getMomentum());
ipart->setMomentum(mom);
@@ -102,7 +102,7 @@ G4CollisionOutput G4BigBanger::collide(G4InuclParticle* bullet,
for(G4int i = 0; i < 4; i++) totlab[i] += mom[i];
}
};
G4std::sort(particles.begin(), particles.end(), G4ParticleLargerEkin());
std::sort(particles.begin(), particles.end(), G4ParticleLargerEkin());
if (verboseLevel > 2) {
G4cout << " In SCM: total outgoing momentum " << G4endl
<< " E " << totscm[0] << " px " << totscm[1]
@@ -123,7 +123,7 @@ G4CollisionOutput G4BigBanger::collide(G4InuclParticle* bullet,
return output;
}
G4std::vector<G4InuclElementaryParticle>
std::vector<G4InuclElementaryParticle>
G4BigBanger::generateBangInSCM(G4double etot,
G4double a,
G4double z,
@@ -143,14 +143,14 @@ G4BigBanger::generateBangInSCM(G4double etot,
if (verboseLevel > 2) {
G4cout << " ia " << ia << " iz " << iz << G4endl;
}
G4std::vector<G4InuclElementaryParticle> particles;
std::vector<G4InuclElementaryParticle> particles;
if(ia == 1) {
// abnormal situation
G4double m = iz > 0 ? mp : mn;
G4double pmod = sqrt((etot + 2.0 * m) * etot);
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double Pt = pmod * COS_SIN.second;
@@ -165,18 +165,18 @@ G4BigBanger::generateBangInSCM(G4double etot,
return particles;
};
G4std::vector<G4double> pmod = generateMomentumModules(etot, a, z, mp, mn);
std::vector<G4double> pmod = generateMomentumModules(etot, a, z, mp, mn);
G4bool bad = true;
G4int itry = 0;
while(bad && itry < itry_max) {
itry++;
G4std::vector<G4std::vector<G4double> > scm_momentums;
G4std::vector<G4double> tot_mom(4);
std::vector<std::vector<G4double> > scm_momentums;
std::vector<G4double> tot_mom(4);
if(ia == 2) {
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
double FI = randomPHI();
double Pt = pmod[0] * COS_SIN.second;
@@ -188,7 +188,7 @@ G4BigBanger::generateBangInSCM(G4double etot,
scm_momentums.push_back(mom);
G4std::vector<G4double> mom1(4);
std::vector<G4double> mom1(4);
for(G4int i = 1; i < 4; i++) mom1[i] = - mom[i];
@@ -197,8 +197,8 @@ G4BigBanger::generateBangInSCM(G4double etot,
}
else {
for(G4int i = 0; i < ia - 2; i++) {
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double Pt = pmod[i] * COS_SIN.second;
@@ -223,19 +223,19 @@ G4BigBanger::generateBangInSCM(G4double etot,
}
if(fabs(ct) < ang_cut) {
G4std::vector<G4double> mom2 = generateWithFixedTheta(ct, pmod[ia - 2]);
std::vector<G4double> mom2 = generateWithFixedTheta(ct, pmod[ia - 2]);
// rotate to the normal system
G4std::vector<G4double> apr = tot_mom;
std::vector<G4double> apr = tot_mom;
G4int i;
for(i = 1; i < 4; i++) apr[i] /= tot_mod;
G4double a_tr = sqrt(apr[1] * apr[1] + apr[2] * apr[2]);
G4std::vector<G4double> mom(4);
std::vector<G4double> mom(4);
mom[1] = mom2[3] * apr[1] + ( mom2[1] * apr[2] + mom2[2] * apr[3] * apr[1]) / a_tr; // ::: replace with clhep tools?
mom[2] = mom2[3] * apr[2] + (-mom2[1] * apr[1] + mom2[2] * apr[3] * apr[2]) / a_tr;
mom[3] = mom2[3] * apr[3] - mom2[2] * a_tr;
scm_momentums.push_back(mom);
// and the last one
G4std::vector<G4double> mom1(4);
std::vector<G4double> mom1(4);
for(i = 1; i < 4; i++) mom1[i] = - mom[i] - tot_mom[i];
scm_momentums.push_back(mom1);
bad = false;
@@ -257,7 +257,7 @@ G4BigBanger::generateBangInSCM(G4double etot,
}
G4std::vector<G4double> G4BigBanger::generateMomentumModules(G4double etot,
std::vector<G4double> G4BigBanger::generateMomentumModules(G4double etot,
G4double a,
G4double z,
G4double mp,
@@ -270,7 +270,7 @@ G4std::vector<G4double> G4BigBanger::generateMomentumModules(G4double etot,
G4int ia = int(a + 0.1);
G4int iz = int(z + 0.1);
G4std::vector<G4double> pmod;
std::vector<G4double> pmod;
G4double xtot = 0.0;
G4double promax = maxProbability(a);
@@ -42,7 +42,7 @@ G4double G4CascadParticle::getPathToTheNextZone(G4double rz_in,
G4double rp = 0.0;
G4double rr = 0.0;
G4double pp = 0.0;
G4std::vector<G4double> mom = theParticle.getMomentum();
std::vector<G4double> mom = theParticle.getMomentum();
for (G4int i = 1; i < 4; i++) {
rp += mom[i] * position[i - 1];
@@ -87,7 +87,7 @@ void G4CascadParticle::propagateAlongThePath(G4double path) {
G4cout << " >>> G4CascadParticle::propagateAlongThePath" << G4endl;
}
G4std::vector<G4double> mom = theParticle.getMomentum();
std::vector<G4double> mom = theParticle.getMomentum();
G4double pmod = theParticle.getMomModule();
for(G4int i = 0; i < 3; i++) position[i] += mom[i + 1] * path / pmod;
@@ -22,7 +22,7 @@
#include "G4CascadSpecialFunctions.hh"
G4std::pair<G4int, G4double> G4CascadSpecialFunctions::getPositionInEnergyScale2(G4double e) {
std::pair<G4int, G4double> G4CascadSpecialFunctions::getPositionInEnergyScale2(G4double e) {
G4int verboseLevel = 2;
if (verboseLevel > 3) {
@@ -48,10 +48,10 @@
};
};
return G4std::pair<G4int, G4double>(ik, sk);
return std::pair<G4int, G4double>(ik, sk);
}
G4std::pair<G4int, G4double> G4CascadSpecialFunctions::getPositionInEnergyScale1(G4double e) {
std::pair<G4int, G4double> G4CascadSpecialFunctions::getPositionInEnergyScale1(G4double e) {
G4int verboseLevel = 2;
if (verboseLevel > 3) {
@@ -92,7 +92,7 @@ G4std::pair<G4int, G4double> G4CascadSpecialFunctions::getPositionInEnergyScale1
G4cout << " e " << e << " ik " << ik << " sk " << sk << G4endl;
}
return G4std::pair<G4int, G4double>(ik, sk);
return std::pair<G4int, G4double>(ik, sk);
}
G4double G4CascadSpecialFunctions::absorptionCrosSection(G4double e,
@@ -122,7 +122,7 @@ G4double G4CascadSpecialFunctions::absorptionCrosSection(G4double e,
return corr_fac * csec;
}
G4std::pair<G4int, G4double> G4CascadSpecialFunctions::getPositionInEnergyScaleEMS(G4double e) {
std::pair<G4int, G4double> G4CascadSpecialFunctions::getPositionInEnergyScaleEMS(G4double e) {
G4int verboseLevel = 2;
if (verboseLevel > 3) {
@@ -162,7 +162,7 @@ G4std::pair<G4int, G4double> G4CascadSpecialFunctions::getPositionInEnergyScaleE
sk = 1.0;
};
return G4std::pair<G4int, G4double>(ik, sk);
return std::pair<G4int, G4double>(ik, sk);
}
G4double G4CascadSpecialFunctions::crossSection(G4double e,
@@ -347,7 +347,7 @@ G4double G4CascadSpecialFunctions::crossSection(G4double e,
};
} else {
G4std::pair<G4int, G4double> iksk = getPositionInEnergyScaleEMS(e);
std::pair<G4int, G4double> iksk = getPositionInEnergyScaleEMS(e);
G4int ik = iksk.first;
G4double sk = iksk.second;
@@ -363,7 +363,7 @@ G4double G4CascadSpecialFunctions::crossSection(G4double e,
};
} else {
G4std::pair<G4int, G4double> iksk = getPositionInEnergyScale2(e);
std::pair<G4int, G4double> iksk = getPositionInEnergyScale2(e);
G4int ik = iksk.first;
G4double sk = iksk.second;
@@ -42,8 +42,8 @@
#include "G4LorentzRotation.hh"
typedef G4std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef G4std::vector<G4InuclNuclei>::iterator nucleiIterator;
typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef std::vector<G4InuclNuclei>::iterator nucleiIterator;
G4CascadeInterface::G4CascadeInterface()
:verboseLevel(0) {
@@ -106,7 +106,7 @@ G4VParticleChange* G4CascadeInterface::ApplyYourself(const G4Track& aTrack,
toZ.rotateY(-projectileMomentum.theta());
G4LorentzRotation toLabFrame = toZ.inverse();
G4std::vector<G4double> momentumBullet(4);
std::vector<G4double> momentumBullet(4);
momentumBullet[0] =0.;
momentumBullet[1] =0;
momentumBullet[2] =0;
@@ -123,7 +123,7 @@ G4VParticleChange* G4CascadeInterface::ApplyYourself(const G4Track& aTrack,
G4InuclNuclei* target = NULL;
G4InuclParticle* targetH = NULL;
G4std::vector<G4double> targetMomentum(4, 0.0);
std::vector<G4double> targetMomentum(4, 0.0);
G4double theNucleusA = theNucleus.GetN();
@@ -135,9 +135,9 @@ G4VParticleChange* G4CascadeInterface::ApplyYourself(const G4Track& aTrack,
theNucleus.GetZ());
target->setEnergy();
G4std::vector<G4double> bmom = bullet->getMomentum();
std::vector<G4double> bmom = bullet->getMomentum();
eInit = sqrt(bmom[0] * bmom[0]);
G4std::vector<G4double> tmom = target->getMomentum();
std::vector<G4double> tmom = target->getMomentum();
eInit += sqrt(tmom[0] * tmom[0]);
sumBaryon += theNucleusA;
@@ -177,9 +177,9 @@ G4VParticleChange* G4CascadeInterface::ApplyYourself(const G4Track& aTrack,
sumBaryon += 1;
G4std::vector<G4double> bmom = bullet->getMomentum();
std::vector<G4double> bmom = bullet->getMomentum();
eInit = sqrt(bmom[0] * bmom[0]);
G4std::vector<G4double> tmom = targetH->getMomentum();
std::vector<G4double> tmom = targetH->getMomentum();
eInit += sqrt(tmom[0] * tmom[0]);
if (verboseLevel > 2) {
@@ -206,8 +206,8 @@ G4VParticleChange* G4CascadeInterface::ApplyYourself(const G4Track& aTrack,
// Convert cascade data to use hadronics interface
G4std::vector<G4InuclNuclei> nucleiFragments = output.getNucleiFragments();
G4std::vector<G4InuclElementaryParticle> particles = output.getOutgoingParticles();
std::vector<G4InuclNuclei> nucleiFragments = output.getNucleiFragments();
std::vector<G4InuclElementaryParticle> particles = output.getOutgoingParticles();
G4int numSecondaries = nucleiFragments.size()+particles.size();
theResult.SetStatusChange(fStopAndKill);
@@ -219,7 +219,7 @@ G4VParticleChange* G4CascadeInterface::ApplyYourself(const G4Track& aTrack,
for (ipart = particles.begin(); ipart != particles.end(); ipart++) {
outgoingParticle = ipart->type();
G4std::vector<G4double> mom = ipart->getMomentum();
std::vector<G4double> mom = ipart->getMomentum();
eTot += sqrt(mom[0] * mom[0]);
G4double ekin = ipart->getKineticEnergy() * GeV;
@@ -305,7 +305,7 @@ G4VParticleChange* G4CascadeInterface::ApplyYourself(const G4Track& aTrack,
for (ifrag = nucleiFragments.begin(); ifrag != nucleiFragments.end(); ifrag++)
{
G4double eKin = ifrag->getKineticEnergy() * GeV;
G4std::vector<G4double> mom = ifrag->getMomentum();
std::vector<G4double> mom = ifrag->getMomentum();
eTot += sqrt(mom[0] * mom[0]);
G4ThreeVector aMom(mom[1], mom[2], mom[3]);
@@ -22,9 +22,9 @@
#include "G4CollisionOutput.hh"
#include "G4ParticleLargerEkin.hh"
#include "g4std/algorithm"
#include <algorithm>
typedef G4std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
G4CollisionOutput::G4CollisionOutput()
: verboseLevel(0) {
@@ -45,14 +45,14 @@ void G4CollisionOutput::setOnShell(G4InuclParticle* bullet,
on_shell = false;
G4std::vector<G4double> ini_mom = bullet->getMomentum();
G4std::vector<G4double> momt = target->getMomentum();
std::vector<G4double> ini_mom = bullet->getMomentum();
std::vector<G4double> momt = target->getMomentum();
G4int i;
for(i = 0; i < 4; i++) ini_mom[i] += momt[i];
G4std::vector<G4double> out_mom = getTotalOutputMomentum();
G4std::vector<G4double> mon_non_cons(4);
std::vector<G4double> out_mom = getTotalOutputMomentum();
std::vector<G4double> mon_non_cons(4);
if(verboseLevel > 2){
G4cout << " bullet momentum = " << ini_mom[0]<<", "<< ini_mom[1]<<", "<< ini_mom[2]<<", "<< ini_mom[3]<<G4endl;
G4cout << " target momentum = " << momt[0]<<", "<< momt[1]<<", "<< momt[2]<<", "<< momt[3]<<G4endl;
@@ -80,7 +80,7 @@ void G4CollisionOutput::setOnShell(G4InuclParticle* bullet,
if(npart > 0) {
G4std::vector<G4double> last_mom = outgoingParticles[npart - 1].getMomentum();
std::vector<G4double> last_mom = outgoingParticles[npart - 1].getMomentum();
for(G4int i = 1; i < 4; i++) last_mom[i] += mon_non_cons[i];
outgoingParticles[npart - 1].setMomentum(last_mom);
@@ -91,7 +91,7 @@ void G4CollisionOutput::setOnShell(G4InuclParticle* bullet,
if(nnuc > 0) {
G4std::vector<G4double> last_mom = nucleiFragments[nnuc - 1].getMomentum();
std::vector<G4double> last_mom = nucleiFragments[nnuc - 1].getMomentum();
for(G4int i = 1; i < 4; i++) last_mom[i] += mon_non_cons[i];
nucleiFragments[nnuc - 1].setMomentum(last_mom);
@@ -130,8 +130,8 @@ void G4CollisionOutput::setOnShell(G4InuclParticle* bullet,
if(need_hard_tuning) {
G4std::pair<G4std::pair<G4int, G4int>, G4int> tune_par = selectPairToTune(mon_non_cons[0]);
G4std::pair<G4int, G4int> tune_particles = tune_par.first;
std::pair<std::pair<G4int, G4int>, G4int> tune_par = selectPairToTune(mon_non_cons[0]);
std::pair<G4int, G4int> tune_particles = tune_par.first;
G4int mom_ind = tune_par.second;
if(verboseLevel > 2) {
@@ -141,8 +141,8 @@ void G4CollisionOutput::setOnShell(G4InuclParticle* bullet,
if(tune_particles.first >= 0 && tune_particles.second >= 0 &&
mom_ind >= 1) { // tunning possible
G4std::vector<G4double> mom1 = outgoingParticles[tune_particles.first].getMomentum();
G4std::vector<G4double> mom2 = outgoingParticles[tune_particles.second].getMomentum();
std::vector<G4double> mom1 = outgoingParticles[tune_particles.first].getMomentum();
std::vector<G4double> mom2 = outgoingParticles[tune_particles.second].getMomentum();
G4double newE12 = mom1[0] + mom2[0] + mon_non_cons[0];
G4double R = 0.5 * (newE12 * newE12 + mom2[0] * mom2[0] - mom1[0] * mom1[0]) / newE12;
G4double Q = -(mom1[mom_ind] + mom2[mom_ind]) / newE12;
@@ -193,7 +193,7 @@ void G4CollisionOutput::setOnShell(G4InuclParticle* bullet,
outgoingParticles[tune_particles.first ].setMomentum(mom1);
outgoingParticles[tune_particles.second].setMomentum(mom2);
out_mom = getTotalOutputMomentum();
G4std::sort(outgoingParticles.begin(), outgoingParticles.end(), G4ParticleLargerEkin());
std::sort(outgoingParticles.begin(), outgoingParticles.end(), G4ParticleLargerEkin());
for(G4int i = 0; i < 4; i++) mon_non_cons[i] = ini_mom[i] - out_mom[i];
pnc = sqrt(mon_non_cons[1] * mon_non_cons[1] +
mon_non_cons[2] * mon_non_cons[2] +
@@ -232,15 +232,15 @@ void G4CollisionOutput::setOnShell(G4InuclParticle* bullet,
}
G4std::pair<G4std::pair<G4int, G4int>, G4int> G4CollisionOutput::selectPairToTune(G4double de) const {
std::pair<std::pair<G4int, G4int>, G4int> G4CollisionOutput::selectPairToTune(G4double de) const {
if (verboseLevel > 3) {
G4cout << " >>> G4CollisionOutput::selectPairToTune" << G4endl;
}
G4std::pair<G4int, G4int> tup(-1, -1);
std::pair<G4int, G4int> tup(-1, -1);
G4int i3 = -1;
G4std::pair<G4std::pair<G4int, G4int>, G4int> badp(tup, i3);
std::pair<std::pair<G4int, G4int>, G4int> badp(tup, i3);
if(outgoingParticles.size() < 2) {
@@ -257,11 +257,11 @@ G4std::pair<G4std::pair<G4int, G4int>, G4int> G4CollisionOutput::selectPairToTun
for(G4int i = 0; i < G4int(outgoingParticles.size()) - 1; i++) {
G4std::vector<G4double> mom1 = outgoingParticles[i].getMomentum();
std::vector<G4double> mom1 = outgoingParticles[i].getMomentum();
for(G4int j = i+1; j < G4int(outgoingParticles.size()); j++) {
G4std::vector<G4double> mom2 = outgoingParticles[j].getMomentum();
std::vector<G4double> mom2 = outgoingParticles[j].getMomentum();
for(G4int l = 1; l < 4; l++) {
if(mom1[l] * mom2[l] < 0.0) {
@@ -304,7 +304,7 @@ G4std::pair<G4std::pair<G4int, G4int>, G4int> G4CollisionOutput::selectPairToTun
};
};
return G4std::pair<G4std::pair<G4int, G4int>, G4int>(tup, i3);
return std::pair<std::pair<G4int, G4int>, G4int>(tup, i3);
};
};
@@ -23,9 +23,9 @@
#include "G4Collider.hh"
#include "G4ElementaryParticleCollider.hh"
#include "G4ParticleLargerEkin.hh"
#include "g4std/algorithm"
#include <algorithm>
typedef G4std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
G4ElementaryParticleCollider::G4ElementaryParticleCollider()
: verboseLevel(1) {
@@ -43,8 +43,8 @@ G4CollisionOutput G4ElementaryParticleCollider::collide(G4InuclParticle* bullet
G4cout << " >>> G4ElementaryParticleCollider::collide" << G4endl;
}
G4std::vector<G4double> totscm(4, 0.0); //::: fix
G4std::vector<G4double> totlab(4, 0.0);
std::vector<G4double> totscm(4, 0.0); //::: fix
std::vector<G4double> totlab(4, 0.0);
// generate nucleon or pion collission with NUCLEON
// or pion with quasideutron
@@ -70,8 +70,8 @@ G4CollisionOutput G4ElementaryParticleCollider::collide(G4InuclParticle* bullet
particle1->printParticle();
particle2->printParticle();
G4std::vector<G4double> momb = particle1->getMomentum();
G4std::vector<G4double> momt = particle2->getMomentum();
std::vector<G4double> momb = particle1->getMomentum();
std::vector<G4double> momt = particle2->getMomentum();
for(G4int i = 0; i < 4; i++) momb[i] += momt[i];
G4cout << " total input: px " << momb[1] << " py " << momb[2]
@@ -102,7 +102,7 @@ G4CollisionOutput G4ElementaryParticleCollider::collide(G4InuclParticle* bullet
pscm << G4endl;
}
G4std::vector<G4InuclElementaryParticle> particles =
std::vector<G4InuclElementaryParticle> particles =
generateSCMfinalState(ekin, etot_scm, pscm, particle1, particle2, &convertToSCM);
if(verboseLevel > 2){
@@ -120,7 +120,7 @@ G4CollisionOutput G4ElementaryParticleCollider::collide(G4InuclParticle* bullet
for(ipart = particles.begin(); ipart != particles.end(); ipart++) {
if(verboseLevel > 2){
G4std::vector<G4double> mom_scm = ipart->getMomentum();
std::vector<G4double> mom_scm = ipart->getMomentum();
G4cout << mom_scm[0] << " " << mom_scm[1] << " "
<< mom_scm[2] << " " << mom_scm[3] << G4endl;
@@ -131,7 +131,7 @@ G4CollisionOutput G4ElementaryParticleCollider::collide(G4InuclParticle* bullet
}
G4std::vector<G4double> mom =
std::vector<G4double> mom =
convertToSCM.backToTheLab(ipart->getMomentum());
if(verboseLevel > 2){
@@ -141,7 +141,7 @@ G4CollisionOutput G4ElementaryParticleCollider::collide(G4InuclParticle* bullet
ipart->setMomentum(mom);
};
G4std::sort(particles.begin(), particles.end(), G4ParticleLargerEkin());
std::sort(particles.begin(), particles.end(), G4ParticleLargerEkin());
if(verboseLevel > 2){
G4cout << " In SCM: total outgoing momentum " << G4endl
@@ -180,7 +180,7 @@ G4CollisionOutput G4ElementaryParticleCollider::collide(G4InuclParticle* bullet
G4cout << " etot_scm " << etot_scm << G4endl;
}
G4std::vector<G4InuclElementaryParticle> particles =
std::vector<G4InuclElementaryParticle> particles =
generateSCMpionAbsorption(etot_scm, particle1, particle2);
if(verboseLevel > 2){
@@ -197,19 +197,19 @@ G4CollisionOutput G4ElementaryParticleCollider::collide(G4InuclParticle* bullet
for(ipart = particles.begin(); ipart != particles.end(); ipart++) {
if(verboseLevel > 2){
G4std::vector<G4double> mom_scm = ipart->getMomentum();
std::vector<G4double> mom_scm = ipart->getMomentum();
for(G4int i = 0; i < 4; i++) totscm[i] += mom_scm[i];
}
G4std::vector<G4double> mom =
std::vector<G4double> mom =
convertToSCM.backToTheLab(ipart->getMomentum());
ipart->setMomentum(mom);
};
G4std::sort(particles.begin(), particles.end(), G4ParticleLargerEkin());
std::sort(particles.begin(), particles.end(), G4ParticleLargerEkin());
if(verboseLevel > 2){
G4cout << " In SCM: total outgoing momentum " << G4endl
@@ -350,7 +350,7 @@ G4int G4ElementaryParticleCollider::generateMultiplicity(G4int is,
};
const G4double large_cut = 4.0;
G4std::pair<G4int, G4double> iksk = getPositionInEnergyScale2(ekin);
std::pair<G4int, G4double> iksk = getPositionInEnergyScale2(ekin);
G4int ik = iksk.first;
G4double sk = iksk.second;
G4int l = is;
@@ -359,7 +359,7 @@ G4int G4ElementaryParticleCollider::generateMultiplicity(G4int is,
if (l == 10) l = 3;
if (l == 5 || l == 6) l = 4;
G4std::vector<G4double> sigm(5);
std::vector<G4double> sigm(5);
G4double stot = 0.0;
if (l == 7 || l == 14) { // pi0 P or pi0 N
@@ -404,7 +404,7 @@ G4int G4ElementaryParticleCollider::generateMultiplicity(G4int is,
return mul + 2;
}
G4std::vector<G4InuclElementaryParticle> G4ElementaryParticleCollider::
std::vector<G4InuclElementaryParticle> G4ElementaryParticleCollider::
generateSCMfinalState(G4double ekin,
G4double etot_scm,
G4double pscm,
@@ -420,8 +420,8 @@ generateSCMfinalState(G4double ekin,
const G4double difr_const = 0.3678794;
const G4int itry_max = 10;
G4InuclElementaryParticle dummy;
G4std::vector<G4InuclElementaryParticle> particles;
G4std::vector<G4int> particle_kinds;
std::vector<G4InuclElementaryParticle> particles;
std::vector<G4int> particle_kinds;
G4int type1 = particle1->type();
G4int type2 = particle2->type();
G4int is = type1 * type2;
@@ -487,7 +487,7 @@ generateSCMfinalState(G4double ekin,
particle_kinds.push_back(type2);
};
G4std::vector<G4double> mom;
std::vector<G4double> mom;
if (kw == 2) { // need to rescale momentum
G4double m1 = dummy.getParticleMass(particle_kinds[0]);
@@ -514,7 +514,7 @@ generateSCMfinalState(G4double ekin,
G4cout << " after rotation px " << mom[1] << " py " << mom[2] <<
" pz " << mom[3] << G4endl;
}
G4std::vector<G4double> mom1(4);
std::vector<G4double> mom1(4);
for (G4int i = 1; i < 4; i++) mom1[i] = -mom[i];
@@ -542,13 +542,13 @@ generateSCMfinalState(G4double ekin,
G4cout << " itry in while " << itry << G4endl;
}
G4std::vector<G4double> modules =
std::vector<G4double> modules =
generateMomModules(particle_kinds, multiplicity, is, ekin, etot_scm);
if (G4int(modules.size()) == multiplicity) {
if (multiplicity == 3) {
G4std::vector<G4double> mom3 =
std::vector<G4double> mom3 =
particleSCMmomentumFor2to3(is, knd_last, ekin, modules[2]);
mom3 = toSCM->rotate(mom3);
@@ -565,11 +565,11 @@ generateSCMfinalState(G4double ekin,
G4cout << " ok for mult " << multiplicity << G4endl;
}
G4std::vector<G4double> mom1 = generateWithFixedTheta(ct, modules[0]);
std::vector<G4double> mom1 = generateWithFixedTheta(ct, modules[0]);
mom1 = toSCM->rotate(mom3, mom1);
G4std::vector<G4double> mom2(4);
std::vector<G4double> mom2(4);
for(G4int i = 1; i < 4; i++) mom2[i] = - (mom3[i] + mom1[i]);
@@ -584,8 +584,8 @@ generateSCMfinalState(G4double ekin,
} else { // multiplicity > 3
// generate first mult - 2 momentums
G4std::vector<G4std::vector<G4double> > scm_momentums;
G4std::vector<G4double> tot_mom(4);
std::vector<std::vector<G4double> > scm_momentums;
std::vector<G4double> tot_mom(4);
for (G4int i = 0; i < multiplicity - 2; i++) {
G4double p0 = particle_kinds[i] < 3 ? 0.36 : 0.25;
@@ -628,7 +628,7 @@ generateSCMfinalState(G4double ekin,
G4double pt = modules[i]*st;
G4double phi = randomPHI();
G4std::vector<G4double> mom(4);
std::vector<G4double> mom(4);
mom[1] = pt * cos(phi);
mom[2] = pt * sin(phi);
@@ -659,14 +659,14 @@ generateSCMfinalState(G4double ekin,
tot_mom = toSCM->rotate(tot_mom);
G4std::vector<G4double> mom =
std::vector<G4double> mom =
generateWithFixedTheta(ct, modules[multiplicity - 2]);
mom = toSCM->rotate(tot_mom, mom);
scm_momentums.push_back(mom);
// and the last one
G4std::vector<G4double> mom1(4);
std::vector<G4double> mom1(4);
for (i = 1; i < 4; i++) mom1[i] = -mom[i] - tot_mom[i];
@@ -705,9 +705,9 @@ generateSCMfinalState(G4double ekin,
return particles;
}
G4std::vector<G4double> G4ElementaryParticleCollider::
std::vector<G4double> G4ElementaryParticleCollider::
generateMomModules(
const G4std::vector<G4int>& kinds,
const std::vector<G4int>& kinds,
G4int mult,
G4int is,
G4double ekin,
@@ -727,8 +727,8 @@ generateMomModules(
G4InuclElementaryParticle dummy;
G4int itry = 0;
G4std::vector<G4double> modules(mult);
G4std::vector<G4double> masses2(mult);
std::vector<G4double> modules(mult);
std::vector<G4double> masses2(mult);
for (G4int i = 0; i < mult; i++) {
G4double mass = dummy.getParticleMass(kinds[i]);
@@ -801,7 +801,7 @@ generateMomModules(
}
G4bool G4ElementaryParticleCollider::satisfyTriangle(
const G4std::vector<G4double>& modules) const {
const std::vector<G4double>& modules) const {
if (verboseLevel > 3) {
G4cout << " >>> G4ElementaryParticleCollider::satisfyTriangle" << G4endl;
@@ -852,7 +852,7 @@ G4int G4ElementaryParticleCollider::getIL(G4int is,
return ifdef[mult - 3][l - 1];
}
G4std::vector<G4int> G4ElementaryParticleCollider::
std::vector<G4int> G4ElementaryParticleCollider::
generateOutgoingKindsFor2toMany(
G4int is,
G4int mult,
@@ -1085,7 +1085,7 @@ generateOutgoingKindsFor2toMany(
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
};
G4std::vector<G4int> kinds;
std::vector<G4int> kinds;
G4int l = is;
@@ -1102,7 +1102,7 @@ generateOutgoingKindsFor2toMany(
};
G4int il = getIL(is, mult);
G4std::pair<G4int, G4double> iksk = getPositionInEnergyScale1(ekin);
std::pair<G4int, G4double> iksk = getPositionInEnergyScale1(ekin);
G4int ik = iksk.first;
G4double sk = iksk.second;
G4int n;
@@ -1130,7 +1130,7 @@ generateOutgoingKindsFor2toMany(
n = 13;
};
G4std::vector<G4double> sig;
std::vector<G4double> sig;
G4double stot = 0.0;
if(l == 7 || l == 14) {
@@ -1303,7 +1303,7 @@ G4double G4ElementaryParticleCollider::getMomModuleFor2toMany(
return fabs(PRA);
}
G4std::vector<G4double> G4ElementaryParticleCollider::
std::vector<G4double> G4ElementaryParticleCollider::
particleSCMmomentumFor2to3(
G4int is,
G4int knd,
@@ -1367,7 +1367,7 @@ particleSCMmomentumFor2to3(
G4double pt = pmod * sqrt(1.0 - ct * ct);
G4double phi = randomPHI();
G4std::vector<G4double> mom(4);
std::vector<G4double> mom(4);
mom[1] = pt * cos(phi);
mom[2] = pt * sin(phi);
@@ -1490,7 +1490,7 @@ G4bool G4ElementaryParticleCollider::reChargering(G4double ekin,
G4bool rech = false;
if (is == 6 || is == 5 || is == 7 || is == 14) {
G4std::pair<G4int, G4double> iksk = getPositionInEnergyScale2(ekin);
std::pair<G4int, G4double> iksk = getPositionInEnergyScale2(ekin);
G4int ik = iksk.first;
G4double sk = iksk.second;
G4double chrg;
@@ -1509,14 +1509,14 @@ G4bool G4ElementaryParticleCollider::reChargering(G4double ekin,
return rech;
}
G4std::pair<G4double, G4double> G4ElementaryParticleCollider::
std::pair<G4double, G4double> G4ElementaryParticleCollider::
adjustIntervalForElastic(
G4double ekin,
G4double ak,
G4double ae,
G4int k,
G4int l,
const G4std::vector<G4double>& ssv,
const std::vector<G4double>& ssv,
G4double st) const {
if (verboseLevel > 3) {
@@ -1645,10 +1645,10 @@ adjustIntervalForElastic(
};
};
return G4std::pair<G4double, G4double>(a, b);
return std::pair<G4double, G4double>(a, b);
}
G4std::vector<G4double> G4ElementaryParticleCollider::
std::vector<G4double> G4ElementaryParticleCollider::
particleSCMmomentumFor2to2(
G4int is,
G4int kw,
@@ -1727,7 +1727,7 @@ particleSCMmomentumFor2to2(
G4int k1 = k - 1;
// first set all coefficients
G4std::vector<G4double> ssv(4);
std::vector<G4double> ssv(4);
G4double st = 0.0;
for(G4int i = 0; i < 4; i++) {
@@ -1742,7 +1742,7 @@ particleSCMmomentumFor2to2(
G4double b = 0.0;
if(k <= 3) {
G4std::pair<G4double, G4double> ab = adjustIntervalForElastic(ekin, ak, ae, k, is, ssv, st);
std::pair<G4double, G4double> ab = adjustIntervalForElastic(ekin, ak, ae, k, is, ssv, st);
a = ab.first;
b = ab.second;
@@ -1771,7 +1771,7 @@ particleSCMmomentumFor2to2(
G4double pt = pscm * sqrt(1.0 - ct * ct);
G4double phi = randomPHI();
G4std::vector<G4double> mom(4);
std::vector<G4double> mom(4);
mom[1] = pt * cos(phi);
mom[2] = pt * sin(phi);
@@ -1870,7 +1870,7 @@ G4int G4ElementaryParticleCollider::getElasticCase(G4int is,
return k;
}
G4std::vector<G4InuclElementaryParticle> G4ElementaryParticleCollider::
std::vector<G4InuclElementaryParticle> G4ElementaryParticleCollider::
generateSCMpionAbsorption(G4double etot_scm,
G4InuclElementaryParticle* particle1,
G4InuclElementaryParticle* particle2) const {
@@ -1883,8 +1883,8 @@ generateSCMpionAbsorption(G4double etot_scm,
// the nucleon distribution assumed to be isotropic in SCM
G4InuclElementaryParticle dummy;
G4std::vector<G4InuclElementaryParticle> particles;
G4std::vector<G4int> particle_kinds;
std::vector<G4InuclElementaryParticle> particles;
std::vector<G4int> particle_kinds;
G4int type1 = particle1->type();
G4int type2 = particle2->type();
@@ -1949,8 +1949,8 @@ generateSCMpionAbsorption(G4double etot_scm,
G4double a = 0.5 * (etot_scm * etot_scm - m1 - m2);
G4double pmod = sqrt((a * a - m1 * m2) / (m1 + m2 + 2.0 * a));
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double pt = pmod * COS_SIN.second;
@@ -1958,7 +1958,7 @@ generateSCMpionAbsorption(G4double etot_scm,
mom[2] = pt * sin(FI);
mom[3] = pmod * COS_SIN.first;
G4std::vector<G4double> mom1 = mom;
std::vector<G4double> mom1 = mom;
for(G4int i = 1; i < 4; i++) mom1[i] *= -1.0;
particles.push_back(G4InuclElementaryParticle(mom , particle_kinds[0]));
@@ -65,12 +65,12 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
const G4double small_ekin = 1.0e-6;
const G4int itry_gam_max = 100;
G4std::vector<G4double> W(8);
G4std::vector<G4double> A1(6);
G4std::vector<G4double> Z1(6);
G4std::vector<G4double> u(6);
G4std::vector<G4double> V(6);
G4std::vector<G4double> TM(6);
std::vector<G4double> W(8);
std::vector<G4double> A1(6);
std::vector<G4double> Z1(6);
std::vector<G4double> u(6);
std::vector<G4double> V(6);
std::vector<G4double> TM(6);
G4double coul_coeff;
G4CollisionOutput output;
@@ -78,7 +78,7 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
if (G4InuclNuclei* nuclei_target = dynamic_cast<G4InuclNuclei*>(target)) {
G4double A = nuclei_target->getA();
G4double Z = nuclei_target->getZ();
G4std::vector<G4double> PEX = nuclei_target->getMomentum();
std::vector<G4double> PEX = nuclei_target->getMomentum();
G4double EEXS = nuclei_target->getExitationEnergy();
if (verboseLevel > 3) {
@@ -88,7 +88,7 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
G4InuclElementaryParticle dummy(small_ekin, 1);
G4LorentzConvertor toTheNucleiSystemRestFrame;
toTheNucleiSystemRestFrame.setBullet(dummy.getMomentum(), dummy.getMass());
G4std::vector<G4double> ppout(4, 0.0);
std::vector<G4double> ppout(4, 0.0);
if (timeToBigBang(A, Z, EEXS)) {
@@ -109,7 +109,7 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
G4InuclNuclei dummy_nuc;
G4double EEXS_new;
G4std::vector<G4double> pin = PEX;
std::vector<G4double> pin = PEX;
pin[0] += 0.001 * EEXS;
G4bool try_again = true;
G4bool fission_open = true;
@@ -154,9 +154,9 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
G4double E0 = getE0(A);
G4double parlev = getPARLEVDEN(A, Z);
G4double u1 = parlev * A;
G4std::pair<G4std::vector<G4double>, G4std::vector<G4double> > parms = paraMaker(Z);
G4std::vector<G4double> AK = parms.first;
G4std::vector<G4double> CPA = parms.second;
std::pair<std::vector<G4double>, std::vector<G4double> > parms = paraMaker(Z);
std::vector<G4double> AK = parms.first;
std::vector<G4double> CPA = parms.second;
G4double DM0 = bindingEnergy(A, Z);
G4int i(0);
@@ -281,15 +281,15 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
// new photon escape
G4InuclElementaryParticle particle(10);
G4double pmod = 0.001 * S;
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double P1 = pmod * COS_SIN.second;
mom[1] = P1 * cos(FI);
mom[2] = P1 * sin(FI);
mom[3] = pmod * COS_SIN.first;
mom[0] = pmod;
G4std::vector<G4double> mom_at_rest(4);
std::vector<G4double> mom_at_rest(4);
for (G4int i = 1; i < 4; i++) mom_at_rest[i] = -mom[i];
mom_at_rest[0] = sqrt(mom_at_rest[1] * mom_at_rest[1] +
@@ -297,14 +297,14 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
mom_at_rest[3] * mom_at_rest[3] +
nuc_mass * nuc_mass);
G4std::vector<G4double> part_mom =
std::vector<G4double> part_mom =
toTheNucleiSystemRestFrame.backToTheLab(mom);
part_mom[0] = sqrt(part_mom[1] * part_mom[1] +
part_mom[2] * part_mom[2] +
part_mom[3] * part_mom[3]);
G4std::vector<G4double> ex_mom =
std::vector<G4double> ex_mom =
toTheNucleiSystemRestFrame.backToTheLab(mom_at_rest);
ex_mom[0] = sqrt(ex_mom[1] * ex_mom[1] +
@@ -377,14 +377,14 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
G4double mass = particle.getMass();
// generate particle momentum
G4double pmod = sqrt((2.0 * mass + S) * S);
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double P1 = pmod * COS_SIN.second;
mom[1] = P1 * cos(FI);
mom[2] = P1 * sin(FI);
mom[3] = pmod * COS_SIN.first;
G4std::vector<G4double> mom_at_rest(4);
std::vector<G4double> mom_at_rest(4);
for (G4int i = 1; i < 4; i++) mom_at_rest[i] = -mom[i];
G4double new_nuc_mass = dummy_nuc.getNucleiMass(A1[icase],
@@ -396,13 +396,13 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
mom[0] = sqrt(mom[1] * mom[1] + mom[2] * mom[2] +
mom[3] * mom[3] + mass * mass);
G4std::vector<G4double> part_mom =
std::vector<G4double> part_mom =
toTheNucleiSystemRestFrame.backToTheLab(mom);
part_mom[0] = sqrt(part_mom[1] * part_mom[1] +
part_mom[2] * part_mom[2] +
part_mom[3] * part_mom[3] +
mass * mass);
G4std::vector<G4double> ex_mom =
std::vector<G4double> ex_mom =
toTheNucleiSystemRestFrame.backToTheLab(mom_at_rest);
ex_mom[0] = sqrt(ex_mom[1] * ex_mom[1] +
ex_mom[2] * ex_mom[2] +
@@ -428,14 +428,14 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
G4double mass = nuclei.getMass();
// generate particle momentum
G4double pmod = sqrt((2.0 * mass + S) * S);
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double P1 = pmod * COS_SIN.second;
mom[1] = P1 * cos(FI);
mom[2] = P1 * sin(FI);
mom[3] = pmod * COS_SIN.first;
G4std::vector<G4double> mom_at_rest(4);
std::vector<G4double> mom_at_rest(4);
for (G4int i = 1; i < 4; i++) mom_at_rest[i] = -mom[i];
G4double new_nuc_mass = dummy_nuc.getNucleiMass(A1[icase],
@@ -448,13 +448,13 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
mom[2] * mom[2] +
mom[3] * mom[3] +
mass * mass);
G4std::vector<G4double> part_mom =
std::vector<G4double> part_mom =
toTheNucleiSystemRestFrame.backToTheLab(mom);
part_mom[0] = sqrt(part_mom[1] * part_mom[1] +
part_mom[2] * part_mom[2] +
part_mom[3] * part_mom[3] +
mass * mass);
G4std::vector<G4double> ex_mom =
std::vector<G4double> ex_mom =
toTheNucleiSystemRestFrame.backToTheLab(mom_at_rest);
ex_mom[0] = sqrt(ex_mom[1] * ex_mom[1] +
ex_mom[2] * ex_mom[2] +
@@ -492,13 +492,13 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
}
G4CollisionOutput foutput = theFissioner->collide(0, &nuclei);
G4std::vector<G4InuclNuclei> nuclea = foutput.getNucleiFragments();
std::vector<G4InuclNuclei> nuclea = foutput.getNucleiFragments();
if (nuclea.size() == 2) { // fission o'k
// convert back to the lab
for(G4int i = 0; i < 2; i++) {
G4std::vector<G4double> mom = nuclea[i].getMomentum();
std::vector<G4double> mom = nuclea[i].getMomentum();
mom = toTheNucleiSystemRestFrame.backToTheLab(mom);
nuclea[i].setMomentum(mom);
nuclea[i].setEnergy();
@@ -537,7 +537,7 @@ G4CollisionOutput G4EquilibriumEvaporator::collide(G4InuclParticle* bullet,
}
G4std::vector<G4double> pnuc(4);
std::vector<G4double> pnuc(4);
for (G4int i = 1; i < 4; i++) pnuc[i] = pin[i] - ppout[i];
@@ -41,7 +41,7 @@ G4FissionConfiguration G4FissionStore::generateConfiguration(G4double amax,
const G4double small = -30.0;
G4double totProb = 0.0;
G4std::vector<G4double> probs(configurations.size());
std::vector<G4double> probs(configurations.size());
// G4cout << " amax " << amax << " ic " << configurations.size() << G4endl;
@@ -77,8 +77,8 @@ G4CollisionOutput G4Fissioner::collide(G4InuclParticle* bullet,
TEM += DTEM;
G4std::vector<G4double> AL1(2, -0.15);
G4std::vector<G4double> BET1(2, 0.05);
std::vector<G4double> AL1(2, -0.15);
std::vector<G4double> BET1(2, 0.05);
G4FissionStore fissionStore;
G4double R12 = pow(A1, one_third) + pow(A2, one_third);
@@ -88,7 +88,7 @@ G4CollisionOutput G4Fissioner::collide(G4InuclParticle* bullet,
G4double X3 = 1.0 / pow(A1, one_third);
G4double X4 = 1.0 / pow(A2, one_third);
Z1 = G4int(getZopt(A1, A2, Z, X3, X4, R12)) - 1.0;
G4std::vector<G4double> EDEF1(2);
std::vector<G4double> EDEF1(2);
G4double Z2 = Z - Z1;
G4double VPOT, VCOUL;
@@ -140,11 +140,11 @@ G4CollisionOutput G4Fissioner::collide(G4InuclParticle* bullet,
G4double mass2 = nuclei2.getMass();
G4double EK = config.ekin;
G4double pmod = sqrt(0.001 * EK * mass1 * mass2 / mass_in);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double Fi = randomPHI();
G4double P1 = pmod * COS_SIN.second;
G4std::vector<G4double> mom1(4);
G4std::vector<G4double> mom2(4);
std::vector<G4double> mom1(4);
std::vector<G4double> mom2(4);
mom1[1] = P1 * cos(Fi);
mom1[2] = P1 * sin(Fi);
@@ -220,14 +220,14 @@ G4double G4Fissioner::getZopt(G4double A1,
}
void G4Fissioner::potentialMinimization(G4double& VP,
G4std::vector<G4double> & ED,
std::vector<G4double> & ED,
G4double& VC,
G4double AF,
G4double AS,
G4double ZF,
G4double ZS,
G4std::vector<G4double>& AL1,
G4std::vector<G4double>& BET1,
std::vector<G4double>& AL1,
std::vector<G4double>& BET1,
G4double& R12) const {
if (verboseLevel > 3) {
@@ -28,9 +28,9 @@
#include "G4ParticleLargerEkin.hh"
#include "G4NucleiModel.hh"
#include "G4CascadParticle.hh"
#include "g4std/algorithm"
#include <algorithm>
typedef G4std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
G4IntraNucleiCascader::G4IntraNucleiCascader()
: verboseLevel(1) {
@@ -64,7 +64,7 @@ G4CollisionOutput G4IntraNucleiCascader::collide(G4InuclParticle* bullet,
G4InuclNuclei* bnuclei = dynamic_cast<G4InuclNuclei*>(bullet);
G4InuclElementaryParticle* bparticle = dynamic_cast<G4InuclElementaryParticle*>(bullet);
G4NucleiModel model(tnuclei);
G4std::vector<G4double> momentum_in = bullet->getMomentum();
std::vector<G4double> momentum_in = bullet->getMomentum();
momentum_in[0] += tnuclei->getMass();
@@ -82,9 +82,9 @@ G4CollisionOutput G4IntraNucleiCascader::collide(G4InuclParticle* bullet,
itry++;
model.reset();
G4std::vector<G4CascadParticle> cascad_particles;
std::vector<G4CascadParticle> cascad_particles;
G4ExitonConfiguration theExitonConfiguration;
G4std::vector<G4InuclElementaryParticle> output_particles;
std::vector<G4InuclElementaryParticle> output_particles;
G4double afin = tnuclei->getA();
G4double zfin = tnuclei->getZ();
@@ -104,7 +104,7 @@ G4CollisionOutput G4IntraNucleiCascader::collide(G4InuclParticle* bullet,
afin += ab;
zfin += zb;
G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> >
std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
all_particles = model.initializeCascad(bnuclei, tnuclei);
cascad_particles = all_particles.first;
@@ -131,7 +131,7 @@ G4CollisionOutput G4IntraNucleiCascader::collide(G4InuclParticle* bullet,
};
};
G4std::vector<G4CascadParticle> new_cascad_particles;
std::vector<G4CascadParticle> new_cascad_particles;
G4int iloop = 0;
while (!cascad_particles.empty() && !model.empty()) {
@@ -194,7 +194,7 @@ G4CollisionOutput G4IntraNucleiCascader::collide(G4InuclParticle* bullet,
for (G4int i = 0; i < G4int(new_cascad_particles.size()); i++)
cascad_particles.push_back(new_cascad_particles[i]);
G4std::pair<G4int, G4int> holes = model.getTypesOfNucleonsInvolved();
std::pair<G4int, G4int> holes = model.getTypesOfNucleonsInvolved();
theExitonConfiguration.incrementHoles(holes.first);
@@ -210,12 +210,12 @@ G4CollisionOutput G4IntraNucleiCascader::collide(G4InuclParticle* bullet,
<< " output_particles " << output_particles.size() << G4endl;
}
G4std::vector<G4double> momentum_out(4, 0.0);
std::vector<G4double> momentum_out(4, 0.0);
particleIterator ipart;
for (ipart = output_particles.begin(); ipart != output_particles.end(); ipart++) {
G4std::vector<G4double> mom = ipart->getMomentum();
std::vector<G4double> mom = ipart->getMomentum();
for (G4int j = 0; j < 4; j++) momentum_out[j] += mom[j];
@@ -253,7 +253,7 @@ G4CollisionOutput G4IntraNucleiCascader::collide(G4InuclParticle* bullet,
}
if (goodCase(afin, zfin, Eex, ekin_in)) { // ok, exitation energy > cut
G4std::sort(output_particles.begin(), output_particles.end(), G4ParticleLargerEkin());
std::sort(output_particles.begin(), output_particles.end(), G4ParticleLargerEkin());
output.addOutgoingParticles(output_particles);
outgoing_nuclei.setMomentum(momentum_out);
outgoing_nuclei.setEnergy();
@@ -285,7 +285,7 @@ G4CollisionOutput G4IntraNucleiCascader::collide(G4InuclParticle* bullet,
output_particles.push_back(last_particle);
};
G4std::sort(output_particles.begin(), output_particles.end(), G4ParticleLargerEkin());
std::sort(output_particles.begin(), output_particles.end(), G4ParticleLargerEkin());
output.addOutgoingParticles(output_particles);
return output;
@@ -296,7 +296,7 @@ G4CollisionOutput G4IntraNucleiCascader::collide(G4InuclParticle* bullet,
// special branch to avoid the cascad generation but to get the input for evaporation etc
G4std::vector<G4double> momentum_out(4, 0.0);
std::vector<G4double> momentum_out(4, 0.0);
G4InuclNuclei outgoing_nuclei(169, 69);
outgoing_nuclei.setMomentum(momentum_out);
@@ -24,10 +24,10 @@
#include "G4InuclElementaryParticle.hh"
#include "G4LorentzConvertor.hh"
#include "G4ParticleLargerEkin.hh"
#include "g4std/algorithm"
#include <algorithm>
typedef G4std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef G4std::vector<G4InuclNuclei>::iterator nucleiIterator;
typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef std::vector<G4InuclNuclei>::iterator nucleiIterator;
G4InuclCollider::G4InuclCollider()
: verboseLevel(2) {
@@ -122,12 +122,12 @@ G4CollisionOutput G4InuclCollider::collide(G4InuclParticle* bullet,
G4cout << " degenerated? " << convertToTargetRestFrame.trivial() << G4endl;
}
G4std::vector<G4double> bmom(4, 0.0);
std::vector<G4double> bmom(4, 0.0);
bmom[3] = convertToTargetRestFrame.getTRSMomentum();
G4InuclNuclei ntarget(at, zt);
G4std::vector<G4double> tmom(4, 0.0);
std::vector<G4double> tmom(4, 0.0);
ntarget.setMomentum(tmom);
ntarget.setEnergy();
@@ -208,14 +208,14 @@ G4CollisionOutput G4InuclCollider::collide(G4InuclParticle* bullet,
// convert to the LAB
G4bool withReflection = convertToTargetRestFrame.reflectionNeeded();
G4std::vector<G4InuclElementaryParticle> particles =
std::vector<G4InuclElementaryParticle> particles =
TRFoutput.getOutgoingParticles();
if(!particles.empty()) {
particleIterator ipart;
for(ipart = particles.begin(); ipart != particles.end(); ipart++) {
G4std::vector<G4double> mom = ipart->getMomentum();
std::vector<G4double> mom = ipart->getMomentum();
if(withReflection) mom[3] = -mom[3];
mom = convertToTargetRestFrame.rotate(mom);
@@ -223,15 +223,15 @@ G4CollisionOutput G4InuclCollider::collide(G4InuclParticle* bullet,
mom = convertToTargetRestFrame.backToTheLab(ipart->getMomentum());
ipart->setMomentum(mom);
};
G4std::sort(particles.begin(), particles.end(), G4ParticleLargerEkin());
std::sort(particles.begin(), particles.end(), G4ParticleLargerEkin());
};
G4std::vector<G4InuclNuclei> nucleus = TRFoutput.getNucleiFragments();
std::vector<G4InuclNuclei> nucleus = TRFoutput.getNucleiFragments();
if(!nucleus.empty()) {
nucleiIterator inuc;
for(inuc = nucleus.begin(); inuc != nucleus.end(); inuc++) {
G4std::vector<G4double> mom = inuc->getMomentum();
std::vector<G4double> mom = inuc->getMomentum();
if(withReflection) mom[3] = -mom[3];
mom = convertToTargetRestFrame.rotate(mom);
inuc->setMomentum(mom);
@@ -134,7 +134,7 @@ G4double G4InuclSpecialFunctions::randomPHI() {
return twopi * inuclRndm();
}
G4std::pair<G4double, G4double> G4InuclSpecialFunctions::randomCOS_SIN() {
std::pair<G4double, G4double> G4InuclSpecialFunctions::randomCOS_SIN() {
G4int verboseLevel = 2;
if (verboseLevel > 3) {
@@ -143,10 +143,10 @@ G4std::pair<G4double, G4double> G4InuclSpecialFunctions::randomCOS_SIN() {
G4double CT = 1.0 - 2.0 * inuclRndm();
return G4std::pair<G4double, G4double>(CT, sqrt(1.0 - CT * CT));
return std::pair<G4double, G4double>(CT, sqrt(1.0 - CT * CT));
}
G4std::vector<G4double> G4InuclSpecialFunctions::generateWithFixedTheta(G4double ct,
std::vector<G4double> G4InuclSpecialFunctions::generateWithFixedTheta(G4double ct,
G4double p) {
G4int verboseLevel = 2;
@@ -154,10 +154,10 @@ G4std::vector<G4double> G4InuclSpecialFunctions::generateWithFixedTheta(G4double
G4cout << " >>> G4InuclSpecialFunctions::generateWithFixedTheta" << G4endl;
}
G4std::vector<G4double> momr(4);
std::vector<G4double> momr(4);
G4double phi = randomPHI();
G4double pt = p * sqrt(fabs(1.0 - ct * ct));
G4std::vector<G4double> mom1(4);
std::vector<G4double> mom1(4);
momr[1] = pt * cos(phi);
momr[2] = pt * sin(phi);
momr[3] = p * ct;
@@ -97,13 +97,13 @@ void G4LorentzConvertor::toTheCenterOfMass() {
gapp = ga * pscm;
}
G4std::vector<G4double> G4LorentzConvertor::rotate(const G4std::vector<G4double> mom) const {
std::vector<G4double> G4LorentzConvertor::rotate(const std::vector<G4double> mom) const {
if (verboseLevel > 3) {
G4cout << " >>> G4LorentzConvertor::rotate(G4std::vector<G4double>)" << G4endl;
G4cout << " >>> G4LorentzConvertor::rotate(std::vector<G4double>)" << G4endl;
}
G4std::vector<G4double> mom_rot(4);
std::vector<G4double> mom_rot(4);
if (verboseLevel > 3) {
G4cout << " ga " << ga << " gbpp " << gbpp << " gapp " << gapp << G4endl;
@@ -134,16 +134,16 @@ G4std::vector<G4double> G4LorentzConvertor::rotate(const G4std::vector<G4double>
return mom_rot;
}
G4std::vector<G4double> G4LorentzConvertor::rotate(const G4std::vector<G4double> mom1,
const G4std::vector<G4double> mom) const {
std::vector<G4double> G4LorentzConvertor::rotate(const std::vector<G4double> mom1,
const std::vector<G4double> mom) const {
if (verboseLevel > 3) {
G4cout << " >>> G4LorentzConvertor::rotate(G4std::vector<G4double>,G4std::vector<G4double>)" << G4endl;
G4cout << " >>> G4LorentzConvertor::rotate(std::vector<G4double>,std::vector<G4double>)" << G4endl;
}
const G4double small = 1.0e-10;
G4std::vector<G4double> mom_rot(4);
std::vector<G4double> mom_rot(4);
G4double pp = 0.0;
@@ -237,7 +237,7 @@ void G4LorentzConvertor::toTheTargetRestFrame() {
gapp = ga * pscm;
}
G4std::vector<G4double> G4LorentzConvertor::backToTheLab(const G4std::vector<G4double>& mom) const {
std::vector<G4double> G4LorentzConvertor::backToTheLab(const std::vector<G4double>& mom) const {
if (verboseLevel > 3) {
G4cout << " >>> G4LorentzConvertor::backToTheLab" << G4endl;
@@ -251,7 +251,7 @@ G4std::vector<G4double> G4LorentzConvertor::backToTheLab(const G4std::vector<G4d
G4cout << " v2 " << v2 << G4endl;
}
G4std::vector<G4double> mom1(4);
std::vector<G4double> mom1(4);
if(v2 < small) {
mom1 = mom;
@@ -62,8 +62,8 @@ G4CollisionOutput G4NonEquilibriumEvaporator::collide(G4InuclParticle* bullet,
// initialization
G4double A = nuclei_target->getA();
G4double Z = nuclei_target->getZ();
G4std::vector<G4double> PEX = nuclei_target->getMomentum();
G4std::vector<G4double> pin = PEX;
std::vector<G4double> PEX = nuclei_target->getMomentum();
std::vector<G4double> pin = PEX;
G4double EEXS = nuclei_target->getExitationEnergy();
pin[0] += 0.001 * EEXS;
G4InuclNuclei dummy_nuc;
@@ -91,7 +91,7 @@ G4CollisionOutput G4NonEquilibriumEvaporator::collide(G4InuclParticle* bullet,
G4double AR = A - QP;
G4double ZR = Z - QPP;
G4int NEX = G4int(QEX + 0.5);
G4std::vector<G4double> ppout(4, 0.0);
std::vector<G4double> ppout(4, 0.0);
G4bool try_again = NEX > 0 ? true : false;
while (try_again) {
@@ -116,7 +116,7 @@ G4CollisionOutput G4NonEquilibriumEvaporator::collide(G4InuclParticle* bullet,
if (QEX < sqrt(2.0 * EG)) { // ok
G4std::pair<G4double, G4double> parms = paraMakerTruncated(Z);
std::pair<G4double, G4double> parms = paraMakerTruncated(Z);
G4double AK1 = parms.first;
G4double CPA1 = parms.second;
@@ -153,7 +153,7 @@ G4CollisionOutput G4NonEquilibriumEvaporator::collide(G4InuclParticle* bullet,
if (F1 > 0.0 && F2 > 0.0) {
G4double F = F2 / F1;
G4double M1 = 2.77 * MELE * PL;
G4std::vector<G4double> D(3, 0.0);
std::vector<G4double> D(3, 0.0);
D[0] = M1 * F2 * F2 * pow(F, NEX - 1) / (QEX + 1.0);
if (D[0] > 0.0) {
@@ -286,14 +286,14 @@ G4CollisionOutput G4NonEquilibriumEvaporator::collide(G4InuclParticle* bullet,
EPART *= 0.001; // to the GeV
// generate particle momentum
G4double pmod = sqrt(EPART * (2.0 * mass + EPART));
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double P1 = pmod * COS_SIN.second;
mom[1] = P1 * cos(FI);
mom[2] = P1 * sin(FI);
mom[3] = pmod * COS_SIN.first;
G4std::vector<G4double> mom_at_rest(4);
std::vector<G4double> mom_at_rest(4);
for (G4int i = 1; i < 4; i++) mom_at_rest[i] = -mom[i];
@@ -319,14 +319,14 @@ G4CollisionOutput G4NonEquilibriumEvaporator::collide(G4InuclParticle* bullet,
mom[0] = sqrt(mom[1] * mom[1] + mom[2] * mom[2] +
mom[3] * mom[3] + mass * mass);
G4std::vector<G4double> part_mom =
std::vector<G4double> part_mom =
toTheExitonSystemRestFrame.backToTheLab(mom);
part_mom[0] = sqrt(part_mom[1] * part_mom[1] +
part_mom[2] * part_mom[2] + part_mom[3] * part_mom[3] +
mass * mass);
G4std::vector<G4double> ex_mom =
std::vector<G4double> ex_mom =
toTheExitonSystemRestFrame.backToTheLab(mom_at_rest);
ex_mom[0] = sqrt(ex_mom[1] * ex_mom[1] + ex_mom[2] * ex_mom[2]
@@ -416,7 +416,7 @@ G4CollisionOutput G4NonEquilibriumEvaporator::collide(G4InuclParticle* bullet,
// the exitation energy has to be re-set properly for the energy
// conservation
G4std::vector<G4double> pnuc(4);
std::vector<G4double> pnuc(4);
for (G4int i = 1; i < 4; i++) pnuc[i] = pin[i] - ppout[i];
G4InuclNuclei nuclei(pnuc, A, Z);
@@ -26,7 +26,7 @@
#include "G4LorentzConvertor.hh"
#include "G4CollisionOutput.hh"
typedef G4std::vector<G4InuclElementaryParticle>::iterator particleIterator;
typedef std::vector<G4InuclElementaryParticle>::iterator particleIterator;
G4NucleiModel::G4NucleiModel()
: verboseLevel(2) {
@@ -82,7 +82,7 @@ void G4NucleiModel::generateModel(G4double a,
if (a > 3.5) { // a > 3
G4std::vector<G4double> ur;
std::vector<G4double> ur;
G4int icase = 0;
@@ -115,9 +115,9 @@ void G4NucleiModel::generateModel(G4double a,
G4double tot_vol = 0.0;
G4std::vector<G4double> v;
std::vector<G4double> v;
G4std::vector<G4double> v1;
std::vector<G4double> v1;
G4int i(0);
for (i = 0; i < number_of_zones; i++) {
@@ -139,9 +139,9 @@ void G4NucleiModel::generateModel(G4double a,
// proton
G4double dd0 = 3.0 * z * oneBypiTimes4 / tot_vol;
G4std::vector<G4double> rod;
G4std::vector<G4double> pf;
G4std::vector<G4double> vz;
std::vector<G4double> rod;
std::vector<G4double> pf;
std::vector<G4double> vz;
for (i = 0; i < number_of_zones; i++) {
G4double rd = dd0 * v[i] / v1[i];
@@ -173,7 +173,7 @@ void G4NucleiModel::generateModel(G4double a,
fermi_momenta.push_back(pf);
// pion stuff (primitive)
G4std::vector<G4double> vp(number_of_zones, pion_vp);
std::vector<G4double> vp(number_of_zones, pion_vp);
zone_potentials.push_back(vp);
} else { // a < 4
@@ -181,9 +181,9 @@ void G4NucleiModel::generateModel(G4double a,
number_of_zones = 1;
zone_radii.push_back(radForSmall);
G4double vol = 1.0 / piTimes4thirds / pow(zone_radii[0], 3);
G4std::vector<G4double> rod;
G4std::vector<G4double> pf;
G4std::vector<G4double> vz;
std::vector<G4double> rod;
std::vector<G4double> pf;
std::vector<G4double> vz;
G4int i(0);
for (i = 0; i < number_of_zones; i++) {
@@ -216,7 +216,7 @@ void G4NucleiModel::generateModel(G4double a,
fermi_momenta.push_back(pf);
// pion (primitive)
G4std::vector<G4double> vp(number_of_zones, pion_vp_small);
std::vector<G4double> vp(number_of_zones, pion_vp_small);
zone_potentials.push_back(vp);
};
@@ -366,9 +366,9 @@ G4InuclElementaryParticle G4NucleiModel::generateNucleon(G4int type,
G4double pmod = fermi_momenta[type - 1][zone] * pow(inuclRndm(), one_third);
G4std::vector<G4double> mom(4);
std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
@@ -389,9 +389,9 @@ G4InuclElementaryParticle G4NucleiModel::generateQuasiDeutron(G4int type1,
G4cout << " >>> G4NucleiModel::generateQuasiDeutron" << G4endl;
}
G4std::vector<G4double> mom = generateNucleon(type1, zone).getMomentum();
G4std::vector<G4double> mom1 = generateNucleon(type2, zone).getMomentum();
G4std::vector<G4double> dmom(4);
std::vector<G4double> mom = generateNucleon(type1, zone).getMomentum();
std::vector<G4double> mom1 = generateNucleon(type2, zone).getMomentum();
std::vector<G4double> dmom(4);
for (G4int i = 1; i < 4; i++) dmom[i] = mom[i] + mom1[i];
@@ -437,7 +437,7 @@ partners G4NucleiModel::generateInteractionPartners(G4CascadParticle& cparticle)
G4int ptype = cparticle.getParticle().type();
G4int zone = cparticle.getCurrentZone();
G4double pmass = cparticle.getParticle().getMass();
G4std::vector<G4double> pmom = cparticle.getParticle().getMomentum();
std::vector<G4double> pmom = cparticle.getParticle().getMomentum();
G4double r_in;
G4double r_out;
@@ -475,7 +475,7 @@ partners G4NucleiModel::generateInteractionPartners(G4CascadParticle& cparticle)
} else { // normal case
G4std::vector<G4InuclElementaryParticle> particles;
std::vector<G4InuclElementaryParticle> particles;
G4LorentzConvertor dummy_convertor;
@@ -526,8 +526,8 @@ partners G4NucleiModel::generateInteractionPartners(G4CascadParticle& cparticle)
if (cparticle.getParticle().pion()) { // absorption possible
G4std::vector<G4InuclElementaryParticle> qdeutrons;
G4std::vector<G4double> acsecs;
std::vector<G4InuclElementaryParticle> qdeutrons;
std::vector<G4double> acsecs;
G4double tot_abs_csec = 0.0;
G4double abs_sec;
@@ -674,14 +674,14 @@ partners G4NucleiModel::generateInteractionPartners(G4CascadParticle& cparticle)
return thePartners;
}
G4std::vector<G4CascadParticle> G4NucleiModel::generateParticleFate(G4CascadParticle& cparticle,
std::vector<G4CascadParticle> G4NucleiModel::generateParticleFate(G4CascadParticle& cparticle,
G4ElementaryParticleCollider* theElementaryParticleCollider) {
if (verboseLevel > 3) {
G4cout << " >>> G4NucleiModel::generateParticleFate" << G4endl;
}
G4std::vector<G4CascadParticle> outgouing_cparticles;
std::vector<G4CascadParticle> outgouing_cparticles;
partners thePartners = generateInteractionPartners(cparticle);
@@ -706,7 +706,7 @@ G4std::vector<G4CascadParticle> G4NucleiModel::generateParticleFate(G4CascadPart
} else { // there are possible interactions
G4std::vector<G4double> old_position = cparticle.getPosition();
std::vector<G4double> old_position = cparticle.getPosition();
G4InuclElementaryParticle bullet = cparticle.getParticle();
@@ -734,14 +734,14 @@ G4std::vector<G4CascadParticle> G4NucleiModel::generateParticleFate(G4CascadPart
output.printCollisionOutput();
}
G4std::vector<G4InuclElementaryParticle> outgoing_particles =
std::vector<G4InuclElementaryParticle> outgoing_particles =
output.getOutgoingParticles();
if (passFermi(outgoing_particles, zone)) { // interaction
cparticle.propagateAlongThePath(thePartners[i].second);
G4std::vector<G4double> new_position = cparticle.getPosition();
std::vector<G4double> new_position = cparticle.getPosition();
for (G4int ip = 0; ip < G4int(outgoing_particles.size()); ip++)
outgouing_cparticles.push_back(G4CascadParticle(outgoing_particles[ip],
@@ -810,7 +810,7 @@ G4std::vector<G4CascadParticle> G4NucleiModel::generateParticleFate(G4CascadPart
return outgouing_cparticles;
}
G4bool G4NucleiModel::passFermi(const G4std::vector<G4InuclElementaryParticle>& particles,
G4bool G4NucleiModel::passFermi(const std::vector<G4InuclElementaryParticle>& particles,
G4int zone) {
if (verboseLevel > 3) {
G4cout << " >>> G4NucleiModel::passFermi" << G4endl;
@@ -852,9 +852,9 @@ void G4NucleiModel::boundaryTransition(G4CascadParticle& cparticle) {
} else {
G4std::vector<G4double> mom = cparticle.getMomentum();
std::vector<G4double> mom = cparticle.getMomentum();
G4std::vector<G4double> pos = cparticle.getPosition();
std::vector<G4double> pos = cparticle.getPosition();
G4int type = cparticle.getParticle().type();
@@ -972,7 +972,7 @@ G4CascadParticle G4NucleiModel::initializeCascad(G4InuclElementaryParticle* part
G4double rz = nuclei_radius * s1;
G4std::vector<G4double> pos(3);
std::vector<G4double> pos(3);
pos[0] = rz * cos(phi);
pos[1] = rz * sin(phi);
@@ -987,7 +987,7 @@ G4CascadParticle G4NucleiModel::initializeCascad(G4InuclElementaryParticle* part
return cpart;
}
G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> >
std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4InuclNuclei* target) {
@@ -1007,8 +1007,8 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
const G4double s4max = 7.0;
const G4int itry_max = 100;
G4std::vector<G4CascadParticle> casparticles;
G4std::vector<G4InuclElementaryParticle> particles;
std::vector<G4CascadParticle> casparticles;
std::vector<G4InuclElementaryParticle> particles;
// first decide whether it will be cascad or compound final nuclei
@@ -1033,15 +1033,15 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
if(itryg > 0) particles.resize(0);
// nucleons coordinates and momenta in nuclei rest frame
G4std::vector<G4std::vector<G4double> > coordinates;
G4std::vector<G4std::vector<G4double> > momentums;
std::vector<std::vector<G4double> > coordinates;
std::vector<std::vector<G4double> > momentums;
if (ab < 3.0) { // deutron, simplest case
G4double r = 2.214 - 3.4208 * log(1.0 - 0.981 * inuclRndm());
G4double s = 2.0 * inuclRndm() - 1.0;
G4double r1 = r * sqrt(1.0 - s * s);
G4std::vector<G4double> coord1(3);
std::vector<G4double> coord1(3);
G4double phi = randomPHI();
coord1[0] = r1 * cos(phi);
coord1[1] = r1 * sin(phi);
@@ -1077,8 +1077,8 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4cout << " p nuc " << p << G4endl;
}
G4std::vector<G4double> mom(4);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::vector<G4double> mom(4);
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double FI = randomPHI();
G4double P1 = p * COS_SIN.second;
mom[1] = P1 * cos(FI);
@@ -1093,7 +1093,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4int ia = int(ab + 0.5);
G4std::vector<G4double> coord1(3);
std::vector<G4double> coord1(3);
G4bool badco = true;
@@ -1123,7 +1123,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
if (sqrt(s) * exp(-s) > u && s < s3max) {
s = r0forAeq3 * sqrt(s);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
u = s * COS_SIN.second;
G4double phi = randomPHI();
coord1[0] = u * cos(phi);
@@ -1215,7 +1215,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
if (sqrt(s) * exp(-s) * (1.0 + b * s) > u && s < s4max) {
s = r0forAeq4 * sqrt(s);
G4std::pair<double, double> COS_SIN = randomCOS_SIN();
std::pair<double, double> COS_SIN = randomCOS_SIN();
u = s * COS_SIN.second;
G4double phi = randomPHI();
coord1[0] = u*cos(phi);
@@ -1291,7 +1291,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4cout << " can not generate the nucleons coordinates for a " << ab <<
G4endl;
return G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> >
return std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
(casparticles, particles);
} else { // momentums
@@ -1299,7 +1299,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4double p;
G4double u;
G4double x;
G4std::vector<G4double> mom(4);
std::vector<G4double> mom(4);
//G4bool badp = True;
G4int i(0);
@@ -1313,7 +1313,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
if(x > inuclRndm()) {
p = sqrt(0.01953 * u);
G4std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
std::pair<G4double, G4double> COS_SIN = randomCOS_SIN();
G4double pt = p * COS_SIN.second;
G4double phi = randomPHI();
mom[1] = pt * cos(phi);
@@ -1328,7 +1328,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
if(itry == itry_max) {
G4cout << " can not generate proper momentum for a " << ab << G4endl;
return G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> >
return std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
(casparticles, particles);
};
@@ -1360,7 +1360,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
G4double s1 = sqrt(inuclRndm());
G4double phi = randomPHI();
G4double rz = (nuclei_radius + rb) * s1;
G4std::vector<double> global_pos(3);
std::vector<double> global_pos(3);
global_pos[0] = rz * cos(phi);
global_pos[1] = rz * sin(phi);
global_pos[2] = -(nuclei_radius + rb) * sqrt(1.0 - s1 * s1);
@@ -1372,7 +1372,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
};
// all nucleons at rest
G4std::vector<G4InuclElementaryParticle> raw_particles;
std::vector<G4InuclElementaryParticle> raw_particles;
G4int ia = int(ab + 0.5);
G4int iz = int(zb + 0.5);
@@ -1390,7 +1390,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
particleIterator ipart;
for (ipart = raw_particles.begin(); ipart != raw_particles.end(); ipart++) {
G4std::vector<G4double> mom =
std::vector<G4double> mom =
toTheBulletRestFrame.backToTheLab(ipart->getMomentum());
ipart->setMomentum(mom);
};
@@ -1398,7 +1398,7 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
// fill cascad particles and outgoing particles
for(G4int ip = 0; ip < G4int(raw_particles.size()); ip++) {
G4std::vector<G4double> mom = raw_particles[ip].getMomentum();
std::vector<G4double> mom = raw_particles[ip].getMomentum();
G4double pmod = sqrt(mom[1] * mom[1] + mom[2] * mom[2] + mom[3] * mom[3]);
G4double t0 = -(mom[1] * coordinates[ip][0] + mom[2] * coordinates[ip][1] +
mom[3] * coordinates[ip][2]) / pmod;
@@ -1477,6 +1477,6 @@ G4NucleiModel::initializeCascad(G4InuclNuclei* bullet,
for(ip = 0; ip < G4int(particles.size()); ip++) particles[ip].printParticle();
}
return G4std::pair<G4std::vector<G4CascadParticle>, G4std::vector<G4InuclElementaryParticle> >
return std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
(casparticles, particles);
}
@@ -1,189 +0,0 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
#include "G4RegionModel.hh"
const G4double G4RegionModel::radius0 = 1.0E-15;
const G4double G4RegionModel::BE = 7;
G4RegionModel::G4RegionModel(const G4int numberOfLayers, const G4int A, const G4int Z)
{
//count the radiuses, densities and fermi momenta with A and Z
G4double r = radius0*pow(A, 1/3);
if(numberOfLayers==1){
radius.push_back(r);
G4double rho = A / (4/3*pi*pow(r,3));
density.push_back(rho);
G4double protonMass = G4Proton::Proton()->GetPDGMass();
G4double neutronMass = G4Neutron::Neutron()->GetPDGMass();
G4double protonDensity = Z / (4/3*pi*pow(r,3));
G4double neutronDensity = (A-Z) / (4/3*pi*pow(r,3));
protonFermiEnergy.push_back(GetFermiEnergy(protonDensity, protonMass));
neutronFermiEnergy.push_back(GetFermiEnergy(neutronDensity, neutronMass));
protonFermiMomentum.push_back(GetFermiMomentum(protonDensity, protonMass));
neutronFermiMomentum.push_back(GetFermiMomentum(neutronDensity, neutronMass));
G4double fermiEP = *protonFermiEnergy.begin();
G4double fermiEN = *neutronFermiEnergy.begin();
protonPotentialEnergy.push_back(-(fermiEP + BE));
neutronPotentialEnergy.push_back(-(fermiEN + BE));
}
else{
if(numberOfLayers==3){
radius.push_back(0.1*r);
radius.push_back(0.2*r);
radius.push_back(0.9*r);
}
}
}
G4RegionModel::~G4RegionModel(){}
/*
void G4RegionModel::Init(const G4int numberOfLayers, const G4int A, const G4int Z){
//count the radiuses, densities and fermi momenta with A and Z
G4double r = radius0*pow(A, 1/3);
if(numberOfLayers==1){
radius.push_back(r);
G4double rho = A / (4/3*pi*pow(r,3));
density.push_back(rho);
G4double protonMass = G4Proton::Proton()->GetPDGMass()/MeV;
G4double neutronMass = G4Neutron::Neutron()->GetPDGMass()/MeV ;
G4double protonDensity = Z / (4/3*pi*pow(r,3));
G4double neutronDensity = (A-Z) / (4/3*pi*pow(r,3));
protonFermiEnergy.push_back(GetFermiEnergy(protonDensity, protonMass));
neutronFermiEnergy.push_back(GetFermiEnergy(neutronDensity, neutronMass));
protonFermiMomentum.push_back(GetFermiMomentum(protonDensity, protonMass));
neutronFermiMomentum.push_back(GetFermiMomentum(neutronDensity, neutronMass));
G4double fermiEP = *protonFermiEnergy.begin();
G4double fermiEN = *neutronFermiEnergy.begin();
protonPotentialEnergy.push_back(-(fermiEP + BE));
neutronPotentialEnergy.push_back(-(fermiEN + BE));
}
else{
if(numberOfLayers==3){
radius.push_back(0.1*r);
radius.push_back(0.2*r);
radius.push_back(0.9*r);
}
}
}
*/
//--------------------------------------------------------------
G4double G4RegionModel::GetDensity(G4double r){
iterator j=density.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
return 0;
}
G4double G4RegionModel::GetPotentialEnergy(G4double r, G4int particle){
if(particle == 0){ //proton
iterator j=protonPotentialEnergy.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
return 0;
}
if(particle == 1){ //neutron
iterator j=neutronPotentialEnergy.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
return 0;
}
return 0;
}
G4double G4RegionModel::GetMaximumNucleonMomentum(G4double r,
G4int nucleon){
if(nucleon == 0){
iterator j=protonFermiMomentum.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
}
if(nucleon==1){
iterator j=neutronFermiMomentum.begin();
for(iterator i=radius.begin(); i<radius.end(); i++){
if(r <= *i) return *j;
j++;
}
}
G4Exception("G4RegionModel::GetMaximumNucleonMomentum - return value undefined");
return 0;
}
G4double G4RegionModel::GetFermiMomentum(G4double aDensity,
G4double aMass){
return sqrt(2*aMass*GetFermiEnergy(aDensity, aMass));
}
G4double G4RegionModel::GetFermiEnergy(G4double aDensity,
G4double aMass){
//G4double hbar = 1.0E-6;
return (pow(hbar_Planck,2)/(2*aMass)*pow((3*pi2*aDensity),2/3));
}
@@ -38,9 +38,9 @@ void G4WatcherGun::setWatchers() {
G4cout << " >>> G4WatcherGun::setWatchers" << G4endl;
}
G4std::vector<G4double> as;
G4std::vector<G4double> cs;
G4std::vector<G4double> errs;
std::vector<G4double> as;
std::vector<G4double> cs;
std::vector<G4double> errs;
// specific stuff to monitor the difference with fortran
// particle type
@@ -22,7 +22,7 @@
#include "G4InuclSpecialFunctions.hh"
#include "g4std/iostream"
#include <iostream>
G4double G4InuclSpecialFunctions::bindingEnergyExact(G4double A,
G4double Z) {
@@ -22,7 +22,7 @@
#include "G4InuclSpecialFunctions.hh"
G4std::pair<G4std::vector<G4double>, G4std::vector<G4double> > G4InuclSpecialFunctions::paraMaker(G4double Z) {
std::pair<std::vector<G4double>, std::vector<G4double> > G4InuclSpecialFunctions::paraMaker(G4double Z) {
G4int verboseLevel = 1;
if (verboseLevel > 3) {
@@ -37,8 +37,8 @@ G4std::pair<G4std::vector<G4double>, G4std::vector<G4double> > G4InuclSpecialFun
const G4double CP[5] = {0.50, 0.28, 0.20, 0.15, 0.10};
const G4double AA[5] = {0.68, 0.82, 0.91, 0.97, 0.98};
const G4double CA[5] = {0.10, 0.10, 0.10, 0.08, 0.06};
G4std::vector<G4double> AK(6);
G4std::vector<G4double> CPA(6);
std::vector<G4double> AK(6);
std::vector<G4double> CPA(6);
AK[0] = 0.0;
CPA[0] = 0.0;
G4double AK2 = 0.0;
@@ -87,10 +87,10 @@ G4std::pair<G4std::vector<G4double>, G4std::vector<G4double> > G4InuclSpecialFun
AK[4] = AK6 - 0.06;
CPA[4] = 4.0 * CP6 / 3.0;
return G4std::pair<G4std::vector<G4double>, G4std::vector<G4double> >(AK, CPA);
return std::pair<std::vector<G4double>, std::vector<G4double> >(AK, CPA);
}
G4std::pair<G4double, G4double> G4InuclSpecialFunctions::paraMakerTruncated(G4double Z) {
std::pair<G4double, G4double> G4InuclSpecialFunctions::paraMakerTruncated(G4double Z) {
G4int verboseLevel = 1;
if (verboseLevel > 3) {
@@ -126,5 +126,5 @@ G4std::pair<G4double, G4double> G4InuclSpecialFunctions::paraMakerTruncated(G4do
};
};
return G4std::pair<G4double, G4double>(AK2, CP2);
return std::pair<G4double, G4double>(AK2, CP2);
}
@@ -1,12 +0,0 @@
all: # :::
grep ":::" GNUmakefile
man: # ::: Make manual.
make clean; latex manCascade; bibtex manCascade; latex manCascade; latex manCascade; dvips manCascade.dvi -o manCascade.ps; gv manCascade.ps
pub: # ::: Make publication.
make clean; latex pubCascade; bibtex pubCascade; latex pubCascade; latex pubCascade; dvips pubCascade.dvi -o pubCascade.ps; gv pubCascade.ps
clean: # ::: clean directory
rm -f \#*.*\# \#*\# \#* .*~ .#* *.*~ *~ *.o; rm -f core tmp.txt *.blg *.bbl *.toc *.log *.aux *.dvi
@@ -1,4 +0,0 @@
Main document is manCascade.tex.
Create documentation with 'gmake' or
full release (ps, html and pdf-versions)
with 'gmake release'.
@@ -1,226 +0,0 @@
%%%%%%%%%% espcrc2.sty %%%%%%%%%%
% C(amera) R(eady) C(opy) document-style option. (two-column format).
% Version 2.6: 24 November 1994
% To be used with LaTeX version 2.09 (14 January 1992 or later), or LaTeX2e.
%
%
% Copyright (C) 1992 by Elsevier Science Publishers. All rights reserved.
%
% IMPORTANT NOTICE:
%
% You are not allowed to change this file. You may however copy this file
% to a file with a different name and then change the copy.
%
% You are NOT ALLOWED to distribute this file alone. You are NOT ALLOWED
% to take money for the distribution or use of this file (or a changed
% version) except for a nominal charge for copying etc.
%
% You are allowed to distribute this file under the condition that it is
% distributed together with espcrc2.tex.
%
% If you receive only this file from someone, complain!
%
%
%
% Usage: \documentstyle[twoside,espcrc2]{article}
%
\def\fileversion{v2.6}
\def\filedate{24 November 1993}
\typeout{Document-style option `espcrc2' \fileversion \space\space
<\filedate>}
% SIDE MARGINS:
\oddsidemargin -4mm % Left margin on odd-numbered pages.
\evensidemargin 4mm % Left margin on even-numbered pages.
% VERTICAL SPACING:
\topmargin 16mm % Nominal distance from top of page to top
% of box containing running head.
\headheight 13mm % No running headline, and no
\headsep 21pt % space between running headline and text.
\footskip 30pt % Baseline-baseline distance between
% running footline and last line of text.
% DIMENSION OF TEXT:
\textheight 202mm % Height of text part of page
\textwidth 160mm % Width of text part of page, i.e of line
\columnsep 10mm % Horizontal space between columns
\columnseprule 0pt % No vertical rule between columns
% PARAGRAPHING
\parskip 0pt % No extra vertical space between paragraphs.
\parindent 1em % Width of paragraph indentation.
% SECTIONAL UNITS:
\newdimen\@bls % \@b(ase)l(ine)s(kip)
\@bls=\baselineskip % \@bls ~= \baselineskip for \normalsize
\advance\@bls -1ex % (fudge term)
\newdimen\@eps %
\@eps=0.0001pt % \eps = very small positive quantity
\def\section{\@startsection{section}{1}{\z@}
{1.5\@bls plus 0.5\@bls}{1\@bls}{\normalsize\bf}}
\def\subsection{\@startsection{subsection}{2}{\z@}
{1\@bls plus 0.25\@bls}{\@eps}{\normalsize\bf}}
\def\subsubsection{\@startsection{subsubsection}{3}{\z@}
{1\@bls plus 0.25\@bls}{\@eps}{\normalsize\bf}}
\def\paragraph{\@startsection{paragraph}{4}{\parindent}
{1\@bls plus 0.25\@bls}{0.5em}{\normalsize\bf}}
\def\subparagraph{\@startsection{subparagraph}{4}{\parindent}
{1\@bls plus 0.25\@bls}{0.5em}{\normalsize\bf}}
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
\def\@svsec{}\else
\refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname.\hskip0.5em}\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
#6\relax
\@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}%
\endgroup
\csname #1mark\endcsname{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi #7}%
\else
\def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname
{#7}\addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi #7}}%
\fi \@xsect{#5}}
% FIGURES AND TABLES
\long\def\@makefigurecaption#1#2{\vskip 10mm #1. #2\par}
\long\def\@maketablecaption#1#2{\hbox to \hsize{\parbox[t]{\hsize}
{#1 \\ #2}}\vskip 0.3ex}
\def\fnum@figure{Figure \thefigure}
\def\figure{\let\@makecaption\@makefigurecaption \@float{figure}}
\@namedef{figure*}{\let\@makecaption\@makefigurecaption \@dblfloat{figure}}
% \def\fnum@table{Table \thetable}
\def\table{\let\@makecaption\@maketablecaption \@float{table}}
\@namedef{table*}{\let\@makecaption\@maketablecaption \@dblfloat{table}}
\floatsep 10mm plus 4pt minus 4pt % Space between adjacent floats moved
% to top or bottom of text page.
\textfloatsep=\floatsep % Space between main text and floats
% at top or bottom of page.
\intextsep=\floatsep % Space between in-text figures and
% text.
% FOOTNOTE
\long\def\@makefntext#1{\parindent 1em\noindent\hbox{${}^{\@thefnmark}$}#1}
% EQUATION
\mathindent=0em
% TITLE
\def\maketitle{\begingroup % Initialize generation of front-matter
% \let\thanks\@gobble
\def\thefootnote{\fnsymbol{footnote}}%
\newpage \global\@topnum\z@
\@maketitle \@thanks
\endgroup
\let\maketitle\relax \let\@maketitle\relax
\gdef\@thanks{}\let\thanks\relax
\gdef\@address{}\gdef\@author{}\gdef\@title{}\let\address\relax}
\def\justify@on{\let\\=\@normalcr
\leftskip\z@ \@rightskip\z@ \rightskip\@rightskip}
\newbox\fm@box % Box to capture front-matter in
\def\@maketitle{% % Actual formatting of \maketitle
\global\setbox\fm@box=\vbox\bgroup
\vskip 8mm % 930715: 8mm white space above title
\raggedright % Front-matter text is ragged right
\hyphenpenalty\@M % and is not hyphenated.
{\Large \@title \par} % Title set in larger font.
\vskip\@bls % One line of vertical space after title.
{\normalsize % each author set in the normal
\@author \par} % typeface size
\vskip\@bls % One line of vertical space after author(s).
\@address % all addresses
\egroup
\twocolumn[% % Front-matter text is over 2 columns.
\unvbox\fm@box % Unwrap contents of front-matter box
\vskip\@bls % add 1 line of vertical space,
\unvbox\abstract@box % unwrap contents of abstract boxes,
\vskip 2pc]} % and add 2pc of vertical space
\newcounter{address}
\def\theaddress{\alph{address}}
\def\@makeadmark#1{\hbox{$^{\rm #1}$}}
\def\address#1{\addressmark\begingroup
\xdef\@tempa{\theaddress}\let\\=\relax
\def\protect{\noexpand\protect\noexpand}\xdef\@address{\@address
\protect\addresstext{\@tempa}{#1}}\endgroup}
\def\@address{}
\def\addressmark{\stepcounter{address}%
\xdef\@tempb{\theaddress}\@makeadmark{\@tempb}}
\def\addresstext#1#2{\leavevmode \begingroup
\raggedright \hyphenpenalty\@M \@makeadmark{#1}#2\par \endgroup
\vskip\@bls}
% ABSTRACT:
\newbox\abstract@box % Box to capture abstract in
\def\abstract{%
\global\setbox\abstract@box=\vbox\bgroup
\small\rm
\ignorespaces}
\def\endabstract{\par \egroup}
% BIBLIOGRAPHY
\def\thebibliography#1{\section*{REFERENCES}\list{\arabic{enumi}.}
{\settowidth\labelwidth{#1.}\leftmargin=1.67em
\labelsep\leftmargin \advance\labelsep-\labelwidth
\itemsep\z@ \parsep\z@
\usecounter{enumi}}\def\makelabel##1{\rlap{##1}\hss}%
\def\newblock{\hskip 0.11em plus 0.33em minus -0.07em}
\sloppy \clubpenalty=4000 \widowpenalty=4000 \sfcode`\.=1000\relax}
% Collapse citation numbers to ranges.
\newcount\@tempcntc
\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
\@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do
{\@ifundefined
{b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea
\def\@citea{,\penalty\@m\ }{\bf ?}\@warning
{Citation `\@citeb' on page \thepage \space undefined}}%
{\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}%
\ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne
\@citea\def\@citea{,\penalty\@m}
\hbox{\csname b@\@citeb\endcsname}%
\else
\advance\@tempcntb\@ne
\ifnum\@tempcntb=\@tempcntc
\else\advance\@tempcntb\m@ne\@citeo
\@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}}
\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else\@citea
\def\@citea{,\penalty\@m}%
\ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else
{\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else
\def\@citea{--}\fi
\advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi}
% PAGE STYLES
\def\ps@crcplain{\let\@mkboth\@gobbletwo
\def\@oddhead{\reset@font{\sl\rightmark}\hfil \rm\thepage}%
\def\@evenhead{\reset@font\rm \thepage\hfil\sl\leftmark}%
\let\@oddfoot\@empty
\let\@evenfoot\@oddfoot}
% INITIALIZATION
% \twocolumn % Formatting is in 2 columns, with
\sloppy % paragraphs that can be loosely set,
\emergencystretch=1pc % (with 1 pc extra for emergencies),
\flushbottom % and pages of equal length
\ps@crcplain % modified 'plain' page style
@@ -1,852 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 39.0 40.0 564.0 765.0
%%Creator: miheikki using rose_exe
%%CreationDate: Tue Jul 24 18:31:00 2001
%%Title: evaporationUml.eps
%%EndComments
%%BeginProlog
200 dict begin
%%BeginResource: Units and resolution
/cm { 300 mul 2.54 div } def
/PageHeight 26.9 cm def
/PageWidth 20.6 cm def
/LineSpace 0.05 cm def
%%EndResource
%%BeginResource: PenBrush
/TmpPenArray 5 array def
/PenArray 5 array def
/lpStyle 0 def
/lpWidth 1 def
/lpRed 2 def
/lpGreen 3 def
/lpBlue 4 def
/BrushArray 6 array def
/lbStyle 0 def
/lbRed 1 def
/lbGreen 2 def
/lbBlue 3 def
/lbHatchStyle 4 def
/lpPattern 5 def
/BkColorArray 5 array def
/bkRed 0 def
/bkGreen 1 def
/bkBlue 2 def
/TextColorArray 3 array def
/TextRed 0 def
/TextGreen 1 def
/TextBlue 2 def
/PenDashArray [ [] [0.2 cm 0.1 cm] [0.1 cm 0.1 cm] [0.3 cm 0.1 cm 0.1 cm 0.1 cm] [0.3 cm 0.1 cm 0.1 cm 0.1 cm 0.1 cm 0.1 cm] [] [] ] def
/HatchStyleArray [ {HS_HORIZ} {HS_VERT} {HS_BDIAG} {HS_FDIAG} {HS_CROSS} {HS_DIAGCROSS} ] def
/UpdatePen
{/PenArray exch def /PenWidthMemo PenArray lpWidth get def } def
/UpdateBrush
{/BrushArray exch def} def
/UpdateBkColor
{/BkColorArray exch def} def
/UpdateBkMode
{/BkMode exch def} def
/UpdateTextColor
{/TextColorArray exch def} def
/HS_HORIZ
{0 LineSpace PageHeight { /i exch def 0 i MyMatrix itransform moveto PageWidth i MyMatrix idtransform lineto } for stroke } def
/HS_VERT
{0 LineSpace PageWidth { /i exch def i 0 MyMatrix itransform moveto i PageHeight MyMatrix idtransform lineto } for stroke } def
/HS_CROSS
{ HS_HORIZ HS_VERT } def
/HS_FDIAG
{0 PageHeight sub LineSpace 3.5 mul PageWidth
{ /i exch def i 0 MyMatrix itransform moveto i PageHeight add PageHeight
MyMatrix idtransform lineto } for stroke } def
/HS_BDIAG
{0 LineSpace 3.5 mul PageWidth PageHeight add
{ /i exch def i 0 MyMatrix itransform moveto i PageHeight sub
PageHeight MyMatrix idtransform lineto } for stroke } def
/HS_DIAGCROSS
{ HS_FDIAG HS_BDIAG } def
/StrokeWithPen
{/join exch def /Penwidth PenArray lpWidth get def
Penwidth setlinewidth
Penwidth 1 le
{ 0 setlinecap }
{ Penwidth 5 gt { 1 setlinecap } { 2 setlinecap } ifelse } ifelse
join { Penwidth 5 le {0 setlinejoin 3 setmiterlimit}
{ Penwidth 8 gt { 1 setlinejoin } { 2 setlinejoin } ifelse } ifelse } if
join LineJoin -1 ne and {SetLineJoin setlinejoin} if
join MiterLimit -1 ne and {MiterLimit miterlimit} if
PenArray lpRed get 255 div PenArray lpGreen get 255 div PenArray lpBlue get 255 div setrgbcolor
/PenStyle PenArray lpStyle get def
PenStyle 5 lt { PenDashArray PenStyle get 0 setdash stroke }
{ PenStyle 6 eq { [] 0 setdash stroke } {newpath} ifelse } ifelse
join {0 setlinejoin 10 setmiterlimit} if } def
/FillWithBkColor
{ gsave BkColorArray bkRed get 255 div
BkColorArray bkGreen get 255 div BkColorArray bkBlue get
255 div setrgbcolor fill grestore } def
/FillWithBrush
{/BrushStyle BrushArray lbStyle get def
BrushStyle 2 eq dup BrushStyle 0 eq or
{ BrushArray lbRed get 255 div BrushArray lbGreen get 255 div BrushArray lbBlue get 255 div setrgbcolor
{ gsave BkMode 2 eq {FillWithBkColor} if clip
PenArray lpWidth get PenWidthMemo dup 0 ne {div} {pop} ifelse setlinewidth
HatchStyleArray BrushArray lbHatchStyle get get exec
grestore }
{ fill } ifelse }
{BrushStyle 3 eq {BrushArray 5 get p SHR
gsave clip /Tmp save def pfill Tmp restore grestore} {pop}ifelse
} ifelse } def
/Fill&Stroke
{ gsave FillWithBrush grestore StrokeWithPen } def
/patfont 10 dict def patfont begin
/FontType 3 def
/FontMatrix [1 0 0 -1 0 0] def
/FontBBox [0 0 16 16]
def/Encoding StandardEncoding def
/BuildChar{pop pop 16 0 0 0 16 16
setcachedevice 16 16 false [1 0 0 1 .25 .25]{pat}imagemask}bind def
end
/p{/pat 32 string def
{}forall 0 1 7{dup 2 mul pat exch 3 index put dup
2 mul 1 add pat exch 3 index put dup 2 mul 16 add pat exch 3 index
put 2 mul 17 add pat exch 2 index put pop}for}bind def
/AU{1 add cvi 15 or}bind def
/AD{1 sub cvi -16 and}bind def
/SHR{pathbbox
AU/Y1 exch def AU/X1 exch def AD/Y0 exch def AD/X0 exch def}bind def
/M /moveto load def
/pfill{/PatFont patfont
definefont setfont/ch(AAAA)def X0 64 X1{Y1 -16 Y0{1 index exch M ch
show}for pop}for}bind def
%%EndResource
%%BeginResource: LineTo
/LineTo
{ /y exch def /x exch def
moveto x y lineto currentpoint false StrokeWithPen } def
%%EndResource
%%BeginResource: RectanglePath
/RectanglePath
{
3 index 3 index moveto 3 index 1 index lineto
1 index 1 index lineto 1 index 3 index lineto
3 index 3 index lineto pop pop pop pop closepath} def
/RectanglePathBackwards
{
3 index 3 index moveto 1 index 3 index lineto
1 index 1 index lineto 3 index 1 index lineto
3 index 3 index lineto pop pop pop pop closepath} def
%%EndResource
%%BeginResource: EllipticPath
/EllipticPath
{matrix currentmatrix dup 3 index 6 index sub 2 div
3 index 6 index sub 2 div
7 index 2 index add
7 index 2 index add
matrix translate 3 1 roll matrix scale
exch matrix concatmatrix exch matrix concatmatrix setmatrix
1 0 moveto 0 0 1 360 0 arcn closepath
setmatrix
pop pop pop pop
}def
/EllipticPathBackwards
{matrix currentmatrix dup 3 index 6 index sub 2 div
3 index 6 index sub 2 div
7 index 2 index add
7 index 2 index add
matrix translate 3 1 roll matrix scale
exch matrix concatmatrix exch matrix concatmatrix setmatrix
1 0 moveto 0 0 1 0 360 arc closepath
setmatrix
pop pop pop pop
}def
%%EndResource
%%BeginResource: Rectangle
/RectangleOutLine
{/y2 exch def /x2 exch def /y1 exch def /x1 exch def
newpath
x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto
closepath
false StrokeWithPen } def
/FillRectangle
{/y2 exch def /x2 exch def /y1 exch def /x1 exch def
/MyMatrix matrix def
newpath
x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto
closepath
FillWithBrush} def
/FrameRectangle
{/y2 exch def /x2 exch def /y1 exch def /x1 exch def
/MyMatrix matrix def
/x1 x1 0.5 sub def /x2 x2 0.5 add def /y2 y2 0.5 sub def /y1 y1 0.5 add def newpath
x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto x1 y1 lineto
/x1 x1 1 add def /x2 x2 1 sub def /y2 y2 1 add def /y1 y1 1 sub def
x1 y1 moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto x1 y1 lineto
closepath
FillWithBrush} def
%%EndResource
%%BeginResource: Polygon
/Polygon
{/MyMatrix matrix def
newpath PolylineArray PolylineMode 1 sub get exec closepath
true Fill&Stroke } def
/FillPolygon
{/MyMatrix matrix def
newpath PolylineArray PolylineMode 1 sub get exec closepath
FillWithBrush } def
%%EndResource
%%BeginResource: Polyline
/PolylineArray [ {DrawPolyline} {Bezier} ] def
/Polyline
{PolylineArray PolylineMode 1 sub get exec pop pop currentpoint true StrokeWithPen } def
/Bezier
{/nbPoint exch def /nbCurves nbPoint 1 sub 3 idiv def /nbLeft nbPoint 1 sub nbCurves 3 mul sub def
moveto 1 1 nbCurves { pop 4 2 roll 6 -2 roll curveto } for
nbLeft 1 eq { lineto } {nbLeft 2 eq { 4 2 roll 2 copy curveto } if } ifelse
} def
/DrawPolyline
{/nbPoint exch def moveto
1 1 nbPoint 1 sub { pop lineto } for
} def
%%EndResource
%%BeginResource: Ellipse
/Ellipse
{gsave
/Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath 0 0 1 0 360 arc closepath
1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
false Fill&Stroke
grestore } def
/FillEllipse
{gsave
/Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath 0 0 1 0 360 arc closepath
FillWithBrush
grestore } def
%%EndResource
%%BeginResource: Arc
/Arc
{ gsave
/ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy
scale 1 -1 scale
newpath
ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse
1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
false StrokeWithPen
grestore } def
%%EndResource
%%BeginResource: Pie
/Pie
{gsave
/ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
1 -1 scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath 0 0 moveto ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse closepath
1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
true Fill&Stroke
grestore } def
%%EndResource
%%BeginResource: Chord
/Chord
{gsave
/ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
1 -1 scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse closepath
1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
true Fill&Stroke
grestore } def
%%EndResource
%%BeginResource: RoundRectangle
/min {1 index 1 index le { pop} {exch pop} ifelse } def
/RoundRectangle
{/r2 exch def /r1 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def
y2 2 div r2 min cvi /r2 exch def
x2 2 div r1 min cvi /r1 exch def
/width x2 r1 idiv def /height y2 r2 idiv def
gsave
x1 y1 translate r1 r2 scale
1 -1 scale
/MyMatrix r1 r2 matrix scale x1 y1 matrix translate matrix concatmatrix def
newpath
1 1 1 180 270 arc
width 1 sub 0 lineto width 1 sub 1 1 270 0 arc
width height 1 sub lineto width 1 sub height 1 sub 1 0 90 arc
1 height lineto 1 height 1 sub 1 90 180 arc
closepath
PenArray TmpPenArray copy pop
PenArray lpWidth PenArray lpWidth get r1 abs r2 abs add 2 div div put
false Fill&Stroke
TmpPenArray PenArray copy pop
grestore } def
%%EndResource
%%BeginResource: TextOut
/TextOut
{TextColorArray 0 get 255 div TextColorArray 1 get 255 div TextColorArray 2 get 255 div setrgbcolor
gsave translate rotate
0 0 moveto /expwidth exch def dup stringwidth pop expwidth exch div -1 scale show pop pop currentpoint grestore} def
%%EndResource
%%BeginResource: MwSetFont
/EncodingDict 256 dict def
EncodingDict begin
0 [/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus
/comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven
/eight /nine /colon /semicolon /less
/equal /greater /question /at /A /B /C
/D /E /F /G /H /I /J /K /L /M /N /O /P
/Q /R /S /T /U /V /W /X /Y /Z
/bracketleft /backslash /bracketright
/asciicircum /underscore /grave /a
/b /c /d /e /f /g /h /i /j /k /l /m /n
/o /p /q /r /s /t /u /v /w /x /y /z
/braceleft /bar /braceright /asciitilde
/.notdef /.notdef /.notdef /quotesinglbase
/florin /quotedblbase /ellipsis /dagger
/daggerdbl /circumflex /perthousand /Scaron
/guilsinglleft /OE /.notdef /.notdef
/.notdef /.notdef /quoteleft /quoteright
/quotedblleft /quotedblright /bullet /endash
/emdash /tilde /trademark /scaron
/guilsinglright /oe /.notdef /.notdef
/Ydieresis /.notdef /exclamdown /cent
/sterling /currency /yen /brokenbar
/section /dieresis /copyright
/ordfeminine /guillemotleft /logicalnot
/hyphen /registered /macron /degree
/plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine
/guillemotright /onequarter /onehalf
/threequarters /questiondown /Agrave
/Aacute /Acircumflex /Atilde /Adieresis
/Aring /AE /Ccedilla /Egrave /Eacute
/Ecircumflex /Edieresis /Igrave /Iacute
/Icircumflex /Idieresis /Eth /Ntilde
/Ograve /Oacute /Ocircumflex /Otilde
/Odieresis /multiply /Oslash /Ugrave
/Uacute /Ucircumflex /Udieresis /Yacute
/Thorn /germandbls /agrave /aacute
/acircumflex /atilde /adieresis /aring
/ae /ccedilla /egrave /eacute
/ecircumflex /edieresis /igrave /iacute
/icircumflex /idieresis /eth /ntilde
/ograve /oacute /ocircumflex /otilde
/odieresis /divide /oslash /ugrave
/uacute /ucircumflex /udieresis /yacute
/thorn /ydieresis] def
end
/fntdict 100 dict def
/MwScaleAndSetFont
{
2 index findfont dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
dup EncodingDict exch known
{EncodingDict exch get /Encoding exch def} {pop} ifelse
currentdict end /font0 exch definefont
exch scalefont setfont pop
} def
/MwSetFont
{
% look in cache of scaled fonts
1 index /askedsize exch def
2 index /askedname exch def
fntdict askedname known
{ % font name found in cache - what about the size
/fntszdict fntdict askedname get def
fntszdict askedsize known
{
% font size found in cache
fntszdict askedsize get setfont pop pop pop
}
{
MwScaleAndSetFont
fntszdict askedsize currentfont put
}
ifelse
}
{ % not found in cache
MwScaleAndSetFont
/fntszdict 200 dict def
fntszdict askedsize currentfont put
fntdict askedname fntszdict put
}
ifelse
} def
%%EndResource
%%BeginResource: DisplayBB
/DisplayBB {gsave initgraphics 72 300 div 72 300 div scale 0 3300 translate
1 -1 scale 1 setlinewidth 1 0 0 setrgbcolor
/y2 exch def /x2 exch def /y1 exch def /x1 exch def
newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath
stroke grestore } def
%%EndResource
%%EndProlog
%%BeginSetup
[{
%%BeginFeature: *InputSlot AUTO
6 statusdict /setpapertray get exec
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *PageRegion LETTER
LETTER
%%EndFeature
} stopped cleartomark
%%EndSetup
%%Page:
%%BeginPageSetup
/ClockWise false def /LineJoin -1 def /MiterLimit -1 def /PolylineMode 1 def /LineCap 0 def
[0 0 0 0 0] UpdatePen
[0 255 255 255 0 <>] UpdateBrush
[0 0 0] UpdateTextColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
0 0
% All the numbers (for positions, length or font size) given
% in this file are expressed in pixels, but interpreted by
% Postscript as points (1/72 inch)!
% -->so scale accordingly!
72 300 div 72 300 div scale
% So that (0, 0) is at top-left corner of paper sheet (takes postscript scaling into account too)
0 3300 translate
1 -1 scale
/Courier 38 0 MwSetFont
gstate /Mwgstate exch def
%%EndPageSetup:
Mwgstate setgstate newpath
16 16 2416 3054 RectanglePath
clip newpath
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
904 556 1527 723 FillRectangle
904 556 1527 723 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(G4EquilibriumEvaporator) 602 -0.00 915 602 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[1 0 0 0 0 <>] UpdateBrush
904 616 1527 723 FillRectangle
904 616 1527 723 RectangleOutLine
904 639 1527 723 FillRectangle
904 639 1527 723 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
889 114 1414 269 FillRectangle
889 114 1414 269 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(G4VExitationHandler) 497 -0.00 903 160 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[1 0 0 0 0 <>] UpdateBrush
889 222 1414 269 FillRectangle
889 222 1414 269 RectangleOutLine
889 245 1414 269 FillRectangle
889 245 1414 269 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(\(from Geant4\)) 340 -0.00 982 211 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[1 0 0 0 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
pop pop 1203 555
1163 270 LineTo
[0 255 255 255 0 <>] UpdateBrush
1149 332 1193 326 1163 270 3 Polygon
[1 0 0 0 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
268 999 974 999 974 791 938 755 268 755 5 Polygon
pop pop 268 755
938 755 LineTo
974 791 LineTo
974 999 LineTo
268 999 LineTo
268 755 LineTo
pop pop 938 755
938 791 LineTo
974 791 LineTo
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(evaporation and gamma ) 576 -0.00 280 796 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
(de-exitation should be ) 602 -0.00 280 842 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
(separated, but can locate ) 680 -0.00 280 888 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
(in same folder.) 392 -0.00 280 934 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
1566 130 2017 285 FillRectangle
1566 130 2017 285 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(G4FragmentVector) 419 -0.00 1582 176 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[1 0 0 0 0 <>] UpdateBrush
1566 238 2017 285 FillRectangle
1566 238 2017 285 RectangleOutLine
1566 261 2017 285 FillRectangle
1566 261 2017 285 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(\(from Geant4\)) 340 -0.00 1622 227 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
1894 322 2201 477 FillRectangle
1894 322 2201 477 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(G4Fragment) 262 -0.00 1917 368 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[1 0 0 0 0 <>] UpdateBrush
1894 430 2201 477 FillRectangle
1894 430 2201 477 RectangleOutLine
1894 453 2201 477 FillRectangle
1894 453 2201 477 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(\(from Geant4\)) 340 -0.00 1902 419 TextOut
(\)) 26 -0.00 2143 419 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
1591 623 1960 784 FillRectangle
1591 623 1960 784 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(G4Fissioner) 288 -0.00 1632 669 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[1 0 0 0 0 <>] UpdateBrush
1591 731 1960 784 FillRectangle
1591 731 1960 784 RectangleOutLine
1591 754 1960 784 FillRectangle
1591 754 1960 784 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(\(from cascade\)) 366 -0.00 1599 720 TextOut
(\)) 26 -0.00 1902 720 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
1657 1077 2145 1077 2145 969 2109 933 1657 933 5 Polygon
pop pop 1657 933
2109 933 LineTo
2145 969 LineTo
2145 1077 LineTo
1657 1077 LineTo
1657 933 LineTo
pop pop 2109 933
2109 969 LineTo
2145 969 LineTo
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(here or in ) 288 -0.00 1669 974 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
(pre-equilibrium) 392 -0.00 1669 1020 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 128 128 128 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
[1 0 128 128 128] UpdatePen
pop pop 1872 932
1810 785 LineTo
[0 1 128 128 128] UpdatePen
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
Mwgstate setgstate newpath
0 0 2432 3182 RectanglePath
clip newpath
/Courier 38 0 MwSetFont
pop pop 166 3054
766 3054 LineTo
/Courier 35 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 35 0 MwSetFont
(File: /afs/cern.ch/user/m/miheikki/public/html/inucl/doc/inucl.mdl Tue Jul 24 18:31:00 2001 Class ) 2188 -0.00 166 3089 TextOut
(Diagram: evaporation / Main Page 1) 736 -0.00 166 3126 TextOut
Mwgstate setgstate newpath
0 0 2432 3182 RectanglePath
clip newpath
/Courier 38 0 MwSetFont
/Courier 38 0 MwSetFont
pop pop % pop out coordinates for current pen position
showpage
end
% end of the MainWin EPS file
@@ -1,670 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 13.0 40.0 575.0 776.0
%%Creator: miheikki using rose_exe
%%CreationDate: Fri Jun 8 10:08:56 2001
%%Title: hetc.eps
%%EndComments
%%BeginProlog
200 dict begin
%%BeginResource: Units and resolution
/cm { 300 mul 2.54 div } def
/PageHeight 26.9 cm def
/PageWidth 20.6 cm def
/LineSpace 0.05 cm def
%%EndResource
%%BeginResource: PenBrush
/TmpPenArray 5 array def
/PenArray 5 array def
/lpStyle 0 def
/lpWidth 1 def
/lpRed 2 def
/lpGreen 3 def
/lpBlue 4 def
/BrushArray 6 array def
/lbStyle 0 def
/lbRed 1 def
/lbGreen 2 def
/lbBlue 3 def
/lbHatchStyle 4 def
/lpPattern 5 def
/BkColorArray 5 array def
/bkRed 0 def
/bkGreen 1 def
/bkBlue 2 def
/TextColorArray 3 array def
/TextRed 0 def
/TextGreen 1 def
/TextBlue 2 def
/PenDashArray [ [] [0.2 cm 0.1 cm] [0.1 cm 0.1 cm] [0.3 cm 0.1 cm 0.1 cm 0.1 cm] [0.3 cm 0.1 cm 0.1 cm 0.1 cm 0.1 cm 0.1 cm] [] [] ] def
/HatchStyleArray [ {HS_HORIZ} {HS_VERT} {HS_BDIAG} {HS_FDIAG} {HS_CROSS} {HS_DIAGCROSS} ] def
/UpdatePen
{/PenArray exch def /PenWidthMemo PenArray lpWidth get def } def
/UpdateBrush
{/BrushArray exch def} def
/UpdateBkColor
{/BkColorArray exch def} def
/UpdateBkMode
{/BkMode exch def} def
/UpdateTextColor
{/TextColorArray exch def} def
/HS_HORIZ
{0 LineSpace PageHeight { /i exch def 0 i MyMatrix itransform moveto PageWidth i MyMatrix idtransform lineto } for stroke } def
/HS_VERT
{0 LineSpace PageWidth { /i exch def i 0 MyMatrix itransform moveto i PageHeight MyMatrix idtransform lineto } for stroke } def
/HS_CROSS
{ HS_HORIZ HS_VERT } def
/HS_FDIAG
{0 PageHeight sub LineSpace 3.5 mul PageWidth
{ /i exch def i 0 MyMatrix itransform moveto i PageHeight add PageHeight
MyMatrix idtransform lineto } for stroke } def
/HS_BDIAG
{0 LineSpace 3.5 mul PageWidth PageHeight add
{ /i exch def i 0 MyMatrix itransform moveto i PageHeight sub
PageHeight MyMatrix idtransform lineto } for stroke } def
/HS_DIAGCROSS
{ HS_FDIAG HS_BDIAG } def
/StrokeWithPen
{/join exch def /Penwidth PenArray lpWidth get def
Penwidth setlinewidth
Penwidth 1 le
{ 0 setlinecap }
{ Penwidth 5 gt { 1 setlinecap } { 2 setlinecap } ifelse } ifelse
join { Penwidth 5 le {0 setlinejoin 3 setmiterlimit}
{ Penwidth 8 gt { 1 setlinejoin } { 2 setlinejoin } ifelse } ifelse } if
join LineJoin -1 ne and {SetLineJoin setlinejoin} if
join MiterLimit -1 ne and {MiterLimit miterlimit} if
PenArray lpRed get 255 div PenArray lpGreen get 255 div PenArray lpBlue get 255 div setrgbcolor
/PenStyle PenArray lpStyle get def
PenStyle 5 lt { PenDashArray PenStyle get 0 setdash stroke }
{ PenStyle 6 eq { [] 0 setdash stroke } {newpath} ifelse } ifelse
join {0 setlinejoin 10 setmiterlimit} if } def
/FillWithBkColor
{ gsave BkColorArray bkRed get 255 div
BkColorArray bkGreen get 255 div BkColorArray bkBlue get
255 div setrgbcolor fill grestore } def
/FillWithBrush
{/BrushStyle BrushArray lbStyle get def
BrushStyle 2 eq dup BrushStyle 0 eq or
{ BrushArray lbRed get 255 div BrushArray lbGreen get 255 div BrushArray lbBlue get 255 div setrgbcolor
{ gsave BkMode 2 eq {FillWithBkColor} if clip
PenArray lpWidth get PenWidthMemo dup 0 ne {div} {pop} ifelse setlinewidth
HatchStyleArray BrushArray lbHatchStyle get get exec
grestore }
{ fill } ifelse }
{BrushStyle 3 eq {BrushArray 5 get p SHR
gsave clip /Tmp save def pfill Tmp restore grestore} {pop}ifelse
} ifelse } def
/Fill&Stroke
{ gsave FillWithBrush grestore StrokeWithPen } def
/patfont 10 dict def patfont begin
/FontType 3 def
/FontMatrix [1 0 0 -1 0 0] def
/FontBBox [0 0 16 16]
def/Encoding StandardEncoding def
/BuildChar{pop pop 16 0 0 0 16 16
setcachedevice 16 16 false [1 0 0 1 .25 .25]{pat}imagemask}bind def
end
/p{/pat 32 string def
{}forall 0 1 7{dup 2 mul pat exch 3 index put dup
2 mul 1 add pat exch 3 index put dup 2 mul 16 add pat exch 3 index
put 2 mul 17 add pat exch 2 index put pop}for}bind def
/AU{1 add cvi 15 or}bind def
/AD{1 sub cvi -16 and}bind def
/SHR{pathbbox
AU/Y1 exch def AU/X1 exch def AD/Y0 exch def AD/X0 exch def}bind def
/M /moveto load def
/pfill{/PatFont patfont
definefont setfont/ch(AAAA)def X0 64 X1{Y1 -16 Y0{1 index exch M ch
show}for pop}for}bind def
%%EndResource
%%BeginResource: LineTo
/LineTo
{ /y exch def /x exch def
moveto x y lineto currentpoint false StrokeWithPen } def
%%EndResource
%%BeginResource: RectanglePath
/RectanglePath
{
3 index 3 index moveto 3 index 1 index lineto
1 index 1 index lineto 1 index 3 index lineto
3 index 3 index lineto pop pop pop pop closepath} def
/RectanglePathBackwards
{
3 index 3 index moveto 1 index 3 index lineto
1 index 1 index lineto 3 index 1 index lineto
3 index 3 index lineto pop pop pop pop closepath} def
%%EndResource
%%BeginResource: EllipticPath
/EllipticPath
{matrix currentmatrix dup 3 index 6 index sub 2 div
3 index 6 index sub 2 div
7 index 2 index add
7 index 2 index add
matrix translate 3 1 roll matrix scale
exch matrix concatmatrix exch matrix concatmatrix setmatrix
1 0 moveto 0 0 1 360 0 arcn closepath
setmatrix
pop pop pop pop
}def
/EllipticPathBackwards
{matrix currentmatrix dup 3 index 6 index sub 2 div
3 index 6 index sub 2 div
7 index 2 index add
7 index 2 index add
matrix translate 3 1 roll matrix scale
exch matrix concatmatrix exch matrix concatmatrix setmatrix
1 0 moveto 0 0 1 0 360 arc closepath
setmatrix
pop pop pop pop
}def
%%EndResource
%%BeginResource: Rectangle
/RectangleOutLine
{/y2 exch def /x2 exch def /y1 exch def /x1 exch def
newpath
x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto
closepath
false StrokeWithPen } def
/FillRectangle
{/y2 exch def /x2 exch def /y1 exch def /x1 exch def
/MyMatrix matrix def
newpath
x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto
closepath
FillWithBrush} def
/FrameRectangle
{/y2 exch def /x2 exch def /y1 exch def /x1 exch def
/MyMatrix matrix def
/x1 x1 0.5 sub def /x2 x2 0.5 add def /y2 y2 0.5 sub def /y1 y1 0.5 add def newpath
x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto x1 y1 lineto
/x1 x1 1 add def /x2 x2 1 sub def /y2 y2 1 add def /y1 y1 1 sub def
x1 y1 moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto x1 y1 lineto
closepath
FillWithBrush} def
%%EndResource
%%BeginResource: Polygon
/Polygon
{/MyMatrix matrix def
newpath PolylineArray PolylineMode 1 sub get exec closepath
true Fill&Stroke } def
/FillPolygon
{/MyMatrix matrix def
newpath PolylineArray PolylineMode 1 sub get exec closepath
FillWithBrush } def
%%EndResource
%%BeginResource: Polyline
/PolylineArray [ {DrawPolyline} {Bezier} ] def
/Polyline
{PolylineArray PolylineMode 1 sub get exec pop pop currentpoint true StrokeWithPen } def
/Bezier
{/nbPoint exch def /nbCurves nbPoint 1 sub 3 idiv def /nbLeft nbPoint 1 sub nbCurves 3 mul sub def
moveto 1 1 nbCurves { pop 4 2 roll 6 -2 roll curveto } for
nbLeft 1 eq { lineto } {nbLeft 2 eq { 4 2 roll 2 copy curveto } if } ifelse
} def
/DrawPolyline
{/nbPoint exch def moveto
1 1 nbPoint 1 sub { pop lineto } for
} def
%%EndResource
%%BeginResource: Ellipse
/Ellipse
{gsave
/Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath 0 0 1 0 360 arc closepath
1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
false Fill&Stroke
grestore } def
/FillEllipse
{gsave
/Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath 0 0 1 0 360 arc closepath
FillWithBrush
grestore } def
%%EndResource
%%BeginResource: Arc
/Arc
{ gsave
/ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy
scale 1 -1 scale
newpath
ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse
1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
false StrokeWithPen
grestore } def
%%EndResource
%%BeginResource: Pie
/Pie
{gsave
/ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
1 -1 scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath 0 0 moveto ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse closepath
1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
true Fill&Stroke
grestore } def
%%EndResource
%%BeginResource: Chord
/Chord
{gsave
/ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
1 -1 scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse closepath
1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
true Fill&Stroke
grestore } def
%%EndResource
%%BeginResource: RoundRectangle
/min {1 index 1 index le { pop} {exch pop} ifelse } def
/RoundRectangle
{/r2 exch def /r1 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def
y2 2 div r2 min cvi /r2 exch def
x2 2 div r1 min cvi /r1 exch def
/width x2 r1 idiv def /height y2 r2 idiv def
gsave
x1 y1 translate r1 r2 scale
1 -1 scale
/MyMatrix r1 r2 matrix scale x1 y1 matrix translate matrix concatmatrix def
newpath
1 1 1 180 270 arc
width 1 sub 0 lineto width 1 sub 1 1 270 0 arc
width height 1 sub lineto width 1 sub height 1 sub 1 0 90 arc
1 height lineto 1 height 1 sub 1 90 180 arc
closepath
PenArray TmpPenArray copy pop
PenArray lpWidth PenArray lpWidth get r1 abs r2 abs add 2 div div put
false Fill&Stroke
TmpPenArray PenArray copy pop
grestore } def
%%EndResource
%%BeginResource: TextOut
/TextOut
{TextColorArray 0 get 255 div TextColorArray 1 get 255 div TextColorArray 2 get 255 div setrgbcolor
gsave translate rotate
0 0 moveto /expwidth exch def dup stringwidth pop expwidth exch div -1 scale show pop pop currentpoint grestore} def
%%EndResource
%%BeginResource: MwSetFont
/EncodingDict 256 dict def
EncodingDict begin
0 [/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus
/comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven
/eight /nine /colon /semicolon /less
/equal /greater /question /at /A /B /C
/D /E /F /G /H /I /J /K /L /M /N /O /P
/Q /R /S /T /U /V /W /X /Y /Z
/bracketleft /backslash /bracketright
/asciicircum /underscore /grave /a
/b /c /d /e /f /g /h /i /j /k /l /m /n
/o /p /q /r /s /t /u /v /w /x /y /z
/braceleft /bar /braceright /asciitilde
/.notdef /.notdef /.notdef /quotesinglbase
/florin /quotedblbase /ellipsis /dagger
/daggerdbl /circumflex /perthousand /Scaron
/guilsinglleft /OE /.notdef /.notdef
/.notdef /.notdef /quoteleft /quoteright
/quotedblleft /quotedblright /bullet /endash
/emdash /tilde /trademark /scaron
/guilsinglright /oe /.notdef /.notdef
/Ydieresis /.notdef /exclamdown /cent
/sterling /currency /yen /brokenbar
/section /dieresis /copyright
/ordfeminine /guillemotleft /logicalnot
/hyphen /registered /macron /degree
/plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine
/guillemotright /onequarter /onehalf
/threequarters /questiondown /Agrave
/Aacute /Acircumflex /Atilde /Adieresis
/Aring /AE /Ccedilla /Egrave /Eacute
/Ecircumflex /Edieresis /Igrave /Iacute
/Icircumflex /Idieresis /Eth /Ntilde
/Ograve /Oacute /Ocircumflex /Otilde
/Odieresis /multiply /Oslash /Ugrave
/Uacute /Ucircumflex /Udieresis /Yacute
/Thorn /germandbls /agrave /aacute
/acircumflex /atilde /adieresis /aring
/ae /ccedilla /egrave /eacute
/ecircumflex /edieresis /igrave /iacute
/icircumflex /idieresis /eth /ntilde
/ograve /oacute /ocircumflex /otilde
/odieresis /divide /oslash /ugrave
/uacute /ucircumflex /udieresis /yacute
/thorn /ydieresis] def
end
/fntdict 100 dict def
/MwScaleAndSetFont
{
2 index findfont dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
dup EncodingDict exch known
{EncodingDict exch get /Encoding exch def} {pop} ifelse
currentdict end /font0 exch definefont
exch scalefont setfont pop
} def
/MwSetFont
{
% look in cache of scaled fonts
1 index /askedsize exch def
2 index /askedname exch def
fntdict askedname known
{ % font name found in cache - what about the size
/fntszdict fntdict askedname get def
fntszdict askedsize known
{
% font size found in cache
fntszdict askedsize get setfont pop pop pop
}
{
MwScaleAndSetFont
fntszdict askedsize currentfont put
}
ifelse
}
{ % not found in cache
MwScaleAndSetFont
/fntszdict 200 dict def
fntszdict askedsize currentfont put
fntdict askedname fntszdict put
}
ifelse
} def
%%EndResource
%%BeginResource: DisplayBB
/DisplayBB {gsave initgraphics 72 300 div 72 300 div scale 0 3300 translate
1 -1 scale 1 setlinewidth 1 0 0 setrgbcolor
/y2 exch def /x2 exch def /y1 exch def /x1 exch def
newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath
stroke grestore } def
%%EndResource
%%EndProlog
%%BeginSetup
[{
%%BeginFeature: *InputSlot AUTO
6 statusdict /setpapertray get exec
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *PageRegion LETTER
LETTER
%%EndFeature
} stopped cleartomark
%%EndSetup
%%Page:
%%BeginPageSetup
/ClockWise false def /LineJoin -1 def /MiterLimit -1 def /PolylineMode 1 def /LineCap 0 def
[0 0 0 0 0] UpdatePen
[0 255 255 255 0 <>] UpdateBrush
[0 0 0] UpdateTextColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
0 0
% All the numbers (for positions, length or font size) given
% in this file are expressed in pixels, but interpreted by
% Postscript as points (1/72 inch)!
% -->so scale accordingly!
72 300 div 72 300 div scale
% So that (0, 0) is at top-left corner of paper sheet (takes postscript scaling into account too)
0 3300 translate
1 -1 scale
/Courier 38 0 MwSetFont
gstate /Mwgstate exch def
%%EndPageSetup:
Mwgstate setgstate newpath
16 16 2416 3054 RectanglePath
clip newpath
/Courier 38 0 MwSetFont
[0 255 255 204 0 <>] UpdateBrush
[0 1 153 0 51] UpdatePen
186 122 485 325 FillRectangle
186 122 485 325 RectangleOutLine
[0 255 255 204 0 <>] UpdateBrush
186 68 306 122 FillRectangle
[0 255 255 204 0 <>] UpdateBrush
pop pop 186 122
186 68 LineTo
306 68 LineTo
306 122 LineTo
[0 255 255 204 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(cascade) 183 -0.00 244 163 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 255 255 204 0 <>] UpdateBrush
[0 1 153 0 51] UpdatePen
/Courier 38 0 MwSetFont
[0 255 255 204 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 255 255 204 0 <>] UpdateBrush
[0 1 153 0 51] UpdatePen
594 178 973 365 FillRectangle
594 178 973 365 RectangleOutLine
[0 255 255 204 0 <>] UpdateBrush
594 124 746 178 FillRectangle
[0 255 255 204 0 <>] UpdateBrush
pop pop 594 178
594 124 LineTo
746 124 LineTo
746 178 LineTo
[0 255 255 204 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(preequilibrium) 366 -0.00 601 219 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 255 255 204 0 <>] UpdateBrush
[0 1 153 0 51] UpdatePen
/Courier 38 0 MwSetFont
[0 255 255 204 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 255 255 204 0 <>] UpdateBrush
[0 1 153 0 51] UpdatePen
1066 250 1365 453 FillRectangle
1066 250 1365 453 RectangleOutLine
[0 255 255 204 0 <>] UpdateBrush
1066 196 1186 250 FillRectangle
[0 255 255 204 0 <>] UpdateBrush
pop pop 1066 250
1066 196 LineTo
1186 196 LineTo
1186 250 LineTo
[0 255 255 204 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(evaporation) 288 -0.00 1072 291 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 255 255 204 0 <>] UpdateBrush
[0 1 153 0 51] UpdatePen
/Courier 38 0 MwSetFont
[0 255 255 204 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
474 629 773 778 FillRectangle
474 629 773 778 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
474 575 594 629 FillRectangle
[0 192 192 192 0 <>] UpdateBrush
pop pop 474 629
474 575 LineTo
594 575 LineTo
594 629 LineTo
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(utils) 131 -0.00 558 670 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 128 128 128 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
[1 0 128 128 128] UpdatePen
pop pop 396 326
546 574 LineTo
[0 1 128 128 128] UpdatePen
pop pop 546 574
540 535 LineTo
pop pop 546 574
514 551 LineTo
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
58 629 357 778 FillRectangle
58 629 357 778 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
58 575 178 629 FillRectangle
[0 192 192 192 0 <>] UpdateBrush
pop pop 58 629
58 575 LineTo
178 575 LineTo
178 629 LineTo
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(crossection) 288 -0.00 64 670 TextOut
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 128 128 128 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
[1 0 128 128 128] UpdatePen
pop pop 308 326
242 574 LineTo
[0 1 128 128 128] UpdatePen
pop pop 242 574
265 543 LineTo
pop pop 242 574
237 535 LineTo
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
Mwgstate setgstate newpath
0 0 2432 3182 RectanglePath
clip newpath
/Courier 38 0 MwSetFont
pop pop 166 3054
766 3054 LineTo
/Courier 35 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 35 0 MwSetFont
(File: /afs/cern.ch/user/m/miheikki/public/html/hetc/doc/hetc.mdl Fri Jun 8 10:08:56 2001 Component ) 2231 -0.00 166 3089 TextOut
(Diagram: Component View / Main Page 1) 800 -0.00 166 3126 TextOut
Mwgstate setgstate newpath
0 0 2432 3182 RectanglePath
clip newpath
/Courier 38 0 MwSetFont
/Courier 38 0 MwSetFont
pop pop % pop out coordinates for current pen position
showpage
end
% end of the MainWin EPS file
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,53 +0,0 @@
%\documentclass[epsf,twoside,fleqn,espcrc2]{article}
%,a4paper,12pt,twoside
\documentstyle[epsf,twoside,fleqn,espcrc2,epsfig,graphics,html]{article}
%\usepackage[dvips]{epsfig}
%eps-printing when clipping is needed -> use graphics-package
%\usepackage{graphics}
%\usepackage{html}
%\def \AATOS {/afs/cern.ch/user/m/miheikki/public/html/}
\def \AATOS {/home/miheikki/public/html/}
\def \PIC {/afs/cern.ch/user/m/miheikki/public/html/inucl/doc/}
\def \PIC {/home/miheikki/public/html/inucl/doc/}
% put your own definitions here:
% \newcommand{\cZ}{\cal{Z}}
% \newtheorem{def}{Definition}[section]
% ...
\newcommand{\ttbs}{\char'134}
\newcommand{\AmS}{{\protect\the\textfont2
A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
% declarations for front matter
\title{HETC/INUCL++ manual - System for Modelling Hadronic Intranuclear Processes}
\author{Aatos Heikkinen, Nikita Stepanov
\address{ Helsinki Institute of Physics,
P.O.Box 9,\\
FIN-00014 University of Helsinki, Finland }
}
\begin{document}
\begin{abstract}
HETC/INUCL is a simulation package and a model of intermediate energy nuclear
reactions.
INUCL consists of cascade, fission models, pre-equilibrium, and evaporation
This manual describes the models used in INUCL++.
This documet works as an manual, status report and working document for INUCL project. In accordance with this, we represent results acieved with INUCL. Comparison with measurement is made.
We also descripe staus of Geant4 installation on INUCL software \cite{titarenko99a}.
\end{abstract}
\maketitle
% uncomment main sections when needed
%\input{manIntro} % to be done
%\input{manHetc}
\input{manInucl}
%\input{manWorkbook} % to be done
%\input{manStatusReport} % to be done
\end{document}
% end of file
File diff suppressed because it is too large Load Diff
@@ -1,702 +0,0 @@
%\documentstyle[epsf,twoside,fleqn,espcrc2]{article}
%\def \AATOS {/afs/cern.ch/user/m/miheikki/public/html/}
\def \AATOS {/home/miheikki/public/html/}
\def \PIC {/afs/cern.ch/user/m/miheikki/public/html/inucl/doc/}
\def \PIC {/home/miheikki/public/html/inucl/doc/}
% put your own definitions here:
% \newcommand{\cZ}{\cal{Z}}
% \newtheorem{def}{Definition}[section]
% ...
%\newcommand{\ttbs}{\char'134}
%\newcommand{\AmS}{{\protect\the\textfont2
% A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
% declarations for front matter
%\title{HETC/INUCL++ manual - System for Modelling Hadronic Intranuclear Processes}
%\author{Aatos Heikkinen, Nikita Stepanov
%\address{ Helsinki Institute of Physics,
%P.O.Box 9,\\
%FIN-00014 University of Helsinki, Finland }
% }
%\begin{document}
%\begin{abstract}
%HETC/INUCL is a simulation package and a model of intermediate energy nuclear
%reactions.
%INUCL consists of cascade, fission models, pre-equilibrium, and evaporation
%This manual describes the models used in INUCL++.
%This documet works as an manual, status report and working document for INUCL project. In accordance with this, we represent results acieved with INUCL. Comparison with measurement is made.
%We also descripe staus of Geant4 installation on INUCL software \cite{titarenko99a}.
%\end{abstract}
%\maketitle
\section{VOCABULARY}
\begin{itemize}
\item {\it NR} Nuclear reaction
\item {\it quasi-elastic reaction} NR where nucleon can be knocked out of its nuclear.
\item {\it T-nucleus} Target nucleus
\end{itemize}
\section{INTRODUCTION TO INTERMEDIATE-ENERGY NUCLEAR PHYSICS}
Fig :::. Schematic nucleon structure.
The central nucleon is shown as collection of three constituent quarks interacting via the color force.
Closer views show a more complex picture.
At higher energies ($~200~MeV$) energy is high enough to momentarily exite a nucleon into the exited dalta-resonant state ($\Delta$-resonance).
\subsection{Classification of Cross-Sections of NRS}
Let us denote an incident particle and a nucleus under investigation by the symbols $a$ and $A$, respectively.
Following final states following from $a + A$ are possible \cite{iljinov94}:
\begin{itemize}
\item $a + A$ : elastic scattering
\item $a^{*} + A$ : scattering with an exitation of the $a$ particle
\item $a + A^{*}$ : scattering with an exitation of the nucleus
\item $a^{*} + A^{*}$ : scattering in which both the particle and the nucleus are exited
\item $a^{'} + A^{'}$ : reaction involving the production of a new particle and a new nucleus
\item $a^{'} + a^{''} + A^{'}$ : reaction involving the production of two new particles and a new nucleus
\end{itemize}
\subsection{Quantum Formulation of Collision Problem}
\subsubsection{Reaction Channels}
Consider a collision of two complex particles. ::: \cite{iljinov94}
\subsubsection{Transition Probabilities and S-Matrix}
In accordance with general priciples of quantum theory, the probability
::: \cite{iljinov94}
\subsubsection{S-Matrix and Cross-SectionsScattering Amplitude}
::: \cite{iljinov94}
\subsection{Nuclear Structure Phase Diagram}
THe atomic nucleus with its $A$ nucleons is governed by a large number of degrees of freedom.
\subsection{Nuclear density}
Nuclear charge densities are usually well described using present-day effective two-body forces; it is also clear that saturation of the charge dencity indeed occurs.
The central density barely varies when the nucleon number changes.
\subsection{Nuclear radius}
\subsection{Mass formula}
A parametrization of the nuclear binding energy in the groud state,
was first discussed by Bethe, Bacher and Weizs\"{a}cker.
Parametrization conatains volume, surface, Coulomb and symmetry correction terms (we neglegt here typical shell model correction terms) and reads
$$B(E, A) = a_{\nu} A - a_{s} A^{2/3} - a_{c} Z(Z-1)A^{-1/3} -$$
\begin{equation}
a_{A}\frac{(A-2Z)^2}{A}
\end{equation}
Nuclear charge radius turns out to be a rather well-defined quantity.
\subsection{Symmetry consepts in Nuclear Physics}
The nuclear two-body force obeys quite a large number of basic invariances.
Forexample invariance under interchange of the spatial coordinates, translation invariance, Galilean invariance, space reflection symmetry, time reversal invariance, rotation invariance in coordinate space and rotation invariance in charge space (isospin).
The symmetry consept (1932) of isospin symmetry,
describing the charge independence of the nuclear forces by means of the isospin consept with the SU(2) group as the underlying mathematical group was suggested by Heisenberg.
This (simplest of all dynamical symmetries) expresses the invariance of the Hamiltonian under the exchange of all proton and neutron coordinates \cite{heyde98}.
\subsection{Quantum effects}
On the level of the nucleons themselves, invariance of the total nuclear wave functions under the exchange of identical nucleons affects the possible models realized.
The Pauli principle implies antisymmetry for the total fermionic wave function and this has very definite consequences for the types of collective motion that can be set up inside the nucleus.
\subsection{INC-Model}
Widely used semiclassical miscroscopic description of a collision between a particle and a nucleus,
was proposed by Serber \cite{serber47} and Goldberger \cite{goldberger48}.
\section{INTRODUCTION TO INUCL}
\subsection{BACKGROUND}
Originally the INUCL code was published in 1983 \cite{stepanov}.
This code, written with Fortran has been used in [:::] \cite{:::}.
Comprison of results between INCUL and LAHET, CEM95, HETC, CASCADE,
YIELDX, and ALICE code are presented in Refs. \cite{titarenko99a}.
Year 2000 a aroject to implement INUCL into Geant4 hadronic physic
module using C++ wal launched.
New now works also as standalone c++ software called INUCL++.
\subsection{SUMMARY OF INUCL MODEL FEATURES}
\begin{itemize}
\item Originally INUCL was designed as a particle - nucleus interaction simulation block for the particle - target interaction simulation program PHOENIX. It produces an exclusive approach to simulating events with reasonable performance.
\item INUCL is based on N. Stepanov Ph.D. thesis, ITEP, Moscow, 1990.
Also, contribution Vladimir D. Kazaritsky.
\item Now we have standalone F77 based INUCL code and INUCL++ written in C++.
INUCL++ is now written using Geant4 coding style and integration to hadronic models in in progress. Problem: speed is five times slower.
\end{itemize}
\subsubsection{INUCL models}
\begin{itemize}
\item Intranuclear cascade
\item Precompound decay (exiton master equation)
\item Evaporation (Weisskopf - Ewing)
\item Fission (phenomenological model, incorporating some features of the fission statistical model)
\end{itemize}
\subsubsection{Particles treated}
\begin{itemize}
\item Range of targets allowed arbitrary.
\item Range of projectiles allowed p, n, pi and nuclei.
\item From a few Mev to 10 GeV for n, p, pi and up to about 100 MeV / nucleon for nuclei.
\end{itemize}
\subsubsection{Cross sections}
\begin{itemize}
\item Total inelastic cross section has to be taken from outside to normalize all data.
\item Total reaction cross-sections [mbarn] were calculated by J.R. Letaw's formulae
%$45 A^0.7 (1+0.016 sin(5.3-2.63 log10(A)))^(1-0.62 exp(-E / 200) sin(10.9 E^(-0.28)))$
\item Ref.: S. Pearlstein, The Astrophysical Journal, 346: 1049-1060, 1989 November 15
\item Fermi energy calculated in a local density approximation.
\end{itemize}
Nuclear density distribution are derived from the Re(Vopt( r)) distribution. In cascade part, nucleus is divided into a finite number of zones with constant density.
%nuclear radius parameterization: By the definition R(A) is derived from eq. Den(R(A)) = 0.01*Den max
\subsubsection{Nucleon nucleon cross-sections}
\begin{itemize}
\item Parametrizations based on the experimental data (ED) are used.
\item They are energy and isospin dependent.
\item The parameterizations described in ([1] Barashenkov V.S., Toneev V.D. High Energy interactions of particles and nuclei with nuclei. Moscow, 1972
%(in Russian, but there is an English translation)) are used.
\item Pauli exclusion in the INC: Simulated particle-particle interaction is accepted only for secondary nucleons which have $E_n > E_f$.
\item Nuclear density effects are recalculated after each step
\item Cascade is stopped when all the particles, which can escape the nucleus, do it. Then conformity with the energy - conservation law is checked and the given event is accepted, if $E_{exitation} > E_{cut} \approx $a few $MeV$.
\item For nucleons binding energies are calculated using mass formula. For pions Vopt is taken to be constant (about 7 MeV).
\end{itemize}
%What criteria for p-h excitation? is the next phase precompound or compound'? Only pions. The next phase is precompound. Initial conditions are defined during the cascad phase: p -number of "particles", i.e. nucleons, which can not escape the nucleus and have too small interaction probability; h - number of "holes" = number of nuclear nucleons involved in the cascade; energy - momentum of the exiton system derived from the conservation law.
\subsubsection{Precompound phase}
%, describe the PE model used, parameters, i.e., partial state densities, transition rates?
\begin{itemize}
\item Main parameters are taken from (Ribansky I. et al, Nucl.Phys.,1973, A205, p.545 (level densities); Kolbach.C., Z.Phys.,1978, A287, p.319 (matrix elements)).
%(Only N -> N, N -> N + 2, N -> N -2, N -> N - 1 channels are treated.)
\item The angular distribution is isotropic in the frame of rest of the exiton system.
\end{itemize}
%Describe parameters used: level densities, inverse cross-sections or transmission coefficient, choice of optical model parameters if relevant (or reference to source), range of excitations allowed, inclusive or exclusive results? Weisskopf-Ewing evaporation in competition with fission. Emissions of n,p,d,t,He3,He4,gamma is allowed. Level densities derived from exp.data are used. Angular momentum and spin dependence are not included. Other parameters are the same as in ([1], see 5a.) Fermi breakup is allowed onlyin some extreme cases, i.e. for light nuclei and E(exitation) > 3.*Eb. Only the total nuleus decay into neutrons and protons is treated.
\begin{verbatim}
particles p, n, pi, D, T, He3, He4,\gamma
(INUCLN with neutrino 31.3.98)
pion aborption
interaction crosssections
(all data for (N, N) and (pi, N) interactions (dn/dsigma, d3sigma/d3p,
partial multiplicity for npi<=5 error 10-20\%)
pre-equilibrium exiton model
\end{verbatim}
\section{INUCL MANUAL PAGES}
\subsection{Reaction initial state simulation}
\subsubsection{Projectiles and enery range of model}
The GEANT4 INCUL model is cpable to predict final states :::
The allowed allowed bombarding kinetic enery is recommended to be more than
$20~MeV$ in the laboratory frame.
The upper limit of initial kinetic energy is approximately $10~GeV$.
\subsubsection{Nucleus initialization}
\begin{itemize}
\item {\bf Nucleon radii}:
\item {\bf The initial momenta of the nucleons}:
\item {\bf Nucleon binding energy}:
\end{itemize}
\subsection{Random choice of the impact parameter}
The impact parameter $b$ is randomly selected according to
\subsection{Hadron propagation}
\subsection{Selection of particle collisions and particle decays}
\subsection{Hadron interation cross sections}
\subsection{Hadron collision simulation}
\subsubsection{Two-body hadron scattering}
\subsubsection{Angular distribution of two-body hadron scatterings}
\subsubsection{$\pi$-absorption simulation}
\subsection{Resonance decay simulation}
\subsection{Phenomenological potentials}
\subsubsection{The nucleon potential}
\subsection{Pauli blocking simulation}
\subsection{Residual nucleus parameters in the hadron-nucleus collision}
\subsection{Calculation of a residual nucleus exitation energy}
\subsection{Staus of this document}
8.6.02 created by A. Heikkinen
\section{INTRANUCLEAR CASCADE MODEL}
\subsection{NUCLEON DENCITY IN THE ATOM}
Halo nucleus such as $^{11}Li$ are not modelled.
\subsection{IMPULSE DISTRIBUTION}
\subsection{DISTRIBUTION OF POTENTIAL ENERGY}
\subsection{QUANTUM EFFECTS}
Pauli exclusion principle
\subsection{DESCRIPTION OF INC}
\section{FISSION}
\section{PRE-EQUILIBRIUM}
\section{EVAPORATION}
Exited nuclei cools further trough the emission of gamma radiation.
If simulation is detailed,
the emitted gamma rays contain information about the cooling route
and region the nucleus is passing trough.
\section{FROM INUCL TO INUCL++}
\subsection{DESIGN AND ANALYSIS}
We desided to make separate INUCL++ implementations one as an stand
alone with spesific cross-section data and particle definition, and
another iplementation that re-uses Geant4 classes.
So, requirements for the INUCL++ came mainly from Geant4.
Coding style and organization should follow those used in Geant4.
Interace-classes to Geant4 hadronic models define the separation of
cascade, fission, pre-equilibrium, and evaporation. Thus INUCL++
implementation in Geant4 consists of four separate modules.
\subsection{IMPLEMENTATION}
\subsection{TESTING}
Extensive testing :::
Speed comparison :::
\section{INUCL++ AS A STANDALONE PROGRAM}
\section{INUCL++ IN GEANT4}
\section{RESULTS}
We have rewritten INUCL into C++ and tested the performance.
Here we combine INUCL models and HETC INC.
We give here summary of results. Each configuration consists of N=1000 events simulated with same energy etc. parameters.
\subsection{Particle multiplicities}
Multiplities for collisions between $p$ projectile ( $0.5~GeV< E <5.0~GeV$) and aluminium $Al$, iron $Fe$ and lead $Pb$ tragets (at rest) are listed in Figs. \ref{pAlMultiplicity} - \ref{pPbPionMultiplicity}.
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC pAlMultiplicity.eps} }
\caption{Particle multiplicities for $(p, ^{27}Al$).}
\label{pAlMultiplicity}
\end{center}
\end{figure}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC pFeMultiplicity.eps} }
\caption{Particle multiplicities for $(p, ^{56}Fe$).}
\label{pFeMultiplicity}
\end{center}
\end{figure}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC pPbMultiplicity.eps} }
\caption{Particle multiplicities for $(p, ^{82}Pb$).}
\label{pPbMultiplicity}
\end{center}
\end{figure}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC pPbPionMultiplicity.eps} }
\caption{Pion multiplicities.}
\label{pPbPionMultiplicity}
\end{center}
\end{figure}
\subsection{Particle energies}
Figs. \ref{pPbProtonEnergy} - \ref{p500MeVPbProtonEnergy} give an summary of cascade products energy-levels.
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC pPbProtonEnergy.eps} }
\caption{Average proton energies.}
\label{pPbProtonEnergy}
\end{center}
\end{figure}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC pPbNeutronEnergy.eps} }
\caption{Average neutron energies.}
\label{pPbNeutronEnergy}
\end{center}
\end{figure}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC pPbNucleonExitation.eps} }
\caption{Average nucleon exitation energy.}
\label{pPbNucleonExitation}
\end{center}
\end{figure}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC p50MeVPbProtonEnergy.eps} }
\caption{Proton energy spectrum, when projectile particle (p) had an energy of $0.05~GeV$.}
\label{p50MeVPbProtonEnergy}
\end{center}
\end{figure}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC p500MeVPbProtonEnergy.eps} }
\caption{Proton energy spectrum, when projectile particle (p) had an energy of $0.5~GeV$.}
\label{p500MeVPbProtonEnergy}
\end{center}
\end{figure}
\bibliographystyle{unsrt} % Options plain, unsrt, alpha, abbrv
%\bibstyle{plain}
%\begin{thebibliography}{99}
\bibliography{\AATOS texts/references/references.bib}
%\end{thebibliography}
\begin{appendix}
\section{PROJECT plan}
\begin{itemize}
\item we will continue testing INUCL++ against previous verison.
\item we reorganize the code is sutch mannet that integratin to Geant4
is smooth
\item before year 2002 will provide INUCL++ as a stanalone program,
or as an hadronic cascaded modules
(INC, pre-equilibrium, evaporation, fission) in Geant4.
\end{itemize}
\section{UML DIAGRAMS}
Preliminary suggestion for Inucl class interface to Geant4 cascade, pre-equilibrium
and evaporation modules.
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{\PIC cascadeUml.eps} }
\caption{General class structure for Inucl INC model.}
\label{massPb}
\end{center}
\end{figure}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{preEquilibriumUml.eps} }
\caption{General class structure for Inucl pre-equilibrium model.}
\label{massPb}
\end{center}
\end{figure}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{evaporationUml.eps} }
\caption{General class structure for Inucl evaporation/fission model.}
\label{massPb}
\end{center}
\end{figure}
\section{DOWNLOADING INUCL++}
INUCL++ is downloadable from INUCL homepage at
http://cern.ch/aatos.heikkinen/inucl
\scriptsize
\begin{verbatim}
\end{verbatim}
\normalsize
\section{OVERVIEW OF GEANT4 INUCL ACTIVITIES 2001-2002 }
\subsection{General}
Inside LHC Programme Software and Physics project Geant4 activities are under catecory {\it Simulation and event recosntruction}.
In 2001 HIP joined as participating institute the worl wide Geant4 collaboration with the major responsibility for development and maintenance of the nuclear evaporation and intra-nuclear cascade processes.
Two major codes HETC and INUCL are to be implemented and developed for Geant4 hadronic processes.
The conversion of the hadronic evaporation processes of HETC code to Geant4 was completed in 2001 and good progress was made in the Object-Oriented implementation of the intra-nuclear cascade processes.
For another important nuclear Maonte Carlo code, INUCL, an object oriented model was prepared, containing models for intra-nuclear cascade, pre-equilibrium state, fission and evaporation.
Year 2002 started with implementation of INUCL++ as a standalone software.
A preliminary version of architecture using INUCL++ intra-nuclear model. It also integrates HETC cascades and utilites Geant4 hadronic models frameworks.
\subsection{ABOUT GEANT4}
Geant4 represents one of the largest and most ambitious projects of geographically-distributed software development and large-scale object-oriented systems.
\subsection{COLLABORATION TSB AND CB WORK}
In 2001 HIP joined as participating institute the worl wide Geant4 collaboration with the major responsibility for development and maintenance of the nuclear evaporation and intra-nuclear cascade processes.
Our contribution in TSB and CB will be focused in near future to initiatives and coordination of hadronic cascade framework inside Geant4 hadronic framework.
\subsection{INCUL}
\subsubsection{INTORODUCTION TO INUCL}
INUCL++ is an object oriented implementation of Monte Carlo transport code INUCL for computing the properties of high-energy hadronic cascades in matter.
The functionality of INUCL++ is divided into intranuclear cascade, pre-equilibrium, fission, and evaporation parts.
The stand-alone version INUCL++ is comparable to codes such as HETC and LAHET \cite{titarenko99}.
\subsubsection{INUCL++}
We have made independent version INUCL++ using OO methods.
Architecture of INUCL++ intra-nuclear model plays an important role in our Geant4 work, since we use it also for HETC cascades modelling and as an platform to form a general framework for cascading model.
\subsection{PLANS FOR YEAR 2002}
\begin{itemize}
\item INUCL cascade model introduced to Geant4
\item We also aim to have significant progress on pre-equilibrium, fission models.
\end{itemize}
\begin{figure}
\begin{center}
\leavevmode
\mbox{\epsfxsize=8cm \epsffile{massPb.eps2} }
\caption{::: Pb from 1 GeV .}
\label{massPb}
\end{center}
\end{figure}
\subsection{HIP Geant4 activities 2001-2002}
General:
\begin{itemize}
\item In 2001 HIP joined as participating institute the world wide Geant4 collaboration
\item Responsibility for development and maintenance of the nuclear evaporation and intra-nuclear cascade processes.
\item Two major codes HETC and INUCL are to be implemented and developed for Geant4 hadronic processes.
\end{itemize}
Research activities:
\begin{itemize}
\item Participation to Geant4 TSB and CB meetings
\item The conversion of the hadronic evaporation processes of HETC code to Geant4 was completed in 2001
\item Good progress was made in the Object-Oriented implementation of the intra-nuclear cascade processes
\item An object oriented model of INUCL was prepared, containing models for intra-nuclear cascade, pre-equilibrium state, fission and evaporation
\item Implementation of INUCL++ as a standalone software was finalized
\item Prototype for cascading framework was prepared using experience gained from INUCL OO design
\end{itemize}
Future plans:
\begin{itemize}
\item INUCL cascade model introduced to Geant4
\item Fully integration of HETC intra nuclear cascade -model and Geant4.
\item Significant progress on HETC and INUCL pre-equilibrium and fission models.
\item Introduction of general cascade framework to Geant4 hadronic models
\end{itemize}
\section{SAMPLE RUN RESULT}
\scriptsize
\begin{verbatim}
Number of events 100000
average multiplicity 21.5523
average proton number 3.53569
average neutron number 14.5048
average nucleon Ekin 0.0321547
average proton Ekin 0.0848587
average neutron Ekin 0.0193075
average pion number 0.3036
average pion Ekin 0.132491
average pi+ 0.1165
average pi- 0.058
average pi0 0.1291
average A 126.891
average Z 53.1615
average Exitation Energy 0.0258312
average num of fragments 1.69988
fission prob. 0.0117 c.sec 20.592
=====================================================
********** Izotop analysis ******************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**** izotop Z **** 0
A 1 exp.cs 33520 err 12.4
sim. cs 30536.4 err 23.1827
ratio 0.910989 err 0.000769346
simulated production rate 17.3502
A 0 exp.cs 217.4 err 1.22
sim. cs 256.749 err 2.12574
ratio 1.181 err 0.0118124
simulated production rate 0.14588
not found in simulations 0
not found in exper: 0
simulated production rate 17.3502
simulated production rate 0.14588
matched 2 CHSQ 58.3536
raw chsq 13620.6
average ratio 1.04599 err 0.00629088
lhood 1.14436
exper. cs 33737.4 err 13.62
inucl. cs 30793.1 err 25.3085
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**** izotop Z **** 1
A 1 exp.cs 7645 err 6.08
sim. cs 6801.24 err 10.9408
ratio 0.889632 err 0.00159645
simulated production rate 3.86434
A 0 exp.cs 109.4 err 0.96
sim. cs 226.195 err 1.99525
ratio 2.0676 err 0.0257258
simulated production rate 0.12852
not found exper.: A 2 exp.cs 658.7 err 4.2
not found exper.: A 3 exp.cs 338.6 err 3.1
not found in simulations 2
not found in exper: 0
simulated production rate 3.86434
simulated production rate 0.12852
matched 2 CHSQ 40.3162
raw chsq 6501.58
average ratio 1.47862 err 0.0136611
lhood 1.68244
exper. cs 8751.7 err 14.34
inucl. cs 7027.43 err 12.9361
\end{verbatim}
\normalsize
\section{WORKING DOCUMENT}
\subsection{15.7.2002}
\subsection{11.7.2002}
Now platform is ready. G4 and subcodes are organized and compiles. It is time to do actual interface.
Plan for today work 13-15 and 17-20. Build solid understanding of interface. And build it using tests.
\begin{itemize}
\item to do: ApplyYout self seciton CascadeInterfaceen, koncretic conversion between system nucleust and particles, study more interfacing, write towards working interface
\item KineticTrack is starting point for us.
\item Study G4VIntraNuclearTransport (base class G4HadronicInteraction, G4KineticTrack, G4VParticleChange, G4ReactionProductVector) class. And kinetic model. G4TheoFSGenerator steers the collaboration between hadronic generator and intra-nuclear transport
\item Methods in CascadeInteface : {\tt G4VParticleChange* ApplyYourself(const G4Track\& aTrack, G4Nucleus\& theNucleus);
G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus);} G4ReactionProductVector ok also for G4VParticleChange
\item For use of ApplyYourself see G4PreCompoundModel
\item
\end{itemize}
\subsection{10.7.2002}
\begin{itemize}
\item {\bf}: localised files (inucl cascade code at {\tt html/inucl/inucl++/demo},
hetc code at {\tt html/geant4/geant4/source/processes/ hadronic/models/cascade/cascade},
documentation {\tt html/inucl/doc}).
There is also another g4 version at {\tt html/geant4/geant4.3.1 })
\item studied g4 hadronic cascade interface.
\item {\bf all code and documentation in one place} {\tt html/geant4/geant4/source/processes/ hadronic/models/cascade/cascade}
\item general plan: {\bf thursday} put cascade code to g4 installation (+), make compile (+), study interface structure (+), make small testing (+),
{\bf friday} create real interface,
{\bf sunday} create inteface, and test basics (modify test13 hadronic testing)
{\bf monday morning at 8} co g4 at cern, pack {\tt hadronic/models/cascade}, replace cascade files, add new ones, and commit. Mail hpw. Start holiday at 10 am.
\item cascading basic structure: {\tt G4Collider (base),
G4ElementaryParticlCollider,
G4IntraNucleiCollider (:G4Collider, has G4ElementaryParticlCollider, ),
G4NucleiModel (initializes cascade,zones, boundary trasitions, fermi energy, density, potential),
G4InucleNuclei/G4HETCNuclei (A, Z, kinetic energy, mass formula, exiton configuration) }
\item change G4vector to vector:
\item {\tt G4InuclCollider} does the lining of different models inside collision with method command {\tt collide(bull, targ)}
\item {\tt G4IntraNucleiCascader} does the actual cascading. I starts by setting elementary particel cascader {\tt G4IntraNucleiCascader* incascader-> setElementaryParticleCollider( G4ElementaryParticleCollider*)}
\item The actual cascading is then done: {\tt theIntraNucleiCascader-> collide(\&nbullet, \&ntarget);}
\item finally, laboratory frame change, and some other organizational things happen
\item g4 inc base class is defined in models/generator/ management/include/ G4VIntraNuclearTransportModel.hh
\item INC model is set by G4TheoFSGenerator (: public G4HadronicInteraction) by method: {\tt void SetTransport( G4VIntraNuclearTransportModel *const value);}
\end{itemize}
\subsection{10.6.2002}
\begin{itemize}
\item {\bf compilation}: made compilation faster (now takes 45 seconds) by tunig compiler setting and include-statements
\item {\bf sample run}: result from original C++ test are saved to this document as sample run.
\item {\bf compilation}: fixed writing errors, so code now compiles
\item {\bf manual pages}: tempalte for manual pages copied to this document from GEANT4 ninematic model manual
\end{itemize}
\subsection{7.6.2002}
\begin{itemize}
\item {\bf document template}: Added new style and collected material to this documet. Rethinking chapter organization.
\item {\bf picture rezise}: {\tt convert x.ps x.eps2}
\item {\bf new references}: Some text added fron new sources
\end{itemize}
\end{appendix}
%\end{document}
% end of file
@@ -1,990 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: (ImageMagick)
%Title: (massPb.eps2)
%%CreationDate: (Fri Jun 7 19:35:28 2002)
%%BoundingBox: 0 0 611 791
%%LanguageLevel: 2
%%Pages: 0
%%EndComments
%%BeginDefaults
%%PageOrientation: Portrait
%%EndDefaults
%%BeginProlog
%
% Display a color image. The image is displayed in color on
% Postscript viewers or printers that support color, otherwise
% it is displayed as grayscale.
%
/buffer 512 string def
/pixel_stream currentfile /ASCII85Decode filter def
/DirectClassImage
{
%
% Display a DirectClass image.
%
colorspace 0 eq
{
/DeviceRGB setcolorspace
<<
/ImageType 1
/Width columns
/Height rows
/BitsPerComponent 8
/Decode [0 1 0 1 0 1]
/ImageMatrix [columns 0 0 rows neg 0 rows]
compression 0 gt
{ /DataSource pixel_stream }
{ /DataSource pixel_stream /RunLengthDecode filter } ifelse
>> image
}
{
/DeviceCMYK setcolorspace
<<
/ImageType 1
/Width columns
/Height rows
/BitsPerComponent 8
/Decode [0 1 0 1 0 1 0 1]
/ImageMatrix [columns 0 0 rows neg 0 rows]
compression 0 gt
{ /DataSource pixel_stream }
{ /DataSource pixel_stream /RunLengthDecode filter } ifelse
>> image
} ifelse
} bind def
/PseudoClassImage
{
%
% Display a PseudoClass image.
%
% Parameters:
% colors: number of colors in the colormap.
%
currentfile buffer readline pop
token pop /colors exch def pop
colors 0 eq
{
%
% Image is grayscale.
%
/DeviceGray setcolorspace
<<
/ImageType 1
/Width columns
/Height rows
/BitsPerComponent 1
/Decode [0 1]
/ImageMatrix [columns 0 0 rows neg 0 rows]
compression 0 gt
{ /DataSource pixel_stream }
{
/DataSource pixel_stream
<<
/K -1
/Columns columns
/Rows rows
>> /CCITTFaxDecode filter
} ifelse
>> image
}
{
%
% Parameters:
% colormap: red, green, blue color packets.
%
/colormap colors 3 mul string def
currentfile colormap readhexstring pop pop
[ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace
<<
/ImageType 1
/Width columns
/Height rows
/BitsPerComponent 8
/Decode [0 255]
/ImageMatrix [columns 0 0 rows neg 0 rows]
compression 0 gt
{ /DataSource pixel_stream }
{ /DataSource pixel_stream /RunLengthDecode filter } ifelse
>> image
} ifelse
} bind def
/DisplayImage
{
%
% Display a DirectClass or PseudoClass image.
%
% Parameters:
% x & y translation.
% x & y scale.
% label pointsize.
% image label.
% image columns & rows.
% class: 0-DirectClass or 1-PseudoClass.
% colorspace: 0-RGB or 1-CMYK.
% compression: 0-RunlengthEncodedCompression or 1-NoCompression.
% hex color packets.
%
gsave
currentfile buffer readline pop
token pop /x exch def
token pop /y exch def pop
x y translate
currentfile buffer readline pop
token pop /x exch def
token pop /y exch def pop
currentfile buffer readline pop
token pop /pointsize exch def pop
/Helvetica findfont pointsize scalefont setfont
x y scale
currentfile buffer readline pop
token pop /columns exch def
token pop /rows exch def pop
currentfile buffer readline pop
token pop /class exch def pop
currentfile buffer readline pop
token pop /colorspace exch def pop
currentfile buffer readline pop
token pop /compression exch def pop
class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
grestore
} bind def
%%EndProlog
%%Page: 1 1
%%PageBoundingBox: 0 0 611 791
userdict begin
%%BeginData:
DisplayImage
0 0
612 792
12
612 792
1
0
0
144
ffffff
787878
4b4b4b
585858
393939
474747
484848
666666
bbbbbb
8a8a8a
414141
eeeeee
999999
333333
000000
222222
555555
888888
777777
444444
cccccc
aaaaaa
111111
dddddd
303030
3b3b3b
171717
2e2e2e
202020
707070
292929
535353
7b7b7b
252525
595959
2d2d2d
131313
080808
282828
383838
686868
dfdfdf
afafaf
767676
323232
505050
cfcfcf
050505
101010
0d0d0d
858585
7f7f7f
5b5b5b
5a5a5a
181818
8f8f8f
1e1e1e
0e0e0e
646464
626262
404040
3e3e3e
969696
262626
7d7d7d
0c0c0c
949494
2a2a2a
bfbfbf
828282
141414
434343
717171
040404
b1b1b1
4a4a4a
161616
3f3f3f
464646
191919
272727
525252
606060
070707
1f1f1f
313131
0a0a0a
232323
0b0b0b
1b1b1b
0f0f0f
010101
020202
1c1c1c
373737
6f6f6f
6e6e6e
4d4d4d
848484
030303
2f2f2f
060606
151515
6d6d6d
9f9f9f
747474
3c3c3c
121212
242424
b3b3b3
2c2c2c
616161
818181
090909
a7a7a7
545454
a3a3a3
5c5c5c
515151
353535
3a3a3a
1a1a1a
424242
1d1d1d
4e4e4e
696969
a6a6a6
363636
3d3d3d
8e8e8e
d1d1d1
959595
494949
797979
343434
4f4f4f
989898
838383
2b2b2b
727272
7c7c7c
c0c0c0
a4a4a4
212121
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLo5!<E8n!rrJq!rrMq!rrMr!rrMq!rrMr!rrMq!rrMq!rrMr!rrMq!rrMr!rrM
q!rrMr!rrMq!rrMr!rrMq!rrMr!rrMq!rrMr!rrMq!rrMr!rrMq!rrMr!rrMq!rrMr!rrMq!r
rMr!rrMq!rrMr!rrMq!rrMr!rrMq!rrMr!rrJp!rrMr!rrMq!rrPM!!*<1o)Jaso)Jarnc/Xq
o)Jarnc/Xqo)Jarnc/Xqnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/
Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo
)Jasnc/Xqo)Jarnc/XspAb:'$jR7@%Kd4Q&I[Ru!=&o%!!!>s!!!;q!!!;r!!!;q!!!;r!!!;
q!!!;q!!!;r!!!;q!!!;r!!!;q!!!;r!!!;q!!!;r!!!;q!!!;r!!!;q!!!;r!!!;q!!!;r!!
!;q!!!;r!!!;q!!!;r!!!;q!!!;r!!!;q!!!;r!!!;q!!!;r!!!;q!!!;r!!!>r!!!;r!!!;q
!!!B$!!EoJ&I8dD!!EuN&e>T7!!*B3o)Jas_uKcC_uKcC_uKcC_uKcC_uKcC_uKcC_uKcC_uK
cDdf9@Mp](:"p&G(,irB)d#kJ#r$,cfD#fH]C#fH]C#fH]C#fH]C#fH]C#fH]C#fH]C$.AkS"
8)Wt$O7FW%hdb"!=9&'!!!>D!!!;C!!!;C!!!;C!!!;C!!!;C!!!;C!!!;C!!!>S!!!,o!!WZ
;(B>6b'&W`j#mc+_JcLB&JcO-t!!Dlo!=fqF!!*H;huEca#_E&.!.k3&!9jI`$g@Wk"8)Wp%L
`79!=KCq!!*B3JcLB&JcLB&l2Ui$&*X&o"8)Wu&dK3Q(C(W3!!*B3JcLB&JcLB&l2Ukj&e+%*
!!Durp^R9;huEca#_E&.!.k3&!:'Ue(C'pRl2Uedbl@bN#_E&.!.k3&!:'Uf#8[aV%-mln"3g
fH#mc+_JcLB&JcP-;"UbkS(_R)>!!!,G!!*B3JcLB&JcLB&lMq)&&JbWX$g[in"8)Wo#Q#"h!
!*B3JcLB&JcLB&lMq%m((qAqlMpneo`,"&'\`Tg#mc+_JcLB&JcP'9!Yu:Xl2Uedo`+t-g&M-
[#_E&.!.k3&!:'Ue'F+mTl2Uedo`,")'&*Be#mc+_JcLB&JcP*:!"8c+!"8)m!!Dlo!"\r:hu
Eca#_E&.!.k3&!71]G"8)Wp%M[Xt!=9$`!.k3&!.k3t!!!,o!!!eg!!*B3JcLB&JcLB&ci=%J
o`,")'&*Be#mc+_JcLB&JcO-t!!Dlo!#,5>huEca#_E&.!.k3&!71]G"3gfH#mc+_JcLB&JcO
-t!!Dur!='G9!!*?<irB)d#_E&.!.k3&!71]G"8Dj!'GD#d'`J(8#S@LN(ZPJr#mc+_JcLB&J
cO-t!!Dop!Yc7\rXJuC&f9L,!=9$`!.k3&!.k3t!!!,N!!jAO%M&sJ!!rp_!.k3&!.k4:!!Eo
B#S[m:!!!,N!!j2P!!j&7!!rp_!.k3&!.k4:!!EuL&/,H;!!!,K!!Nu?!!!<2JcLB&JcLB&lMq
%r)%HlWlMpnedf9Fa',CKH!=9$`!.k3&!.k4:!!EuS)]T7O!!!,Z!!!]0!!!E*!!*fIqu?a(#
_E'Q!!!H('*&I6!;m<,''fMt%dF#o#e9p@&/5*E$ig84#k\0$$O7.O',:EG!Yc+VrW!?4%h9?
f!!!B3%Ls-drW!!6%MA[?rXJrE')hn/%LEaJ!!`K6!!!K7rW!!0!!)s-!Y#hDr!i]>JcP'9"9
TYQ*YI]<!!Durp^R9;o`,=,&Ind@$P*^W()6`J!"f)=!rr<-#_E'Q!!!Z.%KI.7!!!MS!!!M>
!!`lF'EAaG#7U5)"V;+N!"fb@!!3cB%K6>9%gW.O%2&XP%1<.J&,lP1&e,<L!!j&7!"0>M!!!
N*!!WZ.%KHJ='E.t6%KHJ=rW!$4%fd)k!9X=c(C^``'b]d3!!Dlo"qh@N!#H(Wo`,=8&e4mA#
8."E#8$V0!=9$`!;ZZq')E(<'(l5)%f?;X&I/:A'*&"G&e5H\!"9VY$ig8@&ePcW!##tT&eYZ
e!!!EC((:0C'+tcf!<*J=!!N`D'G:WZo)Je$'`J(F&dn[>%hocq!!!K:!!!95!"K_B!"'>H!!
!ND()HrN%fQG2'Fb$B%f659'bp]Y!!!KA&c_nA!!!N-!!3W1%Y=]D!!EiA&f25G!!!,o!!*Q8
rVus8&+]c'%KHJErVus8%efr(#mc+_q>^L.q@3K<o`4n"0*hOk'FbiY!"KSK&-im[(DdSf!"K
DF%KHJ='c.>g$P!.N%i6#m#QP>H$P!.:%^uE?$PO9anc/Y"q>_!>%fchI!!!WB&etcS!"Si*#
8@[K#8.":%fHA/%KHM,%Mf<M&c_nA!!!K/%2T!S!!!K/!"0DP!;m<,#_E'D!!Eu@!##b(!!!,
o!!!N,!!!N#!!<]2!"Sr-!"S`'!=9)2#QPZm!!3-#')E(<'(l5)%f65-'G_>\!%/6V!#HC`&c
_nE&c`CA!"Ju/%KHJ=!!!K/&eY0E&eY0S!!!K/!"QO>#Rh=Y((Llg&f:3@!"Si*":#P>'bC9D
"r%X\((:0Qq>^a*&c`XW!!!N-!!<]2!"Sl+%2&X@%KHJ=!!j5<%KHM-%Kd=D!"OS\k5YPg$kh
q-!"8]1!$Ck6!=onD!!*?@o)K%+!!!cK!!!fGpAb4##_E'Q!!!Z.%KI.7!!!N+!!3rI&cMb1%
fQG/%MJ^M&/"sQ!!!K/!"Ju/%KHJ=!##5?#SI+I!!!K/!"QI<":#>J',:$<!>ZLN!!<l?!#GM
C!YbnKrW!'8('#*drW!$6#QPY=%K[=E%fQG2'Ft0D%f?;;'bp]K%KHJ=!!!6=%KHJ=qZ$U+Jc
Os6!=KS'!!!,o!!X#E(B=^V'(Z)/%KHJ6%1<OK'))A,#mc+_q>^L.q@3K<o`+t%qZ&2]#RqRM
!"K\C&eGHV!!!W;!"Ju/%KHJ=!!!K/!"Ju;#64`:#QP>7!"Ju/%_)KC#7LSF$PO6H!!j,I$NL
GC!#6%D!"oML'b(NN!#,kB&.f3L#S-nM&,lP:#8."H!!!B9&c_nAqu?^0rW!<9!!!K/!"0;I!
!!N+!!!L\!6P9A"7uQr&J#?^'(Q#-%KHJ:&.THgp&G+"#_E'Q!!!Z.%KI.7!;m<\'+toX#SR1
<%LimZ$NLeL%MAaA%KHJ=!!!K/!"Ju/%KHJA%Ls*O!"Ju/%KHJE%CuNF#7LS4&c`:Q'_MG3'F
tZ`',1EO&cMbC#S-nJ((Lff'EAgX%Ls-d!!a,8!!3E:!<!B-')hn/%KR4JrW!$1!!!N.!!ElD
!!!N+!;m<,'7p51!!!,G!!*B3JcPWI!#PJ;!#Oi!!"R]_!#3!E!#PV7";_%<$O_OdJcPBB!!D
urpC?*]!so8>'S6>=!!!L\!.k3&!;um"(C19gbl@bN#_E'/!!!L\!.k3&!;ZZq"3gfH#mc+_q
>g:'o`,4)#7_4W'EA.2%Kd=D%Li=:!>Q+?!!!M&!!E]A'+u,R!!*]DrW!*:%0-k<!;m<.&c`F
>!<*H8((pTI#S.:C!!a-g!2TYq"8)Wu$O71P'G:f3!!*B3JcPWI!##,.!#"r)#S7FQ!"f_A!"
Sl+!=fA6!"'>K!#H(T%MfWV%\`q-&eP*D(D%;R!"0/M#QOi8'EAUC!"Sl+!"So,%1W@<$P3mM
!"onE#S.;p!2TYq"8)Wu#7VCX$P3s/!!*B3JcPWI!##,.!#"r)!=fhC!!<iA!"Sl+&e5-S!!!
66!"fhD!!j&7%KI1UV>pW0(&S%4'+=I5$4IFF&eY0E%KHJ=qZ$U+qu?^,rW!3<%0-A9%i#T\J
cMSH!!Dlo"qDFL%KHkPhuEca#_E'Q!!!Z.!!!Z)!!!N*!;m<4#QP>C$ih"N%f?;2&dJCH$PNo
F!!!T-!!*fCoDf.+&e,3K!"Ju/r!ic6!"So,!"Sr-!"Su.!XKPSJcNOc!"7oh!!Dlo"qCV5%K
HJ=huEic#m_5s!;lfs')DS.'(l5)%f-/*%f651%LWgJ#8[mL!!a5L&c_nA%2G]>!#,50!=0>1
!!3E9#lXf+%KHJ=qZ$U+qu?^,r;Zg-rW!!7((u3!^]4BC%I!ip(C19go`,10&HE:@$k;+p!=9
$`!;ZZq')DS.'(l5*()QrM!ttq?%f656%KI.M'*&LB!!a&OrW!!0$kK07!"f#-!>Q%7!!!N-!
!<]2!"Sl+!"So,!"Su.#S[dL!"0;R%2FHp_#ONL#7Tbq!!Dlo"r%g^%MKTlhuEca#_E'Q!!!Z
.!!!Z)!!j,I$NLGC!!!N+!!s,8&J,QT%KHnKqu?g/!!a.6!!*]<qu?a/$hF>u%fHA0%KHJ=qZ
$U+qu@09!!!B9&c_nF&HEL\$\AAr!!<T?!#+Mq!!Din":GqW$k(qm!=9$`!;ZZq')DS.'(l50
'FtZ`',1EHr!j&I!"JuF%MSmQ!##2>"TT#4$PjPV!!`lF'`\4A&.J+0!"Sr-!Y,21r!i`@!<!
B.'*.t@";1\7&JP-D!>5rq!5edA&dSI[+W;O4lMpnebl@bN#_E'Q!;I1Y!;-<p$kijN(P2XK!
!a&J&f;i''GB^3!!Dur!Y,21q@;E`!=9$`!.k3&!.k4:!!FPe,n^aS!!!,G!!*B3JcLB&JcMh
O!"@lf!#4Dm"=>?,'dr;I!!Dur!='"b!!<N6#S_jjp](:"JcP9?!=KNl!6Y?C(DGp2";ChA%i
=7+"=Oa,&fpB?!uD4K+8>g;%i,o5!!*B3JcPNF!Z)Ugnc/Y"qZ$[3%MA[?!"Sr-!Y,21r!i`?
'Dr=?&u,F-#RBl""UbPF%MKQU!!3iE&cMb=#S.C\&c_n>#7_4W'`J(6'Fk`S!<*H/()$THr!i
]>O8oFs%20Bf$gI]q&e-9$$P;=u"<@sb!#"St!!Drq!t5qV(Y\oj#mc+_pAb7"'GBs:!"Sl+!
YPqOrVup.r;Zp0!!!N)!!!M%!!3]E'_25-&.K!I&J+j@!YPqOrW!?;#QPYM&c`IP$NLbLrW!!
4%1W::#S$h7$P3mM!"One":GtV'+=.,%LWj_&-sZq!##_J!!!Q<r;Zj,$h"&u!Y-Rj''fMt"8
2]s$PF3eg].?]#_E'O!!F)C!"p+>!!!N+!!WrJ()HrN%fHA0%KHJ=q#CC)UAtB/$k`gC'(l5*
%M\mB&eYQP!"TbZ(B=FF$NL/4$igbOrW!9<$NL/;'G_Jb!"Su.";D:F!"One!uDI\'C,W+&/,
Wf$P3pa'bh/drY#21!Yc:\oDen+')hk4#S%.)!!!,n!!!Z0%c@<f#mc+_p](F%(B=gUo)Jb#q
u?p8%fchI!!)m+!<<,t%KHe6!!!M(!!a;O&e"aO#7U5)!"Si*%MTER#8.":&e>Ti$NL/:q>^a
7%fchI!!!N-!!3W1!;m<,#`o#h'Gg``$iU,+(&S%3(&S%4'FXm?()7Gi'*f'b!"o8C'cdqf&e
k<G'+5EYo`,41&dSIF&e533!!!,p!!<K?((o=%!=9$`!;QTq(C0p>!>64@!!!N,!!``A!#6"E
!"Sr-!tG;2%f$))%\Wk*'*f3^(%VD*%f-/.#8."O&,lP5'G1ll$ige6!!``A!#6"E!"Sr-!tG
;2%YF`^((:'@!>?:K!"0/J&c`XZ(C(We$Om"7%1!RH'+bE\!"]hU'G))T!!jAQ&HEIE&eY]<!
!!,r!!EZ7%L3Br!!*B3JcPTH!='G?!!*H?oDek$qu?^4r=/lC!"Sr-!tG;2%f$))%\Wk*#6u"
Q&b>u'()QrM!ttq?(B"^E'F5-H!!EuO!#?CM!!<l?!#GMC!YbVErW!'8%fcS>K`Dl##7^tN$O
@@T&/#?N&dT+"&.fNf'+=[;$P3p_$P+$g&eGE]&bc84'b(Na&M"8#/.NK\!!!,r!!3oH#h]1Y
#mc+_q>^O4#Q+Q&&f:3@!"Sr-!>Q.E!!<H=!"Sr-!tG;2%f$))%\`q,#R:bG&ead9#S7OT!!j
)8'bC9D&dK$a%1<.9'Fb$R&.8ID%fd=TrW!<2&c`CA!"05K!!!L`!#?@Y%gNU]!!!Z;%MSmC&
/5^.'J9ps(]"+C$P3:<$NLV9$k*gM!#,e@$iL&4$PNdc/K?,a&hb6g!!!,r!!!Y`!!<N6#S_j
jqu?a&#Q#,6#PA)q%K[:K&cMb4#S-nFr;Zm/!!)p,!#,>3!"P_'!>-.I!!*ZJoDf.2%h9'_'E
A@MrW!Q:%fd4X%Ls-d!#,qR%MKNV#8-q8!XK;:r=/f?rW)j+!#(:k'akQQ%hK6O&HE%R()Ibe
$Q^K.!X8r$!!<fF&.AI;&eG9J&/"sN$OdXJ)uqT"0JO%VlMq#'#RDNs!!*B3JcLB&JcMeN(D-
l^1+`k>'Fbd5%hT'['`\:k#TF`t#k@rr'+"R;'+tQ_1_C95&dJCJ#6P5F+><m-2<Y#?"3gfH#
mc+_JcLB&WW3kJ%hT6e!"9VV%Q4V22\-iR)`Thg&/,<^mJmn5#SA!`'fls>'c.Jq#80*V%LsT
E!!!,G!!*B3JcPKE!#L4eh>e&o#8RdY'`\4>%h9?f!!!N)!!!N)!!!:V!;c`u$PjKhrW!NC'+
[2**<\MV-Ti/.%MfHf%IO30$PO'f#7qL_(C'p?!X9Z0*^:,?kPtSbbl@bN#_E'N!!3rI(\.P/
%KHJ=#lXf+%KHJ=r;[07!!!B3%Ls-d!"One&.9-[$NLGJ#QPA@!#H(W!"Sf)!"Sf)!"OS\qZ%
QM$k![U!!!H?%6t.0.mXY-&J,-T'fca;(*,4#!"ot^!"9PL'+bNO!!`K(-9`de"6]^b"3gfH#
mc+_pAb7+#S?P,":bD3%MSgA!tG;2%fHA7%KHJ?%1<.J%fd)t!!*]@r;[01#QP>B!!!95!"Sr
-$O[1L#7^_6&e5Zh!<*H2!"obW&Wctm'^Yl7'EA+I&dp$&6:2+\6i[3>%Lj$Z'C>c)'c-iU'`
\4mr=T/H&e=()!!CIG!=9$`!;HNs&J5!T&b>u1%KHJ=&eY0E%KHJ=r;Zs1!!!KCrW!!4$P&'p
!#GA1#8.O['ak!A%fHA@#6tVB%KI+N$O[FE!"JuA%1<ORO8o7dk5YVs&J>c`r;[*/'+m5?/.N
:,qu?^5p&G+,#Q4W($k3UC!!*`Ck5YJabl@bN#_E'P!!*lIrVus1(\@\8%KHJ=!"B_E%KHJ=r
;Zp0!!!N+!!!M6!!!;b&c`@;!!Ec>!!!Z2%L<%7'G1ll$ige9!!F&F!!!N.!!NW:%KHJ=rW!!
*$kA[*!#5;1"VVP3',)#I!!+Jar;Zp2&c`49!"K\C'L`L$""Fra$O?_4#kn<$$k*@WrW!!)#S
R(9!>>q*!!!,G!!*B3JcPTH!>Q7H!!*]IoDf7/!!!K/#SR1J!!!N-!!<]2!"Sl+!"Q76!#"<%
!#,50!=]\?!!<T=#Rp\4!u)LN%fHA@%LW7:%KHnH&e#6M!"Ju;%2''ZS,`a$#RC_B#T*I?r!i
]?qZ$U(q#CO'!!iZ<r;Zp-!!!<%!!!]1%L+XX)]]J(#kn<+'*&gR#Rh+I!"]P;!!*iKk5YJab
l@hP#m_5s!;ZZu&/5*Y&G#l0%KHJ=!!!6=%KHJ=r;Zs1!!!cNrW!!5#S)am&-raX$NLtS%M]E
\!!!]B!"Sr-',(TY#S$hE(B=FF!!!K/%Mo*F%\*M!#lG/4')hn/%KI1A!!=#;(D6QF!!rK4!t
%(['`J(9#REU"#Sd7<!#,8?""-Z4$2b8L&c_nD$NL/8&dSaV9+qa?#Qk\U$PX'`l2Uo&#RDNs
!!*B3JcPQG":GkC'+=C3)@c`I%KHJ:%h8R>%ho!D&J"jA&.f3L#S-nFM?".m&.T0`'b^Q[((L
ff'EAXA!#-+\%Lj'O&f(rd%1iLT%2'Ed%1Nl>!!!<&%Kd=D!#5>@#87(;$O6Y?'Dqh1#l+r1'
E/"0%KI1A!!!]1%Kd/6/PZ-Q#8."E%2&X@'`J@H#q.`'#RF0V0HNCf''B5p"3gfH#mc+_pAb7
0%i+X8!tG;2%fQG@&Ind@'FbN^&/5*E'FtZ`',1HF%KI/o!:Bgh(B=FLqu?^5SH&Wqr!ifA!!
!<&%LG5t#SInI:D43MrVup(q$mB<rW)j+!#,>3!#,8?!ru.k7f3`$&c`OM&.90[rW!-6$NLh?
'L2L*!#=Ys!!CIG!=9$`!;6Bm%"\J2!71]G#lG/7&c_n;r!iu`!"oeI3&qK^r;Zg'q$mK?'GL
rQ%KmFF$O[XG%KfR+;cNZ)(KEC*!!j31&c`V2%2'9e#8Re'(-OVe#j20f"3gfH#mc+_JcLB&_
uKcCr!j;O!!!91&h48#!!!fN%P8;%&H)S/#l+r4'+5Hcr!j0#&JGie&e\)?<Xp3+;u7%2<tYc
i=BQP=,nU"T#R:hj'G:Wc'as1)!!CIG!=9$`!.k3&!5njA(D7?Y&eYKJ%LZ<1'EALL'c0aJ$Q
&aA!u)C^>5Sj3//LGG%Mi8R>q$0j&IB3_%h;nX8O5pQ%Lt,t#l>)A0G5'6%lRBG&HEIb&eYH5
!!!,G!!*B3JcLB&JcNUe!!rQ(r!j,h;EeGq#RChO&lK>Tr;\2W'K]_X,82d@&n3CH,7ZA:>@S
.&%8eM`().Gm2?5^80+LPn%Nc)V%LY6+8eVYE%RCp?'GCBF!#"Jq!!CIG!=9$`!.k3&!5SX;(
B=FMr!ia53W'?e1&MLh!"oYJ+?2>=57V7:r!ioa8Ie=)BK?#$%iT-^5!KMi:(@a\+&i_9CA\P
P+V"\l(2FBi&d8LQ'GVDskPtSbbl@bN#_E&.!.k3d!!3cG2Z+$b0Dc4Z0`2D/&l;%;=B>tAAn
=8"AQfTHCh4)M2Jig89I37D-r1LR7Rdjt:C.OXC\\GN3"@Z@&JbjL+ZM.d4=UmEkPtSbbl@bN
#_E&.!.k3d!!3?;&,Zn<9NM'$!,h]E-iaGs%ODSp@r$!9%S.Te!$)>a.KT\b3"cL')AYO^%Lm
.i)&*'9,@1*T%khp.(Df(d5Qi_f8NROt-KkF0"3gfH#mc+_JcLB&`W5uN$jJ'l-P$h"5tj:AC
a&]d!%e$X#81?I%V%j.>5f!C'*&XX!"oPD#RLb:&eYI.8bro#&-s'm;cET(&fG^m%T<ii'Fme
=<XoQu&HDeBkPtSbbl@hP#m_5s!.k3&!6tQE#Q58H!"o83&eY0W5o_1l9c.tH(AnXB62V347S
+(;5r]K)*YWZD&gmbe!td!g#m^MD&f2Aq,lA,S5:e8hq$n$";ALU&%X2_!&f235$[=$)&/FL2
!uD4K+3acd#mc+_JcLB&bQ%VUrW!$5!"o;2&fgseGnM'"@2O<4GBk*RG:,RU@h&uR%LuSR<X&
O4rXoeJ!#GnH8-9k7!u(_K-Nb5!"8iW2"*c^2p^Riq0RH.s=sOS0&j0%l#<ik=k5YJabl@bN#
_E&.!.k4!!<!0O(B>'J!#$^m-W1I'&c`RX&fi;rHs-W#-"LO+IQ&o+G@b"h8K7p^%.jN"(]>!
G#QXo<r!ic16P'#'&7[@J8MM21>@TAt:Hps>&d[Ou!!CIG!=9$`!.k3&!7CiI#Q=uU&c`OE#S
IaM-OqI5,TT!s%96=]0iNB?8S/r6CIq`6%RFAc3!U,d!!`c<!!!91!##2>!sfMe/Gfne6VnkM
Gs")s%S9k7%58FS!!!,G!!*B3JcLB&JcO4!%h\jJ#:C-(-Nb_$!!"nf&,lPE(ar[?H9XG,!!j
&E=:PfX,ro!Q"""]Y!!*Z>pAba9'*&"<&I:p56#K^?'Kf8ar!irlIX=:5<e+6K%KR(Fi;`i[b
l@bN#_E&.!.k4!!"T\B#RD%O'-'+S',1fo*YA;e'aF^E-P$su$kamO%V%1rEB=SO/Ir6d!!3N
;')2GJ#SIOS!"0''")^F3"pY,:-QPPV#m*I9G=F-!<!+':%KQtLi;`i[bl@bN#_E&.!.k4%!!
!`4&d9Ws#RD%Ur!j2=-kd7Q$PNRH&eZl+JQMg\$9SPe&Re-o!"0DIq>^U1#S7C>!"BJI!##>K
&/>I%4p_8mrXoY?&c`1;&c`OV%j_Pb2Z+$c!#OSo!!CIG!=9$`!.k3&!8.>V#SIaP!uCt9!s&
Z?r!jYO!##>G#SI[K'GV5^%LsjA#64`Q&J>b/$ka<P!!O#D&-)tKq>^p0%2'9e8/W$?!#H7RqZ
%$;!!iQ;!"onP$T\P,r!qTa!!CIG!=9$`!.k3&!8.>\&c_n;#m^M:#S[ma-i=G[#Rh+A$k4X6
!rWT<>u_@M*<6'I$NLkO>q>dP#7M7M&dSaP$haQ*&01fP!!j2FqZ$g/&d&aO!##82!XK&Fr!q
Ta!!CIG!=9$`!.k3&!8.>X&c_n;#m^M:#lXf("8iWI#nIX]"#)*+%M1Z5!!!3`,!6ST'1rfN&
Jl#U!!3f6?Mt-0$hjW+#SILl&ePcbp](:"rVup(r=T;N'F6s!#RK;f!!CIG!=9$`!8RVW(B=F
OJcLB&#nd4<#Qb)@#7)"=%KLJI!#@YA%OGXX&ek<\?3:RA0GY6P&ePZ\')V_4$k*+E%.aH&&.
8IN4p^ER!>c$t!!!,G!!*B3JcOX-":GkC$O;7`K`DAa&eZPoF9iHarVup3r!j__!#I0d!#.-t
-SR\=IX*Dq)[cXZ()@-6!"BPM$iBu)&,m1A&,lP3'`\4K(]476(D-NX_Z0Z=bl@bN#_E'6!!i
u<%QkR<$kb"@!/ggb$ka1#&c`^S#m^eErVup3oaV]P/Ir<r%8pqo4]27f'+kg=/J/Qp'_DA/$
P*XG'*l#I!!CIG!=9$`!8db^&J#IZ0bFj2&:sn?!!j2;!"onE!!il0!!<o8!#,8?!(6Yo'3AL
H'`nRL,6eVn&c`:R$O[b#'Cc&,&dT-Z$jRTZ!!!,G!!*B3JcOX-$5O.7()BOX%La$fJcLf2#S
I+;&eY0E#RLD0!sel,'Dr=?<r<F8$"si$D,:iMFU\iql2V%s&-*+[!#GmN!!!,G!!<N6#S_jj
iW'?##Rh(m2[]g"&f)+3!0$sb&c_nE!sf/E#S[+G"VMId>uO]!%L`G;3BnR5#RF`B'b^uL!!<
T@&e+R9#ndLD$lfNY'1*)@!!=#C#Tq:k!=9$`!9!nY'GC6B!YZ%SJcL`0":#PP-nP?'!=KS=%
L*UI#9b&s-Mn8UCE*fn)"7M0#7(;AB+YsX!!s5M&lJgR#RDXf])Vg5bl@bN#_E':!!NW:',D2
mr;Zs:&/Plo_#OQM&.fP-!6>-?'Dr=P'.t+3,n(2g?!(AX9GTJu$pF@c!>H7F!!a/;!"rTD&.
%t0!t5SL$bQH>"3gfH#mc+_j8]B#&ePWZ'+=a=!"8c+!"6XD";(n>$Oq[fe,TI^rXo29rVup7
rVup3r!j<$AI]AH$NOK_5m)0@Kin]p/bf;H'+k$@#87(;9+V(2&G?)+'*&:N]Dqp6bl@bN#_E
'<!!X#K(/bVQ'"@oA&H2Y0'(Q#'$OD=ajT#8nrW!3:!#$"`',(ulq[O-A/KGcC#VcfK0R4$+$
PaBN!!<iK#SR%8#o"$c)A`A]'+tTH!!NcD#RCkI]`8$7bl@bN#_E'<!!X#N#@0^t'"@oE$k*+
D'Cu2,'aG?b'S6>M!<*T7-P?CZ&chh>&j-dE**QSW-PCM5+:fGj@q-$"o`,.1$P<sc')DS6$P
=!d%8mHE')DS.'`A:;$bZN?"3gfH#mc+_jT#B!((V%b!!<iH#8Hb0";:b8$O;7`l2V)&!!!WE
!!!W3r!j?B#TZ#;8K).f?4\.p%T$Xg0c0N`"UbtK!"]h<!!3i?,5qQB&?l-7"3gfH#mc+_jT#
Ak'EAc]!!3rB$g%Eh&H2Y0#D)s@!!Eo7!!anN&c_q0%MD'^5n45;5u;,N'+Q/p:_OI>2td4T#
8[se(DQNB!!iK'!!f_.!!CIG!=9$`!20Aq$kO!^'^u))$kj0bqu?j4&Jl&lJcP'9!##82!##5
1r!j?<%OHmdH#["i;bpMP$rSGQ!#P>/!tkkP#kJ$!#S7CU(%M>+&J>ep!!!,G!!*B3JcOs6!>
cI)!!3rB(Zk]#&-)\<#Oqct'F+U<&Jb3D!Xo\VJcP$8!!iK9!!iH&q$mcl.mH$(>$;@[#7qO=
!!3N;'(Gr'(C1iJ!!EiJ(C(5`!!!,G!!*B3JcOs6!>,t"!!E]A'bD)B!!!T0!!NT-!#6+Tp&G7
%'`\4>&qU,:!!<K8&deIG#pg+>%l#=N%O`.^!!*cAhuEog&c_n>#K$NA"3gfH#mc+_kl:l'&e
>Kb#i5Oa'*&"?&G#l(&-ijWrW!HC#R^V4&ePBS'`\gY$P=$G!!N`D$NLDJJcOI(!sfSH.f9b^
3=m/Q-O)[t;T\tB#64`?'#O\L"3gfH#mc+_kPt\t%hKBD!!!Dp!!!T0!!!T+!#PtS&ISRI$ig
84(B>'\'b_A`!!j2C!"0&2!!!T(!!<oH&.!jfirB2e&h"A*qZ$^`!!!i5%LH/H1B7Cl*=!$eb
5_YW#8.[X_Z0Z=bl@bN#_E'?!!<W?%h\=3!='#$!%ANm#R;(E$O7:U$NLnH$O@:D&ek<G-NXM
o!!"H1&dSI;#S7VS/cYkbJcO:#";1\?!##82"r@mm0a87Ar!j$J$P<@T&c_nG'(Q#'$l%Fr!>
c$X!!!,G!!*B3JcP!7!t5PF%.aH&(DIAm#Scb.$O@@Z!!!6<!#,Y<&H2YI&dnsM!(nR<$To.(
49Grr#QPM<!(pN0&/Bcsf)Yd_#U^#d!"p(J!-J)J%OW)_6Ou]n#8@jb!!!]Go)Jh.&/1H3!!C
IG!=9$`!7h,R#Sn$g#7Kht!##82(_Zl^(B=FG&dJLM!^Zke!ebY8'EALR!"f,0!>>`j!7_&W&
c_nE&dSIX:E:'Vr!j5W(D72g;A0KJ!!!Q=#SS$G!!<cK$k\p.!!CIG!=9$`!7_&O&f)5jl2Vq
3'EALG!"0>N%<VXN&ek]e$O[2+1J7]J#S@%A#QPJGJcO:##SI+;'.3kp(^BdG%NPNS%3bul((
qD`!#6(Rnc/b('bV5I!!F#L&do)S!!!,G!!*B3JcO=$";;I^$l&"-*t&\d#A=Y]$PX3Z!!!E5
!#H7\'EA+A&/#N^!"0AD%/9f)'G;#pJcO^/!##82";1tJ&/+dK#Yc$<2ZO[m&JFL3";_%<&/+
=0#8IID6lH[C%(6-9"3gfH#mc+_l2Ueum/R:t!!!B<$g@X!'aF^Q'*&gR$Ps?^p](:%nc/h0&
.8jZ$\AB;!!!]3&d/FF&dT-G%LG#u"qXFc(Ddc%n,NS!%i#'PlMq.p!!!W[(B>#T!!!,G!!*B
3JcP'9!>6.6!!ro>%M06e!!!]Lmf3=mrW!-8(B>-^&f9^2"VM(@!"9-b!8db\$kj::+WMa(%L
6'<%V@g'!"eJs!tZ.X$gI]s&JP3V#64`:[K$:0bl@hP#m_5s!:Bgj'G;/p$jc8$#8[g^%M\sO
'E/XD!!3QA(\Rh3&JP3F#N5Xd'bLEG&eoothZ*Whr!i]/r!j);%r)Oj2ZNg^9bS--!!<lB&d[
b&#7D(U"?d+u&@hcC(C19gbl@bN#_E'C!!EZ@#7hF5!"]AG%LW7K'`\4H(B=[K#S7^E!!EZ@&
eGK0!<*3'&V:#>!!!Z0%MEji3"@*25n8,F'g)jl)uosO'^u)(#S7X1!!<K>&IZ#I!!CIG!=9$
`!:'Ue&e>Hgm/R_+&c`US!"p(J!"otR&c_n>')V_2$k`ht!4W"/(]=sI#X&"p&dU#u?As.a57
n/$&J>a@!!!9:mf3A#$^Lbm"3gfH#mc+_lMq#"!#,k*!#65@',Lp*&1mq`!0&<:$ig8?&JPHb
huEif&.fZU!!<rI&/9]rk5YMg#lXf)"u,rb&dU]3FE@R=',2&b!!!fH!!!QHb5__]&.h#:&.$
#N!!CIG!=9$`!7(WX(FN'J&h>OA!%'*&HS,:2'`\gE!!!Sh!!F#L!"0J=!"&u:!"0GJ!!!TD'
S6>P!!*?2rVus=./XPe8.H74$jRE*-PI%('EACM&/F^8!!q?[#RD%C/fG)t#8b/U!!CIG!=9$
`!71]^FBoOj)EnEA!!!:;4rjV'$PEFQ!!!B3i;`ijrVus3'`J(?&ek<G&I8@A$l9-SJcP<@)@
-rg!s9>>$jH\:(C1!K;d'P/(Fg%RG7R_sli7(p%2.Is#SIgO#V?;^#SFiP!!CIG!=9$`!8dbZ
'GD)m$iBuE&dJt##Z:a6(-2O0#64`:'EA[E!"9G>$jR@X']B#p&I8@:&H)S:$kWI>&/P]e!!!
B3JcP<@)\N,N#W`7t56D0"#7(\c%S[?E#8e8"2@UEr([V2)&/5ZihuF*!#7W]o'FtQO&er+]!
!CIG!=9$`!8dbu'*&"K#64`?#Vltl6mNKOM?b[s*Y;1T&/"sC'bD#krW!!9#RfMi!s]JQ(&S%
=&eG]b!!!Q1!#H9"!:^$p&c_n>#mi'fFT)OVF9N.M%PTjX(B>(c!"2X0m/R5%$PEa(!"&u:!"
1,H'6Os"'#+DH"3gfH#mc+_m/R.m$hXK"'E.tG&-*FV#S.XM#9=0[9G/@A&.]KU$c;rI$jRCY
(P2YW!!!Z2!!*?2rW!Q:!!l@A%QRfX%N[5&#[IE<'+=1-!Yc(VhuEon#QOi5#eC!9"3gfH#mc
+_m/R/"%.sT;&ek<S&c`.:!"f84#<Vtd#8@se%1a0g%)MuF(C5Tmmf3>#rWiQ;#SR%F%OMZ=%
V6V+C-O*X#7q+VlMpqo$fD!g#S@%:&/VnX!!CIG!=9$`!:Kmm#S7FS/-Z^pq#CU,&ebZR!!iK
'&1.r_'*o0_!!!W3(J#)N'F99jYQ+Y>r<NE3')W4H<`U;<CbR7I3X?,2!!<iF&/D_U!!CIG!=
9$`!:Bgk#7t0($PX0D!!sAF#SIOG!#H4^qu?m:'+GKd#_E&V!!!Z/%L*n;"$K*h'7p5U!!!,G
!!*B3JcP9?%MAaH&26EN!"otG$PF'ep](@0&et!=!sfAH%"\JY!!"GF%L?2^#66AY;B.=Q!!!
gr!!!,G!!*B3JcP9?%hApS!&KN5!!`l3',1EO#lO`+'G:r^$hF?#&e#K[JcMbM!!E-/#[gO9!
)cYo'N4/q!Z)@]O8o7_bl@bN#_E'I!"fVM&/Gon$P3pU$ih(V!!!B>r;Zs6$NLGFo)Jk#!!!C
Y!3uS@#R:tT#7(qU'71uY8Rm$D'2f)H$ig8?kl:br(D)Z.!!CIG!=9$`!:^$k#7VFVrVup7r;
Zs3!!!9:r;Zg&rVup3mf3@r&qU+j!!W]7!!!92)>amN+:SenF;7Xe!#,\'!!F)L!"]s/!!!,G
!!*B3JcP<@!t>YP'_q_<$kO$_2\?i+!"]M<'bTm7!>Q'W!!Eu@'+t\)!;um%#RCD1#YeV&%LX
9b#7Un<!"0DP#7Kbr!YGtVO8o7_bl@bN#_E'I!!EZG!!!`,!!s2F#SS!S(C(Qcmf3J(%MK<b^
AnBA$NLkGJcGcNrXoD;!XJc4"'tg7"W\3`$k*d.!!!Xm!!!,G!!*B3JcOg2"V_RL!#H:5!!=#
I%hcSV!#,>3!"a_^$31\=!#,M;&gg!ar!if[$Od;m!:0[c"3gfH#mc+_irB6!&c_n;'']H!#R
:bL^&S9I(B>0_JcGfO')hn1#QbPCDYstH6W8CHJcP-;!!CIG!=9$`!9*t]#8.FY$gI]o(B=FO
^&S6C#8.Z$!!3-#')hk4#RD7F#RM@Y94JH1//AX+kPt\j!!!:`!!!,G!!*B3JcP<@!Xf8JqZ$
^+&eZ#[!!3i?$\AAK!!!H+&c`XE!"&uA!eqa!Ae$1>$g@Wp'b(rk%i:3*!!CIG!=9$`!;HO$'
G(K_'EAg\'aG?L!!N`A'GM2ghZ*WaJcN"T$9/eR="+P*@j;g*l2V"r&.;,B(D)Q+!!CIG!=9$
`!;HO$#7CM>#64u:!!!]2!!O)P!!!95huEco&qU+n!!*<1qu@*`%T3oeB*_cT!"ok.!!X,K$X
Oh]&<-Yi"3gfH#mc+_p](:,rW!L(&fW8"!"T;J&HE(K!!!EBqZ$U(kPtc#&e,*P$crAO$kO$_
$\ABS!!3rJ&H)S;$PjX#((iJ<'*&"K''TB"&ebN`',6E+!!CIG!=9$`!;HO)&etBQ(dn[W#Z1
d+!!a;?rXo29qZ$['%h%V%";;:N%2Hqa":"o,#SDXgr;cd/"!2Os#lXf4*=bUR%M9'K$kO$b(
[(i$&HDe>MuWh[bl@bN#_E'N!"feV?2tNQ-k\*G!!!W;!!!fLqZ$jA4@g>%(B>9=!!=#Q()"[
g!>cCJ!!!X`!;um4&c_nJ!XK/F!!"2Q>pg=!',1EH$OD=ali7"fbl@bN#_E'P!!!E+!"/mA%M
0rm'F,!^&.A44%uqV@,r[C\$l8mD'`\4H$hXK%$k`gW`rH5U(B=[TJcP`L&J>'D#6Fu?%1!P>
%R=;l(CM%2!9aC_"3gfH#mc+_qZ%3:&/#N^'J:XYAT[tQ#R:tY$i9o;(Dd&f2dHo"CIqB_%ho
fh&dS^Rr;Zg*q>^U*!!!DI!!<TA&/Bcsqu?^0rW!92#QOi5"V*O'&I@@r!#L@i!!CIG!=9$`!
;lg)'GCHH(D7/W#@.iJqZ$X.(&\+I&KEo$&mc"oDD3a_98sKU(D:$S&f(BG!>$"E!!*?=JcNI
a";D,*#m:/>$PrdC'-%Jl0MF&'''0)o&eg!"!!CIG!=9$`!<)s-'bD!`(B=jj%L5*K'b(!?-l
!@.$NL/N/HZt2%Ql0K"cj[>AeGOt(D9U['+4d?'bV/f!!!B?&eY'B!"4AY_uKcCr!i]>r;[05
1(J:d,<,Z2&Idh&!u):]&r-Ge"3gfH#mc+_%2BNf)uot:!WW<g#8RU@!#l@I$o7k`2dS1D0Fe
[&!#H4bN>Q4D8duC@%2JjB#n6kC&HDe>$igt?!!3rG$blZB#RcLi!!rK4!##51$53XSC.a%/N
=cs>k5YSm$k!`(!!!,Z!!!]0!!!E#!!*B3MZ<ho&-j$N!"K]2&-)\L$igYY&etid&,6,6#SKc
m'bq]A%V?.P*#/AP&I90X0F\^2!!!f8!!jAH&eGHM!!3]E(&e17&/>ho!!EuL&eGe9!!!<&%K
I.@!"0'0%NG]U2\7nZ&f'U1";ChI#8`-q!!D3\$4@FU!!!B;%Ls6gpAb4##`Ja"#R:>G'*&"D
&d'K]!$VUT&etB\$ig\Pq>_!5!"oQ*%hDMm4F].>/IVLW":P\O$kiI<"UbtT!"oS9!!*cFrW!
'8&dSpS_>j]M$NL/?MZ<__r!i]>r;[0<%ZUc)**PoR,SB8@";2.O(CZ#u!!D3\$5X<b!!!6:!
"0#CpAb4##`J`p&dn[>&el&h!!"/l!"q+$(&%\?#8[@?'aG@D*"EH1(DdGm&/Y6E!"8c+!#PP
5!s]MP&bQ,*;B$7b!!!9'!!!Rg!!!<&%KI.@!"',E&c`LQ%qcXg&a98t'G(N_KE(uShuEih!!
!f6!!*lGpAb4#$2k,0(Qe\,&I\X>&.8mP!!!T4#8-V/!Yl=ZrW!<7(-H=N)]9"`!#H(6!!<i>
&f(*?"UlDP&ePMh!!ElH$P=#0!#-+\',_Gs$ig88(*l!U4:i/2#7M70!!<rJ$P80q!"8]1!$C
,!!tG;2%fHA-%efr(#mcFh$4mFU$igYK'F56Xo)K45!!<H?8gY$%,=Fp5(\@_,$ip_IrVus1&
H)S0'bU<C";DUa%1BuP!Yl=VLB%;[r;[62%h9EV!%elb63%!"kPtYh&/U!"!!D-Z#S$h7()-`
K(D$6?!=9$c!!=#M&e"F6!!rN'$ka9g2[<Yq&e%VM&d\%.!s]8K'`J(5'FXm?!t,YF(]478$P
j0bJcNLb#SAg%"9Jr2#SlA"!=K<g!!!,Z!!j&7!!`r@$O7==!!*B3QN.'q&e+F5!t,_S(\Ib0
#S.4?!"0/FF:pT1*>\\j*>7oC#7(qP2?jQt')V_3&el,nrW!-.&dSaC$k*%7!>>k>!!*Z>JcO
'r$kWI>$PG6*65W)u#8_sliW&r\huEul!!!B<%Mf]N!!*B3QiIF*&Jl#l!!!f@'`7q7$PO3g'
+=O7%1<gW&.8IQ$SDEV+V,"[!!!Dt!!`lF&-k?-#7LG0#o!p`#QOi4'+tTL!!EZ0&eP]S!!3E
;&qU,0!"B_T$igo*2ARo7',(E]JcOd1!!CIG!so8>'Uf"%&H2Y6&-*CU'aG?L!!O)P!!!`Bp]
(g;$PNLO$NLkS&g2F@.#SK$!!`cD#REO&%1N+6!>6%E!!<fA!#,;2$O7%N!!a2<!##_Q#_E'+
!<!03;&9lR&5*KQ#;Q_t%"\K?!!=#C#Tq:k!=9%!!"&r=!"0#3#7CM3'E%n7#S@%:$jcY/%ho
HQ'b(lX'0Zs;%1O!`&aB?!$O7:L%/Kr($iU,7$PO*a!!!]F:D<nE&H2Y3&/5ZlJcO:#&I/RIF
;Oud"pfD_8f&lk((qF8!;HNo''oSu"3gfH#mcmu$PX-b&/5*U$NL/<$iL)(');M<',D,g#<)V
p&ebZ_'.FS+kl:qo$O@+r$O[dG!!*fJrW!--<]45>%2]!D!XfMNJcO7"&/"sC#6kG`0GR&K&e
nVL#7'Gm!>#O$!!3E8%.+#p"3gfH#mcgs!!rQ(#7(kH&LJ+q&cMb2(DliH!t,SP&H2Y8'*'k3
&ekub(Zk]$'GD2n'+=F4!uDG$?2=O$(P2Y;!<*TC-P?Cb!sftaC(=eb3/\Rh'c6-8!u2F[$^C
\n&.90=!!!,G!!*B3OT5V&&SDgY!!a>4!!<oK&ek6E!YGhPrVup+j8]Dm&Jd'6(B>9F!!>P).
N7mY"V_4J#m^fg!9!nh&c_nE&c_n['iG_Y%OV_s($5K"%fd"H$O`=%":,V?$k2P(!!CIG!=9$
m!!NuO!!!W;o`,.3'FOmT$iU,,',9@)#R_4[3?&SF'+=O7"UbnO6jj_%!!!]1%Y=]>!"onE!"
pXl!t>M`2&75Q;A9dX($GW$'bV&c&.k3/!#,>E!"\Jt!!CIG!so8>'Ti@u'F,!^'D)8,#64`3
f`26k',<;H%M'<H!!<K,!#,#*!#,8?JcOa0&eYlk'G:cb$NLP\%O+de!#H7Qk5YYs#Sdsb'nc
Ph(C19gbl@bN#`\le#SIaXp&GO9&JbX9(^pcX.Neus&`E`h$Nhh.%T`K;pAbC4&e5-T64<Vi!
>cFI%Y=]>!"]>^!uM[\&.8IM%L*1='GM>^%fd%$!!<i>'F03i!<<5H!!*B3JcPcM%2'Eg('G%
D'*gX+&-iX#!!<oK&mkJGpAbC3((qC)',(-A!>?IN%Y=]>!!!9'!"TnO+:p^H>mgW4&f28u()
>s3!t,bU$\A?Z!!CIG!=9$s!!<TA','^5$l0<d&HGcA%S[-;%2.Lt!t,JQ'Dr@6!!WlC%hKNi
#lFZ(&euDa%Y=]>!##nD!"4,R',M/hNX-=N0G"Fd&JF1*!=0El!!3-#"3gfH#mcdr":#24'b^
!9"r.aY&1nMNrY#B3%20H1!!!]1%efr.'FXsM9b\-Qqu?s8(Nfop-k[/E!9!nk'bCWt5QD48%
Pnb02]`2>B)hoJJcOa0!!CIG!=9%-!!<TA&I\R<!Xo\Iqu?^.rVup2n,Nn*!"/cZ&/#ZcB0?Y
2&DI0b'Dr@3!!3N;')_e;'c.Yt&-)\9!!!ge!9!nZ(C3\5&d]'Y/eSX'-P$\'JcOX-!!CIG!=9
%.!"0/J'GV8h!"o\S#8R1;";2(B$O?,#!Yc.Qd/XFb4;/TC4;SA>o`+str;[35'+b-P(B=gZ!
#5rp!8IP](CgZM$k3kJ!#,in!8[\U"3gfJ#mgkO`;fuV&eYT8!#,hI!!!E5!"],1#SmXV$NLk
S#87pH!!*lDr;[$5'g)I%'G8jq#T"-hBO*A+',:*>!"Af+!s]MT')hk7&.f3_'bZ)uhZ*ul&i
:(5#Rh+L'+9BlhZ*`p#RDNs!!*B3_uKrW',1]c$g7R#'at'B&dSIN!!!i@!#-(7!!*Z?rW!0/
&cc5N&/,H$!!a)O(-F8\&.%q/!=]eC!"9JT&dSI;'bV6Y&HE>n!9!n]&eYcm0I25MeGoRObl@
bN#fH]H&I8@:$jc"r!"f,B#ljr6&.olr!!!T#!"KAB%20Hj!"pjcH6Eb2#h/hY'c%Qu4;JA!!
!sAR%hAm]!!!ZFrW!-8'aPE`&f#uuiW'/g%o!$<%N'cteGoRObl@bN#fH]H$k*+9&esI.$ksB
a'*f'b#Wre$&e+:1%1<CP%gNIY'Kg_K4:i.T!!irG&J69V&dK0F!!<H2%i>3F!>Gq?!!ErK$P
s'H!!*H@JcOs6"qVSt!"obTJcO=$!!CIG!=9%W!!!E$!!<cF&dRIt$5WpI!"9G>$PF*]mf3e*
0Feg3&e#E`*\%R4("E9i$PWsV/dhXZ$haQ&%2'*bp](=/#l4N&#7M5s!:0^b#R:Z6!%gnk3>@
&FeGoRObl@bN#g`PS(D%2j#l"B#'God0"UG_@!#H:5!"'>P;?f6h;BZSb$bcTH#QP5H'`\4B(
\Ib2'F+UO$\ABG!!rl9#V7P5'oEJ5i;`li(P2Y\!!!,G!!*B3ci=1R(B=FKf)Ppe(B=[Gl2V/
+&eY9^-@%3P'G8Oh"Uc%F#S[R;!!E`F!"]b7!!3]?&qU,M!"KVA(C1*K#QbKL$O?_@$g.Kk&I
]5&!;6Bm"3gfH#melX!#,>3!#+/g#mV(U#64`?&dJ^,!!WZB#WrSW(rlUZ#7M.W$hjW,$kNqT
)BK>'%/'Z&(C^b(!:9at/cu@c#QkGB((_/n&dJgW'^,N#%0."U$l"9nq#CBsbl@hP#m_6n!!E
]C!!ihd!!NW?!!!T:j8]Al'+b4C6k@<<";2I[&f:6A"qV"LB+l$doDet$!"0Ek!:^$j$kOfa%
L`UO%L`US%N%_G#8@m;!!NuD',LlbOoYFn!!i#o!uD4K+3acd#meiW!t5DH$f_3o#S7Ub!"9,
5!!j"n!!O)C!"]eO`rH>Y',Cc[$ks?M!!`rE%jDSj&Jt6C!=0A;!!3cG'nQGV!!6F=-i=G_#S
7IR!!`s>(^CK]([1o'%29?]'bQW0!##82!#"]"!!CIG!=9%7!"0&;!#HUd/M%8G'+<b!";M:N
'F;e\$O[UU&lBSZ?4.PL(]47=$ih(U!!!]G(&It;$P3m^!!!]G!#'qanc/_.!##2>$RuVt!"o
\Q'H7Ml(Zk]"&J5QgP5kRqrVup2mJm4hbl@bN#g!&K&eG]^l2V/((B=k+#QRL1&f9a3!"8W'"
:P\M'+;bZ#7M7U*_6nK%/0`*'G:ig$jce3#n.4B%0-A9'*o/$!:g*k-3t7^%K]02%/^)-&/5]
gjT#;m&s<4p')hk2'(,`""3gfH#meZR";)@K!"eMt$O[R\)^#+n&.8IN#j)*f',CBE";2.R&f
8Le#8@g_?5OF_(\[n4$PE[R&c;V2$PO-frW!!*%h!sho`,.1&.g3$-i=GU9b%R1!!N`1$NL/7
jT#8gOT5@drXo2EmJm4hbl@bN#i#C^$O7=Ro)Jb'rVus3'^br.&ek<R)@%3Y!"0A#!"9GO'+4
dV$l9^&)%@"m!"9JJ#``1+;AT<5$NLS6!!Wf2!"oeX#l=T&#S?n6!"4AYo`,F/#64`I"p65?G
nM,-&H)S/&qU,7!!!,G!!*B3g].Hj(B=jPoDf"/&HE1Mm/R,"rW!-6!!!T9#8H;#%21?&&WT$
[#?"h8$k*F7!!!DQ!##SG&f>a(FTr7f%h]Qi!!!W3'G9j8!"4AYp](a/&c_nG&c_n:!XK#@(&
\+5'*s0if)PdQbl@c`#i#C[')hk2'Cu2+&I/j]m/R8%$ih(ThuF&h(`<].>oa[r'(c/.$O@"E
#RD6p!!!i7!"0t]#6t\O+;PUu!"8c+!Z(hEoDeq#()2?#q#Cg2'+4dQ#QPYG.4,N0rW!*1((q
Ao(P2Y?!!!,G!!*B3g].Hd!!!]Gg&M3f&-iU%!"')>0Lmfd9NjCb%.jN"#lG/4'$gOl#Rq8."
qEjE%MfHQ'G;$H?>VV8'_VM.&-rr$!;HO,'G(fj!!!6?$k>K%$ih(D9b/$'!!*H=JcP?A!!CI
G!so8>'^#Gu&eGTdqu?j6'+b]_n,NP'&.fKF!!3rB(Yo'!4rsb@<`Uq8'GLcgo`+str!i]>cN
"Xf#80oU&5aJ]$jQb?&Jbm/4C/[/pAb=('*&XZJcP]K!tl.Y&cD\>1Cu,J2B;c+#8.7_'aGH;
!!3cF&qU,W!!=#C#Tq:k!=9%o!!O&K!!!WGpAb=(#8.XWpAb@2&c_nE'__S4'GD*#',:`Xn,N
G)rVup7o)K"C%Ls"S@j`)`!!!<&%KI-f!#,\=(DT+>'HItq8/Em@%N.QB%PU6C!<*U_!;lg5'
bLEG#8@.<$kF-c%RL.3$kEgb.KBGbl2Ur$#65;CJcPEC!!CIG!=9%o!!Nr?!!!`>q>^a/&/$<
X!#,\9!"')>#QOi:#QOi1(&%\5#7CM`#64`8n,NRr$k`dRpAbO+$j[Xp%R1pM,=q>)!!rK4!#
!6N#mU\V*YK.j%PJt&!!!i7!!!i7!!*W=JcP]K'+kKM!#5b>!#$/H%M0$R&dLQ1#NYpe&/>b.
!:p0j"3gfH#mgD.!u(tQ'(>lH(C(<U',LW\&/#NS!"],1'+k3E;ABuJ!"0>Q&dJCQ#7CnN(\[
n7#64`8&c_n:n,NS*%2K0bq>_!A!#GVZ%0o$*-rL`n&f:*=!!rK4!#!9O$l9Nd3#reO>lm8=(
DZoL":#>J#7UA-!#"Gp!sfMO$`3nB$P3p^$ih(T$O[UU!"9894Uql/%1Y:=&e#E8!!3rI$\AB
M!!!,G!!*B3qZ$a4$NLSIqZ$U(r;Zm,'aXdO,!HPC'EApS!!!E9$PEF>#>tOE-3t.g!"otG!"
p(J'F+jWp&G=1'`\Fc#R;+C!!EQ4&doBK!!EuF('bZP!"',>&i(:6)?pTM'(,`((D7?Y&eYJh
!##SB%1E4:.0'>U'GCHH'GLul#8d.8!=oq0!!EQ4$O@EC!#?.P!!!Q1!!j,@'EApY#RCl<!!!
67#Q=]'$g7Qj(P2YU!!!,G!!<N5!"8`*!##82!#,;2%29?d',LWb',=AN!"0J=!#PtR!!!9;!
#$%H*>9(s$NL/<!"otG!"p"=!"')6'GVDr'+kok'`.k4$l0Kjq#D'5$k`dR!#5J>!#5JM#;7<
!%0m=*!!!hQ!!NW:'GM/rr;[0O%qZJ;;A9QU#8d7;#SAg&'+Pj/$Q&11"VM1C!"p*G!!NuC!!
!WGqu@-6@0d,g%KZVC$k`s]jo>H!()2?#n,NFjblA.Y#R:tI&c_nF$NLGEr;[oQ!!!B<!"p(J
#8.gQ&f1NJ$O[L^$P4*S$PF!c!!!T0!!Wu7(D@&_#PJ-&$kO$u.gQe&pAb=4&e5Ziq#CU5!#G
VO!#5DF$5<IV(g&L8$ignJTE#=Z-$r<!()TnH#7UM1$5=%E&gLZk'bM)emJmD&#QOi9$`<t-#
R:>D&GlG5'*B$N&IoNU$iU,+$g%Ej&/Q"3!:Tsg"3gfR#tPI)!"otG'G:W`qu?^1rW!Q9!"p(
J$jILU'*&";&eZT*&d\:5#n.FP&/>0F$OddC!!a/;!$VXJ$O?D+":GkS$jZM,!"8c+$4IIU&.
AOI3@>"4S,aF)<XqeX#8o-=!#,DG$n)g:$YMqd>p^=&(&S%7',2&f(&%\2$P3p^%&Eq0'aG@1
&-iUD/GotY%2Rk%";_:C&/TounGiOkbl@qS!sel,$jcV.'aPEX!&H_K,$kur-O0kj!"989!"p
">!!3iC([h>/#64`/&-*(Cq>^m2!!!9=#R`s,$Ps3K!!*H?r;[0;>nR,;(D9a^(DiVB+qZ47%
1WgL#7_@Z$NLDI'-.?O+"nNa(,6I/BKQY&$PNsXoDek-T`>92#64`/'J0+k!!hB]!YGYMJcP9
?!!CIG#RPSa$Ps@5&I\L:$ks6c'5%p^'EAM=$jcb2"VD"?!"9.l!!``7!%0?(',:9C&etWa$P
NmU'+kfi$O[UU&dK!ZrW!@)+:]Ml$P=?s=qb3TScC#K!"<L*$N_(V>o*d&57UX8=Xt":Gp*n7
*_%D]'aQ03%M1*&PlM!s#QOi1$uYqP!#=>j!"t(f":PYD!#=o%!!CIG'F>$Z&e[;A#SRRG$PF
*U!!!B3!"f,0!#,2/"W%^X(D$u5!!WfC&eu)q(\dtS$l0Kj!"0MW>)P!L+;n>l('d-'2eNU*%
L*OS(_%6$BG)#L!$MRT$k-5K<!O$Z%OV``90a"94>dM&<t6l':D4iZ&ebijPlM")#64`8(G,I
o!#'qaiW')q'+tolmJm4hblARe#m_4N&HDe:&HEI\!%&E\!"o8E'`]$]q#CL2&eYT"!$`9m%M
fZW$P=-i?;_"F=q20K%20CJ&eb`g#7h%K$klqt1(9ZQ,8:e#!Xo'+,7Xie%N8,T>rZX5(C2W5
+ZUMX%P8J&,;BiA*L6[/'aFsY!+,R5!"4AYiW')e&.T6[nGiY-#RDNs!#T',!!!9;!!!`G$PE
F>&mbqX&HE1O&eGGi!$Vda&.AdD(D@NM*&/4*"r8Or$rdlM-it1h,7YQ4!!#V<%@[>E&e,<`(
B=gV%8mEI#@0>CNYMNo&eS#>4F].!'+4dX%PV]6(B=a?!!!h'!!Wi6'0Ji>?@i18!!<iI'+=4
.!!CIG&IJUQ!!!6:$kj!K&-)\9;%aVX!!EuM(B>3L$QK-H2cPi*%jI'p!"='_?7Gp`#>td8!!
j)V,81c^!%&*Z&/,EO&/5O3&c`1^%Tif5#R;"R*XF2,$O[X_$trpK<!O$@%/p5,&t&_''+bN\
%LdphhuEll'FYZemJm4hbl@tT#SICC!!il0!!F#M#6tX^!!<T@&f:6A";M:\!!rE$)CeTj'7(
,u$ig8i%Kdb5!#5JY!!iQ)&J#?cS,`[)!!j8RrVup+rW!95)\>n<!!!WF%h/C:()Hrc'.=V+C
'"kM(B>6d((:lb!#-%XU&YB684ZT`%S5FV!=K<f!:0[c"3gfJ#m^qF_>j]P'bh2qpAb=1'+t]
^rVup5rW!02'+bTm2\u_u!"ThT&c_nG$k=!X$NLeJ&e(!)!!iK'$5F6\!"o83&eG]krW!!*&J
4pP&dAtT*Y/\r!#67^%L`=C#8\*[UAtK2/1PHG8.5Cs";1\?'G:<E!"8&l!YQ.\JcP0<!!CIG
"(+;,$c;rJ#S@%:'GC-?":,PK%1N49#R;(E(Dder%LDt4&.B-Y#64`=%h]Wd!!!f8!#Lq$"V_
OZ#RCh7!$DOI!#5J6#S7P>%M/^B(K)A<$k`O?'+PHO!!`l3!"o[8!!NQ?*"Eknr;[*3#7qOV#
QOi0lMq"m&do8&!:9ad"3gfI$9AR3!!O&L!!!`Gp&GU3%hf<N'bUui&i'k.(C1ZH!!3Z@%?CJ
l#8Rp^'(c/B$P3g[?6^'o!!!fO%2TBP(Es5"'`\j_!!!S*!!NuL%MB$Qr;[36%1X!V',M&f#R
D77!!=#K'G,irm/R+gbl@bN#f$EC#8.X_$hjW2$k,$d'*&CO&30h'%gNa>!!EuK$PF8:!!3oO
&Fof4'b2!l$NLG4!"p%Y;][=l%/g//$PO-X&Zu*<(C1]e!tZ1F!#-%Y%MT0S!#GV8'H%?d'+Z
'];@aE,!!3`C$\ABG!!!,G!!*B3^An9N'_MG8&J>Tf',1EO'+\^h'+sa7!"t:l!u(tG&GH/*'
bpWI!tkkU#Q+Q,$P*ml%2K0bqZ$X&(Tm`D'G(NfA-j_:'`J(G#UMAA&f1NQ$ka(0$o](;%i?&
ql2UeuJcP-;!!CIG!=9%=!"]\U&iUdC%MSmC&HEV(%1NpA!!Eo7&eGY9!!F)<!"021!!3N>&G
6#.(Cq*!%2K0bXT/>;qZ$[/$NU)7!%e*L!Yl1Wr;[9@%2K0b!!!NC3"Qc5$\AB/!!!,G!!*B3
ZiC=='+G0[',DD^!!<W;$Ol\."q_(g&-*7XK)c&[(DRPk'_hY5'FOmb1(jg#XT/>,qZ$[/!!)
p,!'L5\!Y>hLr;[9@%2K0b!#,\=.MMj_$gmup$\ABC!!!,G!!*B3ZiC=>%1Xs\!#,_+!!X5E!
"_d>&:slc&J5Xt&.nL7";_%S!#Ma;!!rH%!XK>Cr!ilD!!"qf&GuM2#7M4M%-@Nk#S.;p!9sO
a"3gfH#mdm<":PMJ',9[2"VV[c'Fu"3!!WE7&eGio&bH&'$`a7-#l4N%(D6QT"VUk9+V#7b!!
Eu9(B>97!!<T?'G,irl2Uedbl@bN#daR7$igP@%-[`p'FkfW(P2Vl!!!B7&J5QgoDek([K$C;
$k*O?!!!<"!;m<1'*'.W,m`<,!u)@J%>"TF!!!,G!!*B3Q2gn$JcPTH":u1G!"8N$"r%R\'FY
?]^&S?F$o^9`'bgED!!r?"$54(4)&!Vk%Mgu7g].Bg#8Mgjl2Uedbl@hP#m_6U!!O&:(B>-^q
u?a4$\AB>!!EZ0!"fk=!!a&F#;@,L#7J9H%grUW1`Hf&$jZh5$O?_4#kn<+$S2M_;%?N""$\9
k!!*H?JcP-;!uD4K+3acd#me*B#nRIQFV>Am1(Ock!!*<>JcOd1!uD1T#l"B)((EtC%M0$S^]
4uU'`\Z##QPJC!"9DC)AsD+',:9C$5*XM+q?gn#RD"JJcN[g!!CIG!=9%C!"fnY%8d??(c`-;
&.8aT%20?gJcOj3!tkkU&GZ;4'GD2u#6tnV&f8@a$l'KW$Q_hN#64`8!##2>!!rH%$O[LR+q>
G@#QOi1#ibmc(CPfpirB&]bl@bN#eC!B$k3\E57\3/%hnpB!tl7_#_E':!!N`D&/5*YqZ%!<!
!"r1#Xg$U'+>Sl!!O#J&J,3RrW!!)!##2>&dSjM&/"sC&eGli0.odd!!!91p](:%m/R.u&:so
B!!!,G!!*B3\c<9M#7qk6&i(F8&.8I<&dJj\]Dqp;W;m):&c`LQ$haQ*$PNbWFUSWh`rH8N#S
[7E#l=T'&.Bub%MB$['EAj\!!!`D!YPJ=/-#YU#l"B"#OVQo&J5WjJcOj3!!CIG!=9%C!"]bC
#Xf($(CL3N$NL/A!"0(G!!E]@!!!D,!!=#B'G0s<#7LfK*&\6>'Z^7W$PNp]')2G-&L[Jd!=0
A<!#H7J$P+"d&eZT?-k[./$PEFF'F4[='c-3;"VM(U&dT,%!9O7]"3gfH#mc+_j8];r$k*CSq
u?^)YQ+b2&doBG!!X8L*]soA'$(%V&f1NJ#7L;,!##2>#m^bD!#H1H&e5?E!"',>&/"sC'+P6
_'(>l*$PO0]'*eep!9X=^"3gfH#me3E";(V>'G9@*!=KLh!!!i6!!Wi?!##nK$iU,,(D!\L!Y
Q.\p&G=6&e5`u-6`l>!!NuC!!!WJo`,+#!"9J_rX]/>(CgoJ!!s8I%MBQX!"KMPmJmCr'G2&f
'7p5I!!!,G!!*B3]`80L&eG]arVup1k5YPr&.$ed!>>n@!!X):!([;1')hk4#8.HL!!*H9o`,
7*'+c^@0b>]IaT)GX&-r[LoDf%#&eP*U')hk4&.T!>!!s>P%0lk5'bD)kli7+q&.oY/!9X=^"
3gfH#me3E#n.IW&dSI;$Pj-7!!<K>$PV.m#8@OO&eb6F(]G$X-8to;$NLtJ!##>?!!!6?q>^L
'YQ+nC'F5Ko&e>Dk!!3rL%/Bl'$iBu*#RC>/#R:>0#S%(>!#PS>!"8c+$4@IH$k*jN$NL/7lM
pr#&:soE!!!,G!!*B3]`8ES'+bcV!"p%\%M0HB!!<T?'G/ms"V;:X$OdIB!"]DF&eYE^!!a;?
$k*RQ(D@&M!!EN4!!j";!!NTC()I]"^]4HK#8.:?!"B2=$NLP>!!!ZB(B=FJrWiN:#i#C[$\A
B@!!!,G!!*B3]`86A$Od^a!!*!3kPtZ!%h%%j"pbi9*<6'QpAb4%&H3:H4U2T)(C(cS!!O/M&
-*7Tq#CC/`rH)UoDf%"$Pa'T'#=P\(C'p?$k*+9'L58%&ebrZ(Cg]L!!!Z2!!*?2JcNRd!!CI
G!=9%@!!EZF$l067!!!hh!"')6&.:NH&eYET$hOE''*(['!#Gn<!!WZE&d]0Z%/U#+(D[D#!!
*Z@nc/h-%1NgY1;a)##SI+;#SI+M&IB*b#lXf*#7_RL!!!Z2!!*?2irB)o'S6>C!!!,G!!*B3
])VgIrW!';$NLPN`W,uHqu@';F:\]`%1<.9$ki45#Rh+A3[YOQ&1RSY#8[UF$[W6]'E%n6$NL
D?'$:1V(D$ibnc/h%%i,lm'uL"Y',M#f(B=[?#R^n:!!3rH'E%n2')i.;&I@Cs!>?,u!8mhW"
3gfH#me-C!"e/j!#OGk!=]G9!!3E2,5hcN$NL/?&.A=7!"Ai,!!iK9!"f,0'b_A`!"fhV!u<9
t'+=j@#R;.N!"]O]!!<WA$P;n0#T$>d#$rMf&f&@c$5X<f#QOi0!!irFrW!!4%LE"5!#PS>!"
7if!tl=`&qU,B!!!,G!!*B3]`83M&e5T]*TmD('b:]5!!!W0!!3Q6')hk5&.8^Zqu?g-$j[LC
!!3E:(\dt3#R:V,!!WuG+r:4b')2G,$e,.X&.fQH!!WN;;NDA&'#">P&eYKa'EA+@(),@$!tc
7_&V:#A!!!,G!!*B3]`83K((q-C%IF,r'GUNH!t,bY#Oqco$haQ%$kF0R!!s;=&.8mP&c`^Qq
u?j5!!!Q<qu?d'(C0^8":tqG(CU$="UbnJ&f2Da&c`O=!!*`LeGoUd&b5o,(D7K!-PdI4]`8*
J$lAmC!YPtOfDkp`&:so?!!!,G!!*B3]Dr-O%NGri%he@3#n%C[!#H@U#65G-!!*<1pAbR7(C
'p?$k*+A*=W5P&ciOOrW!*-#8.XS(&\+8#Rg\<(]"+9#SI+R#6t\6!!X&F/IMO`(\Rh1#R:UP
!!Wi@'2f2S&\%fB'FkfH!!!Dj!!*lPJcO^/!!CIG!=9%F!!X/N(G-+-#O_X!&dT3b&/,Ea&.%
h,!Z)CZr;Zj7(]FC=$k*+@(B=^>&csBc#O_Wq&-rOM#PnH!&ct^('Dhb3$P7D,rXo2Cp&G1+$
O7Ke!!NW5'GM/f[K$@<%N"d<"W%ge'b_D_!!!ge!6P9A"3gfH#me3E"q(D2#V?GrnGin4(D.A
o#8%aW$PDn/!s]VT#lXf)#7(5.":YVB$jZ_2":Gb@#Rp2&r!;ur!s]VN%/^).&dSIK$hs]%'`
J(8#SI+R#K-TI#S7Y;$O[XV\c;dE%MJa@!!r<!!u)7V'`A"3&qU,+!!!,G!!<N6#SaoO!uCq;
(\%J2&.egQ#7(qJ')DS.'DMP9(C'pJ&-)\H#6u%N*W-3A!!EoI#RD+&!!F)C!!!]2!!N`>#RD
%Uq#CO*()HrNr=T,B$hs]%#l4N%$P:tk#8[UF.1\`W'"S&E(D[JZ!!3N=#l+H.(D72f&c_nG&
J#Q]JcOd1!>>k1!!=#C#Tq:k!=9%0!<!K5/h$c5%1E%5!Xo_Nq#CC,rXoMK1(4C((C(K_$iL&
*$iU,+'`A:;$fV-d&cNCD#71;/!"8`2!#5>2"UbkA&dSa4!!*K=q>^R0&.$ti#8.:B(G.?W'"
S&E&e53H!!3cJ&GZ;6$PO*a'+4dQ%MBN_JcOg2!YQ+Wm/R+gbl@bN#c@Y(&dSdB&cr%@'`%e2
'*&^<!!j5U#64`*-jUIb!!*lH`;g/V&1S:m#8[s[oDeq+$k3%6!t,YJ&GcA,(ZGE'#S@%:;-j
nD(DQoM'\*0c&I/OTmf3A!&,lP3$P3:N#l4N.'GLo_'FP]b((Lt/!94%^$PNLQ'^br$"3gfH#
mdC."V;4Q&eGHH!!E]=!"9;0!"TJH8-T\>-7T!,$NL/>&Ic\[#n%:P-5QXu;@O93!!<W<!#,8
1";1t?&d\@7!>>au!"0DQ?3UZM#;Ztm(D>:!";MOL$PW"0$5F$_!!!WE#QP5Do`,1%&etud&.
='iirB,n#S?A'!!CIG!=9%2!!j/Q!#-+[(C1ZL!!!Q/&c`I9!"T_C!##><%2'9b&c`^\!#*BQ
$5*UE49H3/-O:7kqZ$X2$iU,/'*&"@%/p5-$P34L!#,81!XKDMhuF/n!!!B\'+H*3%M9<]f`2
0g$NL/>#k7m!#7_OM$k58r&c`=6!!NcE%2'6\JcOa0!XfGRm/R+gbl@bN#c[k3'GD#X!"0D>!
"]P(!!NcE&eYidq>^X2$NLSDaT)>L&,m1G'*&CO!!j57!!EiG!"4eb&c`@3!!<c?&d[Cq$3q1
K1_pNt%MB3efDl'`&HDeB$h=9&$P!^J!##_Oo)Jq%&e,He(P2YE!!!Dn!!!,G!!*B3WW329$P
<dI(&egH#8Q+r!=KJ<&c`0R!!NuJ#RCkIr;[!,&eGE`#O_Wq#SI+F&E*Tr$k*+9?5!rL%M&fq
!!<iF',C$;$4ICQ!"989&dSIGr=T)Eq>^U3%Mf\/!6>-?"3gfH#mdO2!tkkE(R"h!'`A:F$NL
/4(D$r[*=rGln,WD"!>$(,!"'>E!!#Oq!'gr##K6ZP(B=FK((1*O#RD.Y!##82$j[+T$ksBaN
=-@5(D;<"a8c2Bbl@bN#fQcD$g%Ei'+p*%#S7%M!!">q(C0R4!"8#k!#P2+"W%^X(D$tl!!s&
I',_H$%L2t_r!3<'')hk:#RCD=#6tYL'nQG(!!!,G!!*B3`;g2Q#QOi4'`\LR'^l#%([1o"%&
3e0#SIe!&fi;5!!a>5!!*N:lMptl%i>'B!"8W'#7(PT)&3D^#hAtU'_25(')N.?#R_+=!!!Z2
!"&u;(D76<4?*c_'nQG*!!!,G!!*B3`rHJT'GD#`'EA@H&/,H)!!EN,$P*ZA!!NoA(C'pSr=T
)9p&G.&#86A'!t,bV&GuM3&e\(T&e+U:!u*^>%+bI^(D@Dm(%_J+')W4B:B2"4%/^)*%/geF'
EAOH;EYR#&ds9k`W,u@bl@bN#fcoF(]=dI'EAa]%MBT3!!Nc?#SICVV#UZ)&-rOT([qD,'*&R
Om/R8*#65DFr;ca*!#,2/"=GK*-5Y;7":tq@!"ec&!##2>#6P>F!##>4'`A=9!!a;K'GODJ()
?-8!=0'b!8RVT"3gfH#meQO$5\U1%Q]Rc&K)>mf`23i$S;ni$k0!5!#PS>!#P/*"q1n?#SI@Y
mJm;$#8R.:r!i]?qZ$d6(^CWo2t-eL&eGTgm/R+trVup3oDek(r!irq&dSIG$igq>#QP,*!!<
iM'G9[3!XfYQJcOU,!!CIG!=9%O!"'PE!ZDYK>mh&G#ho=a$k*+`!sf/AO8o7crXo8a'*nI9!
>c.8!!!Z/!;m<,'Dhb5.L-b+5%jBc";)@K!"eMt":PnN$ki14!##2>!=089&cr:<')hk2'&W`
l#8\!fJcOX-!!CIG!=9%P!!sGS(0Yoc((pTTf`2-c&e\(nrWiK3N;s%n(C(cU!!*<;li?qn!#
,50"UbtL(D@VT!!!Z2!!*]Km/R2&&eXU5!^7),q>^L.rVup2huEil'G:\'!8[\U"3gfH#meTP
$5*^T%1RFh',25pd/X1]$^Lbm#l=T/$PEFU#64`?#7q:1!;m<,'D_\2$PF'gqu?j-&eGZ`q>^
X,&HE1PfDksn%M\a>!##82!#"2i!XfYSJcOU,!!CIG!=9%Q!"'6'#8B?C8e_ms#P.or&.@Fs!
>#m1!!3E:$iBu3&dK$^%i53N(C1ZN!!*H>o`,.$#RLbB'_)/7#8@.Q&c`:N&/,`X!"fGI'\EB
d%hJI9!"Af=hZ*Zk$\AB7!!!,G!!*B3aoDSM%N[;B'`J(9$OmOV%h/.3!YH%Mq>^O)%-mlq#S
I[VQiI1!'b^3?"W%CD!"]P9!!3cB$i0i'&c;V/([h>)(D-QG"qgn@(B=gSdf9F`%MF?nX8i5&
bl@bN#g!&K(fN([qu?g5%MfZL!!<l7&d\@7!>?.4!!<c?#SNU,"r@LM&c`INpAb1!r=T)Er;Z
p-&-rpI!!F)<&eG?7!!jAG#7CMJ&-*:@!!!\]!!3cC'S6=d!!!,G!!*B3aoDP\-4Vp<qu?g-&
eu&P!!3cJ'E%n3#QXf3m/R:q&c_nC$_.2$#89`<!!j5)!"BPH!"]M<!#HD'#65DFm/RS$&f*Y
E*"WJX&e"aS#L`YR%hF6lWrN,%bl@bN#g*,M$Tnt*2uWd\'GhPc!#PA0";1\B%i"sB"UtkR!!
!]"!!!c4&c`W:!!=#B/f=R#!"nc%&JZ)^!"05A#SIaM!!`oQ',M5Y!!*W:nc/k,((q'K%h&@:
!tl7[$i'c)'G;#do`,%-#T)q0!XK8KJcMhO!!CIG!=9%S!!F#N#QPJ9!!*]@oDf"&%0uqAr;[
'2$p>7:&eb\,!!ENC!!a>/!!Er?!!!E*#S.UL(C'pOBFbmZ#QPSP'+=C3#T"6l(`!c#&/Y'@#
8IIf";_jf$i'c,$kd[o#R:Y)!!3B8(P2Xf!!!,G!!*B3_uKrT&e>We&bZ2+'+5BK!!<l7#Rl:
b"ooGM&eYESn,NP!$jRUE!"B/L!!j2O!#,kW%0-eFo)K(*$k"Wr'+GWj(]FCF#SIaX!#,Y<&P
X&A2Zj[,qu?s7&HEa_!!!T#!!3ND'D)8.'GLfQ'aoTn]`8$7bl@bN#f?WE&eGQcp](L+%6"[q
&d\F9":P\=!!e)Ukl:f!!#Gn:!!*H=rXoMK!!!Q<&82Xe$haQC#7Cr4$l9^>&R?"T&-r7A#7D
4Z!"oP;$qLX3*(gSM(]===#64`;&c_nCnGiV!%Lht0":GkS$jV@a]Dqp6bl@bN#f?WE&eb]_p
](L0$oS@s'bgNG!"Af=!#P;.!"=GZp](I+&dSaV(\@\3$PNmZ(D$lF!$Dsh/K@.k-q"%Q(B=F
H!"oY>!"ot[&c_oY-j'YR!!j59!!a&C!$)m^#8Qb/!YZ=WoDf"1&e5ZiJcNF`!!CIG!=9%V!!
O)G$ignJr;Zp3!"052!!F)C$NbGL#QP;#!!3Q>$\ABS!!!`3#QP\4!!3E8&b5o.F^5JhA/5an
!#,>3'+b-U#QOi0$NLSH&eu3N&c_n?%/g/1'GD)jNY*)t!!3rH#P%is$l0KjJcNF`!!CIG!=9
%U!!<H8#7U&$!Y>bQrW!!-%h.k+!YYhPJcOj3!#>#(',)#jCfk72(B>$[#S77A$P3p^%/Bl*&
dK$Sq>^L3m/R2#%MeR8"UG>G$PNp1!!*ZGJcOL)!!CIG!=9%V!!F)N%M'3@!"0/D$O[RI&dT-
N&f:0?"q)%P$ighHJcO[.!>64D!"9\P%!bY^9kP7B4r"n4!!!i/!!*H8jT#>r((^0?!#,>E!!
hE^!Yc1WJcOL)!!CIG!=9%U!!<HI#7Tr!#SIb+&-*+t'*n.0"qh@i#RD%UJcPHD!=0,%!!3E2
&GQ54&-smU'c.:.&dJir!!!E+!!<TE()6ND!##82!#"2i!tu%W&V:#;!!!,G!!*B3bl@nQ$j-
bJ$gn!%'F+Ub*=)p/#R;1>!!<T?/cu"X!#1"bo`,"('CGi&'*&XRq#Ca0&J?W&!,"G1#8bqk!
!rQ(!Y#VJpAb1+rVup2r;cg*!=K.s!!<fF#8_slgAh3Ubl@bN#gE>Q'G;/m$l&(/#nn"M#RDn
S$Ps'A!!Eo?!!a<l!:p0m#SIOSr;Zg6oDet+#SRU>!!a2C&lK/L#8bqk"UG).&e5QJ!!!Z2!!
!Z0!!<H8',9a4":+u-&.sKog&M*Tbl@bN#g`PV$NL/749lW6li7A,((1*B&eHWC%i>!@"UbhR
&dJYn!:p0m&.8IOrVus)'Cu2)%2JF6":#>J$k1\e":+u5%M8:5!!iH8r;Zs:&e5?`li7/)%i#
'PJcOI(!!CpT!#,#*!=9%Y!!`o@&el](()Q9:!"8`*!XfYQJcOg2$4%(R&ebZR!"]bKoDek-n
GiP*rVup+m/R5)#7qO;!;m<-0,OQe!=KP2!!EZC&-iX1!!<cK&.='ifDkmRg].B`&J"I6!=9%
Y!!a;F%22V>'Fa+(!s]VS%/9f'#SM^hkPt\j&do8n!!ErO!"9;+!;m<,+oD<C&eG<b#PA'"'b
goR''oT#'+5EeJcOF'!!D!V!Z)IZo`,"!#h/hS'`J(8(D.Df']T/q&dT*Up](@,&.='ikl:ht
$NLeFp](="(Y/Qd')hk2'Cc)#%KI1A!!`l>&.9$S',U0=!>Q@;!!3E>&qU,8!!!,T!!!N%!!*
B4r<NB>f`2!`rW!'8&h".smf3A)#PJ,u',('?!sfMF&qU,K!!*lIr=\o+!Z)LTec5g^!!!9:n
GrIs$PNL?#SIaU!%7mb#P.p!$PX-`#RKl!!"je_g].<^r!39Eg&M*_o`,"!#h]1e$NL/A-k6k
&(C1!Y$OH8&";(V=//S$\!>Gq:!!Ei@!"]Ni!8RVW#8[U]f)Ppf',(udnGrIs$kiU@&1nk7&f
;Jd#8d"4!#PVJ!>#Ng!5ed:"53_T%eTf&#mf2a%MBHg!ZD[^'EACO%L3U\o)K"(5;X3u(_S7c
!!NW;&eY`gJcOX-";_:C(C.eW&K*5J',(uY#SICU!#H.Y&dJ[5!!<rH%i'Zr_>jQ<g&M*_o`,
"!#h]1e#SRsY,8L^g!!j#H%h\@4!=(%N%KT?2JcNgk"U>8F&e>es!"9,H%LE+8#T"$[!"]P*!
!<iG&I3mf_>jQ<g&M*_o`,"!#h]1d#RqP^-iakr!!!Q@(@hG,$j\9Z%KUY_JcNjl!"Ac*!!q$
R!"8Au$sa>U#QOi9!Y#bT&/+@1!t,)/$\AAq!!!,G!!*B3f`2Hd$kb-+#R_%@$PEgU#kJ#t'*
n^<%KZnK#_E'!!!3rP#lO`(%1Lef":PMJ'+=L6#rbsH$O?_<&dK6K!;mI]!4)Y*"3gfJ#mgkO
gAhHm!#H=t&ebuY!!!E#!!!E+!!<T7#Qsu7!Ws&KJcO!p":G27'G16D!Xo>Jo)JaujT#Dg!!!
]GrVup4q>^g?%LEOX!"]MS#Pe?"')hk2&qU+l!!=#C#Tq:k!=9%_!!s&F%XT<2$ka'epAb4,%
/^)*')W4>#_E'"!"95E(C'pQ#QOi0!"9;/!!*?1jo>Du')hk9#7M7Z)&!YtrW!<2%S[3B!!j,
A#SS$N!!!Z2!!!Z,!!*Z>JcNLb!!CIG!=9%_!!s#H'-.`c#7M4Mp](@'&/4sA"pbhS;A'TYJc
Nso$ka19$j[R]!"9JG#S$G,!Y>t\jo>Pr#QP)E')W4H#QOi4>qmf7#R_II#QP\;!!!Z2!!!Z,
!!*`AJcNLb!!CIG!=9%_!"&rF&g1cr&1ded(\n%5&dSmSq>^L$JcNmm!t,_A/H#hT!#5A;!"8
N$!sfMI''9/t$P<UL!##2>"UG).&e5?L!!*lDo`4n&q>^[)%MKTe'^l#%(P2Y9!!!,G!!*B3d
f9VMAh\4L$Ps'I!!!i7!!EZ@!!!]/!!!ge!6G3D&f1NV%/9f&$hjW(&.8IN(ZGDp')W4B#QOi
>#Q4W'#86G)!"8])!tl+S(\[n0$i0i)#Sn,+!7UuK"3gfH#meu['K6Oq7KO28&.8I<'*nR<'a
G?a#7,n]_>jQ@rXo29p](=-');M.(D-QY!"o21!uCq;([1o"')W4>#l4N'(C(Q\o)Jn+$k`s]
qu?g1$kO0K!!3iF$iU,0$P+["(DDB#e,TINbl@hP#m_6q!!<T>#7^P1!XKDMq>^O%')_e2(C,
Nl]Dr*@&eG`i#kJ#u&c_nEkl:\rr!i]4q>^U&(Dd_T!"9)C!WX#:#QOi=!!!i1!!3]H')hk8#
7)LY!"]Ni!8%8R(C19gbl@bN#h&bV'Gg``(]478&.9*VqZ$m5&.8ID!"]bXJcNIa#S7@L;@jB
I$P`@9#T!m[69lM!'FX.*!!r?""W%CD!"o\3!!`oA%NY]b$k2_-$l'BT'*&"K&-*7l&/Bcse,
TINbl@bN#g*,M#SI+F&GuM7#SICU&J%2?!"XY]]`8<S#88Zs#SIa]p](O2%MD&n&e5N;!!!`.
!!!<'&c`X<!!`o;&crLX%1Me-!Y>tVrW)p1!<<^`!:'Uf$PE[L$gmup"3gfH#meZRr=T/C1(=
-^#nRIE9.^r3'+>M*!5&:;&JZ#n#;-Q##l"B'%h9-U((\Of"q1JJ!([P3nGiS+&H)S1$PNo"!
9jId&etB\#OVQl"3gfH#meKM%20BT!!j#H&ecW#&-r_s!4W"4'/L7,$P<.7#o,$4.Ue&>&ete
r!!Nc>&ekrdJcO4!!##82!#+c#!!CIG!=9%T!!!E*!<!?'!!EoJ'EAMm!4W"5/KGB&!"oS8!!
W]E8eVaL$iU,,&f8[j!"8c+!XfSVJcO7"":#V@$P;_+!!CIG!=9%`!!<r9!#,/.!=&o0!!<l7
!#,2/!"=GZ[K$C8&ec;b&c`[E!"BJR4VJ;1#QP5<%2'?haT)JP#SRgb'`7q3$O_Odg].Hb#87
=VmJm4hbl@hP#m_7!!!O&G!"9)@qZ$s>&.egA$kj6d'+BHmY5eY9$O@C@!"K8I!)XUF'+4dG%
0m=U(WcX\#S..L&/Y6E!>#lq!65'A(C19gbl@bN#h]1^&.]9V(^h#S!!<HB&dX'hW;m)-&c_n
C$i0i4&.8Id;@F6P!!!WI%N!.c!tl@Z(]478'bV,bJcNai!!CIG!=9%b!!j8S&.JmF$k*C?!!
F)C!"0?i!3#qu(&\aM'EA+@&c_n>r"Ao-!tY_N&_$d\'E&R>!!<c<&J=p@!s]VW&qU,&!!!,G
!!*B3f`2*j%hK9N&d:E-#QOi:rXo5C(P2X]!!3cB(\[n5'EAL@!"79V!##82!##)-!t,)/(]4
78$P3sZJcNai!!CIG!=9%b!!<rP!"Ai,!YYqQJcM>A"UGME&/PTH!!3ND(XN-^')hk2'(5f''
aOdR&V:#'!!!,G!!*B3df9LZ$ignGqZ$U4JcMhO!=0M@!!`lF&1@ea#8d19!YPnHk5YJjqu?a
4$h=8t')hk2''oT"&.fP-!6>-?"3gfH#mf5b!"8Z(!"]&A!#,50!!n/VWrN/3#Q=].&f!#b&e
YESq>^X+&-)qOkl:bj()QoL!=]\4!<!N1#l=T%$hOE$&JYZeJcNjl!!CIG!so8>'\iZg'(>l$
#_E&X!!roD#8[@?'G(ikp&G4.#QPYGkl:br'F4U;!t5SL$g7Qj'(c/+(C(NaJcNso!uD4K+3a
cd#mfAf":GnD#S6D)!!n/VX8i>6$Ps'I!!*];o`+t(r=\Aq$4%7E#8[@?'*&:Nn,NS('FYZgr
Vus4'_DA+&J0No`rH)Abl@bN#i5Oc#SId\(_78M!!!:V!3H5)#S77I',UWJ!"7H[$PO6\$jQb
@&dSaP$h42s$iUeE$NLSF&e5Hho`+t"JcNgk!!CIG!=9%j!!j;l&eG]h%T=eG!!!<#!!*HAJc
N7[!#PS>!#P/*":+uD!"A,mr!3<''`A:;$hjZ"#R_=H$kNm[$ig8=%i0`s\,ZL2bl@bN#ibml
'GMQH+<1q7*(!s&!;m<,'Dqh2&eKWpT`>30&eYEXe,TIRrWioF!#-(O',1EH&/>EaJcN=]!!C
IG!=9%l!"22#)^I=%%9WrB@4UsMr!i]?r;Zp*&dT,%!29Gr#S7IT%+G7W')hk>&c`LO#R_4E$
OZq7(P2Xt!!!,G!!*B3irBH'-OsAu$O\X9-='OA!;m<,'E%n5$kX0bJcMJE!XB/Ir;Zj'(YJc
g')hk2&qU+c!!!,G!!*B3iW'<_**+0^!"9MN&d\+0r!i]?qu?d0'+9BlU&YK4$ka6e!!!fK#M
B(W')hk2&qU+c!!!,G!!*B3irBE&!sfV\(B>-_&/+R7r!i]?qu?a6'nQFZ!!!E*!!``7#8[U]
&e+U:!>cF2!<!N1%"\J]!!!,G!!*B3hZ*lh!!!63$ksHK!!X)M)&!Z8#_E&R!!*H?oDf.5&5*
6.(K(eXq>^R%#7,n]N;rq\bl@hP#m_7)!!N`D'aP$Mmf3Ls!"0GO$\AAV!!3]C#k\0(#8\3Y-
k\4U$k3%6!uD1M&:snD!!=#C#Tq:k!=9%h!!<oG%1MY)"UG)5'GM13!2ol"'bUlfp&GF9#65,
C&hX^q!#,81":#_C&dX'hNW9%]bl@bN#i>Ub&f(ri([h>-#QPSP&dX'hVuQo-&/5cN!"0AO&h
$I6/Q#CY#71;/!=KJ;')2G,%"\JH!!!,G!!*B3hZ*ca#8%UWmf3Ir!!!QCJcMYJ";M@R(D?B@
"UGkK%M0$8!!3rI#k%`r',2&f($5Js$PJ$kbl@_Gbl@bN#jhTl$hXK'$PaI1'GU!9":+u-$O_
OdV#UW7!"]\Ir;Zg*q>^U1%Lrm:!!!E*!!3BA#O_Wp$PNsXjT#>e#7,n]c2[hHbl@bN#jhTm%
i=j<!=T5#!!!<&!!*cMJcM\K!t5bL'E.t4$Ouq4!tZ.Z%.XB!$P!(8";_:C$jc>&";2.R&.%G
!!u2FK'7p50!!!,G!!*B3mJm:s&dS%/!YYeTmJm5$r;Zm,'+f`qVZ6f,&-rpJ!!3cG%/U#,$N
L/7nc/t/#7LS4#7LkD&F]Z&$k*a^'^#Gu$PNdYJcO'r!!CIG!=9&"!!<l7#8d(6!t5SS#O)3j
&dT3aJcM\K!>Q(C!!<TA!#+Ss"UbkA'*&%1#k.fs#QPYK#lXf(&aB>t'b:\(!6tQE"3gfH#mf
u"":P\=(C0X6";:b8#8cY*!tl=]'nQF_!!!i7!!EoN!"9;$!!Eo?!"9:r!!*lFkl:]"JcO$q!
!CIG!=9&#!!!9'&c`19!!!i5!!4VU#Q>>9&a98r'+f`qT`>&trXoG@!#61R!"o\;!!!E%!!*l
IrXo29j8]>l'+YNb$\AB'!!!i%!!!,G!!*B3k5YMr#lO`(!Y",i!>Gon!1Nrk$PO'V%/U#*#7
UG/!=0@r!!EZ=&.K#!!6bEC&F9As"3gfJ#mgkOl2Ukk&eP$B!Z(nOJcLB&qZ$a8&e5?`qu?d7
#8?q6!Y>tMm/R+or<NB>q>^U*%2',%!6kKI(DR\o'FXI3!uD4K+3acd#mf_p#nRIW#QOi0F:8
S0!/(=P#l4N'#7V=\qu?g((CU`M!!<K>$P;\*!=0;:#QPM6!!F)S!#-6$!6tQI'c%Dl%.4)q"
3gfH#mfbq$4%7E$P3:S#7(;CJcLK)!Yl4[quH^)!=K/2!!F)C!!!]1!!Ei@!"oS*!!*?2rVup
2JcNUe!YZ=bm/R+gbl@bN#jD?f&dJsa4==,V(eB5YLB%Da'+5BC!!!W1&ci4CrVus8&H*70!!
ii9!!!R.$k*c#!6"p@(C(<[(%)&%"3gfH#mfSl!!rK4!#,50!!r/r!>#Ng!1j/o(D$QX/ec\6
#7(S8!"0bU#D)rW!!!,G!!*B3j8]/kr!i]?qu?a+%J0W&'bV/fJcMAB"VD1L&.B3$!!!i7&d/
D'%M/nt!3H5$"3gfH#mfVm!=0>9%KI1?!!3f>%.sT&%0-eFJcM>A";M1I!#,),!>H@*!!E]8&
ebt2!3H5$"3gfH#mfYn!Z*15r!i]?r;Zp.$igP*!!<rK'+9BlRfEL$$kiI<"r.@U$O7:Vr;Zj
7#iYge&HE(E'nQFf!!!,G!!*B3jo>Gg'.j%k!#,;2":YVB&e+F5!>#Ng!1Elg(DHWF$OdeJ/I
r@'$ig84&:sn=!!!,G!!*B3jo>[H!tJ?=!=/rFrVup+r<NB;JcLH(%1!RV(-E6@&HDeI#8.<s
!!!H'!!!ge!4i.1"3gfH#mfYn"UbtU&J>A$!.k4F!"B;@&e#Tj'+=j@#8[aZg].?_%J]u)',#
ls])Vg5bl@bN#j)*j(DIZ%'In\7JcPNF%L<FJ!/ggb$ih(W#RCtIh>d]l%1`mQ$iL&-&dT*aJ
cNF`!!CIG!=9%j!!!:V!.k4=!!!i6#QP[t!!N`@&.]-Vr;Zp2(D.(-!5&:3"3gfH#mfJi!!n/
VJcNai"q(kF%2TN_rW!!9'+f`q])Vg5bl@hP#m_7*!!!:V!.k3i!!X5R!#/'3&H)S0$l=Kq^&
S6O#RDNs!!*B3k5YJuqu?^&JcLB&_>j]Q&c`RQJcN4Z!!CIG!=9%p!!*<@r;Zg*JcLB&_#XHI
q>^O/'S6>!!!!,G!!*B3kl:l$#Sn$Y(P2X=!58F6$P<.7!XKDMJcNLb!!CIG!=9%r!!EuF&f)
+3!.k3X!!<l7$k\'k^An69bl@bN#j;6j#7_LcJcLB&\GuU8r;[!5&JGNg(P2Y'!!!,G!!*B3k
Pt\r$Pa)%!.k3^!!3iF&cD\4',:KY&:snu!!!,G!!*B3JcLB&SH&a*$P4-P!!<fJ'bQ#t_>jQ
<bl@bN#_E&.!1a)l&.8^Zqu?g3'bq@5!5\^9"3gfH#mefV!>5cl!.k4!!!3iJ&c)J.',,rt_#
OH;bl@bN#gWJP'bV.2!.k3u!!!<#!!*cJJcNUe!!CIG!=9%X!!<l7&eootJcLB&LB%;Vbl@bN
#k.fo%/U#)$iU,+$g[iq&-rpWJcLK)!#O_sr=T,9#_E&S!!!,G!!*B3nGiUr()QlK";M.S'GK
m7":P8<%g[aeKE)#]']oAq')hk3#RH"^VZ6]!bl@bN#k7lr&/5BH!!<WF'+=7/";):Q!"4AYK
`D8a'G(f]'^,Ms')hk3#RH"^VZ6]!bl@bN#kJ$"N<g-s#8d==":,PK()$*:";_:C&.@\%!#NQ
R!#NQR!#NQR!#O;g"V_LZ%1ip<!!!i1!!!Z2!!*?2df9@a_uKcR_uKdsdf9@Mbl@bN#kJ$"#n
n$Z$jZ_2";DL^$jZ8%!t,bM'B]>q#fH]C#fH]C#fH]C#hT+Z$k<a`nGiOpp](:&r=T)Edf9@R
_uKcC_uKcDdf9@Mbl@bL$2OW&$PE::!"&Q/r;Zs7$PrdKmf3D(()6]I!"8,n!!pLC!!pLC!!p
LC!!q3W!s]MG'(Gr%#k\0$$PNmV#7/l\!!pLC!!pLC!"%*S!!CIG!?k26!!3cB$iL&*$1e,s'
_25+'EA+=qu?a2&cD\0'_25(#kJ#r'_25('_25('_;;)#k@rq'_;;)'_25('_;;)#k@rq'_;;
)'_25('_;;)#k@rq'_;;)'_25('_;;)#kS*!'GEJ8oDek*nc/Y(o)Jarnc/Y(o)Jb)nc/Y(o)
Jarnc/Y(o)Jb)nc/Y(o)Jasnc/Y(o)Jb)nc/Xnbl@e^!snf)!t,YG')_e1$1e,s#k@rq#l4N'
&J5QjrVup(nc/Xqo)Jarnc/Xqnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)J
arnc/Xqo)Jarnc/Xqo)JaroDf",((Lrno`+stnc/Xqo)Jarnc/Xqo)Jarnc/Xqo)Jarnc/Xqo
)Jarnc/Xqo)Jasnc/Xqo)Jarnc/Xsbl@fC.M2LX";1t?&.AI;!"&5s!!r,q!!rE$!tYhT&cMb
1#k@rq#kJ#r#k@rq#k@rq#kJ#r#k@rq#kJ#r#k@rq#kJ#r#k@rq#kJ#r#k@rq#kJ#r#k@rq#k
J#r#k@rq#kJ#r#kS*"&e%JJ$hXK"#k@rq#kJ#r#k@rq#kJ#r#k@rq#kJ#r#k@rq#kJ#r#k@rq
#kJ#r$1\&r#kJ#r#k@rq$I&PQ+;ddrrW<<GCC1D96iI/f8+Qf_@IaL#@JU'-"`-0s!rud#!ru
d$!rud#!rud#!rud$!rud#!rud$!rud#!rud$!rud#!rud$!rud#!rud$!rud#!rud$!rud#!
rud$!rud&!sKba!sAc7o`G2&ncJl#o)eu$ncJl#o)eu$ncJl#o)eu$ncJl#o)eu$ncJl#o)et
_ncJl#o)eu$o`G;)$4;`D!.k3&!.k3&!.k3&!.k3&!.k3&!.k3&!.k3&!.k3&!.k3&!.k3&!.
k3&!.k3X!!*fJqu?^)_uKcF_Z0ZEc2[hXqZ$U(qu?^)d/X.[o`+t"d/X.[qu?a4'Dqh1$deqS
'D2>*$deqS'D2>*$d&GL$iBu)$^q&%(D[J\$P*^W()5'p$O[LU%M'?`%h9'b'[?[d&e5B_!!!
B;%Ls6gd/X^c&Ind@$P*^W().,e%Ls6ge,U$f&Ind@(C^lb((gob%Ls6ge,TOX&J"a>#o=?e!
"0;I%Mfc.!"]MM%KHJ:&.T0\(CL``%Mfc.!!3N?%fQG8&e5B_!"0;I%Mfc/!"g"V%h9?e$P*^
W().,e%Ls6gRfEa.&IndG&c`:E&C1=a&eY0E#R^kM!"0#Cc2\4^$Ps9Q!!a,:$O76j!"]qZ%K
HJ6&c`:E&-igJ$O76m!"]qZ%KHJ@&c_n;%L3UH$O76m!!3rL%fHA6'+k]S#8."E#8#Ab&/Prh
!!!WE!!!94#8."E#8#Ab!Z)IZrW!98$Ps9Q#8."E#8#Dc&J5WU!!j&>&c`:E&-igJ$O765!!N
u?!"JuErVus8%aP+Z%h]Wf&.99Q!!*lGc2\%[%Ls$M!#GP6!>c6l!!<]2!#GP6!Z)=^rVus8%
ak=W%f65-&dK3O!!*lGdJs7WrW!*7#6556(B+:7(Cnjn#n?q8%h]Wf&.99Q!!*lGdJs7WrW!*
5%Ls$M(B+:7(Cngm!YP_RrW!!9%Mo$D!>c6:!!W]6!!!K/%fHA-%aP+Z%L3@L#87UG!!!MT!!
a2N$O[R^!"Sr-!"R<T!tG;2%fHA.%M&F;!"REW!"Sr-";MF[!"Sr-!"REW#n?q8#R:>0%KI";
!!!MW!!s,8!"K5A$O7=Tr;Zg-dJsR`!!!]G$O[R^%fHA-%atC\'b:oW%fHA.%M&F;!"PP"!#,
;@"qqad!!!fGcN!q\r;[$3()-`K(D"gl$l03N!"0PB()-`K(D"gl%LrI=()-`K(Cq8q!!!fGd
Js7WrW!91&/P<H()-`K(D"po!tG;2'E&CF',D8^!#H0o!!<]2!#GM5"qDC_!!!fGdJsae!!!c
B!!!BB()-`K(D#!q&-ia_!!!cK!!!fG()-`K(Cuo6#7^_=%1<OK'$gOc&eYQP&JGBY$O[1PcN
"@a&HDe:%fchD$O[1PcN"Fb!!!65$O[1P#7V%K#85Gb":bD3$kW@;"U>JE$O7<m!!!N+!!`u6
#7V%K#85Gb%LrI=&eYQP&JGBY$O[1PdJsae!!!NA!!!98#7V%K#85Pe!=TP<!"0#@$O[1P#7V
%K#83F)"qCV@&.THgblA%_%Lr^O$P3d`'$^Ib'FbN^&/P<S&.THgc2\:`!!!B<%MfZW$P3d`'
%$[]%KHJAr!ii;&.THgd/X.VqZ$g1!"0>J()#!p!"Su.#nd^X#7CnN%Mf])!"BD<!#,kP%M0E
a&.THge,TI]r!j&A&.THg!"0>J((u3!JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcN"Tr!i`@$gmup
%]]R0%Y=\4!.k30!!!N-!!*<9mJm4snGiP!]DqpAJcLB&JcL`0!"Sr-!=KD8!!!E!!!!N!!!!
MA!!!Mu!!!CY!.k3&!1j/j%fHAD$P!.:'+>W^(D@8o&dn[>&J#?]&e4mOrVup.rW!*<'+PKb!
<*K+!!j5N((Lie((LTK!"onT%Ls*O!"9VQ%ho!D$l0<`'`7q:'+>Wd%h&F<%fQG9%KHJB&f(r
f&Jbi]rW!Q@&e5BV$NLkS%Lr^O!!!Z@('oKlJcLB&ScAa#rW!cC#7ge7%L2t6&-i1O%2&XQ%2
8dJ%1W@JrVup.rW!07&c`1I'EAX?!!j&I!#,nU!#,qB!"oqZ!#H+F!#?@N&J+pB()Hr_&GuM6
%L3@A&Ind@%fQG9%KHJ=&c`UU&c`UUrW!K>#7D=W#7D:Z!#H(L!!!K6JcLB&JcM;@r!j8K'EA
+C$NL/:$NL/@('"j]rW!$+%KI"<!!!N.!!a8I!!!]@!"Sl+!"Su.!"Su.!"Sl+"pb\=!#?.Sr
;Zm7&I\F8!=fM:!!<]2!"Su.!tG;2%fQG.%fQG.%fQG5%Mo*F(D[_prW!*:%fcS>$\AA1!.k3
@!!!N)!!!N.!!!N-!!3W1%f?;.%KI"<!!!N.!!!N+!!!N+!!!N.!!!N.!!!N.!"okS%hK3N!#
,kP%2AjC'FbN](&S%3%fHA0%KHJ=rW!$1!!!N.!!!N.!!!N.!!!N-!!*QBq[NZ-!"OS\JcLB&
RfEEuq#CC)rW!3>$NL/C('"jNrW!$:%KI"<!!!N.!!a8I!!!E5!"Sl+!"Su.!"Su.!"Su.":b
\;!"Sr-!XfSUr;Zm,&Jk9E!"Sr-!tG;2%fQG1%KHJ=rVup.rVup.rW!05(B=FO%h'-N!!EZD!
!!L\!.k3&!1Nrg%f$))%fQGA#8."Q'+t9X('jmV%1W@J#QPJIrW!3/&c`U]'EAUNqu?^,rVup
.rVup.rW!Q@(B>-Z!"fYJ!#-1K&If*J'GgTH!"Sr-$4[%9%L<%I%KHJ=rVup.rVup.rW!H=#7
CnQ&doH`!"0>N!!!L\!.k3&!1Nrg%f$))%fQG2$PO!c')hk=&f(rf&eb6X%Ls!^rW!33'+PN]
!!!N>qu?^,rVup.rVup.rW!QD%Ls$`%R^j<%M'9S$P3dX%i,!B!"Sr-$4[%9&e5B^&c_nArVu
p.rVup.rW!HB'+PKb!!!]B%MfZb!!!L\!.k3&!.k4=!!!i$!!*H8JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcL
B&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&J
cLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB
&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&Jc
LB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&JcLB&
JcLB&JcLB&JcLB&T)aB~>
%%EndData
end
%%PageTrailer
%%Trailer
%%BoundingBox: 0 0 611 791
%%EOF
@@ -1,726 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 39.0 40.0 564.0 775.0
%%Creator: miheikki using rose_exe
%%CreationDate: Tue Jul 24 18:30:01 2001
%%Title: preEquilibriumUml.eps
%%EndComments
%%BeginProlog
200 dict begin
%%BeginResource: Units and resolution
/cm { 300 mul 2.54 div } def
/PageHeight 26.9 cm def
/PageWidth 20.6 cm def
/LineSpace 0.05 cm def
%%EndResource
%%BeginResource: PenBrush
/TmpPenArray 5 array def
/PenArray 5 array def
/lpStyle 0 def
/lpWidth 1 def
/lpRed 2 def
/lpGreen 3 def
/lpBlue 4 def
/BrushArray 6 array def
/lbStyle 0 def
/lbRed 1 def
/lbGreen 2 def
/lbBlue 3 def
/lbHatchStyle 4 def
/lpPattern 5 def
/BkColorArray 5 array def
/bkRed 0 def
/bkGreen 1 def
/bkBlue 2 def
/TextColorArray 3 array def
/TextRed 0 def
/TextGreen 1 def
/TextBlue 2 def
/PenDashArray [ [] [0.2 cm 0.1 cm] [0.1 cm 0.1 cm] [0.3 cm 0.1 cm 0.1 cm 0.1 cm] [0.3 cm 0.1 cm 0.1 cm 0.1 cm 0.1 cm 0.1 cm] [] [] ] def
/HatchStyleArray [ {HS_HORIZ} {HS_VERT} {HS_BDIAG} {HS_FDIAG} {HS_CROSS} {HS_DIAGCROSS} ] def
/UpdatePen
{/PenArray exch def /PenWidthMemo PenArray lpWidth get def } def
/UpdateBrush
{/BrushArray exch def} def
/UpdateBkColor
{/BkColorArray exch def} def
/UpdateBkMode
{/BkMode exch def} def
/UpdateTextColor
{/TextColorArray exch def} def
/HS_HORIZ
{0 LineSpace PageHeight { /i exch def 0 i MyMatrix itransform moveto PageWidth i MyMatrix idtransform lineto } for stroke } def
/HS_VERT
{0 LineSpace PageWidth { /i exch def i 0 MyMatrix itransform moveto i PageHeight MyMatrix idtransform lineto } for stroke } def
/HS_CROSS
{ HS_HORIZ HS_VERT } def
/HS_FDIAG
{0 PageHeight sub LineSpace 3.5 mul PageWidth
{ /i exch def i 0 MyMatrix itransform moveto i PageHeight add PageHeight
MyMatrix idtransform lineto } for stroke } def
/HS_BDIAG
{0 LineSpace 3.5 mul PageWidth PageHeight add
{ /i exch def i 0 MyMatrix itransform moveto i PageHeight sub
PageHeight MyMatrix idtransform lineto } for stroke } def
/HS_DIAGCROSS
{ HS_FDIAG HS_BDIAG } def
/StrokeWithPen
{/join exch def /Penwidth PenArray lpWidth get def
Penwidth setlinewidth
Penwidth 1 le
{ 0 setlinecap }
{ Penwidth 5 gt { 1 setlinecap } { 2 setlinecap } ifelse } ifelse
join { Penwidth 5 le {0 setlinejoin 3 setmiterlimit}
{ Penwidth 8 gt { 1 setlinejoin } { 2 setlinejoin } ifelse } ifelse } if
join LineJoin -1 ne and {SetLineJoin setlinejoin} if
join MiterLimit -1 ne and {MiterLimit miterlimit} if
PenArray lpRed get 255 div PenArray lpGreen get 255 div PenArray lpBlue get 255 div setrgbcolor
/PenStyle PenArray lpStyle get def
PenStyle 5 lt { PenDashArray PenStyle get 0 setdash stroke }
{ PenStyle 6 eq { [] 0 setdash stroke } {newpath} ifelse } ifelse
join {0 setlinejoin 10 setmiterlimit} if } def
/FillWithBkColor
{ gsave BkColorArray bkRed get 255 div
BkColorArray bkGreen get 255 div BkColorArray bkBlue get
255 div setrgbcolor fill grestore } def
/FillWithBrush
{/BrushStyle BrushArray lbStyle get def
BrushStyle 2 eq dup BrushStyle 0 eq or
{ BrushArray lbRed get 255 div BrushArray lbGreen get 255 div BrushArray lbBlue get 255 div setrgbcolor
{ gsave BkMode 2 eq {FillWithBkColor} if clip
PenArray lpWidth get PenWidthMemo dup 0 ne {div} {pop} ifelse setlinewidth
HatchStyleArray BrushArray lbHatchStyle get get exec
grestore }
{ fill } ifelse }
{BrushStyle 3 eq {BrushArray 5 get p SHR
gsave clip /Tmp save def pfill Tmp restore grestore} {pop}ifelse
} ifelse } def
/Fill&Stroke
{ gsave FillWithBrush grestore StrokeWithPen } def
/patfont 10 dict def patfont begin
/FontType 3 def
/FontMatrix [1 0 0 -1 0 0] def
/FontBBox [0 0 16 16]
def/Encoding StandardEncoding def
/BuildChar{pop pop 16 0 0 0 16 16
setcachedevice 16 16 false [1 0 0 1 .25 .25]{pat}imagemask}bind def
end
/p{/pat 32 string def
{}forall 0 1 7{dup 2 mul pat exch 3 index put dup
2 mul 1 add pat exch 3 index put dup 2 mul 16 add pat exch 3 index
put 2 mul 17 add pat exch 2 index put pop}for}bind def
/AU{1 add cvi 15 or}bind def
/AD{1 sub cvi -16 and}bind def
/SHR{pathbbox
AU/Y1 exch def AU/X1 exch def AD/Y0 exch def AD/X0 exch def}bind def
/M /moveto load def
/pfill{/PatFont patfont
definefont setfont/ch(AAAA)def X0 64 X1{Y1 -16 Y0{1 index exch M ch
show}for pop}for}bind def
%%EndResource
%%BeginResource: LineTo
/LineTo
{ /y exch def /x exch def
moveto x y lineto currentpoint false StrokeWithPen } def
%%EndResource
%%BeginResource: RectanglePath
/RectanglePath
{
3 index 3 index moveto 3 index 1 index lineto
1 index 1 index lineto 1 index 3 index lineto
3 index 3 index lineto pop pop pop pop closepath} def
/RectanglePathBackwards
{
3 index 3 index moveto 1 index 3 index lineto
1 index 1 index lineto 3 index 1 index lineto
3 index 3 index lineto pop pop pop pop closepath} def
%%EndResource
%%BeginResource: EllipticPath
/EllipticPath
{matrix currentmatrix dup 3 index 6 index sub 2 div
3 index 6 index sub 2 div
7 index 2 index add
7 index 2 index add
matrix translate 3 1 roll matrix scale
exch matrix concatmatrix exch matrix concatmatrix setmatrix
1 0 moveto 0 0 1 360 0 arcn closepath
setmatrix
pop pop pop pop
}def
/EllipticPathBackwards
{matrix currentmatrix dup 3 index 6 index sub 2 div
3 index 6 index sub 2 div
7 index 2 index add
7 index 2 index add
matrix translate 3 1 roll matrix scale
exch matrix concatmatrix exch matrix concatmatrix setmatrix
1 0 moveto 0 0 1 0 360 arc closepath
setmatrix
pop pop pop pop
}def
%%EndResource
%%BeginResource: Rectangle
/RectangleOutLine
{/y2 exch def /x2 exch def /y1 exch def /x1 exch def
newpath
x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto
closepath
false StrokeWithPen } def
/FillRectangle
{/y2 exch def /x2 exch def /y1 exch def /x1 exch def
/MyMatrix matrix def
newpath
x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto
closepath
FillWithBrush} def
/FrameRectangle
{/y2 exch def /x2 exch def /y1 exch def /x1 exch def
/MyMatrix matrix def
/x1 x1 0.5 sub def /x2 x2 0.5 add def /y2 y2 0.5 sub def /y1 y1 0.5 add def newpath
x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto x1 y1 lineto
/x1 x1 1 add def /x2 x2 1 sub def /y2 y2 1 add def /y1 y1 1 sub def
x1 y1 moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto x1 y1 lineto
closepath
FillWithBrush} def
%%EndResource
%%BeginResource: Polygon
/Polygon
{/MyMatrix matrix def
newpath PolylineArray PolylineMode 1 sub get exec closepath
true Fill&Stroke } def
/FillPolygon
{/MyMatrix matrix def
newpath PolylineArray PolylineMode 1 sub get exec closepath
FillWithBrush } def
%%EndResource
%%BeginResource: Polyline
/PolylineArray [ {DrawPolyline} {Bezier} ] def
/Polyline
{PolylineArray PolylineMode 1 sub get exec pop pop currentpoint true StrokeWithPen } def
/Bezier
{/nbPoint exch def /nbCurves nbPoint 1 sub 3 idiv def /nbLeft nbPoint 1 sub nbCurves 3 mul sub def
moveto 1 1 nbCurves { pop 4 2 roll 6 -2 roll curveto } for
nbLeft 1 eq { lineto } {nbLeft 2 eq { 4 2 roll 2 copy curveto } if } ifelse
} def
/DrawPolyline
{/nbPoint exch def moveto
1 1 nbPoint 1 sub { pop lineto } for
} def
%%EndResource
%%BeginResource: Ellipse
/Ellipse
{gsave
/Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath 0 0 1 0 360 arc closepath
1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
false Fill&Stroke
grestore } def
/FillEllipse
{gsave
/Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath 0 0 1 0 360 arc closepath
FillWithBrush
grestore } def
%%EndResource
%%BeginResource: Arc
/Arc
{ gsave
/ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy
scale 1 -1 scale
newpath
ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse
1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
false StrokeWithPen
grestore } def
%%EndResource
%%BeginResource: Pie
/Pie
{gsave
/ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
1 -1 scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath 0 0 moveto ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse closepath
1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
true Fill&Stroke
grestore } def
%%EndResource
%%BeginResource: Chord
/Chord
{gsave
/ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def
Cx Cy translate Dx Dy scale
1 -1 scale
/MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def
newpath ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse closepath
1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate
true Fill&Stroke
grestore } def
%%EndResource
%%BeginResource: RoundRectangle
/min {1 index 1 index le { pop} {exch pop} ifelse } def
/RoundRectangle
{/r2 exch def /r1 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def
y2 2 div r2 min cvi /r2 exch def
x2 2 div r1 min cvi /r1 exch def
/width x2 r1 idiv def /height y2 r2 idiv def
gsave
x1 y1 translate r1 r2 scale
1 -1 scale
/MyMatrix r1 r2 matrix scale x1 y1 matrix translate matrix concatmatrix def
newpath
1 1 1 180 270 arc
width 1 sub 0 lineto width 1 sub 1 1 270 0 arc
width height 1 sub lineto width 1 sub height 1 sub 1 0 90 arc
1 height lineto 1 height 1 sub 1 90 180 arc
closepath
PenArray TmpPenArray copy pop
PenArray lpWidth PenArray lpWidth get r1 abs r2 abs add 2 div div put
false Fill&Stroke
TmpPenArray PenArray copy pop
grestore } def
%%EndResource
%%BeginResource: TextOut
/TextOut
{TextColorArray 0 get 255 div TextColorArray 1 get 255 div TextColorArray 2 get 255 div setrgbcolor
gsave translate rotate
0 0 moveto /expwidth exch def dup stringwidth pop expwidth exch div -1 scale show pop pop currentpoint grestore} def
%%EndResource
%%BeginResource: MwSetFont
/EncodingDict 256 dict def
EncodingDict begin
0 [/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus
/comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven
/eight /nine /colon /semicolon /less
/equal /greater /question /at /A /B /C
/D /E /F /G /H /I /J /K /L /M /N /O /P
/Q /R /S /T /U /V /W /X /Y /Z
/bracketleft /backslash /bracketright
/asciicircum /underscore /grave /a
/b /c /d /e /f /g /h /i /j /k /l /m /n
/o /p /q /r /s /t /u /v /w /x /y /z
/braceleft /bar /braceright /asciitilde
/.notdef /.notdef /.notdef /quotesinglbase
/florin /quotedblbase /ellipsis /dagger
/daggerdbl /circumflex /perthousand /Scaron
/guilsinglleft /OE /.notdef /.notdef
/.notdef /.notdef /quoteleft /quoteright
/quotedblleft /quotedblright /bullet /endash
/emdash /tilde /trademark /scaron
/guilsinglright /oe /.notdef /.notdef
/Ydieresis /.notdef /exclamdown /cent
/sterling /currency /yen /brokenbar
/section /dieresis /copyright
/ordfeminine /guillemotleft /logicalnot
/hyphen /registered /macron /degree
/plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine
/guillemotright /onequarter /onehalf
/threequarters /questiondown /Agrave
/Aacute /Acircumflex /Atilde /Adieresis
/Aring /AE /Ccedilla /Egrave /Eacute
/Ecircumflex /Edieresis /Igrave /Iacute
/Icircumflex /Idieresis /Eth /Ntilde
/Ograve /Oacute /Ocircumflex /Otilde
/Odieresis /multiply /Oslash /Ugrave
/Uacute /Ucircumflex /Udieresis /Yacute
/Thorn /germandbls /agrave /aacute
/acircumflex /atilde /adieresis /aring
/ae /ccedilla /egrave /eacute
/ecircumflex /edieresis /igrave /iacute
/icircumflex /idieresis /eth /ntilde
/ograve /oacute /ocircumflex /otilde
/odieresis /divide /oslash /ugrave
/uacute /ucircumflex /udieresis /yacute
/thorn /ydieresis] def
end
/fntdict 100 dict def
/MwScaleAndSetFont
{
2 index findfont dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
dup EncodingDict exch known
{EncodingDict exch get /Encoding exch def} {pop} ifelse
currentdict end /font0 exch definefont
exch scalefont setfont pop
} def
/MwSetFont
{
% look in cache of scaled fonts
1 index /askedsize exch def
2 index /askedname exch def
fntdict askedname known
{ % font name found in cache - what about the size
/fntszdict fntdict askedname get def
fntszdict askedsize known
{
% font size found in cache
fntszdict askedsize get setfont pop pop pop
}
{
MwScaleAndSetFont
fntszdict askedsize currentfont put
}
ifelse
}
{ % not found in cache
MwScaleAndSetFont
/fntszdict 200 dict def
fntszdict askedsize currentfont put
fntdict askedname fntszdict put
}
ifelse
} def
%%EndResource
%%BeginResource: DisplayBB
/DisplayBB {gsave initgraphics 72 300 div 72 300 div scale 0 3300 translate
1 -1 scale 1 setlinewidth 1 0 0 setrgbcolor
/y2 exch def /x2 exch def /y1 exch def /x1 exch def
newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath
stroke grestore } def
%%EndResource
%%EndProlog
%%BeginSetup
[{
%%BeginFeature: *InputSlot AUTO
6 statusdict /setpapertray get exec
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *PageRegion LETTER
LETTER
%%EndFeature
} stopped cleartomark
%%EndSetup
%%Page:
%%BeginPageSetup
/ClockWise false def /LineJoin -1 def /MiterLimit -1 def /PolylineMode 1 def /LineCap 0 def
[0 0 0 0 0] UpdatePen
[0 255 255 255 0 <>] UpdateBrush
[0 0 0] UpdateTextColor
[255 255 255] UpdateBkColor
2 UpdateBkMode
0 0
% All the numbers (for positions, length or font size) given
% in this file are expressed in pixels, but interpreted by
% Postscript as points (1/72 inch)!
% -->so scale accordingly!
72 300 div 72 300 div scale
% So that (0, 0) is at top-left corner of paper sheet (takes postscript scaling into account too)
0 3300 translate
1 -1 scale
/Courier 38 0 MwSetFont
gstate /Mwgstate exch def
%%EndPageSetup:
Mwgstate setgstate newpath
16 16 2416 3054 RectanglePath
clip newpath
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
1054 536 1761 647 FillRectangle
1054 536 1761 647 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(G4NonEquilibriumEvaporator) 680 -0.00 1068 582 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[1 0 0 0 0 <>] UpdateBrush
1054 596 1761 647 FillRectangle
1054 596 1761 647 RectangleOutLine
1054 619 1761 647 FillRectangle
1054 619 1761 647 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
1782 72 2281 183 FillRectangle
1782 72 2281 183 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(G4ExitationHandler) 471 -0.00 1796 118 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[1 0 0 0 0 <>] UpdateBrush
1782 132 2281 183 FillRectangle
1782 132 2281 183 RectangleOutLine
1782 155 2281 183 FillRectangle
1782 155 2281 183 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
1127 130 1656 285 FillRectangle
1127 130 1656 285 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(G4VPreCompoundModel) 497 -0.00 1143 176 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[1 0 0 0 0 <>] UpdateBrush
1127 238 1656 285 FillRectangle
1127 238 1656 285 RectangleOutLine
1127 261 1656 285 FillRectangle
1127 261 1656 285 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(\(from Geant4\)) 340 -0.00 1222 227 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[1 0 0 0 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
[0 128 128 128 0 <>] UpdateBrush
pop pop 1719 166
1781 159 LineTo
pop pop 1781 159
1747 178 LineTo
pop pop 1781 159
1743 148 LineTo
[1 0 0 0 0 <>] UpdateBrush
[0 128 128 128 0 <>] UpdateBrush
pop pop 1719 166
1657 174 LineTo
[1 0 0 0 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[1 0 0 0 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
pop pop 1405 535
1395 286 LineTo
[0 255 255 255 0 <>] UpdateBrush
1375 347 1419 345 1395 286 3 Polygon
[1 0 0 0 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
1815 312 2312 423 FillRectangle
1815 312 2312 423 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
[0 1 0 0 0] UpdatePen
[0 0 0 0 0 <>] UpdateBrush
1 UpdateBkMode
[255 255 255] UpdateBkColor
(G4PreEqTransitions) 471 -0.00 1828 358 TextOut
[255 255 255] UpdateBkColor
2 UpdateBkMode
[0 192 192 192 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[1 0 0 0 0 <>] UpdateBrush
1815 372 2312 423 FillRectangle
1815 372 2312 423 RectangleOutLine
1815 395 2312 423 FillRectangle
1815 395 2312 423 RectangleOutLine
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 43 0 MwSetFont
/Courier 38 0 MwSetFont
[0 192 192 192 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
[1 0 0 0 0 <>] UpdateBrush
[0 1 128 128 128] UpdatePen
[0 128 128 128 0 <>] UpdateBrush
pop pop 1743 290
1657 270 LineTo
pop pop 1657 270
1695 263 LineTo
pop pop 1657 270
1689 293 LineTo
[1 0 0 0 0 <>] UpdateBrush
[0 128 128 128 0 <>] UpdateBrush
pop pop 1743 290
1829 311 LineTo
[1 0 0 0 0 <>] UpdateBrush
[0 255 255 255 0 <>] UpdateBrush
[0 0 0 0 0] UpdatePen
Mwgstate setgstate newpath
0 0 2432 3182 RectanglePath
clip newpath
/Courier 38 0 MwSetFont
pop pop 166 3054
766 3054 LineTo
/Courier 35 0 MwSetFont
/Courier 38 0 MwSetFont
/Courier 35 0 MwSetFont
(File: /afs/cern.ch/user/m/miheikki/public/html/inucl/doc/inucl.mdl Tue Jul 24 18:30:01 2001 Class ) 2188 -0.00 166 3089 TextOut
(Diagram: pre-equilibrium / Main Page 1) 821 -0.00 166 3126 TextOut
Mwgstate setgstate newpath
0 0 2432 3182 RectanglePath
clip newpath
/Courier 38 0 MwSetFont
/Courier 38 0 MwSetFont
pop pop % pop out coordinates for current pen position
showpage
end
% end of the MainWin EPS file
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -53,12 +53,12 @@ public:
private:
G4int verboseLevel;
G4std::vector< G4BertiniEvaporationChannel * > channelVector;
void fillResult( G4std::vector< G4DynamicParticle * > secondaryParticleVector,
std::vector< G4BertiniEvaporationChannel * > channelVector;
void fillResult( std::vector< G4DynamicParticle * > secondaryParticleVector,
G4FragmentVector * aResult );
void splitBe8( const G4double E,
const G4ThreeVector boost,
G4std::vector< G4DynamicParticle * > & secondaryParticleVector);
std::vector< G4DynamicParticle * > & secondaryParticleVector);
void isotropicCosines( G4double & u, G4double & v,G4double & w );
};
@@ -64,9 +64,9 @@ void G4BEChargedChannel::calculateProbability()
G4double levelParam = getLevelDensityParameter();
G4double s = 2 * sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) );
G4double constant = A / 2 * ( 2 * spin + 1 ) * ( 1 + coulombFactor() );
G4double eye1 = ( pow( s, 2 ) - 3 * s + 3 ) / ( 4 * pow( levelParam, 2 ) ) * exp( s );
G4double eye1 = ( pow( s, 2. ) - 3 * s + 3 ) / ( 4 * pow( levelParam, 2. ) ) * exp( s );
emissionProbability = constant * pow( residualA, 0.6666666 ) * eye1;
emissionProbability = constant * pow( G4double(residualA), 0.6666666 ) * eye1;
if ( verboseLevel >= 6 )
G4cout << "G4BEChargedChannel : calculateProbability for " << getName() << G4endl
@@ -100,8 +100,8 @@ G4double G4BEChargedChannel::sampleKineticEnergy()
// randExp2 = RandExponential::shoot( 1 );
// levelParam = getLevelDensityParameter();
// s = 2 * sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) );
// kineticEnergyAv = 2 * ( pow( s, 3 ) - 6.0 * pow( s, 2 ) + 15.0 * s - 15.0 ) /
// ( ( 2.0 * pow( s, 2 ) - 6.0 * s + 6.0 ) * levelParam );
// kineticEnergyAv = 2 * ( pow( s, 3. ) - 6.0 * pow( s, 2. ) + 15.0 * s - 15.0 ) /
// ( ( 2.0 * pow( s, 2. ) - 6.0 * s + 6.0 ) * levelParam );
// kineticEnergy = 0.5 * ( randExp1 + randExp2 ) * kineticEnergyAv + getThresh() - getQ();
@@ -75,12 +75,12 @@ void G4BENeutronChannel::calculateProbability()
const G4double levelParam = getLevelDensityParameter();
const G4double s = 2 * sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) );
const G4double temp = ( pow( s, 2 ) - 3 * s + 3 ) / ( 4 * pow( levelParam, 2 ) )
+ beta() * ( s - 1 ) / ( 2 * levelParam );
// const G4double temp = ( pow( s, 2. ) - 3 * s + 3 ) / ( 4 * pow( levelParam, 2. ) )
// + beta() * ( s - 1 ) / ( 2 * levelParam );
const G4double eye0 = exp( s ) * ( s - 1 ) / ( 2 * levelParam );
const G4double eye1 = ( pow( s, 2 ) - 3*s +3 ) * exp( s ) / ( 4 * pow( levelParam, 2 ) ) ;
const G4double eye1 = ( pow( s, 2. ) - 3*s +3 ) * exp( s ) / ( 4 * pow( levelParam, 2. ) ) ;
emissionProbability = pow( residualA, 0.666666 ) * alpha() * ( eye1 + beta() * eye0 );
emissionProbability = pow( G4double(residualA), 0.666666 ) * alpha() * ( eye1 + beta() * eye0 );
if ( verboseLevel >= 6 )
G4cout << "G4BENeutronChannel : calculateProbability " << G4endl
@@ -122,9 +122,9 @@ G4double G4BENeutronChannel::sampleKineticEnergy()
// levelParam = getLevelDensityParameter();
// s = 2 * sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) );
// eye0 = 0.5 * ( s - 1 ) * exp( s ) / levelParam;
// eye1 = ( pow( s, 2 ) - 3*s + 3 ) * exp( s ) / ( 4 * pow( levelParam, 2 ) );
// kineticEnergyAv = 2 * ( pow( s, 3 ) - 6.0 * pow( s, 2 ) + 15.0 * s - 15.0 ) /
// ( ( 2.0 * pow( s, 2 ) - 6.0 * s + 6.0 ) * levelParam );
// eye1 = ( pow( s, 2. ) - 3*s + 3 ) * exp( s ) / ( 4 * pow( levelParam, 2. ) );
// kineticEnergyAv = 2 * ( pow( s, 3. ) - 6.0 * pow( s, 2. ) + 15.0 * s - 15.0 ) /
// ( ( 2.0 * pow( s, 2. ) - 6.0 * s + 6.0 ) * levelParam );
// kineticEnergyAv = ( kineticEnergyAv + beta() ) / ( 1.0 + beta() * eye0
// / eye1 );
@@ -70,7 +70,7 @@ void G4BertiniEvaporation::setVerboseLevel( const G4int verbose )
verboseLevel = verbose;
// Update verbose level to all evaporation channels.
G4std::vector< G4BertiniEvaporationChannel * >::iterator iChannel = channelVector.begin();
std::vector< G4BertiniEvaporationChannel * >::iterator iChannel = channelVector.begin();
for ( ; iChannel != channelVector.end() ; *iChannel++ )
( *iChannel )->setVerboseLevel( verboseLevel );
}
@@ -89,7 +89,7 @@ G4FragmentVector * G4BertiniEvaporation::BreakItUp( G4LayeredNucleus & nucleus )
G4double mRes; // Mass of residual nucleus.
G4ThreeVector nucleusMomentumVector;
G4DynamicParticle *pEmittedParticle;
G4std::vector< G4DynamicParticle * > secondaryParticleVector;
std::vector< G4DynamicParticle * > secondaryParticleVector;
G4FragmentVector * result = new G4FragmentVector;
// Read properties of the nucleus.
@@ -115,7 +115,7 @@ G4FragmentVector * G4BertiniEvaporation::BreakItUp( G4LayeredNucleus & nucleus )
// Initialize evaporation channels and calculate sum of emission
// probabilities.
G4std::vector< G4BertiniEvaporationChannel * >::iterator iChannel = channelVector.begin();
std::vector< G4BertiniEvaporationChannel * >::iterator iChannel = channelVector.begin();
totalProbability = 0;
for ( ; iChannel != channelVector.end() ; *iChannel++ )
{
@@ -177,7 +177,7 @@ G4FragmentVector * G4BertiniEvaporation::BreakItUp( G4LayeredNucleus & nucleus )
const G4int zRes = nucleusZ - pSelectedChannel->getParticleZ();
const G4int aRes = nucleusA - pSelectedChannel->getParticleA();
const G4double eBind = G4NucleiProperties::GetBindingEnergy( aRes, zRes ); // Binding energy of the nucleus.
// const G4double eBind = G4NucleiProperties::GetBindingEnergy( aRes, zRes ); // Binding energy of the nucleus.
mRes = G4NucleiProperties::GetAtomicMass( aRes, zRes ); // Mass of the target nucleus
// In HETC88:
// eBind = Z * (-0.78244) + A * 8.36755 - cameron ( A , Z );
@@ -328,7 +328,7 @@ G4FragmentVector * G4BertiniEvaporation::BreakItUp( G4LayeredNucleus & nucleus )
void G4BertiniEvaporation::splitBe8( const G4double E,
const G4ThreeVector boostToLab,
G4std::vector< G4DynamicParticle * > & secondaryParticleVector )
std::vector< G4DynamicParticle * > & secondaryParticleVector )
{
G4double kineticEnergy;
G4double u;
@@ -376,7 +376,7 @@ void G4BertiniEvaporation::splitBe8( const G4double E,
}
void G4BertiniEvaporation::fillResult( G4std::vector<G4DynamicParticle *> secondaryParticleVector,
void G4BertiniEvaporation::fillResult( std::vector<G4DynamicParticle *> secondaryParticleVector,
G4FragmentVector * aResult )
{
// Fill the vector pParticleChange with secondary particles stored in vector.
@@ -159,7 +159,7 @@ G4double G4BertiniEvaporationChannel::getCoulomb()
// In HETC88 this factor was 0.88235, perhaps due to different r0
G4double coulomb = factor * particleZ * qmFactor() * residualZ /
( pow( residualA, 0.33333333 ) + rho ) * MeV;
( pow( G4double(residualA), 0.33333333 ) + rho ) * MeV;
if ( verboseLevel >= 10 )
G4cout << " G4BertiniEvaporationChannel::getThresh() " << G4endl
@@ -192,7 +192,7 @@ G4double G4BertiniEvaporationChannel::getLevelDensityParameter()
G4double y0 = 1.5;
G4double temp = ( residualA - 2.0 * residualZ ) / residualA;
G4double smallA = residualA * ( 1.0 + y0 * pow( temp, 2 ) ) / b0 / MeV;
G4double smallA = residualA * ( 1.0 + y0 * pow( temp, 2. ) ) / b0 / MeV;
// In HETC98 b0 = b0(E).
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.2 1999/11/24 14:14:59 miheikki Exp $
# $Id: GNUmakefile,v 1.3 2003/06/18 13:24:26 gcosmo Exp $
# -----------------------------------------------------------
# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96.
# -----------------------------------------------------------
@@ -11,8 +11,6 @@ endif
include $(G4INSTALL)/config/architecture.gmk
G4TMPDIR = $(G4TMP)/$(G4SYSTEM)/$(name)
CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/global/HEPRandom/include \
-I$(G4BASE)/global/HEPGeometry/include \
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PreEquilibrium.hh,v 1.9 2001/07/11 10:03:54 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PreEquilibrium.hh,v 1.10 2003/06/16 17:03:58 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// Hadronic Process: Pre-equilibrium HETC
// Joseph L. Chuma, TRIUMF, 24-Mar-2000
@@ -33,7 +33,7 @@
#include "globals.hh"
#include "G4DynamicParticle.hh"
#include "G4Nucleus.hh"
#include "g4std/vector"
#include <vector>
class G4PreEquilibrium
{
@@ -70,7 +70,7 @@
G4int ip4; // values from 0 to N
};
#define G4Vector G4std::vector
#define G4Vector std::vector
typedef G4Vector< G4DynamicParticle* > DPvector;
typedef G4Vector< G4double > Dvector;
typedef G4Vector< G4int > Ivector;
@@ -22,7 +22,7 @@
//
//
// $Id: G4PreEquilibrium.cc,v 1.9 2001/07/11 10:03:55 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// GEANT4 tag $Name: geant4-05-02 $
//
// Hadronic Process: Pre-equilibrium HETC
// Joseph L. Chuma, TRIUMF, 24-Mar-2000