Import Geant4 10.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 12:08:39 +02:00
parent 286caacf06
commit c9b32a6c0a
5770 changed files with 1050949 additions and 367105 deletions
@@ -23,37 +23,36 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
//
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// the *COMPLETE* version of this program, together with its documentation;
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
// Institute in the framework of the MC-INFN Group
// This example is provided by the Geant4-DNA collaboration
// Any report or published results obtained using the Geant4-DNA software
// shall cite the following Geant4-DNA collaboration publication:
// Med. Phys. 37 (2010) 4692-4708
// The Geant4-DNA web site is available at http://geant4-dna.org
//
#ifndef LOCALINCLIONINELASTICPHYSIC_H
#define LOCALINCLIONIONINELASTICPHYSIC_H 1
#ifndef HadrontherapyActionInitialization_h
#define HadrontherapyActionInitialization_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
#include "G4VUserActionInitialization.hh"
class LocalINCLIonIonInelasticPhysic: public G4VPhysicsConstructor
class HadrontherapyDetectorConstruction;
class G4GeneralParticleSource;
class HadrontherapyActionInitialization : public G4VUserActionInitialization
{
public:
LocalINCLIonIonInelasticPhysic (const G4String& name = "local_ion_ion_inelastic");
virtual ~LocalINCLIonIonInelasticPhysic();
public:
HadrontherapyActionInitialization(/*HadrontherapyDetectorConstruction*/);
virtual ~HadrontherapyActionInitialization();
virtual void BuildForMaster() const;
virtual void Build() const;
private:
// G4VUserDetectorConstruction* fDetectorConstruction;
// G4GeneralParticleSource *masterGPS;
protected:
void ConstructParticle(){};
void ConstructProcess();
};
#endif
#endif
@@ -44,11 +44,13 @@
class G4VPhysicalVolume;
class G4LogicalVolume;
class G4PVPlacement;
class HadrontherapyDetectorROGeometry;
class HadrontherapyDetectorMessenger;
class HadrontherapyDetectorSD;
class HadrontherapyMatrix;
class HadrontherapyLet;
class HadrontherapyDetectorConstruction
{
public:
@@ -69,6 +71,7 @@ private:
void ConstructPhantom();
void ConstructDetector();
void ParametersCheck();
void CheckOverlaps();
public:
// Get detector position relative to WORLD
@@ -162,7 +165,6 @@ inline bool IsInside(G4double detectorX,
void PrintParameters();
G4LogicalVolume* GetDetectorLogicalVolume(){ return detectorLogicalVolume;}
private:
static HadrontherapyDetectorConstruction* instance;
HadrontherapyDetectorMessenger* detectorMessenger;
@@ -35,24 +35,28 @@
#ifndef HadrontherapyDetectorHit_h
#define HadrontherapyDetectorHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
class HadrontherapyDetectorHit : public G4VHit
{
public:
HadrontherapyDetectorHit();
~HadrontherapyDetectorHit();
HadrontherapyDetectorHit(const HadrontherapyDetectorHit&);
virtual ~HadrontherapyDetectorHit();
HadrontherapyDetectorHit(const HadrontherapyDetectorHit &right);
const HadrontherapyDetectorHit& operator = (const HadrontherapyDetectorHit &right);
const HadrontherapyDetectorHit& operator=(const HadrontherapyDetectorHit&);
int operator == (const HadrontherapyDetectorHit &right) const;
G4int operator==(const HadrontherapyDetectorHit&) const;
inline void *operator new(size_t);
inline void operator delete(void *aHit);
//******************************MT
inline void* operator new(size_t);
inline void operator delete(void*);
//******************************MT
private:
G4int xHitID; // Hit x voxel
@@ -89,19 +93,29 @@ public:
};
typedef G4THitsCollection<HadrontherapyDetectorHit> HadrontherapyDetectorHitsCollection;
extern G4Allocator<HadrontherapyDetectorHit> HadrontherapyDetectorHitAllocator;
//******************************MT
extern G4ThreadLocal G4Allocator<HadrontherapyDetectorHit>* HadrontherapyDetectorHitAllocator;
//******************************MT
inline void* HadrontherapyDetectorHit::operator new(size_t)
{
void *aHit;
aHit = (void *) HadrontherapyDetectorHitAllocator.MallocSingle();
return aHit;
if(!HadrontherapyDetectorHitAllocator)
HadrontherapyDetectorHitAllocator= new G4Allocator<HadrontherapyDetectorHit>;
void *aHit;
aHit = (void *) HadrontherapyDetectorHitAllocator->MallocSingle();
return aHit;
}
inline void HadrontherapyDetectorHit::operator delete(void *aHit)
{
HadrontherapyDetectorHitAllocator.FreeSingle((HadrontherapyDetectorHit*) aHit);
if(!HadrontherapyDetectorHitAllocator)
HadrontherapyDetectorHitAllocator= new G4Allocator<HadrontherapyDetectorHit>;
HadrontherapyDetectorHitAllocator->FreeSingle((HadrontherapyDetectorHit*) aHit);
}
#endif
@@ -57,7 +57,7 @@ private:
// Pointer to the phantom/detector
HadrontherapyDetectorConstruction* hadrontherapyDetector;
G4UIdirectory *changeThePhantomDir, *changeTheDetectorDir;
G4UIdirectory *changeThePhantomDir, *changeTheDetectorDir;
G4UIcmdWithoutParameter *updateCmd;
G4UIcmdWithAString *changeThePhantomMaterialCmd;
@@ -0,0 +1,63 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ElectricField.hh"
#include "G4ElectroMagneticField.hh"
#include "G4ios.hh"
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
class HadrontherapyElectricTabulatedField3D
: public G4ElectricField
{
// Storage space for the table
vector< vector< vector< G4double > > > xEField;
vector< vector< vector< G4double > > > yEField;
vector< vector< vector< G4double > > > zEField;
// The dimensions of the table
G4int Enx,Eny,Enz;
// The physical limits of the defined region
G4double Eminx, Emaxx, Eminy, Emaxy, Eminz, Emaxz;
// The physical extent of the defined region
G4double dx1, dy1, dz1;
G4double feXoffset;
G4double feYoffset;
G4double feZoffset;
G4bool einvertX, einvertY, einvertZ;
public:
HadrontherapyElectricTabulatedField3D(const char* filename, G4double exOffset, G4double eyOffset, G4double ezOffset );
void GetFieldValue( const G4double Epoint[4],
G4double *Efield) const;
};
@@ -23,15 +23,13 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
// Hadrontherapy development is supported by the
// Italian Institute for Nuclear Physics (INFN)
// in the framework of the MC-INFN Project
//
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// the *COMPLETE* version of this program, together with its documentation;
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
// Institute in the framework of the MC-INFN Group
// Contact persons: Pablo Cirrone (INFN-LNS) - pablo.cirrone@lns.infn.it
// Francesco Romano (INFN-LNS) - francesco.romano@lns.infn.it
//
#ifndef HadrontherapyGeometryController_hh
#define HadrontherapyGeometryController_hh 1
@@ -58,7 +58,7 @@ private:
HadrontherapyGeometryController* hadrontherapyGeometryController;
G4UIdirectory *changeTheGeometryDir; ///> UI directory for the geometry control
G4UIcmdWithAString *changeTheGeometryCmd; ///> Select the geometry
G4UIcmdWithAString *changeTheGeometryCmd;//, *changeTheDetectorCmd; ///> Select the geometry and the detector
};
#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. *
// ********************************************************************
//
// Code developed by:
// S.Larsson and J. Generowicz.
//
// *************************************
// * *
// * HadrontherapyMagneticField3D.hh *
// * *
// *************************************
//
// $Id$
//
#include "globals.hh"
#include "G4MagneticField.hh"
#include "G4ios.hh"
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
class HadrontherapyMagneticField3D
#ifndef STANDALONE
: public G4MagneticField
#endif
{
// Storage space for the table
vector< vector< vector< double > > > xField;
vector< vector< vector< double > > > yField;
vector< vector< vector< double > > > zField;
// The dimensions of the table
int nx,ny,nz;
// The physical limits of the defined region
double minx, maxx, miny, maxy, minz, maxz;
// The physical extent of the defined region
double dx, dy, dz;
double fXoffset;
bool invertX, invertY, invertZ;
public:
HadrontherapyMagneticField3D(const char* filename, double xOffset );
void GetFieldValue( const double Point[4],
double *Bfield ) const;
};
@@ -22,11 +22,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
//
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// the *COMPLETE* version of this program, together with its documentation;
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
// Institute in the framework of the MC-INFN Group
//
@@ -45,48 +40,38 @@ class HadrontherapyPhysicsListMessenger;
class HadrontherapyPhysicsList: public G4VModularPhysicsList
{
public:
HadrontherapyPhysicsList();
virtual ~HadrontherapyPhysicsList();
void ConstructParticle();
void SetCuts();
void SetCutForGamma(G4double);
void SetCutForElectron(G4double);
void SetCutForPositron(G4double);
void SetDetectorCut(G4double cut);
void AddPhysicsList(const G4String& name);
void ConstructProcess();
void AddStepMax();
HadrontherapyStepMax* GetStepMaxProcess() {return stepMaxProcess;};
void AddPackage(const G4String& name);
HadrontherapyPhysicsList();
virtual ~HadrontherapyPhysicsList();
void ConstructParticle();
void SetCuts();
void SetCutForGamma(G4double);
void SetCutForElectron(G4double);
void SetCutForPositron(G4double);
void SetDetectorCut(G4double cut);
void AddPhysicsList(const G4String& name);
void ConstructProcess();
void AddStepMax();
void AddPackage(const G4String& name);
private:
G4EmConfigurator em_config;
G4double cutForGamma;
G4double cutForElectron;
G4double cutForPositron;
G4bool helIsRegistered;
G4bool bicIsRegistered;
G4bool biciIsRegistered;
G4bool locIonIonInelasticIsRegistered;
G4bool radioactiveDecayIsRegistered;
G4String emName;
G4VPhysicsConstructor* emPhysicsList;
G4VPhysicsConstructor* decPhysicsList;
G4VPhysicsConstructor* raddecayList;
std::vector<G4VPhysicsConstructor*> hadronPhys;
HadrontherapyStepMax* stepMaxProcess;
HadrontherapyPhysicsListMessenger* pMessenger;
G4EmConfigurator em_config;
G4double cutForGamma;
G4double cutForElectron;
G4double cutForPositron;
G4bool locIonIonInelasticIsRegistered;
G4bool radioactiveDecayIsRegistered;
G4String emName;
G4VPhysicsConstructor* emPhysicsList;
G4VPhysicsConstructor* decay_List;
G4VPhysicsConstructor* radioactiveDecay_List;
std::vector<G4VPhysicsConstructor*> hadronPhys;
HadrontherapyPhysicsListMessenger* pMessenger;
};
#endif
@@ -59,12 +59,7 @@ private:
HadrontherapyPhysicsList* pPhysicsList;
G4UIdirectory* physDir;
G4UIcmdWithADoubleAndUnit* gammaCutCmd;
G4UIcmdWithADoubleAndUnit* electCutCmd;
G4UIcmdWithADoubleAndUnit* protoCutCmd;
G4UIcmdWithADoubleAndUnit* allCutCmd;
G4UIcmdWithADoubleAndUnit* allDetectorCmd;
G4UIcmdWithAString* pListCmd;
G4UIcmdWithAString* pListCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,573 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
//
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// the *COMPLETE* version of this program, together with its documentation;
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
// Institute in the framework of the MC-INFN Group
//
#ifndef LaserDrivenBeamLine_H
#define LaserDrivenBeamLine_H 1
#include "globals.hh"
#include "G4VUserDetectorConstruction.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4Sphere.hh"
#include "G4VisAttributes.hh"
#include "G4LogicalVolume.hh"
class G4VPhysicalVolume;
class HadrontherapyDetectorConstruction;
class LaserDrivenBeamLineMessenger;
class G4Mag_UsualEqRhs;
class G4MagIntegratorStepper;
class G4ChordFinder;
class G4UniformMagField;
class G4MagInt_Driver;
class G4EqMagElectricField;
//class G4TransportationManager;
class G4FieldManager;
class G4MagneticField;
class HadrontherapyMagneticField3D;
class HadrontherapyDetectorROGeometry;
class HadrontherapyElectricTabulatedField3D;
class LaserDrivenBeamLine : public G4VUserDetectorConstruction
{
public:
LaserDrivenBeamLine();
~LaserDrivenBeamLine();
G4VPhysicalVolume* Construct();
void ConstructSDandField();
void RemoveESS();
void SetFirstCollimatorRadius(G4double value);
void SetFirstCollimatorThickness(G4double value);
void SetFirstCollimatorPositionZ(G4double value);
void SetSecondCollimatorRadius(G4double value);
void SetSecondCollimatorThickness(G4double value);
void SetSecondCollimatorPositionZ(G4double value);
void SetThicknessSlit(G4double value);
void SetSlitHoleDimensionY(G4double value);
void SetSlitHoleDimensionZ(G4double value);
void SetSlitHolePositionZ(G4double value);
void RemoveQuads();
private:
void SetDefaultDimensions();
void ConstructLaserDrivenBeamLine();
void EnergySelectorChamber();
void Collimator();
void Magnet_1();
void Magnet_2();
void Magnet_3();
void Magnet_4();
void Slit();
void FinalCollimator();
void ExitPipe();
void ExitWindow();
void Exithole();
void Entrancehole();
void EntrancePipe();
void Quadrupole();
void FaradayCup();
LaserDrivenBeamLineMessenger *laserDrivenMessenger;
HadrontherapyDetectorConstruction* hadrontherapydetectorconstruction;
HadrontherapyDetectorROGeometry* RO;
// Variables definition for the World
// (called treatment room)
G4Box *solidTreatmentRoom;
G4LogicalVolume *logicTreatmentRoom;
G4VPhysicalVolume *physicTreatmentRoom;
// Variables definition for the triplet of quadrupoles
G4Material *QuadMaterial;
G4double QuadChamberWallPosX;
G4double QuadChamberWallPosY;
G4double QuadChamberWallPosZ;
G4Box *SQuadChamberWall, *SQuadChamber;
G4LogicalVolume *LQuadChamberWall, *LQuadChamber;
G4VPhysicalVolume *PQuadChamberWall, *PQuadChamber;
G4double InnerRadiusQuad;
G4double InnerRadiusTriplet;
G4double ExternalRadiusQuad;
G4double FirstQuadThickness;
G4double SecondQuadThickness;
G4double ThirdQuadThickness;
G4double FourthQuadThickness;
G4double startAngleQuad;
G4double spanningAngleQuad;
G4double FirstQuadXPosition;
G4double FirstQXPosition;
G4double SecondQuadXPosition;
G4double SecondQXPosition;
G4double ThirdQuadXPosition;
G4double ThirdQXPosition;
G4double FourthQuadXPosition;
G4double FourthQXPosition;
G4double QuadYPosition;
G4double QYPosition;
G4double QuadZPosition;
G4double QZPosition;
G4Tubs *SFirstTriplet, *SSecondTriplet, *SThirdTriplet, *SFourthTriplet;
G4LogicalVolume *LFirstTriplet, *LSecondTriplet, *LThirdTriplet, *LFourthTriplet;
G4VPhysicalVolume *PFirstTriplet, *PSecondTriplet, *PThirdTriplet, *PFourthTriplet;
G4Tubs *solidFirstQuad, *solidSecondQuad, *solidThirdQuad, *solidFourthQuad;
G4LogicalVolume *logicFirstQuad, *logicSecondQuad, *logicThirdQuad, *logicFourthQuad;
G4VPhysicalVolume *physicFirstQuad, *physicSecondQuad, *physicThirdQuad, *physicFourthQuad;
// Variables definition for the vacuum chamber containing
// the spectrometer
G4Material *externalChamberMaterial;
G4Material *internalChamberMaterial;
G4Box *solidExternalChamber;
G4LogicalVolume *logicExternalChamber;
G4VPhysicalVolume *physicExternalChamber;
G4Box *solidInternalChamber;
G4LogicalVolume *logicInternalChamber;
G4VPhysicalVolume *physicInternalChamber;
G4double VaccumChamberWallThickness;
/////////////////// Declaration of Magnetic Variables ///////////////
G4FieldManager *pFieldMgr, *pFieldMgrQuadFourth, *pFieldMgrQuadThird, *pFieldMgrQuadSecond, *pFieldMgrQuadFirst;
G4MagneticField* PurgMagField, *PurgMagFieldQuadFourth, *PurgMagFieldQuadThird, *PurgMagFieldQuadSecond, *PurgMagFieldQuadFirst;
G4ChordFinder *pChordFinder, *pChordFinderQuadFourth, *pChordFinderQuadThird, *pChordFinderQuadSecond, *pChordFinderQuadFirst;
G4Mag_UsualEqRhs* fEquation, *fEquationQuadFourth, *fEquationQuadThird, *fEquationQuadSecond, *fEquationQuadFirst;
G4MagInt_Driver* pIntgrDriver, *pIntgrDriverQuadFourth, *pIntgrDriverQuadThird, *pIntgrDriverQuadSecond, *pIntgrDriverQuadFirst;
G4MagIntegratorStepper* fstepper, *fstepperQuadFourth, *fstepperQuadThird, *fstepperQuadSecond, *fstepperQuadFirst;
/////////////////// Declaration of Exit Window Variables ///////////////
G4double InnerRadiusExitWindow;
G4double ExternalRadiusExitWindow;
G4double ExitWindowThickness;
G4double ExitWindowXPosition;
G4double ExitWindowYPosition;
G4double ExitWindowZPosition;
G4double startAngleExitWindow;
G4double spanningAngleExitWindow;
/////////////////// Declaration of Exit Pipe Variables ///////////////
G4double ExitPipeheight;
G4double InnerRadiusExitPipe;
G4double ExternalRadiusExitPipe;
G4double ExitPipeXPosition;
G4double ExitPipeYPosition;
G4double ExitPipeZPosition;
G4double startAngleExitPipe;
G4double spanningAngleExitPipe;
/////////////////// Declaration of Entrance Pipe Variables ///////////////
G4double EntrancePipeheight;
G4double InnerRadiusEntrancePipe;
G4double ExternalRadiusEntrancePipe;
G4double EntrancePipeXPosition;
G4double EntrancePipeYPosition;
G4double EntrancePipeZPosition;
G4double startAngleEntrancePipe;
G4double spanningAngleEntrancePipe;
/////////////////////// Declaration of Exit hole in vessel Variables ///////////////////
G4double InnerRadiusExithole;
G4double ExternalRadiusExithole;
G4double ExitholeThickness;
G4double ExitholeXPosition;
G4double ExitholeYPosition;
G4double ExitholeZPosition;
G4double startAngleExithole;
G4double spanningAngleExithole;
/////////////////////// Declaration of Entrance hole in vessel Variables ///////////////////
G4double InnerRadiusEntrancehole;
G4double ExternalRadiusEntrancehole;
G4double EntranceholeThickness;
G4double EntranceholeXPosition;
G4double EntranceholeYPosition;
G4double EntranceholeZPosition;
G4double EntranceholeQuadXPosition;
G4double startAngleEntrancehole;
G4double spanningAngleEntrancehole;
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////// Relative Distances Declaration ///////////////////////
G4double ExitholeToFinalCollimator;
G4double FinalCollimatorToMagnet4;
G4double Magnet4ToMagnet3;
G4double Magnet3ToMagnet2;
G4double Magnet2ToMagnet1;
G4double Magnet1ToFirstCollimator;
////////////////////////////////////////// Chamber dimentions ///////////////////////
G4double externalChamberXSize;
G4double externalChamberYSize;
G4double externalChamberZSize;
G4double internalChamberXSize;
G4double internalChamberYSize;
G4double internalChamberZSize;
G4double externalChamberXPosition;
G4double externalChamberYPosition;
G4double externalChamberZPosition;
// Variables definition of the collimator
G4double defaultInnerRadiusCollimator;
G4double innerRadiusCollimator;
G4double defaultThicknessCollimator;
G4double thicknessCollimator;
G4double defaultOuterRadiusCollimator;
G4double outerRadiusCollimator;
G4double defaultStartAngleCollimator;
G4double startAngleCollimator;
G4double defaultSpanningAngleCollimator;
G4double spanningAngleCollimator;
G4double defaultCollimatorXPosition;
G4double collimatorXPosition;
G4double defaultCollimatorYPosition;
G4double collimatorYPosition;
G4double defaultCollimatorZPosition;
G4double collimatorZPosition;
G4double collimatorBoxYSize;
G4double collimatorBoxZSize;
G4double collimatorBox_XPosition;
G4double collimatorBox_YPosition;
G4double collimatorBox_ZPosition;
G4Box *solidCollimator;
G4LogicalVolume *logicCollimator;
G4VPhysicalVolume *physicCollimator;
G4Tubs *solidCollimatorHole;
G4LogicalVolume *logicCollimatorHole;
G4VPhysicalVolume *physicCollimatorHole;
G4Material *collimatorHoleMaterial;
G4Material *collimatorMaterial;
// Variables definition of the final collimator
G4double defaultInnerRadiusFinalCollimator;
G4double innerRadiusFinalCollimator;
G4double defaultFinalCollimatorThickness;
G4double FinalCollimatorThickness;
G4double defaultOuterRadiusFinalCollimator;
G4double outerRadiusFinalCollimator;
G4double defaultStartAngleFinalCollimator;
G4double startAngleFinalCollimator;
G4double defaultSpanningAngleFinalCollimator;
G4double spanningAngleFinalCollimator;
G4double defaultFinalCollimatorXPosition;
G4double FinalcollimatorXPosition;
G4double defaultFinalCollimatorYPosition;
G4double FinalcollimatorYPosition;
G4double defaultFinalCollimatorZPosition;
G4double FinalcollimatorZPosition;
G4double collimatorFinalBoxXSize;
G4double collimatorFinalBoxYSize;
G4double collimatorFinalBoxZSize;
G4double collimatorFinalBox_XPosition;
G4double collimatorFinalBox_YPosition;
G4double collimatorFinalBox_ZPosition;
G4Box *solidFinalCollimator;
G4LogicalVolume *logicFinalCollimator;
G4VPhysicalVolume *physicFinalCollimator;
G4Tubs *solidFinalCollimatorHole;
G4LogicalVolume *logicFinalCollimatorHole;
G4VPhysicalVolume *physicFinalCollimatorHole;
G4Material *FinalcollimatorMaterial;
G4Material *FinalcollimatorHoleMaterial;
G4Material *WindowMaterial;
G4Material *PipeMaterial;
// Variables definition of the magnetic component
G4Material *MotherMaterial;
G4Material *externalMagnet_1Material, *externalMagnet_2Material, *externalMagnet_3Material, *externalMagnet_4Material, *externalSlitMaterial, *internalSlitMaterial;
G4Box *solidExternalMagnet_1;
G4LogicalVolume *logicExternalMagnet_1;
G4VPhysicalVolume *physicExternalMagnet_1;
G4VPhysicalVolume *physicExternalMagnet_1Down;
///////000000ooooooo0000000//////////
G4Box *solidMagnet_1;
G4LogicalVolume *logicMagnet_1;
G4VPhysicalVolume *physicMagnet_1Right;
G4VPhysicalVolume *physicMagnet_1Left;
G4Box *solidExternalMagnet_2;
G4LogicalVolume *logicExternalMagnet_2;
G4VPhysicalVolume *physicExternalMagnet_2;
G4VPhysicalVolume *physicExternalMagnet_2Down;
G4Box *solidMagnet_2;
G4LogicalVolume *logicMagnet_2;
G4VPhysicalVolume *physicMagnet_2Right;
G4VPhysicalVolume *physicMagnet_2Left;
G4Box *solidExternalMagnet_3;
G4LogicalVolume *logicExternalMagnet_3;
G4VPhysicalVolume *physicExternalMagnet_3;
G4VPhysicalVolume *physicExternalMagnet_3Down;
G4Box *solidMagnet_3;
G4LogicalVolume *logicMagnet_3;
G4VPhysicalVolume *physicMagnet_3Right;
G4VPhysicalVolume *physicMagnet_3Left;
G4Box *solidExternalMagnet_4;
G4LogicalVolume *logicExternalMagnet_4;
G4VPhysicalVolume *physicExternalMagnet_4;
G4VPhysicalVolume *physicExternalMagnet_4Down;
G4Box *solidMagnet_4;
G4LogicalVolume *logicMagnet_4;
G4VPhysicalVolume *physicMagnet_4Right;
G4VPhysicalVolume *physicMagnet_4Left;
G4Box *solidExternalSlit;
G4LogicalVolume *logicExternalSlit;
G4VPhysicalVolume *physicExternalSlit;
G4Box *solidInternalSlit;
G4LogicalVolume *logicInternalSlit;
G4VPhysicalVolume *physicInternalSlit;
G4double externalMagnet_1XSize;
G4double externalMagnet_1YSize;
G4double externalMagnet_1ZSize;
G4double externalMagnet_2XSize;
G4double externalMagnet_2YSize;
G4double externalMagnet_2ZSize;
G4double externalMagnet_3XSize;
G4double externalMagnet_3YSize;
G4double externalMagnet_3ZSize;
G4double externalMagnet_4XSize;
G4double externalMagnet_4YSize;
G4double externalMagnet_4ZSize;
G4double externalMagnet_1XPosition;
G4double externalMagnet_1YPosition;
G4double externalMagnet_1ZPosition;
G4double externalMagnet_2XPosition;
G4double externalMagnet_2YPosition;
G4double externalMagnet_2ZPosition;
G4double externalMagnet_3XPosition;
G4double externalMagnet_3YPosition;
G4double externalMagnet_3ZPosition;
G4double externalMagnet_4XPosition;
G4double externalMagnet_4YPosition;
G4double externalMagnet_4ZPosition;
G4double externalSlitXPosition;
G4double externalSlitYPosition;
G4double externalSlitZPosition;
G4double externalSlitXSize;
G4double externalSlitYSize;
G4double externalSlitZSize;
G4Tubs *solidExitPipe;
G4LogicalVolume *logicExitPipe;
G4VPhysicalVolume *physicExitPipe;
G4Tubs *solidExitWindow;
G4LogicalVolume *logicExitWindow;
G4VPhysicalVolume *physicExitWindow;
G4Tubs *solidExithole;
G4LogicalVolume *logicExithole;
G4VPhysicalVolume *physicExithole;
G4Tubs *solidEntrancePipe;
G4LogicalVolume *logicEntrancePipe;
G4VPhysicalVolume *physicEntrancePipe;
G4Tubs *solidEntrancehole;
G4LogicalVolume *logicEntrancehole;
G4VPhysicalVolume *physicEntrancehole;
G4VPhysicalVolume *physicEntranceholeESSChamber;
G4double Magnet_1XPosition;
G4double Magnet_1YPosition;
G4double Magnet_1ZPosition;
G4double Magnet_1XSize;
G4double Magnet_1YSize;
G4double Magnet_1ZSize;
G4double Magnet_2XPosition;
G4double Magnet_2YPosition;
G4double Magnet_2ZPosition;
G4double Magnet_2XSize;
G4double Magnet_2YSize;
G4double Magnet_2ZSize;
G4double Magnet_3XPosition;
G4double Magnet_3YPosition;
G4double Magnet_3ZPosition;
G4double Magnet_3XSize;
G4double Magnet_3YSize;
G4double Magnet_3ZSize;
G4double Magnet_4XPosition;
G4double Magnet_4YPosition;
G4double Magnet_4ZPosition;
G4double Magnet_4XSize;
G4double Magnet_4YSize;
G4double Magnet_4ZSize;
G4double internalSlitXPosition;
G4double internalSlitYPosition;
G4double internalSlitZPosition;
G4double internalSlitXSize;
G4double internalSlitYSize;
G4double internalSlitZSize;
////////////////////////////////////////// Faraday Cup /////////////////////////////////////////////
G4Material *KaptonEntranceWindowMaterial;
G4Material *MassRingMaterial;
G4Material *GuardRingMaterial;
G4Material *FaradayCupBottomMaterial;
G4Material *CupMaterial;
G4Box *virtualMag;
G4LogicalVolume *logicVirtualMag;
G4VPhysicalVolume *physicVirtualMag;
G4Box*Box;
G4Tubs*Cylinder;
G4LogicalVolume* logicBeveledCylinder;
G4VPhysicalVolume* physicBeveledCylinder;
G4Tubs *KaptonEntranceWindow;
G4LogicalVolume *logicKaptonEntranceWindow;
G4VPhysicalVolume *physicKaptonEntranceWindow;
G4Tubs *MassRing;
G4LogicalVolume *logicMassRing;
G4VPhysicalVolume *physicMassRing;
G4Tubs *VirtualWindow;
G4LogicalVolume *logicVirtualWindow;
G4VPhysicalVolume *physicVirtualWindow;
G4Tubs *GuardRing;
G4LogicalVolume *logicGuardRing;
G4VPhysicalVolume *physicGuardRing;
G4Tubs *VirtualMiddle;
G4LogicalVolume *logicVirtualMiddle;
G4VPhysicalVolume *physicVirtualMiddle;
G4Tubs *FaradayCupBottom;
G4LogicalVolume *logicFaradayCupBottom;
G4VPhysicalVolume *physicFaradayCupBottom;
G4Tubs *VirtualBottom;
G4LogicalVolume *logicVirtualBottom;
G4VPhysicalVolume *physicVirtualBottom;
G4Tubs *Cup;
G4LogicalVolume *logicCup;
G4VPhysicalVolume *physicCup;
G4Tubs *VirtualOverBottom;
G4LogicalVolume *logicVirtualOverBottom;
G4VPhysicalVolume *physicVirtualOverBottom;
G4Tubs *VirtualLateral;
G4LogicalVolume *logicVirtualLateral;
G4VPhysicalVolume *physicVirtualLateral;
// Colours
G4VisAttributes* blue;
G4VisAttributes* gray;
G4VisAttributes* white;
G4VisAttributes* red;
G4VisAttributes* yellow;
G4VisAttributes* green;
G4VisAttributes* darkGreen;
G4VisAttributes* darkOrange3;
G4VisAttributes* skyBlue;
G4VisAttributes* black;
};
#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. *
// ********************************************************************
//
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
//
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// the *COMPLETE* version of this program, together with its documentation;
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
// Institute in the framework of the MC-INFN Group
//
#ifndef LaserDrivenBeamLineMessenger_h
#define LaserDrivenBeamLineMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class LaserDrivenBeamLine;
class G4UIdirectory;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithAString;
class G4UIcmdWithoutParameter;
class LaserDrivenBeamLineMessenger: public G4UImessenger
{
public:
LaserDrivenBeamLineMessenger(LaserDrivenBeamLine*);
~LaserDrivenBeamLineMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
// Pointer to the detector component
LaserDrivenBeamLine *laserDrivenMessengerPointer;
G4UIdirectory *laserDrivenDir;
G4UIdirectory *energySelectorDir;
G4UIdirectory *FcollimatorDir;
G4UIdirectory *ScollimatorDir;
G4UIdirectory *slitDir;
G4UIdirectory *quadrupoleDir;
G4UIdirectory *relativePosDir;
G4UIcmdWithoutParameter *DisableESSCmd;
G4UIcmdWithADoubleAndUnit *FcollimatorRadiusCmd;
G4UIcmdWithADoubleAndUnit *FcollimatorThicknessCmd;
G4UIcmdWithADoubleAndUnit *FcollimatorZpositionCmd;
G4UIcmdWithADoubleAndUnit *ScollimatorRadiusCmd;
G4UIcmdWithADoubleAndUnit *ScollimatorThicknessCmd;
G4UIcmdWithADoubleAndUnit *ScollimatorZpositionCmd;
G4UIcmdWithADoubleAndUnit *SlitThicknessCmd;
G4UIcmdWithADoubleAndUnit *holeSlitDimensionYCmd;
G4UIcmdWithADoubleAndUnit *holeSlitDimensionZCmd;
G4UIcmdWithADoubleAndUnit *slitHolePositionZCmd;
G4UIcmdWithoutParameter *DisableQuadsCmd;
};
#endif
@@ -39,16 +39,14 @@
class G4VPhysicalVolume;
class HadrontherapyDetectorConstruction;
class HadrontherapyModulator;
//class PassiveCarbonBeamLineMessenger;
class PassiveCarbonBeamLine : public G4VUserDetectorConstruction
{
public:
//PassiveCarbonBeamLine(G4VPhysicalVolume*);
PassiveCarbonBeamLine();
~PassiveCarbonBeamLine();
G4VPhysicalVolume* Construct();
void HadrontherapyBeamLineSupport();
@@ -89,7 +87,8 @@ private:
//PassiveCarbonBeamLineMessenger* passiveMessenger;
G4VPhysicalVolume* physicalTreatmentRoom;
HadrontherapyDetectorConstruction* hadrontherapyDetectorConstruction;
//FaradayCup *FC;
G4double vacuumZoneXSize;
G4double vacuumZoneYSize;
G4double vacuumZoneZSize;
@@ -143,6 +142,7 @@ private:
G4VPhysicalVolume* physiFirstMonitorLayer4;
G4VPhysicalVolume* physiNozzleSupport;
G4VPhysicalVolume* physiHoleNozzleSupport;
G4VPhysicalVolume* physiNozzleSupportHole;
G4VPhysicalVolume* physiSecondHoleNozzleSupport;
G4Tubs* solidFinalCollimator;
G4VPhysicalVolume* physiFinalCollimator;
@@ -26,7 +26,7 @@
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
//
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// the *COMPLETE* version of this program, together with its documentation;
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
// Institute in the framework of the MC-INFN Group
@@ -44,6 +44,7 @@
class G4VPhysicalVolume;
class HadrontherapyDetectorConstruction;
//class FaradayCup;
class HadrontherapyModulator;
class PassiveProtonBeamLineMessenger;
class HadrontherapyDetectorROGeometry;
@@ -51,317 +52,320 @@ class HadrontherapyDetectorROGeometry;
class PassiveProtonBeamLine : public G4VUserDetectorConstruction
{
public:
//PassiveProtonBeamLine(G4VPhysicalVolume*);
PassiveProtonBeamLine();
~PassiveProtonBeamLine();
G4VPhysicalVolume* Construct();
//***************************** PW **************NON SERVE*************************
static PassiveProtonBeamLine* GetInstance();
//***************************** PW **************NON SERVE*************************
void HadrontherapyBeamLineSupport();
// Definition of the beam line support
void HadrontherapyBeamScatteringFoils();
// Definition of the first scattering foil,
// of the Kapton window, of the stopper
void HadrontherapyRangeShifter();
// This defines the "range shifter". Is is a slab
// (usually of PMMA" acting as energy degrader
// of primary beam
void HadrontherapyBeamCollimators();
// Definition of the first collimator, of the range shifter,
// of the second collimator, of the first and second
// collimator modulators
void HadrontherapyBeamMonitoring();
// Definition of three monitor chambers
void HadrontherapyMOPIDetector();
// Construct the MOPI on-line detector
void HadrontherapyBeamNozzle();
// Definition of the beam noozle
void HadrontherapyBeamFinalCollimator();
// Definition of the final collimator
// The following methods allow to change parameters
// of some beam line components
void SetRangeShifterXPosition(G4double value);
// This method allows to move the Range Shifter along
// the X axis
void SetRangeShifterXSize(G4double halfSize);
// This method allows to change the size of the range shifter along
// the X axis
void SetFirstScatteringFoilXSize(G4double);
// This method allows to change the size of the first scattering foil
// along the X axis
void SetSecondScatteringFoilXSize(G4double);
// This method allows to change the size of the second scattering foil
// along the X axis
void SetOuterRadiusStopper(G4double);
// This method allows to change the size of the outer radius of the stopper
void SetInnerRadiusFinalCollimator(G4double);
// This method allows to change the size of the inner radius of the
// final collimator
void SetRSMaterial(G4String);
// This method allows to change the material
// of the range shifter
void SetModulatorAngle(G4double angle);
// This method allows moving the modulator through UI commands
//PassiveProtonBeamLine(G4VPhysicalVolume*);
PassiveProtonBeamLine();
~PassiveProtonBeamLine();
// static G4bool doCalculation;
G4VPhysicalVolume* Construct();
//***************************** PW **************NON SERVE*************************
static PassiveProtonBeamLine* GetInstance();
//***************************** PW **************NON SERVE*************************
void HadrontherapyBeamLineSupport();
// Definition of the beam line support
void HadrontherapyBeamScatteringFoils();
// Definition of the first scattering foil,
// of the Kapton window, of the stopper
void HadrontherapyRangeShifter();
// This defines the "range shifter". Is is a slab
// (usually of PMMA" acting as energy degrader
// of primary beam
void HadrontherapyBeamCollimators();
// Definition of the first collimator, of the range shifter,
// of the second collimator, of the first and second
// collimator modulators
void HadrontherapyBeamMonitoring();
// Definition of three monitor chambers
void HadrontherapyMOPIDetector();
// Construct the MOPI on-line detector
void HadrontherapyBeamNozzle();
// Definition of the beam noozle
void HadrontherapyBeamFinalCollimator();
// Definition of the final collimator
// The following methods allow to change parameters
// of some beam line components
void SetRangeShifterXPosition(G4double value);
// This method allows to move the Range Shifter along
// the X axis
void SetRangeShifterXSize(G4double halfSize);
// This method allows to change the size of the range shifter along
// the X axis
void SetFirstScatteringFoilXSize(G4double);
// This method allows to change the size of the first scattering foil
// along the X axis
void SetSecondScatteringFoilXSize(G4double);
// This method allows to change the size of the second scattering foil
// along the X axis
void SetOuterRadiusStopper(G4double);
// This method allows to change the size of the outer radius of the stopper
void SetInnerRadiusFinalCollimator(G4double);
// This method allows to change the size of the inner radius of the
// final collimator
void SetRSMaterial(G4String);
// This method allows to change the material
// of the range shifter
void SetModulatorAngle(G4double angle);
// This method allows moving the modulator through UI commands
private:
static PassiveProtonBeamLine* instance;
//passive proton line dimensions
void SetDefaultDimensions();
void ConstructPassiveProtonBeamLine();
HadrontherapyModulator* modulator; // Pointer to the modulator
// geometry component
PassiveProtonBeamLineMessenger* passiveMessenger;
G4VPhysicalVolume* physicalTreatmentRoom;
HadrontherapyDetectorConstruction* hadrontherapyDetectorConstruction;
G4Material* kapton;
static PassiveProtonBeamLine* instance;
//passive proton line dimensions
void SetDefaultDimensions();
void ConstructPassiveProtonBeamLine();
HadrontherapyModulator* modulator; // Pointer to the modulator
// geometry component
PassiveProtonBeamLineMessenger* passiveMessenger;
G4VPhysicalVolume* physicalTreatmentRoom;
HadrontherapyDetectorConstruction* hadrontherapyDetectorConstruction;
// Pointer to the Faraday Cup class file
// FaradayCup *pFaradayCup;
G4Material* kapton;
G4double vacuumZoneXSize;
G4double vacuumZoneYSize;
G4double vacuumZoneZSize;
G4double vacuumZoneXPosition;
G4double firstScatteringFoilXSize;
G4double firstScatteringFoilYSize;
G4double firstScatteringFoilZSize;
G4double firstScatteringFoilXPosition;
G4double kaptonWindowXSize;
G4double kaptonWindowYSize;
G4double kaptonWindowZSize;
G4double kaptonWindowXPosition;
G4double innerRadiusStopper;
G4double heightStopper;
G4double startAngleStopper;
G4double spanningAngleStopper;
G4double stopperXPosition;
G4double stopperYPosition;
G4double stopperZPosition;
G4double outerRadiusStopper;
G4double secondScatteringFoilXSize;
G4double secondScatteringFoilYSize;
G4double secondScatteringFoilZSize;
G4double secondScatteringFoilXPosition;
G4double secondScatteringFoilYPosition;
G4double secondScatteringFoilZPosition;
G4double rangeShifterXSize;
G4double rangeShifterYSize;
G4double rangeShifterZSize;
G4double rangeShifterXPosition;
G4double rangeShifterYPosition;
G4double rangeShifterZPosition;
G4VPhysicalVolume* physiBeamLineSupport;
G4VPhysicalVolume* physiBeamLineCover;
G4VPhysicalVolume* physiBeamLineCover2;
G4Box* firstScatteringFoil;
G4VPhysicalVolume* physiFirstScatteringFoil;
G4VPhysicalVolume* physiKaptonWindow;
G4Tubs* solidStopper;
G4VPhysicalVolume* physiStopper;
G4LogicalVolume* logicStopper;
G4Box* secondScatteringFoil;
G4VPhysicalVolume* physiSecondScatteringFoil;
G4VPhysicalVolume* physiFirstCollimator;
G4VPhysicalVolume* physiHoleFirstCollimator;
G4Box* solidRangeShifterBox;
G4LogicalVolume* logicRangeShifterBox;
G4VPhysicalVolume* physiRangeShifterBox;
G4VPhysicalVolume* physiSecondCollimator;
G4VPhysicalVolume* physiHoleSecondCollimator;
G4VPhysicalVolume* physiFirstCollimatorModulatorBox;
G4VPhysicalVolume* physiHoleFirstCollimatorModulatorBox;
G4VPhysicalVolume* physiSecondCollimatorModulatorBox;
G4VPhysicalVolume* physiHoleSecondCollimatorModulatorBox;
// MOPI Detector
// Mother volume
G4VPhysicalVolume* physiMOPIMotherVolume;
G4LogicalVolume* logicMOPIMotherVolume;
G4Box* solidMOPIMotherVolume;
G4double MOPIMotherVolumeXSize;
G4double MOPIMotherVolumeYSize;
G4double MOPIMotherVolumeZSize;
G4double MOPIMotherVolumeXPosition;
G4double MOPIMotherVolumeYPosition;
G4double MOPIMotherVolumeZPosition;
// First Kapton layer
G4double MOPIFirstKaptonLayerXSize;
G4double MOPIFirstKaptonLayerYSize;
G4double MOPIFirstKaptonLayerZSize;
G4double MOPIFirstKaptonLayerXPosition;
G4double MOPIFirstKaptonLayerYPosition;
G4double MOPIFirstKaptonLayerZPosition;
G4Box* solidMOPIFirstKaptonLayer;
G4LogicalVolume* logicMOPIFirstKaptonLayer;
G4VPhysicalVolume* physiMOPIFirstKaptonLayer;
// First Aluminum layer
G4double MOPIFirstAluminumLayerXSize;
G4double MOPIFirstAluminumLayerYSize;
G4double MOPIFirstAluminumLayerZSize;
G4double MOPIFirstAluminumLayerXPosition;
G4double MOPIFirstAluminumLayerYPosition;
G4double MOPIFirstAluminumLayerZPosition;
G4Box* solidMOPIFirstAluminumLayer;
G4LogicalVolume* logicMOPIFirstAluminumLayer;
G4VPhysicalVolume* physiMOPIFirstAluminumLayer;
// First Air Gap
G4double MOPIFirstAirGapXSize;
G4double MOPIFirstAirGapYSize;
G4double MOPIFirstAirGapZSize;
G4double MOPIFirstAirGapXPosition;
G4double MOPIFirstAirGapYPosition;
G4double MOPIFirstAirGapZPosition;
G4Box* solidMOPIFirstAirGap;
G4LogicalVolume* logicMOPIFirstAirGap;
G4VPhysicalVolume* physiMOPIFirstAirGap;
// Cathode
G4double MOPICathodeXSize;
G4double MOPICathodeYSize;
G4double MOPICathodeZSize;
G4double MOPICathodeXPosition;
G4double MOPICathodeYPosition;
G4double MOPICathodeZPosition;
G4Box* solidMOPICathode;
G4LogicalVolume* logicMOPICathode;
G4VPhysicalVolume* physiMOPICathode;
G4VisAttributes* redWire;
// First Air Gap
G4double MOPISecondAirGapXSize;
G4double MOPISecondAirGapYSize;
G4double MOPISecondAirGapZSize;
G4double MOPISecondAirGapXPosition;
G4double MOPISecondAirGapYPosition;
G4double MOPISecondAirGapZPosition;
G4Box* solidMOPISecondAirGap;
G4LogicalVolume* logicMOPISecondAirGap;
G4VPhysicalVolume* physiMOPISecondAirGap;
// First Aluminum layer
G4double MOPISecondAluminumLayerXSize;
G4double MOPISecondAluminumLayerYSize;
G4double MOPISecondAluminumLayerZSize;
G4double MOPISecondAluminumLayerXPosition;
G4double MOPISecondAluminumLayerYPosition;
G4double MOPISecondAluminumLayerZPosition;
G4Box* solidMOPISecondAluminumLayer;
G4LogicalVolume* logicMOPISecondAluminumLayer;
G4VPhysicalVolume* physiMOPISecondAluminumLayer;
// Second Kapton layer
G4double MOPISecondKaptonLayerXSize;
G4double MOPISecondKaptonLayerYSize;
G4double MOPISecondKaptonLayerZSize;
G4double MOPISecondKaptonLayerXPosition;
G4double MOPISecondKaptonLayerYPosition;
G4double MOPISecondKaptonLayerZPosition;
G4Box* solidMOPISecondKaptonLayer;
G4LogicalVolume* logicMOPISecondKaptonLayer;
G4VPhysicalVolume* physiMOPISecondKaptonLayer;
G4double innerRadiusFinalCollimator;
G4VPhysicalVolume* mother;
G4VPhysicalVolume* physiFirstMonitorLayer1;
G4VPhysicalVolume* physiFirstMonitorLayer2;
G4VPhysicalVolume* physiFirstMonitorLayer3;
G4VPhysicalVolume* physiFirstMonitorLayer4;
G4VPhysicalVolume* physiSecondMonitorLayer1;
G4VPhysicalVolume* physiSecondMonitorLayer2;
G4VPhysicalVolume* physiSecondMonitorLayer3;
G4VPhysicalVolume* physiSecondMonitorLayer4;
G4VPhysicalVolume* physiNozzleSupport;
G4VPhysicalVolume* physiHoleNozzleSupport;
G4VPhysicalVolume* physiBrassTube;
G4VPhysicalVolume* physiBrassTube2;
G4VPhysicalVolume* physiBrassTube3;
G4Tubs* solidFinalCollimator;
G4VPhysicalVolume* physiFinalCollimator;
G4VisAttributes* blue;
G4VisAttributes* gray;
G4VisAttributes* white;
G4VisAttributes* red;
G4VisAttributes* yellow;
G4VisAttributes* green;
G4VisAttributes* darkGreen;
G4VisAttributes* darkOrange3;
G4VisAttributes* skyBlue;
G4Material* rangeShifterMaterial;
G4Material* beamLineSupportMaterial;
G4Material* vacuumZoneMaterial;
G4Material* firstScatteringFoilMaterial;
G4Material* kaptonWindowMaterial;
G4Material* stopperMaterial;
G4Material* secondScatteringFoilMaterial;
G4Material* firstCollimatorMaterial;
G4Material* holeFirstCollimatorMaterial;
G4Material* modulatorBoxMaterial;
G4Material* holeModulatorBoxMaterial;
G4Material* layer1MonitorChamberMaterial;
G4Material* layer2MonitorChamberMaterial;
G4Material* layer3MonitorChamberMaterial;
G4Material* layer4MonitorChamberMaterial;
G4Material* MOPIMotherVolumeMaterial;
G4Material* MOPIFirstKaptonLayerMaterial;
G4Material* MOPIFirstAluminumLayerMaterial;
G4Material* MOPIFirstAirGapMaterial;
G4Material* MOPICathodeMaterial;
G4Material* MOPISecondAirGapMaterial;
G4Material* MOPISecondAluminumLayerMaterial;
G4Material* MOPISecondKaptonLayerMaterial;
G4Material* nozzleSupportMaterial;
G4Material* holeNozzleSupportMaterial;
G4Material* brassTubeMaterial;
G4Material* brassTube2Material;
G4Material* brassTube3Material;
G4Material* finalCollimatorMaterial;
HadrontherapyDetectorROGeometry* RO;
G4double vacuumZoneXSize;
G4double vacuumZoneYSize;
G4double vacuumZoneZSize;
G4double vacuumZoneXPosition;
G4double firstScatteringFoilXSize;
G4double firstScatteringFoilYSize;
G4double firstScatteringFoilZSize;
G4double firstScatteringFoilXPosition;
G4double kaptonWindowXSize;
G4double kaptonWindowYSize;
G4double kaptonWindowZSize;
G4double kaptonWindowXPosition;
G4double innerRadiusStopper;
G4double heightStopper;
G4double startAngleStopper;
G4double spanningAngleStopper;
G4double stopperXPosition;
G4double stopperYPosition;
G4double stopperZPosition;
G4double outerRadiusStopper;
G4double secondScatteringFoilXSize;
G4double secondScatteringFoilYSize;
G4double secondScatteringFoilZSize;
G4double secondScatteringFoilXPosition;
G4double secondScatteringFoilYPosition;
G4double secondScatteringFoilZPosition;
G4double rangeShifterXSize;
G4double rangeShifterYSize;
G4double rangeShifterZSize;
G4double rangeShifterXPosition;
G4double rangeShifterYPosition;
G4double rangeShifterZPosition;
G4VPhysicalVolume* physiBeamLineSupport;
G4VPhysicalVolume* physiBeamLineCover;
G4VPhysicalVolume* physiBeamLineCover2;
G4Box* firstScatteringFoil;
G4VPhysicalVolume* physiFirstScatteringFoil;
G4VPhysicalVolume* physiKaptonWindow;
G4Tubs* solidStopper;
G4VPhysicalVolume* physiStopper;
G4LogicalVolume* logicStopper;
G4Box* secondScatteringFoil;
G4VPhysicalVolume* physiSecondScatteringFoil;
G4VPhysicalVolume* physiFirstCollimator;
G4VPhysicalVolume* physiHoleFirstCollimator;
G4Box* solidRangeShifterBox;
G4LogicalVolume* logicRangeShifterBox;
G4VPhysicalVolume* physiRangeShifterBox;
G4VPhysicalVolume* physiSecondCollimator;
G4VPhysicalVolume* physiHoleSecondCollimator;
G4VPhysicalVolume* physiFirstCollimatorModulatorBox;
G4VPhysicalVolume* physiHoleFirstCollimatorModulatorBox;
G4VPhysicalVolume* physiSecondCollimatorModulatorBox;
G4VPhysicalVolume* physiHoleSecondCollimatorModulatorBox;
// MOPI Detector
// Mother volume
G4VPhysicalVolume* physiMOPIMotherVolume;
G4LogicalVolume* logicMOPIMotherVolume;
G4Box* solidMOPIMotherVolume;
G4double MOPIMotherVolumeXSize;
G4double MOPIMotherVolumeYSize;
G4double MOPIMotherVolumeZSize;
G4double MOPIMotherVolumeXPosition;
G4double MOPIMotherVolumeYPosition;
G4double MOPIMotherVolumeZPosition;
// First Kapton layer
G4double MOPIFirstKaptonLayerXSize;
G4double MOPIFirstKaptonLayerYSize;
G4double MOPIFirstKaptonLayerZSize;
G4double MOPIFirstKaptonLayerXPosition;
G4double MOPIFirstKaptonLayerYPosition;
G4double MOPIFirstKaptonLayerZPosition;
G4Box* solidMOPIFirstKaptonLayer;
G4LogicalVolume* logicMOPIFirstKaptonLayer;
G4VPhysicalVolume* physiMOPIFirstKaptonLayer;
// First Aluminum layer
G4double MOPIFirstAluminumLayerXSize;
G4double MOPIFirstAluminumLayerYSize;
G4double MOPIFirstAluminumLayerZSize;
G4double MOPIFirstAluminumLayerXPosition;
G4double MOPIFirstAluminumLayerYPosition;
G4double MOPIFirstAluminumLayerZPosition;
G4Box* solidMOPIFirstAluminumLayer;
G4LogicalVolume* logicMOPIFirstAluminumLayer;
G4VPhysicalVolume* physiMOPIFirstAluminumLayer;
// First Air Gap
G4double MOPIFirstAirGapXSize;
G4double MOPIFirstAirGapYSize;
G4double MOPIFirstAirGapZSize;
G4double MOPIFirstAirGapXPosition;
G4double MOPIFirstAirGapYPosition;
G4double MOPIFirstAirGapZPosition;
G4Box* solidMOPIFirstAirGap;
G4LogicalVolume* logicMOPIFirstAirGap;
G4VPhysicalVolume* physiMOPIFirstAirGap;
// Cathode
G4double MOPICathodeXSize;
G4double MOPICathodeYSize;
G4double MOPICathodeZSize;
G4double MOPICathodeXPosition;
G4double MOPICathodeYPosition;
G4double MOPICathodeZPosition;
G4Box* solidMOPICathode;
G4LogicalVolume* logicMOPICathode;
G4VPhysicalVolume* physiMOPICathode;
G4VisAttributes* redWire;
// First Air Gap
G4double MOPISecondAirGapXSize;
G4double MOPISecondAirGapYSize;
G4double MOPISecondAirGapZSize;
G4double MOPISecondAirGapXPosition;
G4double MOPISecondAirGapYPosition;
G4double MOPISecondAirGapZPosition;
G4Box* solidMOPISecondAirGap;
G4LogicalVolume* logicMOPISecondAirGap;
G4VPhysicalVolume* physiMOPISecondAirGap;
// First Aluminum layer
G4double MOPISecondAluminumLayerXSize;
G4double MOPISecondAluminumLayerYSize;
G4double MOPISecondAluminumLayerZSize;
G4double MOPISecondAluminumLayerXPosition;
G4double MOPISecondAluminumLayerYPosition;
G4double MOPISecondAluminumLayerZPosition;
G4Box* solidMOPISecondAluminumLayer;
G4LogicalVolume* logicMOPISecondAluminumLayer;
G4VPhysicalVolume* physiMOPISecondAluminumLayer;
// Second Kapton layer
G4double MOPISecondKaptonLayerXSize;
G4double MOPISecondKaptonLayerYSize;
G4double MOPISecondKaptonLayerZSize;
G4double MOPISecondKaptonLayerXPosition;
G4double MOPISecondKaptonLayerYPosition;
G4double MOPISecondKaptonLayerZPosition;
G4Box* solidMOPISecondKaptonLayer;
G4LogicalVolume* logicMOPISecondKaptonLayer;
G4VPhysicalVolume* physiMOPISecondKaptonLayer;
G4double innerRadiusFinalCollimator;
G4VPhysicalVolume* mother;
G4VPhysicalVolume* physiFirstMonitorLayer1;
G4VPhysicalVolume* physiFirstMonitorLayer2;
G4VPhysicalVolume* physiFirstMonitorLayer3;
G4VPhysicalVolume* physiFirstMonitorLayer4;
G4VPhysicalVolume* physiSecondMonitorLayer1;
G4VPhysicalVolume* physiSecondMonitorLayer2;
G4VPhysicalVolume* physiSecondMonitorLayer3;
G4VPhysicalVolume* physiSecondMonitorLayer4;
G4VPhysicalVolume* physiNozzleSupport;
G4VPhysicalVolume* physiHoleNozzleSupport;
G4VPhysicalVolume* physiBrassTube;
G4VPhysicalVolume* physiBrassTube2;
G4VPhysicalVolume* physiBrassTube3;
G4Tubs* solidFinalCollimator;
G4VPhysicalVolume* physiFinalCollimator;
G4VisAttributes* blue;
G4VisAttributes* gray;
G4VisAttributes* white;
G4VisAttributes* red;
G4VisAttributes* yellow;
G4VisAttributes* green;
G4VisAttributes* darkGreen;
G4VisAttributes* darkOrange3;
G4VisAttributes* skyBlue;
G4Material* rangeShifterMaterial;
G4Material* beamLineSupportMaterial;
G4Material* vacuumZoneMaterial;
G4Material* firstScatteringFoilMaterial;
G4Material* kaptonWindowMaterial;
G4Material* stopperMaterial;
G4Material* secondScatteringFoilMaterial;
G4Material* firstCollimatorMaterial;
G4Material* holeFirstCollimatorMaterial;
G4Material* modulatorBoxMaterial;
G4Material* holeModulatorBoxMaterial;
G4Material* layer1MonitorChamberMaterial;
G4Material* layer2MonitorChamberMaterial;
G4Material* layer3MonitorChamberMaterial;
G4Material* layer4MonitorChamberMaterial;
G4Material* MOPIMotherVolumeMaterial;
G4Material* MOPIFirstKaptonLayerMaterial;
G4Material* MOPIFirstAluminumLayerMaterial;
G4Material* MOPIFirstAirGapMaterial;
G4Material* MOPICathodeMaterial;
G4Material* MOPISecondAirGapMaterial;
G4Material* MOPISecondAluminumLayerMaterial;
G4Material* MOPISecondKaptonLayerMaterial;
G4Material* nozzleSupportMaterial;
G4Material* holeNozzleSupportMaterial;
G4Material* brassTubeMaterial;
G4Material* brassTube2Material;
G4Material* brassTube3Material;
G4Material* finalCollimatorMaterial;
HadrontherapyDetectorROGeometry* RO;
};
#endif