Import Geant4 6.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 10:56:29 +02:00
parent 1d812b78b1
commit e083ffb441
1415 changed files with 111223 additions and 21207 deletions
@@ -0,0 +1,96 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: MedLinacAnalysisManager.hh,v 1.3 2004/05/14 18:25:39 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
//
// the class Analysis creates and managed histograms
//
#ifdef G4ANALYSIS_USE
#ifndef G4PROCESSTESTANALYSIS_HH
#define G4PROCESSTESTANALYSIS_HH
#include "globals.hh"
#include <vector>
#include "G4ThreeVector.hh"
#include "AIDA/IHistogram1D.h"
#include "AIDA/IHistogram2D.h"
#include "AIDA/IAnalysisFactory.h"
namespace AIDA{
class ITree;
class IHistogramFactory;
class IAnalysisFactory;
class ITreeFactory;
};
class MedLinacAnalysisManager
{
private:
MedLinacAnalysisManager();
public:
~MedLinacAnalysisManager();
static MedLinacAnalysisManager* getInstance();
void book();
void FillHistogram1WithEnergy(G4double,G4double,G4float);
void FillHistogram3WithEnergy(G4double,G4double,G4float);
void FillHistogram4WithEnergy(G4double,G4float);
void FillHistogram5WithEnergy(G4double,G4float);
void FillHistogram6WithEnergy(G4double,G4float);
void FillHistogram7WithEnergy(G4double,G4float);
void FillHistogram8WithEnergy(G4double,G4float);
void PrimaryParticleEnergySpectrum(G4double);
void finish();
private:
G4double xx,zz,yy;
G4float en;
G4double x,y,z;
static MedLinacAnalysisManager* instance;
private:
AIDA::IAnalysisFactory* aFact;
AIDA::ITree* theTree;
AIDA::IHistogramFactory *histFact;
AIDA::ITreeFactory *treeFact;
AIDA::IHistogram2D *h1;
AIDA::IHistogram1D *h2;
AIDA::IHistogram2D *h3;
AIDA::IHistogram1D *h4;
AIDA::IHistogram1D *h5;
AIDA::IHistogram1D *h6;
AIDA::IHistogram1D *h7;
AIDA::IHistogram1D *h8;
};
#endif
#endif
@@ -0,0 +1,49 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: MedLinacDecorator.hh,v 1.1 2004/05/14 18:25:39 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
#ifndef MedLinacDecorator_h
#define MedLinacDecorator_h 1
#include "MedLinacVGeometryComponent.hh"
class G4VPhysicalVolume;
class MedLinacVGeometryComponent;
class MedLinacDecorator: public MedLinacVGeometryComponent
{
public:
MedLinacDecorator(MedLinacVGeometryComponent*);
virtual ~MedLinacDecorator();
virtual void ConstructComponent(G4VPhysicalVolume*, G4VPhysicalVolume*)=0;
virtual void DestroyComponent()=0;
private:
MedLinacVGeometryComponent* component;
};
#endif
@@ -0,0 +1,151 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: MedLinacDetectorConstruction.hh,v 1.3 2004/05/14 18:25:39 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
//
#ifndef MedLinacDetectorConstruction_H
#define MedLinacDetectorConstruction_H 1
#include "MedLinacDetectorMessenger.hh"
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
#include "G4VisAttributes.hh"
class G4LogicalVolume;
class G4VPhysicalVolume;
class G4Material;
class G4VPhysicalVolume;
class MedLinacDetectorMessenger;
class MedLinacVGeometryComponent;
class MedLinacPhantomSD;
class MedLinacPhantomROGeometry;
class MedLinacVoxelParameterisation;
class MedLinacDecorator;
//#include "PhysicalConstants.hh"
class MedLinacDetectorConstruction : public G4VUserDetectorConstruction
{
public:
MedLinacDetectorConstruction();
~MedLinacDetectorConstruction();
public:
void SetJawX1Pos_x (G4double);
void SetJawX2Pos_x (G4double);
void SetJawY1Pos_y (G4double);
void SetJawY2Pos_y (G4double);
G4VPhysicalVolume* Construct();
void UpdateGeometry();
void ConstructVolume();
void ConstructSensitiveDetector();
//void SetPhantomMaterial(G4String);
const G4int GetNumVoxelX() {return numberOfVoxelsAlongX;}
const G4int GetNumVoxelY() {return numberOfVoxelsAlongY;}
const G4int GetNumVoxelZ() {return numberOfVoxelsAlongZ;}
//const G4double GetDimX() {return PhantomDimensionX;}
//const G4double GetDimy() {return PhantomDimensionY;}
//const G4double GetBoxDim_Z() {return PhantomDimensionZ;}
const G4double VoxelWidth_X(){return phantomDim_x/numberOfVoxelsAlongX;}
const G4double VoxelWidth_Y(){return phantomDim_y/numberOfVoxelsAlongY;}
const G4double VoxelWidth_Z(){return phantomDim_z/numberOfVoxelsAlongZ;}
void ComputeDimVoxel() {dimVoxel = phantomDim_x/numberOfVoxelsAlongX;}
static MedLinacDetectorConstruction* GetInstance(G4String);
public:
void PrintParameters();
G4double GetJawX1Pos_x() {return fieldX1;};
G4double GetJawX2Pos_x() {return fieldX2;};
G4double GetJawY1Pos_y() {return fieldY1;};
G4double GetJawY2Pos_y() {return fieldY2;};
private:
G4double fieldX1;
G4double fieldX2;
G4double fieldY1;
G4double fieldY2;
G4VPhysicalVolume* ConstructGeom();
MedLinacVGeometryComponent* pHead;
MedLinacDetectorMessenger* detectorMessenger;
MedLinacDecorator* decorator;
//MedLinacDecorator* decorator1;
//MedLinacDecorator* decorator2;
MedLinacDetectorConstruction(G4String);
static MedLinacDetectorConstruction* instance;
MedLinacPhantomSD* phantomSD;//pointer to sensitive detector
MedLinacPhantomROGeometry* phantomROGeometry;//pointer to ROGeometry
G4double phantomDim_x; //Phantom XDimension
G4double phantomDim_y; //Phantom YDimension
G4double phantomDim_z; //Phantom ZDimension
G4int numberOfVoxelsAlongX; //Number of voxels along x axis
G4int numberOfVoxelsAlongY; //Number of voxels along y axis
G4int numberOfVoxelsAlongZ; //Number of voxels along z axis
G4String sensitiveDetectorName;
G4double dimVoxel;
// Logical volumes
//
G4LogicalVolume* experimentalHall_log;
G4LogicalVolume* vacuumBlock_log;
G4LogicalVolume* JawY1_log;
G4LogicalVolume* JawY2_log;
G4LogicalVolume* JawX1_log;
G4LogicalVolume* JawX2_log;
G4LogicalVolume* Phantom_log;
// Physical volumes
//
G4VPhysicalVolume* experimentalHall_phys;
G4VPhysicalVolume* vacuumBlock_phys;
G4VPhysicalVolume* JawY1_phys;
G4VPhysicalVolume* JawY2_phys;
G4VPhysicalVolume* JawX1_phys;
G4VPhysicalVolume* JawX2_phys;
G4VPhysicalVolume* Phantom_phys;
//Vis
//
G4VisAttributes* simpleH2OVisAtt;
G4VisAttributes* simpleLeadSVisAtt;
G4VisAttributes* simpleWorldVisAtt;
};
#endif
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: MedLinacDetectorMessenger.hh,v 1.2 2004/04/02 17:48:41 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
#ifndef MedLinacDetectorMessenger_h
#define MedLinacDetectorMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class MedLinacDetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithoutParameter;
//****************************************************************************
class MedLinacDetectorMessenger: public G4UImessenger
{
public:
MedLinacDetectorMessenger(MedLinacDetectorConstruction* );
~MedLinacDetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
MedLinacDetectorConstruction* MedLinacDetector;
G4UIdirectory* MedLinacDir;
G4UIdirectory* X1Dir;
G4UIdirectory* X2Dir;
G4UIdirectory* Y1Dir;
G4UIdirectory* Y2Dir;
G4UIcmdWithADoubleAndUnit* JawX1PosCmd;
G4UIcmdWithADoubleAndUnit* JawX2PosCmd;
G4UIcmdWithADoubleAndUnit* JawY1PosCmd;
G4UIcmdWithADoubleAndUnit* JawY2PosCmd;
G4UIcmdWithoutParameter* UpdateCmd;
};
//****************************************************************************
#endif
@@ -0,0 +1,48 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// Dummy sensitive used only to flag sensitivity in cells of RO geometry.
#ifndef MedLinacDummySD_h
#define MedLinacDummySD_h 1
#include "G4VSensitiveDetector.hh"
class G4Step;
class MedLinacDummySD : public G4VSensitiveDetector
{
public:
MedLinacDummySD();
~MedLinacDummySD() {};
void Initialize(G4HCofThisEvent* ) {};
G4bool ProcessHits(G4Step* ,G4TouchableHistory*) {return false;}
void EndOfEvent(G4HCofThisEvent*) {};
void clear() {};
void DrawAll() {};
void PrintAll() {};
};
MedLinacDummySD::MedLinacDummySD() : G4VSensitiveDetector("dummySD")
{}
#endif
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: MedLinacEventAction.hh,v 1.3 2004/05/14 18:25:39 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
//
#ifndef MedLinacEventAction_h
#define MedLinacEventAction_h 1
#include "G4UserEventAction.hh"
#include "globals.hh"
//class G4Event;
//class MedLinacDetectorConstruction;
//class MedLinacAnalysisManager;
//*********************************************************************
class MedLinacEventAction : public G4UserEventAction
{
public:
MedLinacEventAction();
~MedLinacEventAction();
public:
void BeginOfEventAction(const G4Event*);
void EndOfEventAction(const G4Event*);
private:
G4String drawFlag; //Visualisation flag
};
//*********************************************************************
#endif
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: MedLinacHead.hh,v 1.1 2004/05/14 18:25:39 mpiergen Exp $
//
// Code developed by: M. Piergentili
//
//
#ifndef MedLinacHead_h
#define MedLinacHead_h 1
class MedLinacVGeometryComponent;
class G4VPhysicalVolume;
class G4LogicalVolume;
class G4Region;
class G4Material;
class G4VisAttributes;
class MedLinacHead: public MedLinacVGeometryComponent
{
public:
MedLinacHead();
~MedLinacHead();
void ConstructComponent(G4VPhysicalVolume*,G4VPhysicalVolume*);
void DestroyComponent();
private:
G4LogicalVolume* windowUp_log;
G4LogicalVolume* UpperCollimator_log;
G4LogicalVolume* collim_log;
G4LogicalVolume* tracker_log;
G4LogicalVolume* CylMinusCone_log;
G4LogicalVolume* windowLow_log;
G4LogicalVolume* Window_log;
G4LogicalVolume* SignalPlate_log;
G4LogicalVolume* Mirror_log;
G4LogicalVolume* reticle_log;
G4VPhysicalVolume* windowUp_phys;
G4VPhysicalVolume* UpperCollimator_phys;
G4VPhysicalVolume* CylMinusCone_phys;
G4VPhysicalVolume* windowLow_phys;
G4VPhysicalVolume* Window1_phys;
G4VPhysicalVolume* SignalPlate1_phys;
G4VPhysicalVolume* SignalPlate2_phys;
G4VPhysicalVolume* Window2_phys;
G4VPhysicalVolume* SignalPlate3_phys;
G4VPhysicalVolume* SignalPlate4_phys;
G4VPhysicalVolume* Window3_phys;
G4VPhysicalVolume* Mirror_phys;
G4VPhysicalVolume* reticle_phys;
G4Region* aLowerCollRegion;
G4Region* aUpperCollRegion;
G4VisAttributes* simpleLeadWVisAtt;
G4VisAttributes* simpleLeadSVisAtt;
G4VisAttributes* simpleAlVisAtt;
G4VisAttributes* simpleCopperSVisAtt;
G4VisAttributes* simpleMylarVisAtt;
G4VisAttributes* simpleKaptonVisAtt;
G4VisAttributes* simpleWorldVisAtt;
};
#endif
@@ -0,0 +1,123 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: MedLinacPhantomHit.hh,v 1.2 2004/04/02 17:48:41 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
// It manages the hits and the enrgy deposit in the phantom associated with
// each hit ...
#ifndef MedLinacPhantomHit_h
#define MedLinacPhantomHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
#include "G4LogicalVolume.hh"
#include "G4Transform3D.hh"
#include "G4RotationMatrix.hh"
class MedLinacPhantomHit : public G4VHit
{
public:
MedLinacPhantomHit(G4LogicalVolume* ,G4int ,G4int ,G4int );
~MedLinacPhantomHit();
MedLinacPhantomHit(const MedLinacPhantomHit &right);
const MedLinacPhantomHit& operator = (const MedLinacPhantomHit &right);
int operator == (const MedLinacPhantomHit &right) const;
inline void *operator new(size_t);
inline void operator delete(void *aHit);
void Draw();
void Print();
private:
const G4LogicalVolume* logicalVolume;// Logical volume where the hit happened
G4int xHitPosition; // Hit x coordinate
G4int zHitPosition; // Hit z coordinate
G4int yHitPosition; // Hit y coordinate
G4ThreeVector hitPosition; //position of the hit
G4RotationMatrix rotation; // rotation of the logical volume
G4double energyDeposit; // energy deposit associated with the hit
public:
//...
// Set Hit position
inline void SetCellID(G4int XID,G4int YID,G4int ZID)
{xHitPosition = XID; zHitPosition = ZID; yHitPosition = YID; }
inline G4int GetXID() // Get hit x coordinate
{return xHitPosition;}
inline G4int GetZID() // Get hit z coordinate
{return zHitPosition;}
inline G4int GetYID() // Get hit y coordinate
{return yHitPosition;}
inline void SetEdep(G4double edep) //Set hit energy deposit
{energyDeposit = edep;}
inline void AddEdep(G4double edep) // Add energy deposit
{energyDeposit += edep;}
inline G4double GetEdep() // Get energy deposit
{return energyDeposit;}
inline void SetPos(G4ThreeVector xyz) // Set hit position
{hitPosition = xyz;}
inline G4ThreeVector GetPos() // Get hit position
{return hitPosition;}
inline void SetRot(G4RotationMatrix rmat) //set rotation
{rotation = rmat;}
inline G4RotationMatrix GetRot() //get rotation
{return rotation;}
//...
// It returns the logical volume where the hit happened
inline const G4LogicalVolume * GetLogicalVolume()
{return logicalVolume;}
};
typedef G4THitsCollection<MedLinacPhantomHit> MedLinacPhantomHitsCollection;
extern G4Allocator<MedLinacPhantomHit> MedLinacPhantomHitAllocator;
inline void* MedLinacPhantomHit::operator new(size_t)
{
void *aHit;
aHit = (void *) MedLinacPhantomHitAllocator.MallocSingle();
return aHit;
}
inline void MedLinacPhantomHit::operator delete(void *aHit)
{
MedLinacPhantomHitAllocator.FreeSingle((MedLinacPhantomHit*) aHit);
}
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: MedLinacPhantomROGeometry.hh,v 1.2 2004/04/02 17:48:41 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
//
//The phantom is devided in voxels. the dimension of the voxel is 1mm
//
#ifndef MedLinacPhantomROGeometry_h
#define MedLinacPhantomROGeometry_h
#include "G4VReadOutGeometry.hh"
class MedLinacPhantomROGeometry : public G4VReadOutGeometry
{
public:
MedLinacPhantomROGeometry(G4String aString,
G4double phantomDim_x,
G4double phantomDim_y,
G4double phantomDim_z,
G4int numberOfVoxelsX,
G4int numberOfVoxelsY,
G4int numberOfVoxelsZ);
~MedLinacPhantomROGeometry();
private:
G4VPhysicalVolume* Build();
private:
const G4double PhantomDimensionX;
const G4double PhantomDimensionY;
const G4double PhantomDimensionZ;
const G4int NumberOfVoxelsAlongX;
const G4int NumberOfVoxelsAlongY;
const G4int NumberOfVoxelsAlongZ;
G4VPhysicalVolume *ROPhantomYDivisionPhys;
};
#endif
@@ -0,0 +1,54 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//// $Id: MedLinacPhantomSD.hh,v 1.4 2004/06/18 09:17:38 gunter Exp $
//
//
// Code developed by: M. Piergentili
//
#ifndef MedLinacPhantomSD_h
#define MedLinacPhantomSD_h 1
#include "G4VSensitiveDetector.hh"
#include "MedLinacPhantomHit.hh"
class G4Step;
class G4HCofThisEvent;
class G4TouchableHistory;
class MedLinacPhantomSD : public G4VSensitiveDetector
{
public:
MedLinacPhantomSD(G4String name);
~MedLinacPhantomSD();
void Initialize(G4HCofThisEvent*);
G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist);
void EndOfEvent(G4HCofThisEvent*HCE);
void clear();
void DrawAll();
void PrintAll();
};
#endif
@@ -0,0 +1,83 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//// $Id: MedLinacPhysicsList.hh,v 1.4 2004/06/18 09:17:39 gunter Exp $
//
//
// Code developed by: M. Piergentili
#ifndef MedLinacPhysicsList_h
#define MedLinacPhysicsList_h 1
#include "G4VUserPhysicsList.hh"
#include "globals.hh"
class G4ProductionCuts;
class G4LowEnergyPhotoElectric;
class G4LowEnergyIonisation;
class G4LowEnergyBremsstrahlung;
class MedLinacPhysicsList: public G4VUserPhysicsList
{
public:
MedLinacPhysicsList();
~MedLinacPhysicsList();
protected:
// Construct particle and physics process
void ConstructParticle();
void ConstructProcess();
void SetCuts();
//private:
//G4double cutForGamma;
//G4double cutForElectron;
//G4double cutForPositron;
protected:
// these methods Construct particles
void ConstructBosons();
void ConstructLeptons();
protected:
// these methods Construct physics processes and register them
//void ConstructGeneral();
void ConstructEM();
// private:
G4LowEnergyIonisation* loweIon;
G4LowEnergyPhotoElectric* lowePhot;
G4LowEnergyBremsstrahlung* loweBrem;
};
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: MedLinacPrimaryGeneratorAction.hh,v 1.2 2004/04/02 17:48:41 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
#ifndef MedLinacPrimaryGeneratorAction_h
#define MedLinacPrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
#include <vector>
class G4ParticleGun;
class G4Run;
class G4Event;
class MedLinacDetectorConstruction;
class MedLinacPrimaryGeneratorMessenger;
class MedLinacAnalysisManager;
class MedLinacPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
MedLinacPrimaryGeneratorAction();
~MedLinacPrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event* anEvent);
void SetEnergy(G4double val){ pEnergy = val;}
void SetSourceType(G4double val) { sigma = val;}
private:
G4ParticleGun* particleGun; //pointer a to G4 class
MedLinacPrimaryGeneratorMessenger* gunMessenger;//messenger of this class
G4double pEnergy;
G4double sigma;
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: MedLinacPrimaryGeneratorMessenger.hh,v 1.3 2004/06/18 09:17:40 gunter Exp $
//
//
// Code developed by: M. Piergentili
#ifndef MedLinacPrimaryGeneratorMessenger_h
#define MedLinacPrimaryGeneratorMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class MedLinacPrimaryGeneratorAction;
class G4UIdirectory;
class G4UIcmdWithADoubleAndUnit;
//**********************************************************************
class MedLinacPrimaryGeneratorMessenger: public G4UImessenger
{
public:
MedLinacPrimaryGeneratorMessenger(MedLinacPrimaryGeneratorAction*);
~MedLinacPrimaryGeneratorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
MedLinacPrimaryGeneratorAction* MedLinacAction;
G4UIcmdWithADoubleAndUnit* EnergyCmd;
G4UIcmdWithADoubleAndUnit* SourceTypeCmd;
};
//**********************************************************************
#endif
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: MedLinacRunAction.hh,v 1.2 2004/04/02 17:48:41 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
#ifndef MedLinacRunAction_h
#define MedLinacRunAction_h 1
#include "G4UserRunAction.hh"
#include "G4RunManager.hh"
#include "globals.hh"
//********************************************************************
class G4Run;
class MedLinacAnalysisManager;
class MedLinacDetectorConstruction;
class MedLinacRunAction : public G4UserRunAction
{
public:
MedLinacRunAction(G4String);
~MedLinacRunAction();
public:
void BeginOfRunAction(const G4Run* aRun);
void EndOfRunAction(const G4Run* aRun);
private:
G4String sensitiveDetectorName;
MedLinacDetectorConstruction* detector;
};
//********************************************************************
#endif
@@ -0,0 +1,110 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: MedLinacTargetAndFilterDecorator.hh,v 1.1 2004/05/14 18:25:39 mpiergen Exp $
//
// Code developed by: M. Piergentili
//
//
#ifndef MedLinacTargetAndFilterDecorator_h
#define MedLinacTargetAndFilterDecorator_h 1
#include "MedLinacDecorator.hh"
#include "MedLinacVGeometryComponent.hh"
class G4VPhysicalVolume;
class G4Box;
class G4LogicalVolume;
class G4Material;
class G4VisAttributes;
class MedLinacVGeometryComponent;
class MedLinacDecorator;
class MedLinacTargetAndFilterDecorator: public MedLinacDecorator
{
public:
MedLinacTargetAndFilterDecorator(MedLinacVGeometryComponent*);
~MedLinacTargetAndFilterDecorator();
void ConstructComponent(G4VPhysicalVolume*,G4VPhysicalVolume*);
void DestroyComponent();
private:
void ConstructTargetAndFilter(G4VPhysicalVolume*,G4VPhysicalVolume*);
G4LogicalVolume* targetA_log;
G4LogicalVolume* targetB_log;
G4LogicalVolume* layer1_log;
G4LogicalVolume* layer2_log;
G4LogicalVolume* layer3_log;
G4LogicalVolume* layer4_log;
G4LogicalVolume* layer5_log;
G4LogicalVolume* layer6_log;
G4LogicalVolume* layer7_log;
G4LogicalVolume* layer8_log;
G4LogicalVolume* layer9_log;
G4LogicalVolume* layer10_log;
G4LogicalVolume* layer11_log;
G4LogicalVolume* layer12_log;
G4LogicalVolume* layer13_log;
G4LogicalVolume* layer14_log;
G4LogicalVolume* layer15_log;
G4LogicalVolume* layer16_log;
G4LogicalVolume* layer17_log;
G4LogicalVolume* layer18_log;
G4LogicalVolume* layer19_log;
G4LogicalVolume* layer20A_log;
G4LogicalVolume* cone20_log;
G4LogicalVolume* layer20_log;
G4LogicalVolume* layer21_log;
G4VPhysicalVolume* targetA_phys;
G4VPhysicalVolume* targetB_phys;
G4VPhysicalVolume* layer1_phys;
G4VPhysicalVolume* layer2_phys;
G4VPhysicalVolume* layer3_phys;
G4VPhysicalVolume* layer4_phys;
G4VPhysicalVolume* layer5_phys;
G4VPhysicalVolume* layer6_phys;
G4VPhysicalVolume* layer7_phys;
G4VPhysicalVolume* layer8_phys;
G4VPhysicalVolume* layer9_phys;
G4VPhysicalVolume* layer10_phys;
G4VPhysicalVolume* layer11_phys;
G4VPhysicalVolume* layer12_phys;
G4VPhysicalVolume* layer13_phys;
G4VPhysicalVolume* layer14_phys;
G4VPhysicalVolume* layer15_phys;
G4VPhysicalVolume* layer16_phys;
G4VPhysicalVolume* layer17_phys;
G4VPhysicalVolume* layer18_phys;
G4VPhysicalVolume* layer19_phys;
G4VPhysicalVolume* layer20_phys;
G4VPhysicalVolume* layer21_phys;
G4VisAttributes* simpleLeadSVisAtt;
G4VisAttributes* simpleAlSVisAtt;
G4VisAttributes* simpleWorldVisAtt;
//MedLinacVGeometryComponent* component;
};
#endif
@@ -0,0 +1,48 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: MedLinacVGeometryComponent.hh,v 1.1 2004/05/14 18:25:39 mpiergen Exp $
//
// Code developed by: M. Piergentili
//
//
#ifndef MedLinacVGeometryComponent_h
#define MedLinacVGeometryComponent_h 1
#include "globals.hh"
class G4LogicalVolume;
class G4VPhysicalVolume;
class G4Material;
class G4VisAttributes;
class MedLinacVGeometryComponent
{
public:
MedLinacVGeometryComponent();
virtual ~MedLinacVGeometryComponent();
virtual void ConstructComponent(G4VPhysicalVolume*,G4VPhysicalVolume*)=0;
virtual void DestroyComponent()=0;
};
#endif
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: MedLinacVisManager.hh,v 1.2 2004/04/02 17:48:41 mpiergen Exp $
//
//
// Code developed by: M. Piergentili
//*********************************************************************
#ifndef MedLinacVisManager_h
#define MedLinacVisManager_h 1
#ifdef G4VIS_USE
#include "G4VisManager.hh"
//*********************************************************************
class MedLinacVisManager: public G4VisManager {
public:
MedLinacVisManager ();
private:
void RegisterGraphicsSystems ();
};
//*********************************************************************
#endif
#endif