source: trunk/source/processes/hadronic/util/src/G4HadFinalState.cc@ 1340

Last change on this file since 1340 was 819, checked in by garnier, 17 years ago

import all except CVS

File size: 4.3 KB
Line 
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#include "G4HadFinalState.hh"
27#include "G4HadronicException.hh"
28
29 G4HadFinalState::G4HadFinalState()
30 : theDirection(0,0,1), theEnergy(-1), theStat(isAlive),
31 theW(1.), theEDep(0.), hasStaleSecondaries(false){}
32
33 G4int G4HadFinalState::GetNumberOfSecondaries() {return theSecs.size();}
34
35 void G4HadFinalState::SetEnergyChange(G4double anEnergy)
36 {
37 theEnergy=anEnergy;
38 if(theEnergy<0)
39 {
40 std::cout << "Final state energy was: E = "<<theEnergy<<G4endl;
41 throw G4HadronicException(__FILE__, __LINE__, "G4HadFinalState: fatal - negative energy");
42 }
43 }
44
45 G4double G4HadFinalState::GetEnergyChange() {return theEnergy;}
46
47 void G4HadFinalState::SetMomentumChange(G4ThreeVector aV) {theDirection=aV;}
48
49 void G4HadFinalState::SetMomentumChange(G4double x, G4double y, G4double z)
50 {
51 theDirection = G4ThreeVector(x,y,z);
52 if(std::fabs(theDirection.mag()-1)>0.001)
53 {
54 G4cout <<"We have negative theDirection.mag() = "<<theDirection.mag()<<G4endl;
55 throw G4HadronicException(__FILE__, __LINE__, "G4HadFinalState: fatal - negative direction.mag().");
56 }
57 }
58
59 G4ThreeVector G4HadFinalState::GetMomentumChange() {return theDirection;}
60
61 void G4HadFinalState::AddSecondary(G4DynamicParticle * aP) {theSecs.push_back(new G4HadSecondary(aP));}
62
63 void G4HadFinalState::AddSecondary(G4HadSecondary * aP) {theSecs.push_back(aP);}
64
65 void G4HadFinalState::SetStatusChange(G4HadFinalStateStatus aS){theStat=aS;}
66
67 G4HadFinalStateStatus G4HadFinalState::GetStatusChange(){return theStat;}
68
69 void G4HadFinalState::ClearSecondaries()
70 {
71 theSecs.clear();
72 }
73
74 void G4HadFinalState::Clear()
75 {
76 theDirection = G4ThreeVector(0,0,1);
77 theEnergy = -1;
78 theStat = isAlive;
79 theW = 1.;
80 theEDep = 0.;
81 if(!hasStaleSecondaries)
82 {
83 for(size_t i=0; i<theSecs.size(); i++) delete theSecs[i];
84 }
85 theSecs.clear();
86 hasStaleSecondaries = false;
87 }
88
89 void G4HadFinalState::SecondariesAreStale() {hasStaleSecondaries = true;}
90
91 G4LorentzRotation & G4HadFinalState::GetTrafoToLab() {return theT;}
92
93 void G4HadFinalState::SetTrafoToLab(G4LorentzRotation & aT) {theT = aT;}
94
95 void G4HadFinalState::SetWeightChange(G4double aW){ theW=aW;}
96
97 G4double G4HadFinalState::GetWeightChange() {return theW;}
98
99 G4HadSecondary * G4HadFinalState::GetSecondary(size_t i)
100 {
101 if(i>theSecs.size())
102 {
103 throw G4HadronicException(__FILE__, __LINE__,
104 "Trying direct access to secondary beyond end of list");
105 }
106 return theSecs[i];
107 }
108
109 void G4HadFinalState::SetLocalEnergyDeposit(G4double aE) {theEDep=aE;}
110
111 G4double G4HadFinalState::GetLocalEnergyDeposit() {return theEDep;}
Note: See TracBrowser for help on using the repository browser.