Ignore:
Timestamp:
May 28, 2009, 4:26:57 PM (15 years ago)
Author:
garnier
Message:

maj sur la beta de geant 4.9.3

Location:
trunk/source/processes/hadronic/management
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/management/History

    r1007 r1055  
    1414     * Please list in reverse chronological order (last date on top)
    1515     ---------------------------------------------------------------
     16
     1725 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-04)
     18---------------------------------------------------------
     19- G4HadronicProcessStore - added protection to the Clean method
     20
     2122 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-03)
     22---------------------------------------------------------
     23
     2414 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-02)
     25---------------------------------------------------------
     26- G4HadronicProcessStore - added Clean method and cleanup of model
     27                           and cross section stores
     28
     2906 February 2009 Vladimir Ivanchenko (hadr-man-V09-02-01)
     30---------------------------------------------------------
     31
     3224 January 2009 Vladimir Ivanchenko (hadr-man-V09-02-00)
     33-------------------------------------------------------
     34- G4HadronicProcessStore - added destruction of processes
    1635
    173601 December 2008 Dennis Wright (hadr-man-V09-01-10)
  • trunk/source/processes/hadronic/management/include/G4HadronicProcessStore.hh

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4HadronicProcessStore.hh,v 1.3 2008/10/22 07:58:20 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4HadronicProcessStore.hh,v 1.5 2009/02/15 16:50:15 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929//
     
    7272  ~G4HadronicProcessStore();
    7373
     74  void Clean();
     75
    7476  G4double GetInelasticCrossSectionPerVolume(
    7577    const G4ParticleDefinition *aParticle,
  • trunk/source/processes/hadronic/management/src/G4HadronicProcessStore.cc

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4HadronicProcessStore.cc,v 1.7 2008/10/22 07:58:20 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4HadronicProcessStore.cc,v 1.12 2009/02/25 16:29:03 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    3939//
    4040// Modifications:
    41 //
     41// 23.01.2009 V.Ivanchenko add destruction of processes
    4242//
    4343// Class Description:
     44// Singleton to store hadronic processes, to provide access to processes
     45// and to printout information about processes
    4446//
    4547// -------------------------------------------------------------------
     
    5355#include "G4Electron.hh"
    5456#include "G4Proton.hh"
     57#include "G4HadronicInteractionRegistry.hh"
     58#include "G4CrossSectionDataSetRegistry.hh"
    5559
    5660G4HadronicProcessStore* G4HadronicProcessStore::theInstance = 0;
     
    7175G4HadronicProcessStore::~G4HadronicProcessStore()
    7276{
    73   /*
    74   for (G4int i=0; i<n_proc; i++) {
    75     if( process[i] ) delete process[i];
    76   }
    77   */
     77  Clean();
     78  G4HadronicInteractionRegistry::Instance()->Clean();
     79  G4CrossSectionDataSetRegistry::Instance()->Clean();
     80}
     81
     82//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
     83
     84void G4HadronicProcessStore::Clean()
     85{
     86  G4int i;
     87  //G4cout << "G4HadronicProcessStore::Clean() Nproc= " << n_proc
     88  //     << "  Nextra= " << n_extra << G4endl;
     89  if(n_proc > 0) {
     90    for (i=0; i<n_proc; i++) {
     91      if( process[i] ) {
     92        //G4cout << "G4HadronicProcessStore::Clean() delete hadronic " << i << G4endl;
     93        //G4cout <<  process[i]->GetProcessName() << G4endl;
     94        delete process[i];
     95        process[i] = 0;
     96      }
     97    }
     98  }
     99  if(n_extra > 0) {
     100    for(i=0; i<n_extra; i++) {
     101      if(extraProcess[i]) {
     102        //G4cout << "G4HadronicProcessStore::Clean() delete extra " 
     103        //       << i << G4endl;
     104        //G4cout << extraProcess[i]->GetProcessName() << G4endl;
     105        delete extraProcess[i];
     106        extraProcess[i] = 0;
     107      }
     108    }
     109  }
     110  //G4cout << "G4HadronicProcessStore::Clean() done" << G4endl;
     111  n_extra = 0;
     112  n_proc = 0;
    78113}
    79114
     
    325360void G4HadronicProcessStore::Register(G4HadronicProcess* proc)
    326361{
    327   for(G4int i=0; i<n_proc; i++) {if(process[i] == proc) return;}
    328    
     362  if(0 < n_proc) {
     363    for(G4int i=0; i<n_proc; i++) {
     364      if(process[i] == proc) return;
     365    }
     366  }
     367  //G4cout << "G4HadronicProcessStore::Register hadronic " << n_proc
     368  //     << "  " << proc->GetProcessName() << G4endl;
    329369  n_proc++;
    330370  process.push_back(proc);
     
    384424void G4HadronicProcessStore::DeRegister(G4HadronicProcess* proc)
    385425{
     426  if(0 == n_proc) return;
    386427  for(G4int i=0; i<n_proc; i++) {
    387428    if(process[i] == proc) {
    388429      process[i] = 0;
    389       break;
     430      return;
    390431    }
    391432  }
     
    396437void G4HadronicProcessStore::RegisterExtraProcess(G4VProcess* proc)
    397438{
    398   for(G4int i=0; i<n_extra; i++) {if(extraProcess[i] == proc) return;}
     439  if(0 < n_extra) {
     440    for(G4int i=0; i<n_extra; i++) {
     441      if(extraProcess[i] == proc) return;
     442    }
     443  }
     444  //G4cout << "Extra Process: " << n_extra << "  " <<  proc->GetProcessName()
     445  //     << "  " << proc << G4endl;
    399446   
    400447  n_extra++;
     
    437484void G4HadronicProcessStore::DeRegisterExtraProcess(G4VProcess* proc)
    438485{
     486  //G4cout << "Deregister Extra Process: " << proc << "   " << proc->GetProcessName() << G4endl;
     487  if(0 == n_extra) return;
    439488  for(G4int i=0; i<n_extra; i++) {
    440489    if(extraProcess[i] == proc) {
    441490      extraProcess[i] = 0;
    442       break;
     491      //G4cout << "Extra Process: " << i << " is deregisted " << G4endl;
     492      return;
    443493    }
    444494  }
Note: See TracChangeset for help on using the changeset viewer.