Import Geant4 10.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 12:08:39 +02:00
parent 286caacf06
commit c9b32a6c0a
5770 changed files with 1050949 additions and 367105 deletions
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP2AInelasticFS_h
#define G4ParticleHP2AInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP2AInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP2AInelasticFS(){}
~G4ParticleHP2AInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP2AInelasticFS * theNew = new G4ParticleHP2AInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP2N2AInelasticFS_h
#define G4ParticleHP2N2AInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP2N2AInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP2N2AInelasticFS(){}
~G4ParticleHP2N2AInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP2N2AInelasticFS * theNew = new G4ParticleHP2N2AInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP2NAInelasticFS_h
#define G4ParticleHP2NAInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP2NAInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP2NAInelasticFS(){}
~G4ParticleHP2NAInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP2NAInelasticFS * theNew = new G4ParticleHP2NAInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP2NDInelasticFS_h
#define G4ParticleHP2NDInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP2NDInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP2NDInelasticFS(){}
~G4ParticleHP2NDInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP2NDInelasticFS * theNew = new G4ParticleHP2NDInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP2NInelasticFS_h
#define G4ParticleHP2NInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP2NInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP2NInelasticFS(){}
~G4ParticleHP2NInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP2NInelasticFS * theNew = new G4ParticleHP2NInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP2NPInelasticFS_h
#define G4ParticleHP2NPInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP2NPInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP2NPInelasticFS(){}
~G4ParticleHP2NPInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP2NPInelasticFS * theNew = new G4ParticleHP2NPInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP2PInelasticFS_h
#define G4ParticleHP2PInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP2PInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP2PInelasticFS(){}
~G4ParticleHP2PInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP2PInelasticFS * theNew = new G4ParticleHP2PInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP3AInelasticFS_h
#define G4ParticleHP3AInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP3AInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP3AInelasticFS(){}
~G4ParticleHP3AInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP3AInelasticFS * theNew = new G4ParticleHP3AInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP3NAInelasticFS_h
#define G4ParticleHP3NAInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP3NAInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP3NAInelasticFS(){}
~G4ParticleHP3NAInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP3NAInelasticFS * theNew = new G4ParticleHP3NAInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP3NInelasticFS_h
#define G4ParticleHP3NInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP3NInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP3NInelasticFS(){}
~G4ParticleHP3NInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP3NInelasticFS * theNew = new G4ParticleHP3NInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP3NPInelasticFS_h
#define G4ParticleHP3NPInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP3NPInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP3NPInelasticFS(){}
~G4ParticleHP3NPInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP3NPInelasticFS * theNew = new G4ParticleHP3NPInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHP4NInelasticFS_h
#define G4ParticleHP4NInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHP4NInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHP4NInelasticFS(){}
~G4ParticleHP4NInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHP4NInelasticFS * theNew = new G4ParticleHP4NInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPAInelasticFS_h
#define G4ParticleHPAInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticCompFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPAInelasticFS : public G4ParticleHPInelasticCompFS
{
public:
G4ParticleHPAInelasticFS(){}
~G4ParticleHPAInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPAInelasticFS * theNew = new G4ParticleHPAInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// 070613 fix memory leaking by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPAngular_h
#define G4ParticleHPAngular_h 1
#include "globals.hh"
#include "G4ios.hh"
#include <fstream>
#include "G4ReactionProduct.hh"
#include "Randomize.hh"
#include "G4ParticleHPLegendreStore.hh"
#include "G4ParticleHPPartial.hh"
class G4ParticleHPAngular
{
public:
G4ParticleHPAngular()
{
//TKDB110511
//theAngularDistributionType = 0;
//theIsoFlag = false;
theIsoFlag = true;
// TKDB
theCoefficients = 0;
theProbArray = 0;
}
~G4ParticleHPAngular()
{
// TKDB
delete theCoefficients;
delete theProbArray;
}
void Init(std::istream & aDataFile);
void SampleAndUpdate(G4ReactionProduct & anIncidentParticle);
void SetTarget(const G4ReactionProduct & aTarget) { theTarget = aTarget; }
void SetProjectileRP(const G4ReactionProduct & anIncidentParticleRP) { theProjectileRP = anIncidentParticleRP; }
inline G4double GetTargetMass() { return targetMass; }
private:
// the type of distribution; currently
// isotropic (0),
// and legendre representation (1)
// probability distribution (2)
// are supported
G4int theAngularDistributionType;
G4int frameFlag; // 1=Lab, 2=CMS
G4bool theIsoFlag; // isotropic or not?
G4ParticleHPLegendreStore * theCoefficients; // the legendre coefficients
G4ParticleHPPartial * theProbArray; // the probability array p,costh for energy
private:
G4double targetMass;
G4ReactionProduct theTarget;
G4ReactionProduct theProjectileRP;
};
#endif
@@ -0,0 +1,112 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPAngularP_h
#define G4ParticleHPAngularP_h 1
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4InterpolationManager.hh"
class G4ParticleHPAngularP
{
public:
G4ParticleHPAngularP()
{
theCosTh = 0;
theProb = 0;
}
~G4ParticleHPAngularP()
{
if(theCosTh!=0) delete [] theCosTh;
if(theProb!=0) delete [] theProb;
}
inline void Init(std::istream & aDataFile)
{
G4double eNeu, cosTheta, probDist;
G4int nProb;
aDataFile >> eNeu >> nProb;
theManager.Init(aDataFile);
eNeu *= CLHEP::eV;
Init(eNeu, nProb);
for (G4int iii=0; iii<nProb; iii++)
{
aDataFile >> cosTheta >> probDist;
SetCosTh(iii, cosTheta);
SetProb(iii,probDist);
}
}
inline void Init(G4double e, G4int n)
{
theCosTh = new G4double[n];
theProb = new G4double[n];
theEnergy = e;
nCoeff = n;
}
inline void SetEnergy(G4double energy){ theEnergy = energy; }
inline void SetCosTh(G4int l, G4double coeff) {theCosTh[l]=coeff;}
inline void SetProb(G4int l, G4double coeff) {theProb[l]=coeff;}
inline G4double GetCosTh(G4int l) {return theCosTh[l];}
inline G4double GetProb(G4int l) {return theProb[l];}
inline G4double GetEnergy(){return theEnergy;}
inline G4int GetNumberOfPoints(){ return nCoeff; }
inline G4double GetCosTh()
{
G4int i;
G4double rand = G4UniformRand();
G4double run=0, runo=0;
for (i=0; i<GetNumberOfPoints(); i++)
{
runo=run;
run += GetProb(i);
if(run>rand) break;
}
if(i == GetNumberOfPoints()) i--;
G4double costh = theInt.Interpolate(theManager.GetScheme(i), rand,
runo, run, GetCosTh(i-1), GetCosTh(i));
return costh;
}
private:
G4double theEnergy; // neutron energy
G4ParticleHPInterpolator theInt; // knows tointerpolate
G4int nCoeff;
G4InterpolationManager theManager; // knows the interpolation between stores
G4double * theCosTh;
G4double * theProb; // probability distribution as fcn of theta
// integral normalised to 1.
};
#endif
@@ -0,0 +1,121 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPArbitaryTab_h
#define G4ParticleHPArbitaryTab_h 1
#include <fstream>
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4ios.hh"
#include "Randomize.hh"
#include "G4ParticleHPVector.hh"
#include "G4VParticleHPEDis.hh"
#include "G4InterpolationManager.hh"
// we will need a List of these .... one per term.
class G4ParticleHPArbitaryTab : public G4VParticleHPEDis
{
public:
G4ParticleHPArbitaryTab()
{
theDistFunc = 0;
}
~G4ParticleHPArbitaryTab()
{
if(theDistFunc!=0) delete [] theDistFunc;
}
inline void Init(std::istream & theData)
{
G4int i;
theFractionalProb.Init(theData, CLHEP::eV);
theData >> nDistFunc; // = number of incoming n energy points
theDistFunc = new G4ParticleHPVector [nDistFunc];
theManager.Init(theData);
G4double currentEnergy;
for(i=0; i<nDistFunc; i++)
{
theData >> currentEnergy;
theDistFunc[i].SetLabel(currentEnergy*CLHEP::eV);
theDistFunc[i].Init(theData, CLHEP::eV);
//************************************************************************
//EMendoza:
//ThinOut() assumes that the data is linear-linear, what is false:
//theDistFunc[i].ThinOut(0.02); // @@@ optimization to be finished.
//************************************************************************
}
//************************************************************************
//EMendoza:
//Here we calculate the thresholds for the 2D sampling:
for(i=0; i<nDistFunc; i++){
G4int np=theDistFunc[i].GetVectorLength();
theLowThreshold[i]=theDistFunc[i].GetEnergy(0);
theHighThreshold[i]=theDistFunc[i].GetEnergy(np-1);
for(G4int j=0;j<np-1;j++){
if(theDistFunc[i].GetXsec(j+1)>1.e-20){
theLowThreshold[i]=theDistFunc[i].GetEnergy(j);
break;
}
}
for(G4int j=1;j<np;j++){
if(theDistFunc[i].GetXsec(j-1)>1.e-20){
theHighThreshold[i]=theDistFunc[i].GetEnergy(j);
}
}
}
//************************************************************************
}
inline G4double GetFractionalProbability(G4double anEnergy)
{
return theFractionalProb.GetY(anEnergy);
}
G4double Sample(G4double anEnergy) ;
private:
G4ParticleHPVector theFractionalProb;
G4int nDistFunc;
G4InterpolationManager theManager; // knows the interpolation between stores
G4ParticleHPVector * theDistFunc; // one per incoming energy
G4ParticleHPVector theBuffer;
//************************************************************************
//EMendoza:
G4double theLowThreshold[1000];
G4double theHighThreshold[1000];
//************************************************************************
};
#endif
@@ -0,0 +1,86 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
//
// File name: G4ParticleHPBGGNucleonInelasticXS
//
// Author: KOI, Tatsumi
// Modifications:
//
//
// Class Description:
//
// Wrapper of proton and neutron inelastic cross-sections using Barashenkov
// parametersation below 100 GeV and Glauber-Gribov model above
//
// -------------------------------------------------------------------
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPBGGNucleonInelasticXS_h
#define G4ParticleHPBGGNucleonInelasticXS_h
#include "globals.hh"
#include "G4VCrossSectionDataSet.hh"
#include "G4ParticleDefinition.hh"
#include "G4BGGNucleonInelasticXS.hh"
/*
class G4GlauberGribovCrossSection;
class G4NucleonNuclearCrossSection;
class G4HadronNucleonXsc;
class G4HadronInelasticDataSet;
*/
class G4Material;
class G4Element;
class G4Isotope;
class G4ParticleHPBGGNucleonInelasticXS : public G4BGGNucleonInelasticXS
{
public:
G4ParticleHPBGGNucleonInelasticXS (const G4ParticleDefinition*);
virtual ~G4ParticleHPBGGNucleonInelasticXS();
virtual
G4bool IsElementApplicable(const G4DynamicParticle*, G4int Z,
const G4Material* mat = 0);
virtual
G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A,
const G4Element* elm = 0,
const G4Material* mat = 0);
private:
G4double fLowEnergyLimitForHPN;
};
#endif
@@ -0,0 +1,78 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// Hadronic Process: Very Low Energy Neutron X-Sections
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
// Builds and has the Cross-section data for one material.
// Class Description
// Final state production model for a high precision (based on evaluated data
// libraries) description of neutron capture below 20 MeV;
// To be used in your physics list in case you need this physics.
// In this case you want to register an object of this class with
// the corresponding process.
// Class Description - End
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPCapture_h
#define G4ParticleHPCapture_h 1
#include "globals.hh"
#include "G4ParticleHPChannel.hh"
#include "G4HadronicInteraction.hh"
class G4ParticleHPCapture : public G4HadronicInteraction
{
public:
G4ParticleHPCapture();
~G4ParticleHPCapture();
G4HadFinalState * ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus);
virtual const std::pair<G4double, G4double> GetFatalEnergyCheckLevels() const;
public:
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
private:
G4double * xSec;
//G4ParticleHPChannel * theCapture;
std::vector<G4ParticleHPChannel*> theCapture;
G4String dirName;
G4int numEle;
// G4int it;
G4HadFinalState theResult;
void addChannelForNewElement();
};
#endif
@@ -0,0 +1,102 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// 080417 Add IsZAApplicable method (return false) by T. Koi
// 080428 Add bool onFlightDB by T. Koi
// 091118 Add Ignore and Enable On Flight Doppler Broadening methods by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPCaptureData_h
#define G4ParticleHPCaptureData_h 1
// Class Description
// Cross-section data set for a high precision (based on evaluated data
// libraries) description of neutron capture below 20 MeV;
// To be used in your physics list in case you need this physics.
// In this case you want to register an object of this class with
// the corresponding process.
// Class Description - End
#include "G4VCrossSectionDataSet.hh"
#include "G4DynamicParticle.hh"
#include "G4Element.hh"
#include "G4ParticleDefinition.hh"
#include "G4PhysicsTable.hh"
class G4ParticleHPCaptureData : public G4VCrossSectionDataSet
{
public:
G4ParticleHPCaptureData();
~G4ParticleHPCaptureData();
G4bool IsIsoApplicable( const G4DynamicParticle* ,
G4int /*Z*/ , G4int /*A*/ ,
const G4Element* /*elm*/ ,
const G4Material* /*mat*/ );
G4double GetIsoCrossSection( const G4DynamicParticle* ,
G4int /*Z*/ , G4int /*A*/ ,
const G4Isotope* /*iso*/ ,
const G4Element* /*elm*/ ,
const G4Material* /*mat*/ );
//G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
public:
//G4bool IsZAApplicable( const G4DynamicParticle* , G4double /*ZZ*/, G4double /*AA*/)
//{ return false;}
G4double GetCrossSection(const G4DynamicParticle*, const G4Element*, G4double aT);
void BuildPhysicsTable(const G4ParticleDefinition&);
void DumpPhysicsTable(const G4ParticleDefinition&);
void IgnoreOnFlightDopplerBroadening(){ onFlightDB = false; };
void EnableOnFlightDopplerBroadening(){ onFlightDB = true; };
public:
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
private:
G4PhysicsTable * theCrossSections;
G4bool onFlightDB;
G4double ke_cache;
G4double xs_cache;
const G4Element* element_cache;
const G4Material* material_cache;
};
#endif
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPCaptureFS_h
#define G4ParticleHPCaptureFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPFinalState.hh"
#include "G4ReactionProductVector.hh"
#include "G4ParticleHPNames.hh"
#include "G4ParticleHPPhotonDist.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
class G4ParticleHPCaptureFS : public G4ParticleHPFinalState
{
public:
G4ParticleHPCaptureFS()
{
hasXsec = false;
hasExactMF6 = false;
targetMass = 0;
}
~G4ParticleHPCaptureFS()
{
}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition* );
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPCaptureFS * theNew = new G4ParticleHPCaptureFS;
return theNew;
}
private:
G4double targetMass;
G4ParticleHPPhotonDist theFinalStatePhotons;
G4ParticleHPEnAngCorrelation theMF6FinalState;
G4bool hasExactMF6;
G4ParticleHPNames theNames;
// G4double theCurrentA;
// G4double theCurrentZ;
};
#endif
@@ -0,0 +1,194 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// Hadronic Process: Very Low Energy Neutron X-Sections
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
// Builds and has the Cross-section data for one element and channel.
//
// Bug fixes and workarounds in the destructor, F.W.Jones 06-Jul-1999
// 070612 Fix memory leaking by T. Koi
//
// 080520 Delete unnecessary dependencies by T. Koi
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPChannel_h
#define G4ParticleHPChannel_h 1
#include "globals.hh"
#include "G4ParticleHPIsoData.hh"
#include "G4ParticleHPVector.hh"
#include "G4Material.hh"
#include "G4HadProjectile.hh"
//#include "G4NeutronInelasticProcess.hh"
//#include "G4HadronFissionProcess.hh"
//#include "G4HadronElasticProcess.hh"
//#include "G4HadronCaptureProcess.hh"
#include "G4StableIsotopes.hh"
#include "G4ParticleHPCaptureFS.hh"
#include "G4ParticleHPFinalState.hh"
#include "G4Element.hh"
#include "G4WendtFissionFragmentGenerator.hh"
class G4ParticleDefinition;
class G4ParticleHPChannel
{
public:
G4ParticleHPChannel(G4ParticleDefinition* projectile)
: wendtFissionGenerator(getenv("G4NEUTRON_HP_USE_WENDT_FISSION_MODEL") == NULL ? NULL : G4WendtFissionFragmentGenerator::GetInstance())
{
theProjectile = const_cast<G4ParticleDefinition*>(projectile);
theChannelData = new G4ParticleHPVector;
theBuffer = 0;
theIsotopeWiseData = 0;
theFinalStates = 0;
active = 0;
registerCount = -1;
}
G4ParticleHPChannel()
: wendtFissionGenerator(getenv("G4NEUTRON_HP_USE_WENDT_FISSION_MODEL") == NULL ? NULL : G4WendtFissionFragmentGenerator::GetInstance())
{
theProjectile = G4Neutron::Neutron();
theChannelData = new G4ParticleHPVector;
theBuffer = 0;
theIsotopeWiseData = 0;
theFinalStates = 0;
active = 0;
registerCount = -1;
}
~G4ParticleHPChannel()
{
delete theChannelData;
// Following statement disabled to avoid SEGV
// theBuffer is also deleted as "theChannelData" in
// ~G4ParticleHPIsoData. FWJ 06-Jul-1999
//if(theBuffer != 0) delete theBuffer;
if(theIsotopeWiseData != 0) delete [] theIsotopeWiseData;
// Deletion of FinalStates disabled to avoid endless looping
// in the destructor heirarchy. FWJ 06-Jul-1999
//if(theFinalStates != 0)
//{
// for(i=0; i<niso; i++)
// {
// delete theFinalStates[i];
// }
// delete [] theFinalStates;
//}
// FWJ experiment
//if(active!=0) delete [] active;
// T.K.
if ( theFinalStates != 0 )
{
for ( G4int i = 0 ; i < niso ; i++ )
{
delete theFinalStates[i];
}
delete [] theFinalStates;
}
if ( active != 0 ) delete [] active;
}
G4double GetXsec(G4double energy);
G4double GetWeightedXsec(G4double energy, G4int isoNumber);
G4double GetFSCrossSection(G4double energy, G4int isoNumber);
inline G4bool IsActive(G4int isoNumber) { return active[isoNumber]; }
inline G4bool HasFSData(G4int isoNumber) { return theFinalStates[isoNumber]->HasFSData(); }
inline G4bool HasAnyData(G4int isoNumber) { return theFinalStates[isoNumber]->HasAnyData(); }
G4bool Register(G4ParticleHPFinalState *theFS);
void Init(G4Element * theElement, const G4String dirName);
void Init(G4Element * theElement, const G4String dirName, const G4String fsType);
//void UpdateData(G4int A, G4int Z, G4int index, G4double abundance);
void UpdateData(G4int A, G4int Z, G4int index, G4double abundance, G4ParticleDefinition* projectile) { G4int M = 0; UpdateData( A, Z, M, index, abundance, projectile); };
void UpdateData(G4int A, G4int Z, G4int M, G4int index, G4double abundance, G4ParticleDefinition* projectile);
void Harmonise(G4ParticleHPVector *& theStore, G4ParticleHPVector * theNew);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack, G4int isoNumber=-1);
inline G4int GetNiso() {return niso;}
inline G4double GetN(G4int i) {return theFinalStates[i]->GetN();}
inline G4double GetZ(G4int i) {return theFinalStates[i]->GetZ();}
inline G4double GetM(G4int i) {return theFinalStates[i]->GetM();}
inline G4bool HasDataInAnyFinalState()
{
G4bool result = false;
G4int i;
for(i=0; i<niso; i++)
{
if(theFinalStates[i]->HasAnyData()) result = true;
}
return result;
}
void DumpInfo();
G4String GetFSType() const {
return theFSType;
}
G4ParticleHPFinalState ** GetFinalStates() const {
return theFinalStates;
}
private:
G4ParticleDefinition* theProjectile;
G4ParticleHPVector * theChannelData; // total (element) cross-section for this channel
G4ParticleHPVector * theBuffer;
G4ParticleHPIsoData * theIsotopeWiseData; // these are the isotope-wise cross-sections for each final state.
G4ParticleHPFinalState ** theFinalStates; // also these are isotope-wise pionters, parallel to the above.
G4bool * active;
G4int niso;
G4StableIsotopes theStableOnes;
G4String theDir;
G4String theFSType;
G4Element * theElement;
G4int registerCount;
G4WendtFissionFragmentGenerator* const wendtFissionGenerator;
};
#endif
@@ -0,0 +1,117 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// Hadronic Process: Very Low Energy Neutron X-Sections
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
// Builds and has the Cross-section data for one material.
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPChannelList_h
#define G4ParticleHPChannelList_h 1
#include "globals.hh"
#include "G4ParticleHPChannel.hh"
#include "G4StableIsotopes.hh"
class G4Element;
class G4HadFinalState;
class G4HadProjectile;
class G4ParticleHPFinalState;
class G4ParticleDefinition;
class G4ParticleHPChannelList
{
public:
G4ParticleHPChannelList(G4int n, G4ParticleDefinition* projectile);
G4ParticleHPChannelList();
void Init(G4int n);
~G4ParticleHPChannelList();
G4HadFinalState * ApplyYourself(const G4Element * theElement, const G4HadProjectile & aTrack);
void Init(G4Element * anElement, const G4String & dirName, G4ParticleDefinition* projectile);
void Register(G4ParticleHPFinalState *theFS, const G4String &aName);
inline G4double GetXsec(G4double anEnergy)
{
G4double result=0;
G4int i;
for(i=0; i<nChannels; i++)
{
result+=std::max(0., theChannels[i]->GetXsec(anEnergy));
}
return result;
}
inline G4int GetNumberOfChannels() { return nChannels; }
inline G4bool HasDataInAnyFinalState()
{
G4bool result = false;
G4int i;
for(i=0; i<nChannels; i++)
{
if(theChannels[i]->HasDataInAnyFinalState()) result = true;
}
return result;
}
inline void RestartRegistration()
{
allChannelsCreated = true;
theInitCount = 0;
}
void DumpInfo();
private:
static G4ThreadLocal G4int trycounter;
G4ParticleHPChannel ** theChannels;
G4int nChannels;
G4String theDir;
G4Element * theElement;
G4bool allChannelsCreated;
G4int theInitCount;
G4StableIsotopes theStableOnes;
G4ParticleDefinition* theProjectile;
G4HadFinalState unChanged;
};
#endif
@@ -0,0 +1,189 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// 080718 Add ClearHistories method and related class member
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPContAngularPar_h
#define G4ParticleHPContAngularPar_h 1
#include "G4ios.hh"
#include <fstream>
#include "globals.hh"
#include "G4ParticleHPList.hh"
#include "G4ReactionProduct.hh"
#include "G4ParticleHPInterpolator.hh"
#include "G4InterpolationManager.hh"
#include <set>
class G4ParticleDefinition;
class G4ParticleHPContAngularPar
{
public:
G4ParticleHPContAngularPar()
{
theAngular = 0;
currentMeanEnergy = -2;
fresh = true;
theMinEner = DBL_MAX;
theMaxEner = -DBL_MAX;
}
G4ParticleHPContAngularPar(G4ParticleDefinition* projectile);
~G4ParticleHPContAngularPar()
{
if(theAngular!=0) delete [] theAngular;
}
void Init(std::istream & aDataFile, G4ParticleDefinition* projectile);
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass,
G4int angularRep, G4int interpol);
G4double GetEnergy() {
if( getenv("G4PHPTEST") ) G4cout << this << " G4ParticleHPContAngularPar::GetEnergy " << theEnergy << " nE " << nEnergies << G4endl;
return theEnergy; }
void SetPrimary(G4ReactionProduct * aPrimary)
{
thePrimary = aPrimary;
}
void SetTarget(G4ReactionProduct * aTarget)
{
theTarget = aTarget;
}
void SetTargetCode(G4double aTargetCode) { theTargetCode = aTargetCode; }
void SetInterpolation(G4int theInterpolation)
{
theManager.Init(theInterpolation, nEnergies); // one range only
}
void BuildByInterpolation(G4double anEnergy, G4InterpolationScheme aScheme,
G4ParticleHPContAngularPar & store1,
G4ParticleHPContAngularPar & store2); // hmmmm, this interpolates legendre coefficients. Dangerous @@@
void PrepareTableInterpolation(const G4ParticleHPContAngularPar* angularPrev);
G4double MeanEnergyOfThisInteraction()
{
G4double result;
if(currentMeanEnergy<-1)
{
return 0;
// throw G4HadronicException(__FILE__, __LINE__, "G4ParticleHPContAngularPar: Logical error in Product class");
}
else
{
result = currentMeanEnergy;
}
currentMeanEnergy = -2;
return result;
}
G4int GetNEnergies() const
{
return nEnergies;
}
G4int GetNDiscreteEnergies() const
{
return nDiscreteEnergies;
}
std::set<G4double> GetEnergiesTransformed() const
{
return theEnergiesTransformed;
}
G4int GetNEnergiesTransformed() const
{
return theEnergiesTransformed.size();
}
G4double GetMinEner() const
{
return theMinEner;
}
G4double GetMaxEner() const
{
return theMaxEner;
}
std::map<G4double,G4int> GetDiscreteEnergiesOwn() const
{
return theDiscreteEnergiesOwn;
}
G4ParticleHPList* GetAngDataList() const {
return theAngular;
}
private:
// incoming particle
G4double theEnergy;
// number of exit channel energies
G4int nEnergies;
// number of discrete exit channels
G4int nDiscreteEnergies;
// number of angular paramerers per channel
G4int nAngularParameters;
// knows the interpolation between List labels
G4InterpolationManager theManager;
// on per exit-channel energy
G4ParticleHPList * theAngular;
G4ParticleHPInterpolator theInt;
G4double theTargetCode;
G4ReactionProduct * theTarget;
G4ReactionProduct * thePrimary;
G4double currentMeanEnergy;
//080718
public:
void ClearHistories(){ fresh = true; };
void Dump();
private:
G4bool fresh;
G4double remaining_energy; // represent energy rest of cascade chain
G4ParticleDefinition* theProjectile;
G4bool adjustResult; // if not set it will not force the conservation of energy in angularRep==1, but will sample the particle energy according to the database
G4double theMinEner;
G4double theMaxEner;
std::set<G4double> theEnergiesTransformed;
std::set<G4double> theDiscreteEnergies;
std::map<G4double,G4int> theDiscreteEnergiesOwn;
};
#endif
@@ -0,0 +1,104 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// 080721 Add ClearHistories() method by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPContEnergyAngular_h
#define G4ParticleHPContEnergyAngular_h 1
#include "G4ios.hh"
#include <fstream>
#include "globals.hh"
#include "G4VParticleHPEnergyAngular.hh"
#include "G4ParticleHPContAngularPar.hh"
#include "G4InterpolationManager.hh"
class G4ParticleDefinition;
// we will need one of these per product.
class G4ParticleHPContEnergyAngular : public G4VParticleHPEnergyAngular
{
public:
G4ParticleHPContEnergyAngular(G4ParticleDefinition* proj)
: theProjectile(proj)
{
theAngular = 0;
currentMeanEnergy = -2;
}
~G4ParticleHPContEnergyAngular()
{
if(theAngular!=0) delete [] theAngular;
}
public:
void Init(std::istream & aDataFile)
{
aDataFile >> theTargetCode >> theAngularRep >> theInterpolation >> nEnergy;
theAngular = new G4ParticleHPContAngularPar[nEnergy];
theManager.Init(aDataFile);
for(G4int i=0; i<nEnergy; i++)
{
theAngular[i].Init(aDataFile, theProjectile);
theAngular[i].SetInterpolation(theInterpolation);
#ifndef PHP_AS_HP
if( i != 0 ) {
theAngular[i].PrepareTableInterpolation(&(theAngular[i-1]));
} else {
theAngular[i].PrepareTableInterpolation((G4ParticleHPContAngularPar*)0);
}
#endif
}
}
G4double MeanEnergyOfThisInteraction();
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass);
private:
G4double theTargetCode;
G4int theAngularRep;
G4int nEnergy;
G4int theInterpolation;
G4InterpolationManager theManager; // knows the interpolation between stores
G4ParticleHPContAngularPar * theAngular;
G4double currentMeanEnergy;
G4ParticleDefinition* theProjectile;
public:
void ClearHistories();
};
#endif
@@ -0,0 +1,53 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPD2AInelasticFS_h
#define G4ParticleHPD2AInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
class G4ParticleHPD2AInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPD2AInelasticFS(){}
~G4ParticleHPD2AInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPD2AInelasticFS * theNew = new G4ParticleHPD2AInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPDAInelasticFS_h
#define G4ParticleHPDAInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPDAInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPDAInelasticFS(){}
~G4ParticleHPDAInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPDAInelasticFS * theNew = new G4ParticleHPDAInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPDInelasticFS_h
#define G4ParticleHPDInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticCompFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPDInelasticFS : public G4ParticleHPInelasticCompFS
{
public:
G4ParticleHPDInelasticFS(){}
~G4ParticleHPDInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPDInelasticFS * theNew = new G4ParticleHPDInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,91 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id$
//
// Hadronic Process: Very Low Energy Neutron X-Sections
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
// Has the Cross-section data for all materials.
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPData_h
#define G4ParticleHPData_h 1
#include "globals.hh"
#include "G4Element.hh"
#include "G4ParticleHPElasticData.hh"
#include "G4ParticleHPInelasticData.hh"
#include "G4ParticleHPFissionData.hh"
#include "G4ParticleHPCaptureData.hh"
#include "G4ParticleHPElementData.hh"
#include <vector>
class G4ParticleHPData
{
public:
G4ParticleHPData(G4ParticleDefinition* projectile);
~G4ParticleHPData();
inline G4PhysicsVector * MakePhysicsVector(G4Element * thE, G4ParticleHPFissionData * theP)
{
if ( numEle <= (G4int)thE->GetIndex() ) addPhysicsVector();
return DoPhysicsVector((*theData[thE->GetIndex()]).GetData(theP));
}
inline G4PhysicsVector * MakePhysicsVector(G4Element * thE, G4ParticleHPCaptureData * theP)
{
if ( numEle <= (G4int)thE->GetIndex() ) addPhysicsVector();
return DoPhysicsVector((*theData[thE->GetIndex()]).GetData(theP));
}
inline G4PhysicsVector * MakePhysicsVector(G4Element * thE, G4ParticleHPElasticData * theP)
{
if ( numEle <= (G4int)thE->GetIndex() ) addPhysicsVector();
return DoPhysicsVector((*theData[thE->GetIndex()]).GetData(theP));
}
inline G4PhysicsVector * MakePhysicsVector(G4Element * thE, G4ParticleHPInelasticData * theP)
{
// G4cout << "entered G4ParticleHPData::MakePhysicsVector!!!"<<G4endl;
// G4cout << "thE->GetIndex()="<<thE->GetIndex()<<G4endl;
if ( numEle <= (G4int)thE->GetIndex() ) addPhysicsVector();
return DoPhysicsVector((*theData[thE->GetIndex()]).GetData(theP));
}
G4PhysicsVector * DoPhysicsVector(G4ParticleHPVector * theVector);
static G4ParticleHPData * Instance(G4ParticleDefinition* projectile);
private:
std::vector< G4ParticleHPElementData* > theData;
G4int numEle;
void addPhysicsVector();
G4ParticleDefinition* theProjectile;
G4String theDataDirVariable;
};
#endif
@@ -0,0 +1,73 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPDataPoint_h
#define G4ParticleHPDataPoint_h 1
#include "globals.hh"
class G4ParticleHPDataPoint
{
public:
G4ParticleHPDataPoint(){energy = 0; xSec = 0;}
G4ParticleHPDataPoint(G4double e, G4double x){ energy = e; xSec = x;}
void operator= (const G4ParticleHPDataPoint & aSet)
{
if(&aSet!=this)
{
energy = aSet.GetEnergy();
xSec = aSet.GetXsection();
}
}
// ~G4ParticleHPDataPoint(){}
inline G4double GetEnergy() const {return energy;}
inline G4double GetXsection() const {return xSec;}
inline void SetEnergy(G4double e) {energy = e;}
inline void SetXsection(G4double x){xSec = x;}
inline G4double GetX() const {return energy;}
inline G4double GetY() const {return xSec;}
inline void SetX(G4double e) {energy = e;}
inline void SetY(G4double x) {xSec = x;}
inline void SetData(G4double e, G4double x) {energy = e; xSec = x;}
private:
G4double energy;
G4double xSec;
};
#endif
@@ -0,0 +1,72 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// 070625 add natural abundance (nat) flag by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPDataUsed_h
#define G4ParticleHPDataUsed_h 1
#include "globals.hh"
class G4ParticleHPDataUsed
{
public:
G4ParticleHPDataUsed()
{
theName = "";
theA = 0;
theZ = 0;
theM = 0;
nat = false;
}
void SetA(G4double anA){theA = anA;}
void SetZ(G4int aZ){theZ = aZ;}
void SetM(G4int aM){theM = aM;}
void SetName(G4String aName){theName = aName;}
G4int GetZ() {return theZ;}
G4double GetA() {return theA;}
G4int GetM() {return theM;}
G4String GetName() {return theName;}
private:
G4String theName;
G4double theA;
G4int theZ;
G4int theM;
public:
G4bool IsThisNaturalAbundance() { return nat; };
void SetNaturalAbundanceFlag() { nat = TRUE; };
private:
G4bool nat;
};
#endif
@@ -0,0 +1,114 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPDeExGammas_h
#define G4ParticleHPDeExGammas_h 1
#include <fstream>
#include <CLHEP/Units/PhysicalConstants.h>
#include "globals.hh"
#include "G4ios.hh"
#include "G4ReactionProductVector.hh"
#include "G4Gamma.hh"
#include "G4ParticleHPLevel.hh"
#include "G4ParticleHPGamma.hh"
#include "G4ReactionProduct.hh"
class G4ParticleHPDeExGammas
{
public:
G4ParticleHPDeExGammas()
{
levelStart = 0;
levelSize = 0;
nLevels = 0;
theLevels = 0;
}
~G4ParticleHPDeExGammas()
{
if(levelStart!=0) delete [] levelStart;
if(levelSize!=0) delete [] levelSize;
if(theLevels!=0) delete [] theLevels;
}
void Init(std::istream & aDataFile);
inline G4ReactionProductVector * GetDecayGammas(G4int aLevel)
{
if(aLevel>nLevels-1 || aLevel<0) return 0;
if(nLevels==0) return new G4ReactionProductVector();
G4ReactionProductVector * result = new G4ReactionProductVector;
G4DynamicParticleVector * theResult;
theResult = theLevels[aLevel]. GetDecayGammas();
G4ReactionProduct * theCurrent;
unsigned int i;
for(i=0; i<theResult->size(); i++)
{
theCurrent = new G4ReactionProduct;
*theCurrent = *(theResult->operator[](i));
delete theResult->operator[](i);
G4double costheta = 2.*G4UniformRand()-1;
G4double theta = std::acos(costheta);
G4double phi = CLHEP::twopi*G4UniformRand();
G4double sinth = std::sin(theta);
G4double en = theCurrent->GetTotalMomentum();
G4ThreeVector temp(en*sinth*std::cos(phi), en*sinth*std::sin(phi), en*costheta );
theCurrent->SetMomentum( temp ) ;
result->push_back(theCurrent);
}
delete theResult;
return result;
}
inline G4ParticleHPLevel * GetLevel(G4int i)
{
if(getenv("G4PHPTEST")) G4cout << this << " GetLEVEL " << i << " n " << nLevels << G4endl;
if(i>nLevels-1) return 0;
return theLevels+i;
}
inline G4int GetNumberOfLevels() { return nLevels; }
inline G4double GetLevelEnergy(G4int aLevel)
{
if(aLevel>nLevels-1 || aLevel<0) return 0;
G4double result = theLevels[aLevel].GetLevelEnergy();
return result;
}
private:
G4int * levelStart;
G4int * levelSize;
G4int nLevels;
G4ParticleHPLevel * theLevels;
};
#endif
@@ -0,0 +1,100 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPDiscreteTwoBody_h
#define G4ParticleHPDiscreteTwoBody_h 1
//101110 Bug fix in MF=6, LAW=2 case; contribution from E. Mendoza, D. Cano-Ott (CIEMAT)
#include "G4ios.hh"
#include <fstream>
#include "globals.hh"
#include "G4VParticleHPEnergyAngular.hh"
#include "G4ParticleHPLegendreTable.hh"
#include "G4ParticleHPInterpolator.hh"
#include "G4InterpolationManager.hh"
class G4ParticleHPDiscreteTwoBody : public G4VParticleHPEnergyAngular
{
public:
G4ParticleHPDiscreteTwoBody()
{
theCoeff = 0;
bCheckDiffCoeffRepr = true;
if ( getenv( "G4PHP_DO_NOT_CHECK_DIFF_COEFF_REPR" ) ) bCheckDiffCoeffRepr = false;
}
~G4ParticleHPDiscreteTwoBody()
{
if(theCoeff!=0) delete [] theCoeff;
}
void Init(std::istream & aDataFile)
{
aDataFile >> nEnergy;
theManager.Init(aDataFile);
theCoeff = new G4ParticleHPLegendreTable[nEnergy];
for(G4int i=0; i<nEnergy; i++)
{
G4double energy;
G4int aRep, nCoeff;
aDataFile >> energy >> aRep >> nCoeff;
//- G4cout << this << " " << i << " G4ParticleHPDiscreteTwoBody READ DATA " << energy << " " << aRep << " " << nCoeff << G4endl;
energy*=CLHEP::eV;
G4int nPoints=nCoeff;
if(aRep>0) nPoints*=2;
//theCoeff[i].Init(energy, nPoints);
theCoeff[i].Init(energy, nPoints-1);
theCoeff[i].SetRepresentation(aRep);
for(G4int ii=0; ii<nPoints; ii++)
{
G4double y;
aDataFile >> y;
theCoeff[i].SetCoeff(ii, y);
}
}
}
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass);
G4double MeanEnergyOfThisInteraction() { return -1; }
private:
G4int nEnergy;
G4InterpolationManager theManager; // knows the interpolation between stores
G4ParticleHPLegendreTable * theCoeff;
private:
G4ParticleHPInterpolator theInt;
G4bool bCheckDiffCoeffRepr; // for example ENDF-VII0_proton/Inelastic/F01/4_9_Beryllium has 0 for energy 7.5E+07 and 12 for energy 1.e+08
};
#endif
@@ -0,0 +1,81 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// Hadronic Process: High Precision low E neutron tracking
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
// Builds and has the Cross-section data for one material.
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPElastic_h
#define G4ParticleHPElastic_h 1
// Class Description
// Final state production model for a high precision (based on evaluated data
// libraries) description of neutron elastic scattering below 20 MeV;
// To be used in your physics list in case you need this physics.
// In this case you want to register an object of this class with
// the corresponding process.
// Class Description - End
#include "globals.hh"
#include "G4ParticleHPChannel.hh"
#include "G4HadronicInteraction.hh"
class G4ParticleHPElastic : public G4HadronicInteraction
{
public:
G4ParticleHPElastic();
~G4ParticleHPElastic();
G4HadFinalState * ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus);
virtual const std::pair<G4double, G4double> GetFatalEnergyCheckLevels() const;
//G4int GetNiso() {return theElastic[0].GetNiso();}
G4int GetNiso() {return (*theElastic[0]).GetNiso();}
void DoNotSuspend() {overrideSuspension = true;}
public:
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
private:
G4double * xSec;
//G4ParticleHPChannel * theElastic;
std::vector<G4ParticleHPChannel*> theElastic;
G4String dirName;
G4int numEle;
G4bool overrideSuspension;
void addChannelForNewElement();
};
#endif
@@ -0,0 +1,100 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// 080417 Add IsZAApplicable method (return false) by T. Koi
// 080428 Add bool onFlightDB by T. Koi
// 091118 Add Ignore and Enable On Flight Doppler Broadening methods by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPElasticData_h
#define G4ParticleHPElasticData_h 1
// Class Description
// Cross-section data set for a high precision (based on evaluated data
// libraries) description of neutron elastic scattering below 20 MeV;
// To be used in your physics list in case you need this physics.
// In this case you want to register an object of this class with
// the corresponding process.
// Class Description - End
#include "G4VCrossSectionDataSet.hh"
#include "G4DynamicParticle.hh"
#include "G4Element.hh"
#include "G4ParticleDefinition.hh"
#include "G4PhysicsTable.hh"
class G4ParticleHPElasticData : public G4VCrossSectionDataSet
{
public:
G4ParticleHPElasticData();
~G4ParticleHPElasticData();
G4bool IsIsoApplicable( const G4DynamicParticle* ,
G4int /*Z*/ , G4int /*A*/ ,
const G4Element* /*elm*/ ,
const G4Material* /*mat*/ );
G4double GetIsoCrossSection( const G4DynamicParticle* ,
G4int /*Z*/ , G4int /*A*/ ,
const G4Isotope* /*iso*/ ,
const G4Element* /*elm*/ ,
const G4Material* /*mat*/ );
//G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
public:
//G4bool IsZAApplicable( const G4DynamicParticle* , G4double /*ZZ*/, G4double /*AA*/)
//{ return false;}
G4double GetCrossSection(const G4DynamicParticle*, const G4Element*, G4double aT);
void BuildPhysicsTable(const G4ParticleDefinition&);
void DumpPhysicsTable(const G4ParticleDefinition&);
void IgnoreOnFlightDopplerBroadening(){ onFlightDB = false; };
void EnableOnFlightDopplerBroadening(){ onFlightDB = true; };
void SetVerboseLevel( G4int );
G4int GetVerboseLevel() const;
private:
G4PhysicsTable * theCrossSections;
G4bool onFlightDB;
G4double ke_cache;
G4double xs_cache;
const G4Element* element_cache;
const G4Material* material_cache;
};
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// 25-08-06 New Final State type (refFlag==3 , Legendre (Low Energy) + Probability (High Energy) )
// is added by T. KOI
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPElasticFS_h
#define G4ParticleHPElasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPFinalState.hh"
#include "G4ParticleHPLegendreStore.hh"
#include "G4ParticleHPPartial.hh"
#include "G4ParticleHPFastLegendre.hh"
#include "G4ParticleHPInterpolator.hh"
#include "G4ParticleHPNames.hh"
class G4ParticleHPElasticFS : public G4ParticleHPFinalState
{
public:
G4ParticleHPElasticFS()
{
hasXsec = false;
theCoefficients = 0;
theProbArray = 0;
}
~G4ParticleHPElasticFS()
{
if(theCoefficients!=0) delete theCoefficients;
if(theProbArray!=0) delete theProbArray;
}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPElasticFS * theNew = new G4ParticleHPElasticFS;
return theNew;
}
private:
G4int repFlag; // Legendre coeff(1), or probability array(2), or isotropic(0).
// add 3: for Legendre (Low Energy) + Probability (High Energy)
G4double tE_of_repFlag3; // transition energy in case of repFlag 3:
G4double targetMass; // in neutronmass units.
G4int frameFlag; // CMS or Lab system.
G4ParticleHPLegendreStore * theCoefficients; // the legendre coefficients
G4ParticleHPPartial * theProbArray; // the probability array p,costh for energy
G4ParticleHPInterpolator theInt; // interpolation
G4ParticleHPFastLegendre theLegend; // fast look-up for leg-integrals
};
#endif
@@ -0,0 +1,119 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// Hadronic Process: Very Low Energy Neutron X-Sections
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
// Builds and has the Cross-section data for one material.
//
// 080520 Delete unnecessary dependencies by T. Koi
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPElementData_h
#define G4ParticleHPElementData_h 1
#include "globals.hh"
#include "G4ParticleHPIsoData.hh"
#include "G4ParticleHPVector.hh"
#include "G4Material.hh"
#include "G4HadronCrossSections.hh"
#include "G4ReactionProduct.hh"
#include "G4Nucleus.hh"
//#include "G4NeutronInelasticProcess.hh"
//#include "G4HadronFissionProcess.hh"
//#include "G4HadronCaptureProcess.hh"
#include "G4ParticleHPElasticData.hh"
#include "G4ParticleHPFissionData.hh"
#include "G4ParticleHPCaptureData.hh"
#include "G4ParticleHPInelasticData.hh"
#include "G4StableIsotopes.hh"
#include "G4Neutron.hh"
class G4ParticleHPElementData : public G4HadronCrossSections
{
public:
G4ParticleHPElementData();
~G4ParticleHPElementData();
// void Init(G4Element * theElement,char* dataDirVariable = "G4NEUTRONHPDATA", G4ParticleDefinition* projectile = G4Neutron::Neutron() );
void Init(G4Element * theElement, G4ParticleDefinition* projectile, const char* dataDirVariable);
//void UpdateData(G4int A, G4int Z, G4int index, G4double abundance);
// void UpdateData(G4int A, G4int Z, G4int index, G4double abundance,char* dataDirVariable, G4ParticleDefinition* projectile = G4Neutron::Neutron() ) { G4int M=0; UpdateData( A, Z, M, index, abundance, projectile, dataDirVariable); };
void UpdateData(G4int A, G4int Z, G4int index, G4double abundance,G4ParticleDefinition* projectile, const char* dataDirVariable ) { G4int M=0; UpdateData( A, Z, M, index, abundance, projectile, dataDirVariable); };
void UpdateData(G4int A, G4int Z, G4int M, G4int index, G4double abundance, G4ParticleDefinition* projectile, const char* dataDirVariable );
void Harmonise(G4ParticleHPVector *& theStore, G4ParticleHPVector * theNew);
inline G4ParticleHPVector * GetData(G4ParticleHPFissionData * )
{return theFissionData;}
inline G4ParticleHPVector * GetData(G4ParticleHPCaptureData * )
{return theCaptureData;}
inline G4ParticleHPVector * GetData(G4ParticleHPElasticData * )
{return theElasticData;}
inline G4ParticleHPVector * GetData(G4ParticleHPInelasticData * )
{return theInelasticData;}
G4ParticleHPVector * MakePhysicsVector(G4Element * theElement,
G4ParticleDefinition * projectile,
G4ParticleHPFissionData* theSet,
char* dataDirVariable);
G4ParticleHPVector * MakePhysicsVector(G4Element * theElement,
G4ParticleDefinition * projectile,
G4ParticleHPCaptureData * theSet,
char* dataDirVariable);
G4ParticleHPVector * MakePhysicsVector(G4Element * theElement,
G4ParticleDefinition * projectile,
G4ParticleHPElasticData * theSet,
char* dataDirVariable);
G4ParticleHPVector * MakePhysicsVector(G4Element * theElement,
G4ParticleDefinition * projectile,
G4ParticleHPInelasticData * theSet,
char* dataDirVariable );
private:
G4ParticleHPVector * theFissionData;
G4ParticleHPVector * theCaptureData;
G4ParticleHPVector * theElasticData;
G4ParticleHPVector * theInelasticData;
G4double precision;
G4ParticleHPVector * theBuffer;
G4ParticleHPIsoData * theIsotopeWiseData;
G4StableIsotopes theStableOnes;
G4String filename;
};
#endif
@@ -0,0 +1,136 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPEnAngCorrelation_h
#define G4ParticleHPEnAngCorrelation_h 1
#include "globals.hh"
#include "G4ParticleHPVector.hh"
#include "Randomize.hh"
#include "G4ios.hh"
#include <fstream>
#include "globals.hh"
#include "G4ParticleHPProduct.hh"
#include "G4ReactionProduct.hh"
class G4ParticleDefinition;
class G4ParticleHPEnAngCorrelation
{
public:
G4ParticleHPEnAngCorrelation() // for G4ParticleHPCaptureFS::theMF6FinalState
{
theProjectile = G4Neutron::Neutron();
theProducts = 0;
inCharge = false;
theTotalMeanEnergy = -1.;
}
G4ParticleHPEnAngCorrelation(G4ParticleDefinition* proj)
: theProjectile(proj)
{
theProducts = 0;
inCharge = false;
theTotalMeanEnergy = -1.;
}
~G4ParticleHPEnAngCorrelation()
{
if(theProducts!=0) delete [] theProducts;
}
inline void Init(std::istream & aDataFile)
{
bAdjustFinalState = true;
const char* ctmp = getenv("G4PHP_DO_NOT_ADJUST_FINAL_STATE");
if( ctmp && G4String(ctmp) == "1" ) {
bAdjustFinalState = false;
}
inCharge = true;
aDataFile>>targetMass>>frameFlag>>nProducts;
theProducts = new G4ParticleHPProduct[nProducts];
for(G4int i=0; i<nProducts; i++)
{
theProducts[i].Init(aDataFile,theProjectile);
}
}
G4ReactionProduct * SampleOne(G4double anEnergy);
G4ReactionProductVector * Sample(G4double anEnergy);
inline void SetTarget(G4ReactionProduct & aTarget)
{
theTarget = aTarget;
for(G4int i=0;i<nProducts;i++)theProducts[i].SetTarget(&theTarget);
}
inline void SetProjectileRP(G4ReactionProduct & aIncidentPart)
{
theProjectileRP = aIncidentPart;
for(G4int i=0;i<nProducts;i++)theProducts[i].SetProjectileRP(&theProjectileRP);
}
inline G4bool InCharge()
{
return inCharge;
}
inline G4double GetTargetMass() { return targetMass; }
G4double GetTotalMeanEnergy()
{
// cashed in 'sample' call
return theTotalMeanEnergy;
}
private:
// data members
G4double targetMass;
G4int frameFlag; // =1: Target rest frame; =2: CMS system; incident always in lab
G4int nProducts;
G4ParticleHPProduct * theProducts;
G4bool inCharge;
// Utility quantities
G4ReactionProduct theTarget;
G4ReactionProduct theProjectileRP;
// cashed values
G4double theTotalMeanEnergy;
G4ParticleDefinition* theProjectile;
G4bool bAdjustFinalState;
};
#endif
@@ -0,0 +1,137 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPEnergyDistribution_h
#define G4ParticleHPEnergyDistribution_h 1
#include <fstream>
#include "globals.hh"
#include "G4ios.hh"
#include "Randomize.hh"
#include "G4ParticleHPArbitaryTab.hh"
#include "G4ParticleHPEvapSpectrum.hh"
#include "G4ParticleHPSimpleEvapSpectrum.hh"
#include "G4ParticleHPFissionSpectrum.hh"
#include "G4ParticleHPWattSpectrum.hh"
#include "G4ParticleHPMadlandNixSpectrum.hh"
#include "G4VParticleHPEDis.hh"
// we will need a List of these .... one per term.
class G4ParticleHPEnergyDistribution
{
public:
G4ParticleHPEnergyDistribution()
{
theEnergyDistribution = 0;
theNumberOfPartials = 0;
theRepresentationType = 0;
}
~G4ParticleHPEnergyDistribution()
{
if(theEnergyDistribution != 0)
{
for(G4int i=0; i<theNumberOfPartials; i++)
{
delete theEnergyDistribution[i];
}
delete [] theEnergyDistribution;
}
}
inline void Init(std::istream & theData)
{
G4double dummy;
theData >> dummy >> theNumberOfPartials;
theEnergyDistribution = new G4VParticleHPEDis * [theNumberOfPartials];
for(G4int i=0; i<theNumberOfPartials; i++)
{
theData >> theRepresentationType;
switch(theRepresentationType)
{
case 1:
theEnergyDistribution[i] = new G4ParticleHPArbitaryTab;
break;
case 5:
theEnergyDistribution[i] = new G4ParticleHPEvapSpectrum;
break;
case 7:
theEnergyDistribution[i] = new G4ParticleHPFissionSpectrum;
break;
case 9:
theEnergyDistribution[i] = new G4ParticleHPSimpleEvapSpectrum;
break;
case 11:
theEnergyDistribution[i] = new G4ParticleHPWattSpectrum;
break;
case 12:
theEnergyDistribution[i] = new G4ParticleHPMadlandNixSpectrum;
break;
}
theEnergyDistribution[i]->Init(theData);
}
}
inline G4double Sample(G4double anEnergy, G4int & it)
{
G4double result = 0;
it = 0;
if (theNumberOfPartials != 0)
{
G4double sum=0;
G4double * running = new G4double[theNumberOfPartials];
running[0] = 0;
G4int i;
for (i=0; i<theNumberOfPartials; i++)
{
if (i!=0) running[i]=running[i-1];
running[i]+=theEnergyDistribution[i]->GetFractionalProbability(anEnergy);
}
sum = running[theNumberOfPartials-1];
G4double random = G4UniformRand();
for(i=0; i<theNumberOfPartials; i++)
{
it = i;
if(running[i]/sum>random) break;
}
delete [] running;
if(it==theNumberOfPartials) it--;
result = theEnergyDistribution[it]->Sample(anEnergy);
}
return result;
}
private:
G4int theNumberOfPartials;
G4int theRepresentationType;
G4VParticleHPEDis ** theEnergyDistribution;
};
#endif
@@ -0,0 +1,83 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPEvapSpectrum_h
#define G4ParticleHPEvapSpectrum_h 1
#include <fstream>
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4ios.hh"
#include "Randomize.hh"
#include "G4ParticleHPVector.hh"
#include "G4VParticleHPEDis.hh"
// we will need a List of these .... one per term.
class G4ParticleHPEvapSpectrum : public G4VParticleHPEDis
{
public:
G4ParticleHPEvapSpectrum()
{
}
~G4ParticleHPEvapSpectrum()
{
}
inline void Init(std::istream & aDataFile)
{
theFractionalProb.Init(aDataFile);
theThetaDist.Init(aDataFile);
theXDist.Init(aDataFile);
}
inline G4double GetFractionalProbability(G4double anEnergy)
{
return theFractionalProb.GetY(anEnergy);
}
inline G4double Sample(G4double anEnergy)
{
// when this is called, theFractionalProb was used, and 'k' is sorted out already.
G4double x = theXDist.Sample();
G4double theta = theThetaDist.GetY(anEnergy);
G4double result = x*theta;
return result*CLHEP::eV;
}
private:
G4ParticleHPVector theFractionalProb;
G4ParticleHPVector theThetaDist;
G4ParticleHPVector theXDist;
};
#endif
@@ -0,0 +1,55 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFCFissionFS_h
#define G4ParticleHPFCFissionFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4DynamicParticleVector.hh"
#include "G4ParticleHPFissionBaseFS.hh"
class G4ParticleHPFCFissionFS : public G4ParticleHPFissionBaseFS
{
public:
G4ParticleHPFCFissionFS(){ hasXsec = false; }
~G4ParticleHPFCFissionFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition* projectile);
G4DynamicParticleVector * ApplyYourself(G4int nNeutrons);
G4ParticleHPFinalState * New()
{
G4ParticleHPFCFissionFS * theNew = new G4ParticleHPFCFissionFS;
return theNew;
}
private:
G4HadFinalState * ApplyYourself(const G4HadProjectile & ) { return 0; }
};
#endif
@@ -0,0 +1,65 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFFFissionFS_h
#define G4ParticleHPFFFissionFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4DynamicParticleVector.hh"
#include "G4ParticleHPFissionBaseFS.hh"
class G4ParticleHPFFFissionFS : public G4ParticleHPFissionBaseFS
{
public:
G4ParticleHPFFFissionFS(){ hasXsec = false; }
~G4ParticleHPFFFissionFS();
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4DynamicParticleVector * ApplyYourself( G4int nNeutrons );
G4ParticleHPFinalState * New()
{
G4ParticleHPFFFissionFS * theNew = new G4ParticleHPFFFissionFS;
return theNew;
}
//energy fragZ fragA fragM
void GetAFissionFragment( G4double , G4int& , G4int& , G4int& );
private:
G4HadFinalState * ApplyYourself( const G4HadProjectile & ) { return NULL; }
// MT Energy FPS Yield
std::map< G4int , std::map< G4double , std::map< G4int , G4double >* >* > FissionProductYieldData;
std::map< G4int , std::map< G4double , G4int >* > mMTInterpolation;
};
#endif
@@ -0,0 +1,109 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFSFissionFS_h
#define G4ParticleHPFSFissionFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4DynamicParticleVector.hh"
#include "G4ParticleHPFinalState.hh"
#include "G4ParticleHPNames.hh"
#include "G4ParticleHPParticleYield.hh"
#include "G4ParticleHPVector.hh"
#include "G4ParticleHPFissionERelease.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPPhotonDist.hh"
#include "G4ParticleHPAngular.hh"
class G4ParticleHPFSFissionFS : public G4ParticleHPFinalState
{
public:
G4ParticleHPFSFissionFS(){ hasXsec = true; }
~G4ParticleHPFSFissionFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4DynamicParticleVector * ApplyYourself(G4int Prompt, G4int delayed, G4double *decayconst);
G4ParticleHPFinalState * New()
{
G4ParticleHPFSFissionFS * theNew = new G4ParticleHPFSFissionFS;
return theNew;
}
inline G4double GetMass(){ return targetMass; }
void SampleNeutronMult(G4int&all,
G4int&Prompt,
G4int&delayed,
G4double energy,
G4int off);
inline void SetNeutronRP(const G4ReactionProduct & aNeutron)
{
theNeutronRP = aNeutron;
theNeutronAngularDis.SetProjectileRP(aNeutron);
}
inline void SetTarget(const G4ReactionProduct & aTarget)
{
theTarget = aTarget;
theNeutronAngularDis.SetTarget(aTarget);
}
G4DynamicParticleVector * GetPhotons();
inline G4ParticleHPFissionERelease * GetEnergyRelease()
{
return &theEnergyRelease;
}
private:
G4HadFinalState * ApplyYourself(const G4HadProjectile & ) { return 0; }
G4double targetMass;
G4ParticleHPParticleYield theFinalStateNeutrons;
G4ParticleHPEnergyDistribution thePromptNeutronEnDis;
G4ParticleHPEnergyDistribution theDelayedNeutronEnDis;
G4ParticleHPAngular theNeutronAngularDis;
G4ParticleHPPhotonDist theFinalStatePhotons;
G4ParticleHPFissionERelease theEnergyRelease;
G4ReactionProduct theNeutronRP;
G4ReactionProduct theTarget;
private:
G4ParticleHPNames theNames;
};
#endif
@@ -0,0 +1,239 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFastLegendre_h
#define G4ParticleHPFastLegendre_h 1
#include "globals.hh"
class G4ParticleHPFastLegendre
{
public:
G4ParticleHPFastLegendre()
{
value = new const G4double * [31];
value[0] = l0;
value[1] = l1;
value[2] = l2;
value[3] = l3;
value[4] = l4;
value[5] = l5;
value[6] = l6;
value[7] = l7;
value[8] = l8;
value[9] = l9;
value[10] = l10;
value[11] = l11;
value[12] = l12;
value[13] = l13;
value[14] = l14;
value[15] = l15;
value[16] = l16;
value[17] = l17;
value[18] = l18;
value[19] = l19;
value[20] = l20;
value[21] = l21;
value[22] = l22;
value[23] = l23;
value[24] = l24;
value[25] = l25;
value[26] = l26;
value[27] = l27;
value[28] = l28;
value[29] = l29;
value[30] = l30;
integral = new const G4double * [31];
integral[0] = i0;
integral[1] = i1;
integral[2] = i2;
integral[3] = i3;
integral[4] = i4;
integral[5] = i5;
integral[6] = i6;
integral[7] = i7;
integral[8] = i8;
integral[9] = i9;
integral[10] = i10;
integral[11] = i11;
integral[12] = i12;
integral[13] = i13;
integral[14] = i14;
integral[15] = i15;
integral[16] = i16;
integral[17] = i17;
integral[18] = i18;
integral[19] = i19;
integral[20] = i20;
integral[21] = i21;
integral[22] = i22;
integral[23] = i23;
integral[24] = i24;
integral[25] = i25;
integral[26] = i26;
integral[27] = i27;
integral[28] = i28;
integral[29] = i29;
integral[30] = i30;
G4int i;
for(i=0;i<31;i++) theNbin[i]=1+200*(i+1);
}
~G4ParticleHPFastLegendre()
{
delete [] value;
delete [] integral;
}
G4double Integrate(G4int l, G4double costh)
{
if(l>30) return regularIntegrate(l,costh);
G4int bin = GetBin(l, costh);
G4double y1, y2;
// G4cout <<"Testhpw G4ParticleHPFastLegendre::Integrate "<<l<<" "<<bin<<G4endl;
y1 = integral[l][bin];
y2 = integral[l][bin+1];
// G4cout <<"Testhpw G4ParticleHPFastLegendre::Integrate exit"<<G4endl;
return Interpolate(bin, l, y1, y2, costh);
}
inline G4double Evaluate(G4int l, G4double costh)
{
if(l>30) return regularEvaluate(l,costh);
G4double result;
G4int bin = GetBin(l, costh);
if(bin != theNbin[l]-1)
{
G4double y1, y2;
y1 = value[l][bin];
y2 = value[l][bin+1];
result = Interpolate(bin, l, y1, y2, costh);
}
else
{
result = value[l][bin];
}
return result;
}
private:
G4double regularEvaluate( int l , double x );
G4double regularIntegrate( int l , double x );
inline G4int GetBin(G4int l, G4double costh)
{
G4int bin=0;
bin = G4int( (theNbin[l]-1)*(costh+1)/2. );
if(bin == theNbin[l]-1) bin--;
return bin;
}
inline G4double Interpolate(G4int bin, G4int l, G4double y1, G4double y2, G4double x)
{
G4double slope = 0, off = 0, x2=0, x1mx2;
G4int half = (theNbin[l]-1)/2;
// x1 = (bin-half)/G4double(half);
x2 = (bin+1-half)/G4double(half);
x1mx2 = 1./G4double( (theNbin[l]-1)/2 );
// slope = (y2-y1)/(x2-x1);
slope = (y2-y1)/x1mx2;
off = y2-x2*slope;
return x*slope+off;
}
const G4double ** value;
const G4double ** integral;
G4int theNbin[31];
static const G4double l0[201];
static const G4double i0[201];
static const G4double l1[401];
static const G4double i1[401];
static const G4double l2[601];
static const G4double i2[601];
static const G4double l3[801];
static const G4double i3[801];
static const G4double l4[1001];
static const G4double i4[1001];
static const G4double l5[1201];
static const G4double i5[1201];
static const G4double l6[1401];
static const G4double i6[1401];
static const G4double l7[1601];
static const G4double i7[1601];
static const G4double l8[1801];
static const G4double i8[1801];
static const G4double l9[2001];
static const G4double i9[2001];
static const G4double l10[2201];
static const G4double i10[2201];
static const G4double l11[2401];
static const G4double i11[2401];
static const G4double l12[2601];
static const G4double i12[2601];
static const G4double l13[2801];
static const G4double i13[2801];
static const G4double l14[3001];
static const G4double i14[3001];
static const G4double l15[3201];
static const G4double i15[3201];
static const G4double l16[3401];
static const G4double i16[3401];
static const G4double l17[3601];
static const G4double i17[3601];
static const G4double l18[3801];
static const G4double i18[3801];
static const G4double l19[4001];
static const G4double i19[4001];
static const G4double l20[4201];
static const G4double i20[4201];
static const G4double l21[4401];
static const G4double i21[4401];
static const G4double l22[4601];
static const G4double i22[4601];
static const G4double l23[4801];
static const G4double i23[4801];
static const G4double l24[5001];
static const G4double i24[5001];
static const G4double l25[5201];
static const G4double i25[5201];
static const G4double l26[5401];
static const G4double i26[5401];
static const G4double l27[5601];
static const G4double i27[5601];
static const G4double l28[5801];
static const G4double i28[5801];
static const G4double l29[6001];
static const G4double i29[6001];
static const G4double l30[6201];
static const G4double i30[6201];
};
#endif
@@ -0,0 +1,88 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPField_h
#define G4ParticleHPField_h 1
#include "G4ParticleHPFieldPoint.hh"
#include "G4PhysicsVector.hh"
class G4ParticleHPField
{
public:
G4ParticleHPField();
~G4ParticleHPField();
inline void InitY(G4int i, G4int n)
{
Check(i);
theData[i].InitY(n);
}
inline void SetData(G4int i, G4double x, G4int j, G4double y)
{
Check(i);
theData[i].SetData(x, j, y);
}
inline void SetEnergy(G4int i, G4double e)
{
Check(i);
theData[i].SetX(e);
}
inline void SetX(G4int i, G4double e)
{
Check(i);
theData[i].SetX(e);
}
inline void SetY(G4int i, G4int j, G4double x)
{
Check(i);
theData[i].SetY(j, x);
}
inline G4double GetEnergy(G4int i) { return theData[i].GetX(); }
inline G4double GetX(G4int i) { return theData[i].GetX(); }
inline G4double GetY(G4int i, G4int j) { return theData[i].GetY(j); }
inline G4ParticleHPFieldPoint & GetPoint(G4int i) { return theData[i]; }
G4double GetY(G4double e, G4int j);
inline G4int GetFieldLength() {return nEntries;}
void Dump();
private:
void Check(G4int i);
G4ParticleHPFieldPoint * theData;
G4int nEntries;
G4int nPoints;
};
#endif
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFieldPoint_h
#define G4ParticleHPFieldPoint_h 1
#include "globals.hh"
class G4ParticleHPFieldPoint
{
public:
G4ParticleHPFieldPoint()
{
X = 0;
nP = 0;
Y = 0;
}
G4ParticleHPFieldPoint(G4int n);
void operator= (const G4ParticleHPFieldPoint & aSet);
~G4ParticleHPFieldPoint();
void InitY(G4int n);
inline G4int GetDepth() const {return nP;}
inline G4double GetX() const {return X;}
inline G4double GetY(G4int i) const {return Y[i];}
inline void SetX(G4double e) {X = e;}
inline void SetY(G4int i, G4double x) {Y[i] = x;}
inline void SetData(G4double e, G4int i, G4double x) {X = e; Y[i] = x;}
private:
G4double X;
G4double * Y;
G4int nP;
};
#endif
@@ -0,0 +1,130 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// 080721 Create adjust_final_state method by T. Koi
// 080801 Introduce theNDLDataA,Z which has A and Z of NDL data by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFinalState_h
#define G4ParticleHPFinalState_h
#include "G4Material.hh"
#include "G4FastVector.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPNames.hh"
#include "G4ParticleHPVector.hh"
#include "G4HadProjectile.hh"
#include "G4Neutron.hh"
class G4ParticleDefinition;
class G4ParticleHPFinalState
{
public:
G4ParticleHPFinalState()
{
hasFSData = true;
hasXsec = true;
hasAnyData = true;
theBaseZ = 0;
theBaseA = 0;
theNDLDataZ = 0;
theNDLDataA = 0;
adjustResult = true;
if ( getenv( "G4PHP_DO_NOT_ADJUST_FINAL_STATE" ) ) adjustResult = false;
theProjectile = G4Neutron::Neutron();
};
virtual ~G4ParticleHPFinalState(){};
//virtual void Init (G4double A, G4double Z, G4String & dirName, G4String & aFSType) = 0;
void Init (G4double A, G4double Z, G4String & dirName, G4String & aFSType, G4ParticleDefinition* projectile) { G4int M = 0; Init ( A, Z, M, dirName, aFSType,const_cast<G4ParticleDefinition*>(projectile)); };
virtual void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition* ) =0;
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile & )
{
throw G4HadronicException(__FILE__, __LINE__, "G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack) needs implementation");
return 0;
};
// of course this would better be Done templating G4ParticleHPChannel...,
// but due to peculiarities of the DEC compiler, this way it
// is easier to maintain.
virtual G4ParticleHPFinalState * New() = 0;
G4bool HasXsec() {return hasXsec;};
G4bool HasFSData() {return hasFSData;};
G4bool HasAnyData() {return hasAnyData;};
virtual G4double GetXsec(G4double ) { return 0; };
virtual G4ParticleHPVector * GetXsec() { return 0; };
void SetA_Z(G4double anA, G4double aZ, G4int aM=0) {theBaseA = anA; theBaseZ = aZ; theBaseM=aM; };
G4double GetZ() { return theBaseZ; };
G4double GetN() { return theBaseA; };
G4double GetA() { return theBaseA; };
G4int GetM() { return theBaseM; };
void SetAZMs(G4double anA, G4double aZ, G4int aM, G4ParticleHPDataUsed used)
{ theBaseA = anA; theBaseZ = aZ; theBaseM=aM;
theNDLDataA=(G4int)used.GetA(); theNDLDataZ=(G4int)used.GetZ(); theNDLDataM=used.GetM(); };
void SetProjectile( G4ParticleDefinition* projectile ) {
theProjectile = projectile; }
protected:
G4bool hasXsec;
G4bool hasFSData;
G4bool hasAnyData;
G4ParticleHPNames theNames;
G4HadFinalState theResult;
G4double theBaseA;
G4double theBaseZ;
G4int theBaseM;
//080721
protected:
void adjust_final_state ( G4LorentzVector );
G4bool DoNotAdjustFinalState(){ return adjustResult; };
G4int theNDLDataZ;
G4int theNDLDataA;
G4int theNDLDataM;
private:
G4bool adjustResult;
protected:
G4ParticleDefinition* theProjectile;
};
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// Hadronic Process: High Precision low E neutron tracking
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
// Builds and has the Cross-section data for one material.
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFission_h
#define G4ParticleHPFission_h 1
// Class Description
// Final state production model for a high precision (based on evaluated data
// libraries) description of neutron induced fission below 20 MeV;
// Note that this model (by intent of avoiding the possibility of heating studies) does
// not provide the nuclear fragments.
//
// To be used in your physics list in case you need this physics.
// In this case you want to register an object of this class with
// the corresponding process.
// Class Description - End
#include "globals.hh"
#include "G4ParticleHPChannel.hh"
#include "G4HadronicInteraction.hh"
#include "G4ParticleHPFissionFS.hh"
class G4ParticleHPFission : public G4HadronicInteraction
{
public:
G4ParticleHPFission();
~G4ParticleHPFission();
G4HadFinalState * ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& aTargetNucleus);
virtual const std::pair<G4double, G4double> GetFatalEnergyCheckLevels() const;
public:
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
private:
G4ParticleHPFissionFS theFS;
private:
G4double * xSec;
//G4ParticleHPChannel * theFission;
std::vector<G4ParticleHPChannel*> theFission;
G4String dirName;
G4int numEle;
// static G4String theNames[3];
void addChannelForNewElement();
};
#endif
@@ -0,0 +1,91 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFissionBaseFS_h
#define G4ParticleHPFissionBaseFS_h 1
#include "globals.hh"
#include "G4ReactionProduct.hh"
#include "G4DynamicParticleVector.hh"
#include "G4ParticleHPFinalState.hh"
#include "G4ParticleHPNames.hh"
#include "G4ParticleHPVector.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPAngular.hh"
class G4ParticleHPFissionBaseFS : public G4ParticleHPFinalState
{
public:
G4ParticleHPFissionBaseFS()
{
hasXsec = true;
theXsection = new G4ParticleHPVector;
}
virtual ~G4ParticleHPFissionBaseFS()
{
delete theXsection;
}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & bit, G4ParticleDefinition*);
G4DynamicParticleVector * ApplyYourself(G4int Prompt);
virtual G4double GetXsec(G4double anEnergy)
{
return std::max(0., theXsection->GetY(anEnergy));
}
virtual G4ParticleHPVector * GetXsec() { return theXsection; }
inline void SetNeutronRP(const G4ReactionProduct & aNeutron)
{
theNeutronRP = aNeutron;
theAngularDistribution.SetProjectileRP(aNeutron);
}
inline void SetTarget(const G4ReactionProduct & aTarget)
{
theTarget = aTarget;
theAngularDistribution.SetTarget(aTarget);
}
private:
G4HadFinalState * ApplyYourself(const G4HadProjectile & ) {return 0;}
G4ParticleHPVector * theXsection;
G4ParticleHPEnergyDistribution theEnergyDistribution;
G4ParticleHPAngular theAngularDistribution;
G4ReactionProduct theNeutronRP;
G4ReactionProduct theTarget;
private:
};
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// 080417 Add IsZAApplicable method (return false) by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFissionData_h
#define G4ParticleHPFissionData_h 1
// Class Description
// Cross-section data set for a high precision (based on evaluated data
// libraries) description of neutron induced fission below 20 MeV;
// To be used in your physics list in case you need this physics.
// In this case you want to register an object of this class with
// the corresponding process.
// Class Description - End
#include "G4VCrossSectionDataSet.hh"
#include "G4DynamicParticle.hh"
#include "G4Element.hh"
#include "G4ParticleDefinition.hh"
#include "G4PhysicsTable.hh"
class G4ParticleHPFissionData : public G4VCrossSectionDataSet
{
public:
G4ParticleHPFissionData();
~G4ParticleHPFissionData();
G4bool IsIsoApplicable( const G4DynamicParticle* ,
G4int /*Z*/ , G4int /*A*/ ,
const G4Element* /*elm*/ ,
const G4Material* /*mat*/ );
G4double GetIsoCrossSection( const G4DynamicParticle* ,
G4int /*Z*/ , G4int /*A*/ ,
const G4Isotope* /*iso*/ ,
const G4Element* /*elm*/ ,
const G4Material* /*mat*/ );
//G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
public:
//G4bool IsZAApplicable( const G4DynamicParticle* , G4double /*ZZ*/, G4double /*AA*/)
//{ return false;}
G4double GetCrossSection(const G4DynamicParticle*, const G4Element*, G4double aT);
void BuildPhysicsTable(const G4ParticleDefinition&);
void DumpPhysicsTable(const G4ParticleDefinition&);
public:
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
private:
G4PhysicsTable * theCrossSections;
G4double ke_cache;
G4double xs_cache;
const G4Element* element_cache;
const G4Material* material_cache;
};
#endif
@@ -0,0 +1,145 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// 070606 fix for Valgrind by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFissionERelease_h
#define G4ParticleHPFissionERelease_h 1
#include <fstream>
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4ios.hh"
class G4ParticleHPFissionERelease
{
public:
G4ParticleHPFissionERelease()
: totalEnergy( 0.0 )
, fragmentKinetic( 0.0 )
, promptNeutronKinetic( 0.0 )
, delayedNeutronKinetic( 0.0 )
, promptGammaEnergy( 0.0 )
, delayedGammaEnergy( 0.0 )
, neutrinoEnergy( 0.0 )
, reducedTotalEnergy( 0.0 )
{
}
~G4ParticleHPFissionERelease(){}
inline void Init(std::istream & aDataFile)
{
G4double dummy;
aDataFile >>dummy
>>fragmentKinetic
>>promptNeutronKinetic
>>delayedNeutronKinetic
>>promptGammaEnergy
>>delayedGammaEnergy
>>delayedBetaEnergy
>>neutrinoEnergy
>>reducedTotalEnergy
>>totalEnergy;
fragmentKinetic*=CLHEP::eV;
promptNeutronKinetic*=CLHEP::eV;
delayedNeutronKinetic*=CLHEP::eV;
promptGammaEnergy*=CLHEP::eV;
delayedGammaEnergy*=CLHEP::eV;
delayedBetaEnergy*=CLHEP::eV;
neutrinoEnergy*=CLHEP::eV;
reducedTotalEnergy*=CLHEP::eV;
totalEnergy*=CLHEP::eV;
}
inline G4double GetTotalEnergy(G4double deltaNNeu, G4double anEnergy)
{
G4double result, delta, energy;
energy = anEnergy/CLHEP::eV;
delta = -(1.057*energy - 8.07*deltaNNeu);
result = totalEnergy - delta*CLHEP::eV;
return result;
}
inline G4double GetFragmentKinetic()
{
return fragmentKinetic;
}
inline G4double GetPromptNeutronKinetic(G4double deltaNNeu, G4double anEnergy)
{
G4double result, delta, energy;
energy = anEnergy/CLHEP::eV;
delta = -(1.307*energy - 8.07*deltaNNeu);
result = totalEnergy - delta*CLHEP::eV;
return result;
}
inline G4double GetDelayedNeutronKinetic()
{
return delayedNeutronKinetic;
}
inline G4double GetPromptGammaEnergy()
{
return promptGammaEnergy;
}
inline G4double GetDelayedGammaEnergy(G4double anEnergy)
{
G4double delta = 0.075*anEnergy;
G4double result = delayedGammaEnergy-delta;
return result;
}
inline G4double GetDelayedBetaEnergy(G4double anEnergy)
{
G4double delta = 0.075*anEnergy;
G4double result = delayedBetaEnergy-delta;
return result;
}
inline G4double GetNeutrinoEnergy(G4double anEnergy)
{
G4double delta = 0.1*anEnergy;
G4double result = neutrinoEnergy-delta;
return result;
}
inline G4double GetReducedTotal(G4double deltaNNeu, G4double anEnergy)
{
return GetTotalEnergy(deltaNNeu, anEnergy) - GetNeutrinoEnergy(anEnergy);
}
private:
G4double totalEnergy;
G4double fragmentKinetic;
G4double promptNeutronKinetic;
G4double delayedNeutronKinetic;
G4double promptGammaEnergy;
G4double delayedGammaEnergy;
G4double delayedBetaEnergy;
G4double neutrinoEnergy;
G4double reducedTotalEnergy; // total - neutrino
};
#endif
@@ -0,0 +1,71 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFissionFS_h
#define G4ParticleHPFissionFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPFinalState.hh"
#include "G4ParticleHPNames.hh"
#include "G4ParticleHPFCFissionFS.hh"
#include "G4ParticleHPSCFissionFS.hh"
#include "G4ParticleHPTCFissionFS.hh"
#include "G4ParticleHPLCFissionFS.hh"
#include "G4ParticleHPFSFissionFS.hh"
#include "G4ParticleHPFFFissionFS.hh"
class G4ParticleHPFissionFS : public G4ParticleHPFinalState
{
public:
G4ParticleHPFissionFS(){ hasXsec = false; produceFissionFragments = false; }
~G4ParticleHPFissionFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition* );
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPFissionFS * theNew = new G4ParticleHPFissionFS;
return theNew;
}
private:
G4ParticleHPFSFissionFS theFS;
G4ParticleHPFCFissionFS theFC;
G4ParticleHPSCFissionFS theSC;
G4ParticleHPTCFissionFS theTC;
G4ParticleHPLCFissionFS theLC;
G4ParticleHPFFFissionFS theFF;
G4bool produceFissionFragments;
};
#endif
@@ -0,0 +1,103 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPFissionSpectrum_h
#define G4ParticleHPFissionSpectrum_h 1
#include <fstream>
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4ios.hh"
#include "Randomize.hh"
#include "G4ParticleHPVector.hh"
#include "G4VParticleHPEDis.hh"
// we will need a List of these .... one per term.
class G4ParticleHPFissionSpectrum : public G4VParticleHPEDis
{
public:
G4ParticleHPFissionSpectrum()
{
expm1 = std::exp(-1.);
}
~G4ParticleHPFissionSpectrum()
{
}
inline void Init(std::istream & aDataFile)
{
theFractionalProb.Init(aDataFile, CLHEP::eV);
theThetaDist.Init(aDataFile, CLHEP::eV);
}
inline G4double GetFractionalProbability(G4double anEnergy)
{
return theFractionalProb.GetY(anEnergy);
}
inline G4double Sample(G4double anEnergy)
{
G4double theta = theThetaDist.GetY(anEnergy);
// here we need to sample Maxwells distribution, if
// need be.
G4double result, cut;
G4double range =50*CLHEP::MeV;
G4double max = Maxwell((theta*CLHEP::eV)/2., theta);
G4double value;
do
{
result = range*G4UniformRand();
value = Maxwell(result, theta);
cut = G4UniformRand();
}
while(cut > value/max);
return result;
}
private:
// this is the function to sample from.
inline G4double Maxwell(G4double anEnergy, G4double theta)
{
G4double result = std::sqrt(anEnergy/CLHEP::eV)*std::exp(-anEnergy/CLHEP::eV/theta);
return result;
}
private:
G4double expm1;
G4ParticleHPVector theFractionalProb;
G4ParticleHPVector theThetaDist;
};
#endif
@@ -0,0 +1,97 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPGamma_h
#define G4ParticleHPGamma_h 1
#include "globals.hh"
#include "G4ios.hh"
#include <fstream>
#include "G4DynamicParticleVector.hh"
#include "G4DynamicParticle.hh"
#include "G4Gamma.hh"
#include "G4ParticleHPLevel.hh"
class G4ParticleHPGamma
{
public:
G4ParticleHPGamma();
~G4ParticleHPGamma();
G4bool Init(std::istream & aDataFile);
inline void SetNext(G4ParticleHPLevel * aLevel)
{
next = aLevel;
}
G4DynamicParticleVector * GetDecayGammas()
{
G4DynamicParticleVector * theResult;
if(next == 0)
{
theResult = new G4DynamicParticleVector;
}
else
{
theResult = next->GetDecayGammas();
}
G4DynamicParticle * theNew = new G4DynamicParticle;
theNew->SetDefinition(G4Gamma::Gamma());
theNew->SetKineticEnergy(gammaEnergy);
theResult->push_back(theNew);
return theResult;
}
inline G4double GetLevelEnergy()
{
return levelEnergy;
}
inline G4double GetGammaEnergy()
{
return gammaEnergy;
}
inline G4double GetWeight()
{
return probability;
}
private:
G4double levelEnergy;
G4double gammaEnergy;
G4double probability;
G4ParticleHPLevel * next;
static G4ThreadLocal int instancecount;
};
#endif
@@ -0,0 +1,140 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPHash_h
#define G4ParticleHPHash_h
#include "globals.hh"
#include <vector>
class G4ParticleHPHash
{
public:
G4ParticleHPHash()
{
theUpper = 0;
prepared = false;
}
~G4ParticleHPHash()
{
if(theUpper) delete theUpper;
}
G4ParticleHPHash(const G4ParticleHPHash & aHash)
{
theIndex = aHash.theIndex;
theData = aHash.theData;
if(aHash.theUpper != 0)
{
theUpper = new G4ParticleHPHash(*(aHash.theUpper));
}
else
{
theUpper = 0;
}
}
G4ParticleHPHash & operator = (const G4ParticleHPHash & aHash)
{
if(&aHash != this)
{
theIndex = aHash.theIndex;
theData = aHash.theData;
if(aHash.theUpper != 0)
{
theUpper = new G4ParticleHPHash(*(aHash.theUpper));
}
else
{
theUpper = 0;
}
}
return *this;
}
void Clear()
{
if(theUpper)
{
theUpper->Clear();
delete theUpper;
theUpper = 0;
}
theIndex.clear();
theData.clear();
prepared = false;
}
G4bool Prepared() const {return prepared;}
inline void SetData(G4int index, G4double x, G4double y)
{
prepared = true;
G4ParticleHPDataPoint aPoint;
aPoint.SetData(x, y);
theData.push_back(aPoint);
theIndex.push_back(index);
if(0 == theData.size()%10 && 0!=theData.size())
{
if(0 == theUpper) theUpper = new G4ParticleHPHash();
theUpper->SetData(theData.size()-1, x, y);
}
}
G4int GetMinIndex(G4double e) const
{
G4int result=-1;
if(theData.size() == 0) return 0;
if(theData[0].GetX()>e) return 0;
G4int lower=0;
if(theUpper != 0)
{
lower = theUpper->GetMinIndex(e);
}
unsigned int i;
for(i=lower; i<theData.size(); i++)
{
if(theData[i].GetX()>e)
{
result = theIndex[i-1];
break;
}
}
if(result == -1) result = theIndex[theIndex.size()-1];
return result;
}
private:
G4bool prepared;
G4ParticleHPHash * theUpper;
std::vector<int> theIndex;
std::vector<G4ParticleHPDataPoint> theData; // the data
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPHe3InelasticFS_h
#define G4ParticleHPHe3InelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticCompFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPHe3InelasticFS : public G4ParticleHPInelasticCompFS
{
public:
G4ParticleHPHe3InelasticFS(){}
~G4ParticleHPHe3InelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPHe3InelasticFS * theNew = new G4ParticleHPHe3InelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,154 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// Hadronic Process: High Precision low E neutron tracking
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
// Builds and has the Cross-section data for one material.
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPInelastic_h
#define G4ParticleHPInelastic_h 1
// Class Description
// Final state production model for a high precision (based on evaluated data
// libraries) description of neutron inelastic scattering below 20 MeV;
// 36 exclusive final states are consideded.
// To be used in your physics list in case you need this physics.
// In this case you want to register an object of this class with
// the corresponding process.
// Class Description - End
#include "globals.hh"
#include "G4ParticleHPChannel.hh"
#include "G4HadronicInteraction.hh"
#include "G4ParticleHPChannelList.hh"
#include "G4ParticleHP2AInelasticFS.hh"
#include "G4ParticleHP2N2AInelasticFS.hh"
#include "G4ParticleHP2NAInelasticFS.hh"
#include "G4ParticleHP2NDInelasticFS.hh"
#include "G4ParticleHP2NInelasticFS.hh"
#include "G4ParticleHP2NPInelasticFS.hh"
#include "G4ParticleHP2PInelasticFS.hh"
#include "G4ParticleHP3AInelasticFS.hh"
#include "G4ParticleHP3NAInelasticFS.hh"
#include "G4ParticleHP3NInelasticFS.hh"
#include "G4ParticleHP3NPInelasticFS.hh"
#include "G4ParticleHP4NInelasticFS.hh"
#include "G4ParticleHPAInelasticFS.hh"
#include "G4ParticleHPD2AInelasticFS.hh"
#include "G4ParticleHPDAInelasticFS.hh"
#include "G4ParticleHPDInelasticFS.hh"
#include "G4ParticleHPHe3InelasticFS.hh"
#include "G4ParticleHPN2AInelasticFS.hh"
#include "G4ParticleHPN2PInelasticFS.hh"
#include "G4ParticleHPN3AInelasticFS.hh"
#include "G4ParticleHPNAInelasticFS.hh"
#include "G4ParticleHPND2AInelasticFS.hh"
#include "G4ParticleHPNDInelasticFS.hh"
#include "G4ParticleHPNHe3InelasticFS.hh"
#include "G4ParticleHPNInelasticFS.hh"
#include "G4ParticleHPNPAInelasticFS.hh"
#include "G4ParticleHPNPInelasticFS.hh"
#include "G4ParticleHPNT2AInelasticFS.hh"
#include "G4ParticleHPNTInelasticFS.hh"
#include "G4ParticleHPNXInelasticFS.hh"
#include "G4ParticleHPPAInelasticFS.hh"
#include "G4ParticleHPPDInelasticFS.hh"
#include "G4ParticleHPPInelasticFS.hh"
#include "G4ParticleHPPTInelasticFS.hh"
#include "G4ParticleHPT2AInelasticFS.hh"
#include "G4ParticleHPTInelasticFS.hh"
#include "G4ParticleDefinition.hh"
class G4ParticleHPInelastic : public G4HadronicInteraction
{
public:
G4ParticleHPInelastic(G4ParticleDefinition* projectile = G4Neutron::Neutron(), const char* name = "NeutronHPInelastic" );
~G4ParticleHPInelastic();
G4HadFinalState * ApplyYourself(const G4HadProjectile & aTrack, G4Nucleus & aTargetNucleus);
virtual const std::pair<G4double, G4double> GetFatalEnergyCheckLevels() const;
public:
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
protected:
G4double * xSec;
//G4ParticleHPChannelList * theInelastic; // one List per element
std::vector<G4ParticleHPChannelList*> theInelastic; // one List per element
G4String dirName;
G4int numEle;
void addChannelForNewElement();
private:
G4ParticleHP2AInelasticFS the2AFS;
G4ParticleHP2N2AInelasticFS the2N2AFS;
G4ParticleHP2NAInelasticFS the2NAFS;
G4ParticleHP2NDInelasticFS the2NDFS;
G4ParticleHP2NInelasticFS the2NFS;
G4ParticleHP2NPInelasticFS the2NPFS;
G4ParticleHP2PInelasticFS the2PFS;
G4ParticleHP3AInelasticFS the3AFS;
G4ParticleHP3NAInelasticFS the3NAFS;
G4ParticleHP3NInelasticFS the3NFS;
G4ParticleHP3NPInelasticFS the3NPFS;
G4ParticleHP4NInelasticFS the4NFS;
G4ParticleHPAInelasticFS theAFS;
G4ParticleHPD2AInelasticFS theD2AFS;
G4ParticleHPDAInelasticFS theDAFS;
G4ParticleHPDInelasticFS theDFS;
G4ParticleHPHe3InelasticFS theHe3FS;
G4ParticleHPN2AInelasticFS theN2AFS;
G4ParticleHPN2PInelasticFS theN2PFS;
G4ParticleHPN3AInelasticFS theN3AFS;
G4ParticleHPNAInelasticFS theNAFS;
G4ParticleHPND2AInelasticFS theND2AFS;
G4ParticleHPNDInelasticFS theNDFS;
G4ParticleHPNHe3InelasticFS theNHe3FS;
G4ParticleHPNInelasticFS theNFS;
G4ParticleHPNPAInelasticFS theNPAFS;
G4ParticleHPNPInelasticFS theNPFS;
G4ParticleHPNT2AInelasticFS theNT2AFS;
G4ParticleHPNTInelasticFS theNTFS;
G4ParticleHPNXInelasticFS theNXFS;
G4ParticleHPPAInelasticFS thePAFS;
G4ParticleHPPDInelasticFS thePDFS;
G4ParticleHPPInelasticFS thePFS;
G4ParticleHPPTInelasticFS thePTFS;
G4ParticleHPT2AInelasticFS theT2AFS;
G4ParticleHPTInelasticFS theTFS;
G4ParticleDefinition* theProjectile;
};
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPInelasticBaseFS_h
#define G4ParticleHPInelasticBaseFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPFinalState.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
#include "G4ParticleHPDeExGammas.hh"
#include "G4Nucleus.hh"
class G4ParticleHPInelasticBaseFS : public G4ParticleHPFinalState
{
public:
G4ParticleHPInelasticBaseFS()
{
hasXsec = true;
theXsection = new G4ParticleHPVector;
theEnergyDistribution = 0;
theFinalStatePhotons = 0;
theEnergyAngData = 0;
theAngularDistribution = 0;
}
virtual ~G4ParticleHPInelasticBaseFS()
{
delete theXsection;
if(theEnergyDistribution!=0) delete theEnergyDistribution;
if(theFinalStatePhotons!=0) delete theFinalStatePhotons;
if(theEnergyAngData!=0) delete theEnergyAngData;
if(theAngularDistribution!=0) delete theAngularDistribution;
}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & bit, G4ParticleDefinition*);
void BaseApply(const G4HadProjectile & theTrack, G4ParticleDefinition ** theDefs, G4int nDef);
void InitGammas(G4double AR, G4double ZR);
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack) = 0;
virtual G4ParticleHPFinalState * New() = 0;
virtual G4double GetXsec(G4double anEnergy)
{
return std::max(0., theXsection->GetY(anEnergy));
}
virtual G4ParticleHPVector * GetXsec() { return theXsection; }
protected:
G4ParticleHPVector * theXsection;
G4ParticleHPEnergyDistribution * theEnergyDistribution;
G4ParticleHPAngular * theAngularDistribution;
G4ParticleHPEnAngCorrelation * theEnergyAngData;
G4ParticleHPPhotonDist * theFinalStatePhotons;
G4double theNuclearMassDifference;
G4ParticleHPDeExGammas theGammas;
G4String gammaPath;
private:
};
#endif
@@ -0,0 +1,127 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPInelasticCompFS_h
#define G4ParticleHPInelasticCompFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPFinalState.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
#include "G4ParticleHPDeExGammas.hh"
#include "G4Nucleus.hh"
class G4ParticleHPInelasticCompFS : public G4ParticleHPFinalState
{
public:
G4ParticleHPInelasticCompFS()
{
QI.resize(51);
LR.resize(51);
for(G4int i=0; i<51; i++)
{
hasXsec = true;
theXsection[i] = 0;
theEnergyDistribution[i] = 0;
theAngularDistribution[i] = 0;
theEnergyAngData[i] = 0;
theFinalStatePhotons[i] = 0;
QI[i]=0.0;
LR[i]=0;
}
}
virtual ~G4ParticleHPInelasticCompFS()
{
for(G4int i=0; i<51; i++)
{
if(theXsection[i] != 0) delete theXsection[i];
if(theEnergyDistribution[i] != 0) delete theEnergyDistribution[i];
if(theAngularDistribution[i] != 0) delete theAngularDistribution[i];
if(theEnergyAngData[i] != 0) delete theEnergyAngData[i];
if(theFinalStatePhotons[i] != 0) delete theFinalStatePhotons[i];
}
}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aSFType, G4ParticleDefinition*);
void InitGammas(G4double AR, G4double ZR);
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack) = 0;
virtual G4ParticleHPFinalState * New() = 0;
virtual G4double GetXsec(G4double anEnergy)
{
return std::max(0., theXsection[50]->GetY(anEnergy));
}
virtual G4ParticleHPVector * GetXsec() { return theXsection[50]; }
G4int SelectExitChannel(G4double eKinetic);
void CompositeApply(const G4HadProjectile & theTrack, G4ParticleDefinition * aHadron);
inline void InitDistributionInitialState(G4ReactionProduct & anIncidentPart,
G4ReactionProduct & aTarget,
G4int it)
{
if(theAngularDistribution[it]!=0)
{
theAngularDistribution[it]->SetTarget(aTarget);
theAngularDistribution[it]->SetProjectileRP(anIncidentPart);
}
if(theEnergyAngData[it]!=0)
{
theEnergyAngData[it]->SetTarget(aTarget);
theEnergyAngData[it]->SetProjectileRP(anIncidentPart);
}
}
protected:
G4ParticleHPVector * theXsection[51];
G4ParticleHPEnergyDistribution * theEnergyDistribution[51];
G4ParticleHPAngular * theAngularDistribution[51];
G4ParticleHPEnAngCorrelation * theEnergyAngData[51];
G4ParticleHPPhotonDist * theFinalStatePhotons[51];
G4ParticleHPDeExGammas theGammas;
G4String gammaPath;
G4double theCurrentA;
G4double theCurrentZ;
protected:
std::vector < G4double > QI;
std::vector <G4int > LR;
private:
// proj targ had mu of had
void two_body_reaction ( G4DynamicParticle* , G4DynamicParticle* , G4DynamicParticle* , G4double mu );
};
#endif
@@ -0,0 +1,106 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// 080417 Add IsZAApplicable method (return false) by T. Koi
// 080428 Add bool onFlightDB by T. Koi
// 091118 Add Ignore and Enable On Flight Doppler Broadening methods by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPInelasticData_h
#define G4ParticleHPInelasticData_h 1
// Class Description
// Cross-section data set for a high precision (based on evaluated data
// libraries) description of neutron inelastic scattering below 20 MeV;
// To be used in your physics list in case you need this physics.
// In this case you want to register an object of this class with
// the corresponding process.
// Class Description - End
#include "G4VCrossSectionDataSet.hh"
#include "G4DynamicParticle.hh"
#include "G4Element.hh"
#include "G4ParticleDefinition.hh"
#include "G4PhysicsTable.hh"
#include "G4Neutron.hh"
class G4ParticleHPInelasticData : public G4VCrossSectionDataSet
{
public:
G4ParticleHPInelasticData(G4ParticleDefinition* projectile = G4Neutron::Neutron());
~G4ParticleHPInelasticData();
G4bool IsIsoApplicable( const G4DynamicParticle* ,
G4int /*Z*/ , G4int /*A*/ ,
const G4Element* /*elm*/ ,
const G4Material* /*mat*/ );
G4double GetIsoCrossSection( const G4DynamicParticle* ,
G4int /*Z*/ , G4int /*A*/ ,
const G4Isotope* /*iso*/ ,
const G4Element* /*elm*/ ,
const G4Material* /*mat*/ );
//G4bool IsApplicable(const G4DynamicParticle*, const G4Element*); ??
public:
//G4bool IsZAApplicable( const G4DynamicParticle* , G4double /*ZZ*/, G4double /*AA*/)
//{ return false;}
G4double GetCrossSection(const G4DynamicParticle*, const G4Element*, G4double aT);
void BuildPhysicsTableHP(G4ParticleDefinition* projectile, const char* dataDirVariable); // name it 'HP' to avoid compilation warning because of G4VCrossSectionDataSet's method
void DumpPhysicsTable(const G4ParticleDefinition&);
void IgnoreOnFlightDopplerBroadening(){ onFlightDB = false; };
void EnableOnFlightDopplerBroadening(){ onFlightDB = true; };
G4ParticleDefinition* GetProjectile(){return theProjectile;}
public:
G4int GetVerboseLevel() const;
void SetVerboseLevel( G4int );
private:
G4PhysicsTable * theCrossSections;
G4bool onFlightDB;
G4double ke_cache;
G4double xs_cache;
const G4Element* element_cache;
const G4Material* material_cache;
G4ParticleDefinition* theProjectile;
//char envVariable[500];
};
#endif
@@ -0,0 +1,227 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// 080809 Change interpolation scheme of "histogram", now using LinearLinear
// For multidimensional interpolations By T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPInterpolator_h
#define G4ParticleHPInterpolator_h 1
#include "globals.hh"
#include "G4InterpolationScheme.hh"
#include "Randomize.hh"
#include "G4ios.hh"
#include "G4HadronicException.hh"
class G4ParticleHPInterpolator
{
public:
G4ParticleHPInterpolator(){}
~G4ParticleHPInterpolator()
{
// G4cout <<"deleted the interpolator"<<G4endl;
}
inline G4double Lin(G4double x,G4double x1,G4double x2,G4double y1,G4double y2)
{
G4double slope=0, off=0;
if(x2-x1==0) return (y2+y1)/2.;
slope = (y2-y1)/(x2-x1);
off = y2-x2*slope;
G4double y = x*slope+off;
return y;
}
inline G4double Interpolate(G4InterpolationScheme aScheme,
G4double x, G4double x1, G4double x2,
G4double y1, G4double y2) const;
inline G4double Interpolate2(G4InterpolationScheme aScheme,
G4double x, G4double x1, G4double x2,
G4double y1, G4double y2) const;
G4double
GetBinIntegral(const G4InterpolationScheme & aScheme,
const G4double x1,const G4double x2,const G4double y1,const G4double y2);
G4double
GetWeightedBinIntegral(const G4InterpolationScheme & aScheme,
const G4double x1,const G4double x2,const G4double y1,const G4double y2);
private:
inline G4double Histogram(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const;
inline G4double LinearLinear(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const;
inline G4double LinearLogarithmic(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const;
inline G4double LogarithmicLinear(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const;
inline G4double LogarithmicLogarithmic(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const;
inline G4double Random(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const;
};
inline G4double G4ParticleHPInterpolator::
Interpolate(G4InterpolationScheme aScheme,
G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
{
G4double result(0);
G4int theScheme = aScheme;
theScheme = theScheme%CSTART_;
switch(theScheme)
{
case 1:
//080809
//result = Histogram(x, x1, x2, y1, y2);
result = LinearLinear(x, x1, x2, y1, y2);
break;
case 2:
result = LinearLinear(x, x1, x2, y1, y2);
break;
case 3:
result = LinearLogarithmic(x, x1, x2, y1, y2);
break;
case 4:
result = LogarithmicLinear(x, x1, x2, y1, y2);
break;
case 5:
result = LogarithmicLogarithmic(x, x1, x2, y1, y2);
break;
case 6:
result = Random(x, x1, x2, y1, y2);
break;
default:
G4cout << "theScheme = "<<theScheme<<G4endl;
throw G4HadronicException(__FILE__, __LINE__, "G4ParticleHPInterpolator::Carthesian Invalid InterpolationScheme");
break;
}
return result;
}
inline G4double G4ParticleHPInterpolator::
Interpolate2(G4InterpolationScheme aScheme,
G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
{
G4double result(0);
G4int theScheme = aScheme;
theScheme = theScheme%CSTART_;
switch(theScheme)
{
case 1:
result = Histogram(x, x1, x2, y1, y2);
break;
case 2:
result = LinearLinear(x, x1, x2, y1, y2);
break;
case 3:
result = LinearLogarithmic(x, x1, x2, y1, y2);
break;
case 4:
result = LogarithmicLinear(x, x1, x2, y1, y2);
break;
case 5:
result = LogarithmicLogarithmic(x, x1, x2, y1, y2);
break;
case 6:
result = Random(x, x1, x2, y1, y2);
break;
default:
G4cout << "theScheme = "<<theScheme<<G4endl;
throw G4HadronicException(__FILE__, __LINE__, "G4ParticleHPInterpolator::Carthesian Invalid InterpolationScheme");
break;
}
return result;
}
inline G4double G4ParticleHPInterpolator::
Histogram(G4double , G4double , G4double , G4double y1, G4double ) const
{
G4double result;
result = y1;
return result;
}
inline G4double G4ParticleHPInterpolator::
LinearLinear(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
{
G4double slope=0, off=0;
if(x2-x1==0) return (y2+y1)/2.;
slope = (y2-y1)/(x2-x1);
off = y2-x2*slope;
G4double y = x*slope+off;
return y;
}
inline G4double G4ParticleHPInterpolator::
LinearLogarithmic(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
{
G4double result;
if(x==0) result = y1+y2/2.;
else if(x1==0) result = y1;
else if(x2==0) result = y2;
else result = LinearLinear(std::log(x), std::log(x1), std::log(x2), y1, y2);
return result;
}
inline G4double G4ParticleHPInterpolator::
LogarithmicLinear(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
{
G4double result;
if(y1==0||y2==0) result = 0;
else
{
result = LinearLinear(x, x1, x2, std::log(y1), std::log(y2));
result = std::exp(result);
}
return result;
}
inline G4double G4ParticleHPInterpolator::
LogarithmicLogarithmic(G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
{
G4double result;
if(x==0) result = y1+y2/2.;
else if(x1==0) result = y1;
else if(x2==0) result = y2;
if(y1==0||y2==0) result = 0;
else
{
result = LinearLinear(std::log(x), std::log(x1), std::log(x2), std::log(y1), std::log(y2));
result = std::exp(result);
}
return result;
}
inline G4double G4ParticleHPInterpolator::
Random(G4double , G4double , G4double , G4double y1, G4double y2) const
{
G4double result;
result = y1+G4UniformRand()*(y2-y1);
return result;
}
#endif
@@ -0,0 +1,117 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPIsoData_h
#define G4ParticleHPIsoData_h 1
// Hadronic Process: Very Low Energy Neutron X-Sections
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
// Has the Cross-section data for on isotope.
#include "globals.hh"
#include "G4ios.hh"
#include <fstream>
// #include <strstream>
#include <stdlib.h>
#include "G4ParticleHPVector.hh"
#include "G4ParticleHPNames.hh"
class G4ParticleDefinition;
class G4ParticleHPIsoData
{
public:
G4ParticleHPIsoData()
{
theChannelData = 0;
theFissionData = 0;
theCaptureData = 0;
theElasticData = 0;
theInelasticData = 0;
}
~G4ParticleHPIsoData(){if(theChannelData!=0) delete theChannelData;}
inline G4double GetXsec(G4double energy)
{
return std::max(0., theChannelData->GetXsec(energy));
}
//G4bool Init(G4int A, G4int Z, G4double abun, G4String dirName, G4String aFSType);
G4bool Init(G4int A, G4int Z, G4double abun, G4String dirName, G4String aFSType){ G4int M = 0 ; return Init( A, Z, M, abun, dirName, aFSType); };
G4bool Init(G4int A, G4int Z, G4int M, G4double abun, G4String dirName, G4String aFSType);
//void Init(G4int A, G4int Z, G4double abun); //fill PhysicsVector for this Isotope
void Init(G4int A, G4int Z, G4double abun, G4ParticleDefinition* projectile, const char* dataDirVariable) { G4int M =0;
Init( A, Z, M, abun, projectile, dataDirVariable ); };
void Init(G4int A, G4int Z, G4int M, G4double abun, G4ParticleDefinition* projectile, const char* dataDirVariable); //fill PhysicsVector for this Isotope
inline G4ParticleHPVector * MakeElasticData()
{return theElasticData;}
inline G4ParticleHPVector * MakeFissionData()
{return theFissionData;}
inline G4ParticleHPVector * MakeCaptureData()
{return theCaptureData;}
inline G4ParticleHPVector * MakeInelasticData()
{return theInelasticData;}
inline G4ParticleHPVector * MakeChannelData()
{return theChannelData;}
G4String GetName(G4int A, G4int Z, G4String base, G4String rest);
inline void FillChannelData(G4ParticleHPVector * aBuffer)
{
if(theChannelData!=0) throw G4HadronicException(__FILE__, __LINE__, "IsoData has channel full already!!!");
theChannelData = new G4ParticleHPVector;
for(G4int i=0; i<aBuffer->GetVectorLength(); i++)
{
theChannelData->SetPoint(i, aBuffer->GetPoint(i));
}
}
inline void ThinOut(G4double precision)
{
if(theFissionData) theFissionData->ThinOut(precision);
if(theCaptureData) theCaptureData->ThinOut(precision);
if(theElasticData) theElasticData->ThinOut(precision);
if(theInelasticData) theInelasticData->ThinOut(precision);
}
private:
G4ParticleHPVector * theFissionData;
G4ParticleHPVector * theCaptureData;
G4ParticleHPVector * theElasticData;
G4ParticleHPVector * theInelasticData;
G4ParticleHPVector * theChannelData;
G4String theFileName;
G4ParticleHPNames theNames;
};
#endif
@@ -0,0 +1,57 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPIsotropic_h
#define G4ParticleHPIsotropic_h 1
#include "G4ios.hh"
#include <fstream>
#include "globals.hh"
#include "G4ReactionProduct.hh"
#include "G4VParticleHPEnergyAngular.hh"
class G4ParticleHPIsotropic : public G4VParticleHPEnergyAngular
{
public:
G4ParticleHPIsotropic(){}
~G4ParticleHPIsotropic(){}
public:
void Init(std::istream & aDataFile);
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass);
G4double MeanEnergyOfThisInteraction()
{
return -1.;
}
private:
};
#endif
@@ -0,0 +1,86 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPJENDLHEData_h
#define G4ParticleHPJENDLHEData_h 1
// Class Description
// Cross-section data set for a high precision (based on JENDL_HE evaluated data
// libraries) description of elastic scattering 20 MeV ~ 3 GeV;
// Class Description - End
// 15-Nov-06 First Implementation is done by T. Koi (SLAC/SCCS)
// 080422 Add IsZAApplicable method (return false) by T. Koi
//
#include "G4VCrossSectionDataSet.hh"
#include "G4DynamicParticle.hh"
#include "G4Neutron.hh"
#include "G4Element.hh"
#include "G4ParticleDefinition.hh"
#include "G4PhysicsVector.hh"
#include <map>
class G4ParticleHPJENDLHEData : public G4VCrossSectionDataSet
{
public:
G4ParticleHPJENDLHEData();
G4ParticleHPJENDLHEData( G4String , G4ParticleDefinition* );
~G4ParticleHPJENDLHEData();
G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
G4bool IsZAApplicable( const G4DynamicParticle* , G4double /*ZZ*/, G4double /*AA*/)
{ return false; }
G4double GetCrossSection(const G4DynamicParticle*, const G4Element*, G4double aT);
void BuildPhysicsTable(const G4ParticleDefinition&);
void DumpPhysicsTable(const G4ParticleDefinition&);
private:
std::vector< G4bool > vElement;
std::map< G4int , std::map< G4int , G4PhysicsVector* >* > mIsotope;
G4bool isThisInMap ( G4int , G4int );
G4bool isThisNewIsotope ( G4int z , G4int a ) { return !( isThisInMap( z , a ) ); };
G4PhysicsVector* readAFile ( std::fstream* );
void registAPhysicsVector ( G4int , G4int , G4PhysicsVector* );
G4double getXSfromThisIsotope ( G4int , G4int , G4double );
G4String reactionName;
G4String particleName;
};
#endif
@@ -0,0 +1,47 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPJENDLHEElasticData_h
#define G4ParticleHPJENDLHEElasticData_h 1
// Class Description
// Cross-section data set for a high precision (based on JENDL_HE evaluated data
// libraries) description of elastic scattering 20 MeV ~ 3 GeV;
// Class Description - End
// 15-Nov-06 First Implementation is done by T. Koi (SLAC/SCCS)
#include "G4ParticleHPJENDLHEData.hh"
class G4ParticleHPJENDLHEElasticData : public G4ParticleHPJENDLHEData
{
public:
G4ParticleHPJENDLHEElasticData();
};
#endif
@@ -0,0 +1,46 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPJENDLHEInelasticData_h
#define G4ParticleHPJENDLHEInelasticData_h 1
// Class Description
// Cross-section data set for a high precision (based on JENDL_HE evaluated data
// libraries) description of elastic scattering 20 MeV ~ 3 GeV;
// Class Description - End
// 15-Nov-06 First Implementation is done by T. Koi (SLAC/SCCS)
#include "G4ParticleHPJENDLHEData.hh"
class G4ParticleHPJENDLHEInelasticData : public G4ParticleHPJENDLHEData
{
public:
G4ParticleHPJENDLHEInelasticData();
};
#endif
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPKallbachMannSyst_h
#define G4ParticleHPKallbachMannSyst_h 1
#include "globals.hh"
class G4ParticleHPKallbachMannSyst
{
public:
G4ParticleHPKallbachMannSyst(G4double aCompoundFraction,
G4double anIncidentEnergy, G4double anIncidentMass,
G4double aProductEnergy, G4double aProductMass,
G4double aResidualMass, G4int aResidualA, G4int aResidualZ,
G4double aTargetMass, G4int aTargetA, G4int aTargetZ)
{
theCompoundFraction = aCompoundFraction;
theIncidentEnergy = anIncidentEnergy;
theIncidentMass = anIncidentMass;
theProductEnergy = aProductEnergy;
theProductMass = aProductMass;
theResidualMass = aResidualMass;
theResidualA = aResidualA;
theResidualZ = aResidualZ;
theTargetMass = aTargetMass;
theTargetA = aTargetA;
theTargetZ = aTargetZ;
}
~G4ParticleHPKallbachMannSyst() {};
G4double Sample(G4double anEnergy);
G4double Kallbach(G4double cosTh, G4double anEnergy);
G4double GetKallbachZero(G4double anEnergy);
G4double A(G4double anEnergy);
G4double SeparationEnergy(G4int Ac, G4int Nc, G4int AA, G4int ZA);
private:
G4double theCompoundFraction;
G4double theIncidentEnergy;
G4double theIncidentMass;
G4double theProductEnergy;
G4double theProductMass;
G4double theResidualMass;
G4double theTargetMass;
G4int theResidualA;
G4int theResidualZ;
G4int theTargetA;
G4int theTargetZ;
};
#endif
@@ -0,0 +1,55 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPLCFissionFS_h
#define G4ParticleHPLCFissionFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4DynamicParticleVector.hh"
#include "G4ParticleHPFissionBaseFS.hh"
class G4ParticleHPLCFissionFS : public G4ParticleHPFissionBaseFS
{
public:
G4ParticleHPLCFissionFS(){ hasXsec = false; }
~G4ParticleHPLCFissionFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition* projectile );
G4DynamicParticleVector * ApplyYourself(G4int NNeutrons);
G4ParticleHPFinalState * New()
{
G4ParticleHPLCFissionFS * theNew = new G4ParticleHPLCFissionFS;
return theNew;
}
private:
G4HadFinalState * ApplyYourself(const G4HadProjectile & ) { return 0; }
};
#endif
@@ -0,0 +1,97 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPLabAngularEnergy_h
#define G4ParticleHPLabAngularEnergy_h 1
#include "G4ios.hh"
#include <fstream>
#include "globals.hh"
#include "G4Neutron.hh"
#include "G4ParticleHPInterpolator.hh"
#include "G4ParticleHPVector.hh"
#include "G4VParticleHPEnergyAngular.hh"
#include "G4ReactionProduct.hh"
#include "G4InterpolationManager.hh"
class G4ParticleHPLabAngularEnergy : public G4VParticleHPEnergyAngular
{
public:
G4ParticleHPLabAngularEnergy()
{
theEnergies = 0;
theData = 0;
nCosTh = 0;
theSecondManager = 0;
}
~G4ParticleHPLabAngularEnergy()
{
if(theEnergies != 0) delete [] theEnergies;
if(nCosTh != 0) delete [] nCosTh;
if(theData != 0)
{
for(G4int i=0; i<nEnergies; i++)
delete [] theData[i];
delete [] theData;
}
if(theSecondManager != 0) delete [] theSecondManager;
}
public:
void Init(std::istream & aDataFile);
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass);
G4double MeanEnergyOfThisInteraction()
{
return currentMeanEnergy;
}
private:
// number of incoming neutron energies
G4int nEnergies;
// Interpol between neutron energies
G4InterpolationManager theManager;
// Incoming neutron energies
G4double * theEnergies;
// number of directioncosines; parallel to theEnergies
G4int * nCosTh;
// knows the interpolation between these stores
G4InterpolationManager * theSecondManager;
// vectors of secondary energy, haufigkeit; parallel to theEnergies
G4ParticleHPVector ** theData;
// utility interpolator
G4ParticleHPInterpolator theInt;
// cashed value of mean secondary energy in this event.
G4double currentMeanEnergy;
};
#endif
@@ -0,0 +1,95 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPLegendreStore_h
#define G4ParticleHPLegendreStore_h 1
#include "G4ParticleHPLegendreTable.hh"
#include "G4InterpolationManager.hh"
#include "G4ios.hh"
#include <fstream>
class G4ParticleHPLegendreStore
{
public:
G4ParticleHPLegendreStore(G4int n)
{
theCoeff = new G4ParticleHPLegendreTable[n];
nEnergy = n;
}
~G4ParticleHPLegendreStore()
{
delete [] theCoeff;
}
inline void Init(G4int i, G4double e, G4int n)
{
theCoeff[i].Init(e, n);
}
inline void SetNPoints(G4int n) { nEnergy = n; }
inline void SetEnergy(G4int i, G4double energy) { theCoeff[i].SetEnergy(energy); }
inline void SetTemperature(G4int i, G4double temp) { theCoeff[i].SetTemperature(temp); }
inline void SetCoeff(G4int i, G4int l, G4double coeff) {theCoeff[i].SetCoeff(l, coeff); }
inline void SetCoeff(G4int i, G4ParticleHPLegendreTable * theTable)
{
if(i>nEnergy) throw G4HadronicException(__FILE__, __LINE__, "LegendreTableIndex out of range");
theCoeff[i] = *theTable;
// not here -- see G4ParticleHPPhotonDist.cc line 275
// delete theTable;
}
inline G4double GetCoeff(G4int i, G4int l) {return theCoeff[i].GetCoeff(l);}
inline G4double GetEnergy(G4int i){return theCoeff[i].GetEnergy();}
inline G4double GetTemperature(G4int i){return theCoeff[i].GetTemperature();}
inline G4int GetNumberOfPoly(G4int i) {return theCoeff[i].GetNumberOfPoly();}
G4double SampleDiscreteTwoBody (G4double anEnergy);
G4double SampleElastic (G4double anEnergy);
G4double Sample (G4double energy);
G4double SampleMax (G4double energy);
G4double Integrate(G4int k, G4double costh);
void InitInterpolation(std::istream & aDataFile)
{
theManager.Init(aDataFile);
}
void SetManager(G4InterpolationManager & aManager)
{
theManager = aManager;
}
private:
G4int nEnergy;
G4ParticleHPLegendreTable * theCoeff;
G4InterpolationManager theManager; // interpolate between different Tables
};
#endif
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPLegendreTable_h
#define G4ParticleHPLegendreTable_h 1
#include <fstream>
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4ios.hh"
#include "G4InterpolationManager.hh"
class G4ParticleHPLegendreTable
{
public:
G4ParticleHPLegendreTable()
{
nCoeff=0;
theCoeff = 0;
}
~G4ParticleHPLegendreTable(){if(theCoeff!=0) delete [] theCoeff;}
void operator= (const G4ParticleHPLegendreTable & aSet)
{
if(&aSet!=this)
{
theRep = aSet.theRep;
theEnergy = aSet.theEnergy;
theTemp = aSet.theTemp;
theManager = aSet.theManager;
nCoeff = aSet.nCoeff;
if(theCoeff!=0) delete [] theCoeff;
theCoeff = new G4double[nCoeff];
for(G4int i=0; i<nCoeff; i++)
{
theCoeff[i] = aSet.theCoeff[i];
}
}
}
inline void Init(std::istream & aDataFile)
{
G4double eNeu, coeff;
G4int nPoly;
aDataFile >> eNeu >> nPoly;
eNeu *= CLHEP::eV;
Init(eNeu, nPoly);
for(G4int l=0; l<nPoly; l++)
{
aDataFile >> coeff;
SetCoeff(l+1, coeff);
}
}
inline void Init(G4double e, G4int n)
{
nCoeff = n+1;
theCoeff = new G4double[nCoeff];
for(G4int i=0; i<nCoeff; i++) theCoeff[i] = 0;
theCoeff[0]=1.;
theEnergy = e;
// G4cout << "G4ParticleHPLegendreTable::Init called "<<e<<" "<<n<<G4endl;
}
inline void SetEnergy(G4double energy){ theEnergy = energy; }
inline void SetTemperature(G4double temp){ theTemp = temp; }
inline void SetCoeff(G4int l, G4double coeff) {theCoeff[l]=coeff;}
inline void SetRepresentation(G4int aRep) {theRep = aRep;}
inline G4double GetCoeff(G4int l) {return theCoeff[l];}
inline G4double GetEnergy(){return theEnergy;}
inline G4double GetTemperature(){return theTemp;}
inline G4int GetNumberOfPoly() {return nCoeff;}
inline G4int GetRepresentation() {return theRep;}
inline const G4InterpolationManager & GetManager() {return theManager;}
private:
G4int theRep;
G4double theEnergy;
G4double theTemp;
G4int nCoeff;
G4InterpolationManager theManager; // knows the interpolation between stores
G4double * theCoeff;
};
#endif
@@ -0,0 +1,78 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPLevel_h
#define G4ParticleHPLevel_h 1
#include "globals.hh"
#include "G4ios.hh"
#include <fstream>
#include "G4DynamicParticleVector.hh"
#include "Randomize.hh"
#include "G4Gamma.hh"
class G4ParticleHPGamma;
class G4ParticleHPLevel
{
public:
G4ParticleHPLevel()
{
nGammas = 0;
theGammas = 0;
}
~G4ParticleHPLevel();
void SetNumberOfGammas(G4int aGammas);
void SetGamma(G4int i, G4ParticleHPGamma * aGamma);
G4DynamicParticleVector * GetDecayGammas();
inline void SetLevelEnergy(G4double anEnergy)
{
levelEnergy = anEnergy;
}
inline G4double GetLevelEnergy()
{
return levelEnergy;
}
G4double GetGammaEnergy(G4int i);
private:
G4double levelEnergy;
G4int nGammas;
G4ParticleHPGamma ** theGammas;
};
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPList_h
#define G4ParticleHPList_h 1
#include "globals.hh"
#include "G4ios.hh"
#include <fstream>
class G4ParticleHPList
{
public:
G4ParticleHPList()
{
theData = new G4double[2];
nPoints=2;
nEntries=0;
}
~G4ParticleHPList()
{
delete [] theData;
}
inline void SetValue(G4int i, G4double y)
{
Check(i);
theData[i]=y;
}
G4double GetValue(G4int i);
inline G4int GetListLength() {return nEntries;}
void Dump();
void Init(std::istream & aDataFile, G4int nPar, G4double unit=1.);
void Init(std::istream & aDataFile, G4double unit=1.);
inline void SetLabel(G4double aLabel) { theLabel = aLabel; }
inline G4double GetLabel() { return theLabel; }
private:
void Check(G4int i);
G4double theLabel;
G4double * theData;
G4int nEntries;
G4int nPoints;
};
#endif
@@ -0,0 +1,155 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPMadlandNixSpectrum_h
#define G4ParticleHPMadlandNixSpectrum_h 1
#include <fstream>
#include <cmath>
#include <CLHEP/Units/PhysicalConstants.h>
#include "globals.hh"
#include "G4ios.hh"
#include "Randomize.hh"
#include "G4ParticleHPVector.hh"
#include "G4VParticleHPEDis.hh"
// #include <nag.h> @
// #include <nags.h> @
// we will need a List of these .... one per term.
class G4ParticleHPMadlandNixSpectrum : public G4VParticleHPEDis
{
public:
G4ParticleHPMadlandNixSpectrum()
{
expm1 = std::exp(-1.);
}
~G4ParticleHPMadlandNixSpectrum()
{
}
inline void Init(std::istream & aDataFile)
{
theFractionalProb.Init(aDataFile);
aDataFile>> theAvarageKineticPerNucleonForLightFragments;
theAvarageKineticPerNucleonForLightFragments*=CLHEP::eV;
aDataFile>> theAvarageKineticPerNucleonForHeavyFragments;
theAvarageKineticPerNucleonForHeavyFragments*=CLHEP::eV;
theMaxTemp.Init(aDataFile);
}
inline G4double GetFractionalProbability(G4double anEnergy)
{
return theFractionalProb.GetY(anEnergy);
}
G4double Sample(G4double anEnergy);
private:
G4double Madland(G4double aSecEnergy, G4double tm);
inline G4double FissionIntegral(G4double tm, G4double anEnergy)
{
return 0.5*( GIntegral(tm, anEnergy, theAvarageKineticPerNucleonForLightFragments)
+GIntegral(tm, anEnergy, theAvarageKineticPerNucleonForHeavyFragments) );
}
G4double GIntegral(G4double tm, G4double anEnergy, G4double aMean);
inline G4double Gamma05(G4double aValue)
{
G4double result;
// gamma(1.2,x*X) = std::sqrt(CLHEP::pi)*Erf(x)
G4double x = std::sqrt(aValue);
G4double t = 1./(1+0.47047*x);
result = 1- (0.3480242*t - 0.0958798*t*t + 0.7478556*t*t*t)*std::exp(-aValue); // @ check
result *= std::sqrt(CLHEP::pi);
return result;
}
inline G4double Gamma15(G4double aValue)
{
G4double result;
// gamma(a+1, x) = a*gamma(a,x)-x**a*std::exp(-x)
result = 0.5*Gamma05(aValue) - std::sqrt(aValue)*std::exp(-aValue); // @ check
return result;
}
inline G4double Gamma25(G4double aValue)
{
G4double result;
result = 1.5*Gamma15(aValue) - std::pow(aValue,1.5)*std::exp(aValue); // @ check
return result;
}
inline G4double E1(G4double aValue)
{
// good only for rather low aValue @@@ replace by the corresponding NAG function for the
// exponential integral. (<5 seems ok.
G4double gamma = 0.577216;
G4double precision = 0.000001;
G4double result =-gamma - std::log(aValue);
G4double term = -aValue;
//110527TKDB Unnessary codes, Detected by gcc4.6 compiler
//G4double last;
G4int count = 1;
result -= term;
for(;;)
{
count++;
//110527TKDB Unnessary codes, Detected by gcc4.6 compiler
//last = result;
term = -term*aValue*(count-1)/(count*count);
result -=term;
if(std::fabs(term)/std::fabs(result)<precision) break;
}
// NagError *fail; @
// result = nag_exp_integral(aValue, fail); @
return result;
}
private:
G4double expm1;
private:
G4ParticleHPVector theFractionalProb;
G4double theAvarageKineticPerNucleonForLightFragments;
G4double theAvarageKineticPerNucleonForHeavyFragments;
G4ParticleHPVector theMaxTemp;
};
#endif
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPManager_h
#define G4ParticleHPManager_h 1
// Class Description
// Manager of NeutronHP
// Class Description - End
// 121031 First implementation done by T. Koi (SLAC/PPA)
//
#include "globals.hh"
#include "G4ParticleHPReactionWhiteBoard.hh"
class G4ParticleHPManager
{
public:
static G4ParticleHPManager* GetInstance() {
if ( instance == NULL) instance = new G4ParticleHPManager();
return instance;
};
private:
G4ParticleHPManager();
G4ParticleHPManager( const G4ParticleHPManager& ){};
~G4ParticleHPManager();
static G4ThreadLocal G4ParticleHPManager* instance;
public:
G4ParticleHPReactionWhiteBoard* GetReactionWhiteBoard();
void OpenReactionWhiteBoard();
void CloseReactionWhiteBoard(){delete RWB; RWB=NULL;};
void GetDataStream( G4String , std::istringstream& iss );
void SetVerboseLevel( G4int i );
G4int GetVerboseLevel() {return verboseLevel; };
private:
G4ParticleHPReactionWhiteBoard* RWB;
G4int verboseLevel;
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPN2AInelasticFS_h
#define G4ParticleHPN2AInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPN2AInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPN2AInelasticFS(){}
~G4ParticleHPN2AInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPN2AInelasticFS * theNew = new G4ParticleHPN2AInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPN2PInelasticFS_h
#define G4ParticleHPN2PInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPN2PInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPN2PInelasticFS(){}
~G4ParticleHPN2PInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPN2PInelasticFS * theNew = new G4ParticleHPN2PInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPN3AInelasticFS_h
#define G4ParticleHPN3AInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPN3AInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPN3AInelasticFS(){}
~G4ParticleHPN3AInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPN3AInelasticFS * theNew = new G4ParticleHPN3AInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNAInelasticFS_h
#define G4ParticleHPNAInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPNAInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPNAInelasticFS(){}
~G4ParticleHPNAInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPNAInelasticFS * theNew = new G4ParticleHPNAInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,100 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNBodyPhaseSpace_h
#define G4ParticleHPNBodyPhaseSpace_h 1
#include <fstream>
#include <CLHEP/Units/PhysicalConstants.h>
#include "globals.hh"
#include "G4ios.hh"
#include "G4Neutron.hh"
#include "G4VParticleHPEnergyAngular.hh"
#include "G4ReactionProduct.hh"
class G4ParticleHPNBodyPhaseSpace : public G4VParticleHPEnergyAngular
{
public:
G4ParticleHPNBodyPhaseSpace(){}
~G4ParticleHPNBodyPhaseSpace(){}
public:
void Init(G4double aMass, G4int aCount)
{
theTotalMass=aMass;
theTotalCount=aCount;
}
void Init(std::istream & aDataFile)
{
aDataFile >> theTotalMass >> theTotalCount;
theTotalMass *= G4Neutron::Neutron()->GetPDGMass();
}
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass);
private:
inline G4double Prob(G4double anEnergy, G4double eMax, G4int n)
{
G4double result;
result = std::sqrt(anEnergy)*std::pow(eMax-anEnergy, 3.*n/2.-4.);
return result;
}
inline G4double C(G4double anEnergy, G4double mass)
{
G4double result(0);
if(theTotalCount==3) result = 4./CLHEP::pi/std::pow(GetEmax(anEnergy, mass),2);
if(theTotalCount==4) result = 105./32./std::pow(GetEmax(anEnergy, mass), 3.5);
if(theTotalCount==5) result = 256./14./CLHEP::pi/std::pow(GetEmax(anEnergy, mass), 5.);
return result;
}
inline G4double GetEmax(G4double anEnergy, G4double mass)
{
G4double result;
G4double tMass = GetTarget()->GetMass();
G4double pMass = GetProjectileRP()->GetMass();
G4double availableEnergy = GetQValue() + anEnergy*tMass/(pMass+tMass);
result = availableEnergy*(theTotalMass-mass)/theTotalMass;
return result;
}
G4double MeanEnergyOfThisInteraction() {return -1; }
private:
G4double theTotalMass;
G4int theTotalCount;
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPND2AInelasticFS_h
#define G4ParticleHPND2AInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPND2AInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPND2AInelasticFS(){}
~G4ParticleHPND2AInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPND2AInelasticFS * theNew = new G4ParticleHPND2AInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNDInelasticFS_h
#define G4ParticleHPNDInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPNDInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPNDInelasticFS(){}
~G4ParticleHPNDInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPNDInelasticFS * theNew = new G4ParticleHPNDInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNHe3InelasticFS_h
#define G4ParticleHPNHe3InelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPNHe3InelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPNHe3InelasticFS(){}
~G4ParticleHPNHe3InelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPNHe3InelasticFS * theNew = new G4ParticleHPNHe3InelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNInelasticFS_h
#define G4ParticleHPNInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticCompFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPNInelasticFS : public G4ParticleHPInelasticCompFS
{
public:
G4ParticleHPNInelasticFS(){}
~G4ParticleHPNInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPNInelasticFS * theNew = new G4ParticleHPNInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNPAInelasticFS_h
#define G4ParticleHPNPAInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPNPAInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPNPAInelasticFS(){}
~G4ParticleHPNPAInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPNPAInelasticFS * theNew = new G4ParticleHPNPAInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNPInelasticFS_h
#define G4ParticleHPNPInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPNPInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPNPInelasticFS(){}
~G4ParticleHPNPInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPNPInelasticFS * theNew = new G4ParticleHPNPInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNT2AInelasticFS_h
#define G4ParticleHPNT2AInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPNT2AInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPNT2AInelasticFS(){}
~G4ParticleHPNT2AInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPNT2AInelasticFS * theNew = new G4ParticleHPNT2AInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNTInelasticFS_h
#define G4ParticleHPNTInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPNTInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPNTInelasticFS(){}
~G4ParticleHPNTInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPNTInelasticFS * theNew = new G4ParticleHPNTInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNXInelasticFS_h
#define G4ParticleHPNXInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPNXInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPNXInelasticFS(){}
~G4ParticleHPNXInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPNXInelasticFS * theNew = new G4ParticleHPNXInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,73 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPNames_h
#define G4ParticleHPNames_h 1
#include "G4ios.hh"
#include <fstream>
// #include <strstream>
#include <stdlib.h>
#include "globals.hh"
#include "G4ParticleHPDataUsed.hh"
class G4ParticleHPNames
{
public:
G4ParticleHPNames(){theMaxOffSet = 5;}
G4ParticleHPNames(G4int maxOffSet){theMaxOffSet = maxOffSet;}
~G4ParticleHPNames(){}
//G4ParticleHPDataUsed GetName(G4int A, G4int Z, G4String base, G4String rest, G4bool & active);
G4ParticleHPDataUsed GetName(G4int A, G4int Z, G4String base, G4String rest, G4bool & active) { G4int M = 0; return GetName( A, Z, M, base, rest, active); };
G4ParticleHPDataUsed GetName(G4int A, G4int Z, G4int M, G4String base, G4String rest, G4bool & active);
G4String GetName(G4int i);
void SetMaxOffSet(G4int anOffset) { theMaxOffSet = anOffset; }
public:
static const G4String theString[100];
G4int theMaxOffSet;
G4String itoa(int current)
{
const char theDigits[11] = "0123456789";
G4String result;
int digit;
do
{
digit = current-10*(current/10);
result=theDigits[digit]+result;
current/=10;
}
while(current!=0);
return result;
}
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPPAInelasticFS_h
#define G4ParticleHPPAInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPPAInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPPAInelasticFS(){}
~G4ParticleHPPAInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPPAInelasticFS * theNew = new G4ParticleHPPAInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPPDInelasticFS_h
#define G4ParticleHPPDInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPPDInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPPDInelasticFS(){}
~G4ParticleHPPDInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPPDInelasticFS * theNew = new G4ParticleHPPDInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPPInelasticFS_h
#define G4ParticleHPPInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticCompFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPPInelasticFS : public G4ParticleHPInelasticCompFS
{
public:
G4ParticleHPPInelasticFS(){}
~G4ParticleHPPInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPPInelasticFS * theNew = new G4ParticleHPPInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPPTInelasticFS_h
#define G4ParticleHPPTInelasticFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4HadFinalState.hh"
#include "G4ParticleHPInelasticBaseFS.hh"
#include "G4ParticleHPAngular.hh"
#include "G4ParticleHPEnergyDistribution.hh"
#include "G4ParticleHPEnAngCorrelation.hh"
#include "G4ParticleHPPhotonDist.hh"
class G4ParticleHPPTInelasticFS : public G4ParticleHPInelasticBaseFS
{
public:
G4ParticleHPPTInelasticFS(){}
~G4ParticleHPPTInelasticFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition*);
G4HadFinalState * ApplyYourself(const G4HadProjectile & theTrack);
G4ParticleHPFinalState * New()
{
G4ParticleHPPTInelasticFS * theNew = new G4ParticleHPPTInelasticFS;
return theNew;
}
private:
};
#endif
@@ -0,0 +1,134 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// 070618 Comment out unused private member leaking by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPPartial_h
#define G4ParticleHPPartial_h 1
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4ParticleHPVector.hh"
#include "G4InterpolationManager.hh"
#include "G4ParticleHPInterpolator.hh"
class G4ParticleHPPartial
{
public:
G4ParticleHPPartial(G4int n)
{
X = new G4double[n];
data = new G4ParticleHPVector[n];
nData = n;
T=0;
}
G4ParticleHPPartial(G4int n1, G4int n2)
{
T = new G4double[n2];
X = new G4double[n1];
data = new G4ParticleHPVector[n1];
nData = std::max(n1,n2);
}
void InitInterpolation(G4int i, std::istream & aDataFile)
{
data[i].InitInterpolation(aDataFile);
}
void InitInterpolation(std::istream & aDataFile)
{
theManager.Init(aDataFile);
}
void Init(std::istream & aDataFile)
{
G4int i;
G4double e;
for( i=0; i<nData; i++)
{
aDataFile >> e;
e *= CLHEP::eV;
SetX(i,e);
InitData(i, aDataFile, CLHEP::eV); // energy and probability for gammas
}
}
void InitData(G4int i, std::istream & aDataFile, G4double unit=1.)
{
G4int ii;
G4double eg, pg;
G4int neg;
aDataFile >> neg;
data[i].InitInterpolation(aDataFile);
for (ii=0; ii<neg; ii++)
{
aDataFile >> eg >> pg;
eg *= unit;
SetX(i,ii,eg);
SetY(i,ii,pg);
}
}
~G4ParticleHPPartial()
{
delete [] X;
if(T!=0) delete [] T;
delete [] data;
}
inline G4int GetNumberOfEnergies() {return nData;}
inline void SetX(G4int i, G4double x) {X[i]=x;}
inline void SetT(G4int i, G4double x) {T[i]=x;}
inline void SetX(G4int i, G4int j, G4double x) {data[i].SetX(j,x);}
inline void SetY(G4int i, G4int j, G4double y) {data[i].SetY(j,y);}
inline G4double GetX(G4int i) {return X[i];}
inline G4double GetT(G4int i) {return T[i];}
inline G4double GetX(G4int i, G4int j) {return data[i].GetX(j);}
inline G4double GetY(G4int i, G4int j) {return data[i].GetY(j);}
inline G4double GetY(G4int i, G4double e) {return data[i].GetY(e);}
inline G4int GetNEntries(G4int i) {return data[i].GetVectorLength();}
G4ParticleHPVector * GetY(G4double e1);
G4double Sample(G4double x);
private:
G4double * X;
G4double * T;
G4ParticleHPVector * data;
// TKDB
//G4ParticleHPVector * theBuffer;
G4int nData;
G4InterpolationManager theManager; // interpolate between different data[i]
G4ParticleHPInterpolator theInt;
};
#endif
@@ -0,0 +1,157 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPParticleYield_h
#define G4ParticleHPParticleYield_h 1
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4ParticleHPVector.hh"
#include "G4ParticleHPPolynomExpansion.hh"
#include "G4ParticleHPList.hh"
class G4ParticleHPParticleYield
{
public:
G4ParticleHPParticleYield()
{
simpleMean = true;
spontPrompt = true;
hasPromptData = false;
hasDelayedData = false;
}
~G4ParticleHPParticleYield(){}
G4double GetTargetMass() { return targetMass; }
void InitMean(std::istream & aDataFile)
{
G4int iflag;
aDataFile >> targetMass >>iflag;
if(iflag == 1) simpleMean=false;
if(simpleMean)
{
theSimpleMean.Init(aDataFile, CLHEP::eV);
}
else
{
theMean.Init(aDataFile);
}
}
void InitPrompt(std::istream & aDataFile)
{
hasPromptData = true;
G4int iflag;
aDataFile >> targetMass >>iflag;
if(iflag == 2) spontPrompt = false;
if(spontPrompt)
{
aDataFile >> theSpontPrompt;
}
else
{
thePrompt.Init(aDataFile, CLHEP::eV);
}
}
void InitDelayed(std::istream & aDataFile)
{
hasDelayedData = true;
G4int iflag;
aDataFile >> targetMass >>iflag;
thePrecursorDecayConstants.Init(aDataFile, 1./CLHEP::s); // s is the CLHEP unit second
if(iflag == 2) spontDelayed = false;
if(spontDelayed)
{
aDataFile >> theSpontDelayed;
}
else
{
theDelayed.Init(aDataFile, CLHEP::eV);
}
}
G4double GetMean(G4double anEnergy)
{
if(simpleMean)
{
return theSimpleMean.GetY(anEnergy);
}
return theMean.GetValue(anEnergy);
}
G4double GetPrompt(G4double anEnergy)
{
if(!hasPromptData) return 0;
if(spontPrompt)
{
return theSpontPrompt;
}
return thePrompt.GetY(anEnergy);
}
G4double GetDelayed(G4double anEnergy)
{
if(!hasDelayedData) return 0;
if(spontDelayed)
{
return theSpontDelayed;
}
return theDelayed.GetY(anEnergy);
}
inline G4double GetDecayConstant(G4int i)
{
return thePrecursorDecayConstants.GetValue(i);
}
private:
G4double targetMass;
// total mean
G4bool simpleMean;
G4ParticleHPPolynomExpansion theMean;
G4ParticleHPVector theSimpleMean;
// Prompt neutrons
G4bool hasPromptData;
G4bool spontPrompt;
G4ParticleHPVector thePrompt;
G4double theSpontPrompt;
// delayed neutrons
G4bool hasDelayedData;
G4bool spontDelayed;
G4ParticleHPList thePrecursorDecayConstants;
G4ParticleHPVector theDelayed;
G4double theSpontDelayed;
};
#endif
@@ -0,0 +1,194 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// Hadronic Process: Very Low Energy Neutron X-Sections
// original by H.P. Wellisch, TRIUMF, 14-Feb-97
//
// 070606 fix for Valgrind error by T. Koi
// 070612 fix memory leaking by T. Koi
// 070615 fix memory leaking by T. Koi
// 080625 fix memory leaking by T. Koi
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPPhotonDist_h
#define G4ParticleHPPhotonDist_h 1
#include "globals.hh"
#include <fstream>
#include "G4ios.hh"
#include "globals.hh"
#include "G4ParticleHPVector.hh"
#include "G4ParticleHPLegendreTable.hh"
#include "G4ParticleHPAngularP.hh"
#include "G4ParticleHPPartial.hh"
#include "G4ParticleHPFastLegendre.hh"
#include "G4ParticleHPInterpolator.hh"
#include "G4ReactionProductVector.hh"
#include "G4ReactionProduct.hh"
#include "G4Gamma.hh"
#include "G4InterpolationManager.hh"
class G4ParticleHPPhotonDist
{
public:
G4ParticleHPPhotonDist()
: repFlag( 0 )
, targetMass( 0.0 )
, nDiscrete( 0 )
, isoFlag( 0 )
, tabulationType( 0 )
, nDiscrete2( 0 )
, nIso( 0 )
, nPartials( 0 )
, theInternalConversionFlag( 0 )
, nGammaEnergies( 0 )
, theBaseEnergy( 0.0 )
{
disType = 0;
energy = 0;
theYield = 0;
thePartialXsec = 0;
isPrimary = 0;
theShells = 0;
theGammas = 0;
nNeu = 0;
theLegendre = 0;
theAngular = 0;
distribution = 0;
probs = 0;
partials = 0;
actualMult = 0;
theLevelEnergies = 0;
theTransitionProbabilities = 0;
thePhotonTransitionFraction = 0;
}
~G4ParticleHPPhotonDist()
{
delete [] disType;
delete [] energy;
delete [] theYield;
delete [] thePartialXsec;
delete [] isPrimary;
delete [] theShells;
delete [] theGammas;
delete [] nNeu;
delete [] theAngular;
delete [] distribution;
delete [] probs;
if ( theLegendre != NULL )
{
for ( G4int i = 0 ; i < (nDiscrete2-nIso) ; i++ )
if ( theLegendre[i] != NULL ) delete[] theLegendre[i];
delete [] theLegendre;
}
if ( partials != 0 )
{
for ( G4int i = 0 ; i < nPartials ; i++ )
{ delete partials[i]; }
delete [] partials;
}
delete [] actualMult;
// delete theLevelEnergies;
// delete theTransitionProbabilities;
// delete thePhotonTransitionFraction;
// TKDB
delete [] theLevelEnergies;
delete [] theTransitionProbabilities;
delete [] thePhotonTransitionFraction;
}
G4bool InitMean(std::istream & aDataFile);
void InitAngular(std::istream & aDataFile);
void InitEnergies(std::istream & aDataFile);
void InitPartials(std::istream & aDataFile);
G4ReactionProductVector * GetPhotons(G4double anEnergy);
inline G4double GetTargetMass() {return targetMass;}
inline G4bool NeedsCascade() {return repFlag==2;}
inline G4double GetLevelEnergy() {return theBaseEnergy;}
private:
G4int repFlag; //representation as multiplicities or transition probability arrays.
G4double targetMass;
G4int nDiscrete; //number of discrete photons
G4int * disType; // discrete, or continuum photons
G4double * energy; // photon energies
G4ParticleHPVector * theYield; // multiplicity as a function of neutron energy.
G4ParticleHPVector theTotalXsec;
G4ParticleHPVector * thePartialXsec;
G4int * isPrimary;
G4int isoFlag; // isotropic or not?
G4int tabulationType;
G4int nDiscrete2;
G4int nIso;
G4double * theShells;
G4double * theGammas;
G4int * nNeu;
G4InterpolationManager theLegendreManager;
G4ParticleHPLegendreTable ** theLegendre;
G4ParticleHPAngularP ** theAngular;
G4int * distribution; // not used for the moment.
G4int nPartials;
G4ParticleHPVector * probs; // probabilities for the partial distributions.
G4ParticleHPPartial ** partials; // the partials, parallel to the above
G4int * actualMult;
// for transition prob arrays start
G4int theInternalConversionFlag;
G4int nGammaEnergies;
G4double theBaseEnergy;
G4double * theLevelEnergies;
G4double * theTransitionProbabilities;
G4double * thePhotonTransitionFraction;
// for transition prob arrays end
G4ParticleHPFastLegendre theLegend; // fast look-up for leg-integrals
G4ParticleHPInterpolator theInt; // interpolation
};
#endif
@@ -0,0 +1,81 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPPolynomExpansion_h
#define G4ParticleHPPolynomExpansion_h 1
#include <fstream>
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4ios.hh"
class G4ParticleHPPolynomExpansion
{
public:
G4ParticleHPPolynomExpansion()
{
theCoeff = 0;
nPoly=0;
}
~G4ParticleHPPolynomExpansion()
{
if(theCoeff!=0) delete [] theCoeff;
}
inline void Init(std::istream & theData)
{
theData >> nPoly;
theCoeff = new G4double[nPoly];
G4int i;
for(i=0;i<nPoly;i++)
{
theData >> theCoeff[i];
}
}
inline G4double GetValue(G4double anEnergy)
{
G4int i;
G4double result=0;
G4double base = anEnergy/CLHEP::eV;
G4double running = 1;
for(i=0; i<nPoly; i++)
{
result+=theCoeff[i]*running;
running *= base;
}
return result;
}
private:
G4int nPoly;
G4double * theCoeff;
};
#endif
@@ -0,0 +1,209 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPProduct_h
#define G4ParticleHPProduct_h 1
#include "G4HadronicException.hh"
#include "globals.hh"
#include "G4ParticleHPVector.hh"
#include "Randomize.hh"
#include "G4ios.hh"
#include <fstream>
#include "globals.hh"
#include "G4VParticleHPEnergyAngular.hh"
#include "G4ReactionProductVector.hh"
#include "G4ParticleHPContEnergyAngular.hh"
#include "G4ParticleHPDiscreteTwoBody.hh"
#include "G4ParticleHPIsotropic.hh"
#include "G4ParticleHPNBodyPhaseSpace.hh"
#include "G4ParticleHPLabAngularEnergy.hh"
class G4ParticleDefinition;
enum G4HPMultiMethod { G4HPMultiPoisson, G4HPMultiBetweenInts };
class G4ParticleHPProduct
{
public:
G4ParticleHPProduct()
{
theDist = 0;
char * method = getenv( "G4PHP_MULTIPLICITY_METHOD" );
if( method ) {
if( G4String(method) == "Poisson" ) {
theMultiplicityMethod = G4HPMultiPoisson;
} else if( G4String(method) == "BetweenInts" ) {
theMultiplicityMethod = G4HPMultiBetweenInts;
} else {
throw G4HadronicException(__FILE__, __LINE__, ("multiplicity method unknown to G4ParticleHPProduct" + G4String(method)).c_str());
}
} else {
theMultiplicityMethod = G4HPMultiPoisson;
}
}
~G4ParticleHPProduct()
{
if(theDist != 0) delete theDist;
}
inline void Init(std::istream & aDataFile, G4ParticleDefinition* projectile)
{
aDataFile >> theMassCode>>theMass>>theIsomerFlag>>theDistLaw
>> theGroundStateQValue>>theActualStateQValue;
if( getenv("G4PHPTEST") ) G4cout << " G4ParticleHPProduct :: Init MassCode " << theMassCode << " " << theMass << " theActualStateQValue " << theActualStateQValue << G4endl;// GDEB
if( getenv("G4PHPTEST") ) G4cout << " G4ParticleHPProduct :: Init theActualStateQValue " << theActualStateQValue << G4endl;// GDEB
theGroundStateQValue*= CLHEP::eV;
theActualStateQValue*= CLHEP::eV;
theYield.Init(aDataFile, CLHEP::eV);
if(theDistLaw==0)
{
// distribution not known, use E-independent, isotropic angular distribution
theDist = new G4ParticleHPIsotropic;
}
else if(theDistLaw == 1)
{
// Continuum energy-angular distribution
theDist = new G4ParticleHPContEnergyAngular(projectile);
}
else if(theDistLaw == 2)
{
// Discrete 2-body scattering
theDist = new G4ParticleHPDiscreteTwoBody;
}
else if(theDistLaw == 3)
{
// Isotropic emission
theDist = new G4ParticleHPIsotropic;
}
else if(theDistLaw == 4)
{
// Discrete 2-body recoil modification
// not used for now. @@@@
theDist = new G4ParticleHPDiscreteTwoBody;
// the above is only temporary;
// recoils need to be addressed
// properly
delete theDist;
theDist = 0;
}
// else if(theDistLaw == 5)
// {
// charged particles only, to be used in a later stage. @@@@
// }
else if(theDistLaw == 6)
{
// N-Body phase space
theDist = new G4ParticleHPNBodyPhaseSpace;
}
else if(theDistLaw == 7)
{
// Laboratory angular energy paraetrisation
theDist = new G4ParticleHPLabAngularEnergy;
}
else
{
throw G4HadronicException(__FILE__, __LINE__, "distribution law unknown to G4ParticleHPProduct");
}
if(theDist!=0)
{
theDist->SetQValue(theActualStateQValue);
theDist->Init(aDataFile);
}
}
G4int GetMultiplicity(G4double anEnergy);
G4ReactionProductVector * Sample(G4double anEnergy, G4int nParticles);
G4double GetMeanYield(G4double anEnergy)
{
return theYield.GetY(anEnergy);
}
void SetProjectileRP(G4ReactionProduct * aIncidentPart)
{
theProjectileRP = aIncidentPart;
}
void SetTarget(G4ReactionProduct * aTarget)
{
theTarget = aTarget;
}
inline G4ReactionProduct * GetTarget() { return theTarget; }
inline G4ReactionProduct * GetProjectileRP() { return theProjectileRP; }
inline G4double MeanEnergyOfThisInteraction()
{
G4double result;
if(theDist == 0)
{
result = 0;
}
else
{
result=theDist->MeanEnergyOfThisInteraction();
result *= theCurrentMultiplicity;
}
return result;
}
inline G4double GetQValue() { return theActualStateQValue; }
//TK120515 For migration of frameFlag (MF6 LCT) = 3 in
//G4ParticleHPEnAngCorrelation
G4double GetMassCode(){return theMassCode;};
G4double GetMass(){return theMass;};
private:
// data members
G4double theMassCode;
G4double theMass;
G4int theIsomerFlag;
G4double theGroundStateQValue;
G4double theActualStateQValue;
G4int theDistLaw; // redundant
G4ParticleHPVector theYield;
G4VParticleHPEnergyAngular * theDist;
// Utility quantities
G4ReactionProduct * theTarget;
G4ReactionProduct * theProjectileRP;
// cashed values
G4int theCurrentMultiplicity;
G4HPMultiMethod theMultiplicityMethod;
};
#endif
@@ -0,0 +1,71 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPReactionWhiteBoard_h
#define G4ParticleHPReactionWhiteBoard_h 1
// Class Description
// Keep Information of Current Interaction
// Class Description - End
// 121031 First implementation done by T. Koi (SLAC/PPA)
//
#include "globals.hh"
#include <map>
class G4ParticleHPReactionWhiteBoard
{
public:
G4ParticleHPReactionWhiteBoard();
~G4ParticleHPReactionWhiteBoard();
public:
void Dump();
void SetTargZ( G4int Z ){ targZ=Z; };
void SetTargA( G4int A ){ targA=A; };
void SetTargM( G4int M ){ targM=M; };
G4int GetTargZ(){ return targZ; };
G4int GetTargA(){ return targA; };
G4int GetTargM(){ return targM; };
bool AddRecord( std::pair<G4String,G4String> );
G4String GetValue( G4String );
// "0" or "0.0" will retrun for invalid key by following two methods
G4int GetValueInInt( G4String );
G4double GetValueInDouble( G4String );
private:
G4int targZ;
G4int targA;
G4int targM;
std::map< G4String,G4String > mapStringPair;
//,,,
};
#endif
@@ -0,0 +1,55 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// P. Arce, June-2014 Conversion neutron_hp to particle_hp
//
#ifndef G4ParticleHPSCFissionFS_h
#define G4ParticleHPSCFissionFS_h 1
#include "globals.hh"
#include "G4HadProjectile.hh"
#include "G4DynamicParticleVector.hh"
#include "G4ParticleHPFissionBaseFS.hh"
class G4ParticleHPSCFissionFS : public G4ParticleHPFissionBaseFS
{
public:
G4ParticleHPSCFissionFS(){ hasXsec = false; }
~G4ParticleHPSCFissionFS(){}
void Init (G4double A, G4double Z, G4int M, G4String & dirName, G4String & aFSType, G4ParticleDefinition* projectile );
G4DynamicParticleVector * ApplyYourself(G4int NNeutrons);
G4ParticleHPFinalState * New()
{
G4ParticleHPSCFissionFS * theNew = new G4ParticleHPSCFissionFS;
return theNew;
}
private:
G4HadFinalState * ApplyYourself(const G4HadProjectile &) { return 0; }
};
#endif

Some files were not shown because too many files have changed in this diff Show More