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

Last change on this file since 1250 was 819, checked in by garnier, 16 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.