Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4GIDI.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/*
27# <<BEGIN-copyright>>
28# Copyright (c) 2010, Lawrence Livermore National Security, LLC.
29# Produced at the Lawrence Livermore National Laboratory
30# Written by Bret R. Beck, [email protected].
31# CODE-461393
32# All rights reserved.
33#
34# This file is part of GIDI. For details, see nuclear.llnl.gov.
35# Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
36#
37# Redistribution and use in source and binary forms, with or without modification,
38# are permitted provided that the following conditions are met:
39#
40# 1) Redistributions of source code must retain the above copyright notice,
41# this list of conditions and the disclaimer below.
42# 2) Redistributions in binary form must reproduce the above copyright notice,
43# this list of conditions and the disclaimer (as noted below) in the
44# documentation and/or other materials provided with the distribution.
45# 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
46# used to endorse or promote products derived from this software without
47# specific prior written permission.
48#
49# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
50# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
51# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
52# SHALL LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
53# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
54# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
55# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
56# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
57# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
58# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
59# <<END-copyright>>
60*/
61#ifndef G4GIDI_h_included
62#define G4GIDI_h_included 1
63
64#include <string>
65#include <list>
66#include <vector>
67
68#include <G4GIDI_Misc.hh>
69#include <G4GIDI_map.hh>
70#include <G4GIDI_target.hh>
71#include <G4GIDI_mass.hh>
72
73class G4GIDI {
74
75 private:
76 int projectileID;
77 std::list<G4GIDI_map *> dataDirectories;
78 std::vector<G4GIDI_target *> targets;
79
80 int init( int ip );
81
82 public:
83 G4GIDI( int ip, std::string &dataDirectory );
84 G4GIDI( int ip, std::list<std::string> &dataDirectory );
85 ~G4GIDI( );
86
87 int numberOfDataDirectories( void );
88 int addDataDirectory( std::string &dataDirectory );
89 int removeDataDirectory( std::string &dataDirectory );
90 std::string getDataDirectoryAtIndex( int index );
91 std::vector<std::string> *getDataDirectories( void );
92
93 bool isThisDataAvailable( std::string &lib_name, int iZ, int iA, int iM = 0 );
94 bool isThisDataAvailable( std::string &lib_name, std::string &targetName );
95
96 char *dataFilename( std::string &lib_name, int iZ, int iA, int iM = 0 );
97 char *dataFilename( std::string &lib_name, std::string &targetName );
98
99 std::vector<std::string> *getNamesOfAvailableLibraries( int iZ, int iA, int iM = 0 );
100 std::vector<std::string> *getNamesOfAvailableLibraries( std::string &targetName );
101
102 std::vector<std::string> *getNamesOfAvailableTargets( void );
103
104 G4GIDI_target *readTarget( std::string &lib_name, int iZ, int iA, int iM = 0, bool bind = true );
105 G4GIDI_target *readTarget( std::string &lib_name, std::string &targetName, bool bind = true );
106
107 G4GIDI_target *getAlreadyReadTarget( int iZ, int iA, int iM = 0 );
108 G4GIDI_target *getAlreadyReadTarget( std::string &targetName );
109
110 int freeTarget( int iZ, int iA, int iM = 0 );
111 int freeTarget( std::string &targetSymbol );
112 int freeTarget( G4GIDI_target *target );
113
114 std::vector<std::string> *getListOfReadTargetsNames( void );
115};
116
117#endif // End of G4GIDI_h_included
Definition: G4GIDI.hh:73
int removeDataDirectory(std::string &dataDirectory)
Definition: G4GIDI.cc:140
G4GIDI_target * getAlreadyReadTarget(int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:325
bool isThisDataAvailable(std::string &lib_name, int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:184
std::vector< std::string > * getNamesOfAvailableTargets(void)
Definition: G4GIDI.cc:275
std::vector< std::string > * getDataDirectories(void)
Definition: G4GIDI.cc:172
int numberOfDataDirectories(void)
Definition: G4GIDI.cc:117
std::string getDataDirectoryAtIndex(int index)
Definition: G4GIDI.cc:155
~G4GIDI()
Definition: G4GIDI.cc:90
std::vector< std::string > * getListOfReadTargetsNames(void)
Definition: G4GIDI.cc:393
G4GIDI_target * readTarget(std::string &lib_name, int iZ, int iA, int iM=0, bool bind=true)
Definition: G4GIDI.cc:293
int freeTarget(int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:367
int addDataDirectory(std::string &dataDirectory)
Definition: G4GIDI.cc:124
std::vector< std::string > * getNamesOfAvailableLibraries(int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:240
char * dataFilename(std::string &lib_name, int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:211