Import Geant4 10.1.0 source tree
This commit is contained in:
+24
-25
@@ -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;
|
||||
|
||||
+63
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user