Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/dna/utils/src/G4ReactionTableMessenger.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/utils/src/G4ReactionTableMessenger.cc (Version 11.3.0) and /processes/electromagnetic/dna/utils/src/G4ReactionTableMessenger.cc (Version 10.7.p4)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 /*                                                 26 /*
 27  * G4ReactionTableMessenger.cc                     27  * G4ReactionTableMessenger.cc
 28  *                                                 28  *
 29  *  Created on: Sep 14, 2015                       29  *  Created on: Sep 14, 2015
 30  *      Author: mkaramit                           30  *      Author: mkaramit
 31  */                                                31  */
 32                                                    32 
 33 #include <G4ReactionTableMessenger.hh>             33 #include <G4ReactionTableMessenger.hh>
 34 #include <G4DNAMolecularReactionTable.hh>          34 #include <G4DNAMolecularReactionTable.hh>
 35 #include <G4UIcmdWithAString.hh>                   35 #include <G4UIcmdWithAString.hh>
 36 #include <G4UIcmdWithADoubleAndUnit.hh>            36 #include <G4UIcmdWithADoubleAndUnit.hh>
 37 #include <G4UnitsTable.hh>                         37 #include <G4UnitsTable.hh>
 38 #include <G4SystemOfUnits.hh>                      38 #include <G4SystemOfUnits.hh>
 39 #include <G4UIcmdWithoutParameter.hh>              39 #include <G4UIcmdWithoutParameter.hh>
 40 #include <G4UIcmdWithABool.hh>                 << 
 41                                                    40 
 42 //--------------------------------------------     41 //------------------------------------------------------------------------------
 43                                                    42 
 44 G4ReactionTableMessenger::G4ReactionTableMesse <<  43 G4ReactionTableMessenger::G4ReactionTableMessenger(G4DNAMolecularReactionTable* table) :
 45   :                                            <<  44     G4UImessenger()
 46    fpTable(table)                              << 
 47   , fpActivateReactionUI(new G4UIcmdWithoutPar << 
 48 {                                                  45 {
                                                   >>  46   fpTable = table;
                                                   >>  47 
 49   fpNewDiffContReaction = new G4UIcmdWithAStri     48   fpNewDiffContReaction = new G4UIcmdWithAString("/chem/reaction/new", this);
 50   fpAddReaction = new G4UIcmdWithAString("/che     49   fpAddReaction = new G4UIcmdWithAString("/chem/reaction/add", this);
                                                   >>  50 //  fpNewPartDiffContReactionByRadius =
                                                   >>  51 //      new G4UIcmdWithAString("/chem/reaction/newPartDiffByRadius", this);
                                                   >>  52 //
                                                   >>  53 //  fpNewPartDiffContReactionByReactionRate =
                                                   >>  54 //      new G4UIcmdWithAString("/chem/reaction/newPartDiffByRate", this);
                                                   >>  55 
 51   fpPrintTable = new G4UIcmdWithoutParameter("     56   fpPrintTable = new G4UIcmdWithoutParameter("/chem/reaction/print", this);
 52 }                                                  57 }
 53                                                    58 
 54 //--------------------------------------------     59 //------------------------------------------------------------------------------
 55                                                    60 
 56 G4ReactionTableMessenger::~G4ReactionTableMess     61 G4ReactionTableMessenger::~G4ReactionTableMessenger()
 57 {                                                  62 {
 58   delete fpNewDiffContReaction;                <<  63   if(fpNewDiffContReaction) delete fpNewDiffContReaction;
 59   delete fpAddReaction;                        <<  64   if(fpAddReaction) delete fpAddReaction;
 60   delete fpPrintTable;                         <<  65   if(fpPrintTable) delete fpPrintTable;
 61 }                                                  66 }
 62                                                    67 
 63 //--------------------------------------------     68 //------------------------------------------------------------------------------
                                                   >>  69 
 64 void G4ReactionTableMessenger::SetNewValue(G4U     70 void G4ReactionTableMessenger::SetNewValue(G4UIcommand* command,
 65                                            G4S     71                                            G4String newValue)
 66 {                                                  72 {
 67   if(command == fpActivateReactionUI.get())    << 
 68   {                                            << 
 69     //assert(false);                           << 
 70       fpTable->Reset();//release reaction data << 
 71   }                                            << 
 72                                                    73 
 73   if(command == fpNewDiffContReaction)             74   if(command == fpNewDiffContReaction)
 74   {                                                75   {
 75     std::istringstream iss(newValue);              76     std::istringstream iss(newValue);
 76                                                    77 
 77     G4String species1;                             78     G4String species1;
 78     iss >> species1;                               79     iss >> species1;
 79                                                    80 
 80     G4String species2;                             81     G4String species2;
 81     iss >> species2;                               82     iss >> species2;
 82                                                    83 
 83     double reactionRate;                           84     double reactionRate;
 84     iss >> reactionRate;                           85     iss >> reactionRate;
 85                                                    86 
 86 //    G4String reactionRateUnit;                   87 //    G4String reactionRateUnit;
 87 //    iss >> reactionRateUnit;                     88 //    iss >> reactionRateUnit;
 88                                                    89 
 89     double dimensionedReactionRate = reactionR     90     double dimensionedReactionRate = reactionRate * (1e-3 * m3 / (mole * s));
 90 //        G4UIcmdWithADoubleAndUnit::ConvertTo     91 //        G4UIcmdWithADoubleAndUnit::ConvertToDimensionedDouble((reactionRate
 91 //            + G4String(" ") + reactionRateUn     92 //            + G4String(" ") + reactionRateUnit).c_str());
 92                                                    93 
 93     auto reactionData =                        <<  94     G4DNAMolecularReactionData* reactionData =
 94         new G4DNAMolecularReactionData(dimensi     95         new G4DNAMolecularReactionData(dimensionedReactionRate,
 95                                        species     96                                        species1,
 96                                        species     97                                        species2);
 97                                                    98 
 98 //    G4String productionRate;                     99 //    G4String productionRate;
 99 //    iss >> productionRate;                      100 //    iss >> productionRate;
100 //                                                101 //
101 //    if(productionRate != "" && productionRat    102 //    if(productionRate != "" && productionRate != "X")
102 //    {                                           103 //    {
103 //      double prodRateReal = G4UIcommand::Con    104 //      double prodRateReal = G4UIcommand::ConvertToDouble(productionRate);
104 //                                                105 //
105 //      if(prodRateReal == 0 || isnan(prodRate    106 //      if(prodRateReal == 0 || isnan(prodRateReal))
106 //      {                                         107 //      {
107 //        G4Exception("G4ReactionTableMessenge    108 //        G4Exception("G4ReactionTableMessenger",
108 //                    "WRONG_PRODUCTION_RATE",    109 //                    "WRONG_PRODUCTION_RATE",
109 //                    FatalException, "");        110 //                    FatalException, "");
110 //      }                                         111 //      }
111 //                                                112 //
112 //      double dimensionedProductionRate = pro    113 //      double dimensionedProductionRate = prodRateReal
113 //          * (1e-3 * m3 / (mole * s));           114 //          * (1e-3 * m3 / (mole * s));
114 //      reactionData->SetProductionRate(dimens    115 //      reactionData->SetProductionRate(dimensionedProductionRate);
115 //    }                                           116 //    }
116                                                   117 
117     while(!iss.eof())                          << 118     while(iss.eof() == false)
118     {                                             119     {
119       G4String product;                           120       G4String product;
120       iss >> product;                             121       iss >> product;
121                                                   122 
122       if(!product.empty())                     << 123       if(product != "")
123       {                                           124       {
124         reactionData->AddProduct(product);        125         reactionData->AddProduct(product);
125       }                                           126       }
126       else                                        127       else
127       {                                           128       {
128         break;                                    129         break;
129       }                                           130       }
130     };                                            131     };
131                                                   132 
132     fpTable->SetReaction(reactionData);           133     fpTable->SetReaction(reactionData);
133   }                                               134   }
134 //  else if(command == fpNewPartDiffContReacti    135 //  else if(command == fpNewPartDiffContReactionByRadius)
135 //  {                                             136 //  {
136 //    std::istringstream iss(newValue);           137 //    std::istringstream iss(newValue);
137 //                                                138 //
138 //    G4String species1;                          139 //    G4String species1;
139 //    iss >> species1;                            140 //    iss >> species1;
140 //                                                141 //
141 //    G4String species2;                          142 //    G4String species2;
142 //    iss >> species2;                            143 //    iss >> species2;
143 //                                                144 //
144 //    double reactionRate;                        145 //    double reactionRate;
145 //    iss >> reactionRate;                        146 //    iss >> reactionRate;
146 //                                                147 //
147 ////    G4String reactionRateUnit;                148 ////    G4String reactionRateUnit;
148 ////    iss >> reactionRateUnit;                  149 ////    iss >> reactionRateUnit;
149 //                                                150 //
150 ////    G4String reactionRateUnit;                151 ////    G4String reactionRateUnit;
151 ////    iss >> reactionRateUnit;                  152 ////    iss >> reactionRateUnit;
152 //                                                153 //
153 //    double reactionRadius;                      154 //    double reactionRadius;
154 //    iss >> reactionRadius;                      155 //    iss >> reactionRadius;
155 //                                                156 //
156 ////    G4String reactionRadiusUnit;              157 ////    G4String reactionRadiusUnit;
157 ////    iss >> reactionRadiusUnit;                158 ////    iss >> reactionRadiusUnit;
158 //                                                159 //
159 //    double dimensionedReactionRate = reactio    160 //    double dimensionedReactionRate = reactionRate * (1e-3 * m3 / (mole * s));
160 //                                                161 //
161 ////    double dimensionedReactionRate =          162 ////    double dimensionedReactionRate =
162 ////        G4UIcmdWithADoubleAndUnit::Convert    163 ////        G4UIcmdWithADoubleAndUnit::ConvertToDimensionedDouble((reactionRate
163 ////            + " " + reactionRateUnit).c_st    164 ////            + " " + reactionRateUnit).c_str());
164 //                                                165 //
165 //    double dimensionedReactionRadius = react    166 //    double dimensionedReactionRadius = reactionRadius * nm;
166 ////        G4UIcmdWithADoubleAndUnit::Convert    167 ////        G4UIcmdWithADoubleAndUnit::ConvertToDimensionedDouble((reactionRadius
167 ////            + " " + reactionRadiusUnit).c_    168 ////            + " " + reactionRadiusUnit).c_str());
168 //                                                169 //
169 //    G4DNAMolecularReactionData* reactionData    170 //    G4DNAMolecularReactionData* reactionData =
170 //        new G4DNAMolecularReactionData(dimen    171 //        new G4DNAMolecularReactionData(dimensionedReactionRate,
171 //                                       speci    172 //                                       species1,
172 //                                       speci    173 //                                       species2);
173 //    reactionData->SetPartiallyDiffusionContr    174 //    reactionData->SetPartiallyDiffusionControlledReaction(dimensionedReactionRate,
174 //                                                175 //                                                          dimensionedReactionRadius);
175 //                                                176 //
176 //    while(iss.eof() == false)                   177 //    while(iss.eof() == false)
177 //    {                                           178 //    {
178 //      G4String product;                         179 //      G4String product;
179 //      iss >> product;                           180 //      iss >> product;
180 //                                                181 //
181 //      if(product != "")                         182 //      if(product != "")
182 //      {                                         183 //      {
183 //        reactionData->AddProduct(product);      184 //        reactionData->AddProduct(product);
184 //      }                                         185 //      }
185 //      else                                      186 //      else
186 //      {                                         187 //      {
187 //        break;                                  188 //        break;
188 //      }                                         189 //      }
189 //    }                                           190 //    }
190 //                                                191 //
191 //    fpTable->SetReaction(reactionData);         192 //    fpTable->SetReaction(reactionData);
192 //  }                                             193 //  }
193 //  else if(command == fpNewPartDiffContReacti    194 //  else if(command == fpNewPartDiffContReactionByReactionRate)
194 //  {                                             195 //  {
195 //    std::istringstream iss(newValue);           196 //    std::istringstream iss(newValue);
196 //                                                197 //
197 //    G4String species1;                          198 //    G4String species1;
198 //    iss >> species1;                            199 //    iss >> species1;
199 //                                                200 //
200 //    G4String species2;                          201 //    G4String species2;
201 //    iss >> species2;                            202 //    iss >> species2;
202 //                                                203 //
203 //    double reactionRate;                        204 //    double reactionRate;
204 //    iss >> reactionRate;                        205 //    iss >> reactionRate;
205 //                                                206 //
206 //    //    G4String reactionRateUnit;            207 //    //    G4String reactionRateUnit;
207 //    //    iss >> reactionRateUnit;              208 //    //    iss >> reactionRateUnit;
208 //                                                209 //
209 //    //    G4String reactionRateUnit;            210 //    //    G4String reactionRateUnit;
210 //    //    iss >> reactionRateUnit;              211 //    //    iss >> reactionRateUnit;
211 //                                                212 //
212 //    double activationRate;                      213 //    double activationRate;
213 //    iss >> activationRate;                      214 //    iss >> activationRate;
214 //                                                215 //
215 //    //    G4String reactionRadiusUnit;          216 //    //    G4String reactionRadiusUnit;
216 //    //    iss >> reactionRadiusUnit;            217 //    //    iss >> reactionRadiusUnit;
217 //                                                218 //
218 //    double dimensionedReactionRate = reactio    219 //    double dimensionedReactionRate = reactionRate * (1e-3 * m3 / (mole * s));
219 //                                                220 //
220 //    double dimensionedActivationRate = activ    221 //    double dimensionedActivationRate = activationRate
221 //        * (1e-3 * m3 / (mole * s));             222 //        * (1e-3 * m3 / (mole * s));
222 //                                                223 //
223 //    G4DNAMolecularReactionData* reactionData    224 //    G4DNAMolecularReactionData* reactionData =
224 //        new G4DNAMolecularReactionData(dimen    225 //        new G4DNAMolecularReactionData(dimensionedReactionRate,
225 //                                       speci    226 //                                       species1,
226 //                                       speci    227 //                                       species2);
227 //    reactionData->                              228 //    reactionData->
228 //      SetPartiallyDiffusionControlledReactio    229 //      SetPartiallyDiffusionControlledReactionByActivation(dimensionedReactionRate,
229 //                                                230 //                                                          dimensionedActivationRate);
230 //                                                231 //
231 //    while(iss.eof() == false)                   232 //    while(iss.eof() == false)
232 //    {                                           233 //    {
233 //      G4String product;                         234 //      G4String product;
234 //      iss >> product;                           235 //      iss >> product;
235 //                                                236 //
236 //      if(product != "")                         237 //      if(product != "")
237 //      {                                         238 //      {
238 //        reactionData->AddProduct(product);      239 //        reactionData->AddProduct(product);
239 //      }                                         240 //      }
240 //      else                                      241 //      else
241 //      {                                         242 //      {
242 //        break;                                  243 //        break;
243 //      }                                         244 //      }
244 //    }                                           245 //    }
245 //                                                246 //
246 //    fpTable->SetReaction(reactionData);         247 //    fpTable->SetReaction(reactionData);
247 //  }                                             248 //  }
248   else if(command == fpPrintTable)                249   else if(command == fpPrintTable)
249   {                                               250   {
250     fpTable->PrintTable();                        251     fpTable->PrintTable();
251   }                                               252   }
252   else if(command == fpAddReaction)               253   else if(command == fpAddReaction)
253   {                                               254   {
254     std::istringstream iss(newValue);             255     std::istringstream iss(newValue);
255                                                   256 
256     //----------------------------------------    257     //--------------------------------------------------------------------------
257     // Reactants definition                       258     // Reactants definition
258                                                   259 
259     G4String species1;                            260     G4String species1;
260     iss >> species1;                              261     iss >> species1;
261                                                   262 
262     G4String marker;                              263     G4String marker;
263     iss >> marker; // peut etre +, ->, |          264     iss >> marker; // peut etre +, ->, |
264                                                   265 
265     G4String species2;                            266     G4String species2;
266                                                   267 
267     if(marker == "+")                             268     if(marker == "+")
268     {                                             269     {
269         iss >> species2;                          270         iss >> species2;
270         iss >> marker; // peut etre ->, |         271         iss >> marker; // peut etre ->, |
271     }                                             272     }
272                                                   273 
273     //----------------------------------------    274     //--------------------------------------------------------------------------
274                                                   275 
275     auto  reactionData =                       << 276     G4DNAMolecularReactionData* reactionData =
276                 new G4DNAMolecularReactionData    277                 new G4DNAMolecularReactionData(0,
277                                                   278                                                species1,
278                                                   279                                                species2);
279     //fpTable->SetReaction(reactionData);         280     //fpTable->SetReaction(reactionData);
280                                                   281 
281     //----------------------------------------    282     //--------------------------------------------------------------------------
282     // Add products                               283     // Add products
283     if(marker == "->")                            284     if(marker == "->")
284     {                                             285     {
285       iss >> marker; // doit etre = species na    286       iss >> marker; // doit etre = species name
286                                                   287 
287       while(marker!="|"                           288       while(marker!="|"
288           //&& marker!=""                         289           //&& marker!=""
289           && !iss.eof()                        << 290           && iss.eof() == false
290           )                                       291           )
291       {                                           292       {
292         //G4cout << marker << G4endl;          << 293         G4cout << marker << G4endl;
293         if(marker == "+")                         294         if(marker == "+")
294         {                                         295         {
295           iss >> marker; // doit etre species     296           iss >> marker; // doit etre species name
296           continue;                               297           continue;
297         }                                         298         }
298         if(marker != "H2O")                    << 299         reactionData->AddProduct(marker);
299         {                                      << 
300           reactionData->AddProduct(marker);    << 
301         }                                      << 
302                                                << 
303         iss >> marker; // peut etre species na    300         iss >> marker; // peut etre species name, +, |
304       };                                          301       };
305     }                                             302     }
306                                                   303 
307 //    G4cout << "out of 1st loop" << G4endl;      304 //    G4cout << "out of 1st loop" << G4endl;
308                                                   305 
309     //----------------------------------------    306     //--------------------------------------------------------------------------
310     // Add reaction rate method                   307     // Add reaction rate method
311     G4String rateconst_method;                    308     G4String rateconst_method;
312     iss >> rateconst_method;                      309     iss >> rateconst_method;
313     if(rateconst_method == "Fix")                 310     if(rateconst_method == "Fix")
314     {                                             311     {
315       iss >> marker; // must be |                 312       iss >> marker; // must be |
316       double reactionRate;                        313       double reactionRate;
317       iss >> reactionRate;                        314       iss >> reactionRate;
318                                                   315 
319       double dimensionedReactionRate = reactio    316       double dimensionedReactionRate = reactionRate * (1e-3 * m3 / (mole * s));
320       reactionData->SetObservedReactionRateCon    317       reactionData->SetObservedReactionRateConstant(dimensionedReactionRate);
321       reactionData->ComputeEffectiveRadius();  << 
322       G4String markerType;                     << 
323       iss >> markerType; // must be |          << 
324       if(markerType == "|")                    << 
325       {                                        << 
326         G4int reactionType;                    << 
327         iss >> reactionType;                   << 
328         if(reactionType == 1)                  << 
329         {                                      << 
330           reactionData->SetReactionType(reacti << 
331         }                                      << 
332       }                                        << 
333                                                << 
334                                                   318 
335 //      G4String productionRate;                  319 //      G4String productionRate;
336 //      iss >> productionRate;                    320 //      iss >> productionRate;
337 //                                                321 //
338 //      if(productionRate != "" && productionR    322 //      if(productionRate != "" && productionRate != "X")
339 //      {                                         323 //      {
340 //        double prodRateReal = G4UIcommand::C    324 //        double prodRateReal = G4UIcommand::ConvertToDouble(productionRate);
341 //                                                325 //
342 //        if(prodRateReal == 0 || isnan(prodRa    326 //        if(prodRateReal == 0 || isnan(prodRateReal))
343 //        {                                       327 //        {
344 //          G4Exception("G4ReactionTableMessen    328 //          G4Exception("G4ReactionTableMessenger",
345 //                      "WRONG_PRODUCTION_RATE    329 //                      "WRONG_PRODUCTION_RATE",
346 //                      FatalException,           330 //                      FatalException,
347 //                      "");                      331 //                      "");
348 //        }                                       332 //        }
349 //                                                333 //
350 //        double dimensionedProductionRate = p    334 //        double dimensionedProductionRate = prodRateReal
351 //            * (1e-3 * m3 / (mole * s));         335 //            * (1e-3 * m3 / (mole * s));
352 //        reactionData->SetProductionRate(dime    336 //        reactionData->SetProductionRate(dimensionedProductionRate);
353 //      }                                         337 //      }
354     }                                             338     }
355     else if(rateconst_method == "Arr")            339     else if(rateconst_method == "Arr")
356     {                                             340     {
357       iss >> marker; // must be |                 341       iss >> marker; // must be |
358       double A0  = 0;                             342       double A0  = 0;
359       double E_R = 0;                             343       double E_R = 0;
360                                                   344 
361       iss >> A0;                                  345       iss >> A0;
362       iss >> E_R;                                 346       iss >> E_R;
363       reactionData->SetArrehniusParameterizati    347       reactionData->SetArrehniusParameterization(A0, E_R);
364     }                                             348     }
365     else if(rateconst_method == "Pol")            349     else if(rateconst_method == "Pol")
366     {                                             350     {
367       iss >> marker; // must be |                 351       iss >> marker; // must be |
368       std::vector<double> P = {0, 0, 0, 0, 0};    352       std::vector<double> P = {0, 0, 0, 0, 0};
369                                                   353 
370       size_t i = 0;                               354       size_t i = 0;
371       while(i < 4) // could be changed to 5 on    355       while(i < 4) // could be changed to 5 only if marker is used as delimiter
372       {                                           356       {
373         double tmp;                               357         double tmp;
374         iss >> tmp;                               358         iss >> tmp;
375         P[i] = tmp;                               359         P[i] = tmp;
376 //        G4cout << newValue << G4endl;           360 //        G4cout << newValue << G4endl;
377 //        G4cout << tmp << G4endl;                361 //        G4cout << tmp << G4endl;
378 //        G4cout << P[i] << G4endl;               362 //        G4cout << P[i] << G4endl;
379         ++i;                                      363         ++i;
380       };                                          364       };
381       reactionData->SetPolynomialParameterizat    365       reactionData->SetPolynomialParameterization(P);
382     }                                             366     }
383     else if(rateconst_method == "Scale")          367     else if(rateconst_method == "Scale")
384     {                                             368     {
385       iss >> marker; // must be |                 369       iss >> marker; // must be |
386       double temp_K;                              370       double temp_K;
387       iss >> temp_K;                              371       iss >> temp_K;
388       double reactionRateCste;                    372       double reactionRateCste;
389       iss >> reactionRateCste;                    373       iss >> reactionRateCste;
390       double dimensionedReactionRate = reactio    374       double dimensionedReactionRate = reactionRateCste * (1e-3 * m3 / (mole * s));
391       reactionData->SetObservedReactionRateCon    375       reactionData->SetObservedReactionRateConstant(dimensionedReactionRate);
392       reactionData->SetScaledParameterization(    376       reactionData->SetScaledParameterization(temp_K, dimensionedReactionRate);
393     }                                             377     }
394                                                   378 
395 //    if(iss.eof() == false)                      379 //    if(iss.eof() == false)
396 //    {                                           380 //    {
397 //      iss >> marker;                            381 //      iss >> marker;
398 //                                                382 //
399 //      if(marker == "|")                         383 //      if(marker == "|")
400 //      {                                         384 //      {
401 //        G4String productionRate ;               385 //        G4String productionRate ;
402 //        iss >> productionRate;                  386 //        iss >> productionRate;
403 //                                                387 //
404 ////        G4cout << productionRate << G4endl    388 ////        G4cout << productionRate << G4endl;
405 //                                                389 //
406 //        double dimProductionRate = G4UIcomma    390 //        double dimProductionRate = G4UIcommand::ConvertToDouble(productionRate)* (1e-3 * m3 / (mole * s));
407 //                                                391 //
408 //        G4cout << " DIM PROD RATE = " << rea    392 //        G4cout << " DIM PROD RATE = " << reactionData->GetReactant1()->GetName()
409 //             << " + " << reactionData->GetRe    393 //             << " + " << reactionData->GetReactant2()->GetName() << " = " << dimProductionRate << G4endl;
410 //                                                394 //
411 //        reactionData->SetProductionRate(dimP    395 //        reactionData->SetProductionRate(dimProductionRate);
412 //      }                                         396 //      }
413 //    }                                           397 //    }
414     fpTable->SetReaction(reactionData);           398     fpTable->SetReaction(reactionData);
415 //    G4cout << "Reaction " << species1 << " +    399 //    G4cout << "Reaction " << species1 << " + " << species2 << " added" << G4endl;
416   }                                               400   }
417 }                                                 401 }
418                                                   402