Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4INCLEventInfo.hh
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 // INCL++ intra-nuclear cascade model
27 // Pekka Kaitaniemi, CEA and Helsinki Institute of Physics
28 // Davide Mancusi, CEA
29 // Alain Boudard, CEA
30 // Sylvie Leray, CEA
31 // Joseph Cugnon, University of Liege
32 //
33 #define INCLXX_IN_GEANT4_MODE 1
34 
35 #include "globals.hh"
36 
46 #ifndef G4INCLEVENTINFO_HH
47 #define G4INCLEVENTINFO_HH 1
48 
49 #include "G4INCLParticleType.hh"
50 #ifdef INCL_ROOT_USE
51 #include <Rtypes.h>
52 #endif
53 #include <string>
54 #include <vector>
55 #include <algorithm>
56 
57 namespace G4INCL {
58 #ifndef INCL_ROOT_USE
59  typedef G4int Int_t;
60  typedef short Short_t;
61  typedef G4float Float_t;
62  typedef G4double Double_t;
63  typedef G4bool Bool_t;
64 #endif
65 
66  struct EventInfo {
69  At(0), Zt(0), Ap(0), Zp(0),
70  Ep(0.),
72  EBalance(0.0), pLongBalance(0.0), pTransBalance(0.0),
74  transparent(true),
75  forcedCompoundNucleus(false),
76  nucleonAbsorption(false), pionAbsorption(false), nDecays(0),
79  deltasInside(false),
80  forcedDeltasInside(false),
81  forcedDeltasOutside(false),
82  clusterDecay(false),
87  nDecayAvatars(0),
89  {
90  std::fill_n(ARem, maxSizeRemnants, 0);
91  std::fill_n(ZRem, maxSizeRemnants, 0);
92  std::fill_n(EStarRem, maxSizeRemnants, ((Float_t)0.));
93  std::fill_n(JRem, maxSizeRemnants, ((Float_t)0.));
94  std::fill_n(EKinRem, maxSizeRemnants, ((Float_t)0.));
95  std::fill_n(pxRem, maxSizeRemnants, ((Float_t)0.));
96  std::fill_n(pyRem, maxSizeRemnants, ((Float_t)0.));
97  std::fill_n(pzRem, maxSizeRemnants, ((Float_t)0.));
98  std::fill_n(thetaRem, maxSizeRemnants, ((Float_t)0.));
99  std::fill_n(phiRem, maxSizeRemnants, ((Float_t)0.));
100  std::fill_n(jxRem, maxSizeRemnants, ((Float_t)0.));
101  std::fill_n(jyRem, maxSizeRemnants, ((Float_t)0.));
102  std::fill_n(jzRem, maxSizeRemnants, ((Float_t)0.));
103 
104  std::fill_n(A, maxSizeParticles, 0);
105  std::fill_n(Z, maxSizeParticles, 0);
106  std::fill_n(emissionTime, maxSizeParticles, ((Float_t)0.));
107  std::fill_n(EKin, maxSizeParticles, ((Float_t)0.));
108  std::fill_n(px, maxSizeParticles, ((Float_t)0.));
109  std::fill_n(py, maxSizeParticles, ((Float_t)0.));
110  std::fill_n(pz, maxSizeParticles, ((Float_t)0.));
111  std::fill_n(theta, maxSizeParticles, ((Float_t)0.));
112  std::fill_n(phi, maxSizeParticles, ((Float_t)0.));
113  std::fill_n(origin, maxSizeParticles, 0);
114  };
115 
117  static Int_t eventNumber;
120 
125 
132 
139 
146 
153 
171 
180 
185 
191 
194 
196  static const Short_t maxSizeRemnants = 10;
223 
225  static const Short_t maxSizeParticles = 1000;
270  std::vector<std::string> history;
271 
272 #ifdef INCL_INVERSE_KINEMATICS
273 
274  Float_t EKinPrime[maxSizeParticles];
276  Float_t pzPrime[maxSizeParticles];
278  Float_t thetaPrime[maxSizeParticles];
279 #endif // INCL_INVERSE_KINEMATICS
280 
282  void reset() {
283  Ap = 0;
284  Zp = 0;
285  At = 0;
286  Zt = 0;
287  impactParameter = 0.0;
289  stoppingTime = 0.0;
290  EBalance = 0.0;
291  pLongBalance = 0.0;
292  pTransBalance = 0.0;
293  nCollisions = 0;
294  nBlockedCollisions = 0;
295  nDecays = 0;
296  nBlockedDecays= 0;
297  nDecays = 0;
298  nCascadeParticles = 0;
299  nRemnants = 0;
300  nParticles = 0;
301  transparent = true;
302  forcedCompoundNucleus = false;
303  nucleonAbsorption = false;
304  pionAbsorption = false;
305  forcedDeltasInside = false;
306  forcedDeltasOutside = false;
307  deltasInside = false;
308  clusterDecay = false;
310  }
311 
312 #ifdef INCL_INVERSE_KINEMATICS
313  void fillInverseKinematics(const Double_t gamma);
314 #endif // INCL_INVERSE_KINEMATICS
315  };
316 }
317 
318 #endif /* G4INCLEVENTINFO_HH */