00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #define INCLXX_IN_GEANT4_MODE 1
00034
00035 #include "globals.hh"
00036
00046 #ifndef G4INCLEVENTINFO_HH
00047 #define G4INCLEVENTINFO_HH 1
00048
00049 #include "G4INCLParticleType.hh"
00050 #ifdef INCL_ROOT_USE
00051 #include <Rtypes.h>
00052 #endif
00053 #include <string>
00054 #include <vector>
00055 #include <algorithm>
00056
00057 namespace G4INCL {
00058 #ifndef INCL_ROOT_USE
00059 typedef G4int Int_t;
00060 typedef short Short_t;
00061 typedef G4float Float_t;
00062 typedef G4double Double_t;
00063 typedef G4bool Bool_t;
00064 #endif
00065
00066 struct EventInfo {
00067 EventInfo() :
00068 projectileType(UnknownParticle),
00069 At(0), Zt(0), Ap(0), Zp(0),
00070 Ep(0.),
00071 impactParameter(0.0), nCollisions(0), stoppingTime(0.0),
00072 EBalance(0.0), pLongBalance(0.0), pTransBalance(0.0),
00073 nCascadeParticles(0), nRemnants(0), nParticles(0),
00074 transparent(true),
00075 forcedCompoundNucleus(false),
00076 nucleonAbsorption(false), pionAbsorption(false), nDecays(0),
00077 nBlockedCollisions(0), nBlockedDecays(0),
00078 effectiveImpactParameter(0.0),
00079 deltasInside(false),
00080 forcedDeltasInside(false),
00081 forcedDeltasOutside(false),
00082 clusterDecay(false),
00083 firstCollisionTime(0.),
00084 firstCollisionXSec(0.),
00085 nReflectionAvatars(0),
00086 nCollisionAvatars(0),
00087 nDecayAvatars(0),
00088 nUnmergedSpectators(0)
00089 {
00090 std::fill_n(ARem, maxSizeRemnants, 0);
00091 std::fill_n(ZRem, maxSizeRemnants, 0);
00092 std::fill_n(EStarRem, maxSizeRemnants, ((Float_t)0.));
00093 std::fill_n(JRem, maxSizeRemnants, ((Float_t)0.));
00094 std::fill_n(EKinRem, maxSizeRemnants, ((Float_t)0.));
00095 std::fill_n(pxRem, maxSizeRemnants, ((Float_t)0.));
00096 std::fill_n(pyRem, maxSizeRemnants, ((Float_t)0.));
00097 std::fill_n(pzRem, maxSizeRemnants, ((Float_t)0.));
00098 std::fill_n(thetaRem, maxSizeRemnants, ((Float_t)0.));
00099 std::fill_n(phiRem, maxSizeRemnants, ((Float_t)0.));
00100 std::fill_n(jxRem, maxSizeRemnants, ((Float_t)0.));
00101 std::fill_n(jyRem, maxSizeRemnants, ((Float_t)0.));
00102 std::fill_n(jzRem, maxSizeRemnants, ((Float_t)0.));
00103
00104 std::fill_n(A, maxSizeParticles, 0);
00105 std::fill_n(Z, maxSizeParticles, 0);
00106 std::fill_n(emissionTime, maxSizeParticles, ((Float_t)0.));
00107 std::fill_n(EKin, maxSizeParticles, ((Float_t)0.));
00108 std::fill_n(px, maxSizeParticles, ((Float_t)0.));
00109 std::fill_n(py, maxSizeParticles, ((Float_t)0.));
00110 std::fill_n(pz, maxSizeParticles, ((Float_t)0.));
00111 std::fill_n(theta, maxSizeParticles, ((Float_t)0.));
00112 std::fill_n(phi, maxSizeParticles, ((Float_t)0.));
00113 std::fill_n(origin, maxSizeParticles, 0);
00114 };
00115
00117 static Int_t eventNumber;
00119 ParticleType projectileType;
00120
00122 Short_t At;
00124 Short_t Zt;
00125
00127 Short_t Ap;
00129 Short_t Zp;
00131 Float_t Ep;
00132
00134 Float_t impactParameter;
00136 Int_t nCollisions;
00138 Float_t stoppingTime;
00139
00141 Float_t EBalance;
00143 Float_t pLongBalance;
00145 Float_t pTransBalance;
00146
00148 Short_t nCascadeParticles;
00150 Int_t nRemnants;
00152 Int_t nParticles;
00153
00155 Bool_t transparent;
00157 Bool_t forcedCompoundNucleus;
00159 Bool_t nucleonAbsorption;
00161 Bool_t pionAbsorption;
00163 Int_t nDecays;
00165 Int_t nBlockedCollisions;
00167 Int_t nBlockedDecays;
00170 Float_t effectiveImpactParameter;
00171
00173 Bool_t deltasInside;
00175 Bool_t forcedDeltasInside;
00177 Bool_t forcedDeltasOutside;
00179 Bool_t clusterDecay;
00180
00182 Float_t firstCollisionTime;
00184 Float_t firstCollisionXSec;
00185
00186 Int_t nReflectionAvatars;
00188 Int_t nCollisionAvatars;
00190 Int_t nDecayAvatars;
00191
00193 Int_t nUnmergedSpectators;
00194
00196 static const Short_t maxSizeRemnants = 10;
00198 Short_t ARem[maxSizeRemnants];
00200 Short_t ZRem[maxSizeRemnants];
00202 Float_t EStarRem[maxSizeRemnants];
00204 Float_t JRem[maxSizeRemnants];
00206 Float_t EKinRem[maxSizeRemnants];
00208 Float_t pxRem[maxSizeRemnants];
00210 Float_t pyRem[maxSizeRemnants];
00212 Float_t pzRem[maxSizeRemnants];
00214 Float_t thetaRem[maxSizeRemnants];
00216 Float_t phiRem[maxSizeRemnants];
00218 Float_t jxRem[maxSizeRemnants];
00220 Float_t jyRem[maxSizeRemnants];
00222 Float_t jzRem[maxSizeRemnants];
00223
00225 static const Short_t maxSizeParticles = 1000;
00227 Short_t A[maxSizeParticles];
00229 Short_t Z[maxSizeParticles];
00231 Float_t emissionTime[maxSizeParticles];
00233 Float_t EKin[maxSizeParticles];
00235 Float_t px[maxSizeParticles];
00237 Float_t py[maxSizeParticles];
00239 Float_t pz[maxSizeParticles];
00241 Float_t theta[maxSizeParticles];
00243 Float_t phi[maxSizeParticles];
00250 Short_t origin[maxSizeParticles];
00270 std::vector<std::string> history;
00271
00272 #ifdef INCL_INVERSE_KINEMATICS
00273
00274 Float_t EKinPrime[maxSizeParticles];
00276 Float_t pzPrime[maxSizeParticles];
00278 Float_t thetaPrime[maxSizeParticles];
00279 #endif // INCL_INVERSE_KINEMATICS
00280
00282 void reset() {
00283 Ap = 0;
00284 Zp = 0;
00285 At = 0;
00286 Zt = 0;
00287 impactParameter = 0.0;
00288 effectiveImpactParameter = 0.0;
00289 stoppingTime = 0.0;
00290 EBalance = 0.0;
00291 pLongBalance = 0.0;
00292 pTransBalance = 0.0;
00293 nCollisions = 0;
00294 nBlockedCollisions = 0;
00295 nDecays = 0;
00296 nBlockedDecays= 0;
00297 nDecays = 0;
00298 nCascadeParticles = 0;
00299 nRemnants = 0;
00300 nParticles = 0;
00301 transparent = true;
00302 forcedCompoundNucleus = false;
00303 nucleonAbsorption = false;
00304 pionAbsorption = false;
00305 forcedDeltasInside = false;
00306 forcedDeltasOutside = false;
00307 deltasInside = false;
00308 clusterDecay = false;
00309 nUnmergedSpectators = 0;
00310 }
00311
00312 #ifdef INCL_INVERSE_KINEMATICS
00313 void fillInverseKinematics(const Double_t gamma);
00314 #endif // INCL_INVERSE_KINEMATICS
00315 };
00316 }
00317
00318 #endif