Import Geant4 7.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 11:11:55 +02:00
parent e083ffb441
commit 516dbf1a58
5914 changed files with 202605 additions and 71141 deletions
@@ -0,0 +1,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: RE01BosonPhysics.hh,v 1.1 2004/11/26 07:37:39 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01BosonPhysics_h
#define RE01BosonPhysics_h 1
#include "G4VPhysicsConstructor.hh"
class RE01BosonPhysics : public G4VPhysicsConstructor
{
public:
RE01BosonPhysics(const G4String& name = "boson");
virtual ~RE01BosonPhysics();
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
};
#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: RE01CalorimeterHit.hh,v 1.1 2004/11/26 07:37:39 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01CalorimeterHit_h
#define RE01CalorimeterHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
#include "G4LogicalVolume.hh"
#include "G4Transform3D.hh"
#include "G4RotationMatrix.hh"
#include "RE01TrackInformation.hh"
class RE01CalorimeterHit : public G4VHit
{
public:
RE01CalorimeterHit();
RE01CalorimeterHit(G4LogicalVolume* logVol,G4int z,G4int phi);
~RE01CalorimeterHit();
RE01CalorimeterHit(const RE01CalorimeterHit &right);
const RE01CalorimeterHit& operator=(const RE01CalorimeterHit &right);
G4int operator==(const RE01CalorimeterHit &right) const;
inline void *operator new(size_t);
inline void operator delete(void *aHit);
void Draw();
void Print();
private:
G4int ZCellID;
G4int PhiCellID;
G4double edep;
G4ThreeVector pos;
G4RotationMatrix rot;
const G4LogicalVolume* pLogV;
G4double edepByATrack;
RE01TrackInformation trackInfo;
public:
inline void SetCellID(G4int z,G4int phi)
{
ZCellID = z;
PhiCellID = phi;
}
inline G4int GetZ() { return ZCellID; }
inline G4int GetPhi() { return PhiCellID; }
inline void SetEdep(G4double de)
{ edep = de; edepByATrack = de; }
inline void AddEdep(G4double de)
{ edep += de; edepByATrack += de; }
inline G4double GetEdep()
{ return edep; }
inline G4double GetEdepByATrack()
{ return edepByATrack; }
inline void ClearEdepByATrack()
{ edepByATrack = 0.; trackInfo = RE01TrackInformation(); }
inline void SetPos(G4ThreeVector xyz)
{ pos = xyz; }
inline G4ThreeVector GetPos()
{ return pos; }
inline void SetRot(G4RotationMatrix rmat)
{ rot = rmat; }
inline G4RotationMatrix GetRot()
{ return rot; }
inline const G4LogicalVolume * GetLogV()
{ return pLogV; }
inline void SetTrackInformation(const G4Track* aTrack)
{
RE01TrackInformation* anInfo = (RE01TrackInformation*)(aTrack->GetUserInformation());
trackInfo = *anInfo;
}
inline RE01TrackInformation* GetTrackInformation()
{ return &trackInfo; }
};
typedef G4THitsCollection<RE01CalorimeterHit> RE01CalorimeterHitsCollection;
extern G4Allocator<RE01CalorimeterHit> RE01CalorimeterHitAllocator;
inline void* RE01CalorimeterHit::operator new(size_t)
{
void *aHit;
aHit = (void *) RE01CalorimeterHitAllocator.MallocSingle();
return aHit;
}
inline void RE01CalorimeterHit::operator delete(void *aHit)
{
RE01CalorimeterHitAllocator.FreeSingle((RE01CalorimeterHit*) aHit);
}
#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: RE01CalorimeterParametrisation.hh,v 1.1 2004/11/26 07:37:39 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01CalorimeterParametrisation_H
#define RE01CalorimeterParametrisation_H 1
#include "globals.hh"
#include "G4VPVParameterisation.hh"
class G4VPhysicalVolume;
class G4Tubs;
// Dummy declarations to get rid of warnings ...
class G4Trd;
class G4Trap;
class G4Cons;
class G4Sphere;
class G4Torus;
class G4Para;
class G4Hype;
class G4Box;
class G4Orb;
class G4Polycone;
class G4Polyhedra;
class RE01CalorimeterParametrisation : public G4VPVParameterisation
{
public:
RE01CalorimeterParametrisation();
virtual ~RE01CalorimeterParametrisation();
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume *physVol) const;
void ComputeDimensions( G4Tubs & calorimeterLayer,
const G4int copyNo,
const G4VPhysicalVolume * physVol) const;
private: // Dummy declarations to get rid of warnings ...
void ComputeDimensions (G4Trd&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Trap&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Cons&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Sphere&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Torus&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Para&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Hype&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Box&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Orb&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Polycone&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Polyhedra&,const G4int,const G4VPhysicalVolume*) const {}
private:
#include "RE01DetectorParameterDef.hh"
};
#endif
@@ -0,0 +1,47 @@
//
// ********************************************************************
// * 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: RE01CalorimeterROGeometry.hh,v 1.1 2004/11/26 07:37:39 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01CalorimeterROGeometry_h
#define RE01CalorimeterROGeometry_h 1
#include "G4VReadOutGeometry.hh"
class RE01CalorimeterROGeometry : public G4VReadOutGeometry
{
public:
RE01CalorimeterROGeometry();
RE01CalorimeterROGeometry(G4String);
~RE01CalorimeterROGeometry();
private:
G4VPhysicalVolume* Build();
#include "RE01DetectorParameterDef.hh"
};
#endif
@@ -0,0 +1,62 @@
//
// ********************************************************************
// * 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: RE01CalorimeterSD.hh,v 1.1 2004/11/26 07:37:39 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01CalorimeterSD_h
#define RE01CalorimeterSD_h 1
#include "G4VSensitiveDetector.hh"
#include "RE01CalorimeterHit.hh"
class G4Step;
class G4HCofThisEvent;
class G4TouchableHistory;
class RE01CalorimeterSD : public G4VSensitiveDetector
{
public:
RE01CalorimeterSD(G4String name);
~RE01CalorimeterSD();
void Initialize(G4HCofThisEvent*HCE);
G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist);
void EndOfEvent(G4HCofThisEvent*HCE);
void clear();
void DrawAll();
void PrintAll();
private:
RE01CalorimeterHitsCollection *CalCollection;
int CellID[20][48];
const int numberOfCellsInZ;
const int numberOfCellsInPhi;
};
#endif
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * 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: RE01DecayPhysics.hh,v 1.1 2004/11/26 07:37:39 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
//
#ifndef RE01DecayPhysics_h
#define RE01DecayPhysics_h 1
// #include "globals.hh"
// #include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4Decay.hh"
#include "G4UnknownDecay.hh"
class RE01DecayPhysics : public G4VPhysicsConstructor
{
public:
RE01DecayPhysics(const G4String& name = "decay");
virtual ~RE01DecayPhysics();
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
G4Decay fDecayProcess;
G4UnknownDecay fUnknownDecay;
};
#endif
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * 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: RE01DetectorConstruction.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01DetectorConstruction_h
#define RE01DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4VPhysicalVolume;
class RE01DetectorConstruction : public G4VUserDetectorConstruction
{
public:
RE01DetectorConstruction();
~RE01DetectorConstruction();
public:
G4VPhysicalVolume* Construct();
private:
#include "RE01DetectorParameterDef.hh"
};
#endif
@@ -0,0 +1,66 @@
//
// ********************************************************************
// * 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: RE01DetectorParameterDef.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
G4double expHall_x;
G4double expHall_y;
G4double expHall_z;
G4double trkTubs_rmax;
G4double trkTubs_rmin;
G4double trkTubs_dz;
G4double trkTubs_sphi;
G4double trkTubs_dphi;
G4int notrkLayers;
G4double tracker_radius[5];
G4double tracker_thick;
G4double tracker_length[5];
G4double caloTubs_rmax;
G4double caloTubs_rmin;
G4double caloTubs_dz;
G4double caloTubs_sphi;
G4double caloTubs_dphi;
G4int nocaloLayers;
G4double absorber_thick;
G4double scinti_thick;
G4int segmentsinZ;
G4double caloRing_rmax;
G4double caloRing_rmin;
G4double caloRing_dz;
G4double caloRing_sphi;
G4double caloRing_dphi;
G4int segmentsinPhi;
G4double caloCell_rmax;
G4double caloCell_rmin;
G4double caloCell_dz;
G4double caloCell_sphi;
G4double caloCell_dphi;
@@ -0,0 +1,51 @@
//
// ********************************************************************
// * 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: RE01DummySD.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
//
// Dummy sensitive used only to flag sensitivity
// in cells of RO geometry.
//
#ifndef RE01DummySD_h
#define RE01DummySD_h 1
#include "G4VSensitiveDetector.hh"
class G4Step;
class RE01DummySD : public G4VSensitiveDetector
{
public:
RE01DummySD();
~RE01DummySD();
void Initialize(G4HCofThisEvent*) {;}
G4bool ProcessHits(G4Step*,G4TouchableHistory*) {return false;}
void EndOfEvent(G4HCofThisEvent*) {;}
void clear() {;}
void DrawAll() {;}
void PrintAll() {;}
};
#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: RE01EventAction.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01EventAction_h
#define RE01EventAction_h 1
#include "G4UserEventAction.hh"
#include "globals.hh"
class G4PrimaryParticle;
class RE01EventAction : public G4UserEventAction
{
public:
RE01EventAction();
~RE01EventAction();
public:
void BeginOfEventAction(const G4Event*);
void EndOfEventAction(const G4Event*);
private:
G4int trackerCollID;
G4int calorimeterCollID;
G4int muonCollID;
void PrintPrimary(G4PrimaryParticle* pp,G4int ind);
};
#endif
@@ -0,0 +1,50 @@
//
// ********************************************************************
// * 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: RE01Field.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01Field_H
#define RE01Field_H 1
#include "globals.hh"
#include "G4MagneticField.hh"
class RE01Field : public G4MagneticField
{
public:
RE01Field();
~RE01Field();
void GetFieldValue( const double Point[3],
double *Bfield ) const;
private:
G4double Bz;
G4double rmax_sq;
G4double zmax;
};
#endif
@@ -0,0 +1,341 @@
//
// ********************************************************************
// * 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: RE01HadronPhysics.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01HadronPhysics_h
#define RE01HadronPhysics_h 1
// #include "globals.hh"
// #include "G4ios.hh"
// #include <vector>
#include "G4VPhysicsConstructor.hh"
/*
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4PionPlusInelasticProcess.hh"
#include "G4PionMinusInelasticProcess.hh"
#include "G4KaonPlusInelasticProcess.hh"
#include "G4KaonZeroSInelasticProcess.hh"
#include "G4KaonZeroLInelasticProcess.hh"
#include "G4KaonMinusInelasticProcess.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4AntiProtonInelasticProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4AntiNeutronInelasticProcess.hh"
#include "G4LambdaInelasticProcess.hh"
#include "G4AntiLambdaInelasticProcess.hh"
#include "G4SigmaPlusInelasticProcess.hh"
#include "G4SigmaMinusInelasticProcess.hh"
#include "G4AntiSigmaPlusInelasticProcess.hh"
#include "G4AntiSigmaMinusInelasticProcess.hh"
#include "G4XiZeroInelasticProcess.hh"
#include "G4XiMinusInelasticProcess.hh"
#include "G4AntiXiZeroInelasticProcess.hh"
#include "G4AntiXiMinusInelasticProcess.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4TritonInelasticProcess.hh"
#include "G4AlphaInelasticProcess.hh"
#include "G4OmegaMinusInelasticProcess.hh"
#include "G4AntiOmegaMinusInelasticProcess.hh"
// Low-energy Models
#include "G4LElastic.hh"
#include "G4LFission.hh"
#include "G4LCapture.hh"
#include "G4LEPionPlusInelastic.hh"
#include "G4LEPionMinusInelastic.hh"
#include "G4LEKaonPlusInelastic.hh"
#include "G4LEKaonZeroSInelastic.hh"
#include "G4LEKaonZeroLInelastic.hh"
#include "G4LEKaonMinusInelastic.hh"
#include "G4LEProtonInelastic.hh"
#include "G4LEAntiProtonInelastic.hh"
#include "G4LENeutronInelastic.hh"
#include "G4LEAntiNeutronInelastic.hh"
#include "G4LELambdaInelastic.hh"
#include "G4LEAntiLambdaInelastic.hh"
#include "G4LESigmaPlusInelastic.hh"
#include "G4LESigmaMinusInelastic.hh"
#include "G4LEAntiSigmaPlusInelastic.hh"
#include "G4LEAntiSigmaMinusInelastic.hh"
#include "G4LEXiZeroInelastic.hh"
#include "G4LEXiMinusInelastic.hh"
#include "G4LEAntiXiZeroInelastic.hh"
#include "G4LEAntiXiMinusInelastic.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4LETritonInelastic.hh"
#include "G4LEAlphaInelastic.hh"
#include "G4LEOmegaMinusInelastic.hh"
#include "G4LEAntiOmegaMinusInelastic.hh"
// High-energy Models
#include "G4HEPionPlusInelastic.hh"
#include "G4HEPionMinusInelastic.hh"
#include "G4HEKaonPlusInelastic.hh"
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEKaonMinusInelastic.hh"
#include "G4HEProtonInelastic.hh"
#include "G4HEAntiProtonInelastic.hh"
#include "G4HENeutronInelastic.hh"
#include "G4HEAntiNeutronInelastic.hh"
#include "G4HELambdaInelastic.hh"
#include "G4HEAntiLambdaInelastic.hh"
#include "G4HESigmaPlusInelastic.hh"
#include "G4HESigmaMinusInelastic.hh"
#include "G4HEAntiSigmaPlusInelastic.hh"
#include "G4HEAntiSigmaMinusInelastic.hh"
#include "G4HEXiZeroInelastic.hh"
#include "G4HEXiMinusInelastic.hh"
#include "G4HEAntiXiZeroInelastic.hh"
#include "G4HEAntiXiMinusInelastic.hh"
#include "G4HEOmegaMinusInelastic.hh"
#include "G4HEAntiOmegaMinusInelastic.hh"
// Stopping processes
#include "G4AntiProtonAnnihilationAtRest.hh"
#include "G4AntiNeutronAnnihilationAtRest.hh"
#ifdef TRIUMF_STOP_PIMINUS
#include "G4PionMinusAbsorptionAtRest.hh"
#else
#include "G4PiMinusAbsorptionAtRest.hh"
#endif
#ifdef TRIUMF_STOP_KMINUS
#include "G4KaonMinusAbsorption.hh"
#else
#include "G4KaonMinusAbsorptionAtRest.hh"
#endif
// quark gluon string model with chips afterburner.
#include "G4TheoFSGenerator.hh"
#include "G4ExcitationHandler.hh"
#include "G4PreCompoundModel.hh"
#include "G4GeneratorPrecompoundInterface.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
#include "G4QGSMFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
*/
class RE01HadronPhysics : public G4VPhysicsConstructor
{
public:
RE01HadronPhysics(const G4String& name ="hadron");
virtual ~RE01HadronPhysics();
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
/*
protected:
// Pi +
G4PionPlusInelasticProcess thePionPlusInelastic;
G4LEPionPlusInelastic* theLEPionPlusModel;
G4MultipleScattering thePionPlusMult;
G4hIonisation thePionPlusIonisation;
// Pi -
G4PionMinusInelasticProcess thePionMinusInelastic;
G4LEPionMinusInelastic* theLEPionMinusModel;
G4MultipleScattering thePionMinusMult;
G4hIonisation thePionMinusIonisation;
#ifdef TRIUMF_STOP_PIMINUS
G4PionMinusAbsorptionAtRest thePionMinusAbsorption;
#else
G4PiMinusAbsorptionAtRest thePionMinusAbsorption;
#endif
// pi+ and pi-
G4TheoFSGenerator theTheoModel;
G4ExcitationHandler theHandler;
G4PreCompoundModel * thePreEquilib;
G4GeneratorPrecompoundInterface theCascade;
G4QGSModel< G4QGSParticipants > theStringModel;
G4QGSMFragmentation theFragmentation;
G4ExcitedStringDecay * theStringDecay;
// K +
G4KaonPlusInelasticProcess theKaonPlusInelastic;
G4LEKaonPlusInelastic* theLEKaonPlusModel;
G4HEKaonPlusInelastic* theHEKaonPlusModel;
G4MultipleScattering theKaonPlusMult;
G4hIonisation theKaonPlusIonisation;
// K -
G4KaonMinusInelasticProcess theKaonMinusInelastic;
G4LEKaonMinusInelastic* theLEKaonMinusModel;
G4HEKaonMinusInelastic* theHEKaonMinusModel;
G4MultipleScattering theKaonMinusMult;
G4hIonisation theKaonMinusIonisation;
#ifdef TRIUMF_STOP_KMINUS
G4KaonMinusAbsorption theKaonMinusAbsorption;
#else
G4PiMinusAbsorptionAtRest theKaonMinusAbsorption;
#endif
// K0L
G4KaonZeroLInelasticProcess theKaonZeroLInelastic;
G4LEKaonZeroLInelastic* theLEKaonZeroLModel;
G4HEKaonZeroInelastic* theHEKaonZeroLModel;
// K0S
G4KaonZeroSInelasticProcess theKaonZeroSInelastic;
G4LEKaonZeroSInelastic* theLEKaonZeroSModel;
G4HEKaonZeroInelastic* theHEKaonZeroSModel;
// Proton
G4ProtonInelasticProcess theProtonInelastic;
G4LEProtonInelastic* theLEProtonModel;
G4HEProtonInelastic* theHEProtonModel;
G4MultipleScattering theProtonMult;
G4hIonisation theProtonIonisation;
// anti-proton
G4AntiProtonInelasticProcess theAntiProtonInelastic;
G4LEAntiProtonInelastic* theLEAntiProtonModel;
G4HEAntiProtonInelastic* theHEAntiProtonModel;
G4MultipleScattering theAntiProtonMult;
G4hIonisation theAntiProtonIonisation;
G4AntiProtonAnnihilationAtRest theAntiProtonAnnihilation;
// neutron
G4NeutronInelasticProcess theNeutronInelastic;
G4LENeutronInelastic* theLENeutronModel;
G4HENeutronInelastic* theHENeutronModel;
G4HadronFissionProcess theNeutronFission;
G4LFission* theNeutronFissionModel;
G4HadronCaptureProcess theNeutronCapture;
G4LCapture* theNeutronCaptureModel;
// anti-neutron
G4AntiNeutronInelasticProcess theAntiNeutronInelastic;
G4LEAntiNeutronInelastic* theLEAntiNeutronModel;
G4HEAntiNeutronInelastic* theHEAntiNeutronModel;
G4AntiNeutronAnnihilationAtRest theAntiNeutronAnnihilation;
// Lambda
G4LambdaInelasticProcess theLambdaInelastic;
G4LELambdaInelastic* theLELambdaModel;
G4HELambdaInelastic* theHELambdaModel;
// AntiLambda
G4AntiLambdaInelasticProcess theAntiLambdaInelastic;
G4LEAntiLambdaInelastic* theLEAntiLambdaModel;
G4HEAntiLambdaInelastic* theHEAntiLambdaModel;
// SigmaMinus
G4SigmaMinusInelasticProcess theSigmaMinusInelastic;
G4LESigmaMinusInelastic* theLESigmaMinusModel;
G4HESigmaMinusInelastic* theHESigmaMinusModel;
G4MultipleScattering theSigmaMinusMult;
G4hIonisation theSigmaMinusIonisation;
// AntiSigmaMinus
G4AntiSigmaMinusInelasticProcess theAntiSigmaMinusInelastic;
G4LEAntiSigmaMinusInelastic* theLEAntiSigmaMinusModel;
G4HEAntiSigmaMinusInelastic* theHEAntiSigmaMinusModel;
G4MultipleScattering theAntiSigmaMinusMult;
G4hIonisation theAntiSigmaMinusIonisation;
// SigmaPlus
G4SigmaPlusInelasticProcess theSigmaPlusInelastic;
G4LESigmaPlusInelastic* theLESigmaPlusModel;
G4HESigmaPlusInelastic* theHESigmaPlusModel;
G4MultipleScattering theSigmaPlusMult;
G4hIonisation theSigmaPlusIonisation;
// AntiSigmaPlus
G4AntiSigmaPlusInelasticProcess theAntiSigmaPlusInelastic;
G4LEAntiSigmaPlusInelastic* theLEAntiSigmaPlusModel;
G4HEAntiSigmaPlusInelastic* theHEAntiSigmaPlusModel;
G4MultipleScattering theAntiSigmaPlusMult;
G4hIonisation theAntiSigmaPlusIonisation;
// XiZero
G4XiZeroInelasticProcess theXiZeroInelastic;
G4LEXiZeroInelastic* theLEXiZeroModel;
G4HEXiZeroInelastic* theHEXiZeroModel;
// AntiXiZero
G4AntiXiZeroInelasticProcess theAntiXiZeroInelastic;
G4LEAntiXiZeroInelastic* theLEAntiXiZeroModel;
G4HEAntiXiZeroInelastic* theHEAntiXiZeroModel;
// XiMinus
G4XiMinusInelasticProcess theXiMinusInelastic;
G4LEXiMinusInelastic* theLEXiMinusModel;
G4HEXiMinusInelastic* theHEXiMinusModel;
G4MultipleScattering theXiMinusMult;
G4hIonisation theXiMinusIonisation;
// AntiXiMinus
G4AntiXiMinusInelasticProcess theAntiXiMinusInelastic;
G4LEAntiXiMinusInelastic* theLEAntiXiMinusModel;
G4HEAntiXiMinusInelastic* theHEAntiXiMinusModel;
G4MultipleScattering theAntiXiMinusMult;
G4hIonisation theAntiXiMinusIonisation;
// OmegaMinus
G4OmegaMinusInelasticProcess theOmegaMinusInelastic;
G4LEOmegaMinusInelastic* theLEOmegaMinusModel;
G4HEOmegaMinusInelastic* theHEOmegaMinusModel;
G4MultipleScattering theOmegaMinusMult;
G4hIonisation theOmegaMinusIonisation;
// AntiOmegaMinus
G4AntiOmegaMinusInelasticProcess theAntiOmegaMinusInelastic;
G4LEAntiOmegaMinusInelastic* theLEAntiOmegaMinusModel;
G4HEAntiOmegaMinusInelastic* theHEAntiOmegaMinusModel;
G4MultipleScattering theAntiOmegaMinusMult;
G4hIonisation theAntiOmegaMinusIonisation;
*/
};
#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: RE01IonPhysics.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01IonPhysics_h
#define RE01IonPhysics_h 1
#include "G4VPhysicsConstructor.hh"
class RE01IonPhysics : public G4VPhysicsConstructor
{
public:
RE01IonPhysics(const G4String& name ="ion");
virtual ~RE01IonPhysics();
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
};
#endif
@@ -0,0 +1,57 @@
//
// ********************************************************************
// * 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: RE01LeptonPhysics.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
//
#ifndef RE01LeptonPhysics_h
#define RE01LeptonPhysics_h 1
#include "G4VPhysicsConstructor.hh"
class RE01LeptonPhysics : public G4VPhysicsConstructor
{
public:
RE01LeptonPhysics(const G4String& name ="lepton");
virtual ~RE01LeptonPhysics();
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
};
#endif
@@ -0,0 +1,47 @@
//
// ********************************************************************
// * 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: RE01PhysicsList.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
//
#ifndef RE01PhysicsList_h
#define RE01PhysicsList_h 1
#include "G4VModularPhysicsList.hh"
class RE01PhysicsList: public G4VModularPhysicsList
{
public:
RE01PhysicsList();
virtual ~RE01PhysicsList();
virtual void SetCuts();
};
#endif
@@ -0,0 +1,62 @@
//
// ********************************************************************
// * 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: RE01PrimaryGeneratorAction.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01PrimaryGeneratorAction_h
#define RE01PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
class G4VPrimaryGenerator;
class G4Event;
class RE01PrimaryGeneratorMessenger;
class RE01PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
RE01PrimaryGeneratorAction();
~RE01PrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event* anEvent);
private:
G4VPrimaryGenerator* HEPEvt;
G4VPrimaryGenerator* particleGun;
RE01PrimaryGeneratorMessenger* messenger;
G4bool useHEPEvt;
public:
inline void SetHEPEvtGenerator(G4bool f)
{ useHEPEvt = f; }
inline G4bool GetHEPEvtGenerator()
{ return useHEPEvt; }
};
#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: RE01PrimaryGeneratorMessenger.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01PrimaryGeneratorMessenger_h
#define RE01PrimaryGeneratorMessenger_h 1
class RE01PrimaryGeneratorAction;
class G4UIdirectory;
class G4UIcmdWithAString;
#include "G4UImessenger.hh"
#include "globals.hh"
class RE01PrimaryGeneratorMessenger: public G4UImessenger
{
public:
RE01PrimaryGeneratorMessenger(RE01PrimaryGeneratorAction* mpga);
~RE01PrimaryGeneratorMessenger();
public:
void SetNewValue(G4UIcommand * command,G4String newValues);
G4String GetCurrentValue(G4UIcommand * command);
private:
RE01PrimaryGeneratorAction * myAction;
private: //commands
G4UIdirectory * mydetDirectory;
G4UIcmdWithAString * genCmd;
};
#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: RE01RegionInformation.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01RegionInformation_H
#define RE01RegionInformation_H 1
#include "globals.hh"
#include "G4VUserRegionInformation.hh"
class RE01RegionInformation : public G4VUserRegionInformation
{
public:
RE01RegionInformation();
~RE01RegionInformation();
void Print() const;
private:
G4bool isWorld;
G4bool isTracker;
G4bool isCalorimeter;
public:
inline void SetWorld(G4bool v=true) {isWorld = v;}
inline void SetTracker(G4bool v=true) {isTracker = v;}
inline void SetCalorimeter(G4bool v=true) {isCalorimeter = v;}
inline G4bool IsWorld() const {return isWorld;}
inline G4bool IsTracker() const {return isTracker;}
inline G4bool IsCalorimeter() const {return isCalorimeter;}
};
#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: RE01RunAction.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01RunAction_h
#define RE01RunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
class G4Run;
class RE01RunAction : public G4UserRunAction
{
public:
RE01RunAction();
~RE01RunAction();
public:
void BeginOfRunAction(const G4Run*);
void EndOfRunAction(const G4Run*);
};
#endif
@@ -0,0 +1,57 @@
//
// ********************************************************************
// * 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: RE01StackingAction.hh,v 1.1 2004/11/26 07:37:40 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01StackingAction_H
#define RE01StackingAction_H 1
#include "globals.hh"
#include "G4UserStackingAction.hh"
class G4Track;
class G4VHitsCollection;
class RE01StackingAction : public G4UserStackingAction
{
public:
RE01StackingAction();
virtual ~RE01StackingAction();
public:
virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack);
virtual void NewStage();
virtual void PrepareNewEvent();
private:
G4VHitsCollection* GetCalCollection();
G4int stage;
G4int trackerHitsColID;
G4int calorimeterHitsColID;
};
#endif
@@ -0,0 +1,44 @@
//
// ********************************************************************
// * 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: RE01SteppingAction.hh,v 1.1 2004/11/26 07:37:41 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01SteppingAction_H
#define RE01SteppingAction_H 1
#include "globals.hh"
#include "G4UserSteppingAction.hh"
class RE01SteppingAction : public G4UserSteppingAction
{
public:
RE01SteppingAction();
virtual ~RE01SteppingAction();
virtual void UserSteppingAction(const G4Step*);
};
#endif
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: RE01TrackInformation.hh,v 1.1 2004/11/26 07:37:41 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01TrackInformation_h
#define RE01TrackInformation_h 1
#include "globals.hh"
#include "G4ThreeVector.hh"
#include "G4ParticleDefinition.hh"
#include "G4Track.hh"
#include "G4Allocator.hh"
#include "G4VUserTrackInformation.hh"
class RE01TrackInformation : public G4VUserTrackInformation
{
public:
RE01TrackInformation();
RE01TrackInformation(const G4Track* aTrack);
RE01TrackInformation(const RE01TrackInformation* aTrackInfo);
virtual ~RE01TrackInformation();
inline void *operator new(size_t);
inline void operator delete(void *aTrackInfo);
inline int operator ==(const RE01TrackInformation& right) const
{return (this==&right);}
RE01TrackInformation& operator =(const RE01TrackInformation& right);
void SetSourceTrackInformation(const G4Track* aTrack);
void Print() const;
private:
// Information of the primary track at the primary vertex
G4int originalTrackID; // Track ID of primary particle
G4ParticleDefinition* particleDefinition;
G4ThreeVector originalPosition;
G4ThreeVector originalMomentum;
G4double originalEnergy;
G4double originalTime;
G4int trackingStatus;
// trackingStatus = 1 : primary or secondary track which has not yet reached to calorimeter
// = 0 : track which or ancester of which has reached to calorimeter
// = 2 : track or its ancester had once reached to calorimeter and
// then escaped from it
// Information of the track which reached to the calorimeter boundary at the boundary surface
// This information is valid only for trackingStatus = 0 or 2
G4int sourceTrackID;
G4ParticleDefinition* sourceDefinition;
G4ThreeVector sourcePosition;
G4ThreeVector sourceMomentum;
G4double sourceEnergy;
G4double sourceTime;
public:
inline G4int GetOriginalTrackID() const {return originalTrackID;}
inline G4ParticleDefinition* GetOriginalParticle() const {return particleDefinition;}
inline G4ThreeVector GetOriginalPosition() const {return originalPosition;}
inline G4ThreeVector GetOriginalMomentum() const {return originalMomentum;}
inline G4double GetOriginalEnergy() const {return originalEnergy;}
inline G4double GetOriginalTime() const {return originalTime;}
inline G4int GetTrackingStatus() const {return trackingStatus;}
inline void SetTrackingStatus(G4int i) {trackingStatus = i;}
inline G4int GetSourceTrackID() const {return sourceTrackID;}
inline G4ParticleDefinition* GetSourceParticle() const {return sourceDefinition;}
inline G4ThreeVector GetSourcePosition() const {return sourcePosition;}
inline G4ThreeVector GetSourceMomentum() const {return sourceMomentum;}
inline G4double GetSourceEnergy() const {return sourceEnergy;}
inline G4double GetSourceTime() const {return sourceTime;}
};
extern G4Allocator<RE01TrackInformation> aTrackInformationAllocator;
inline void* RE01TrackInformation::operator new(size_t)
{ void* aTrackInfo;
aTrackInfo = (void*)aTrackInformationAllocator.MallocSingle();
return aTrackInfo;
}
inline void RE01TrackInformation::operator delete(void *aTrackInfo)
{ aTrackInformationAllocator.FreeSingle((RE01TrackInformation*)aTrackInfo);}
#endif
@@ -0,0 +1,88 @@
//
// ********************************************************************
// * 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: RE01TrackerHit.hh,v 1.1 2004/11/26 07:37:41 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01TrackerHit_h
#define RE01TrackerHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
class RE01TrackerHit : public G4VHit
{
public:
RE01TrackerHit();
~RE01TrackerHit();
RE01TrackerHit(const RE01TrackerHit &right);
const RE01TrackerHit& operator=(const RE01TrackerHit &right);
G4int operator==(const RE01TrackerHit &right) const;
inline void *operator new(size_t);
inline void operator delete(void *aHit);
void Draw();
void Print();
private:
G4double edep;
G4ThreeVector pos;
G4int trackID;
public:
inline void SetEdep(G4double de)
{ edep = de; }
inline G4double GetEdep() const
{ return edep; }
inline void SetPos(G4ThreeVector xyz)
{ pos = xyz; }
inline G4ThreeVector GetPos() const
{ return pos; }
inline void SetTrackID(G4int i)
{ trackID = i; }
inline G4int GetTrackID() const
{ return trackID; }
};
typedef G4THitsCollection<RE01TrackerHit> RE01TrackerHitsCollection;
extern G4Allocator<RE01TrackerHit> RE01TrackerHitAllocator;
inline void* RE01TrackerHit::operator new(size_t)
{
void *aHit;
aHit = (void *) RE01TrackerHitAllocator.MallocSingle();
return aHit;
}
inline void RE01TrackerHit::operator delete(void *aHit)
{
RE01TrackerHitAllocator.FreeSingle((RE01TrackerHit*) aHit);
}
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: RE01TrackerParametrisation.hh,v 1.1 2004/11/26 07:37:41 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01TrackerParametrisation_H
#define RE01TrackerParametrisation_H 1
#include "globals.hh"
#include "G4VPVParameterisation.hh"
class G4VPhysicalVolume;
class G4Tubs;
// Dummy declarations to get rid of warnings ...
class G4Trd;
class G4Trap;
class G4Cons;
class G4Sphere;
class G4Torus;
class G4Para;
class G4Hype;
class G4Box;
class G4Orb;
class G4Polycone;
class G4Polyhedra;
class RE01TrackerParametrisation : public G4VPVParameterisation
{
public:
RE01TrackerParametrisation();
virtual ~RE01TrackerParametrisation();
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume *physVol) const;
void ComputeDimensions( G4Tubs & trackerLayer,
const G4int copyNo,
const G4VPhysicalVolume * physVol) const;
private: // Dummy declarations to get rid of warnings ...
void ComputeDimensions (G4Trd&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Trap&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Cons&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Sphere&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Torus&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Para&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Hype&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Box&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Orb&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Polycone&,const G4int,const G4VPhysicalVolume*) const {}
void ComputeDimensions (G4Polyhedra&,const G4int,const G4VPhysicalVolume*) const {}
private:
#include "RE01DetectorParameterDef.hh"
};
#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: RE01TrackerSD.hh,v 1.1 2004/11/26 07:37:41 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01TrackerSD_h
#define RE01TrackerSD_h 1
#include "G4VSensitiveDetector.hh"
#include "RE01TrackerHit.hh"
class G4Step;
class G4HCofThisEvent;
class G4TouchableHistory;
class RE01TrackerSD : public G4VSensitiveDetector
{
public:
RE01TrackerSD(G4String name);
~RE01TrackerSD();
void Initialize(G4HCofThisEvent*HCE);
G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist);
void EndOfEvent(G4HCofThisEvent*HCE);
void clear();
void DrawAll();
void PrintAll();
private:
RE01TrackerHitsCollection *trackerCollection;
public:
};
#endif
@@ -0,0 +1,44 @@
//
// ********************************************************************
// * 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: RE01TrackingAction.hh,v 1.1 2004/11/26 07:37:41 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01TrackingAction_h
#define RE01TrackingAction_h 1
#include "G4UserTrackingAction.hh"
class RE01TrackingAction : public G4UserTrackingAction {
public:
RE01TrackingAction(){};
virtual ~RE01TrackingAction(){};
virtual void PreUserTrackingAction(const G4Track*);
virtual void PostUserTrackingAction(const G4Track*);
};
#endif
@@ -0,0 +1,120 @@
//
// ********************************************************************
// * 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: RE01Trajectory.hh,v 1.1 2004/11/26 07:37:41 asaim Exp $
// GEANT4 tag $Name: geant4-07-00-cand-01 $
//
#ifndef RE01Trajectory_h
#define RE01Trajectory_h 1
#include "G4VTrajectory.hh"
#include "G4Allocator.hh"
#include <stdlib.h>
#include "G4ThreeVector.hh"
#include "G4ios.hh"
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4TrajectoryPoint.hh"
#include "G4Track.hh"
#include "G4Step.hh"
#include <vector>
class G4Polyline;
typedef std::vector<G4VTrajectoryPoint*> RE01TrajectoryPointContainer;
class RE01Trajectory : public G4VTrajectory
{
public:
RE01Trajectory();
RE01Trajectory(const G4Track* aTrack);
RE01Trajectory(RE01Trajectory &);
virtual ~RE01Trajectory();
inline void* operator new(size_t);
inline void operator delete(void*);
inline int operator == (const RE01Trajectory& right) const
{return (this==&right);}
virtual G4int GetTrackID() const
{ return fTrackID; }
virtual G4int GetParentID() const
{ return fParentID; }
virtual G4String GetParticleName() const
{ return ParticleName; }
virtual G4double GetCharge() const
{ return PDGCharge; }
virtual G4int GetPDGEncoding() const
{ return PDGEncoding; }
virtual G4ThreeVector GetInitialMomentum() const
{ return momentum; }
virtual int GetPointEntries() const
{ return positionRecord->size(); }
virtual G4VTrajectoryPoint* GetPoint(G4int i) const
{ return (*positionRecord)[i]; }
virtual void ShowTrajectory(std::ostream& os=G4cout) const;
virtual void DrawTrajectory(G4int i_mode=0) const;
virtual void AppendStep(const G4Step* aStep);
virtual void MergeTrajectory(G4VTrajectory* secondTrajectory);
G4ParticleDefinition* GetParticleDefinition();
inline const G4int GetTrackStatus() const
{ return fTrackStatus; }
inline const G4ThreeVector& GetVertexPosition() const
{ return vertexPosition; }
inline G4double GetGlobalTime() const
{ return globalTime; }
private:
RE01TrajectoryPointContainer* positionRecord;
G4int fTrackID;
G4int fParentID;
G4int fTrackStatus;
G4ParticleDefinition* fpParticleDefinition;
G4String ParticleName;
G4double PDGCharge;
G4int PDGEncoding;
G4ThreeVector momentum;
G4ThreeVector vertexPosition;
G4double globalTime;
};
extern G4Allocator<RE01Trajectory> myTrajectoryAllocator;
inline void* RE01Trajectory::operator new(size_t)
{
void* aTrajectory;
aTrajectory = (void*)myTrajectoryAllocator.MallocSingle();
return aTrajectory;
}
inline void RE01Trajectory::operator delete(void* aTrajectory)
{
myTrajectoryAllocator.FreeSingle((RE01Trajectory*)aTrajectory);
}
#endif