Geant4  10.02.p03
G4DNAMolecularReactionTable.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 // $Id: G4DNAMolecularReactionTable.cc 94688 2015-12-02 17:15:08Z gunter $
27 //
28 // Author: Mathieu Karamitros (kara (AT) cenbg . in2p3 . fr)
29 //
30 // WARNING : This class is released as a prototype.
31 // It might strongly evolve or even disapear in the next releases.
32 //
33 // History:
34 // -----------
35 // 10 Oct 2011 M.Karamitros created
36 //
37 // -------------------------------------------------------------------
38 
39 #include <iomanip>
40 
42 #include "G4PhysicalConstants.hh"
43 #include "G4SystemOfUnits.hh"
44 #include "G4UIcommand.hh"
45 #include "G4VDNAReactionModel.hh"
47 #include "G4MoleculeTable.hh"
50 #include "G4IosFlagsSaver.hh"
51 
52 using namespace std;
53 
55 
57  fReactant1(),
58  fReactant2(),
59  fObservedReactionRate(0.),
60  fEffectiveReactionRadius(0.),
61  fProducts(0)
62 {
63  fReactionID = 0;
64 }
65 
66 //______________________________________________________________________________
67 
70  G4MolecularConfiguration* reactant1,
71  G4MolecularConfiguration* reactant2) :
72  fProducts(0)
73 {
74  fObservedReactionRate = reactionRate;
75  SetReactant1(reactant1);
76  SetReactant2(reactant2);
77 
78  G4double sumDiffCoeff(0.);
79 
80  if (reactant1 == reactant2)
81  {
82  sumDiffCoeff = reactant1->GetDiffusionCoefficient();
84  / (4 * pi * sumDiffCoeff * Avogadro);
85  }
86  else
87  {
88  sumDiffCoeff = reactant1->GetDiffusionCoefficient()
89  + reactant2->GetDiffusionCoefficient();
91  (4 * pi * sumDiffCoeff * Avogadro);
92  }
93  fReactionID = 0;
94 }
95 
96 //______________________________________________________________________________
97 
100  const G4String& reactant1,
101  const G4String& reactant2) :
102  fProducts(0)
103 {
104  fObservedReactionRate = reactionRate;
105  SetReactant1(reactant1);
106  SetReactant2(reactant2);
107 
108  G4double sumDiffCoeff(0.);
109 
110  if (fReactant1 == fReactant2)
111  {
112  sumDiffCoeff = fReactant1->GetDiffusionCoefficient();
114  / (4 * pi * sumDiffCoeff * Avogadro);
115  }
116  else
117  {
118  sumDiffCoeff = fReactant1->GetDiffusionCoefficient()
121  (4 * pi * sumDiffCoeff * Avogadro);
122  }
123  fReactionID = 0;
124 }
125 
127 {
128  if (fProducts)
129  {
130  fProducts->clear();
131  delete fProducts;
132  fProducts = 0;
133  }
134 }
135 
137 {
138  fReactant1 = reactive;
139 }
140 
141 
143 {
144  fReactant2 = reactive;
145 }
146 
148  G4MolecularConfiguration* reactant2)
149 {
150  fReactant1 = reactant1;
151  fReactant2 = reactant2;
152 }
153 
155 {
156  if (!fProducts) fProducts = new std::vector<G4MolecularConfiguration*>();
157  fProducts->push_back(molecule);
158 }
159 
161 {
163 }
165 {
167 }
169  const G4String& reactant2)
170 {
173 }
174 
176 {
177  if (!fProducts) fProducts = new std::vector<G4MolecularConfiguration*>();
178  fProducts->push_back(G4MoleculeTable::Instance()->GetConfiguration(molecule));
179 }
180 
181 
182 double G4DNAMolecularReactionData::PolynomialParam(double temp_K, std::vector<double> P)
183  {
184  double inv_temp = 1. / temp_K;
185 
186  return pow(10,
187  P[0] + P[1] * inv_temp + P[2] * pow(inv_temp, 2)
188  + P[3] * pow(inv_temp, 3) + P[4] * pow(inv_temp, 4))
189  * (1e-3 * CLHEP::m3 / (CLHEP::mole * CLHEP::s));
190  }
191 
192  double G4DNAMolecularReactionData::ArrehniusParam(double temp_K, std::vector<double> P)
193  {
194  return P[0]*exp(P[1]/temp_K)*
195  (1e-3 * CLHEP::m3 / (CLHEP::mole * CLHEP::s));
196  }
197 
199  double temp_init,
200  double rateCste_init)
201  {
202  double D0 = G4MolecularConfiguration::DiffCoeffWater(temp_init);
203  double Df = G4MolecularConfiguration::DiffCoeffWater(temp_K);
204  return Df*rateCste_init/D0;
205  }
206 
207 //==============================================================================
208 // REACTION TABLE
209 //==============================================================================
210 
212 {
213  if (!fInstance)
214  {
215  fInstance = new G4DNAMolecularReactionTable();
216  }
217  return fInstance;
218 }
219 
220 //_____________________________________________________________________________________
221 
223 {
224  if (!fInstance)
225  {
226  fInstance = new G4DNAMolecularReactionTable();
227  }
228  return fInstance;
229 }
230 
231 //_____________________________________________________________________________________
232 
234 {
235  // DEBUG
236 // G4cout << "G4MolecularReactionTable::DeleteInstance" << G4endl;
237  if (fInstance) delete fInstance;
238  fInstance = 0;
239 }
240 
241 //_____________________________________________________________________________________
242 
245 // , fMoleculeHandleManager(G4MoleculeHandleManager::Instance())
246 {
247 // G4cout << "G4DNAMolecularReactionTable::G4DNAMolecularReactionTable()" << G4endl;
248  fVerbose = false;
250  return;
251 }
252 
253 //_____________________________________________________________________________________
254 
256 {
257  // DEBUG
258 // G4cout << "G4MolecularReactionTable::~G4MolecularReactionTable" << G4endl;
259 
260  if(fpMessenger) delete fpMessenger;
261 
262  ReactionDataMap::iterator it1 = fReactionData.begin();
263  std::map<G4MolecularConfiguration*,
264  const G4DNAMolecularReactionData*>::iterator it2;
265 
266  for(; it1 != fReactionData.end(); it1++)
267  {
268  for(it2 = it1->second.begin(); it2 != it1->second.end(); it2++)
269  {
270  const G4DNAMolecularReactionData* reactionData = it2->second;
271  if(reactionData)
272  {
273  G4MolecularConfiguration* reactant1 =
274  reactionData->GetReactant1();
275  G4MolecularConfiguration* reactant2 =
276  reactionData->GetReactant2();
277 
278  fReactionData[reactant1][reactant2] = 0;
279  fReactionData[reactant2][reactant1] = 0;
280 
281  delete reactionData;
282  }
283  }
284  }
285 
286  fReactionDataMV.clear();
287  fReactionData.clear();
288  fReactantsMV.clear();
289 }
290 
291 //_____________________________________________________________________________________
292 
294 {
295  G4MolecularConfiguration* reactant1 = reactionData->GetReactant1();
296  G4MolecularConfiguration* reactant2 = reactionData->GetReactant2();
297 
298  fReactionData[reactant1][reactant2] = reactionData;
299  fReactantsMV[reactant1].push_back(reactant2);
300  fReactionDataMV[reactant1].push_back(reactionData);
301 
302  if (reactant1 != reactant2)
303  {
304  fReactionData[reactant2][reactant1] = reactionData;
305  fReactantsMV[reactant2].push_back(reactant1);
306  fReactionDataMV[reactant2].push_back(reactionData);
307  }
308 
309  fVectorOfReactionData.push_back(reactionData);
310 }
311 
312 //_____________________________________________________________________________________
313 
315  G4MolecularConfiguration* reactant1,
316  G4MolecularConfiguration* reactant2)
317 {
319  reactionRate, reactant1, reactant2);
320  SetReaction(reactionData);
321 }
322 
323 //_____________________________________________________________________________________
324 
326 {
327  // Print Reactions and Interaction radius for jump step = 3ps
328 
329  G4IosFlagsSaver iosfs(G4cout);
330 
331  if (pReactionModel)
332  {
333  if (!(pReactionModel->GetReactionTable())) pReactionModel->SetReactionTable(
334  this);
335  }
336 
337  ReactivesMV::iterator itReactives;
338 
339  map<G4MolecularConfiguration*, map<G4MolecularConfiguration*, G4bool> > alreadyPrint;
340 
341  G4cout << "Number of chemical species involved in reactions = "
342  << fReactantsMV.size() << G4endl;
343 
344  G4int nbPrintable = fReactantsMV.size() * fReactantsMV.size();
345 
346  G4String *outputReaction = new G4String[nbPrintable];
347  G4String *outputReactionRate = new G4String[nbPrintable];
348  G4String *outputRange = new G4String[nbPrintable];
349  G4int n = 0;
350 
351  for (itReactives = fReactantsMV.begin(); itReactives != fReactantsMV.end();
352  itReactives++)
353  {
354  G4MolecularConfiguration* moleculeA = (G4MolecularConfiguration*) itReactives->first;
355  const vector<G4MolecularConfiguration*>* reactivesVector = CanReactWith(moleculeA);
356 
357  if (pReactionModel) pReactionModel->InitialiseToPrint(moleculeA);
358 
359  G4int nbReactants = fReactantsMV[itReactives->first].size();
360 
361  for (G4int iReact = 0; iReact < nbReactants; iReact++)
362  {
363 
364  G4MolecularConfiguration* moleculeB = (G4MolecularConfiguration*) (*reactivesVector)[iReact];
365 
366  const G4DNAMolecularReactionData* reactionData =
367  fReactionData[moleculeA][moleculeB];
368 
369  //-----------------------------------------------------------
370  // Name of the reaction
371  if (!alreadyPrint[moleculeA][moleculeB])
372  {
373  outputReaction[n] = moleculeA->GetName() + " + " + moleculeB->GetName();
374 
375  G4int nbProducts = reactionData->GetNbProducts();
376 
377  if (nbProducts)
378  {
379  outputReaction[n] += " -> " + reactionData->GetProduct(0)->GetName();
380 
381  for (G4int j = 1; j < nbProducts; j++)
382  {
383  outputReaction[n] += " + " + reactionData->GetProduct(j)->GetName();
384  }
385  }
386  else
387  {
388  outputReaction[n] += " -> No product";
389  }
390 
391  //-----------------------------------------------------------
392  // Interaction Rate
393  outputReactionRate[n] = G4UIcommand::ConvertToString(
394  reactionData->GetObservedReactionRateConstant() / (1e-3 * m3 / (mole * s)));
395 
396  //-----------------------------------------------------------
397  // Calculation of the Interaction Range
398  G4double interactionRange = -1;
399  if (pReactionModel) interactionRange =
400  pReactionModel->GetReactionRadius(iReact);
401 
402  if (interactionRange != -1)
403  {
404  outputRange[n] = G4UIcommand::ConvertToString(
405  interactionRange / nanometer);
406  }
407  else
408  {
409  outputRange[n] = "";
410  }
411 
412  alreadyPrint[moleculeB][moleculeA] = TRUE;
413  n++;
414  }
415  }
416  }
417  // G4cout<<"Number of possible reactions: "<< n << G4endl;
418 
420  // Tableau dynamique en fonction du nombre de caractere maximal dans
421  // chaque colonne
423 
424  G4int maxlengthOutputReaction = -1;
425  G4int maxlengthOutputReactionRate = -1;
426 
427  for (G4int i = 0; i < n; i++)
428  {
429  if (maxlengthOutputReaction < (G4int) outputReaction[i].length())
430  {
431  maxlengthOutputReaction = outputReaction[i].length();
432  }
433  if (maxlengthOutputReactionRate < (G4int) outputReactionRate[i].length())
434  {
435  maxlengthOutputReactionRate = outputReactionRate[i].length();
436  }
437  }
438 
439  maxlengthOutputReaction += 2;
440  maxlengthOutputReactionRate += 2;
441 
442  if (maxlengthOutputReaction < 10) maxlengthOutputReaction = 10;
443  if (maxlengthOutputReactionRate < 30) maxlengthOutputReactionRate = 30;
444 
445  G4String* title;
446 
447  if (pReactionModel) title = new G4String[3];
448  else title = new G4String[2];
449 
450  title[0] = "Reaction";
451  title[1] = "Reaction Rate [dm3/(mol*s)]";
452 
453  if (pReactionModel) title[2] =
454  "Interaction Range for chosen reaction model [nm]";
455 
456  G4cout << setfill(' ') << setw(maxlengthOutputReaction) << left << title[0]
457  << setw(maxlengthOutputReactionRate) << left << title[1];
458 
459  if (pReactionModel) G4cout << setw(2) << left << title[2];
460 
461  G4cout << G4endl;
462 
463  G4cout.fill('-');
464  if (pReactionModel) G4cout.width(
465  maxlengthOutputReaction + 2 + maxlengthOutputReactionRate + 2
466  + (G4int) title[2].length());
467  else G4cout.width(maxlengthOutputReaction + 2 + maxlengthOutputReactionRate);
468  G4cout << "-" << G4endl;
469  G4cout.fill(' ');
470 
471  for (G4int i = 0; i < n; i++)
472  {
473  G4cout << setw(maxlengthOutputReaction) << left << outputReaction[i]
474  << setw(maxlengthOutputReactionRate) << left
475  << outputReactionRate[i];
476 
477  if (pReactionModel) G4cout << setw(2) << left << outputRange[i];
478 
479  G4cout << G4endl;
480 
481  G4cout.fill('-');
482  if (pReactionModel) G4cout.width(
483  maxlengthOutputReaction + 2 + maxlengthOutputReactionRate + 2
484  + (G4int) title[2].length());
485  else G4cout.width(
486  maxlengthOutputReaction + 2 + maxlengthOutputReactionRate);
487  G4cout << "-" << G4endl;
488  G4cout.fill(' ');
489  }
490 
491  delete[] title;
492  delete[] outputReaction;
493  delete[] outputReactionRate;
494  delete[] outputRange;
495 }
496 
497 //______________________________________________________________________________
498 // Get/Set methods
499 
502  G4MolecularConfiguration* reactant2) const
503 {
504  if (fReactionData.empty())
505  {
506  G4String errMsg = "No reaction table was implemented";
507  G4Exception("G4MolecularInteractionTable::GetReactionData", "",
508  FatalErrorInArgument, errMsg);
509  return 0;
510  }
511 
512  ReactionDataMap::const_iterator it1 = fReactionData.find(reactant1);
513 
514  if (it1 == fReactionData.end())
515  {
516  G4String errMsg =
517  "No reaction table was implemented for this molecule Definition : " + reactant1
518  ->GetName();
519 // G4cout << "--- G4MolecularInteractionTable::GetReactionData ---" << G4endl;
520 // G4cout << errMsg << G4endl;
521  G4Exception("G4MolecularInteractionTable::GetReactionData", "",
522  FatalErrorInArgument, errMsg);
523 // return 0;
524  }
525 
526  std::map<G4MolecularConfiguration*,
527  const G4DNAMolecularReactionData*>::const_iterator it2 =
528  it1->second.find(reactant2);
529 
530  if (it2 == it1->second.end())
531  {
532  G4cout << "Name : " << reactant2->GetName() << G4endl;
533  G4String errMsg = "No reaction table was implemented for this molecule : "
534  + reactant2 -> GetName();
535  G4Exception("G4MolecularInteractionTable::GetReactionData","",FatalErrorInArgument, errMsg);
536  }
537 
538  return (it2->second);
539 }
540 
541 //______________________________________________________________________________
542 
543 const std::vector<G4MolecularConfiguration*>*
545 {
546  if (fReactantsMV.empty())
547  {
548  G4String errMsg = "No reaction table was implemented";
549  G4Exception("G4MolecularInteractionTable::CanReactWith", "",
550  FatalErrorInArgument, errMsg);
551  return 0;
552  }
553 
554  ReactivesMV::const_iterator itReactivesMap = fReactantsMV.find(aMolecule);
555 
556  if (itReactivesMap == fReactantsMV.end())
557  {
558 #ifdef G4VERBOSE
559  if (fVerbose)
560  {
561  G4String errMsg = "No reaction table was implemented for this molecule : "
562  + aMolecule->GetName();
563 // G4Exception("G4MolecularInteractionTable::CanReactWith","",FatalErrorInArgument, errMsg);
564  G4cout << "--- G4MolecularInteractionTable::GetReactionData ---" << G4endl;
565  G4cout << errMsg << G4endl;
566  }
567 #endif
568  return 0;
569  }
570  else
571  {
572  if(fVerbose)
573  {
574  G4cout<< " G4MolecularInteractionTable::CanReactWith :"<<G4endl;
575  G4cout<<"You are checking reactants for : " << aMolecule->GetName()<<G4endl;
576  G4cout<<" the number of reactants is : " << itReactivesMap->second.size()<<G4endl;
577 
578  std::vector<G4MolecularConfiguration*>::const_iterator itProductsVector =
579  itReactivesMap->second.begin();
580 
581  for(; itProductsVector != itReactivesMap->second.end(); itProductsVector++)
582  {
583  G4cout<<(*itProductsVector)->GetName()<<G4endl;
584  }
585  }
586  return &(itReactivesMap->second);
587  }
588  return 0;
589 }
590 
591 //______________________________________________________________________________
592 
593 const std::map<G4MolecularConfiguration*, const G4DNAMolecularReactionData*>*
595 {
596  if (fReactionData.empty())
597  {
598  G4String errMsg = "No reaction table was implemented";
599  G4Exception("G4MolecularInteractionTable::CanInteractWith", "",
600  FatalErrorInArgument, errMsg);
601  return 0;
602  }
603 
604  ReactionDataMap::const_iterator itReactivesMap = fReactionData.find(molecule);
605 
606  if (itReactivesMap == fReactionData.end())
607  {
608  return 0;
609 // G4cout << "Nom : " << molecule->GetName() << G4endl;
610 // G4String errMsg = "No reaction table was implemented for this molecule Definition : "
611 // + molecule -> GetName();
612 // G4Exception("G4MolecularInteractionTable::CanReactWith","",FatalErrorInArgument, errMsg);
613  }
614  else
615  {
616  if(fVerbose)
617  {
618  G4cout<< " G4MolecularInteractionTable::CanReactWith :"<<G4endl;
619  G4cout<<"You are checking reactants for : " << molecule->GetName()<<G4endl;
620  G4cout<<" the number of reactants is : " << itReactivesMap->second.size()<<G4endl;
621 
622  std::map<G4MolecularConfiguration*,
623  const G4DNAMolecularReactionData*>::const_iterator itProductsVector =
624  itReactivesMap->second.begin();
625 
626  for(; itProductsVector != itReactivesMap->second.end(); itProductsVector++)
627  {
628  G4cout<<itProductsVector->first->GetName()<<G4endl;
629  }
630  }
631  return &(itReactivesMap->second);
632  }
633 
634  return 0;
635 }
636 
637 //______________________________________________________________________________
638 
639 const std::vector<const G4DNAMolecularReactionData*>*
641 {
642  if (fReactionDataMV.empty())
643  {
644  G4String errMsg = "No reaction table was implemented";
645  G4Exception("G4MolecularInteractionTable::CanInteractWith", "",
646  FatalErrorInArgument, errMsg);
647  return 0;
648  }
649  ReactionDataMV::const_iterator it = fReactionDataMV.find(molecule);
650 
651  if (it == fReactionDataMV.end())
652  {
653  G4cout << "Nom : " << molecule->GetName() << G4endl;
654  G4String errMsg = "No reaction table was implemented for this molecule Definition : "
655  + molecule -> GetName();
656  G4Exception("G4MolecularInteractionTable::GetReactionData","",FatalErrorInArgument, errMsg);
657  return 0; // coverity
658  }
659 
660  return &(it->second);
661 }
662 
663 //______________________________________________________________________________
664 
667  const G4String& mol2) const
668 {
670  ->GetConfiguration(mol1);
672  ->GetConfiguration(mol2);
673 
674  return GetReactionData(conf1, conf2);
675 }
676 
677 //______________________________________________________________________________
678 
679 void
681 SetPolynomialParameterization(const std::vector<double>& P)
682 {
683  fRateParam = std::bind(PolynomialParam, std::placeholders::_1, P);
684 }
685 
686 //______________________________________________________________________________
687 
689  double E_R)
690 {
691  std::vector<double> P = {A0, E_R};
692 
693  G4cout << "ici = " << P[0] << G4endl;
694  G4cout << "A0 = " << A0 << G4endl;
695 
696  fRateParam = std::bind(ArrehniusParam, std::placeholders::_1, P);
697 }
698 
699 //______________________________________________________________________________
700 
702  double rateCste)
703 {
704  fRateParam = std::bind(ScaledParameterization,
705  std::placeholders::_1,
706  temperature_K,
707  rateCste);
708 }
709 
710 //______________________________________________________________________________
711 
713 {
714  size_t end = fVectorOfReactionData.size();
715 
716  for(size_t i = 0 ; i < end ; ++i)
717  {
719  ScaleForNewTemperature(temp_K);
720  }
721 }
722 
723 //______________________________________________________________________________
724 
726 {
727  if(fRateParam)
728  {
729  SetObservedReactionRateConstant(fRateParam(temp_K));
730 
731 // G4cout <<"PROD RATE = " << fProductionRate << G4endl;
732 //
733 // if(fProductionRate != DBL_MAX && fProductionRate !=0)
734 // {
735 // SetPartiallyDiffusionControlledReactionByActivation(fObservedReactionRate,
736 // fProductionRate);
737 // }
738  }
739 }
740 
741 //______________________________________________________________________________
742 
745 {
746  for(size_t i = 0 ; i < fVectorOfReactionData.size() ; ++i)
747  {
748  if(fVectorOfReactionData[i]->GetReactionID() == reactionID)
749  return fVectorOfReactionData[i];
750  }
751  return nullptr;
752 }
static G4DNAMolecularReactionTable * Instance()
const G4String & GetName() const
static const double m3
static const double m3
Definition: G4SIunits.hh:130
static double PolynomialParam(double temp_K, std::vector< double > P)
static const double nanometer
Definition: G4SIunits.hh:100
void ScaleReactionRateForNewTemperature(double temp_K)
G4ReactionTableMessenger * fpMessenger
G4MolecularConfiguration * GetProduct(G4int i) const
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:371
G4MolecularConfiguration * GetReactant2() const
void SetReactant1(G4MolecularConfiguration *reactive)
static const double mole
int G4int
Definition: G4Types.hh:78
float Avogadro
Definition: hepunit.py:253
static double P[]
static G4DNAMolecularReactionTable * GetReactionTable()
static const double s
Definition: G4SIunits.hh:168
void SetReaction(G4double observedReactionRate, G4MolecularConfiguration *reactive1, G4MolecularConfiguration *reactive2)
Char_t n[5]
G4GLOB_DLL std::ostream G4cout
void SetReactionTable(const G4DNAMolecularReactionTable *)
virtual G4double GetReactionRadius(G4MolecularConfiguration *, G4MolecularConfiguration *)=0
static double DiffCoeffWater(double temperature_K)
static G4MoleculeTable * Instance()
void SetArrehniusParameterization(double A0, double E_R)
void PrintTable(G4VDNAReactionModel *=0)
#define TRUE
Definition: globals.hh:55
G4MolecularConfiguration * fReactant1
void AddProduct(G4MolecularConfiguration *molecule)
G4MolecularConfiguration * GetReactant1() const
static double ArrehniusParam(double temp_K, std::vector< double > P)
static G4DNAMolecularReactionTable * fInstance
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
static double ScaledParameterization(double temp_K, double temp_init, double rateCste_init)
const G4DNAMolecularReactionData * GetReactionData(G4MolecularConfiguration *, G4MolecularConfiguration *) const
void SetReactants(G4MolecularConfiguration *reactive1, G4MolecularConfiguration *reactive2)
static const double s
static const double pi
Definition: G4SIunits.hh:74
std::vector< G4MolecularConfiguration * > * fProducts
void SetReactant2(G4MolecularConfiguration *reactive)
static G4MoleculeTable * GetMoleculeTable()
void SetPolynomialParameterization(const std::vector< double > &P)
void SetScaledParameterization(double temperature_K, double rateCste)
static const double mole
Definition: G4SIunits.hh:283
#define G4endl
Definition: G4ios.hh:61
G4MolecularConfiguration * fReactant2
const std::map< G4MolecularConfiguration *, const G4DNAMolecularReactionData * > * GetReativesNData(G4MolecularConfiguration *) const
const G4DNAMolecularReactionTable * GetReactionTable()
double G4double
Definition: G4Types.hh:76
std::vector< const G4DNAMolecularReactionData * > fVectorOfReactionData
const G4DNAMolecularReactionData * GetReaction(int reactionID) const
subroutine title
Definition: hijing1.383.f:5981
virtual void InitialiseToPrint(G4MolecularConfiguration *)=0
const std::vector< G4MolecularConfiguration * > * CanReactWith(G4MolecularConfiguration *) const
G4MolecularConfiguration * GetConfiguration(const G4String &, bool mustExist=true)