Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/lend/src/G4GIDI_Misc.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 # <<END-copyright>>
 29 */
 30 #include <string.h>
 31 #include <iostream>
 32 #include <string>
 33 #include <vector>
 34 #include <statusMessageReporting.h>
 35 #include <MCGIDI.h>
 36 #include <MCGIDI_misc.h>
 37 #include "G4GIDI_Misc.hh"
 38 using namespace std;
 39 using namespace GIDI;
 40 
 41 /*
 42 ***************************************************************
 43 */
 44 char *G4GIDI_Misc_Z_A_m_ToName( int iZ, int iA, int im ) {
 45 
 46     const char *Z = MCGIDI_misc_ZToSymbol( iZ );
 47     char S[128], mS[32], *name;
 48 
 49     if( Z == NULL ) return( NULL );
 50     if( iA == 0 ) {
 51         if( im != 0 ) return( NULL );
 52         snprintf( S, sizeof S, "%s_natural", Z ); }
 53     else {
 54         snprintf( S, sizeof S, "%s%d", Z, iA );
 55         if( im != 0 ) {
 56             //snprintf( mS, sizeof mS, "_m%d", im );
 57             //TK 170509
 58             //Fix inconsistency of name of excited isomer  between data and code
 59             snprintf( mS, sizeof mS, "m%d", im );
 60             strcat( S, mS );
 61         }
 62     }
 63     name = (char *) smr_malloc2( NULL, strlen( S ) + 1, 0, "name" );
 64     if( name != NULL ) strcpy( name, S );
 65     return( name );
 66 }
 67 /*
 68 ***************************************************************
 69 */
 70 char *G4GIDI_Misc_channelCompound( char *particle1, char *particle2 ) {
 71 
 72     int Z1, A1, m1, Z2, A2, m2, level1, level2;
 73 
 74     if( MCGIDI_miscNameToZAm( NULL, particle1, &Z1, &A1, &m1, &level1 ) ) return( NULL );
 75     if( MCGIDI_miscNameToZAm( NULL, particle2, &Z2, &A2, &m2, &level2 ) ) return( NULL );
 76     if( A1 == 0 ) A2 = 0;
 77     if( A2 == 0 ) A1 = 0;
 78     return( G4GIDI_Misc_Z_A_m_ToName( Z1 + Z2, A1 + A2, 0 ) );
 79 }
 80 #if 0
 81 /*
 82 ***************************************************************
 83 */
 84 int G4GIDI_Misc_channelProductsCompare( tpia_channel *channel, int nProducts, char **productNames ) {
 85 
 86     int i;
 87     tpia_product *product;
 88 
 89     if( channel->decayChannel.numberOfProducts != nProducts ) return( 0 );
 90     for( product = tpia_channel_getFirstProduct( channel ), i = 0; product != NULL; product = tpia_decayChannel_getNextProduct( product ), i++ ) {
 91         if( strcmp( product->productID->name, productNames[i] ) ) return( 0 );
 92     }
 93     return( 1 );
 94 }
 95 #endif
 96 /*
 97 ***************************************************************
 98 */
 99 int getNamesOfAvailableTargets_walker( MCGIDI_mapEntry *entry, int /*level*/, void *userData ) {
100 
101     vector<string> *listOfTargets = (vector<string> *) userData;
102     vector<string>::iterator iter;
103 
104     if( entry->type != MCGIDI_mapEntry_type_target ) return( 0 );
105     for( iter = listOfTargets->begin( ); iter != listOfTargets->end( ); iter++ ) {
106         if( entry->targetName == iter->c_str( ) ) return( 0 );
107     }
108     listOfTargets->push_back( entry->targetName );
109     return( 0 );
110 }
111