Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/STCyclotron/include/STCyclotronRun.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 //  Author: F. Poignant, floriane.poignant@gmail.com
 27 //
 28 // file STCyclotronRun.hh
 29 #ifndef STCyclotronRun_h
 30 #define STCyclotronRun_h 1
 31 
 32 #include "G4Run.hh"
 33 #include "globals.hh"
 34 #include <map>
 35 #include <fstream>
 36 
 37 /// Run class
 38 ///
 39 /// In RecordEvent() there is collected information event per event 
 40 /// from Hits Collections, and accumulated statistic for the run 
 41 
 42 class STCyclotronRun : public G4Run
 43 {
 44   public:
 45 
 46   STCyclotronRun();
 47   virtual ~STCyclotronRun();
 48   
 49   virtual void Merge(const G4Run*);
 50   virtual void EndOfRun(G4double);
 51     
 52   public:
 53 
 54   //Accumulation functions
 55   void EnergyDepositionTarget(G4double);
 56   void EnergyDepositionFoil(G4double);
 57   void CountParticlesTarget();
 58 
 59   //Setting functions
 60   //parameters for the geometry
 61   //---> Target
 62   void SetTargetVolume(G4double);
 63   void SetTargetDiameter(G4double);
 64   void SetTargetThickness(G4double);
 65   //--->Foil
 66   void SetFoilVolume(G4double);
 67   void SetFoilThickness(G4double);
 68 
 69   //parameters for the beam
 70   void SetIrradiationTime(G4double);
 71   void SetBeamName(G4String);
 72   void SetBeamEnergy(G4double);
 73   void SetBeamCurrent(G4double);
 74   
 75   //parameters of the run
 76   void SetPrimariesPerEvent(G4int);
 77   void SetTimePerEvent(G4double);
 78   
 79   void StoreIsotopeID(G4int, G4String);
 80   std::map<G4int, G4String> GetIsotopeID();
 81   void ParticleParent(G4String,G4String);
 82 
 83   //Acumulation functions for maps
 84   //---->Accumulation of isotopes
 85   void PrimaryIsotopeCountTarget(G4String, G4double);
 86   void CountStableIsotopes(G4String);
 87   void DecayIsotopeCountTarget(G4String, G4String, G4double);
 88 
 89   //---->Accumulation of other particles
 90   void ParticleCountTarget(G4String);
 91 
 92   
 93   private:
 94 
 95   //Accumulable variables
 96   G4double fTotalEnergyDepositTarget;
 97   G4double fTotalEnergyDepositFoil;
 98   G4int fParticleTarget;
 99 
100   //Store Isotopes created inside maps during the run
101   std::map<G4String,G4int>    fPrimaryIsotopeCountTarget;  
102   std::map<G4String,G4double> fPrimaryIsotopeTimeTarget;
103   std::map<G4String,G4int>    fParticleCountTarget;
104   std::map<G4String,G4double> fDecayIsotopeTimeTarget;
105   std::map<G4String,G4String> fDecayIsotopeCountTarget;
106   std::map<G4String,G4String> fParticleParent;
107   std::map<G4String,G4int>    fStableIsotopeCountTarget;
108   std::map<G4String,G4String> fStableIsotopeMumTarget;
109 
110   //Stored and used during the run
111   std::map<G4int,G4String>    fIsotopeIDTarget;
112 
113 
114   //Parameters that may be modified via messenger classes
115  
116   //--> geometry
117   G4double fTargetThickness;
118   G4double fTargetDiameter;
119   G4double fFoilThickness;
120   G4double fTargetVolume;
121   G4double fFoilVolume;
122   //---> run
123   G4int fPrimariesPerEvent;
124   G4double fTimePerEvent;
125   //--> beam
126   G4String fBeamName;
127   G4double fBeamCurrent;
128   G4double fBeamEnergy;
129   
130   //Write output in ASCII
131   std::ofstream fOutPut;
132   std::ofstream fOutPut1;
133   std::ofstream fOutPut2;
134   std::ofstream fOutPut3;
135   std::ofstream fOutPut4;
136   
137 
138 };
139 
140 #endif
141 
142     
143