Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4TextPPReporter.cc
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 // the GEANT4 collaboration.
27 //
28 // By copying, distributing or modifying the Program (or any work
29 // based on the Program) you indicate your acceptance of this statement,
30 // and all its terms.
31 //
32 // $Id: G4TextPPReporter.cc 67971 2013-03-13 10:13:24Z gcosmo $
33 //
34 //
35 // ---------------------------------------------------------------
36 #include "G4TextPPReporter.hh"
37 #include "G4ios.hh"
38 #include "globals.hh"
39 #include "G4SystemOfUnits.hh"
40 #include "G4ParticleTable.hh"
41 #include "G4ParticleDefinition.hh"
42 #include "G4DecayTable.hh"
43 #include "G4VDecayChannel.hh"
44 #include "G4Tokenizer.hh"
45 #include <iomanip>
46 #include <fstream>
47 
50 {
51 }
52 
55 {
56 }
57 
59 void G4TextPPReporter::Print(const G4String& option)
60 {
61  SparseOption( option );
62 
63  for (size_t i=0; i< pList.size(); i++){
64  G4ParticleDefinition* particle = G4ParticleTable::GetParticleTable()->FindParticle( pList[i]->GetParticleName() );
65 
66  GeneratePropertyTable(particle);
67  }
68 }
69 
70 
72 {
73  G4Tokenizer savedToken( option );
74 
75  // 1st option : base directory
76  baseDir = savedToken();
77  if (!baseDir.isNull()) {
78  if(baseDir(baseDir.length()-1)!='/') {
79  baseDir += "/";
80  }
81  }
82 }
83 
84 
85 
87 {
88  G4String name = particle->GetParticleName();
89 
90  //--- open file -----
91  G4String fileName = baseDir + name + ".txt";
92  // exception
93  if (name == "J/psi") fileName = baseDir +"jpsi.txt";
94 
95  std::ofstream outFile(fileName, std::ios::out );
96  outFile.setf( std::ios:: scientific, std::ios::floatfield );
97  outFile << std::setprecision(7) << G4endl;
98 
99  // particle name encoding
100  outFile << name << " "
101  << particle->GetPDGEncoding() << G4endl;
102 
103  // IJPC
104  outFile << particle->GetPDGiIsospin() << " "
105  << particle->GetPDGiSpin() << " "
106  << particle->GetPDGiParity() << " "
107  << particle->GetPDGiConjugation() << G4endl;
108 
109  // mass, width, charge
110  outFile << particle->GetPDGMass()/GeV << " "
111  << particle->GetPDGWidth()/GeV << " "
112  << particle->GetPDGCharge()/eplus << G4endl;
113 
114  // life time
115  outFile << particle->GetPDGLifeTime()/second << G4endl;
116 
117 // Decay Table
118  G4DecayTable* dcyTable = particle->GetDecayTable();
119  if (dcyTable != 0) {
120  for (G4int i=0; i< dcyTable->entries(); i++){
121  G4VDecayChannel * channel = dcyTable->GetDecayChannel(i);
122  // column 1 : BR
123  outFile << channel->GetBR() << " ";
124  // column 2. : daughters
125  outFile << channel->GetNumberOfDaughters() << " ";
126  // column 3 : Kinematics
127  outFile << channel->GetKinematicsName() << " ";
128  // daughters
129  for (G4int j=0; j< channel->GetNumberOfDaughters(); j++){
130  outFile << channel->GetDaughter(j)->GetParticleName() << " ";
131  }
132  outFile << G4endl;
133  }
134  }
135 }
136 
137 
138 
139 
140 
virtual ~G4TextPPReporter()
const XML_Char * name
Definition: expat.h:151
G4double GetBR() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4int GetNumberOfDaughters() const
void GeneratePropertyTable(const G4ParticleDefinition *)
G4ParticleDefinition * GetDaughter(G4int anIndex)
const G4String & GetKinematicsName() const
G4VDecayChannel * GetDecayChannel(G4int index) const
static constexpr double second
Definition: G4SIunits.hh:157
int G4int
Definition: G4Types.hh:78
const G4String & GetParticleName() const
void SparseOption(const G4String &option)
G4int entries() const
G4DecayTable * GetDecayTable() const
G4double GetPDGWidth() const
virtual void Print(const G4String &option="")
static constexpr double eplus
Definition: G4SIunits.hh:199
G4int GetPDGiConjugation() const
G4double GetPDGMass() const
static G4ParticleTable * GetParticleTable()
static constexpr double GeV
Definition: G4SIunits.hh:217
G4double GetPDGLifeTime() const
#define G4endl
Definition: G4ios.hh:61
G4double GetPDGCharge() const
G4bool isNull() const