Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4DNAMolecularReactionTable.hh
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.hh 64057 2012-10-30 15:04:49Z gcosmo $
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#ifndef G4MolecularReactionTable_h
40#define G4MolecularReactionTable_h 1
41
42#include "G4ITReactionTable.hh"
43#include "G4Molecule.hh"
44#include <vector>
45#include <map>
46#include "G4ReferenceCast.hh"
47
50
51/**
52 * G4DNAMolecularReactionData contains the information
53 * relative to a given reaction (eg : °OH + °OH -> H2O2)
54 */
55
57{
58public :
60 const G4Molecule* reactive1,
61 const G4Molecule* reactive2);
63
64 const G4Molecule* GetReactive1() const { return fReactive1.get(); }
65 const G4Molecule* GetReactive2() const { return fReactive2.get(); }
66
69
70 //_____________________________________________________
71 void SetReactive1(const G4Molecule* reactive) ;
72 void SetReactive2(const G4Molecule* reactive) ;
73 void SetReactive(const G4Molecule* reactive1, const G4Molecule* reactive2);
74 void AddProduct(const G4Molecule* molecule);
75
77 {
78 if(fProducts) return fProducts->size();
79 return 0;
80 }
81
82 const G4Molecule* GetProduct(G4int i) const
83 {
84 if(fProducts) return (*fProducts)[i].get();
85 return 0;
86 }
87
88protected :
94
95 std::vector<G4MoleculeHandle>* fProducts;
96};
97
99{
100 bool operator () (const G4Molecule* molecule1, const G4Molecule* molecule2) const
101 {
102 return *molecule1<*molecule2;
103 }
104};
105
106/**
107 * G4DNAMolecularReactionTable sorts out the G4DNAMolecularReactionData
108 * for bimolecular reaction
109 */
110
112{
113protected:
116
117public :
119 static void DeleteInstance();
121
122 /**
123 * Define a reaction :
124 * First argument : reaction rate
125 * Second argument : reactant 1
126 * Third argument : reactant 2
127 * Fourth argument : a std std::vector holding the molecular products
128 * if this last argument is NULL then it will be interpreted as
129 * a reaction giving no products
130 */
131 void SetReaction(G4double observedReactionRate,
132 const G4Molecule* reactive1, const G4Molecule* reactive2);
133
135
137
138 //_________________________________________________________________
139 /**
140 * Given a molecule's type, it returns with which a reaction is allowed
141 */
142 const std::vector<const G4Molecule*>* CanReactWith(const G4Molecule* aMolecule) const ;
143 const std::map<const G4Molecule*, const G4DNAMolecularReactionData*, compMoleculeP>* GetReativesNData(const G4Molecule* aMolecule) const ;
144 const std::vector<const G4DNAMolecularReactionData*>* GetReactionData(const G4Molecule*) const ;
145
146 //_________________________________________________________________
148
149protected :
152
153 //_________________________________________________
154 typedef std::map<const G4Molecule*,
155 std::map<const G4Molecule*,
159 typedef std::map<const G4Molecule*,std::vector<const G4Molecule*>,compMoleculeP> ReactivesMV ;
160 typedef std::map<const G4Molecule*,std::vector<const G4DNAMolecularReactionData*>,compMoleculeP> ReactionDataMV ;
161
165};
166#endif /*G4MolecularReactionTable_HH*/
167
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
P * get() const
Definition: memory.h:1183
const G4Molecule * GetProduct(G4int i) const
void SetReactive2(const G4Molecule *reactive)
std::vector< G4MoleculeHandle > * fProducts
void AddProduct(const G4Molecule *molecule)
const G4Molecule * GetReactive2() const
void SetReactive1(const G4Molecule *reactive)
void SetReactive(const G4Molecule *reactive1, const G4Molecule *reactive2)
const G4Molecule * GetReactive1() const
std::map< const G4Molecule *, std::vector< const G4Molecule * >, compMoleculeP > ReactivesMV
static G4DNAMolecularReactionTable * GetReactionTable()
void SetReaction(G4double observedReactionRate, const G4Molecule *reactive1, const G4Molecule *reactive2)
std::map< const G4Molecule *, std::map< const G4Molecule *, const G4DNAMolecularReactionData *, compMoleculeP >, compMoleculeP > ReactionDataMap
void PrintTable(G4VDNAReactionModel *=0)
const std::map< const G4Molecule *, const G4DNAMolecularReactionData *, compMoleculeP > * GetReativesNData(const G4Molecule *aMolecule) const
const std::vector< const G4Molecule * > * CanReactWith(const G4Molecule *aMolecule) const
std::map< const G4Molecule *, std::vector< const G4DNAMolecularReactionData * >, compMoleculeP > ReactionDataMV
const G4DNAMolecularReactionData * GetReactionData(const G4Molecule *, const G4Molecule *) const
const G4MoleculeHandleManager * fMoleculeHandleManager
static G4DNAMolecularReactionTable * fInstance
bool operator()(const G4Molecule *molecule1, const G4Molecule *molecule2) const