Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/eventgenerator/HepMC/HepMCEx01/src/HepMCG4PythiaMessenger.cc

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 ]

Diff markup

Differences between /examples/extended/eventgenerator/HepMC/HepMCEx01/src/HepMCG4PythiaMessenger.cc (Version 11.3.0) and /examples/extended/eventgenerator/HepMC/HepMCEx01/src/HepMCG4PythiaMessenger.cc (Version 3.1)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 /// \file eventgenerator/HepMC/HepMCEx01/src/H    
 27 /// \brief Implementation of the HepMCG4Pythia    
 28 //                                                
 29 //                                                
 30                                                   
 31 #ifdef G4LIB_USE_PYTHIA                           
 32                                                   
 33 #  include "HepMCG4PythiaMessenger.hh"            
 34                                                   
 35 #  include "HepMCG4PythiaInterface.hh"            
 36                                                   
 37 #  include "G4UIcmdWithAString.hh"                
 38 #  include "G4UIcmdWithAnInteger.hh"              
 39 #  include "G4UIcmdWithoutParameter.hh"           
 40 #  include "G4UIdirectory.hh"                     
 41                                                   
 42 #  include <fstream>                              
 43 #  include <sstream>                              
 44                                                   
 45 //....oooOO0OOooo........oooOO0OOooo........oo    
 46 HepMCG4PythiaMessenger::HepMCG4PythiaMessenger    
 47 {                                                 
 48   dir = new G4UIdirectory("/generator/pythia/"    
 49   dir->SetGuidance("Commands for Pythia event     
 50                                                   
 51   verbose = new G4UIcmdWithAnInteger("/generat    
 52   verbose->SetGuidance("set verbose level");      
 53   verbose->SetParameterName("verboseLevel", fa    
 54   verbose->SetRange("verboseLevel>=0 && verbos    
 55                                                   
 56   mpylist = new G4UIcmdWithAnInteger("/generat    
 57   mpylist->SetGuidance("set argument of pylist    
 58   mpylist->SetParameterName("mlist", false, fa    
 59   mpylist->SetRange("mlist>=0 && mlist<=3");      
 60                                                   
 61   print = new G4UIcmdWithoutParameter("/genera    
 62   print->SetGuidance("print user information."    
 63                                                   
 64   cpyinit = new G4UIcommand("/generator/pythia    
 65   cpyinit->SetGuidance("call PYINIT");            
 66   G4UIparameter* frame = new G4UIparameter("fr    
 67   cpyinit->SetParameter(frame);                   
 68   G4UIparameter* beam = new G4UIparameter("bea    
 69   cpyinit->SetParameter(beam);                    
 70   G4UIparameter* target = new G4UIparameter("t    
 71   cpyinit->SetParameter(target);                  
 72   G4UIparameter* win = new G4UIparameter("ener    
 73   cpyinit->SetParameter(win);                     
 74                                                   
 75   cpystat = new G4UIcmdWithAnInteger("/generat    
 76   cpystat->SetGuidance("call PYSTAT");            
 77   cpystat->SetParameterName("mstat", false, fa    
 78   cpystat->SetRange("mstat>=1 && mstat<=5");      
 79                                                   
 80   cpygive = new G4UIcommand("/generator/pythia    
 81   cpygive->SetGuidance("call PYGIVE");            
 82   G4UIparameter* parameter = new G4UIparameter    
 83   cpygive->SetParameter(parameter);               
 84                                                   
 85   setUserParameters = new G4UIcmdWithoutParame    
 86   setUserParameters->SetGuidance("Set user par    
 87                                                   
 88   setSeed = new G4UIcmdWithAnInteger("/generat    
 89   setSeed->SetGuidance("set initial seed.");      
 90                                                   
 91   cpyrget = new G4UIcommand("/generator/pythia    
 92   cpyrget->SetGuidance("call PYRGET");            
 93   G4UIparameter *lun, *move;                      
 94   lun = new G4UIparameter("logical file number    
 95   cpyrget->SetParameter(lun);                     
 96   move = new G4UIparameter("choice of adding a    
 97   move->SetDefaultValue(-1);                      
 98   cpyrget->SetParameter(move);                    
 99                                                   
100   cpyrset = new G4UIcommand("/generator/pythia    
101   cpyrset->SetGuidance("call PYRSET");            
102   lun = new G4UIparameter("logical file number    
103   cpyrset->SetParameter(lun);                     
104   move = new G4UIparameter("choice of adding a    
105   move->SetDefaultValue(0);                       
106   cpyrset->SetParameter(move);                    
107                                                   
108   printRandomStatus = new G4UIcmdWithAString("    
109   printRandomStatus->SetGuidance("print random    
110   printRandomStatus->SetParameterName("filenam    
111   printRandomStatus->SetDefaultValue("std::cou    
112 }                                                 
113                                                   
114 //....oooOO0OOooo........oooOO0OOooo........oo    
115 HepMCG4PythiaMessenger::~HepMCG4PythiaMessenge    
116 {                                                 
117   delete verbose;                                 
118   delete mpylist;                                 
119   delete print;                                   
120   delete cpyinit;                                 
121   delete cpystat;                                 
122   delete cpygive;                                 
123   delete setUserParameters;                       
124   delete setSeed;                                 
125   delete cpyrget;                                 
126   delete cpyrset;                                 
127   delete printRandomStatus;                       
128                                                   
129   delete dir;                                     
130 }                                                 
131                                                   
132 //....oooOO0OOooo........oooOO0OOooo........oo    
133 void HepMCG4PythiaMessenger::SetNewValue(G4UIc    
134 {                                                 
135   if (command == verbose) {  // /verbose ...      
136     G4int level = verbose->GetNewIntValue(newV    
137     gen->SetVerboseLevel(level);                  
138   }                                               
139   else if (command == mpylist) {  // /mpylist     
140     G4int mlist = mpylist->GetNewIntValue(newV    
141     gen->SetPylist(mlist);                        
142   }                                               
143   else if (command == print) {  // /print ...     
144     gen->Print();                                 
145   }                                               
146   else if (command == cpyinit) {  // /pyinit .    
147     const char* strvaluelist = newValues.c_str    
148     std::istringstream is(strvaluelist);          
149     G4String sframe, sbeam, starget;              
150     G4double dwin;                                
151     is >> sframe >> sbeam >> starget >> dwin;     
152     gen->CallPyinit(sframe, sbeam, starget, dw    
153   }                                               
154   else if (command == cpystat) {  // /pystat .    
155     G4int imod = cpystat->GetNewIntValue(newVa    
156     gen->CallPystat(imod);                        
157   }                                               
158   else if (command == cpygive) {  // /pygive .    
159     G4String s = newValues;                       
160     gen->CallPygive(s);                           
161   }                                               
162   else if (command == setUserParameters) {  //    
163     gen->SetUserParameters();                     
164   }                                               
165   else if (command == setSeed) {  // /setSeed     
166     G4int iseed = setSeed->GetNewIntValue(newV    
167     gen->SetRandomSeed(iseed);                    
168   }                                               
169   else if (command == cpyrget) {  // /pyrget .    
170     const char* strvaluelist = newValues.c_str    
171     std::istringstream is(strvaluelist);          
172     G4int lun, move;                              
173     is >> lun >> move;                            
174     gen->CallPyrget(lun, move);                   
175   }                                               
176   else if (command == cpyrset) {  // /pyrset .    
177     const char* strvaluelist = newValues.c_str    
178     std::istringstream is(strvaluelist);          
179     G4int lun, move;                              
180     is >> lun >> move;                            
181     gen->CallPyrset(lun, move);                   
182   }                                               
183   else if (command == printRandomStatus) {  //    
184     G4String s = newValues;                       
185     if (newValues == "std::cout") {               
186       gen->PrintRandomStatus();                   
187     }                                             
188     else {                                        
189       // to a file (overwrite mode)               
190       std::ofstream ofs;                          
191       ofs.open(s.c_str(), std::ios::out);         
192       // ofs.open(randomStatusFileName.c_str()    
193       ofs.setf(std::ios::fixed | std::ios::sho    
194       gen->PrintRandomStatus(ofs);                
195       ofs.close();                                
196     }                                             
197   }                                               
198 }                                                 
199                                                   
200 //....oooOO0OOooo........oooOO0OOooo........oo    
201 G4String HepMCG4PythiaMessenger::GetCurrentVal    
202 {                                                 
203   G4String cv;                                    
204   if (command == verbose) {                       
205     cv = verbose->ConvertToString(gen->GetVerb    
206   }                                               
207   else if (command == mpylist) {                  
208     cv = verbose->ConvertToString(gen->GetPyli    
209   }                                               
210   return cv;                                      
211 }                                                 
212                                                   
213 #endif                                            
214