Import Geant4 10.1.0 source tree
This commit is contained in:
@@ -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
|
||||
+86
@@ -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
|
||||
+104
@@ -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
|
||||
+137
@@ -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
|
||||
+47
@@ -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
|
||||
+46
@@ -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
|
||||
+155
@@ -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
|
||||
+71
@@ -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
Reference in New Issue
Block a user