Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/dna/molecules/management/src/G4MoleculeTableMessenger.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 /processes/electromagnetic/dna/molecules/management/src/G4MoleculeTableMessenger.cc (Version 11.3.0) and /processes/electromagnetic/dna/molecules/management/src/G4MoleculeTableMessenger.cc (Version 2.0)


  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                                                   
 27 #include "G4MoleculeTableMessenger.hh"            
 28 #include "G4UIcmdWithAString.hh"                  
 29 #include <G4SystemOfUnits.hh>                     
 30 #include <G4UIcmdWithoutParameter.hh>             
 31 #include "G4MoleculeTable.hh"                     
 32 #include "G4MoleculeDefinition.hh"                
 33 #include "G4MolecularConfiguration.hh"            
 34 #include "G4ParticleTable.hh"                     
 35 //--------------------------------------------    
 36                                                   
 37 G4MoleculeTableMessenger::G4MoleculeTableMesse    
 38   :                                               
 39    fpPrintTable(new G4UIcmdWithoutParameter("/    
 40   , fpSpecies(new G4UIcmdWithAString("/chem/sp    
 41 {}                                                
 42                                                   
 43 G4MoleculeTableMessenger::~G4MoleculeTableMess    
 44                                                   
 45 //--------------------------------------------    
 46 void G4MoleculeTableMessenger::SetNewValue(G4U    
 47                                            G4S    
 48 {                                                 
 49   if(command == fpPrintTable.get())               
 50   {                                               
 51     G4MolecularConfiguration::PrintAll();         
 52   }                                               
 53   if(command == fpSpecies.get())                  
 54   {                                               
 55     std::istringstream iss(newValue);             
 56                                                   
 57     G4String speciesName;                         
 58     iss >> speciesName;                           
 59                                                   
 60     G4String marker;                              
 61     iss >> marker;  // must be [                  
 62                                                   
 63     if(marker != "[")                             
 64     {                                             
 65       G4ExceptionDescription description;         
 66       description << " marker : " << marker <<    
 67       G4Exception("G4MoleculeTableMessenger::S    
 68                   "FAIL_SPECIES_DEFINITION04",    
 69     }                                             
 70                                                   
 71     G4String speciesDefName;                      
 72     iss >> speciesDefName;                        
 73                                                   
 74     iss >> marker;  // peut etre |                
 75                                                   
 76     G4int charge = 0;                             
 77     if(marker == "|")                             
 78     {                                             
 79       iss >> charge;                              
 80     }                                             
 81     iss >> marker;  // peut etre |                
 82     G4double diffusion_coefficient = 0;           
 83     if(marker == "|")                             
 84     {                                             
 85       iss >> diffusion_coefficient;               
 86     }                                             
 87     iss >> marker;  // peut etre |                
 88     G4double VanDerVaalsRadius = 0;               
 89     if(marker == "|")                             
 90     {                                             
 91       iss >> VanDerVaalsRadius;  // in nm         
 92     }                                             
 93                                                   
 94     auto pConf =                                  
 95       G4MolecularConfiguration::GetMolecularCo    
 96     if(pConf != nullptr)                          
 97     {                                             
 98       pConf->UnFinalize();                        
 99       if(VanDerVaalsRadius != 0)                  
100       {                                           
101         pConf->SetVanDerVaalsRadius(VanDerVaal    
102       }                                           
103       if(diffusion_coefficient != 0)              
104       {                                           
105         pConf->SetDiffusionCoefficient(diffusi    
106       }                                           
107     }                                             
108     else                                          
109     {                                             
110       auto particleDef = dynamic_cast<G4Molecu    
111         G4ParticleTable::GetParticleTable()->F    
112       if(particleDef != nullptr)                  
113       {                                           
114         auto molConf =                            
115           G4MolecularConfiguration::GetOrCreat    
116             particleDef, charge);                 
117         if(molConf == nullptr)                    
118         {                                         
119           G4ExceptionDescription description;     
120           description << "This molecule has no    
121           G4Exception("G4MoleculeTableMessenge    
122                       "FAIL_SPECIES_DEFINITION    
123         }                                         
124         molConf->UnFinalize();                    
125         if(VanDerVaalsRadius != 0)                
126         {                                         
127           molConf->SetVanDerVaalsRadius(VanDer    
128         }                                         
129         if(diffusion_coefficient != 0)            
130         {                                         
131           molConf->SetDiffusionCoefficient(dif    
132         }                                         
133                                                   
134         const auto& usedName = molConf->GetUse    
135         if(!usedName.empty())                     
136         {                                         
137           molConf->PrintState();                  
138           G4ExceptionDescription description;     
139           description << "This molecule has be    
140                       << usedName << " . Pleas    
141           G4Exception("G4MoleculeTableMessenge    
142                       "FAIL_SPECIES_DEFINITION    
143         }                                         
144         else                                      
145         {                                         
146           molConf->SetUserID(speciesName);        
147         }                                         
148       }                                           
149       else                                        
150       {                                           
151         auto speciesDef =                         
152           new G4MoleculeDefinition(speciesDefN    
153                                    /*D*/ diffu    
154                                    /*charge*/     
155                                    /*electronL    
156                                    /*radius*/     
157         G4bool alreadyCreated(false);             
158         G4MolecularConfiguration::CreateMolecu    
159           speciesName, speciesDef, alreadyCrea    
160       }                                           
161     }                                             
162   }                                               
163 }                                                 
164