Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4GIDI Class Reference

#include <G4GIDI.hh>

Public Member Functions

 G4GIDI (int ip, std::string &dataDirectory)
 
 G4GIDI (int ip, std::list< std::string > &dataDirectory)
 
 ~G4GIDI ()
 
int numberOfDataDirectories (void)
 
int addDataDirectory (std::string &dataDirectory)
 
int removeDataDirectory (std::string &dataDirectory)
 
std::string getDataDirectoryAtIndex (int index)
 
std::vector< std::string > * getDataDirectories (void)
 
bool isThisDataAvailable (std::string &lib_name, int iZ, int iA, int iM=0)
 
bool isThisDataAvailable (std::string &lib_name, std::string &targetName)
 
char * dataFilename (std::string &lib_name, int iZ, int iA, int iM=0)
 
char * dataFilename (std::string &lib_name, std::string &targetName)
 
std::vector< std::string > * getNamesOfAvailableLibraries (int iZ, int iA, int iM=0)
 
std::vector< std::string > * getNamesOfAvailableLibraries (std::string &targetName)
 
std::vector< std::string > * getNamesOfAvailableTargets (void)
 
G4GIDI_targetreadTarget (std::string &lib_name, int iZ, int iA, int iM=0, bool bind=true)
 
G4GIDI_targetreadTarget (std::string &lib_name, std::string &targetName, bool bind=true)
 
G4GIDI_targetgetAlreadyReadTarget (int iZ, int iA, int iM=0)
 
G4GIDI_targetgetAlreadyReadTarget (std::string &targetName)
 
int freeTarget (int iZ, int iA, int iM=0)
 
int freeTarget (std::string &targetSymbol)
 
int freeTarget (G4GIDI_target *target)
 
std::vector< std::string > * getListOfReadTargetsNames (void)
 

Detailed Description

Definition at line 43 of file G4GIDI.hh.

Constructor & Destructor Documentation

◆ G4GIDI() [1/2]

G4GIDI::G4GIDI ( int  ip,
std::string &  dataDirectory 
)

Definition at line 40 of file G4GIDI.cc.

40 {
41
42 init( ip );
43 addDataDirectory( dataDirectory );
44}
int addDataDirectory(std::string &dataDirectory)
Definition: G4GIDI.cc:110

◆ G4GIDI() [2/2]

G4GIDI::G4GIDI ( int  ip,
std::list< std::string > &  dataDirectory 
)

◆ ~G4GIDI()

G4GIDI::~G4GIDI ( void  )

Definition at line 58 of file G4GIDI.cc.

58 {
59
60 G4GIDI_target *target;
61 list<G4GIDI_map *>::iterator iter;
62
63 while( targets.size( ) > 0 ) {
64 target = targets.back( );
65 targets.pop_back( );
66 delete target;
67 } // Loop checking, 11.06.2015, T. Koi
68
69 while( ( iter = dataDirectories.begin( ) ) != dataDirectories.end( ) ) {
70 delete *iter;
71 dataDirectories.pop_front( );
72 }// Loop checking, 11.06.2015, T. Koi
73}

Member Function Documentation

◆ addDataDirectory()

int G4GIDI::addDataDirectory ( std::string &  dataDirectory)

Definition at line 110 of file G4GIDI.cc.

110 {
111
112 list<G4GIDI_map *>::iterator iter;
113
114 for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++ ) {
115 if( (*iter)->path( ) == dataDirectory ) return( 0 );
116 }
117
118 G4GIDI_map *map = new G4GIDI_map( dataDirectory );
119 dataDirectories.push_back( map );
120
121 return( 0 );
122}

Referenced by G4GIDI().

◆ dataFilename() [1/2]

char * G4GIDI::dataFilename ( std::string &  lib_name,
int  iZ,
int  iA,
int  iM = 0 
)

Definition at line 196 of file G4GIDI.cc.

196 {
197
198 char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM ), *fileName;
199
200 if( targetName == NULL ) return( NULL );
201 string targetSymbol( targetName );
202 fileName = dataFilename( lib_name, targetSymbol );
203 smr_freeMemory( (void **) &targetName );
204 return( fileName );
205}
char * G4GIDI_Misc_Z_A_m_ToName(int iZ, int iA, int im=0)
Definition: G4GIDI_Misc.cc:44
char * dataFilename(std::string &lib_name, int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:196
void * smr_freeMemory(void **p)

Referenced by dataFilename(), isThisDataAvailable(), and readTarget().

◆ dataFilename() [2/2]

char * G4GIDI::dataFilename ( std::string &  lib_name,
std::string &  targetName 
)

Definition at line 209 of file G4GIDI.cc.

209 {
210
211/*
212 char *path;
213 list<G4GIDI_map *>::iterator iter;
214
215 for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++ ) {
216 if( ( path = MCGIDI_map_findTarget( &((*iter)->smr), (*iter)->map, lib_name.c_str( ), projectile.c_str( ), targetSymbol.c_str( ) ) ) != NULL ) {
217 return( path );
218 }
219 }
220 return( NULL );
221*/
222//150121
223//
224 char *path;
225 list<G4GIDI_map *>::iterator iter;
226
227 for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++ ) {
228 if( ( path = MCGIDI_map_findTarget( NULL, (*iter)->map, lib_name.c_str(), projectile.c_str( ), targetSymbol.c_str( ) ) ) != NULL ) {
229 return( path );
230 }
231 }
232 return( NULL );
233}
char * MCGIDI_map_findTarget(statusMessageReporting *smr, MCGIDI_map *map, const char *evaluation, const char *projectile, const char *targetName)
Definition: MCGIDI_map.cc:376

◆ freeTarget() [1/3]

int G4GIDI::freeTarget ( G4GIDI_target target)

Definition at line 347 of file G4GIDI.cc.

347 {
348
349 vector<G4GIDI_target *>::iterator iter_targets;
350
351 for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
352 if( *iter_targets == target ) {
353 targets.erase( iter_targets );
354 delete target;
355 return( 0 );
356 }
357 }
358 return( 1 );
359}

◆ freeTarget() [2/3]

int G4GIDI::freeTarget ( int  iZ,
int  iA,
int  iM = 0 
)

Definition at line 363 of file G4GIDI.cc.

363 {
364
365 int status;
366 char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
367
368 if( targetName == NULL ) return( 1 );
369 string targetSymbol( targetName );
370 status = freeTarget( targetSymbol );
371 smr_freeMemory( (void **) &targetName );
372 return( status );
373}
int freeTarget(int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:363

Referenced by freeTarget().

◆ freeTarget() [3/3]

int G4GIDI::freeTarget ( std::string &  targetSymbol)

Definition at line 377 of file G4GIDI.cc.

377 {
378
379 vector<G4GIDI_target *>::iterator iter_targets;
380
381 for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
382 if( (*iter_targets)->name == targetSymbol ) return( freeTarget( *iter_targets ) );
383 }
384 return( 1 );
385}

◆ getAlreadyReadTarget() [1/2]

G4GIDI_target * G4GIDI::getAlreadyReadTarget ( int  iZ,
int  iA,
int  iM = 0 
)

Definition at line 321 of file G4GIDI.cc.

321 {
322
323 char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
324 G4GIDI_target *target;
325
326 if( targetName == NULL ) return( NULL );
327 string targetSymbol( targetName );
328 target = getAlreadyReadTarget( targetSymbol );
329 smr_freeMemory( (void **) &targetName );
330 return( target );
331}
G4GIDI_target * getAlreadyReadTarget(int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:321

Referenced by getAlreadyReadTarget().

◆ getAlreadyReadTarget() [2/2]

G4GIDI_target * G4GIDI::getAlreadyReadTarget ( std::string &  targetName)

Definition at line 335 of file G4GIDI.cc.

335 {
336
337 vector<G4GIDI_target *>::iterator iter_targets;
338
339 for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
340 if( ( (*iter_targets)->name == targetSymbol ) ) return( *iter_targets );
341 }
342 return( NULL );
343}

◆ getDataDirectories()

vector< string > * G4GIDI::getDataDirectories ( void  )

Definition at line 157 of file G4GIDI.cc.

157 {
158
159 int i = 0;
160 list<G4GIDI_map *>::iterator iter;
161 vector<string> *v = new vector<string>( numberOfDataDirectories( ) );
162
163 for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++, i++ ) (*v)[i] = string( (*iter)->fileName( ) );
164 return( v );
165}
int numberOfDataDirectories(void)
Definition: G4GIDI.cc:103

◆ getDataDirectoryAtIndex()

string G4GIDI::getDataDirectoryAtIndex ( int  index)

Definition at line 140 of file G4GIDI.cc.

140 {
141
142 list<G4GIDI_map *>::iterator iter;
143 unsigned i = (unsigned) index;
144
145 if( index >= 0 ) {
146 if( i >= dataDirectories.size( ) ) return( "" );
147 for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++, index-- ) {
148 if( index == 0 ) return( (*iter)->fileName( ) );
149 }
150 }
151
152 return( "" );
153}

◆ getListOfReadTargetsNames()

vector< string > * G4GIDI::getListOfReadTargetsNames ( void  )

Definition at line 389 of file G4GIDI.cc.

389 {
390
391 vector<G4GIDI_target *>::iterator iter_targets;
392 vector<string> *listOfTargets;
393
394 listOfTargets = new vector<string>( );
395 if( listOfTargets == NULL ) return( NULL );
396 for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
397 listOfTargets->push_back( *(*iter_targets)->getName( ) );
398 }
399 return( listOfTargets );
400}

◆ getNamesOfAvailableLibraries() [1/2]

vector< string > * G4GIDI::getNamesOfAvailableLibraries ( int  iZ,
int  iA,
int  iM = 0 
)

Definition at line 237 of file G4GIDI.cc.

237 {
238
239 char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
240 vector<string> *listOfLibraries;
241
242 if( targetName == NULL ) return( new vector<string>( ) );
243 string targetSymbol( targetName );
244 listOfLibraries = getNamesOfAvailableLibraries( targetSymbol );
245 smr_freeMemory( (void **) &targetName );
246 return( listOfLibraries );
247}
std::vector< std::string > * getNamesOfAvailableLibraries(int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:237

Referenced by G4LENDManager::GetLENDTarget(), getNamesOfAvailableLibraries(), and G4LENDManager::IsLENDTargetAvailable().

◆ getNamesOfAvailableLibraries() [2/2]

vector< string > * G4GIDI::getNamesOfAvailableLibraries ( std::string &  targetName)

Definition at line 251 of file G4GIDI.cc.

251 {
252
253 list<G4GIDI_map *>::iterator iter;
254 vector<string> *listOfLibraries = new vector<string>( );
255
256 MCGIDI_map *map;
257 MCGIDI_mapEntry *entry;
258
259 for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++ ) {
260 map = MCGIDI_map_findAllOfTarget( &((*iter)->smr), (*iter)->map, projectile.c_str( ), targetName.c_str( ) );
261 for( entry = MCGIDI_map_getFirstEntry( map ); entry != NULL; entry = MCGIDI_map_getNextEntry( entry ) ) {
262 listOfLibraries->push_back( entry->evaluation );
263 }
264 MCGIDI_map_free( NULL, map );
265 }
266 return( listOfLibraries );
267}
void * MCGIDI_map_free(statusMessageReporting *smr, MCGIDI_map *map)
Definition: MCGIDI_map.cc:173
MCGIDI_mapEntry * MCGIDI_map_getFirstEntry(MCGIDI_map *map)
Definition: MCGIDI_map.cc:204
MCGIDI_mapEntry * MCGIDI_map_getNextEntry(MCGIDI_mapEntry *entry)
Definition: MCGIDI_map.cc:211
MCGIDI_map * MCGIDI_map_findAllOfTarget(statusMessageReporting *smr, MCGIDI_map *map, const char *projectile, const char *targetName)
Definition: MCGIDI_map.cc:430

◆ getNamesOfAvailableTargets()

vector< string > * G4GIDI::getNamesOfAvailableTargets ( void  )

Definition at line 271 of file G4GIDI.cc.

271 {
272
273 vector<string> *listOfTargets;
274 list<G4GIDI_map *>::iterator iter_map;
275
276 listOfTargets = new vector<string>( );
277 if( listOfTargets == NULL ) return( NULL );
278 for( iter_map = dataDirectories.begin( ); iter_map != dataDirectories.end( ); iter_map++ ) {
279 if( MCGIDI_map_walkTree( NULL, (*iter_map)->map, getNamesOfAvailableTargets_walker, (void *) listOfTargets ) != 0 ) {
280 delete listOfTargets;
281 return( NULL );
282 }
283 }
284 return( listOfTargets );
285}
int getNamesOfAvailableTargets_walker(GIDI::MCGIDI_mapEntry *entry, int level, void *userData)
int MCGIDI_map_walkTree(statusMessageReporting *smr, MCGIDI_map *map, int(*handler)(MCGIDI_mapEntry *entry, int level, void *userData), void *userData)
Definition: MCGIDI_map.cc:494

◆ isThisDataAvailable() [1/2]

bool G4GIDI::isThisDataAvailable ( std::string &  lib_name,
int  iZ,
int  iA,
int  iM = 0 
)

Definition at line 169 of file G4GIDI.cc.

169 {
170
171 bool b;
172 char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
173
174 if( targetName == NULL ) return( false );
175 string targetSymbol( targetName );
176 b = isThisDataAvailable( lib_name, targetSymbol );
177 smr_freeMemory( (void **) &targetName );
178 return( b );
179}
bool isThisDataAvailable(std::string &lib_name, int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:169

Referenced by G4LENDManager::GetLENDTarget(), and isThisDataAvailable().

◆ isThisDataAvailable() [2/2]

bool G4GIDI::isThisDataAvailable ( std::string &  lib_name,
std::string &  targetName 
)

Definition at line 183 of file G4GIDI.cc.

183 {
184
185 char *path = dataFilename( lib_name, targetName );
186
187 if( path != NULL ) {
188 smr_freeMemory( (void **) &path );
189 return( true );
190 }
191 return( false );
192}

◆ numberOfDataDirectories()

int G4GIDI::numberOfDataDirectories ( void  )

Definition at line 103 of file G4GIDI.cc.

103 {
104
105 return( dataDirectories.size( ) );
106}

Referenced by getDataDirectories().

◆ readTarget() [1/2]

G4GIDI_target * G4GIDI::readTarget ( std::string &  lib_name,
int  iZ,
int  iA,
int  iM = 0,
bool  bind = true 
)

Definition at line 289 of file G4GIDI.cc.

289 {
290
291 char *targetName = G4GIDI_Misc_Z_A_m_ToName( iZ, iA, iM );
292 G4GIDI_target *target;
293
294 if( targetName == NULL ) return( NULL );
295 string targetSymbol( targetName );
296 target = readTarget( lib_name, targetSymbol, bind );
297 smr_freeMemory( (void **) &targetName );
298 return( target );
299}
G4GIDI_target * readTarget(std::string &lib_name, int iZ, int iA, int iM=0, bool bind=true)
Definition: G4GIDI.cc:289

Referenced by G4LENDManager::GetLENDTarget(), and readTarget().

◆ readTarget() [2/2]

G4GIDI_target * G4GIDI::readTarget ( std::string &  lib_name,
std::string &  targetName,
bool  bind = true 
)

Definition at line 303 of file G4GIDI.cc.

303 {
304
305 vector<G4GIDI_target *>::iterator iter_targets;
306
307 for( iter_targets = targets.begin( ); iter_targets != targets.end( ); iter_targets++ ) {
308 if( (*iter_targets)->name == targetName ) return( NULL );
309 }
310 char *path = dataFilename( lib_name, targetName );
311 if( path == NULL ) return( NULL );
312
313 G4GIDI_target *target = new G4GIDI_target( path );
314 if( bind ) targets.push_back( target );
315 smr_freeMemory( (void **) &path );
316 return( target );
317}

◆ removeDataDirectory()

int G4GIDI::removeDataDirectory ( std::string &  dataDirectory)

Definition at line 126 of file G4GIDI.cc.

126 {
127
128 list<G4GIDI_map *>::iterator iter;
129
130 for( iter = dataDirectories.begin( ); iter != dataDirectories.end( ); iter++ ) {
131 if( dataDirectory == (*iter)->path( ) ) {
132
133 }
134 }
135 return( 0 );
136}

The documentation for this class was generated from the following files: