File indexing completed on 2025-01-18 09:58:26
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #define INCLXX_IN_GEANT4_MODE 1
0035
0036 #include "globals.hh"
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047 #ifndef G4INCLEVENTINFO_HH_HH
0048 #define G4INCLEVENTINFO_HH_HH 1
0049
0050 #include "G4INCLParticleType.hh"
0051 #ifdef INCL_ROOT_USE
0052 #include <Rtypes.h>
0053 #endif
0054 #include <string>
0055 #include <vector>
0056 #include <algorithm>
0057
0058 namespace G4INCL {
0059 #ifndef INCL_ROOT_USE
0060 typedef G4int Int_t;
0061 typedef short Short_t;
0062 typedef G4float Float_t;
0063 typedef G4double Double_t;
0064 typedef G4bool Bool_t;
0065 #endif
0066
0067 struct EventInfo {
0068 EventInfo() :
0069 nParticles(0),
0070 event(0),
0071 eventBias((Float_t)0.0),
0072 nRemnants(0),
0073 projectileType(0),
0074 At(0),
0075 Zt(0),
0076 St(0),
0077 Ap(0),
0078 Zp(0),
0079 Sp(0),
0080 Ep((Float_t)0.0),
0081 impactParameter((Float_t)0.0),
0082 nCollisions(0),
0083 stoppingTime((Float_t)0.0),
0084 EBalance((Float_t)0.0),
0085 firstEBalance((Float_t)0.0),
0086 pLongBalance((Float_t)0.0),
0087 pTransBalance((Float_t)0.0),
0088 nCascadeParticles(0),
0089 transparent(false),
0090 annihilationP(false),
0091 annihilationN(false),
0092 forcedCompoundNucleus(false),
0093 nucleonAbsorption(false),
0094 pionAbsorption(false),
0095 nDecays(0),
0096 nSrcCollisions(0),
0097 nSrcPairs(0),
0098 nBlockedCollisions(0),
0099 nBlockedDecays(0),
0100 effectiveImpactParameter((Float_t)0.0),
0101 deltasInside(false),
0102 sigmasInside(false),
0103 kaonsInside(false),
0104 antikaonsInside(false),
0105 lambdasInside(false),
0106 forcedDeltasInside(false),
0107 forcedDeltasOutside(false),
0108 forcedPionResonancesOutside(false),
0109 absorbedStrangeParticle(false),
0110 forcedSigmaOutside(false),
0111 forcedStrangeInside(false),
0112 emitLambda(0),
0113 emitKaon(false),
0114 clusterDecay(false),
0115 firstCollisionTime((Float_t)0.0),
0116 firstCollisionXSec((Float_t)0.0),
0117 firstCollisionSpectatorPosition((Float_t)0.0),
0118 firstCollisionSpectatorMomentum((Float_t)0.0),
0119 firstCollisionIsElastic(false),
0120 nReflectionAvatars(0),
0121 nCollisionAvatars(0),
0122 nDecayAvatars(0),
0123 nUnmergedSpectators(0),
0124 nEnergyViolationInteraction(0)
0125
0126 {
0127 std::fill_n(A, maxSizeParticles, 0);
0128 std::fill_n(Z, maxSizeParticles, 0);
0129 std::fill_n(S, maxSizeParticles, 0);
0130 std::fill_n(J, maxSizeParticles, 0);
0131 std::fill_n(PDGCode, maxSizeParticles, 0);
0132 std::fill_n(ParticleBias, maxSizeParticles, (Float_t)0.0);
0133 std::fill_n(EKin, maxSizeParticles, (Float_t)0.0);
0134 std::fill_n(px, maxSizeParticles, (Float_t)0.0);
0135 std::fill_n(py, maxSizeParticles, (Float_t)0.0);
0136 std::fill_n(pz, maxSizeParticles, (Float_t)0.0);
0137 std::fill_n(theta, maxSizeParticles, (Float_t)0.0);
0138 std::fill_n(phi, maxSizeParticles, (Float_t)0.0);
0139 std::fill_n(origin, maxSizeParticles, 0);
0140 std::fill_n(parentResonancePDGCode, maxSizeParticles, 0);
0141 std::fill_n(parentResonanceID, maxSizeParticles, 0);
0142 std::fill_n(emissionTime, maxSizeParticles, (Float_t)0.0);
0143 std::fill_n(ARem, maxSizeRemnants, 0);
0144 std::fill_n(ZRem, maxSizeRemnants, 0);
0145 std::fill_n(SRem, maxSizeRemnants, 0);
0146 std::fill_n(EStarRem, maxSizeRemnants, (Float_t)0.0);
0147 std::fill_n(JRem, maxSizeRemnants, (Float_t)0.0);
0148 std::fill_n(EKinRem, maxSizeRemnants, (Float_t)0.0);
0149 std::fill_n(pxRem, maxSizeRemnants, (Float_t)0.0);
0150 std::fill_n(pyRem, maxSizeRemnants, (Float_t)0.0);
0151 std::fill_n(pzRem, maxSizeRemnants, (Float_t)0.0);
0152 std::fill_n(thetaRem, maxSizeRemnants, (Float_t)0.0);
0153 std::fill_n(phiRem, maxSizeRemnants, (Float_t)0.0);
0154 std::fill_n(jxRem, maxSizeRemnants, (Float_t)0.0);
0155 std::fill_n(jyRem, maxSizeRemnants, (Float_t)0.0);
0156 std::fill_n(jzRem, maxSizeRemnants, (Float_t)0.0);
0157 std::fill_n(EKinPrime, maxSizeParticles, (Float_t)0.0);
0158 std::fill_n(pzPrime, maxSizeParticles, (Float_t)0.0);
0159 std::fill_n(thetaPrime, maxSizeParticles, (Float_t)0.0);
0160 }
0161
0162
0163 static G4ThreadLocal Int_t eventNumber;
0164
0165
0166 static const Short_t maxSizeRemnants = 10;
0167
0168
0169 static const Short_t maxSizeParticles = 1000;
0170
0171
0172 Short_t nParticles;
0173
0174 Int_t event;
0175
0176 Short_t A[maxSizeParticles];
0177
0178 Short_t Z[maxSizeParticles];
0179
0180 Short_t S[maxSizeParticles];
0181
0182 Short_t J[maxSizeParticles];
0183
0184 Int_t PDGCode[maxSizeParticles];
0185
0186 Float_t eventBias;
0187
0188 Float_t ParticleBias[maxSizeParticles];
0189
0190 Float_t EKin[maxSizeParticles];
0191
0192 Float_t px[maxSizeParticles];
0193
0194 Float_t py[maxSizeParticles];
0195
0196 Float_t pz[maxSizeParticles];
0197
0198 Float_t theta[maxSizeParticles];
0199
0200 Float_t phi[maxSizeParticles];
0201
0202
0203
0204
0205 Short_t origin[maxSizeParticles];
0206
0207 Int_t parentResonancePDGCode[maxSizeParticles];
0208
0209 Int_t parentResonanceID[maxSizeParticles];
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228 std::vector<std::string> history;
0229
0230 Short_t nRemnants;
0231
0232 Int_t projectileType;
0233
0234 Short_t At;
0235
0236 Short_t Zt;
0237
0238 Short_t St;
0239
0240 Short_t Ap;
0241
0242 Short_t Zp;
0243
0244 Short_t Sp;
0245
0246 Float_t Ep;
0247
0248 Float_t impactParameter;
0249
0250 Int_t nCollisions;
0251
0252 Float_t stoppingTime;
0253
0254 Float_t EBalance;
0255
0256 Float_t firstEBalance;
0257
0258 Float_t pLongBalance;
0259
0260 Float_t pTransBalance;
0261
0262 Short_t nCascadeParticles;
0263
0264 Bool_t transparent;
0265
0266 Bool_t annihilationP;
0267
0268 Bool_t annihilationN;
0269
0270 Bool_t forcedCompoundNucleus;
0271
0272 Bool_t nucleonAbsorption;
0273
0274 Bool_t pionAbsorption;
0275
0276 Int_t nDecays;
0277
0278 Int_t nSrcCollisions;
0279
0280 Int_t nSrcPairs;
0281
0282 Int_t nBlockedCollisions;
0283
0284 Int_t nBlockedDecays;
0285
0286 Float_t effectiveImpactParameter;
0287
0288 Bool_t deltasInside;
0289
0290 Bool_t sigmasInside;
0291
0292 Bool_t kaonsInside;
0293
0294 Bool_t antikaonsInside;
0295
0296 Bool_t lambdasInside;
0297
0298 Bool_t forcedDeltasInside;
0299
0300 Bool_t forcedDeltasOutside;
0301
0302 Bool_t forcedPionResonancesOutside;
0303
0304 Bool_t absorbedStrangeParticle;
0305
0306 Bool_t forcedSigmaOutside;
0307
0308 Bool_t forcedStrangeInside;
0309
0310 Int_t emitLambda;
0311
0312 Bool_t emitKaon;
0313
0314 Bool_t clusterDecay;
0315
0316 Float_t firstCollisionTime;
0317
0318 Float_t firstCollisionXSec;
0319
0320 Float_t firstCollisionSpectatorPosition;
0321
0322 Float_t firstCollisionSpectatorMomentum;
0323
0324 Bool_t firstCollisionIsElastic;
0325
0326 Int_t nReflectionAvatars;
0327
0328 Int_t nCollisionAvatars;
0329
0330 Int_t nDecayAvatars;
0331
0332 Int_t nUnmergedSpectators;
0333
0334 Int_t nEnergyViolationInteraction;
0335
0336 Float_t emissionTime[maxSizeParticles];
0337
0338 Short_t ARem[maxSizeRemnants];
0339
0340 Short_t ZRem[maxSizeRemnants];
0341
0342 Short_t SRem[maxSizeRemnants];
0343
0344 Float_t EStarRem[maxSizeRemnants];
0345
0346 Float_t JRem[maxSizeRemnants];
0347
0348 Float_t EKinRem[maxSizeRemnants];
0349
0350 Float_t pxRem[maxSizeRemnants];
0351
0352 Float_t pyRem[maxSizeRemnants];
0353
0354 Float_t pzRem[maxSizeRemnants];
0355
0356 Float_t thetaRem[maxSizeRemnants];
0357
0358 Float_t phiRem[maxSizeRemnants];
0359
0360 Float_t jxRem[maxSizeRemnants];
0361
0362 Float_t jyRem[maxSizeRemnants];
0363
0364 Float_t jzRem[maxSizeRemnants];
0365
0366 Float_t EKinPrime[maxSizeParticles];
0367
0368 Float_t pzPrime[maxSizeParticles];
0369
0370 Float_t thetaPrime[maxSizeParticles];
0371
0372
0373 void reset() {
0374 nParticles = 0;
0375 event = 0;
0376 eventBias = (Float_t)0.0;
0377 history.clear();
0378 nRemnants = 0;
0379 projectileType = 0;
0380 At = 0;
0381 Zt = 0;
0382 St = 0;
0383 Ap = 0;
0384 Zp = 0;
0385 Sp = 0;
0386 Ep = (Float_t)0.0;
0387 impactParameter = (Float_t)0.0;
0388 nCollisions = 0;
0389 stoppingTime = (Float_t)0.0;
0390 EBalance = (Float_t)0.0;
0391 firstEBalance = (Float_t)0.0;
0392 pLongBalance = (Float_t)0.0;
0393 pTransBalance = (Float_t)0.0;
0394 nCascadeParticles = 0;
0395 transparent = false;
0396 annihilationP = false;
0397 annihilationN = false;
0398 forcedCompoundNucleus = false;
0399 nucleonAbsorption = false;
0400 pionAbsorption = false;
0401 nDecays = 0;
0402 nSrcCollisions = 0;
0403 nSrcPairs = 0;
0404 nBlockedCollisions = 0;
0405 nBlockedDecays = 0;
0406 effectiveImpactParameter = (Float_t)0.0;
0407 deltasInside = false;
0408 sigmasInside = false;
0409 kaonsInside = false;
0410 antikaonsInside = false;
0411 lambdasInside = false;
0412 forcedDeltasInside = false;
0413 forcedDeltasOutside = false;
0414 forcedPionResonancesOutside = false;
0415 absorbedStrangeParticle = false;
0416 forcedSigmaOutside = false;
0417 forcedStrangeInside = false;
0418 emitLambda = 0;
0419 emitKaon = false;
0420 clusterDecay = false;
0421 firstCollisionTime = (Float_t)0.0;
0422 firstCollisionXSec = (Float_t)0.0;
0423 firstCollisionSpectatorPosition = (Float_t)0.0;
0424 firstCollisionSpectatorMomentum = (Float_t)0.0;
0425 firstCollisionIsElastic = false;
0426 nReflectionAvatars = 0;
0427 nCollisionAvatars = 0;
0428 nDecayAvatars = 0;
0429 nUnmergedSpectators = 0;
0430 nEnergyViolationInteraction = 0;
0431
0432 }
0433
0434
0435 void remnantToParticle(const G4int remnantIndex);
0436
0437
0438 void fillInverseKinematics(const Double_t gamma);
0439 };
0440 }
0441
0442 #endif