Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4MCCIndexConversionTable.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// G4MCCIndexConversionTable
27//
28// Class description:
29//
30// G4MCCIndexConversionTable is used by G4ProductionTable
31// when the cut table is retrieved from the file.
32// An index pointing to a Material-Cut-Couple can be different
33// from the index pointing to the same MCC in the file. This class
34// has a map between them.
35
36// Author: H.Kurashige, 20 August 2004 - First implementation
37// --------------------------------------------------------------------
38#ifndef G4MCCIndexConversionTable_hh
39#define G4MCCIndexConversionTable_hh 1
40
41#include <vector>
42#include "globals.hh"
43#include "G4ios.hh"
44
46{
47 public:
48
50 // Default constructor.
51
53 // Destructor.
54
55 void Reset(std::size_t size);
56 // reset conversion table
57
58 G4bool IsUsed(std::size_t index) const;
59 // returns 'true' if the indicated MCC in the file
60 // is used in the current production cut table
61
62 void SetNewIndex(std::size_t index, std::size_t new_value);
63 // set the index in the current production cut table
64 // for the indicated MCC in the file
65
66 G4int GetIndex(std::size_t index) const;
67 // get the index in the current production cut table
68 // for the indicated MCC in the file
69
70 std::size_t size() const;
71
72 protected:
73
74 std::vector<G4int> vecNewIndex;
75};
76
77// ------------------
78// Inline methods
79// ------------------
80
81inline
83{
84 // returns 'true' if the indicated MCC in the file
85 // is used in the current production cut table
86 return ((index < vecNewIndex.size()) && (vecNewIndex[index] >= 0));
87}
88
89inline
91 std::size_t new_value)
92{
93 // set the index in the current production cut table
94 // for the indicated MCC in the file
95 if (index < vecNewIndex.size()) vecNewIndex[index] = (G4int)new_value;
96}
97
98inline
100{
101 // get the index in the current production cut table
102 // for the indicated MCC in the file
103 return (index < vecNewIndex.size()) ? vecNewIndex[index] : -1;
104}
105
106inline
108{
109 return vecNewIndex.size();
110}
111
112#endif
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
void SetNewIndex(std::size_t index, std::size_t new_value)
G4bool IsUsed(std::size_t index) const
G4int GetIndex(std::size_t index) const