Import Geant4 7.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 11:11:55 +02:00
parent e083ffb441
commit 516dbf1a58
5914 changed files with 202605 additions and 71141 deletions
@@ -0,0 +1,96 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoGeometry.hh
// GEANT4 tag $Name: xray_fluo-V03-02-00
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 22 Aug 2003 Alfonso Mantero Created
//
// -------------------------------------------------------------------
#ifndef XrayFluoGeometry_hh
#define XrayFluoGeometry_hh 1
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4VPhysicalVolume;
class G4Material;
class XrayFluoVDetectorType;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoGeometry: public G4VUserDetectorConstruction
{
public:
~XrayFluoGeometry();
virtual G4VPhysicalVolume* Construct()=0;
virtual void UpdateGeometry()=0;
virtual void SetSampleMaterial(G4String)=0;
virtual void SetDetectorType(G4String)=0;
//virtual static XrayFluoDetectorConstruction* GetInstance();
virtual void PrintApparateParameters()=0;
virtual XrayFluoVDetectorType* GetDetectorType()=0;
virtual G4double GetWorldSizeZ()=0;
virtual G4double GetWorldSizeXY()=0;
virtual G4Material* GetSampleMaterial()=0;
protected:
XrayFluoGeometry();
// private:
// virtual void DefineDefaultMaterials()=0;
// virtual G4VPhysicalVolume* ConstructApparate()=0;
// //calculates some quantities used to construct geometry
// virtual void ComputeApparateParameters()=0;
};
#endif
@@ -0,0 +1,99 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoHPGeDetectorType.hh
// GEANT4 tag $Name:
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 16 Jul 2003 Alfonso Mantero Created
//
// -------------------------------------------------------------------
#ifndef XrayFluoHPGeDetectorType_hh
#define XrayFluoHPGeDetectorType_hh
#include "globals.hh"
#include <map>
#include "G4DataVector.hh"
#include "XrayFluoDataSet.hh"
#include "XrayFluoVDetectorType.hh"
//class XrayFluoDataSet;
//class G4DataVector;
class XrayFluoHPGeDetectorType : public XrayFluoVDetectorType
{
public:
~XrayFluoHPGeDetectorType();
//returns an unique instance of this class (singleton)
static XrayFluoHPGeDetectorType* GetInstance();
//gives the material (a string) of wich is made the detector
G4String GetDetectorMaterial();
// Given the energy depositon in the detector, returns the measured value,
// according the energy definition power of the detector
G4double ResponseFunction(G4double);
//returns a random value of the energy measured according to the tabulated
//peack just lower of the energy deposited
G4double GetInfData(G4double,G4double,G4int);
//returns a random value of the energy measured according to the tabulated
//peack just higher of the energy deposited
G4double GetSupData(G4double,G4double,G4int);
//loads the data tabulated for the response and the efficiency data from file
void LoadResponseData(G4String);
void LoadEfficiencyData(G4String);
private:
XrayFluoHPGeDetectorType();
static XrayFluoHPGeDetectorType* instance;
G4String detectorMaterial;
//stores the data of the efficience of the detector
const XrayFluoDataSet* efficiencySet;
G4VDataSetAlgorithm* interpolation4;
//stores the energy data (first column of the file) of the
//response function
std::map<G4int,G4DataVector*,std::less<G4int> > energyMap;
//stores the values (second column of the file) of the
//response function
std::map<G4int,G4DataVector*,std::less<G4int> > dataMap;
};
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoDetectorConstruction.hh
// GEANT4 tag $Name: xray_fluo-V03-02-00
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 20 Aug 2001 Alfonso Mantero Created
//
// -------------------------------------------------------------------
#ifndef XrayFluoMaterials_hh
#define XrayFluoMaterials_hh 1
#include "globals.hh"
#include "G4Material.hh"
class XrayFluoMaterials
{
public:
~XrayFluoMaterials();
static XrayFluoMaterials* GetInstance();
G4Material* GetMaterial(G4String);
private:
XrayFluoMaterials();
void CreateMaterials();
private:
static XrayFluoMaterials* instance;
G4Material* dolorite;
G4Material* FeMaterial;
G4Material* Al;
G4Material* Si;
G4Material* Cu;
G4Material* HPGe;
G4Material* materialMg;
G4Material* materialNd;
G4Material* Sn;
G4Material* Ti;
G4Material* mars1;
G4Material* anorthosite;
G4Material* Pb;
G4Material* basalt;
G4Material* Air;
G4Material* Sci;
G4Material* Vacuum;
};
#endif
@@ -0,0 +1,299 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoMercuryDetectorConstruction.hh
// GEANT4 tag $Name:XrayFluo-V05-02-06
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
//
// 08 Sep 2003 Alfonso Mantero created
//
// -------------------------------------------------------------------
#ifndef XrayFluoMercuryDetectorConstruction_hh
#define XrayFluoMercuryDetectorConstruction_hh 1
#include "XrayFluoSiLiDetectorType.hh"
#include "XrayFluoHPGeDetectorType.hh"
#include "XrayFluoSD.hh"
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
#include "G4RotationMatrix.hh"
class G4Box;
class G4Tubs;
class G4Sphere;
class G4LogicalVolume;
class G4VPhysicalVolume;
class G4Material;
class XrayFluoMercuryDetectorMessenger;
class XrayFluoMaterials;
//class XrayFluoSD;
//class XrayFluoVDetectorType;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoMercuryDetectorConstruction : public G4VUserDetectorConstruction
{
public:
~XrayFluoMercuryDetectorConstruction();
public:
G4VPhysicalVolume* Construct();
void UpdateGeometry();
void SetMercuryMaterial(G4String newMaterial);
void SetDetectorType(G4String type);
static XrayFluoMercuryDetectorConstruction* GetInstance();
inline void SetOribitHeight(G4double size)
{distDe = size;};
inline void SetLatitude(G4double lat)
{ThetaHPGe = 180.* deg - lat;};
void PrintApparateParameters();
XrayFluoVDetectorType* GetDetectorType();
G4double GetWorldSizeZ() {return WorldSizeZ;};
G4double GetWorldSizeXY() {return WorldSizeXY;};
G4double GetDeviceThickness() {return DeviceThickness;};
G4double GetDeviceSizeX() {return DeviceSizeX;};
G4double GetDeviceSizeY() {return DeviceSizeY;};
G4double GetPixelSizeXY() {return PixelSizeXY;};
G4double GetContactSizeXY() {return ContactSizeXY;};
G4int GetNbOfPixels() {return NbOfPixels;}; //mandatory for XrayFluoSD
G4int GetNbOfPixelRows() {return NbOfPixelRows;};
G4int GetNbOfPixelColumns() {return NbOfPixelColumns;};
G4Material* GetOhmicPosMaterial() {return OhmicPosMaterial;};
G4double GetOhmicPosThickness() {return OhmicPosThickness;};
G4Material* GetOhmicNegMaterial() {return OhmicNegMaterial;};
G4double GetOhmicNegThickness() {return OhmicNegThickness;};
const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;};
const G4VPhysicalVolume* GetHPGe() {return physiHPGe;};
const G4VPhysicalVolume* GetMercury() {return physiMercury;};
const G4VPhysicalVolume* GetphysiPixel() {return physiPixel;};
const G4VPhysicalVolume* GetOhmicPos() {return physiOhmicPos;};
const G4VPhysicalVolume* GetOhmicNeg() {return physiOhmicNeg;};
const G4VPhysicalVolume* GetOptic() {return physiOptic;};
private:
XrayFluoMercuryDetectorConstruction();
static XrayFluoMercuryDetectorConstruction* instance;
XrayFluoVDetectorType* detectorType;
G4bool mercuryGranularity;
G4double DeviceSizeX;
G4double DeviceSizeY;
G4double DeviceThickness;
G4Box* solidWorld; //pointer to the solid World
G4LogicalVolume* logicWorld; //pointer to the logical World
G4VPhysicalVolume* physiWorld; //pointer to the physical World
G4Box* solidHPGe; //pointer to the solid Sensor
G4LogicalVolume* logicHPGe; //pointer to the logical Sensor
G4VPhysicalVolume* physiHPGe; //pointer to the physical Sensor
G4Box* solidScreen; //pointer to the solid Screen
G4LogicalVolume* logicScreen; //pointer to the logical Screen
G4VPhysicalVolume* physiScreen; //pointer to the physical Screen
G4Sphere* solidMercury; //pointer to the solid Mercury
G4LogicalVolume* logicMercury; //pointer to the logical Mercury
G4VPhysicalVolume* physiMercury; //pointer to the physical Mercury
// G4Tubs* solidDia1; //pointer to the solid Diaphragm
// G4LogicalVolume* logicDia1; //pointer to the logical Diaphragm
// G4VPhysicalVolume* physiDia1; //pointer to the physical Diaphragm
// G4Tubs* solidDia3; //pointer to the solid Diaphragm
// G4LogicalVolume* logicDia3; //pointer to the logical Diaphragm
// G4VPhysicalVolume* physiDia3; //pointer to the physical Diaphragm
G4Box* solidOhmicPos;
G4LogicalVolume* logicOhmicPos;
G4VPhysicalVolume* physiOhmicPos;
G4Box* solidOhmicNeg;
G4LogicalVolume* logicOhmicNeg;
G4VPhysicalVolume* physiOhmicNeg;
G4Box* solidPixel;
G4LogicalVolume* logicPixel;
G4VPhysicalVolume* physiPixel;
G4Tubs* solidOptic;
G4LogicalVolume* logicOptic;
G4VPhysicalVolume* physiOptic;
G4Sphere* solidGrain;
G4LogicalVolume* logicGrain;
G4VPhysicalVolume* physiGrain;
//materials management
XrayFluoMaterials* materials;
G4Material* screenMaterial;
G4Material* OhmicPosMaterial;
G4Material* OhmicNegMaterial;
G4Material* pixelMaterial;
G4Material* mercuryMaterial;
G4Material* opticMaterial;
// G4Material* Dia3Material;
G4Material* defaultMaterial;
//apparate parameters
G4double OhmicPosThickness;
G4double OhmicNegThickness;
G4double opticDia;
G4double opticThickness;
G4double screenSizeXY;
G4double screenThickness;
G4int PixelCopyNb;
G4int grainCopyNb;
G4int NbOfPixels;
G4int NbOfPixelRows;
G4int NbOfPixelColumns;
G4double PixelThickness;
G4double PixelSizeXY;
G4double ContactSizeXY;
G4double opticAperture;
G4double mercuryDia;
G4double sunDia;
G4double mercurySunDistance;
G4double grainDia;
G4double ThetaHPGe;
G4double distDe;
G4double distScreen;
G4double distOptic;
G4double PhiHPGe;
G4RotationMatrix zRotPhiHPGe;
G4double WorldSizeXY;
G4double WorldSizeZ;
XrayFluoMercuryDetectorMessenger* detectorMessenger; //pointer to the Messenger
XrayFluoSD* HPGeSD; //pointer to the sensitive detector
public:
G4Material* GetMercuryMaterial() {return mercuryMaterial;};
G4Material* GetPixelMaterial() {return pixelMaterial;};
G4double GetMercuryDia() {return mercuryDia;};
G4double GetSunDia() {return sunDia;};
//Inclinaton of the orbit respect Mercury respect the equator (latitude)
G4double GetOrbitInclination() {return 180 * deg - ThetaHPGe;};
G4double GetOrbitDistance() {return distDe;};
G4double GetOpticAperture() {return opticAperture;};
private:
void DefineDefaultMaterials();
G4VPhysicalVolume* ConstructApparate();
//calculates some quantities used to construct geometry
void ComputeApparateParameters();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void XrayFluoMercuryDetectorConstruction::ComputeApparateParameters()
{
// Compute derived parameters of the apparate
DeviceThickness = PixelThickness+OhmicNegThickness+OhmicPosThickness;
///G4cout << "DeviceThickness(cm): "<< DeviceThickness/cm << G4endl;
DeviceSizeY =(NbOfPixelRows * std::max(ContactSizeXY,PixelSizeXY));
DeviceSizeX =(NbOfPixelColumns * std::max(ContactSizeXY,PixelSizeXY));
screenSizeXY = opticDia;
G4cout << "DeviceSizeX(cm): "<< DeviceSizeX/cm <<G4endl;
G4cout << "DeviceSizeY(cm): "<< DeviceSizeY/cm << G4endl;
//*********************************************************************
//** Astronomical distances reduce by a factor 10^-7 due to G4 Bug **
//*********************************************************************
WorldSizeZ = 2 * mercurySunDistance ;
WorldSizeXY = (2 * distDe) + 2000 * km ;
//WorldSizeZ = WorldSizeXY;
}
#endif
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoMercuryDetectorMessenger.hh
// GEANT4 tag $Name:
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
//
// 18 Aug 2003 Alfonso Mantero created
//
// -------------------------------------------------------------------
#ifndef XrayFluoMercuryDetectorMessenger_h
#define XrayFluoMercuryDetectorMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class XrayFluoMercuryDetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithoutParameter;
class G4UIcmdWithABool;
class G4UIcmdWithADoubleAndUnit;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoMercuryDetectorMessenger: public G4UImessenger
{
public:
XrayFluoMercuryDetectorMessenger(XrayFluoMercuryDetectorConstruction* );
~XrayFluoMercuryDetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
XrayFluoMercuryDetectorConstruction* Detector;
G4UIdirectory* detDir;
G4UIcmdWithoutParameter* UpdateCmd;
G4UIcmdWithAString* sampleCmd;
G4UIcmdWithAString* detectorCmd;
//G4UIcmdWithABool* granularityFlagCmd;
G4UIcmdWithADoubleAndUnit* latitudeAngleCmd;
G4UIcmdWithADoubleAndUnit* orbitHeightCmd;
};
#endif
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoMercuryPrimaryGeneratorMessenger.hh
// GEANT4 tag $Name:
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 19 Sep 03 Alfonso Mantero created
//
// -------------------------------------------------------------------
#ifndef XrayFluoMercuryPrimaryGeneratorMessenger_h
#define XrayFluoMercuryPrimaryGeneratorMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
//#include "XrayFluoPlanePrimaryGeneratorAction.hh"
class XrayFluoMercuryPrimaryGeneratorAction;
class G4UIcmdWithAString;
class G4UicmdWithABool;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoMercuryPrimaryGeneratorMessenger: public G4UImessenger
{
public:
XrayFluoMercuryPrimaryGeneratorMessenger(XrayFluoMercuryPrimaryGeneratorAction*);
~XrayFluoMercuryPrimaryGeneratorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
XrayFluoMercuryPrimaryGeneratorAction* XrayFluoAction;
// //command to set a random impact point
// G4UIcmdWithAString* RndmCmd;
// //command to choose a plane circular source
// G4UIcmdWithAString* RndmVert;
//command to shoot particles according to certain spectra
G4UIcmdWithAString* spectrum;
//command to shoot particles to all Mercury illuminated surface
G4UIcmdWithAbool* globalCmd;
};
#endif
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoPlanePrimaryGeneratorAction.hh
// GEANT4 tag $Name:
//
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
//
// History:
// -----------
// 28 Nov 2001 Elena Guardincerri Created
//
// -------------------------------------------------------------------
#ifndef XrayFluoMercuryPrimaryGeneratorAction_h
#define XrayFluoMercuryPrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
class G4ParticleGun;
class G4Event;
class XrayFluoMercuryDetectorConstruction;
class XrayFluoMercuryPrimaryGeneratorMessenger;
class XrayFluoRunAction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoMercuryPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
XrayFluoMercuryPrimaryGeneratorAction(XrayFluoMercuryDetectorConstruction*);
~XrayFluoMercuryPrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event*);
// method to set the global illumination of Mercury surface
void SetGlobalFlag (G4bool val) {globalFlag = val;};
//method to set a random impact point on the sample
//void SetRndmFlag(G4String val) { rndmFlag = val;}
//method to choose a circular non-point-like source
//void SetRndmVert (G4String val) { beam = val;};
//set the flag for shooting particles according to certain spectra
void SetSpectrum (G4String val) { spectrum = val;};
//set the flag for shooting particles from an isotropic source
//void SetIsoVert (G4String val) { isoVert = val ;};
private:
//pointer a to G4 service class
G4ParticleGun* particleGun;
//pointer to the geometry
XrayFluoMercuryDetectorConstruction* XrayFluoDetector;
//messenger of this class
XrayFluoMercuryPrimaryGeneratorMessenger* gunMessenger;
XrayFluoRunAction* runManager;
//flag for setting the global illumination of Mercury surface
G4bool globalFlag;
//flag for considering the Sun as a Point-like source
//not to be used if spacecraft latitude is near zero
//because the spacecraft itself shadowes the planet surface.
//G4bool pointLikeFlag;
//flag for a random impact point
// G4String rndmFlag;
//flag for a circular non-point source
// G4String beam;
//flag for shooting particles according to certain spectra
G4String spectrum;
//flag for shooting particles from an isotropic source
// G4String isoVert;
};
#endif
@@ -0,0 +1,76 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoMercuryPrimaryGeneratorMessenger.hh
// GEANT4 tag $Name:
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 19 Sep 03 Alfonso Mantero created
//
// -------------------------------------------------------------------
#ifndef XrayFluoMercuryPrimaryGeneratorMessenger_h
#define XrayFluoMercuryPrimaryGeneratorMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
//#include "XrayFluoPlanePrimaryGeneratorAction.hh"
class XrayFluoMercuryPrimaryGeneratorAction;
class G4UIcmdWithAString;
class G4UIcmdWithABool;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoMercuryPrimaryGeneratorMessenger: public G4UImessenger
{
public:
XrayFluoMercuryPrimaryGeneratorMessenger(XrayFluoMercuryPrimaryGeneratorAction*);
~XrayFluoMercuryPrimaryGeneratorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
XrayFluoMercuryPrimaryGeneratorAction* XrayFluoAction;
// //command to set a random impact point
// G4UIcmdWithAString* RndmCmd;
// //command to choose a plane circular source
// G4UIcmdWithAString* RndmVert;
//command to shoot particles according to certain spectra
G4UIcmdWithAString* spectrum;
//command to shoot particles to all Mercury illuminated surface
G4UIcmdWithABool* globalCmd;
};
#endif
@@ -0,0 +1,305 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoDetectorConstruction.hh
// GEANT4 tag $Name:
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
//
// 29 Aug 2003 Alfonso Mantero created
//
// -------------------------------------------------------------------
#ifndef XrayFluoPlaneDetectorConstruction_hh
#define XrayFluoPlaneDetectorConstruction_hh 1
#include "XrayFluoSiLiDetectorType.hh"
#include "XrayFluoHPGeDetectorType.hh"
#include "XrayFluoSD.hh"
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
#include "G4RotationMatrix.hh"
class G4Box;
//class G4Tubs;
class G4Sphere;
class G4LogicalVolume;
class G4VPhysicalVolume;
class G4Material;
class XrayFluoPlaneDetectorMessenger;
class XrayFluoMaterials;
//class XrayFluoSD;
//class XrayFluoVDetectorType;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoPlaneDetectorConstruction : public G4VUserDetectorConstruction
{
public:
~XrayFluoPlaneDetectorConstruction();
public:
G4VPhysicalVolume* Construct();
void UpdateGeometry();
void SetPlaneMaterial(G4String newMaterial);
void SetDetectorType(G4String type);
static XrayFluoPlaneDetectorConstruction* GetInstance();
inline void SetPlaneGranularity(G4bool granularity)
{planeGranularity = granularity;};
inline void SetGrainDia(G4double size)
{grainDia = size;};
void DeleteGrainObjects();
public:
void PrintApparateParameters();
XrayFluoVDetectorType* GetDetectorType();
G4double GetWorldSizeZ() {return WorldSizeZ;};
G4double GetWorldSizeXY() {return WorldSizeXY;};
G4double GetDeviceThickness() {return DeviceThickness;};
G4double GetDeviceSizeX() {return DeviceSizeX;};
G4double GetDeviceSizeY() {return DeviceSizeY;};
G4double GetPixelSizeXY() {return PixelSizeXY;};
G4double GetContactSizeXY() {return ContactSizeXY;};
G4int GetNbOfPixels() {return NbOfPixels;}; //mandatory for XrayFluoSD
G4int GetNbOfPixelRows() {return NbOfPixelRows;};
G4int GetNbOfPixelColumns() {return NbOfPixelColumns;};
G4Material* GetOhmicPosMaterial() {return OhmicPosMaterial;};
G4double GetOhmicPosThickness() {return OhmicPosThickness;};
G4Material* GetOhmicNegMaterial() {return OhmicNegMaterial;};
G4double GetOhmicNegThickness() {return OhmicNegThickness;};
const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;};
const G4VPhysicalVolume* GetHPGe() {return physiHPGe;};
const G4VPhysicalVolume* GetPlane() {return physiPlane;};
// const G4VPhysicalVolume* GetDia1() {return physiDia1;};
// const G4VPhysicalVolume* GetDia3() {return physiDia3;};
const G4VPhysicalVolume* GetphysiPixel() {return physiPixel;};
const G4VPhysicalVolume* GetOhmicPos() {return physiOhmicPos;};
const G4VPhysicalVolume* GetOhmicNeg() {return physiOhmicNeg;};
private:
XrayFluoPlaneDetectorConstruction();
static XrayFluoPlaneDetectorConstruction* instance;
XrayFluoVDetectorType* detectorType;
G4bool planeGranularity;
G4double DeviceSizeX;
G4double DeviceSizeY;
G4double DeviceThickness;
G4Box* solidWorld; //pointer to the solid World
G4LogicalVolume* logicWorld; //pointer to the logical World
G4VPhysicalVolume* physiWorld; //pointer to the physical World
G4Box* solidHPGe; //pointer to the solid Sensor
G4LogicalVolume* logicHPGe; //pointer to the logical Sensor
G4VPhysicalVolume* physiHPGe; //pointer to the physical Sensor
G4Box* solidScreen; //pointer to the solid Screen
G4LogicalVolume* logicScreen; //pointer to the logical Screen
G4VPhysicalVolume* physiScreen; //pointer to the physical Screen
G4Box* solidPlane; //pointer to the solid Plane
G4LogicalVolume* logicPlane; //pointer to the logical Plane
G4VPhysicalVolume* physiPlane; //pointer to the physical Plane
// G4Tubs* solidDia1; //pointer to the solid Diaphragm
// G4LogicalVolume* logicDia1; //pointer to the logical Diaphragm
// G4VPhysicalVolume* physiDia1; //pointer to the physical Diaphragm
// G4Tubs* solidDia3; //pointer to the solid Diaphragm
// G4LogicalVolume* logicDia3; //pointer to the logical Diaphragm
// G4VPhysicalVolume* physiDia3; //pointer to the physical Diaphragm
G4Box* solidOhmicPos;
G4LogicalVolume* logicOhmicPos;
G4VPhysicalVolume* physiOhmicPos;
G4Box* solidOhmicNeg;
G4LogicalVolume* logicOhmicNeg;
G4VPhysicalVolume* physiOhmicNeg;
G4Box* solidPixel;
G4LogicalVolume* logicPixel;
G4VPhysicalVolume* physiPixel;
G4Sphere* solidGrain;
G4LogicalVolume* logicGrain;
G4VPhysicalVolume* physiGrain;
//materials management
XrayFluoMaterials* materials;
G4Material* screenMaterial;
G4Material* OhmicPosMaterial;
G4Material* OhmicNegMaterial;
G4Material* pixelMaterial;
G4Material* planeMaterial;
// G4Material* Dia1Material;
// G4Material* Dia3Material;
G4Material* defaultMaterial;
//apparate parameters
G4double OhmicPosThickness;
G4double OhmicNegThickness;
G4double screenSizeXY;
G4double screenThickness;
G4int PixelCopyNb;
G4int grainCopyNb;
G4int NbOfPixels;
G4int NbOfPixelRows;
G4int NbOfPixelColumns;
G4double PixelThickness;
G4double PixelSizeXY;
G4double ContactSizeXY;
G4double planeThickness;
G4double planeSizeXY;
G4double grainDia;
// G4double Dia1Thickness;
// G4double Dia1SizeXY;
// G4double Dia3Thickness;
// G4double Dia3SizeXY;
// G4double DiaInnerSize;
// G4double Dia3InnerSize;
public:
G4Material* GetPlaneMaterial() {return planeMaterial;};
G4Material* GetPixelMaterial() {return pixelMaterial;};
// G4Material* GetDia1Material() {return Dia1Material;};
// G4Material* GetDia3Material() {return Dia3Material;};
G4double GetPlaneThickness() {return planeThickness;};
G4double GetPlaneSizeXY() {return planeSizeXY;};
// G4double GetDia1Thickness() {return Dia1Thickness;};
// G4double GetDia1SizeXY() {return Dia1SizeXY;};
// G4double GetDia3Thickness() {return Dia3Thickness;};
// G4double GetDia3SizeXY() {return Dia3SizeXY;};
private:
G4double ThetaHPGe;
G4double ThetaDia1;
G4double ThetaDia3;
G4double DistDe;
G4double distScreen;
// G4double DistDia;
// G4double Dia3Dist;
G4double PhiHPGe;
// G4double PhiDia1;
// G4double PhiDia3;
// G4double AlphaDia1;
// G4double AlphaDia3;
G4RotationMatrix zRotPhiHPGe;
// G4RotationMatrix zRotPhiDia1;
// G4RotationMatrix zRotPhiDia3;
G4double WorldSizeXY;
G4double WorldSizeZ;
XrayFluoPlaneDetectorMessenger* detectorMessenger; //pointer to the Messenger
XrayFluoSD* HPGeSD; //pointer to the sensitive detector
private:
void DefineDefaultMaterials();
G4VPhysicalVolume* ConstructApparate();
//calculates some quantities used to construct geometry
void ComputeApparateParameters();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void XrayFluoPlaneDetectorConstruction::ComputeApparateParameters()
{
// Compute derived parameters of the apparate
DeviceThickness = PixelThickness+OhmicNegThickness+OhmicPosThickness;
G4cout << "DeviceThickness(cm): "<< DeviceThickness/cm << G4endl;
DeviceSizeY =(NbOfPixelRows * std::max(ContactSizeXY,PixelSizeXY));
DeviceSizeX =(NbOfPixelColumns * std::max(ContactSizeXY,PixelSizeXY));
screenSizeXY = 2 * DeviceThickness + std::max(DeviceSizeY,DeviceSizeX);
G4cout << "DeviceSizeX(cm): "<< DeviceSizeX/cm <<G4endl;
G4cout << "DeviceSizeY(cm): "<< DeviceSizeY/cm << G4endl;
WorldSizeZ = (2 * (DistDe + DeviceThickness + screenThickness)) + 5*m;
WorldSizeXY = (2 * (planeSizeXY))+ 5*m;
}
#endif
@@ -0,0 +1,78 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoPlaneDetectorMessenger.hh
// GEANT4 tag $Name:
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
//
// 29 Aug 2003 Alfonso Mantero created
//
// -------------------------------------------------------------------
#ifndef XrayFluoPlaneDetectorMessenger_h
#define XrayFluoPlaneDetectorMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class XrayFluoPlaneDetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithoutParameter;
class G4UIcmdWithABool;
class G4UIcmdWithADoubleAndUnit;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoPlaneDetectorMessenger: public G4UImessenger
{
public:
XrayFluoPlaneDetectorMessenger(XrayFluoPlaneDetectorConstruction* );
~XrayFluoPlaneDetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
XrayFluoPlaneDetectorConstruction* Detector;
G4UIdirectory* detDir;
G4UIcmdWithoutParameter* UpdateCmd;
G4UIcmdWithAString* sampleCmd;
G4UIcmdWithAString* detectorCmd;
G4UIcmdWithABool* granularityFlagCmd;
G4UIcmdWithADoubleAndUnit* grainDiaCmd;
};
#endif
@@ -0,0 +1,99 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoPlanePrimaryGeneratorAction.hh
// GEANT4 tag $Name:
//
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
//
// History:
// -----------
// 28 Nov 2001 Elena Guardincerri Created
//
// -------------------------------------------------------------------
#ifndef XrayFluoPlanePrimaryGeneratorAction_h
#define XrayFluoPlanePrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
class G4ParticleGun;
class G4Event;
class XrayFluoPlaneDetectorConstruction;
class XrayFluoPlanePrimaryGeneratorMessenger;
class XrayFluoRunAction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoPlanePrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
XrayFluoPlanePrimaryGeneratorAction(XrayFluoPlaneDetectorConstruction*);
~XrayFluoPlanePrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event*);
//method to set a random impact point on the sample
void SetRndmFlag(G4String val) { rndmFlag = val;}
//method to choose a circular non-point source
void SetRndmVert (G4String val) { beam = val;}
//set the flag for shooting particles according to certain spectra
void SetSpectrum (G4String val) { spectrum= val ;}
//set the flag for shooting particles from an isotropic source
void SetIsoVert (G4String val) { isoVert = val ;}
private:
//pointer a to G4 service class
G4ParticleGun* particleGun;
//pointer to the geometry
XrayFluoPlaneDetectorConstruction* XrayFluoDetector;
//messenger of this class
XrayFluoPlanePrimaryGeneratorMessenger* gunMessenger;
XrayFluoRunAction* runManager;
//flag for a random impact point
G4String rndmFlag;
//flag for a circular non-point source
G4String beam;
//flag for shooting particles according to certain spectra
G4String spectrum;
//flag for shooting particles from an isotropic source
G4String isoVert;
};
#endif
@@ -0,0 +1,74 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoPlanePrimaryGeneratorMessenger.hh
// GEANT4 tag $Name:
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 02 Sep 03 Alfonso Mantero created
//
// -------------------------------------------------------------------
#ifndef XrayFluoPlanePrimaryGeneratorMessenger_h
#define XrayFluoPlanePrimaryGeneratorMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
//#include "XrayFluoPlanePrimaryGeneratorAction.hh"
class XrayFluoPlanePrimaryGeneratorAction;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoPlanePrimaryGeneratorMessenger: public G4UImessenger
{
public:
XrayFluoPlanePrimaryGeneratorMessenger(XrayFluoPlanePrimaryGeneratorAction*);
~XrayFluoPlanePrimaryGeneratorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
XrayFluoPlanePrimaryGeneratorAction* XrayFluoAction;
//command to set a random impact point
G4UIcmdWithAString* RndmCmd;
//command to choose a plane circular source
G4UIcmdWithAString* RndmVert;
//command to shot particles according to certain spectra
G4UIcmdWithAString* spectrum;
//command to shot particles from an isotropic source
G4UIcmdWithAString* isoVert;
};
#endif
@@ -0,0 +1,92 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoSD.hh
// GEANT4 tag $Name: xray_fluo-V03-02-00
//
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
//
// History:
// -----------
// 28 Nov 2001 Elena Guardincerri Created
//
// -------------------------------------------------------------------
#ifndef XrayFluoSD_hh
#define XrayFluoSD_hh 1
#include "G4VSensitiveDetector.hh"
#include "globals.hh"
//#include "XrayFluoDetectorConstruction.hh"
//#include "XrayFluoPlaneDetectorConstruction.hh"
//#include "XrayFluoMercuryDetectorConstruction.hh"
#include "XrayFluoSensorHit.hh"
class XrayFluoDetectorConstruction;
class XrayFluoPlaneDetectorConstruction;
class XrayFluoMercuryDetectorConstruction;
class G4HCofThisEvent;
class G4Step;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class XrayFluoSD : public G4VSensitiveDetector
{
public:
XrayFluoSD(G4String, XrayFluoDetectorConstruction* );
XrayFluoSD(G4String, XrayFluoPlaneDetectorConstruction* );
XrayFluoSD(G4String, XrayFluoMercuryDetectorConstruction* );
~XrayFluoSD();
void Initialize(G4HCofThisEvent*);
void EndOfEvent(G4HCofThisEvent*);
void clear();
void DrawAll();
void PrintAll();
protected:
G4bool ProcessHits(G4Step*,G4TouchableHistory*);
private:
//hit collection for the detector
XrayFluoSensorHitsCollection* HPGeCollection;
XrayFluoDetectorConstruction* Detector;
XrayFluoPlaneDetectorConstruction* planeDetector;
XrayFluoMercuryDetectorConstruction* mercuryDetector;
G4int* HitHPGeID;
};
#endif
@@ -0,0 +1,98 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoSiLidetectorType.hh
// GEANT4 tag $Name:
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 19 Jun 2003 Alfonso Mantero Created
//
// -------------------------------------------------------------------
#ifndef XrayFluoSiLidetectorType_hh
#define XrayFluoSiLidetectorType_hh 1
#include "globals.hh"
#include <map>
#include "G4DataVector.hh"
#include "XrayFluoDataSet.hh"
#include "XrayFluoVDetectorType.hh"
//class XrayFluoDataSet;
//class G4DataVector;
class XrayFluoSiLiDetectorType : public XrayFluoVDetectorType
{
public:
~XrayFluoSiLiDetectorType();
//returns an unique instance of this class (singleton)
static XrayFluoSiLiDetectorType* GetInstance();
//gives the material (a string) of wich is made the detector
G4String GetDetectorMaterial();
// Given the energy depositon in the detector, returns the measured value,
// according the energy definition power of the detector
G4double ResponseFunction(G4double);
//returns a random value of the energy measured according to the tabulated
//peack just lower of the energy deposited
G4double GetInfData(G4double,G4double,G4int);
//returns a random value of the energy measured according to the tabulated
//peack just higher of the energy deposited
G4double GetSupData(G4double,G4double,G4int);
//loads the data tabulated for the response and the efficiency data from file
void LoadResponseData(G4String);
void LoadEfficiencyData(G4String);
private:
XrayFluoSiLiDetectorType();
static XrayFluoSiLiDetectorType* instance;
G4String detectorMaterial;
//stores the data of the efficience of the detector
const XrayFluoDataSet* efficiencySet;
G4VDataSetAlgorithm* interpolation4;
//stores the energy data (first column of the file) of the
//response function
std::map<G4int,G4DataVector*,std::less<G4int> > energyMap;
//stores the values (second column of the file) of the
//response function
std::map<G4int,G4DataVector*,std::less<G4int> > dataMap;
};
#endif
@@ -0,0 +1,54 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluo.cc
// GEANT4 tag $Name: xray_fluo-V03-02-00
//
// Author: Alfonso Mantero (alfonso.mantero@ge.infn.it)
//
// History:
// -----------
// 24 8 2002 Alfonso Mantero Created
//
// -------------------------------------------------------------------
#include "globals.hh"
class XrayFluoSimulation{
public:
XrayFluoSimulation(G4int seed);
~XrayFluoSimulation();
void RunSimulation(int argc,char** argv);
private:
G4int dir;
};
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoVdetectorType.hh
// GEANT4 tag $Name:
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 19 Jun 2003 Alfonso Mantero Created
//
// -------------------------------------------------------------------
#ifndef XrayFluoVDetectorType_hh
#define XrayFluoVDetectorType_hh 1
#include "globals.hh"
class XrayFluoVDetectorType
{
public:
virtual ~XrayFluoVDetectorType();
virtual G4String GetDetectorMaterial()=0;
virtual G4double ResponseFunction(G4double)=0;
//returns a random value of the energy measured according to the tabulated
//peack just lower of the energy deposited. the third integer not always is used.
//when it used, user must specify it, otherwise, he gets a runtime error.
virtual G4double GetInfData(G4double,G4double,G4int=0)=0;
//returns a random value of the energy measured according to the tabulated
//peack just upper of the energy deposited. the third integer not always is used.
//when it used, user must specify it, otherwise, he gets a runtime error.
virtual G4double GetSupData(G4double,G4double,G4int=0)=0;
virtual void LoadResponseData(G4String)=0;
virtual void LoadEfficiencyData(G4String)=0;
protected:
XrayFluoVDetectorType();
};
#endif